private void SetMovementPathToNewExploreLocation(WorldView worldView)
        {
            // find closest unexplored cell
            var cellGrid = worldView.CellGrid;
            var cell     = cellGrid.GetClosestUnexploredCell(StackView.LocationHex);

            if (cell == Cell.Empty)
            {
                // all locations explored
                StackView.SetStatusToNone();
                StackView.Unselect();
            }

            // find best path to unexplored cell
            var path = MovementPathDeterminer.DetermineMovementPath(StackView.HexLibrary, StackView.Stack, StackView.LocationHex, cell.ToPoint, cellGrid);

            if (path.Count == 0)
            {
                // could not find a path to location
                StackView.SetStatusToNone();
                StackView.Unselect();
            }

            path = path.RemoveLast(StackView.SightRange);
            StackView.MovementPath = path;
        }
        internal override void Update(WorldView worldView, float deltaTime)
        {
            var cantMove = MovementCountdownTimeHasExpired() ? MoveStackToNextCell() : MoveStackBetweenCells(deltaTime);
            var canMove  = !cantMove;

            worldView.Camera.LookAtPixel(LocationInWorld);

            if (canMove)
            {
                return;
            }

            if (StackView.StackHasMovementPoints)
            {
                StackView.Select();
            }
            else
            {
                StackView.Unselect();
                StackView.SelectNext();
            }
        }
        internal override void Update(WorldView worldView, float deltaTime)
        {
            var cantMove = MovementCountdownTimeHasExpired() ? MoveStackToNextCell() : MoveStackBetweenCells(deltaTime);
            var canMove  = !cantMove;

            worldView.Camera.LookAtPixel(LocationInWorld);

            if (canMove)
            {
                return;
            }

            if (StackView.StackHasMovementPoints) // either reached final destination or may not move into cell
            {
                SetMovementPathToNewExploreLocation(worldView);
            }
            else // run out of movement points
            {
                StackView.Unselect();
                StackView.SelectNext();
            }
        }