void Object::call_multilevel(const StringName& p_name, VARIANT_ARG_DECLARE) { #if 0 if (p_name==CoreStringNames::get_singleton()->_free) { #ifdef DEBUG_ENABLED if (cast_to<Reference>()) { ERR_EXPLAIN("Can't 'free' a reference."); ERR_FAIL(); return; } #endif //must be here, must be before everything, memdelete(this); return; } VARIANT_ARGPTRS; int argc=0; for(int i=0;i<VARIANT_ARG_MAX;i++) { if (argptr[i]->get_type()==Variant::NIL) break; argc++; } Variant::CallError error; if (script_instance) { script_instance->call(p_name,argptr,argc,error); _test_call_error(p_name,error); } MethodBind *method=ObjectTypeDB::get_method(get_type_name(),p_name); if (method) { method->call(this,argptr,argc,error); _test_call_error(p_name,error); } #else VARIANT_ARGPTRS; int argc=0; for(int i=0;i<VARIANT_ARG_MAX;i++) { if (argptr[i]->get_type()==Variant::NIL) break; argc++; } //Variant::CallError error; call_multilevel(p_name,argptr,argc); #endif }
void ScriptInstance::call_multilevel(const StringName &p_method, VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS; int argc = 0; for (int i = 0; i < VARIANT_ARG_MAX; i++) { if (argptr[i]->get_type() == Variant::NIL) break; argc++; } call_multilevel(p_method, argptr, argc); }
void NativeScriptInstance::notification(int p_notification) { #ifdef DEBUG_ENABLED if (p_notification == MainLoop::NOTIFICATION_CRASH) { if (current_method_call != StringName("")) { ERR_PRINTS("NativeScriptInstance detected crash on method: " + current_method_call); current_method_call = ""; } } #endif Variant value = p_notification; const Variant *args[1] = { &value }; call_multilevel("_notification", args, 1); }
void Object::call_multilevel(const StringName &p_name, VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS; int argc = 0; for (int i = 0; i < VARIANT_ARG_MAX; i++) { if (argptr[i]->get_type() == Variant::NIL) break; argc++; } //Variant::CallError error; call_multilevel(p_name, argptr, argc); }
void NativeScriptInstance::notification(int p_notification) { Variant value = p_notification; const Variant *args[1] = { &value }; call_multilevel("_notification", args, 1); }