Ejemplo n.º 1
0
        private void OnReadyToChangeState(AIState state)
        {
            _currentState.OnReadyToChangeState -= OnReadyToChangeState;
            AIState nextState = state;

            if (_queuedAIStates.Count > 0)
            {
                nextState = _queuedAIStates.Dequeue();
            }
            _currentState?.Exit(nextState);
            _currentState = nextState;
            _currentState.OnReadyToChangeState += OnReadyToChangeState;
            _currentState?.Enter();
        }
Ejemplo n.º 2
0
 public virtual void Exit(AIState nextState)
 {
     // is this state on the next state's path?
     if (nextState.IsStateOnPath(this))
     {
         // if so, no need to exit this state
         return;
     }
     if (_parentState != null)
     {
         _parentState.Exit(nextState);
         _parentState.OnReadyToChangeState -= FireReadyToChangeState;
     }
     Active = false;
 }