public override void InitializeStates(out BaseState default_state) { default_state = off; base.serializable = true; off.EventTransition(GameHashes.OperationalChanged, on, (Instance smi) => smi.master.GetComponent <Operational>().IsOperational).PlayAnim("off"); on.EventTransition(GameHashes.OperationalChanged, off, (Instance smi) => !smi.master.GetComponent <Operational>().IsOperational).EventTransition(GameHashes.ActiveChanged, working.pre, (Instance smi) => smi.master.GetComponent <Operational>().IsActive).PlayAnim("on"); working.DefaultState(working.pre); working.pre.PlayAnim("working_pre").OnAnimQueueComplete(working.loop); working.loop.PlayAnim("working_loop", KAnim.PlayMode.Loop).EventTransition(GameHashes.ActiveChanged, off, (Instance smi) => (Object)masterTarget.Get(smi) != (Object)null && !smi.master.GetComponent <Operational>().IsActive); }