Compare commits

..

1 commit

Author SHA1 Message Date
Clown
2134a6eab3
Merge 96bed9bd7e into c67dfcbd24 2025-07-10 21:22:43 +03:00
2 changed files with 7 additions and 49 deletions

View file

@ -1052,15 +1052,14 @@ local function archetype_destroy(world: World, archetype: Archetype)
local component_index = world.component_index
local archetype_edges = world.archetype_edges
local edges = archetype_edges[archetype.id]
for id, node in edges do
archetype_edges[node.id][id] = nil
edges[id] = nil
for id, edge in archetype_edges[archetype.id] do
archetype_edges[edge.id][id] = nil
end
local archetype_id = archetype.id
-- world.archetypes[archetype_id] = nil :: any
-- world.archetype_index[archetype.type] = nil :: any
world.archetypes[archetype_id] = nil :: any
world.archetype_index[archetype.type] = nil :: any
local columns_map = archetype.columns_map
for id in columns_map do
@ -2331,8 +2330,6 @@ local function world_new()
else
if to.dead then
archetype_register(world, to)
edge[id] = to
archetype_edges[to.id][id] = src
to.dead = false
end
idr = component_index[id]
@ -2542,7 +2539,6 @@ local function world_new()
idr = component_index[id]
end
edge[id] = to
archetype_edges[to.id][id] = src
else
idr = component_index[id]
end

View file

@ -24,46 +24,8 @@ type Id<T=unknown> = jecs.Id<T>
local entity_visualiser = require("@tools/entity_visualiser")
local dwi = entity_visualiser.stringify
TEST("repeated pairs", function()
local pair = jecs.pair
local world = jecs.world()
local rel = world:component() -- Does not error if this is just a tag
-- Does not happen if we delete manually instead of using this
world:add(rel, pair(jecs.OnDeleteTarget, jecs.Delete))
local t1 = world:entity()
local p1 = pair(rel, t1)
local e1 = world:entity()
world:set(e1, p1, true)
CHECK(world:get(e1, p1))
CHECK(world:each(p1)() == e1)
world:delete(t1)
local t2 = world:entity()
local p2 = pair(rel, t2)
local e2 = world:entity()
print("-----")
world:set(e2, p2, true)
CHECK(world:get(e2, p2))
CHECK(p1 == p2)
local count = 0
CHECK(world:has(e2, p2))
for _ in world:query(p2) do
count += 1
end
CHECK(count == 1)
CHECK(world:each(p2)() == e2) -- Fails
end)
TEST("repro", function()
FOCUS()
TEST("", function()
local world = jecs.world()
local data = world:component()
local relation = world:component()