public void ForceSwapState(State newState) { Debug.Log("Swap state"); if (newState is HighPriorityState) { if (HighPriorityState != null) { HighPriorityState.OnExit_State(); } HighPriorityState = (HighPriorityState)newState; HighPriorityState.OnEnter_State(); } if (newState is StateForMechanics) { if (ActiveStateMechanic != null) { ActiveStateMechanic.OnExit_State(); } ActiveStateMechanic = (StateForMechanics)newState; ActiveStateMechanic.OnEnter_State(); } else if (newState is StateForMovement) { if (ActiveStateMovement != null) { ActiveStateMovement.OnExit_State(); } ActiveStateMovement = (StateForMovement)newState; ActiveStateMovement.OnEnter_State(); } }
// Update is called once per frame void FixedUpdate() { if (HighPriorityState != null) { HighPriorityState.WhileActive_State(); } else { if (ActiveStateMechanic != null) { ActiveStateMechanic.WhileActive_State(); } if (ActiveStateMovement != null) { ActiveStateMovement.WhileActive_State(); } } }