private void SwitchStates(State targetState, bool invokeEvents = true) { object parameter = null; var sourceState = CurrentState; if (invokeEvents) { var data = new OnExitData { StateMachine = this, TargetState = targetState }; CurrentState.OnExit(data); parameter = data.Output; } CurrentState = targetState; if (invokeEvents) { var data = new OnEnterData { StateMachine = this, SourceState = sourceState, Input = parameter }; CurrentState.OnEnter(data); } }
public override void OnExit(OnExitData data) { messageBroker.SendMessage($"Exiting state: {Name}"); }