private void StartNextTask() { _currentTask = _taskQ.Dequeue(); TaskInProgress = true; switch (_currentTask.type) { case TaskType.LookAt: _unitRotater.LookAt(_currentTask.position); break; case TaskType.Move: _unitMover.MoveUnit(_currentTask.position); break; case TaskType.Interact: _unitInteractor.Interact(_currentTask.position); break; default: throw new ArgumentOutOfRangeException(); } }