using UnityEngine; using UnityEngine.Serialization; namespace ARLocation.Utils { public class DevCameraController : MonoBehaviour { /// /// The mouse look/rotation sensitivity. /// public float MouseSensitivity = 1.0f; /// /// The walking speed /// [FormerlySerializedAs("speed")] public float Speed = 1.0f; // Current orientation parameters float rotationY; float rotationX; // The initial location Location firstLocation; // The accumulated lat/lng displacement private Vector3 accumDelta; // Use this for initialization void Awake() { // If we are not running on a device, make this the main // camera, else, self-destruct. if (!Misc.IsARDevice()) { var arCamera = GameObject.Find("AR Camera"); if (arCamera != null) { arCamera.tag = "Untagged"; arCamera.SetActive(false); } GetComponent().gameObject.SetActive(true); GameObject o; (o = gameObject).AddComponent(); o.tag = "MainCamera"; ARLocationManager.Instance.WaitForARTrackingToStart = false; } else { Destroy(gameObject); } var rotation = transform.rotation; rotationX = rotation.eulerAngles.x; rotationY = rotation.eulerAngles.y; } // Update is called once per frame void Update() { var forward = Vector3.ProjectOnPlane(transform.forward, new Vector3(0, 1, 0)); var initialPosition = transform.position; var spd = Speed; if (Input.GetKey(KeyCode.LeftShift)) { spd *= 2; } if (Input.GetKey("w")) { transform.Translate( forward * spd, Space.World ); } if (Input.GetKey("s")) { transform.Translate( -forward * spd, Space.World ); } if (Input.GetKey("d")) { transform.Translate( transform.right * spd, Space.World ); } if (Input.GetKey("a")) { transform.Translate( -transform.right * spd, Space.World ); } if (Input.GetKey("up")) { transform.Translate( transform.up * spd, Space.World ); } var finalPosition = transform.position; var delta = finalPosition - initialPosition; var locMngr = ARLocationProvider.Instance; if (firstLocation == null) { firstLocation = locMngr.CurrentLocation.ToLocation(); } accumDelta += delta * 0.00001f; //locMngr.UpdateMockLocation(new Location( // firstLocation.latitude + accumDelta.z, // firstLocation.longitude + accumDelta.x, // 0 //)); rotationY += Input.GetAxis("Mouse X") * MouseSensitivity; rotationX -= Input.GetAxis("Mouse Y") * MouseSensitivity; transform.localRotation = Quaternion.Euler(rotationX, rotationY, 0); } } }