3 using System.Collections.Generic;
12 public enum AlignmentH {
18 public enum AlignmentV {
28 public AlignmentH alignHorizontal;
29 public AlignmentV alignVertical;
32 screen = Screen.center;
33 alignHorizontal = AlignmentH.stretch;
34 alignVertical = AlignmentV.stretch;
43 public Rect sizeOfUIScene {
private set;
get; }
45 public Vector3 activeScale =
new Vector3 (1.05f, 1.05f, 1.05f);
46 public Vector3 inactiveScale =
new Vector3 (1f, 1f, 1f);
52 public Screen activeScreen {
private set;
get; }
54 private List<Widget> widgets =
new List<Widget>();
56 public int statusBarHeight = 60;
60 activeScreen = Screen.center;
63 public void updateDimensions()
65 Vector2 max =
new Vector2 (1f * UI.Core.instance.aspectRatio, 1f) / UI.Core.instance.UIScale;
68 sizeOfUIScene =
new Rect (min, max - min);
71 leftScreen = Platform.instance.getScreenDimensions ( Screen.left );
72 rightScreen = Platform.instance.getScreenDimensions ( Screen.right );
73 centerScreen = Platform.instance.getScreenDimensions ( Screen.center );
101 public void addWidget(
Widget newWidget )
103 if (!widgets.Contains (newWidget)) {
104 widgets.Add (newWidget);
106 setWidgetPosition (newWidget, newWidget.layoutPosition);
108 public void removeWidget(
Widget widget )
110 if (widgets.Contains (widget)) {
111 widgets.Remove (widget);
117 if (!widgets.Contains (widget)) {
120 RectTransform widgetRect = widget.GetComponent<RectTransform> ();
123 if (newPosition.screen == Screen.left)
124 parentRect = leftScreen;
125 else if (newPosition.screen == Screen.right)
126 parentRect = rightScreen;
128 parentRect = centerScreen;
130 Vector2 newPos =
new Vector2();
131 Vector2 newSize =
new Vector2 ();
132 if (newPosition.alignHorizontal == AlignmentH.stretch) {
133 newPos.x = parentRect.center.x;
134 newSize.x = parentRect.width;
135 }
else if (newPosition.alignHorizontal == AlignmentH.left) {
136 newPos.x = parentRect.min.x + widgetRect.rect.width * 0.5f;
137 newSize.x = widgetRect.rect.width;
138 }
else if (newPosition.alignHorizontal == AlignmentH.right) {
139 newPos.x = parentRect.max.x - widgetRect.rect.width * 0.5f;
140 newSize.x = widgetRect.rect.width;
142 newPos.x = parentRect.center.x;
143 newSize.x = widgetRect.rect.width;
145 if (newPosition.alignVertical == AlignmentV.stretch) {
146 newPos.y = parentRect.center.y;
147 newSize.y = parentRect.height;
148 }
else if (newPosition.alignVertical == AlignmentV.bottom) {
149 newPos.y = parentRect.min.y + widgetRect.rect.height * 0.5f;
150 newSize.y = widgetRect.rect.height;
151 }
else if (newPosition.alignVertical == AlignmentV.top) {
152 newPos.y = parentRect.max.y - widgetRect.rect.height * 0.5f;
153 newSize.y = widgetRect.rect.height;
155 newPos.y = parentRect.center.y;
156 newSize.y = widgetRect.rect.height;
160 widgetRect.anchoredPosition = newPos;
161 widgetRect.sizeDelta = newSize;
164 if (newPosition.screen == activeScreen) {
167 widget.unHighlight ();
175 Vector2 pixelPos = sizeOfUIScene.min +
new Vector2 (pos.x * sizeOfUIScene.width, pos.y * sizeOfUIScene.height);
177 bool isInLeftScreen =
false;
178 bool isInCenterScreen =
false;
179 bool isInRightScreen =
false;
182 if (pixelPos.x >= leftScreen.min.x && pixelPos.x <= leftScreen.max.x) {
183 isInLeftScreen =
true;
185 if (pixelPos.x >= centerScreen.min.x && pixelPos.x <= centerScreen.max.x) {
186 isInCenterScreen =
true;
188 if (pixelPos.x >= rightScreen.min.x && pixelPos.x <= rightScreen.max.x) {
189 isInRightScreen =
true;
193 if (isInLeftScreen && ! isInCenterScreen && ! isInRightScreen) {
194 setActiveScreen ( Screen.left );
195 }
else if (isInCenterScreen && ! isInLeftScreen && ! isInRightScreen) {
196 setActiveScreen (Screen.center);
197 }
else if (isInRightScreen && ! isInLeftScreen && ! isInCenterScreen) {
198 setActiveScreen( Screen.right );
202 public void setActiveScreen( Screen s )
205 foreach(
Widget w
in widgets )
207 if (w.layoutScreen == s) {
215 public Rect getStatusBarPosition()
217 Rect rect =
new Rect (
219 -(sizeOfUIScene.height - statusBarHeight)*0.5f,
221 statusBarHeight - 4f);
225 public void closeAllWidgets()
228 if (widgets.Count == 0)
233 widgets [0].gameObject.SetActive (
false);
void setLookAtPosition(Vector2 pos)