public void EnterState(FSMStateType stateType) { if (_fsmStates.ContainsKey(stateType)) { AbstractFSMState nextState = _fsmStates[stateType]; EnterState(nextState); } }
public void EnterState(AbstractFSMState nextState) { if (nextState == null) { return; } if (currentState != null) { currentState.ExitState(); } currentState = nextState; currentState.InitializeState(this, npc, navMeshAgent, ai_Input); currentState.EnterState(); }
public void Awake() { currentState = null; ai_Input = GetComponent <Ai_Input>(); _fsmStates = new Dictionary <FSMStateType, AbstractFSMState>(); navMeshAgent = this.GetComponent <NavMeshAgent>(); npc = this.GetComponent <NPC>(); navMeshAgent.updatePosition = false; navMeshAgent.updateRotation = false; foreach (AbstractFSMState state in _validStates) { _fsmStates.Add(state.StateType, state); } }