_World = {} World = {} _id = 1 function _next_id() i = _id _id += 1 return i end -- function World.sort(cmp) -- qsort(_World, cmp) -- end function World.get(id) return _World[id] end function World.add(entity) entity.id = _next_id() _World[entity.id] = entity return World.get(entity.id) end function World.foreach(f) for id, entity in pairs(_World) do f(entity) end end function World.cull_the_dead() to_reap = {} for id, e in pairs(_World) do if (e.life_time ~= nil and e.life_time <= 0) then to_reap[id] = e end end for id, e in pairs(to_reap) do _World[id] = nil end return _World end