Пример #1
0
    // 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();
        }
    }
Пример #2
0
    private BaseState GetState(Definitions.StateName stateName)
    {
        foreach (BaseState state in _states)
        {
            if (state.GetStateName() == stateName)
            {
                return(state);
            }
        }

        return(null);
    }
Пример #3
0
 public StateManager()
 {
     _desiredState = Definitions.StateName.Null;
 }
Пример #4
0
 public void SwitchState(Definitions.StateName stateName)
 {
     _stateManager.desiredState = stateName;
 }