- edited description
Add Rect.Expand(Vector2)
Issue #131
resolved
It would be useful to have an Expand
extension method in Sirenix.Utilities.RectExtensions
to include a given Vector2
.
Example Implementation
// Returns a Rect expanded to contain the given position public static Rect Expand(this Rect rect, Vector2 pos) { Rect result = new Rect(rect); if (pos.x < result.xMin) result.xMin = pos.x; else if (pos.x > result.xMax) result.xMax = pos.x; if (pos.y < result.yMin) result.yMin = pos.y; else if (pos.y > result.yMax) result.yMax = pos.y; return result; }
Demo
[MenuItem("Demo/Run")] static void RunDemo() { Rect test = new Rect(new Vector2(1, 2), new Vector2(2, 3)); PrintRectBounds(test); // x[1:3], y[2:5] // Expand only x test = test.Expand(new Vector2(7, 4)); PrintRectBounds(test); // x[1:7], y[2:5] // Expand only y test = test.Expand(new Vector2(4, 8)); PrintRectBounds(test); // x[1:7], y[2:8] test.Expand(2); // Expand both x and y test = test.Expand(new Vector2(-2, -3)); PrintRectBounds(test); // x[-2:7], y[-3:8] } static void PrintRectBounds(Rect rect) { Debug.LogFormat("x[{0}:{1}], y[{2}:{3}]", rect.xMin, rect.xMax, rect.yMin, rect.yMax); }
Comments (7)
-
reporter -
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
- changed status to resolved
A fine idea. We've redubbed this ExpandTo, and included essentially this in the RectExtensions class. It'll be in the next patch.
- Log in to comment