mirror of
https://github.com/Ukendio/jecs.git
synced 2025-04-27 18:30:03 +00:00
Handle only make_alive behaviour in overload
Some checks are pending
Some checks are pending
This commit is contained in:
parent
6922019ed9
commit
01821f0a7b
2 changed files with 13 additions and 51 deletions
29
jecs.luau
29
jecs.luau
|
@ -773,26 +773,23 @@ local function world_entity(world: ecs_world_t, entity: i53?): i53
|
|||
if r then
|
||||
local dense = r.dense
|
||||
if dense and r.dense ~= 0 then
|
||||
local any = dense_array[dense]
|
||||
if any ~= entity then
|
||||
if dense > alive_count then
|
||||
alive_count += 1
|
||||
entity_index.alive_count = alive_count
|
||||
local e_swap = dense_array[alive_count]
|
||||
local r_swap = sparse_array[alive_count]
|
||||
r_swap.dense = dense
|
||||
r.dense = alive_count
|
||||
dense_array[alive_count] = any
|
||||
dense_array[dense] = e_swap
|
||||
end
|
||||
return any
|
||||
if dense < alive_count then
|
||||
return entity
|
||||
end
|
||||
return entity
|
||||
else
|
||||
r.dense = index
|
||||
dense_array[index] = entity
|
||||
return entity
|
||||
dense = index
|
||||
end
|
||||
|
||||
local e_swap = dense_array[dense]
|
||||
local r_swap = entity_index_try_get_any(entity_index, e_swap) :: ecs_record_t
|
||||
alive_count += 1
|
||||
entity_index.alive_count = alive_count
|
||||
r_swap.dense = dense
|
||||
r.dense = alive_count
|
||||
dense_array[dense] = e_swap
|
||||
dense_array[alive_count] = entity
|
||||
return entity
|
||||
else
|
||||
for i = max_id + 1, index do
|
||||
sparse_array[i] = { dense = i } :: ecs_record_t
|
||||
|
|
|
@ -666,41 +666,6 @@ TEST("world:entity()", function()
|
|||
CHECK(world:contains(e))
|
||||
local e2 = world:entity()
|
||||
CHECK(world:contains(e2))
|
||||
|
||||
-- world:print_entity_index()
|
||||
print("-----")
|
||||
local e3 = world:entity(375)
|
||||
world:entity(376)
|
||||
print("-----")
|
||||
|
||||
print(e3)
|
||||
CHECK(e3 == 375)
|
||||
CHECK(world:contains(e3))
|
||||
|
||||
world:delete(e3)
|
||||
|
||||
print("-------call 1-------")
|
||||
local e3v1 = world:entity(375)
|
||||
CHECK(not world:contains(375))
|
||||
CHECK(jecs.ECS_GENERATION(e3v1) == 1)
|
||||
CHECK(jecs.ECS_ID(e3v1) == 375)
|
||||
CHECK(world:contains(e3v1))
|
||||
print("-------call 2-------")
|
||||
world:entity(382)
|
||||
world:delete(382)
|
||||
world:entity(376)
|
||||
world:delete(e3v1)
|
||||
print("--------------------")
|
||||
print("-------call 3-------")
|
||||
local e3v2 = world:entity(375)
|
||||
CHECK(jecs.ECS_GENERATION(e3v2) == 2)
|
||||
CHECK(jecs.ECS_ID(e3v2) == 375)
|
||||
CHECK(not world:contains(e3v1))
|
||||
CHECK(world:contains(e3v2))
|
||||
print("----------------------")
|
||||
print("-----call 4-------")
|
||||
CHECK(world:entity(375) == e3v2)
|
||||
print("------call 5")
|
||||
end
|
||||
local N = 2^8
|
||||
|
||||
|
|
Loading…
Reference in a new issue