From 7c8358656a3e20091c90ba839e41d2f614d67cdd Mon Sep 17 00:00:00 2001 From: Ukendio Date: Mon, 30 Jun 2025 01:35:55 +0200 Subject: [PATCH] unsafe get --- jecs.luau | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/jecs.luau b/jecs.luau index fbddb26..ff6d917 100755 --- a/jecs.luau +++ b/jecs.luau @@ -2146,13 +2146,27 @@ local function world_new() return r end - local function inner_entity_index_try_get(entity: number): Record? + -- local function inner_entity_index_try_get(entity: number): Record? + -- local r = inner_entity_index_try_get_any(entity) + -- if r then + -- local r_dense = r.dense + -- if r_dense > entity_index.alive_count then + -- return nil + -- end + -- if eindex_dense_array[r_dense] ~= entity then + -- return nil + -- end + -- end + -- return r + -- end + + local function inner_entity_index_try_get_unsafe(entity: number): Record? local r = inner_entity_index_try_get_any(entity) if r then local r_dense = r.dense - if r_dense > entity_index.alive_count then - return nil - end + -- if r_dense > entity_index.alive_count then + -- return nil + -- end if eindex_dense_array[r_dense] ~= entity then return nil end @@ -2166,7 +2180,7 @@ local function world_new() id: Id ): () local entity_index = world.entity_index - local record = inner_entity_index_try_get(entity :: number) + local record = inner_entity_index_try_get_unsafe(entity :: number) if not record then return end @@ -2194,7 +2208,7 @@ local function world_new() local function inner_world_get(world: World, entity: Entity, a: Id, b: Id?, c: Id?, d: Id?, e: Id?): ...any - local record = inner_entity_index_try_get(entity::number) + local record = inner_entity_index_try_get_unsafe(entity::number) if not record then return nil end @@ -2225,7 +2239,7 @@ local function world_new() local function inner_world_has(world: World, entity: i53, a: i53, b: i53?, c: i53?, d: i53?, e: i53?): boolean - local record = inner_entity_index_try_get(entity) + local record = inner_entity_index_try_get_unsafe(entity) if not record then return false end @@ -2245,7 +2259,7 @@ local function world_new() end local function inner_world_target(world: World, entity: Entity, relation: Id, index: number?): Entity? - local record = inner_entity_index_try_get(entity :: number) + local record = inner_entity_index_try_get_unsafe(entity :: number) if not record then return nil end @@ -2307,7 +2321,7 @@ local function world_new() end local function inner_world_set(world: World, entity: Entity, id: Id, data: a): () - local record = inner_entity_index_try_get(entity :: number) + local record = inner_entity_index_try_get_unsafe(entity :: number) if not record then return end @@ -2408,7 +2422,7 @@ local function world_new() end local function inner_world_remove(world: World, entity: Entity, id: Id) - local record = inner_entity_index_try_get(entity :: number) + local record = inner_entity_index_try_get_unsafe(entity :: number) if not record then return end @@ -2533,7 +2547,7 @@ local function world_new() local function inner_world_delete(world: World, entity: Entity) local entity_index = world.entity_index - local record = inner_entity_index_try_get(entity::number) + local record = inner_entity_index_try_get_unsafe(entity::number) if not record then return end