summaryrefslogtreecommitdiff
path: root/examples/resources/lib/rectangle.lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/resources/lib/rectangle.lua')
-rw-r--r--examples/resources/lib/rectangle.lua81
1 files changed, 62 insertions, 19 deletions
diff --git a/examples/resources/lib/rectangle.lua b/examples/resources/lib/rectangle.lua
index 4b8d53b..edb06e2 100644
--- a/examples/resources/lib/rectangle.lua
+++ b/examples/resources/lib/rectangle.lua
@@ -44,33 +44,33 @@ Rectangle.meta = {
}
function Rectangle:new( x, y, width, height )
- if type( x ) == "table" then
- x, y, width, height = table.unpack( x )
- elseif type( x ) == "nil" then
- x, y, width, height = 0, 0, 0, 0
- end
+ local object = setmetatable( {}, Rectangle.meta )
+
+ object.x = x or 0
+ object.y = y or 0
+ object.width = width or 0
+ object.height = height or 0
+ return object
+end
+
+function Rectangle:newT( t )
local object = setmetatable( {}, Rectangle.meta )
- object.x = x
- object.y = y
- object.width = width
- object.height = height
+ object.x, object.y, object.width, object.height = table.unpack( t )
- return object
+ return object
end
function Rectangle:set( x, y, width, height )
- if type( x ) == "table" then
- x, y, width, height = table.unpack( x )
- elseif type( x ) == "nil" then
- x, y, width, height = 0, 0, 0, 0
- end
+ self.x = x or 0
+ self.y = y or 0
+ self.width = width or 0
+ self.height = height or 0
+end
- self.x = x
- self.y = y
- self.width = width
- self.height = height
+function Rectangle:setT( t )
+ self.x, self.y, self.width, self.height = table.unpack( t )
end
function Rectangle:arr()
@@ -153,4 +153,47 @@ function Rectangle:getCollisionRec( rec )
return Rectangle:new( RL.GetCollisionRec( self, rec ) )
end
+local TEMP_COUNT = 100
+local tempPool = {}
+local curTemp = 1
+
+for _ = 1, TEMP_COUNT do
+ table.insert( tempPool, Rectangle:new( 0, 0, 0, 0 ) )
+end
+
+-- Uses pre generated objects to avoid "slow" table generation.
+function Rectangle:temp( x, y, width, height )
+ local object = tempPool[ curTemp ]
+ curTemp = curTemp + 1
+
+ if TEMP_COUNT < curTemp then
+ curTemp = 1
+ end
+
+ object.x = x or 0
+ object.y = y or 0
+ object.width = width or 0
+ object.height = height or 0
+
+ return object
+end
+
+-- Uses pre generated objects to avoid "slow" table generation.
+function Rectangle:tempT( t )
+ local object = tempPool[ curTemp ]
+ curTemp = curTemp + 1
+
+ if TEMP_COUNT < curTemp then
+ curTemp = 1
+ end
+
+ object.x, object.y, object.width, object.height = table.unpack( t )
+
+ return object
+end
+
+function Rectangle:getTempId()
+ return curTemp
+end
+
return Rectangle