Added Instance:onEntityAdded and :onEntityRemoved

This commit is contained in:
Justin van der Leij 2018-08-28 16:08:09 +02:00
parent 294242814f
commit d53a931c3a

View file

@ -32,6 +32,8 @@ function Instance:addEntity(e)
error("bad argument #1 to 'Instance:addEntity' (Entity expected, got "..type(e)..")", 2) error("bad argument #1 to 'Instance:addEntity' (Entity expected, got "..type(e)..")", 2)
end end
self:onEntityAdded(e)
e.instances:add(self) e.instances:add(self)
self.entities:add(e) self.entities:add(e)
self:checkEntity(e) self:checkEntity(e)
@ -83,6 +85,8 @@ function Instance:flush()
for i = 1, self.systems.size do for i = 1, self.systems.size do
self.systems:get(i):__remove(e) self.systems:get(i):__remove(e)
end end
self:onEntityRemoved(e)
end end
end end
@ -210,7 +214,7 @@ function Instance:emit(eventName, ...)
end end
self:flush() self:flush()
local listeners = self.events[eventName] local listeners = self.events[eventName]
if listeners then if listeners then
@ -232,12 +236,22 @@ function Instance:clear()
for i = 1, self.entities.size do for i = 1, self.entities.size do
self.entities:get(i):destroy() self.entities:get(i):destroy()
end end
self:flush() self:flush()
return self return self
end end
--- Default callback for adding an Entity.
-- @param e The Entity that was added
function Instance:onEntityAdded(e)
end
--- Default callback for removing an Entity.
-- @param e The Entity that was removed
function Instance:onEntityRemoved(e)
end
return setmetatable(Instance, { return setmetatable(Instance, {
__call = function(_, ...) return Instance.new(...) end, __call = function(_, ...) return Instance.new(...) end,
}) })