Merge with main branch

This commit is contained in:
Ukendio 2024-08-04 23:10:48 +02:00
commit 611101b309

View file

@ -16,7 +16,6 @@ type ArchetypeEdge = {
remove: Archetype,
}
type Archetype = {
id: number,
edges: { [i53]: ArchetypeEdge },
@ -37,7 +36,7 @@ type EntityIndex = { dense: { [i24]: i53 }, sparse: { [i53]: Record } }
type ArchetypeRecord = {
count: number,
column: number
column: number,
}
type ArchetypeMap = {
@ -723,6 +722,7 @@ local Arm = function(self: Query, ...)
end
local world_query
do
local empty_list = {}
local EmptyQuery: Query = {
__iter = function(): Item
return noop
@ -733,7 +733,7 @@ do
with = Arm,
without = Arm,
archetypes = function()
return {}
return empty_list
end
}
@ -998,7 +998,7 @@ do
local function query_init(query)
if init and drain then
return
return true
end
init = true
@ -1065,18 +1065,19 @@ do
end
local function world_query_without(query, ...)
local withoutComponents = { ... }
local N = select("#", ...)
for i = #compatible_archetypes, 1, -1 do
local archetype = compatible_archetypes[i]
local records = archetype.records
local tr = archetype.records
local shouldRemove = false
for _, componentId in withoutComponents do
if records[componentId] then
shouldRemove = true
break
end
end
for j = 1, N do
local id = select(i, ...)
if tr[id] then
shouldRemove = true
break
end
end
if shouldRemove then
local last = #compatible_archetypes
@ -1139,18 +1140,19 @@ do
end
local function world_query_with(query, ...)
local with = { ... }
local N = select("#", ...)
for i = #compatible_archetypes, 1, -1 do
local archetype = compatible_archetypes[i]
local tr = archetype.records
local shouldRemove = false
for _, id in with do
if not tr[id] then
for j = 1, N do
local id = select(i, ...)
if not tr[id] then
shouldRemove = true
break
end
end
end
if shouldRemove then
local last = #compatible_archetypes