Compare commits

..

1 commit

Author SHA1 Message Date
lolmanurfunny
6864c344b8
Merge 3a560393f1 into b29f6c5037 2025-03-07 19:54:57 +01:00

View file

@ -1113,11 +1113,11 @@ do
end end
local delete = entity local delete = entity
local component_index = world.component_index
local archetypes: Archetypes = world.archetypes local archetypes: Archetypes = world.archetypes
local tgt = ECS_PAIR(EcsWildcard, delete) local component_index = world.component_index
local idr_t = component_index[tgt]
local idr = component_index[delete] local idr = component_index[entity]
local idr_t = component_index[ECS_PAIR(EcsWildcard, entity)]
if idr then if idr then
local flags = idr.flags local flags = idr.flags
@ -1176,14 +1176,24 @@ do
local on_remove = id_record.hooks.on_remove local on_remove = id_record.hooks.on_remove
local to = archetype_traverse_remove(world, id, idr_t_archetype) local to = archetype_traverse_remove(world, id, idr_t_archetype)
local empty = #to.types == 0 local empty = #to.types == 0
for i = n, 1, -1 do
local child = children[i] if on_remove then
if on_remove then for i = n, 1, -1 do
local child = children[i]
on_remove(child) on_remove(child)
if not empty then
local r = sparse_array[ECS_ENTITY_T_LO(child)]
entity_move(entity_index, child, r, to)
end
end end
if not empty then else
local r = sparse_array[ECS_ENTITY_T_LO(child)] if not empty then -- no on_remove hook set; fast path
entity_move(entity_index, child, r, to) for i = n, 1, -1 do
local child = children[i]
local r = sparse_array[ECS_ENTITY_T_LO(child)]
entity_move(entity_index, child, r, to)
end
end end
end end
end end