public void AddState(GKStateMachineStateBase <STATE_ID_T> state, bool asDefault) { _states.Add(state); if (asDefault) { _defaultState = state; _lastState = state; } }
public void GoToState(STATE_ID_T targetStateId) { if (_currentState == null || !targetStateId.Equals(_currentState.ID)) { GKStateMachineStateBase <STATE_ID_T> targetState = _GetStateById(targetStateId); if (targetState != null) { _GoToState(targetState); } } }
void _GoToState(GKStateMachineStateBase <STATE_ID_T> targetState) { if (targetState == null) { return; } if (_currentState != null) { _currentState.Exit(); } if (null != _currentState) { //Debug.Log(string.Format("Set last state: {0}, Current state: {1}, Target state:{2}",_lastState.ID.ToString(), _currentState.ID.ToString(), targetState.ID.ToString())); _lastState = _currentState; } _currentState = targetState; targetState.Enter(); }