public void Update() { if (CurrentState != null) { Transition triggeredTransition = null; foreach (Transition transition in CurrentState.GetTransitions()) { if (transition.IsTriggered()) { triggeredTransition = transition; } } if (triggeredTransition != null) { State targetState = triggeredTransition.GetTargetState(); CurrentState.ExitAction(); targetState.EntryAction(); CurrentState = targetState; } else { CurrentState.Action(); } } }
public void Start(State initial) { InitialState = initial; CurrentState = initial; CurrentState.EntryAction(); }