Rectangle
A rectangle defined by upper-left and lower-right corners. Generally assumed to be used within screen space, so the Y axis points down. This means the bottom of the rectangle is expected to be a higher value than the top.
Constructors
Constructor Name | Return Type | Description | Tags |
---|---|---|---|
Rectangle.New([number left, number top, number right, number bottom]) | Rectangle | Constructs a Rectangle with the given left , top , right , bottom values, defaults to (0, 0, 0, 0). | None |
Rectangle.New(Rectangle r) | Rectangle | Constructs a Rectangle with values from the given Rectangle. | None |
Rectangle.New(Vector4 v) | Rectangle | Constructs a Rectangle with left , top , right , and bottom values taken from the given Vector4's x , y , z , and w properties, respectively. | None |
Properties
Property Name | Return Type | Description | Tags |
---|---|---|---|
left | number | The position of the left edge of the rectangle. | Read-Write |
top | number | The position of the top edge of the rectangle. | Read-Write |
right | number | The position of the right edge of the rectangle. | Read-Write |
bottom | number | The position of the bottom edge of the rectangle. | Read-Write |
Functions
Function Name | Return Type | Description | Tags |
---|---|---|---|
GetSize() | Vector2 | Returns a Vector2 indicating the width and height of the rectangle. | None |
GetCenter() | Vector2 | Returns a Vector2 indicating the coordinates of the center of the rectangle. | None |
Examples
Example using:
New
left
right
top
bottom
GetSize
GetCenter
In this example, we search through all Static Mesh
objects to figure out the effective play area of the game. The Rectangle
type is used for storing the results, throughout the search, plus contains some helpful functions for calculating the size and center.
-- These variables will contain the results of the search
local bounds = Rectangle.New()
local minXObject = nil
local maxXObject = nil
local minYObject = nil
local maxYObject = nil
-- Grab the list of all Static mesh objects
local allObjects = World.FindObjectsByType("StaticMesh")
-- Search
for _, obj in ipairs(allObjects) do
local position = obj:GetWorldPosition()
if bounds.left > position.y or minYObject == nil then
bounds.left = position.y
minYObject = obj
end
if bounds.right < position.y or maxYObject == nil then
bounds.right = position.y
maxYObject = obj
end
if bounds.top > position.x or minXObject == nil then
bounds.top = position.x
minXObject = obj
end
if bounds.bottom < position.x or maxXObject == nil then
bounds.bottom = position.x
maxXObject = obj
end
end
-- Output results
print("Bounds = " .. tostring(bounds))
print()
print("Left-most object: ", minYObject.name, tostring(minYObject))
print("Right-most object: ", maxYObject.name, tostring(maxYObject))
print("Back-most object: ", minXObject.name, tostring(minXObject))
print("Front-most object: ", maxXObject.name, tostring(maxXObject))
print()
local playArea = bounds:GetSize()
local center = bounds:GetCenter()
print("Total play area: " .. tostring(playArea))
print("Center of map: " .. tostring(center))
See also: World.FindObjectsByType | CoreObject.GetWorldPosition | Vector3.x
Last update: April 22, 2022