Code: Select all
local _private = {}
function Entity:initialize()
-- settings
self.x = 0
self.y = 0
self.active = true
self.visible = true
-- tables
self.tags = {}
self.graphics = {}
-- parent/child stuff
self._parent = nil
self._children = {}
-- general objects
self._world = nil
-- private stuff for the entity linked lists
self._updateNext = nil
self._updatePrev = nil
self._drawNext = nil
self._drawPrev = nil
_private[self] = {}
_private[self].layer = nil
end
Code: Select all
function Entity:setLayer(layer)
if not layer then
_private[self].layer = nil
return
elseif layer == _private[self].layer then
return
end
_private[self].layer = layer
self:getLayer()._entities:push(self)
end
Code: Select all
function World:add(...)
for _, v in ipairs(arg) do
if not v._world then -- if it's not already added
v._world = self
_private[self].updateList:push(v)
v:setLayer(_private[self].layers[1]) -- set to the default layer
v:added()
end
end
_private[self].count = _private[self].count + #arg
end