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; } }