diff options
author | sanine <sanine.not@pm.me> | 2023-03-24 20:45:41 -0500 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-03-24 20:45:41 -0500 |
commit | 314e9cd4c96f30f47b6c02eefbadf063e1a58025 (patch) | |
tree | 8dcb33b32cdcf1a903d6a0ae750fd23458d86729 /honey/ecs.lua | |
parent | 627ca789065bfcbce53a51887be4e8f8fb20d26b (diff) |
fix ecs removing
Diffstat (limited to 'honey/ecs.lua')
-rw-r--r-- | honey/ecs.lua | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/honey/ecs.lua b/honey/ecs.lua index b7806f9..3632f34 100644 --- a/honey/ecs.lua +++ b/honey/ecs.lua @@ -152,8 +152,8 @@ end function Level.addEntity(self, entity) - table.insert(self.entities, entity) local id = self.nextId + self.entities[id] = entity self.nextId = id + 1 for _, system in ipairs(self.systems) do @@ -181,6 +181,7 @@ end function Level.removeEntity(self, id) local entity = self.entities[id] + if not entity then error("bad id: "..tostring(id)) end for _, system in ipairs(self.systems) do removeEntityFromSystem(system, id, entity) end @@ -205,12 +206,16 @@ function Level.update(self, dt, paused) if system.prepareEntity then for id in pairs(system.entities) do local entity = self.entities[id] - system:prepareEntity(entity) + if entity then + system:prepareEntity(entity) + end end end for id in pairs(system.entities) do local entity = self.entities[id] - system:update(entity, dt) + if entity then + system:update(entity, dt) + end end if system.postUpdate then system:postUpdate() |