// Update is called once per frame public void Update() { Definitions.StateName currentTempState = _currentState != null?_currentState.GetStateName() : Definitions.StateName.Null; if (_desiredState != currentTempState && _desiredState != Definitions.StateName.Null) { BaseState newState = GetState(_desiredState); if (newState != null) { if (_currentState != null) { _currentState.OnExit(); } newState.OnEnter(); _currentState = newState; } } if (_currentState != null) { _currentState.OnUpdate(); } }
private BaseState GetState(Definitions.StateName stateName) { foreach (BaseState state in _states) { if (state.GetStateName() == stateName) { return(state); } } return(null); }
public StateManager() { _desiredState = Definitions.StateName.Null; }
public void SwitchState(Definitions.StateName stateName) { _stateManager.desiredState = stateName; }