Merge pull request #31195 from bojidar-bg/31143-funcref-call_funcv
Add FuncRef.call_funcv
This commit is contained in:
commit
e578c1fef8
|
@ -46,6 +46,17 @@ Variant FuncRef::call_func(const Variant **p_args, int p_argcount, Variant::Call
|
||||||
return obj->call(function, p_args, p_argcount, r_error);
|
return obj->call(function, p_args, p_argcount, r_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Variant FuncRef::call_funcv(const Array &p_args) {
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(id == 0, Variant());
|
||||||
|
|
||||||
|
Object *obj = ObjectDB::get_instance(id);
|
||||||
|
|
||||||
|
ERR_FAIL_COND_V(!obj, Variant());
|
||||||
|
|
||||||
|
return obj->callv(function, p_args);
|
||||||
|
}
|
||||||
|
|
||||||
void FuncRef::set_instance(Object *p_obj) {
|
void FuncRef::set_instance(Object *p_obj) {
|
||||||
|
|
||||||
ERR_FAIL_NULL(p_obj);
|
ERR_FAIL_NULL(p_obj);
|
||||||
|
@ -77,6 +88,8 @@ void FuncRef::_bind_methods() {
|
||||||
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_func", &FuncRef::call_func, mi, defargs);
|
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_func", &FuncRef::call_func, mi, defargs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("call_funcv", "arg_array"), &FuncRef::call_funcv);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_instance", "instance"), &FuncRef::set_instance);
|
ClassDB::bind_method(D_METHOD("set_instance", "instance"), &FuncRef::set_instance);
|
||||||
ClassDB::bind_method(D_METHOD("set_function", "name"), &FuncRef::set_function);
|
ClassDB::bind_method(D_METHOD("set_function", "name"), &FuncRef::set_function);
|
||||||
ClassDB::bind_method(D_METHOD("is_valid"), &FuncRef::is_valid);
|
ClassDB::bind_method(D_METHOD("is_valid"), &FuncRef::is_valid);
|
||||||
|
|
|
@ -44,6 +44,7 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Variant call_func(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
|
Variant call_func(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
|
||||||
|
Variant call_funcv(const Array &p_args);
|
||||||
void set_instance(Object *p_obj);
|
void set_instance(Object *p_obj);
|
||||||
void set_function(const StringName &p_func);
|
void set_function(const StringName &p_func);
|
||||||
bool is_valid() const;
|
bool is_valid() const;
|
||||||
|
|
|
@ -17,10 +17,20 @@
|
||||||
Calls the referenced function previously set by [method set_function] or [method @GDScript.funcref].
|
Calls the referenced function previously set by [method set_function] or [method @GDScript.funcref].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="call_funcv">
|
||||||
|
<return type="Variant">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="arg_array" type="Array">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Calls the referenced function previously set by [method set_function] or [method @GDScript.funcref]. Contrarily to [method call_func], this method does not support a variable number of arguments but expects all parameters to be passed via a single [Array].
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="is_valid" qualifiers="const">
|
<method name="is_valid" qualifiers="const">
|
||||||
<return type="bool">
|
<return type="bool">
|
||||||
</return>
|
</return>
|
||||||
<description>
|
<description>
|
||||||
|
Returns whether the object still exists and has the function assigned.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="set_function">
|
<method name="set_function">
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<argument index="1" name="arg_array" type="Array">
|
<argument index="1" name="arg_array" type="Array">
|
||||||
</argument>
|
</argument>
|
||||||
<description>
|
<description>
|
||||||
Calls the [code]method[/code] on the object and returns the result. Contrarily to [method call], this method does not support a variable number of arguments but expected all parameters passed via a single [Array].
|
Calls the [code]method[/code] on the object and returns the result. Contrarily to [method call], this method does not support a variable number of arguments but expects all parameters to be via a single [Array].
|
||||||
[codeblock]
|
[codeblock]
|
||||||
callv("set", [ "position", Vector2(42.0, 0.0) ])
|
callv("set", [ "position", Vector2(42.0, 0.0) ])
|
||||||
[/codeblock]
|
[/codeblock]
|
||||||
|
|
Loading…
Reference in New Issue