diff options
Diffstat (limited to 'Assembly_CSharp/UI/UICameraController.cs')
-rw-r--r-- | Assembly_CSharp/UI/UICameraController.cs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Assembly_CSharp/UI/UICameraController.cs b/Assembly_CSharp/UI/UICameraController.cs new file mode 100644 index 0000000..c309492 --- /dev/null +++ b/Assembly_CSharp/UI/UICameraController.cs @@ -0,0 +1,67 @@ +using UnityEngine; + +public class UICameraController : MonoBehaviour +{ + [SerializeField] + private float cameraSpeed = 10f; + + [SerializeField] + private float cameraZoom = 1f; + + private Vector3 oldPos; + + private void Start() + { + } + + private void Update() + { + UpdateMovement(); + UpdateZoom(); + } + + public void ResetPosition() + { + base.transform.localPosition = Vector3.zero; + cameraZoom = 1f; + base.transform.localScale = Vector3.one * cameraZoom; + } + + private Vector3 ViewPointToPixels(Vector3 view) + { + return new Vector3(view.x * (float)Camera.main.scaledPixelWidth, view.y * (float)Camera.main.scaledPixelHeight, 0f); + } + + private void UpdateMovement() + { + if (Input.GetMouseButtonDown(1)) + { + oldPos = ViewPointToPixels(Camera.main.ScreenToViewportPoint(Input.mousePosition)); + } + if (Input.GetMouseButton(1)) + { + Vector3 vector = ViewPointToPixels(Camera.main.ScreenToViewportPoint(Input.mousePosition)); + Vector3 translation = vector - oldPos; + translation.z = 0f; + base.transform.Translate(translation); + oldPos = vector; + } + else + { + Vector3 vector2 = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0f); + if (vector2.sqrMagnitude > 0.1f) + { + base.transform.Translate(-vector2.normalized * Time.deltaTime * cameraSpeed * (6f / (5f + cameraZoom))); + } + } + } + + private void UpdateZoom() + { + float num = cameraZoom; + cameraZoom = Mathf.Clamp(cameraZoom + Input.mouseScrollDelta.y / 10f, 0.5f, 2f); + base.transform.localScale = Vector3.one * cameraZoom; + base.transform.localPosition *= cameraZoom / num; + base.transform.localPosition += new Vector3(0f, 0.5f * (float)Camera.main.scaledPixelHeight * (cameraZoom - num), 0f); + } +} |