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
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, id in id_types do
|
for id in records do
|
||||||
local observer_list = find_observers(world, EcsOnArchetypeCreate, id)
|
local observer_list = find_observers(world, EcsOnArchetypeCreate, id)
|
||||||
if not observer_list then
|
if not observer_list then
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -1433,13 +1433,13 @@ TEST("change tracking", function()
|
||||||
local i = 0
|
local i = 0
|
||||||
for entity, number in q1 do
|
for entity, number in q1 do
|
||||||
i += 1
|
i += 1
|
||||||
world:add(testEntity, tag)
|
world:add(testEntity, tag)
|
||||||
end
|
end
|
||||||
|
|
||||||
CHECK(i == 1)
|
CHECK(i == 1)
|
||||||
|
|
||||||
for e, n in q1 do
|
for e, n in q1 do
|
||||||
world:set(e, pair(previous, component), n)
|
world:set(e, pair(previous, component), n)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1594,4 +1594,69 @@ TEST("repro", function()
|
||||||
CHECK(counter == 0)
|
CHECK(counter == 0)
|
||||||
end
|
end
|
||||||
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()
|
FINISH()
|
||||||
|
|
Loading…
Reference in a new issue