diff --git a/jecs.luau b/jecs.luau index ca19c03..214b066 100755 --- a/jecs.luau +++ b/jecs.luau @@ -2034,18 +2034,16 @@ local function ecs_bulk_insert(world: World, entity: Entity, ids: { Entity }, va local value = values[i] :: any local on_add = idr.hooks.on_add - local on_change = idr.hooks.on_change - if value then + if value ~= nil then columns_map[id][row] = value + local on_change = idr.hooks.on_change local hook = if set then on_change else on_add if hook then hook(entity, id, value :: any) end - else - if on_add then - on_add(entity, id, value) - end + elseif on_add then + on_add(entity, id) end end end @@ -2812,7 +2810,7 @@ local function world_new() if value == NULL then inner_world_add(world, i, ty) else - inner_world_add(world, i, ty, value) + inner_world_set(world, i, ty, value) end end end diff --git a/test/tests.luau b/test/tests.luau index 3867b94..dd53258 100755 --- a/test/tests.luau +++ b/test/tests.luau @@ -93,7 +93,10 @@ TEST("bulk", function() CHECK(world:get(e, B) == 2) CHECK(world:get(e, C) == 3) - jecs.bulk_insert(world, e, { D, E, F }, { 4, nil, 5 }) + jecs.bulk_insert(world, e, + { D, E, F }, + { 4, nil, 5 } + ) CHECK(world:get(e, A) == 1) CHECK(world:get(e, B) == 2) CHECK(world:get(e, C) == 3) @@ -102,7 +105,10 @@ TEST("bulk", function() CHECK(world:get(e, E) == nil and world:has(e, E)) CHECK(world:get(e, F) == 5) - jecs.bulk_insert(world, e, { A, D, E, F, C }, { 10, 40, nil, 50, 30 }) + jecs.bulk_insert(world, e, + { A, D, E, F, C }, + { 10, 40, nil, 50, 30 } + ) CHECK(world:get(e, A) == 10) CHECK(world:get(e, B) == 2)