Fixed a small removal issue

This commit is contained in:
Justin van der Leij 2018-07-30 12:30:05 +02:00
parent 404a6b1c6b
commit acc5830cc6
2 changed files with 14 additions and 10 deletions

View file

@ -12,10 +12,11 @@ Instance.__index = Instance
-- @return The new instance -- @return The new instance
function Instance.new() function Instance.new()
local instance = setmetatable({ local instance = setmetatable({
entities = List(), entities = List(),
systems = List(), systems = List(),
events = {}, events = {},
removed = {}, removed = {},
toRemove = nil,
__isInstance = true, __isInstance = true,
}, Instance) }, Instance)
@ -69,9 +70,12 @@ end
--- Completely removes all marked Entities in the Instance. --- Completely removes all marked Entities in the Instance.
-- @return self -- @return self
function Instance:flush() function Instance:flush()
if #self.removed > 0 then self.toRemove = self.removed
for i = 1, #self.removed do self.removed = {}
local e = self.removed[i]
if #self.toRemove > 0 then
for i = 1, #self.toRemove do
local e = self.toRemove[i]
e.instances:remove(self) e.instances:remove(self)
self.entities:remove(e) self.entities:remove(e)
@ -80,8 +84,6 @@ function Instance:flush()
self.systems:get(i):__remove(e) self.systems:get(i):__remove(e)
end end
end end
self.removed = {}
end end
return self return self
@ -218,6 +220,8 @@ function Instance:clear()
self.entities:get(i):destroy() self.entities:get(i):destroy()
end end
self:flush()
return self return self
end end