Skip to content

Commit 18cf354

Browse files
committed
Align object to parent when only one object is selected
1 parent 2b0a580 commit 18cf354

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

Editor/AlignTools.cs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,26 @@ public static void ShrinkHeight()
8080
private static void AlignUI(CalcValueOne calcValue, ApplyValue applyValue)
8181
{
8282
var list = Utils.GetRectTransforms();
83-
if (list.Count < 2) return;
83+
if (list.Count < 1) return;
8484

8585
float v = 0f;
8686
Vector3[] corners = new Vector3[4];
87-
for (var i = 0; i < list.Count; i++)
87+
if (list.Count == 1)
8888
{
89-
list[i].GetWorldCorners(corners);
90-
calcValue(corners, 0 == i, ref v);
89+
var parent = list[0].parent as RectTransform;
90+
if (parent == null) return;
91+
parent.GetWorldCorners(corners);
92+
calcValue(corners, true, ref v);
93+
}
94+
else
95+
{
96+
for (var i = 0; i < list.Count; i++)
97+
{
98+
list[i].GetWorldCorners(corners);
99+
calcValue(corners, 0 == i, ref v);
100+
}
91101
}
102+
92103
foreach (var rt in list)
93104
{
94105
var pos = applyValue(rt, v);
@@ -100,15 +111,26 @@ private static void AlignUI(CalcValueOne calcValue, ApplyValue applyValue)
100111
private static void AlignCenterUI(CalcValueTwo calcValue, ApplyValue applyValue)
101112
{
102113
var list = Utils.GetRectTransforms();
103-
if (list.Count < 2) return;
114+
if (list.Count < 1) return;
104115

105116
float minV = 0f, maxV = 0f;
106117
Vector3[] corners = new Vector3[4];
107-
for (var i = 0; i < list.Count; i++)
118+
if (list.Count == 1)
108119
{
109-
list[i].GetWorldCorners(corners);
110-
calcValue(corners, 0 == i, ref minV, ref maxV);
120+
var parent = list[0].parent as RectTransform;
121+
if (parent == null) return;
122+
parent.GetWorldCorners(corners);
123+
calcValue(corners, true, ref minV, ref maxV);
124+
}
125+
else
126+
{
127+
for (var i = 0; i < list.Count; i++)
128+
{
129+
list[i].GetWorldCorners(corners);
130+
calcValue(corners, 0 == i, ref minV, ref maxV);
131+
}
111132
}
133+
112134
float v = (minV + maxV) * 0.5f;
113135
foreach (var rt in list)
114136
{

0 commit comments

Comments
 (0)