using System.Collections; using System.Collections.Generic; using UnityEngine; namespace YKMoon.StateMachines { public enum StateMachineUpdateType { Normal, Unscaled, } public class StateMachineManager : USingletonMono { private List normalUpdateMachines = new List(); private List unscaledUpdateMachines = new List(); public static void Reg(StateMachine stateMachine, StateMachineUpdateType updateType) { switch(updateType) { case StateMachineUpdateType.Normal: if(!Instance.normalUpdateMachines.Contains(stateMachine)) { Instance.normalUpdateMachines.Add(stateMachine); } break; case StateMachineUpdateType.Unscaled: if(!Instance.unscaledUpdateMachines.Contains(stateMachine)) { Instance.unscaledUpdateMachines.Add(stateMachine); } break; } } public static void UnReg(StateMachine stateMachine, StateMachineUpdateType updateType) { switch(updateType) { case StateMachineUpdateType.Normal: if(Instance.normalUpdateMachines.Contains(stateMachine)) { Instance.normalUpdateMachines.Remove(stateMachine); } break; case StateMachineUpdateType.Unscaled: if(Instance.unscaledUpdateMachines.Contains(stateMachine)) { Instance.unscaledUpdateMachines.Remove(stateMachine); } break; } } public static void Clear() { Instance.normalUpdateMachines.Clear(); Instance.unscaledUpdateMachines.Clear(); } private void Update() { for(int i = 0; i < normalUpdateMachines.Count; i++) { normalUpdateMachines[i].Update(Time.deltaTime); } for(int i = 0; i < unscaledUpdateMachines.Count; i++) { unscaledUpdateMachines[i].Update(Time.unscaledDeltaTime); } } } }