From eac882d60435b71ac59a93f96760e4e7079d103b Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Mon, 3 Mar 2025 06:55:35 +0700 Subject: [PATCH] new evolved.fragments function --- README.md | 2 ++ develop/untests.lua | 16 ++++++++++++++++ evolved.lua | 11 +++++++++++ 3 files changed, 29 insertions(+) diff --git a/README.md b/README.md index 3bc90cf..293eac1 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,9 @@ batch_multi_remove :: query, fragment[] -> integer, boolean chunk :: fragment... -> chunk?, entity[]?, integer? select :: chunk, fragment... -> component[]... + entities :: chunk -> entity[], integer +fragments :: chunk -> fragment[], integer each :: entity -> {each_state? -> fragment?, component?}, each_state? execute :: query -> {execute_state? -> chunk?, entity[]?, integer?}, execute_state? diff --git a/develop/untests.lua b/develop/untests.lua index 4a49246..cf059cf 100644 --- a/develop/untests.lua +++ b/develop/untests.lua @@ -7119,3 +7119,19 @@ do assert(evo.get(f2, evo.ON_DESTROY) == evo.DESTROY_ENTITY_POLICY) assert(evo.get(f3, evo.ON_DESTROY) == evo.REMOVE_FRAGMENT_POLICY) end + +do + local f1, f2, f3 = evo.id(3) + + local c1 = evo.chunk(f1) + local c23 = evo.chunk(f2, f3) + + assert(c1 and c23) + + assert(#evo.fragments(c1) == 1) + assert(evo.fragments(c1)[1] == f1) + + assert(#evo.fragments(c23) == 2) + assert(evo.fragments(c23)[1] == f2) + assert(evo.fragments(c23)[2] == f3) +end diff --git a/evolved.lua b/evolved.lua index 3a9ce73..5c0b0fc 100644 --- a/evolved.lua +++ b/evolved.lua @@ -635,6 +635,7 @@ local __evolved_batch_multi_remove local __evolved_chunk local __evolved_select local __evolved_entities +local __evolved_fragments local __evolved_each local __evolved_execute @@ -6443,6 +6444,14 @@ __evolved_entities = function(chunk) return chunk.__entities, chunk.__entity_count end +---@param chunk evolved.chunk +---@return evolved.fragment[] fragments +---@return integer fragment_count +---@nodiscard +__evolved_fragments = function(chunk) + return chunk.__fragment_list, chunk.__fragment_count +end + ---@param entity evolved.entity ---@return evolved.each_iterator iterator ---@return evolved.each_state? iterator_state @@ -7755,7 +7764,9 @@ evolved.batch_multi_remove = __evolved_batch_multi_remove evolved.chunk = __evolved_chunk evolved.select = __evolved_select + evolved.entities = __evolved_entities +evolved.fragments = __evolved_fragments evolved.each = __evolved_each evolved.execute = __evolved_execute