瀏覽代碼

Auto-reload scripts with external editor

Jihyun Yu 4 年之前
父節點
當前提交
5c66891048

+ 3 - 0
editor/plugins/script_editor_plugin.cpp

@@ -786,7 +786,10 @@ void ScriptEditor::_res_saved_callback(const Ref<Resource> &p_res) {
 	}
 
 	_update_script_names();
+	_trigger_live_script_reload();
+}
 
+void ScriptEditor::_trigger_live_script_reload() {
 	if (!pending_auto_reload && auto_reload_running_scripts) {
 		call_deferred("_live_auto_reload_running_scripts");
 		pending_auto_reload = true;

+ 1 - 0
editor/plugins/script_editor_plugin.h

@@ -303,6 +303,7 @@ class ScriptEditor : public PanelContainer {
 
 	bool pending_auto_reload;
 	bool auto_reload_running_scripts;
+	void _trigger_live_script_reload();
 	void _live_auto_reload_running_scripts();
 
 	void _update_selected_editor_menu();

+ 2 - 0
editor/plugins/script_text_editor.cpp

@@ -789,6 +789,8 @@ void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_fo
 			script->set_source_code(rel_script->get_source_code());
 			script->set_last_modified_time(rel_script->get_last_modified_time());
 			script->update_exports();
+
+			_trigger_live_script_reload();
 		}
 	}
 }

+ 2 - 2
modules/gdscript/gdscript.cpp

@@ -2168,7 +2168,7 @@ RES ResourceFormatLoaderGDScript::load(const String &p_path, const String &p_ori
 
 	if (p_path.ends_with(".gde") || p_path.ends_with(".gdc")) {
 		script->set_script_path(p_original_path); // script needs this.
-		script->set_path(p_original_path);
+		script->set_path(p_original_path, true);
 		Error err = script->load_byte_code(p_path);
 		ERR_FAIL_COND_V_MSG(err != OK, RES(), "Cannot load byte code from file '" + p_path + "'.");
 
@@ -2177,7 +2177,7 @@ RES ResourceFormatLoaderGDScript::load(const String &p_path, const String &p_ori
 		ERR_FAIL_COND_V_MSG(err != OK, RES(), "Cannot load source code from file '" + p_path + "'.");
 
 		script->set_script_path(p_original_path); // script needs this.
-		script->set_path(p_original_path);
+		script->set_path(p_original_path, true);
 
 		script->reload();
 	}