summaryrefslogtreecommitdiff
path: root/Assembly_CSharp/UI/UICameraController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assembly_CSharp/UI/UICameraController.cs')
-rw-r--r--Assembly_CSharp/UI/UICameraController.cs67
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);
+ }
+}