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(); } }
public void EndState(State stateToEnd) { if (stateToEnd != null) { stateToEnd.OnExit_State(); } if (stateToEnd is HighPriorityState) { HighPriorityState = null; } if (stateToEnd is StateForMechanics) { ActiveStateMechanic = null; } else if (stateToEnd is StateForMovement) { ActiveStateMovement = null; } }