Properly type EmptyQuery

This commit is contained in:
Ukendio 2024-07-14 08:30:20 +02:00
parent 150afc46e4
commit 48cc4dc7d5

View file

@ -662,31 +662,43 @@ local function world_get(world: World, entityId: i53, a: i53, b: i53?, c: i53?,
end end
end end
local function noop() type Item = () -> (number, ...any)
return nil export type Query = typeof({
end __iter = function(): Item
return function()
local EmptyQuery = { return 1
__iter = function() end
return noop end,
end, }) & {
next = noop, next: Item,
replace = noop, replace: (Query, ...any) -> (),
without = function(self) without: (Query) -> Query
return self
end
} }
setmetatable(EmptyQuery, EmptyQuery)
export type Query = typeof(EmptyQuery)
type CompatibleArchetype = { archetype: Archetype, indices: { number } } type CompatibleArchetype = { archetype: Archetype, indices: { number } }
local world_query: (World, ...i53) -> Query local world_query: (World, ...i53) -> Query
do do
local noop: Item = function()
return nil :: any
end
local EmptyQuery: Query = {
__iter = function(): Item
return function()
return 1
end
end,
next = noop :: Item,
replace = noop :: (Query, ...any) -> (),
without = function(self: Query, ...)
return self
end
}
setmetatable(EmptyQuery, EmptyQuery)
local indices: { { number } } local indices: { { number } }
local compatibleArchetypes: { Archetype } local compatibleArchetypes: { Archetype }
local length local length