// Curved World <http://u3d.as/1W8h>
// Copyright (c) Amazing Assets <https://amazingassets.world>
 
using UnityEngine;

#if USE_INPUT_SYSTEM && ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
#endif


namespace AmazingAssets.CurvedWorld.Examples
{
    public class CameraPan : MonoBehaviour
    {
        public float moveSpeed = 1;

#if USE_INPUT_SYSTEM && ENABLE_INPUT_SYSTEM
        Key moveLeft = Key.A;
        Key moveRight = Key.D;
        Key moveUp = Key.W;
        Key moveDown = Key.S;
#else
        KeyCode moveLeft = KeyCode.A;
        KeyCode moveRight = KeyCode.D;
        KeyCode moveUp = KeyCode.W;
        KeyCode moveDown = KeyCode.S;
#endif

        void Update()
        {
            bool mLeft = ExampleInput.GetKey(moveLeft);
            bool mRight = ExampleInput.GetKey(moveRight);
            bool mUp = ExampleInput.GetKey(moveUp);
            bool mDown = ExampleInput.GetKey(moveDown);

            float h = 0;
            if ((mLeft && mRight) || (!mLeft && !mRight))
                h = 0;
            else if (mLeft)
                h = -1;
            else if (mRight)
                h = 1;

            float v = 0;
            if ((mUp && mDown) || (!mUp && !mDown))
                v = 0;
            else if (mUp)
                v = 1;
            else if (mDown)
                v = -1;



            Vector3 newPos = transform.position + new Vector3(h, 0, v) * moveSpeed * Time.deltaTime;

            newPos.x = Mathf.Clamp(newPos.x, -35, 35f);
            newPos.z = Mathf.Clamp(newPos.z, -35, 35f);


            transform.position = newPos;
        }
    }
}
