Compare commits

..

No commits in common. "c67dfcbd24fe673dd5e32ed91dc22b542612e401" and "ad5ed3b5eab4f51bf62a370f8fcb450e3e4a488e" have entirely different histories.

7 changed files with 47 additions and 114 deletions

View file

@ -781,7 +781,6 @@ local function archetype_register(world: World, archetype: Archetype)
local archetype_id = archetype.id
local columns_map = archetype.columns_map
local columns = archetype.columns
for i, component_id in archetype.types do
local idr = id_record_ensure(world, component_id)
local is_tag = bit32.btest(idr.flags, ECS_ID_IS_TAG)
@ -804,10 +803,6 @@ local function archetype_register(world: World, archetype: Archetype)
archetype_append_to_records(idr_t, archetype_id, columns_map, t, i, column)
end
end
world.archetype_index[archetype.type] = archetype
world.archetypes[archetype_id] = archetype
world.archetype_edges[archetype.id] = {} :: Map<Id, Archetype>
end
local function archetype_create(world: World, id_types: { Id }, ty, prev: i53?): Archetype
@ -829,7 +824,7 @@ local function archetype_create(world: World, id_types: { Id }, ty, prev: i53?):
dead = false,
}
archetype_register(world, archetype, false)
archetype_register(world, archetype)
for id in columns_map do
local observer_list = find_observers(world, EcsOnArchetypeCreate, id)
@ -843,6 +838,9 @@ local function archetype_create(world: World, id_types: { Id }, ty, prev: i53?):
end
end
world.archetype_index[ty] = archetype
world.archetypes[archetype_id] = archetype
world.archetype_edges[archetype.id] = {} :: Map<Id, Archetype>
return archetype
end
@ -1080,8 +1078,6 @@ local function archetype_destroy(world: World, archetype: Archetype)
end
end
end
archetype.dead = true
end
local function NOOP() end
@ -2328,10 +2324,6 @@ local function world_new()
end
edge[id] = to
else
if to.dead then
archetype_register(world, to)
to.dead = false
end
idr = component_index[id]
end
if from == to then
@ -2350,7 +2342,6 @@ local function world_new()
if on_add then
on_add(entity, id)
end
return
end
local to = archetype_traverse_add(world, id, from)

View file

@ -1,6 +1,6 @@
{
"name": "@rbxts/jecs",
"version": "0.8.3",
"version": "0.8.2",
"description": "Stupidly fast Entity Component System",
"main": "jecs.luau",
"repository": {

View file

@ -24,44 +24,6 @@ type Id<T=unknown> = jecs.Id<T>
local entity_visualiser = require("@tools/entity_visualiser")
local dwi = entity_visualiser.stringify
FOCUS()
TEST("", function()
local world = jecs.world()
local data = world:component()
local relation = world:component()
world:add(relation, jecs.pair(jecs.OnDeleteTarget, jecs.Delete))
local e1 = world:entity()
local e2 = world:entity()
world:set(e2, data, 456)
world:add(e2, jecs.pair(relation, e1))
world:delete(e1)
local e1v1 = world:entity()
CHECK(ECS_ID(e1v1) == e1)
local e2v1 = world:entity()
CHECK(ECS_ID(e2v1) == e2)
world:set(e2v1, data, 456)
CHECK(world:contains(e1v1))
CHECK(not world:contains(e2))
CHECK(world:contains(e2v1))
local count = 0
for i,val in world:query(data):iter() do
count += 1
end
CHECK(count == 1)
count = 0
world:add(e2v1, jecs.pair(relation, e1v1))
CHECK(world:has(e2v1, jecs.pair(relation, e1v1)))
for i,val in world:query(data):iter() do
count += 1
end
CHECK(count==1)
end)
TEST("bulk", function()
local world = jecs.world()
local A = world:component()
@ -923,6 +885,7 @@ TEST("world:each()", function()
end
end)
FOCUS()
TEST("world:range()", function()
do CASE "spawn entity under min range"
@ -1159,7 +1122,6 @@ end)
TEST("world:query()", function()
local N = 2^8
do CASE "cached"
local world = jecs.world()
local Foo = world:component()
@ -1196,26 +1158,6 @@ TEST("world:query()", function()
world:delete(Foo)
CHECK(#q:archetypes() == 0)
end
do CASE "3 components"
local world = jecs.world()
local A = world:component() :: jecs.Entity<boolean>
local B = world:component() :: jecs.Entity<boolean>
local C = world:component() :: jecs.Entity<boolean>
local e = world:entity()
world:set(e, A, true)
world:set(e, B, true)
world:set(e, C, true)
local q = world:query(A, B, C):cached()
local counter = 0
for x, a, b, c in q:iter() do
counter += 1
CHECK(a)
CHECK(b)
CHECK(c)
end
CHECK(counter == 1)
end
do CASE "multiple iter"
local world = jecs.world()
local A = world:component() :: jecs.Entity<string>

View file

@ -1,6 +1,6 @@
[package]
name = "ukendio/jecs"
version = "0.8.3"
version = "0.8.2"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
license = "MIT"