mirror of
https://github.com/bakpakin/tiny-ecs.git
synced 2024-11-17 04:44:23 +00:00
Add onAddToWorld and onRemoveFromWorld callbacks to systems. Also, adding or removing systems to a world twice raises an error.
This commit is contained in:
parent
f3b16a40f6
commit
b870b5a34e
@ -120,6 +120,11 @@ describe('tiny-ecs:', function()
|
||||
timePassed = 0
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
world:clearSystems()
|
||||
world:refresh()
|
||||
end)
|
||||
|
||||
it("Create World", function()
|
||||
assert.equals(world:getEntityCount(), 3)
|
||||
assert.equals(world:getSystemCount(), 2)
|
||||
@ -196,7 +201,7 @@ describe('tiny-ecs:', function()
|
||||
|
||||
it("Add Systems Multiple Times", function()
|
||||
world:update(1)
|
||||
world:add(moveSystem, oneTimeSystem)
|
||||
assert.has_error(function() world:add(moveSystem, oneTimeSystem) end, "System already belongs to a World.")
|
||||
world:update(2)
|
||||
assert.equals(2, world:getSystemCount())
|
||||
assert.equals(3, world:getEntityCount())
|
||||
@ -206,7 +211,7 @@ describe('tiny-ecs:', function()
|
||||
world:update(1)
|
||||
world:remove(moveSystem)
|
||||
world:update(2)
|
||||
world:remove(moveSystem)
|
||||
assert.has_error(function() world:remove(moveSystem) end, "System does not belong to this World.")
|
||||
world:update(2)
|
||||
assert.equals(1, world:getSystemCount())
|
||||
assert.equals(3, world:getEntityCount())
|
||||
|
8
tiny.lua
8
tiny.lua
@ -476,7 +476,6 @@ function tiny_manageSystems(world)
|
||||
for i = 1, #s2r do
|
||||
local system = s2r[i]
|
||||
local index = system.index
|
||||
if system.world == world then
|
||||
local onRemove = system.onRemove
|
||||
if onRemove then
|
||||
local entityList = system.entities
|
||||
@ -488,6 +487,9 @@ function tiny_manageSystems(world)
|
||||
for j = index, #systems do
|
||||
systems[j].index = j
|
||||
end
|
||||
local onRemoveFromWorld = system.onRemoveFromWorld
|
||||
if onRemoveFromWorld then
|
||||
onRemoveFromWorld(system, world)
|
||||
end
|
||||
s2r[i] = nil
|
||||
|
||||
@ -514,6 +516,10 @@ function tiny_manageSystems(world)
|
||||
local index = #systems + 1
|
||||
system.index = index
|
||||
systems[index] = system
|
||||
local onAddToWorld = system.onAddToWorld
|
||||
if onAddToWorld then
|
||||
onAddToWorld(system, world)
|
||||
end
|
||||
|
||||
-- Try to add Entities
|
||||
local onAdd = system.onAdd
|
||||
|
Loading…
Reference in New Issue
Block a user