summaryrefslogtreecommitdiff
path: root/honey/ecs.lua
diff options
context:
space:
mode:
Diffstat (limited to 'honey/ecs.lua')
-rw-r--r--honey/ecs.lua11
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()