From acc5830cc6d4381d8ed391a2d503af75a35f9fee Mon Sep 17 00:00:00 2001 From: Justin van der Leij Date: Mon, 30 Jul 2018 12:30:05 +0200 Subject: [PATCH] Fixed a small removal issue --- examples/simpleDrawing/init.lua | 2 +- lib/instance.lua | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/examples/simpleDrawing/init.lua b/examples/simpleDrawing/init.lua index 7ed98dc..9879f94 100644 --- a/examples/simpleDrawing/init.lua +++ b/examples/simpleDrawing/init.lua @@ -115,4 +115,4 @@ for i = 1, 100 do end Game:addEntity(e) -end +end \ No newline at end of file diff --git a/lib/instance.lua b/lib/instance.lua index 27eb4d8..754c46e 100644 --- a/lib/instance.lua +++ b/lib/instance.lua @@ -12,10 +12,11 @@ Instance.__index = Instance -- @return The new instance function Instance.new() local instance = setmetatable({ - entities = List(), - systems = List(), - events = {}, - removed = {}, + entities = List(), + systems = List(), + events = {}, + removed = {}, + toRemove = nil, __isInstance = true, }, Instance) @@ -69,9 +70,12 @@ end --- Completely removes all marked Entities in the Instance. -- @return self function Instance:flush() - if #self.removed > 0 then - for i = 1, #self.removed do - local e = self.removed[i] + self.toRemove = self.removed + self.removed = {} + + if #self.toRemove > 0 then + for i = 1, #self.toRemove do + local e = self.toRemove[i] e.instances:remove(self) self.entities:remove(e) @@ -80,8 +84,6 @@ function Instance:flush() self.systems:get(i):__remove(e) end end - - self.removed = {} end return self @@ -218,6 +220,8 @@ function Instance:clear() self.entities:get(i):destroy() end + self:flush() + return self end