public void Reset(bool callStateExit = false) { if (CurrentState == null) { CurrentState.OnStatExit(this, null); } CurrentState = InitialState; }
public void AddState(ISimpleFSMState <TStateKey> state) { Debug.Assert(!states.ContainsKey(state.Key), "State with key" + state.Key + " already exist while adding it!"); states[state.Key] = state; if (InitialState == null) { SetInitialState(state.Key); } }
public void Update(float deltaTime) { if (CurrentState == null) { CurrentState = InitialState; CurrentState.OnStateEnter(this, null); } if (CurrentState != null) { CurrentState.Update(this, deltaTime); } }
public void GoToState(TStateKey stateKey) { var newState = states[stateKey]; var oldState = CurrentState; if (CurrentState != null) { CurrentState.OnStatExit(this, newState); } newState.OnStateEnter(this, oldState); CurrentState = newState; onStateChanged?.Invoke(oldState, newState); }
public void OnStatExit(SimpleFSM <TStateKey> stateMachine, ISimpleFSMState <TStateKey> toState) { exit?.Invoke(stateMachine, toState); }
public void OnStateEnter(SimpleFSM <TStateKey> stateMachine, ISimpleFSMState <TStateKey> fromState) { enter?.Invoke(stateMachine, fromState); }