Merge pull request #28525 from MunWolf/func_ref_validation

Added an is_valid function to FuncRef
This commit is contained in:
Rémi Verschelde 2019-05-06 14:23:16 +02:00 committed by GitHub
commit fcbadd4334
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

View file

@ -51,11 +51,23 @@ void FuncRef::set_instance(Object *p_obj) {
ERR_FAIL_NULL(p_obj);
id = p_obj->get_instance_id();
}
void FuncRef::set_function(const StringName &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() {
{
@ -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_function", "name"), &FuncRef::set_function);
ClassDB::bind_method(D_METHOD("is_valid"), &FuncRef::is_valid);
}
FuncRef::FuncRef() :

View file

@ -46,6 +46,7 @@ public:
Variant call_func(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
void set_instance(Object *p_obj);
void set_function(const StringName &p_func);
bool is_valid() const;
FuncRef();
};