示例#1
0
 // enter state behaviour
 public virtual void Enter(AIStateInitializationData initData = null)
 {
     // if has parent and parent is not active, enter parent state
     if (_active)
     {
         return;
     }
     if (ParentState != null)
     {
         ParentState.OnReadyToTransitionState += SetReadyToTransition;
         ParentState.Enter(initData);
     }
     OnEnter();
 }
 // listener that changes AI State
 private void OnReadyToTransitionState(AIState nextState, AIStateInitializationData initData = null)
 {
     // exit the current state
     if (_currentState != null)
     {
         _currentState.Exit(nextState);
         _currentState.OnReadyToTransitionState -= OnReadyToTransitionState;
     }
     // if there is a state queue override, continue the queue instead
     if (_queuedStateList.Count != 0)
     {
         AIStateDataEntry entry = _queuedStateList.Dequeue();
         SetNextState(entry.State, entry.Data);
         return;
     }
     SetNextState(nextState, initData);
 }
示例#3
0
 // fires ready to transition event for AI State Machine listener
 protected void SetReadyToTransition(AIState state, AIStateInitializationData initData = null)
 {
     OnReadyToTransitionState?.Invoke(state, initData);
 }
 private void SetNextState(AIState state, AIStateInitializationData initData = null)
 {
     _currentState = state;
     _currentState.OnReadyToTransitionState += OnReadyToTransitionState;
     _currentState.Enter(initData);
 }