using System; using UnityEngine; namespace Artngame.SKYMASTER.PlanetCreator { public class FlyCameraA : MonoBehaviour { public float cameraSensitivity = 90f; public float rollSpeed = 4f; public float normalMoveSpeed = 10f; public float slowMoveFactor = 0.25f; public float fastMoveFactor = 3f; public float speedMultiplySpeed = 2f; public float speedMultiply = 1f; public PlanetCreator planetCreator; private bool cursorLocked = true; private Quaternion rotation = Quaternion.identity; private void Start() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } private void Update() { if (cursorLocked) { base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse X") * cameraSensitivity, Vector3.up); base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse Y") * cameraSensitivity, Vector3.left); Vector3 vector; if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { vector = base.transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply; vector += base.transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply; } else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) { vector = base.transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply; vector += base.transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply; } else { vector = base.transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply; vector += base.transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply; } base.transform.position += vector; speedMultiply *= 1f + Input.GetAxis("Mouse ScrollWheel") * speedMultiplySpeed; speedMultiply = Mathf.Max(0f, speedMultiply); if (Input.GetKey(KeyCode.Q)) { base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.back); } if (Input.GetKey(KeyCode.E)) { base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.forward); } } if (Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape)) { cursorLocked = !cursorLocked; Cursor.lockState = (cursorLocked ? CursorLockMode.Locked : CursorLockMode.None); Cursor.visible = !cursorLocked; } if (Input.GetKeyDown(KeyCode.C)) { ScreenCapture.CaptureScreenshot(Application.dataPath.Replace("Assets", "Screenshots") + $"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-tt}" + ".png", 2); } if (Input.GetKeyDown(KeyCode.X)) { Application.Quit(); } } private void OnDrawGizmos() { if (!(planetCreator == null)) { PlanetChunkProperties nearestChunkProperties = planetCreator.GetNearestChunkProperties(base.transform.position); if (nearestChunkProperties != null) { Gizmos.DrawWireCube(nearestChunkProperties.Bounds.center, nearestChunkProperties.Bounds.size); } } } } }