has fragments entity functions

This commit is contained in:
BlackMATov
2024-11-22 09:36:58 +07:00
parent 304c581005
commit a2df4e14a7

View File

@@ -2,6 +2,7 @@
local registry = {} local registry = {}
---@class evolved.entity ---@class evolved.entity
---@field chunk? evolved.chunk
local evolved_entity_mt = {} local evolved_entity_mt = {}
evolved_entity_mt.__index = evolved_entity_mt evolved_entity_mt.__index = evolved_entity_mt
@@ -15,6 +16,68 @@ evolved_query_mt.__index = evolved_query_mt
local evolved_chunk_mt = {} local evolved_chunk_mt = {}
evolved_chunk_mt.__index = evolved_chunk_mt evolved_chunk_mt.__index = evolved_chunk_mt
---
---
---
---
---
---@param chunk evolved.chunk
---@param fragment evolved.entity
---@return boolean
---@nodiscard
local function __chunk_has_fragment(chunk, fragment)
return chunk.components[fragment] ~= nil
end
---@param chunk evolved.chunk
---@param fragment evolved.entity
---@param ... evolved.entity
---@return boolean
---@nodiscard
local function __chunk_has_all_fragments(chunk, fragment, ...)
local components = chunk.components
if components[fragment] == nil then
return false
end
for i = 1, select('#', ...) do
if components[select(i, ...)] == nil then
return false
end
end
return true
end
---@param chunk evolved.chunk
---@param fragment evolved.entity
---@param ... evolved.entity
---@return boolean
---@nodiscard
local function __chunk_has_any_fragments(chunk, fragment, ...)
local components = chunk.components
if components[fragment] ~= nil then
return true
end
for i = 1, select('#', ...) do
if components[select(i, ...)] ~= nil then
return true
end
end
return false
end
---
---
---
---
---
---@return evolved.entity ---@return evolved.entity
---@nodiscard ---@nodiscard
function registry.entity() end function registry.entity() end
@@ -32,19 +95,27 @@ function registry.get(entity, fragment) end
---@param fragment evolved.entity ---@param fragment evolved.entity
---@return boolean ---@return boolean
---@nodiscard ---@nodiscard
function registry.has(entity, fragment) end function registry.has(entity, fragment)
return entity.chunk ~= nil and __chunk_has_fragment(entity.chunk, fragment)
end
---@param entity evolved.entity ---@param entity evolved.entity
---@param fragment evolved.entity
---@param ... evolved.entity ---@param ... evolved.entity
---@return boolean ---@return boolean
---@nodiscard ---@nodiscard
function registry.has_all(entity, ...) end function registry.has_all(entity, fragment, ...)
return entity.chunk ~= nil and __chunk_has_all_fragments(entity.chunk, fragment, ...)
end
---@param entity evolved.entity ---@param entity evolved.entity
---@param fragment evolved.entity
---@param ... evolved.entity ---@param ... evolved.entity
---@return boolean ---@return boolean
---@nodiscard ---@nodiscard
function registry.has_any(entity, ...) end function registry.has_any(entity, fragment, ...)
return entity.chunk ~= nil and __chunk_has_any_fragments(entity.chunk, fragment, ...)
end
---@param entity evolved.entity ---@param entity evolved.entity
---@param fragment evolved.entity ---@param fragment evolved.entity