mirror of
https://github.com/Ukendio/jecs.git
synced 2025-04-24 17:10:03 +00:00
Fixed cached wildcard queries (#176)
Some checks are pending
Some checks are pending
This commit is contained in:
parent
52e03683db
commit
669c216387
2 changed files with 68 additions and 3 deletions
|
@ -619,7 +619,7 @@ local function archetype_create(world: World, id_types: { i24 }, ty, prev: i53?)
|
|||
end
|
||||
end
|
||||
|
||||
for _, id in id_types do
|
||||
for id in records do
|
||||
local observer_list = find_observers(world, EcsOnArchetypeCreate, id)
|
||||
if not observer_list then
|
||||
continue
|
||||
|
|
|
@ -1433,13 +1433,13 @@ TEST("change tracking", function()
|
|||
local i = 0
|
||||
for entity, number in q1 do
|
||||
i += 1
|
||||
world:add(testEntity, tag)
|
||||
world:add(testEntity, tag)
|
||||
end
|
||||
|
||||
CHECK(i == 1)
|
||||
|
||||
for e, n in q1 do
|
||||
world:set(e, pair(previous, component), n)
|
||||
world:set(e, pair(previous, component), n)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1594,4 +1594,69 @@ TEST("repro", function()
|
|||
CHECK(counter == 0)
|
||||
end
|
||||
end)
|
||||
|
||||
TEST("wildcard query", function()
|
||||
do CASE "#1"
|
||||
local world = world_new()
|
||||
local pair = jecs.pair
|
||||
|
||||
local Relation = world:entity()
|
||||
local Wildcard = jecs.Wildcard
|
||||
local A = world:entity()
|
||||
|
||||
local relationship = pair(Relation, Wildcard)
|
||||
local query = world:query(relationship):cached()
|
||||
|
||||
local entity = world:entity()
|
||||
|
||||
world:add(entity, pair(Relation, A))
|
||||
|
||||
local counter = 0
|
||||
for e in query:iter() do
|
||||
counter += 1
|
||||
end
|
||||
CHECK(counter == 1)
|
||||
end
|
||||
do CASE "#2"
|
||||
local world = world_new()
|
||||
local pair = jecs.pair
|
||||
|
||||
local Relation = world:entity()
|
||||
local Wildcard = jecs.Wildcard
|
||||
local A = world:entity()
|
||||
|
||||
local relationship = pair(Relation, Wildcard)
|
||||
|
||||
local entity = world:entity()
|
||||
|
||||
world:add(entity, pair(Relation, A))
|
||||
|
||||
local counter = 0
|
||||
for e in world:query(relationship):iter() do
|
||||
counter += 1
|
||||
end
|
||||
CHECK(counter == 1)
|
||||
end
|
||||
do CASE "#3"
|
||||
local world = world_new()
|
||||
local pair = jecs.pair
|
||||
|
||||
local Relation = world:entity()
|
||||
local Wildcard = jecs.Wildcard
|
||||
local A = world:entity()
|
||||
|
||||
local entity = world:entity()
|
||||
|
||||
world:add(entity, pair(Relation, A))
|
||||
|
||||
local relationship = pair(Relation, Wildcard)
|
||||
local query = world:query(relationship):cached()
|
||||
|
||||
local counter = 0
|
||||
for e in query:iter() do
|
||||
counter += 1
|
||||
end
|
||||
CHECK(counter == 1)
|
||||
end
|
||||
end)
|
||||
FINISH()
|
||||
|
|
Loading…
Reference in a new issue