From cb238ab29e9686ff53ab9c9b915d35d519be8916 Mon Sep 17 00:00:00 2001 From: Ukendio Date: Tue, 22 Apr 2025 05:02:33 +0200 Subject: [PATCH] Simplify entity swap logic in world_entity function --- jecs.luau | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/jecs.luau b/jecs.luau index 458e3c2..8978ea1 100644 --- a/jecs.luau +++ b/jecs.luau @@ -789,28 +789,21 @@ local function world_entity(world: ecs_world_t, entity: i53?): i53 return entity end - if any ~= 0 then - local e_swap = dense_array[alive_count] - local r_swap = sparse_array[alive_count] + -- assert(any ~= 0) should never happen - if dense > alive_count then - r_swap.dense = dense - r.dense = alive_count - dense_array[alive_count] = any - dense_array[dense] = e_swap - else - r_swap.dense = dense - -- alive_count += 1 - alive_count += 1 - entity_index.alive_count = alive_count - r.dense = alive_count - dense_array[alive_count] = any - dense_array[dense] = e_swap - end - return any - else - error("should never happen") + local e_swap = dense_array[alive_count] + local r_swap = sparse_array[alive_count] + + if dense <= alive_count then + alive_count += 1 + entity_index.alive_count = alive_count end + + r_swap.dense = dense + r.dense = alive_count + dense_array[alive_count] = any + dense_array[dense] = e_swap + return any else local range_end = entity_index.range_end if range_end then