diff options
author | Yuri Sizov <yuris@humnom.net> | 2024-01-17 18:52:54 +0100 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2024-01-17 18:52:54 +0100 |
commit | c027aecc2e11f21da0a515964861372e361bffeb (patch) | |
tree | 1f86560199e1ed4e19840d27ff196157bfd5a304 /modules/mono/csharp_script.cpp | |
parent | 5b22884b4aab9bfc0522686daa20df6ca0076027 (diff) | |
parent | cde478bda6a7ca5239daf96d0fd3cb6344c064a6 (diff) | |
download | redot-engine-c027aecc2e11f21da0a515964861372e361bffeb.tar.gz |
Merge pull request #86676 from rune-scape/sparse-script-reload
GDScript: Hot-reload changed scripts only
Diffstat (limited to 'modules/mono/csharp_script.cpp')
-rw-r--r-- | modules/mono/csharp_script.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index ac6977504a..f7f674763e 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -720,11 +720,22 @@ void CSharpLanguage::reload_all_scripts() { #endif } -void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) { - (void)p_script; // UNUSED - +void CSharpLanguage::reload_scripts(const Array &p_scripts, bool p_soft_reload) { CRASH_COND(!Engine::get_singleton()->is_editor_hint()); + bool has_csharp_script = false; + for (int i = 0; i < p_scripts.size(); ++i) { + Ref<CSharpScript> cs_script = p_scripts[i]; + if (cs_script.is_valid()) { + has_csharp_script = true; + break; + } + } + + if (!has_csharp_script) { + return; + } + #ifdef TOOLS_ENABLED get_godotsharp_editor()->get_node(NodePath("HotReloadAssemblyWatcher"))->call("RestartTimer"); #endif @@ -736,6 +747,12 @@ void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft #endif } +void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) { + Array scripts; + scripts.push_back(p_script); + reload_scripts(scripts, p_soft_reload); +} + #ifdef GD_MONO_HOT_RELOAD bool CSharpLanguage::is_assembly_reloading_needed() { ERR_FAIL_NULL_V(gdmono, false); |