diff --git a/README.md b/README.md index c2263e8..f7135eb 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ ``` defers.defer -> (defer) -defers.set -> defer -> entity -> entity -> any -> (defer) -defers.assign -> defer -> entity -> entity -> any -> (defer) -defers.insert -> defer -> entity -> entity -> any -> (defer) +defers.set -> defer -> entity -> entity -> component -> (defer) +defers.assign -> defer -> entity -> entity -> component -> (defer) +defers.insert -> defer -> entity -> entity -> component -> (defer) defers.remove -> defer -> entity -> entity... -> (defer) defers.detach -> defer -> entity -> (defer) defers.destroy -> defer -> entity -> (defer) @@ -16,9 +16,9 @@ defers.playback -> defer -> (defer) ### Instance `defer` ``` -defer:set -> entity -> entity -> any -> (defer) -defer:assign -> entity -> entity -> any -> (defer) -defer:insert -> entity -> entity -> any -> (defer) +defer:set -> entity -> entity -> component -> (defer) +defer:assign -> entity -> entity -> component -> (defer) +defer:insert -> entity -> entity -> component -> (defer) defer:remove -> entity -> entity... -> (defer) defer:detach -> entity -> (defer) defer:destroy -> entity -> (defer) @@ -52,19 +52,19 @@ idpool:release -> id -> () registry.entity -> (entity) registry.guid -> entity -> (id) registry.alive -> entity -> (boolean) -registry.get -> entity -> entity... -> (any...) +registry.get -> entity -> entity... -> (component...) registry.has -> entity -> entity -> (boolean) registry.has_all -> entity -> entity... -> (boolean) registry.has_any -> entity -> entity... -> (boolean) -registry.set -> entity -> entity -> any -> (entity) -registry.chunk_set -> chunk -> entity -> any -> (integer, integer) -registry.query_set -> query -> entity -> any -> (integer, integer) -registry.assign -> entity -> entity -> any -> (boolean) -registry.chunk_assign -> chunk -> entity -> any -> (integer) -registry.query_assign -> query -> entity -> any -> (integer) -registry.insert -> entity -> entity -> any -> (boolean) -registry.chunk_insert -> chunk -> entity -> any -> (integer) -registry.query_insert -> query -> entity -> any -> (integer) +registry.set -> entity -> entity -> component -> (entity) +registry.chunk_set -> chunk -> entity -> component -> (integer, integer) +registry.query_set -> query -> entity -> component -> (integer, integer) +registry.assign -> entity -> entity -> component -> (boolean) +registry.chunk_assign -> chunk -> entity -> component -> (integer) +registry.query_assign -> query -> entity -> component -> (integer) +registry.insert -> entity -> entity -> component -> (boolean) +registry.chunk_insert -> chunk -> entity -> component -> (integer) +registry.query_insert -> query -> entity -> component -> (integer) registry.remove -> entity -> entity... -> (boolean) registry.chunk_remove -> chunk -> entity... -> (integer) registry.query_remove -> query -> entity... -> (integer) @@ -80,7 +80,7 @@ registry.query_exclude -> query -> entity... -> query registry.query_execute -> query -> ({execution_state? -> chunk?}, execution_state?) registry.chunk -> entity -> entity... -> (chunk) registry.chunk_entities -> chunk -> (entity[]) -registry.chunk_components -> chunk -> entity... -> (any[]...) +registry.chunk_components -> chunk -> entity... -> (component[]...) ``` ### Instance `entity` @@ -88,14 +88,13 @@ registry.chunk_components -> chunk -> entity... -> (any[]...) ``` entity:guid -> (id) entity:alive -> (boolean) -entity:get -> entity... -> (any...) +entity:get -> entity... -> (component...) entity:has -> entity -> (boolean) entity:has_all -> entity... -> (boolean) entity:has_any -> entity... -> (boolean) - -entity:set -> entity -> any -> (entity) -entity:assign -> entity -> any -> (boolean) -entity:insert -> entity -> any -> (boolean) +entity:set -> entity -> component -> (entity) +entity:assign -> entity -> component -> (boolean) +entity:insert -> entity -> component -> (boolean) entity:remove -> entity... -> (boolean) entity:detach -> (entity) entity:destroy -> (entity) @@ -104,13 +103,12 @@ entity:destroy -> (entity) ### Instance `query` ``` -query:set -> entity -> any -> (integer, integer) -query:assign -> entity -> any -> (integer) -query:insert -> entity -> any -> (integer) +query:set -> entity -> component -> (integer, integer) +query:assign -> entity -> component -> (integer) +query:insert -> entity -> component -> (integer) query:remove -> entity... -> (integer) query:detach -> (integer) query:destroy -> (integer) - query:include -> entity... -> query query:exclude -> entity... -> query query:execute -> ({execution_state? -> chunk?}, execution_state?) @@ -119,24 +117,23 @@ query:execute -> ({execution_state? -> chunk?}, execution_state?) ### Instance `chunk` ``` -chunk:set -> entity -> any -> (integer, integer) -chunk:assign -> entity -> any -> (integer) -chunk:insert -> entity -> any -> (integer) +chunk:set -> entity -> component -> (integer, integer) +chunk:assign -> entity -> component -> (integer) +chunk:insert -> entity -> component -> (integer) chunk:remove -> entity... -> (integer) chunk:detach -> (integer) chunk:destroy -> (integer) - chunk:entities -> (entity[]) -chunk:components -> entity... -> (any[]...) +chunk:components -> entity... -> (component[]...) ``` ## Module `singles` ``` -singles.single -> any -> (entity) -singles.set -> entity -> any -> (entity) -singles.get -> entity -> (any) +singles.single -> component -> (entity) +singles.get -> entity -> (component) singles.has -> entity -> (boolean) +singles.set -> entity -> component -> (entity) ``` ## Module `vectors` diff --git a/develop/unbench/evolved_unbench.lua b/develop/unbench/evolved_unbench.lua index 80d484c..6c2aabd 100644 --- a/develop/unbench/evolved_unbench.lua +++ b/develop/unbench/evolved_unbench.lua @@ -132,7 +132,7 @@ end) ---@param A evolved.query ---@param B evolved.query common.describe('Entity Cycle (Simple)', function(a, b, A, B) - ---@type any[] + ---@type evolved.component[] local to_create = {} for chunk in A:execute() do @@ -178,7 +178,7 @@ end) ---@param A evolved.query ---@param B evolved.query common.describe('Entity Cycle (Batched)', function(a, b, A, B) - ---@type any[] + ---@type evolved.component[] local to_create = {} for chunk in A:execute() do diff --git a/evolved/defers.lua b/evolved/defers.lua index b84f7be..6e04f25 100644 --- a/evolved/defers.lua +++ b/evolved/defers.lua @@ -96,7 +96,7 @@ end ---@param defer evolved.defer ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return evolved.defer function defers.set(defer, entity, fragment, component) local operations = defer.operations @@ -114,7 +114,7 @@ end ---@param defer evolved.defer ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return evolved.defer function defers.assign(defer, entity, fragment, component) local operations = defer.operations @@ -132,7 +132,7 @@ end ---@param defer evolved.defer ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return evolved.defer function defers.insert(defer, entity, fragment, component) local operations = defer.operations diff --git a/evolved/registry.lua b/evolved/registry.lua index 2106ed1..af1d7e5 100644 --- a/evolved/registry.lua +++ b/evolved/registry.lua @@ -10,6 +10,8 @@ local registry = {} --- --- +---@alias evolved.component any + ---@alias evolved.execution_stack evolved.chunk[] ---@alias evolved.execution_state [table, integer, evolved.execution_stack] ---@alias evolved.execution_iterator fun(execute_state: evolved.execution_state?): evolved.chunk? @@ -53,7 +55,7 @@ evolved_query_mt.__index = evolved_query_mt ---@field package __fragment evolved.entity ---@field package __children evolved.chunk[] ---@field package __entities evolved.entity[] ----@field package __components table +---@field package __components table ---@field package __with_fragment_cache table ---@field package __without_fragment_cache table @@ -450,7 +452,7 @@ end ---@param entity evolved.entity ---@param ... evolved.entity fragments ----@return any ... components +---@return evolved.component ... components ---@nodiscard function registry.get(entity, ...) local chunk = entity.__chunk @@ -522,7 +524,7 @@ end ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return evolved.entity function registry.set(entity, fragment, component) component = component == nil and true or component @@ -572,7 +574,7 @@ end ---@param chunk evolved.chunk ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer assigned_count ---@return integer inserted_count function registry.chunk_set(chunk, fragment, component) @@ -587,7 +589,7 @@ end ---@param query evolved.query ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer assigned_count ---@return integer inserted_count function registry.query_set(query, fragment, component) @@ -624,7 +626,7 @@ end ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return boolean is_assigned function registry.assign(entity, fragment, component) component = component == nil and true or component @@ -648,7 +650,7 @@ end ---@param chunk evolved.chunk ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer assigned_count function registry.chunk_assign(chunk, fragment, component) component = component == nil and true or component @@ -670,7 +672,7 @@ end ---@param query evolved.query ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer assigned_count function registry.query_assign(query, fragment, component) local chunks = __execution_stack_acquire() @@ -692,7 +694,7 @@ end ---@param entity evolved.entity ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return boolean is_inserted function registry.insert(entity, fragment, component) component = component == nil and true or component @@ -740,7 +742,7 @@ end ---@param chunk evolved.chunk ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer inserted_count function registry.chunk_insert(chunk, fragment, component) component = component == nil and true or component @@ -818,7 +820,7 @@ end ---@param query evolved.query ---@param fragment evolved.entity ----@param component any +---@param component evolved.component ---@return integer inserted_count function registry.query_insert(query, fragment, component) local chunks = __execution_stack_acquire() @@ -1282,7 +1284,7 @@ end ---@param chunk evolved.chunk ---@param ... evolved.entity fragments ----@return any[] ... components +---@return evolved.component[] ... components ---@nodiscard function registry.chunk_components(chunk, ...) local components = chunk.__components diff --git a/evolved/singles.lua b/evolved/singles.lua index 7c12701..db268a6 100644 --- a/evolved/singles.lua +++ b/evolved/singles.lua @@ -3,7 +3,7 @@ local registry = require 'evolved.registry' ---@class evolved.singles local singles = {} ----@param component any +---@param component evolved.component ---@return evolved.entity ---@nodiscard function singles.single(component) @@ -12,14 +12,7 @@ function singles.single(component) end ---@param single evolved.entity ----@param component any ----@return evolved.entity -function singles.set(single, component) - return single:set(single, component) -end - ----@param single evolved.entity ----@return any +---@return evolved.component ---@nodiscard function singles.get(single) return single:get(single) @@ -32,4 +25,11 @@ function singles.has(single) return single:has(single) end +---@param single evolved.entity +---@param component evolved.component +---@return evolved.entity +function singles.set(single, component) + return single:set(single, component) +end + return singles