public void Update() { StateDefinition.StateName currentTempState = _currentState != null?_currentState.GetStateName() : StateDefinition.StateName.Null; if (_desiredState != currentTempState && _desiredState != StateDefinition.StateName.Null) { BaseState newState = GetState(_desiredState); if (newState != null) { if (_currentState != null) { _currentState.OnExit(); } newState.OnEnter(); _currentState = newState; } } if (_currentState != null) { _currentState.Update(); } }
private BaseState GetState(StateDefinition.StateName stateName) { foreach (BaseState state in _states) { if (state.GetStateName() == stateName) { return(state); } } return(null); }
public StateManager() { _desiredState = StateDefinition.StateName.Null; }
/// <summary> /// Switchs the state. /// </summary> public void SwitchState(StateDefinition.StateName state) { _stateManager.desiredState = state; }