1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-17 14:11:06 +00:00

Implement inherits_script() for NativeScript and PluginScript

(cherry picked from commit 2dcd064056)
This commit is contained in:
Pedro J. Estébanez
2021-08-02 14:34:43 +02:00
parent 417a69c643
commit d272464e6e
2 changed files with 33 additions and 2 deletions

View File

@@ -112,7 +112,25 @@ void NativeScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder)
#endif #endif
bool NativeScript::inherits_script(const Ref<Script> &p_script) const { bool NativeScript::inherits_script(const Ref<Script> &p_script) const {
WARN_PRINT_ONCE("Inheritance needs to be implemented in NativeScript."); Ref<NativeScript> ns = p_script;
if (ns.is_null()) {
return false;
}
const NativeScriptDesc *other_s = ns->get_script_desc();
if (!other_s) {
return false;
}
const NativeScriptDesc *s = get_script_desc();
while (s) {
if (s == other_s) {
return true;
}
s = s->base_data;
}
return false; return false;
} }

View File

@@ -137,7 +137,20 @@ bool PluginScript::can_instance() const {
} }
bool PluginScript::inherits_script(const Ref<Script> &p_script) const { bool PluginScript::inherits_script(const Ref<Script> &p_script) const {
WARN_PRINT_ONCE("Inheritance needs to be implemented in PluginScript."); Ref<PluginScript> ps = p_script;
if (ps.is_null()) {
return false;
}
const PluginScript *s = this;
while (s) {
if (s == p_script.ptr()) {
return true;
}
s = Object::cast_to<PluginScript>(s->_ref_base_parent.ptr());
}
return false; return false;
} }