1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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;
}
}
|