diff --git a/Editor/Scripts/DashEditorCore.cs b/Editor/Scripts/DashEditorCore.cs index 232b448..c881f7e 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; @@ -30,24 +29,34 @@ 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; 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(); Previewer = new DashEditorPreviewer(); - - CheckDashVersion(); - ScanGraphAssets(); + CheckDashVersion(); SetDefineSymbols(); @@ -80,7 +89,7 @@ public static void SetDefineSymbols() public static void ScanGraphAssets() { - GraphAssets = AssetUtils.FindAllAssetsByType(); + _graphAssets = AssetUtils.FindAllAssetsByType(); } static void CheckDashVersion() @@ -104,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); } }