using UnityEngine; namespace UnityEngine { internal static class RectExtensions { internal static bool Contains(this Rect r, Rect other) { return r.xMin <= other.xMin && r.xMax >= other.xMax && r.yMin <= other.yMin && r.yMax >= other.yMax; } internal static bool Intersects(this Rect r, Rect other) { return r.xMin < other.xMax && r.xMax > other.xMin && r.yMin < other.yMax && r.yMax > other.yMin; } internal static Rect Intersect(this Rect rect, Rect other) { float xMin = Mathf.Max(rect.xMin, other.xMin); float xMax = Mathf.Min(rect.xMax, other.xMax); float yMin = Mathf.Max(rect.yMin, other.yMin); float yMax = Mathf.Min(rect.yMax, other.yMax); // If there's no intersection, return a rect with zero width/height if (xMax < xMin || yMax < yMin) return new Rect(0, 0, 0, 0); return new Rect(xMin, yMin, xMax - xMin, yMax - yMin); } internal static Rect Inflate(this Rect rect, float amount) { return rect.Inflate(amount, amount); } internal static Rect Inflate(this Rect rect, float xAmount, float yAmount) { return new Rect( rect.xMin - xAmount, rect.yMin - yAmount, rect.width + (2 * xAmount), rect.height + (2 * yAmount)); } } }