jecs/test/addons/observers.luau
2025-03-30 22:14:22 +02:00

46 lines
730 B
Text

local jecs = require("@jecs")
local observers_add = require("@addons/observers")
local world = jecs.world()
observers_add(world)
local A = world:component()
local B = world:component()
local C = world:component()
world:observer({
query = world:query(),
callback = function(entity)
buf ..= debug.info(2, "sl")
end
})
local i = 0
world:added(A, function(entity)
assert(i == 0)
i += 1
end)
world:added(A, function(entity)
assert(i == 1)
i += 1
end)
world:removed(A, function(entity)
assert(false)
end)
local observer = world:observer({
query = world:query(A, B),
callback = function(entity)
assert(i == 2)
i += 1
end
})
local e = world:entity()
world:add(e, A)
assert(i == 2)
world:add(e, B)
assert(i == 3)