Files
2026-06-04 11:42:34 +02:00

62 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
namespace UnityEngine.UI
{
// Token: 0x02000083 RID: 131
public static class Clipping
{
// Token: 0x060004EE RID: 1262 RVA: 0x0001A650 File Offset: 0x00018A50
public static Rect FindCullAndClipWorldRect(List<RectMask2D> rectMaskParents, out bool validRect)
{
Rect rect;
if (rectMaskParents.Count == 0)
{
validRect = false;
rect = default(Rect);
}
else
{
Rect rect2 = rectMaskParents[0].canvasRect;
for (int i = 0; i < rectMaskParents.Count; i++)
{
rect2 = Clipping.RectIntersect(rect2, rectMaskParents[i].canvasRect);
}
bool flag = rect2.width <= 0f || rect2.height <= 0f;
if (flag)
{
validRect = false;
rect = default(Rect);
}
else
{
Vector3 vector = new Vector3(rect2.x, rect2.y, 0f);
Vector3 vector2 = new Vector3(rect2.x + rect2.width, rect2.y + rect2.height, 0f);
validRect = true;
rect = new Rect(vector.x, vector.y, vector2.x - vector.x, vector2.y - vector.y);
}
}
return rect;
}
// Token: 0x060004EF RID: 1263 RVA: 0x0001A774 File Offset: 0x00018B74
private static Rect RectIntersect(Rect a, Rect b)
{
float num = Mathf.Max(a.x, b.x);
float num2 = Mathf.Min(a.x + a.width, b.x + b.width);
float num3 = Mathf.Max(a.y, b.y);
float num4 = Mathf.Min(a.y + a.height, b.y + b.height);
Rect rect;
if (num2 >= num && num4 >= num3)
{
rect = new Rect(num, num3, num2 - num, num4 - num3);
}
else
{
rect = new Rect(0f, 0f, 0f, 0f);
}
return rect;
}
}
}