public K GetState <K>() where K : StateMachineState { StateMachineState state = null; stateMap.TryGetValue(typeof(K), out state); return((K)state); }
public void RegisterState(StateMachineState state) { if (!stateMap.ContainsKey(state.GetType())) { state.SetStateMachine(this); stateMap.Add(state.GetType(), state); } }
public void ChangeState(System.Type type, StateParams stateParams = null) { if (stateMap.TryGetValue(type, out StateMachineState nextState)) { StateMachineState prevState = currentState; currentState = nextState; if (prevState != null) { prevState.Exit(); } currentState.Enter(stateParams); OnStateChanged(prevState, nextState); } else { Debug.LogError("Tried to enter null state. This isn't supported"); } }
public void ChangeState(StateMachineState state, StateParams stateParams = null) { ChangeState(state.GetType(), stateParams); }