diff options
Diffstat (limited to 'core/variant_call.cpp')
-rw-r--r-- | core/variant_call.cpp | 93 |
1 files changed, 47 insertions, 46 deletions
diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 66c1987a58..d2b626a942 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -111,13 +111,15 @@ struct _VariantCall { InternalMethod(void (T::*p_method)(P...), const Vector<Variant> &p_default_args #ifdef DEBUG_ENABLED , - const Vector<String> &p_arg_names + const Vector<String> &p_arg_names, const StringName &p_method_name, Variant::Type p_base_type #endif ) { method = p_method; default_values = p_default_args; #ifdef DEBUG_ENABLED argument_names = p_arg_names; + method_name = p_method_name; + base_type = p_base_type; #endif } }; @@ -175,13 +177,15 @@ struct _VariantCall { InternalMethodR(R (T::*p_method)(P...), const Vector<Variant> &p_default_args #ifdef DEBUG_ENABLED , - const Vector<String> &p_arg_names + const Vector<String> &p_arg_names, const StringName &p_method_name, Variant::Type p_base_type #endif ) { method = p_method; default_values = p_default_args; #ifdef DEBUG_ENABLED argument_names = p_arg_names; + method_name = p_method_name; + base_type = p_base_type; #endif } }; @@ -238,13 +242,15 @@ struct _VariantCall { InternalMethodRC(R (T::*p_method)(P...) const, const Vector<Variant> &p_default_args #ifdef DEBUG_ENABLED , - const Vector<String> &p_arg_names + const Vector<String> &p_arg_names, const StringName &p_method_name, Variant::Type p_base_type #endif ) { method = p_method; default_values = p_default_args; #ifdef DEBUG_ENABLED argument_names = p_arg_names; + method_name = p_method_name; + base_type = p_base_type; #endif } }; @@ -338,13 +344,15 @@ struct _VariantCall { InternalMethodRS(R (*p_method)(T *, P...), const Vector<Variant> &p_default_args #ifdef DEBUG_ENABLED , - const Vector<String> &p_arg_names + const Vector<String> &p_arg_names, const StringName &p_method_name, Variant::Type p_base_type #endif ) { method = p_method; default_values = p_default_args; #ifdef DEBUG_ENABLED argument_names = p_arg_names; + method_name = p_method_name; + base_type = p_base_type; #endif } }; @@ -397,7 +405,7 @@ struct _VariantCall { InternalMethodVC(MethodVC p_method, uint32_t p_flags, const Vector<Variant::Type> &p_argument_types, const Variant::Type &p_return_type #ifdef DEBUG_ENABLED , - const Vector<String> &p_arg_names + const Vector<String> &p_arg_names, const StringName &p_method_name, Variant::Type p_base_type #endif ) { methodvc = p_method; @@ -406,6 +414,8 @@ struct _VariantCall { base_flags = p_flags; #ifdef DEBUG_ENABLED argument_names = p_arg_names; + method_name = p_method_name; + base_type = p_base_type; #endif } }; @@ -427,7 +437,7 @@ struct _VariantCall { ERR_FAIL_COND(type_internal_methods[GetTypeInfo<T>::VARIANT_TYPE].has(p_name)); #endif #ifdef DEBUG_ENABLED - Variant::InternalMethod *m = memnew((InternalMethod<T, P...>)(p_method, p_default_args, p_argument_names)); + Variant::InternalMethod *m = memnew((InternalMethod<T, P...>)(p_method, p_default_args, p_argument_names, p_name, GetTypeInfo<T>::VARIANT_TYPE)); #else Variant::InternalMethod *m = memnew((InternalMethod<T, P...>)(p_method, p_default_args)); #endif @@ -449,7 +459,7 @@ struct _VariantCall { #endif #ifdef DEBUG_ENABLED - Variant::InternalMethod *m = memnew((InternalMethodRC<T, R, P...>)(p_method, p_default_args, p_argument_names)); + Variant::InternalMethod *m = memnew((InternalMethodRC<T, R, P...>)(p_method, p_default_args, p_argument_names, p_name, GetTypeInfo<T>::VARIANT_TYPE)); #else Variant::InternalMethod *m = memnew((InternalMethodRC<T, R, P...>)(p_method, p_default_args)); #endif @@ -471,7 +481,7 @@ struct _VariantCall { #endif #ifdef DEBUG_ENABLED - Variant::InternalMethod *m = memnew((InternalMethodR<T, R, P...>)(p_method, p_default_args, p_argument_names)); + Variant::InternalMethod *m = memnew((InternalMethodR<T, R, P...>)(p_method, p_default_args, p_argument_names, p_name, GetTypeInfo<T>::VARIANT_TYPE)); #else Variant::InternalMethod *m = memnew((InternalMethodR<T, R, P...>)(p_method, p_default_args)); #endif @@ -504,7 +514,7 @@ struct _VariantCall { #endif #ifdef DEBUG_ENABLED - Variant::InternalMethod *m = memnew((InternalMethodRS<T, R, P...>)(p_method, p_default_args, p_argument_names)); + Variant::InternalMethod *m = memnew((InternalMethodRS<T, R, P...>)(p_method, p_default_args, p_argument_names, p_name, GetTypeInfo<T>::VARIANT_TYPE)); #else Variant::InternalMethod *m = memnew((InternalMethodRS<T, R, P...>)(p_method, p_default_args)); #endif @@ -527,7 +537,7 @@ struct _VariantCall { ) { #ifdef DEBUG_ENABLED - Variant::InternalMethod *m = memnew(InternalMethodVC(p_method, p_flags, p_argument_types, p_return_type, p_argument_names)); + Variant::InternalMethod *m = memnew(InternalMethodVC(p_method, p_flags, p_argument_types, p_return_type, p_argument_names, p_name, p_type)); #else Variant::InternalMethod *m = memnew(InternalMethodVC(p_method, p_flags, p_argument_types, p_return_type)); #endif @@ -1347,14 +1357,14 @@ void register_variant_methods() { _VariantCall::construct_funcs = memnew_arr(_VariantCall::ConstructFunc, Variant::VARIANT_MAX); _VariantCall::constant_data = memnew_arr(_VariantCall::ConstantData, Variant::VARIANT_MAX); - /* STRING */ + /* String */ bind_method(String, casecmp_to, sarray("to"), varray()); bind_method(String, nocasecmp_to, sarray("to"), varray()); bind_method(String, naturalnocasecmp_to, sarray("to"), varray()); bind_method(String, length, sarray(), varray()); bind_method(String, substr, sarray("from", "len"), varray(-1)); - bind_methodv("find", static_cast<int (String::*)(const String &, int) const>(&String::find), sarray("what", "from"), varray(0)); + bind_methodv(find, static_cast<int (String::*)(const String &, int) const>(&String::find), sarray("what", "from"), varray(0)); bind_method(String, count, sarray("what", "from", "to"), varray(0, 0)); bind_method(String, countn, sarray("what", "from", "to"), varray(0, 0)); bind_method(String, findn, sarray("what", "from"), varray(0)); @@ -1362,7 +1372,7 @@ void register_variant_methods() { bind_method(String, rfindn, sarray("what", "from"), varray(-1)); bind_method(String, match, sarray("expr"), varray()); bind_method(String, matchn, sarray("expr"), varray()); - bind_methodv("begins_with", static_cast<bool (String::*)(const String &) const>(&String::begins_with), sarray("text"), varray()); + bind_methodv(begins_with, static_cast<bool (String::*)(const String &) const>(&String::begins_with), sarray("text"), varray()); bind_method(String, ends_with, sarray("text"), varray()); bind_method(String, is_subsequence_of, sarray("text"), varray()); bind_method(String, is_subsequence_ofi, sarray("text"), varray()); @@ -1370,7 +1380,7 @@ void register_variant_methods() { bind_method(String, similarity, sarray("text"), varray()); bind_method(String, format, sarray("values", "placeholder"), varray("{_}")); - bind_methodv("replace", static_cast<String (String::*)(const String &, const String &) const>(&String::replace), sarray("what", "forwhat"), varray()); + bind_methodv(replace, static_cast<String (String::*)(const String &, const String &) const>(&String::replace), sarray("what", "forwhat"), varray()); bind_method(String, replacen, sarray("what", "forwhat"), varray()); bind_method(String, repeat, sarray("count"), varray()); bind_method(String, insert, sarray("position", "what"), varray()); @@ -1395,7 +1405,7 @@ void register_variant_methods() { bind_method(String, plus_file, sarray("file"), varray()); bind_method(String, ord_at, sarray("at"), varray()); bind_method(String, dedent, sarray(), varray()); - //string needs to be immutable when binding + // FIXME: String needs to be immutable when binding //bind_method(String, erase, sarray("position", "chars"), varray()); bind_method(String, hash, sarray(), varray()); bind_method(String, md5_text, sarray(), varray()); @@ -1405,7 +1415,7 @@ void register_variant_methods() { bind_method(String, sha1_buffer, sarray(), varray()); bind_method(String, sha256_buffer, sarray(), varray()); bind_method(String, empty, sarray(), varray()); - //static function, not sure how to bind + // FIXME: Static function, not sure how to bind //bind_method(String, humanize_size, sarray("size"), varray()); bind_method(String, is_abs_path, sarray(), varray()); @@ -1447,7 +1457,7 @@ void register_variant_methods() { bind_method(String, to_utf16_buffer, sarray(), varray()); bind_method(String, to_utf32_buffer, sarray(), varray()); - /* VECTOR2 */ + /* Vector2 */ bind_method(Vector2, angle, sarray(), varray()); bind_method(Vector2, angle_to, sarray("to"), varray()); @@ -1480,15 +1490,16 @@ void register_variant_methods() { bind_method(Vector2, cross, sarray("with"), varray()); bind_method(Vector2, abs, sarray(), varray()); bind_method(Vector2, sign, sarray(), varray()); + bind_method(Vector2, snapped, sarray("by"), varray()); bind_method(Vector2, clamped, sarray("length"), varray()); - /* VECTOR2I */ + /* Vector2i */ bind_method(Vector2i, aspect, sarray(), varray()); bind_method(Vector2i, sign, sarray(), varray()); bind_method(Vector2i, abs, sarray(), varray()); - /* RECT2 */ + /* Rect2 */ bind_method(Rect2, get_area, sarray(), varray()); bind_method(Rect2, has_no_area, sarray(), varray()); @@ -1500,7 +1511,7 @@ void register_variant_methods() { bind_method(Rect2, merge, sarray("b"), varray()); bind_method(Rect2, expand, sarray("to"), varray()); bind_method(Rect2, grow, sarray("by"), varray()); - bind_methodv("grow_margin", &Rect2::grow_margin_bind, sarray("margin", "by"), varray()); + bind_methodv(grow_margin, &Rect2::grow_margin_bind, sarray("margin", "by"), varray()); bind_method(Rect2, grow_individual, sarray("left", "top", "right", "bottom"), varray()); bind_method(Rect2, abs, sarray(), varray()); @@ -1515,7 +1526,7 @@ void register_variant_methods() { bind_method(Rect2i, merge, sarray("b"), varray()); bind_method(Rect2i, expand, sarray("to"), varray()); bind_method(Rect2i, grow, sarray("by"), varray()); - bind_methodv("grow_margin", &Rect2i::grow_margin_bind, sarray("margin", "by"), varray()); + bind_methodv(grow_margin, &Rect2i::grow_margin_bind, sarray("margin", "by"), varray()); bind_method(Rect2i, grow_individual, sarray("left", "top", "right", "bottom"), varray()); bind_method(Rect2i, abs, sarray(), varray()); @@ -1571,11 +1582,11 @@ void register_variant_methods() { bind_method(Plane, distance_to, sarray("point"), varray()); bind_method(Plane, has_point, sarray("point", "epsilon"), varray(CMP_EPSILON)); bind_method(Plane, project, sarray("point"), varray()); - bind_methodv("intersect_3", &Plane::intersect_3_bind, sarray("b", "c"), varray()); - bind_methodv("intersects_ray", &Plane::intersects_ray_bind, sarray("from", "dir"), varray()); - bind_methodv("intersects_segment", &Plane::intersects_segment_bind, sarray("from", "to"), varray()); + bind_methodv(intersect_3, &Plane::intersect_3_bind, sarray("b", "c"), varray()); + bind_methodv(intersects_ray, &Plane::intersects_ray_bind, sarray("from", "dir"), varray()); + bind_methodv(intersects_segment, &Plane::intersects_segment_bind, sarray("from", "to"), varray()); - /* Quaternion */ + /* Quat */ bind_method(Quat, length, sarray(), varray()); bind_method(Quat, length_squared, sarray(), varray()); @@ -1584,13 +1595,12 @@ void register_variant_methods() { bind_method(Quat, is_equal_approx, sarray("to"), varray()); bind_method(Quat, inverse, sarray(), varray()); bind_method(Quat, dot, sarray("with"), varray()); - bind_method(Quat, xform, sarray("v3"), varray()); bind_method(Quat, slerp, sarray("b", "t"), varray()); bind_method(Quat, slerpni, sarray("b", "t"), varray()); bind_method(Quat, cubic_slerp, sarray("b", "pre_a", "post_b", "t"), varray()); bind_method(Quat, get_euler, sarray(), varray()); - //Quat is atomic, this should be done via construcror + // FIXME: Quat is atomic, this should be done via construcror //ADDFUNC1(QUAT, NIL, Quat, set_euler, VECTOR3, "euler", varray()); //ADDFUNC2(QUAT, NIL, Quat, set_axis_angle, VECTOR3, "axis", FLOAT, "angle", varray()); @@ -1604,14 +1614,13 @@ void register_variant_methods() { bind_method(Color, to_rgba64, sarray(), varray()); bind_method(Color, inverted, sarray(), varray()); - bind_method(Color, contrasted, sarray(), varray()); bind_method(Color, lerp, sarray("b", "t"), varray()); bind_method(Color, lightened, sarray("amount"), varray()); bind_method(Color, darkened, sarray("amount"), varray()); bind_method(Color, to_html, sarray("with_alpha"), varray(true)); bind_method(Color, blend, sarray("over"), varray()); - //Color is immutable, need to probably find a way to do this via constructor + // FIXME: Color is immutable, need to probably find a way to do this via constructor //ADDFUNC4R(COLOR, COLOR, Color, from_hsv, FLOAT, "h", FLOAT, "s", FLOAT, "v", FLOAT, "a", varray(1.0)); bind_method(Color, is_equal_approx, sarray("to"), varray()); @@ -1641,8 +1650,6 @@ void register_variant_methods() { bind_method(Callable, hash, sarray(), varray()); bind_method(Callable, unbind, sarray("argcount"), varray()); - //#define bind_custom(m_type, m_name, m_method, m_flags, m_arg_types, m_ret_type, m_arg_names) _VariantCall::_bind_custom(m_type, m_name, m_method, m_flags, m_arg_types, m_ret_type) - bind_custom(Variant::CALLABLE, "call", _VariantCall::func_Callable_call, Variant::InternalMethod::FLAG_VARARGS | Variant::InternalMethod::FLAG_RETURNS_VARIANT, Vector<Variant::Type>(), Variant::NIL, sarray()); bind_custom(Variant::CALLABLE, "call_deferred", _VariantCall::func_Callable_call_deferred, Variant::InternalMethod::FLAG_VARARGS, Vector<Variant::Type>(), Variant::NIL, sarray()); bind_custom(Variant::CALLABLE, "bind", _VariantCall::func_Callable_bind, Variant::InternalMethod::FLAG_VARARGS, Vector<Variant::Type>(), Variant::CALLABLE, sarray()); @@ -1672,9 +1679,6 @@ void register_variant_methods() { bind_method(Transform2D, rotated, sarray("phi"), varray()); bind_method(Transform2D, scaled, sarray("scale"), varray()); bind_method(Transform2D, translated, sarray("offset"), varray()); - //too complex to bind this, operator * should be used instead - //ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform, NIL, "v", varray()); - //ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform_inv, NIL, "v", varray()); bind_method(Transform2D, basis_xform, sarray("v"), varray()); bind_method(Transform2D, basis_xform_inv, sarray("v"), varray()); bind_method(Transform2D, interpolate_with, sarray("xform", "t"), varray()); @@ -1686,16 +1690,13 @@ void register_variant_methods() { bind_method(Basis, transposed, sarray(), varray()); bind_method(Basis, orthonormalized, sarray(), varray()); bind_method(Basis, determinant, sarray(), varray()); - bind_methodv("rotated", static_cast<Basis (Basis::*)(const Vector3 &, float) const>(&Basis::rotated), sarray("axis", "phi"), varray()); + bind_methodv(rotated, static_cast<Basis (Basis::*)(const Vector3 &, float) const>(&Basis::rotated), sarray("axis", "phi"), varray()); bind_method(Basis, scaled, sarray("scale"), varray()); bind_method(Basis, get_scale, sarray(), varray()); bind_method(Basis, get_euler, sarray(), varray()); bind_method(Basis, tdotx, sarray("with"), varray()); bind_method(Basis, tdoty, sarray("with"), varray()); bind_method(Basis, tdotz, sarray("with"), varray()); - //use the operators instead - //ADDFUNC1R(BASIS, VECTOR3, Basis, xform, VECTOR3, "v", varray()); - //ADDFUNC1R(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray()); bind_method(Basis, get_orthogonal_index, sarray(), varray()); bind_method(Basis, slerp, sarray("b", "t"), varray()); bind_method(Basis, is_equal_approx, sarray("b"), varray()); @@ -1724,8 +1725,8 @@ void register_variant_methods() { bind_method(::AABB, get_shortest_axis_index, sarray(), varray()); bind_method(::AABB, get_shortest_axis_size, sarray(), varray()); bind_method(::AABB, get_endpoint, sarray("idx"), varray()); - bind_methodv("intersects_segment", &AABB::intersects_segment_bind, sarray("from", "to"), varray()); - bind_methodv("intersects_ray", &AABB::intersects_ray_bind, sarray("from", "dir"), varray()); + bind_methodv(intersects_segment, &AABB::intersects_segment_bind, sarray("from", "to"), varray()); + bind_methodv(intersects_ray, &AABB::intersects_ray_bind, sarray("from", "dir"), varray()); /* Transform */ @@ -1738,9 +1739,6 @@ void register_variant_methods() { bind_method(Transform, looking_at, sarray("target", "up"), varray()); bind_method(Transform, interpolate_with, sarray("xform", "weight"), varray()); bind_method(Transform, is_equal_approx, sarray("xform"), varray()); - //use the operators instead - //ADDFUNC1R(TRANSFORM, NIL, Transform, xform, NIL, "v", varray()); - //ADDFUNC1R(TRANSFORM, NIL, Transform, xform_inv, NIL, "v", varray()); /* Dictionary */ @@ -1913,6 +1911,7 @@ void register_variant_methods() { bind_method(PackedVector2Array, invert, sarray(), varray()); bind_method(PackedVector2Array, subarray, sarray("from", "to"), varray()); bind_method(PackedVector2Array, to_byte_array, sarray(), varray()); + bind_method(PackedVector2Array, sort, sarray(), varray()); /* Vector3 Array */ @@ -1929,6 +1928,7 @@ void register_variant_methods() { bind_method(PackedVector3Array, invert, sarray(), varray()); bind_method(PackedVector3Array, subarray, sarray("from", "to"), varray()); bind_method(PackedVector3Array, to_byte_array, sarray(), varray()); + bind_method(PackedVector3Array, sort, sarray(), varray()); /* Color Array */ @@ -1945,8 +1945,9 @@ void register_variant_methods() { bind_method(PackedColorArray, invert, sarray(), varray()); bind_method(PackedColorArray, subarray, sarray("from", "to"), varray()); bind_method(PackedColorArray, to_byte_array, sarray(), varray()); + bind_method(PackedColorArray, sort, sarray(), varray()); - /* REGISTER CONSTRUCTORS */ + /* Register constructors */ _VariantCall::add_constructor(_VariantCall::Vector2_init1, Variant::VECTOR2, "x", Variant::FLOAT, "y", Variant::FLOAT); _VariantCall::add_constructor(_VariantCall::Vector2i_init1, Variant::VECTOR2I, "x", Variant::INT, "y", Variant::INT); @@ -1954,7 +1955,7 @@ void register_variant_methods() { _VariantCall::add_constructor(_VariantCall::Rect2_init1, Variant::RECT2, "position", Variant::VECTOR2, "size", Variant::VECTOR2); _VariantCall::add_constructor(_VariantCall::Rect2_init2, Variant::RECT2, "x", Variant::FLOAT, "y", Variant::FLOAT, "width", Variant::FLOAT, "height", Variant::FLOAT); - _VariantCall::add_constructor(_VariantCall::Rect2i_init1, Variant::RECT2I, "position", Variant::VECTOR2, "size", Variant::VECTOR2); + _VariantCall::add_constructor(_VariantCall::Rect2i_init1, Variant::RECT2I, "position", Variant::VECTOR2I, "size", Variant::VECTOR2I); _VariantCall::add_constructor(_VariantCall::Rect2i_init2, Variant::RECT2I, "x", Variant::INT, "y", Variant::INT, "width", Variant::INT, "height", Variant::INT); _VariantCall::add_constructor(_VariantCall::Transform2D_init2, Variant::TRANSFORM2D, "rotation", Variant::FLOAT, "position", Variant::VECTOR2); @@ -1987,7 +1988,7 @@ void register_variant_methods() { _VariantCall::add_constructor(_VariantCall::Callable_init2, Variant::CALLABLE, "object", Variant::OBJECT, "method_name", Variant::STRING_NAME); _VariantCall::add_constructor(_VariantCall::Signal_init2, Variant::SIGNAL, "object", Variant::OBJECT, "signal_name", Variant::STRING_NAME); - /* REGISTER CONSTANTS */ + /* Register constants */ _populate_named_colors(); for (Map<String, Color>::Element *color = _named_colors.front(); color; color = color->next()) { |