From 6690d8f91d3a36c34ed4d4acec573104b94b6004 Mon Sep 17 00:00:00 2001 From: marek-jelo-jelinek Date: Fri, 28 Aug 2026 12:30:59 +0200 Subject: [PATCH 1/2] defer DashGraph asset scan until GraphAssets is actually used --- Editor/Scripts/DashEditorCore.cs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Editor/Scripts/DashEditorCore.cs b/Editor/Scripts/DashEditorCore.cs index 232b448f..44a962ca 100644 --- a/Editor/Scripts/DashEditorCore.cs +++ b/Editor/Scripts/DashEditorCore.cs @@ -30,8 +30,20 @@ public class DashEditorCore static public GUISkin Skin => (GUISkin)Resources.Load("Skins/EditorSkins/NodeEditorSkin"); //static public bool DetailsVisible => EditorConfig.zoom < 2.5; - - static public List GraphAssets { get; private set; } + + static private List _graphAssets; + + static public List GraphAssets + { + get + { + if (_graphAssets == null) + { + ScanGraphAssets(); + } + return _graphAssets; + } + } static public string propertyReference; @@ -44,10 +56,8 @@ static DashEditorCore() RuntimeConfig = DashRuntimeConfig.Create(); Previewer = new DashEditorPreviewer(); - - CheckDashVersion(); - ScanGraphAssets(); + CheckDashVersion(); SetDefineSymbols(); @@ -80,7 +90,7 @@ public static void SetDefineSymbols() public static void ScanGraphAssets() { - GraphAssets = AssetUtils.FindAllAssetsByType(); + _graphAssets = AssetUtils.FindAllAssetsByType(); } static void CheckDashVersion() From 3f67f79640c652b6ac94466b3f15748ee4d74025 Mon Sep 17 00:00:00 2001 From: marek-jelo-jelinek Date: Fri, 28 Aug 2026 16:12:25 +0200 Subject: [PATCH 2/2] optimize SetExecutionOrder to load target scripts by path --- Editor/Scripts/DashEditorCore.cs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Editor/Scripts/DashEditorCore.cs b/Editor/Scripts/DashEditorCore.cs index 44a962ca..c881f7e6 100644 --- a/Editor/Scripts/DashEditorCore.cs +++ b/Editor/Scripts/DashEditorCore.cs @@ -8,7 +8,6 @@ using System; using System.Collections.Generic; -using System.Linq; using OdinSerializer.Utilities; using UnityEditor; using UnityEngine; @@ -49,8 +48,8 @@ static public List GraphAssets static DashEditorCore() { - SetExecutionOrder(typeof(DashVariablesController), -501); - SetExecutionOrder(typeof(DashController), -500); + SetExecutionOrder("Packages/com.shtif.dash/Runtime/Scripts/Variables/DashVariablesController.cs", -501); + SetExecutionOrder("Packages/com.shtif.dash/Runtime/Scripts/DashController.cs", -500); EditorConfig = DashEditorConfig.Create(); RuntimeConfig = DashRuntimeConfig.Create(); @@ -114,16 +113,19 @@ static void CheckDashVersion() } } - static void SetExecutionOrder(Type p_classType, int p_order) + static void SetExecutionOrder(string p_scriptPath, int p_order) { - MonoScript[] scripts = (MonoScript[])Resources.FindObjectsOfTypeAll(typeof(MonoScript)); - - MonoScript classScript = scripts.First(s => s.GetClass() == p_classType); + MonoScript script = AssetDatabase.LoadAssetAtPath(p_scriptPath); + if (!script) + { + Debug.LogWarning($"[Dash] Could not find script at path '{p_scriptPath}' to set execution order."); + return; + } // We need to check the order first and set only if different otherwise we may get into infinity reload assembly loop. - if (MonoImporter.GetExecutionOrder(classScript) != p_order) + if (MonoImporter.GetExecutionOrder(script) != p_order) { - MonoImporter.SetExecutionOrder(classScript, p_order); + MonoImporter.SetExecutionOrder(script, p_order); } }