From d504c152955d95fffa51e9653e76c7669cf6f406 Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Wed, 15 Jul 2020 16:15:29 +0200 Subject: [PATCH] Optimized ScriptEditor initialization when many scripts are loaded This change avoids the editor to freeze for several seconds when a project with lots of scripts is loaded in the editor. It focuses on a few heavy operations previously executed on all previously loaded scripts: - Initialize script resource (script validation/parsing) only on focus - ScriptTextEditor: code editor and edit menu are added to the scene only on focus - Add to recent scripts only when opening new scripts (load/save scene metadata) --- visual_script_editor.cpp | 6 +++++- visual_script_editor.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/visual_script_editor.cpp b/visual_script_editor.cpp index 515fc5a..918b968 100644 --- a/visual_script_editor.cpp +++ b/visual_script_editor.cpp @@ -2401,7 +2401,8 @@ RES VisualScriptEditor::get_edited_resource() const { } void VisualScriptEditor::set_edited_resource(const RES &p_res) { - + ERR_FAIL_COND(script.is_valid()); + ERR_FAIL_COND(p_res.is_null()); script = p_res; signal_editor->script = script; signal_editor->undo_redo = undo_redo; @@ -2422,6 +2423,9 @@ void VisualScriptEditor::set_edited_resource(const RES &p_res) { _update_members(); } +void VisualScriptEditor::enable_editor() { +} + Vector VisualScriptEditor::get_functions() { return Vector(); diff --git a/visual_script_editor.h b/visual_script_editor.h index 7f3bf79..89c8d00 100644 --- a/visual_script_editor.h +++ b/visual_script_editor.h @@ -295,6 +295,7 @@ public: virtual void apply_code(); virtual RES get_edited_resource() const; virtual void set_edited_resource(const RES &p_res); + virtual void enable_editor(); virtual Vector get_functions(); virtual void reload_text(); virtual String get_name();