- 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