|
@@ -51,11 +51,23 @@ void FuncRef::set_instance(Object *p_obj) {
|
|
ERR_FAIL_NULL(p_obj);
|
|
ERR_FAIL_NULL(p_obj);
|
|
id = p_obj->get_instance_id();
|
|
id = p_obj->get_instance_id();
|
|
}
|
|
}
|
|
|
|
+
|
|
void FuncRef::set_function(const StringName &p_func) {
|
|
void FuncRef::set_function(const StringName &p_func) {
|
|
|
|
|
|
function = p_func;
|
|
function = p_func;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool FuncRef::is_valid() const {
|
|
|
|
+ if (id == 0)
|
|
|
|
+ return false;
|
|
|
|
+
|
|
|
|
+ Object *obj = ObjectDB::get_instance(id);
|
|
|
|
+ if (!obj)
|
|
|
|
+ return false;
|
|
|
|
+
|
|
|
|
+ return obj->has_method(function);
|
|
|
|
+}
|
|
|
|
+
|
|
void FuncRef::_bind_methods() {
|
|
void FuncRef::_bind_methods() {
|
|
|
|
|
|
{
|
|
{
|
|
@@ -67,6 +79,7 @@ void FuncRef::_bind_methods() {
|
|
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
|
|
FuncRef::FuncRef() :
|
|
FuncRef::FuncRef() :
|