public void switchToState(eUnitState newState, int targetID = Utilities.INVALID_ID, Vector3 position = new Vector3()) { m_targetID = targetID; m_currentState = newState; switch (newState) { case eUnitState.AwaitingDecision: case eUnitState.AttackingEnemy: m_tankMovement.stop(); break; case eUnitState.MovingToNewPosition: m_tankMovement.moveTo(position); break; case eUnitState.SetDestination: { m_currentState = eUnitState.MovingToNewPosition; m_tankMovement.moveTo(position); } break; case eUnitState.SetAttackDestination: { m_currentState = eUnitState.AttackMovingToNewPosition; m_tankMovement.moveTo(position); } break; case eUnitState.SetDestinationToSafePosition: { m_tankMovement.moveTo(Pathfinder.Instance.getSafePosition(transform.position, (int)m_unit.getFactionName(), m_unit.getScaredValue())); m_currentState = eUnitState.MovingToNewPosition; } break; } }