Seven is the number.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

75 lines
1.6 KiB

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public static class BoltExecutionOrderManager
{
static BoltExecutionOrderManager()
{
Dictionary<string, MonoScript> monoScripts = new Dictionary<string, MonoScript>();
foreach (MonoScript monoScript in MonoImporter.GetAllRuntimeMonoScripts())
{
try
{
switch (monoScript.name)
{
case "BoltPoll":
SetExecutionOrder(monoScript, -10000);
break;
case "BoltSend":
SetExecutionOrder(monoScript, +10000);
break;
case "BoltEntity":
SetExecutionOrder(monoScript, -2500);
break;
default:
if (monoScripts.ContainsKey(monoScript.name))
{
monoScripts[monoScript.name] = monoScript;
}
else
{
monoScripts.Add(monoScript.name, monoScript);
}
break;
}
}
catch { }
}
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.GetTypes())
{
if (monoScripts.ContainsKey(type.Name))
{
try
{
foreach (BoltExecutionOrderAttribute attribute in type.GetCustomAttributes(typeof(BoltExecutionOrderAttribute), false))
{
SetExecutionOrder(monoScripts[type.Name], attribute.executionOrder);
}
}
catch (Exception exn)
{
BoltLog.Exception(exn);
}
}
}
}
}
static void SetExecutionOrder(MonoScript script, Int32 executionOrder)
{
if (MonoImporter.GetExecutionOrder(script) != executionOrder)
{
MonoImporter.SetExecutionOrder(script, executionOrder);
}
}
}