Class Rect2i
A 2D axis-aligned bounding box using integer coordinates.
Remarks
The Rect2i built-in Variant type represents an axis-aligned rectangle in a 2D space, using integer coordinates. It is defined by its position and size, which are Vector2i. Because it does not rotate, it is frequently used for fast overlap tests (see Rect2i.intersects).
For floating-point coordinates, see Rect2.
Note: Negative values for size are not supported. With negative size, most Rect2i methods do not work correctly. Use abs to get an equivalent Rect2i with a non-negative size.
Note: In a boolean context, a Rect2i evaluates to false
if both position and size are zero (equal to ZERO). Otherwise, it always evaluates to true
.
See Also
Constructors
Rect2i
Rect2i Rect2i
Rect2i(Rect2i)
Constructs a Rect2i as a copy of the given Rect2i.
Rect2i Rect2i(Rect2i from)
Parameters
from
Rect2i
Rect2i(Rect2)
Constructs a Rect2i from a Rect2. The floating-point coordinates are truncated.
Rect2i Rect2i(Rect2 from)
Parameters
from
Rect2
Rect2i(Vector2i, Vector2i)
Constructs a Rect2i by position
and size
.
Rect2i Rect2i(Vector2i position, Vector2i size)
Parameters
Rect2i(int, int, int, int)
Rect2i Rect2i(int x, int y, int width, int height)
Parameters
Properties
end
The ending point. This is usually the bottom-right corner of the rectangle, and is equivalent to position + size
. Setting this point affects the size.
var end : Vector2i = Vector2i(0, 0)
Property Value
position
The origin point. This is usually the top-left corner of the rectangle.
var position : Vector2i = Vector2i(0, 0)
Property Value
size
The rectangle's width and height, starting from position. Setting this value also affects the end point.
Note: It's recommended setting the width and height to non-negative values, as most methods in Godot assume that the position is the top-left corner, and the end is the bottom-right corner. To get an equivalent rectangle with non-negative size, use abs.
var size : Vector2i = Vector2i(0, 0)
Property Value
Methods
abs
Qualifiers: const
Returns a Rect2i equivalent to this rectangle, with its width and height modified to be non-negative values, and with its position being the top-left corner of the rectangle.
var rect = Rect2i(25, 25, -100, -50)
var absolute = rect.abs() # absolute is Rect2i(-75, -25, 100, 50)
Note: It's recommended to use this method when size is negative, as most other methods in Godot assume that the position is the top-left corner, and the end is the bottom-right corner.
Rect2i abs
encloses(Rect2i)
Qualifiers: const
Returns true
if this Rect2i completely encloses another one.
bool encloses(Rect2i b)
Parameters
b
Rect2i
expand(Vector2i)
Qualifiers: const
Returns a copy of this rectangle expanded to align the edges with the given to
point, if necessary.
Rect2i expand(Vector2i to)
Parameters
to
Vector2i
get_area
Qualifiers: const
Returns the rectangle's area. This is equivalent to size.x * size.y
. See also has_area.
int get_area
get_center
Qualifiers: const
Returns the center point of the rectangle. This is the same as position + (size / 2)
.
Note: If the size is odd, the result will be rounded towards position.
Vector2i get_center
grow(int)
Qualifiers: const
Returns a copy of this rectangle extended on all sides by the given amount
. A negative amount
shrinks the rectangle instead. See also Rect2i.grow_individual and Rect2i.grow_side.
Rect2i grow(int amount)
Parameters
amount
int
grow_individual(int, int, int, int)
Qualifiers: const
Returns a copy of this rectangle with its left
, top
, right
, and bottom
sides extended by the given amounts. Negative values shrink the sides, instead. See also Rect2i.grow and Rect2i.grow_side.
Rect2i grow_individual(int left, int top, int right, int bottom)
Parameters
grow_side(int, int)
Qualifiers: const
Returns a copy of this rectangle with its side
extended by the given amount
(see Side constants). A negative amount
shrinks the rectangle, instead. See also Rect2i.grow and Rect2i.grow_individual.
Rect2i grow_side(int side, int amount)
Parameters
has_area
Qualifiers: const
Returns true
if this rectangle has positive width and height. See also get_area.
bool has_area
has_point(Vector2i)
Qualifiers: const
Returns true
if the rectangle contains the given point
. By convention, points on the right and bottom edges are not included.
Note: This method is not reliable for Rect2i with a negative size. Use abs first to get a valid rectangle.
bool has_point(Vector2i point)
Parameters
point
Vector2i
intersection(Rect2i)
Qualifiers: const
Returns the intersection between this rectangle and b
. If the rectangles do not intersect, returns an empty Rect2i.
var a = Rect2i(0, 0, 5, 10)
var b = Rect2i(2, 0, 8, 4)
var c = a.intersection(b) # c is Rect2i(2, 0, 3, 4)
Note: If you only need to know whether two rectangles are overlapping, use Rect2i.intersects, instead.
Rect2i intersection(Rect2i b)
Parameters
b
Rect2i
intersects(Rect2i)
Qualifiers: const
Returns true
if this rectangle overlaps with the b
rectangle. The edges of both rectangles are excluded.
bool intersects(Rect2i b)
Parameters
b
Rect2i
merge(Rect2i)
Qualifiers: const
Returns a Rect2i that encloses both this rectangle and b
around the edges. See also Rect2i.encloses.
Rect2i merge(Rect2i b)
Parameters
b
Rect2i
Operators
!= (Rect2i)
bool != (Rect2i right)
Parameters
right
Rect2i
== (Rect2i)
bool == (Rect2i right)
Parameters
right
Rect2i