summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/AspectPosition.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/AspectPosition.cs')
-rw-r--r--Client/Assembly-CSharp/AspectPosition.cs86
1 files changed, 86 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/AspectPosition.cs b/Client/Assembly-CSharp/AspectPosition.cs
new file mode 100644
index 0000000..60654df
--- /dev/null
+++ b/Client/Assembly-CSharp/AspectPosition.cs
@@ -0,0 +1,86 @@
+using System;
+using UnityEngine;
+
+public class AspectPosition : MonoBehaviour
+{
+ public Camera parentCam;
+
+ private const int LeftFlag = 1;
+
+ private const int RightFlag = 2;
+
+ private const int BottomFlag = 4;
+
+ private const int TopFlag = 8;
+
+ public Vector3 DistanceFromEdge;
+
+ public AspectPosition.EdgeAlignments Alignment;
+
+ public enum EdgeAlignments
+ {
+ RightBottom = 6,
+ LeftBottom = 5,
+ RightTop = 10,
+ Left = 1,
+ Right,
+ Top = 8,
+ Bottom = 4,
+ LeftTop = 9
+ }
+
+ private void OnEnable()
+ {
+ this.AdjustPosition();
+ ResolutionManager.ResolutionChanged += this.AdjustPosition;
+ }
+
+ private void OnDisable()
+ {
+ ResolutionManager.ResolutionChanged -= this.AdjustPosition;
+ }
+
+ public void AdjustPosition()
+ {
+ Camera camera = this.parentCam ? this.parentCam : Camera.main;
+ float aspect = camera.aspect;
+ this.AdjustPosition(camera.aspect);
+ }
+
+ public void AdjustPosition(float aspect)
+ {
+ float orthographicSize = (this.parentCam ? this.parentCam : Camera.main).orthographicSize;
+ base.transform.localPosition = AspectPosition.ComputePosition(this.Alignment, this.DistanceFromEdge, orthographicSize, aspect);
+ }
+
+ public static Vector3 ComputePosition(AspectPosition.EdgeAlignments alignment, Vector3 relativePos)
+ {
+ Camera main = Camera.main;
+ float aspect = main.aspect;
+ float orthographicSize = main.orthographicSize;
+ return AspectPosition.ComputePosition(alignment, relativePos, orthographicSize, aspect);
+ }
+
+ public static Vector3 ComputePosition(AspectPosition.EdgeAlignments alignment, Vector3 relativePos, float cHeight, float aspect)
+ {
+ float num = cHeight * aspect;
+ Vector3 vector = relativePos;
+ if ((alignment & AspectPosition.EdgeAlignments.Left) != (AspectPosition.EdgeAlignments)0)
+ {
+ vector.x -= num;
+ }
+ else if ((alignment & AspectPosition.EdgeAlignments.Right) != (AspectPosition.EdgeAlignments)0)
+ {
+ vector.x = num - vector.x;
+ }
+ if ((alignment & AspectPosition.EdgeAlignments.Bottom) != (AspectPosition.EdgeAlignments)0)
+ {
+ vector.y -= cHeight;
+ }
+ else if ((alignment & AspectPosition.EdgeAlignments.Top) != (AspectPosition.EdgeAlignments)0)
+ {
+ vector.y = cHeight - vector.y;
+ }
+ return vector;
+ }
+}