public override void Compose(List <State> states)
 {
     base.Compose(states);
     this.Idle.StateMachine = this;
     Idle.MoveTransition    = new StateTransition("MoveTransition", Idle, Move);
     Idle.AddTrigger(MoveTransition, Idle.MoveTransition);
     states.Add(Idle);
     this.Move.StateMachine = this;
     Move.StopTransition    = new StateTransition("StopTransition", Move, Idle);
     Move.AddTrigger(StopTransition, Move.StopTransition);
     states.Add(Move);
 }
 public override void Compose(List <State> states)
 {
     base.Compose(states);
     this.Idle.StateMachine = this;
     Idle.BeginFiring       = new StateTransition("BeginFiring", Idle, Firing);
     Idle.OnReload          = new StateTransition("OnReload", Idle, Reloading);
     Idle.OnEmpty           = new StateTransition("OnEmpty", Idle, Empty);
     Idle.AddTrigger(BeginFiring, Idle.BeginFiring);
     Idle.AddTrigger(OnReload, Idle.OnReload);
     Idle.AddTrigger(OnEmpty, Idle.OnEmpty);
     states.Add(Idle);
     this.Firing.StateMachine = this;
     Firing.EndFiring         = new StateTransition("EndFiring", Firing, Idle);
     Firing.AddTrigger(EndFiring, Firing.EndFiring);
     states.Add(Firing);
     this.Reloading.StateMachine = this;
     Reloading.FinishedReloading = new StateTransition("FinishedReloading", Reloading, Idle);
     Reloading.AddTrigger(FinishedReloading, Reloading.FinishedReloading);
     states.Add(Reloading);
     this.Empty.StateMachine = this;
     Empty.OnReload          = new StateTransition("OnReload", Empty, Reloading);
     Empty.AddTrigger(OnReload, Empty.OnReload);
     states.Add(Empty);
 }