Browse Source

function to add script and instance at once, as needed by neikeq

Juan Linietsky 8 years ago
parent
commit
3b2dfae5af
2 changed files with 13 additions and 0 deletions
  1. 11 0
      core/object.cpp
  2. 2 0
      core/object.h

+ 11 - 0
core/object.cpp

@@ -993,6 +993,17 @@ void Object::cancel_delete() {
 	_predelete_ok = true;
 }
 
+void Object::set_script_and_instance(const RefPtr &p_script, ScriptInstance *p_instance) {
+
+	//this function is not meant to be used in any of these ways
+	ERR_FAIL_COND(p_script.is_null());
+	ERR_FAIL_COND(!p_instance);
+	ERR_FAIL_COND(script_instance != NULL || !script.is_null());
+
+	script = p_script;
+	script_instance = p_instance;
+}
+
 void Object::set_script(const RefPtr &p_script) {
 
 	if (script == p_script)

+ 2 - 0
core/object.h

@@ -651,6 +651,8 @@ public:
 	void set_script_instance(ScriptInstance *p_instance);
 	_FORCE_INLINE_ ScriptInstance *get_script_instance() const { return script_instance; }
 
+	void set_script_and_instance(const RefPtr &p_script, ScriptInstance *p_instance); //some script languages can't control instance creation, so this function eases the process
+
 	void add_user_signal(const MethodInfo &p_signal);
 	void emit_signal(const StringName &p_name, VARIANT_ARG_LIST);
 	void emit_signal(const StringName &p_name, const Variant **p_args, int p_argcount);