Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 27 additions & 15 deletions Editor/Scripts/DashEditorCore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

using System;
using System.Collections.Generic;
using System.Linq;
using OdinSerializer.Utilities;
using UnityEditor;
using UnityEngine;
Expand All @@ -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<DashGraph> GraphAssets { get; private set; }

static private List<DashGraph> _graphAssets;

static public List<DashGraph> 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();

Expand Down Expand Up @@ -80,7 +89,7 @@ public static void SetDefineSymbols()

public static void ScanGraphAssets()
{
GraphAssets = AssetUtils.FindAllAssetsByType<DashGraph>();
_graphAssets = AssetUtils.FindAllAssetsByType<DashGraph>();
}

static void CheckDashVersion()
Expand All @@ -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<MonoScript>(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);
}
}

Expand Down