|
@@ -1958,19 +1958,22 @@ int GDScriptInstance::get_method_argument_count(const StringName &p_method, bool
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void GDScriptInstance::_call_implicit_ready_recursively(GDScript *p_script) {
|
|
|
|
+ // Call base class first.
|
|
|
|
+ if (p_script->_base) {
|
|
|
|
+ _call_implicit_ready_recursively(p_script->_base);
|
|
|
|
+ }
|
|
|
|
+ if (p_script->implicit_ready) {
|
|
|
|
+ Callable::CallError err;
|
|
|
|
+ p_script->implicit_ready->call(this, nullptr, 0, err);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
Variant GDScriptInstance::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
|
Variant GDScriptInstance::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
|
GDScript *sptr = script.ptr();
|
|
GDScript *sptr = script.ptr();
|
|
if (unlikely(p_method == SNAME("_ready"))) {
|
|
if (unlikely(p_method == SNAME("_ready"))) {
|
|
- // Call implicit ready first, including for the super classes.
|
|
|
|
- while (sptr) {
|
|
|
|
- if (sptr->implicit_ready) {
|
|
|
|
- sptr->implicit_ready->call(this, nullptr, 0, r_error);
|
|
|
|
- }
|
|
|
|
- sptr = sptr->_base;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // Reset this back for the regular call.
|
|
|
|
- sptr = script.ptr();
|
|
|
|
|
|
+ // Call implicit ready first, including for the super classes recursively.
|
|
|
|
+ _call_implicit_ready_recursively(sptr);
|
|
}
|
|
}
|
|
while (sptr) {
|
|
while (sptr) {
|
|
HashMap<StringName, GDScriptFunction *>::Iterator E = sptr->member_functions.find(p_method);
|
|
HashMap<StringName, GDScriptFunction *>::Iterator E = sptr->member_functions.find(p_method);
|