Просмотр исходного кода

Automatically turn on process callbacks if relevant callbacks in node exists

Juan Linietsky 9 лет назад
Родитель
Сommit
0b8f0670c5
2 измененных файлов с 18 добавлено и 1 удалено
  1. 1 1
      core/os/keyboard.cpp
  2. 17 0
      modules/visual_script/visual_script.cpp

+ 1 - 1
core/os/keyboard.cpp

@@ -443,7 +443,7 @@ int keycode_get_count() {
 }
 
 int keycode_get_value_by_index(int p_index) {
-	_keycodes[p_index].code;
+	return _keycodes[p_index].code;
 }
 
 const char* keycode_get_name_by_index(int p_index) {

+ 17 - 0
modules/visual_script/visual_script.cpp

@@ -1,5 +1,7 @@
 #include "visual_script.h"
 #include "visual_script_nodes.h"
+#include "scene/main/node.h"
+
 #include "globals.h"
 #define SCRIPT_VARIABLES_PREFIX "script_variables/"
 
@@ -1848,6 +1850,21 @@ void VisualScriptInstance::create(const Ref<VisualScript>& p_script,Object *p_ow
 	max_input_args = 0;
 	max_output_args = 0;
 
+	if (p_owner->cast_to<Node>()) {
+		//turn on these if they exist and base is a node
+		Node* node = p_owner->cast_to<Node>();
+		if (p_script->functions.has("_process"))
+			node->set_process(true);
+		if (p_script->functions.has("_fixed_process"))
+			node->set_fixed_process(true);
+		if (p_script->functions.has("_input"))
+			node->set_process_input(true);
+		if (p_script->functions.has("_unhandled_input"))
+			node->set_process_unhandled_input(true);
+		if (p_script->functions.has("_unhandled_key_input"))
+			node->set_process_unhandled_key_input(true);
+	}
+
 	for(const Map<StringName,VisualScript::Variable>::Element *E=script->variables.front();E;E=E->next()) {
 		variables[E->key()]=E->get().default_value;
 	}