Exemple #1
0
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

}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
void NativeScriptInstance::notification(int p_notification) {
	Variant value = p_notification;
	const Variant *args[1] = { &value };
	call_multilevel("_notification", args, 1);
}