From 31ce3c5fd0300aac1e86bced1efc5f9ec94bdb6b Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Thu, 13 Mar 2014 22:57:24 -0300 Subject: -fix bug in cache for atlas import/export -fix some menus -fixed bug in out transition curves -detect and remove file:/// in collada -remove multiscript for now -remove dependencies on mouse in OS, moved to Input -avoid fscache from screwing up (fix might make it slower, but it works) -funcref was missing, it's there now --- core/func_ref.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 core/func_ref.cpp (limited to 'core/func_ref.cpp') diff --git a/core/func_ref.cpp b/core/func_ref.cpp new file mode 100644 index 0000000000..0e43112de8 --- /dev/null +++ b/core/func_ref.cpp @@ -0,0 +1,55 @@ +#include "func_ref.h" + +Variant FuncRef::call_func(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { + + if (id==0) { + r_error.error=Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL; + return Variant(); + } + Object* obj = ObjectDB::get_instance(id); + + if (!obj) { + r_error.error=Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL; + return Variant(); + } + + return obj->call(function,p_args,p_argcount,r_error); + +} + +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; +} + +void FuncRef::_bind_methods() { + + { + MethodInfo mi; + mi.name="call"; + mi.arguments.push_back( PropertyInfo( Variant::STRING, "method")); + Vector defargs; + for(int i=0;i<10;i++) { + mi.arguments.push_back( PropertyInfo( Variant::NIL, "arg"+itos(i))); + defargs.push_back(Variant()); + } + ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call_func",&FuncRef::call_func,mi,defargs); + + } + + ObjectTypeDB::bind_method(_MD("set_instance","instance"),&FuncRef::set_instance); + ObjectTypeDB::bind_method(_MD("set_function","name"),&FuncRef::set_function); + +} + + +FuncRef::FuncRef(){ + + id=0; +} + -- cgit v1.2.3