rabidus-test/Assets/CurvedUI/Scripts/Editor/CurvedUIScriptOrder.cs

75 lines
2.3 KiB
C#
Raw Normal View History

2023-08-15 17:38:54 +03:00
using UnityEditor;
namespace CurvedUI
{
/// <summary>
/// This class changes the Execution Order of Scripts in CurvedUI package.
/// Some of them must be executed before or after default time to work properly.
/// </summary>
[InitializeOnLoad]
public class CurvedUIScriptOrder : Editor
{
static CurvedUIScriptOrder()
{
ChangeScriptOrder(typeof(CurvedUITMP).Name, 100, OrderMatch.GREATER_THAN);
}
static void ChangeScriptOrder(string scriptName, int order, OrderMatch match = OrderMatch.EXACT)
{
// Iterate through all scripts (Might be a better way to do this?)
foreach (MonoScript monoScript in MonoImporter.GetAllRuntimeMonoScripts())
{
// If found our script
if (monoScript.name == scriptName)
{
if(match == OrderMatch.EXACT)
{
// And it's not at the execution time we want already
if (MonoImporter.GetExecutionOrder(monoScript) != order)
{
MonoImporter.SetExecutionOrder(monoScript, order);
}
break;
}
if (match == OrderMatch.LESSER_THAN)
{
// And it's not at the execution time we want already
if (MonoImporter.GetExecutionOrder(monoScript) > order)
{
MonoImporter.SetExecutionOrder(monoScript, order);
}
break;
}
if (match == OrderMatch.GREATER_THAN)
{
// And it's not at the execution time we want already
if (MonoImporter.GetExecutionOrder(monoScript) < order)
{
MonoImporter.SetExecutionOrder(monoScript, order);
}
break;
}
}
}
}
enum OrderMatch
{
EXACT = 0,
GREATER_THAN = 1,
LESSER_THAN = 2,
}
}
}