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();
        }
    }