summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/AspectPosition.cs
blob: 60654dfdb85f795edb8dac37918868084e44f09a (plain)
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;
	}
}