private static GetSnapGuides ( |
||
parentSpace | ||
self | ||
parentRect | ||
rect | ||
axis | int | |
side | int | |
return | List |
private static List<SnapGuide> GetSnapGuides(Transform parentSpace, Transform self, RectTransform parentRect, RectTransform rect, int axis, int side)
{
List<SnapGuide> list = new List<SnapGuide>();
if (parentRect != null)
{
float t = kSidesAndMiddle[side];
float num2 = Mathf.Lerp(rect.anchorMin[axis], rect.anchorMax[axis], t);
list.Add(new SnapGuide(num2 * parentRect.rect.size[axis], GetGuideLineForRect(parentRect, axis, num2)));
float num3 = Mathf.Lerp(rect.anchorMin[axis], rect.anchorMax[axis], t);
if (t != num3)
{
list.Add(new SnapGuide(t * parentRect.rect.size[axis], false, GetGuideLineForRect(parentRect, axis, t)));
}
}
IEnumerator enumerator = parentSpace.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Transform current = (Transform) enumerator.Current;
if (current != self)
{
RectTransform component = current.GetComponent<RectTransform>();
bool safe = true;
if (component != null)
{
if (side == 0)
{
safe = component.anchorMin[axis] == rect.anchorMin[axis];
list.Add(new SnapGuide(component.GetRectInParentSpace().min[axis], safe, GetGuideLineForRect(component, axis, 0f)));
safe = component.anchorMax[axis] == rect.anchorMin[axis];
list.Add(new SnapGuide(component.GetRectInParentSpace().max[axis], safe, GetGuideLineForRect(component, axis, 1f)));
}
if (side == 2)
{
safe = component.anchorMax[axis] == rect.anchorMax[axis];
list.Add(new SnapGuide(component.GetRectInParentSpace().max[axis], safe, GetGuideLineForRect(component, axis, 1f)));
safe = component.anchorMin[axis] == rect.anchorMax[axis];
list.Add(new SnapGuide(component.GetRectInParentSpace().min[axis], safe, GetGuideLineForRect(component, axis, 0f)));
}
if (side == 1)
{
safe = (component.anchorMin[axis] - rect.anchorMin[axis]) == -(component.anchorMax[axis] - rect.anchorMax[axis]);
list.Add(new SnapGuide(component.GetRectInParentSpace().center[axis], safe, GetGuideLineForRect(component, axis, 0.5f)));
}
}
}
}
}
finally
{
IDisposable disposable = enumerator as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
return list;
}
internal static void CalculatePositionSnapValues(Transform parentSpace, Transform self, RectTransform parentRect, RectTransform rect) { for (int index = 0; index < 2; ++index) { RectTransformSnapping.s_SnapGuides[index].Clear(); } if ((Object)parentSpace == (Object)null) { return; } for (int axis = 0; axis < 2; ++axis) { for (int side = 0; side < RectTransformSnapping.kSidesAndMiddle.Length; ++side) { using (List <SnapGuide> .Enumerator enumerator = RectTransformSnapping.GetSnapGuides(parentSpace, self, parentRect, rect, axis, side).GetEnumerator()) { while (enumerator.MoveNext()) { SnapGuide current = enumerator.Current; current.value = RectTransformSnapping.GetGuideValueForRect(rect, current.value, axis, RectTransformSnapping.kSidesAndMiddle[side]); RectTransformSnapping.s_SnapGuides[axis].AddGuide(current); } } } } }