void LateUpdate()
    {
        if (moveLocations.Count == 0)
        {
            return;
        }

        if (objectInitialized)
        {
            //if ((DateTime.Now - waitStartedTime).TotalMilliseconds >= waitTime * 1000)
            if (GameTimer.GameTicked)
            {
                if (waitStarted)
                {
                    waitUnits--;

                    if (waitUnits <= 0)
                    {
                        waitStarted = false;
                    }
                }
            }

            if (!waitStarted)
            {
                currentLocation = GetNextMoveDirection(currentLocation, rotationDirection);
                camImage.transform.localEulerAngles = GetRotationForDirection(currentLocation);
                waitStarted = true;
                waitUnits   = waitTime;
            }
        }
    }
    void ResetEnemy()
    {
        waitStarted = true;
        waitUnits   = waitTime;

        currentLocation = startLocation;
        camImage.transform.localEulerAngles = GetRotationForDirection(currentLocation);
    }
    public CameraMoveLocation GetNextMoveDirection(CameraMoveLocation currentDirection, CameraRotationDirection rotationDirection)
    {
        CameraMoveLocation result = CameraMoveLocation.None;

        switch (currentDirection)
        {
        case CameraMoveLocation.Left:
            if (rotationDirection == CameraRotationDirection.Clockwise)
            {
                result = CameraMoveLocation.Top;
            }
            else
            {
                result = CameraMoveLocation.Bottom;
            }
            break;

        case CameraMoveLocation.Right:
            if (rotationDirection == CameraRotationDirection.Clockwise)
            {
                result = CameraMoveLocation.Bottom;
            }
            else
            {
                result = CameraMoveLocation.Top;
            }
            break;

        case CameraMoveLocation.Top:
            if (rotationDirection == CameraRotationDirection.Clockwise)
            {
                result = CameraMoveLocation.Right;
            }
            else
            {
                result = CameraMoveLocation.Left;
            }
            break;

        case CameraMoveLocation.Bottom:
            if (rotationDirection == CameraRotationDirection.Clockwise)
            {
                result = CameraMoveLocation.Left;
            }
            else
            {
                result = CameraMoveLocation.Right;
            }
            break;
        }

        if (!moveLocations.Contains(result))
        {
            result = GetNextMoveDirection(result, rotationDirection);
        }

        return(result);
    }
    public void Initialize()
    {
        objectInitialized = true;

        waitStarted = true;
        waitUnits   = waitTime;

        currentLocation = startLocation;
        camImage.transform.localEulerAngles = GetRotationForDirection(currentLocation);
    }
    public Vector3 GetRotationForDirection(CameraMoveLocation moveDirection)
    {
        switch (moveDirection)
        {
        case CameraMoveLocation.Left:
            return(new Vector3(0, 0, 90));

        case CameraMoveLocation.Right:
            return(new Vector3(0, 0, -90));

        case CameraMoveLocation.Top:
            return(Vector3.zero);

        case CameraMoveLocation.Bottom:
            return(new Vector3(0, 0, 180));
        }

        return(Vector3.zero);
    }
 public void SetStartLocation(CameraMoveLocation startLocation)
 {
     this.startLocation = startLocation;
 }