diff --git a/src/init.luau b/src/init.luau index 113eb26..5c93f62 100644 --- a/src/init.luau +++ b/src/init.luau @@ -908,6 +908,9 @@ do for archetype_id in idr.cache do local compatibleArchetype = archetypes[archetype_id] + if #compatibleArchetype.entities == 0 then + continue + end local records = compatibleArchetype.records local skip = false diff --git a/test/tests.luau b/test/tests.luau index d452c4b..f63f67d 100644 --- a/test/tests.luau +++ b/test/tests.luau @@ -847,6 +847,21 @@ TEST("world:delete", function() CHECK(not world:contains(entity)) end end + + do CASE "cycle" + local world = jecs.World.new() + local Likes = world:component() + world:add(Likes, jecs.Delete) + local bob = world:entity() + local alice = world:entity() + + world:add(bob, pair(Likes, alice)) + world:add(alice, pair(Likes, bob)) + + world:delete(bob) + CHECK(not world:contains(bob)) + CHECK(not world:contains(alice)) + end end) TEST("world:contains", function()