diff options
Diffstat (limited to 'Client/Assembly-CSharp/AspectPosition.cs')
-rw-r--r-- | Client/Assembly-CSharp/AspectPosition.cs | 86 |
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; + } +} |