From eefdf2e58b65946df4cdbf9b1263c5c35227399c Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Thu, 21 Nov 2024 01:02:12 +0700 Subject: [PATCH] modules refactoring --- develop/example.lua | 26 +++++++-------- develop/unbench.lua | 2 +- develop/untests.lua | 2 +- evolved/evolved.lua | 78 +++----------------------------------------- evolved/registry.lua | 73 +++++++++++++++++++++++++++++++++++++++++ evolved/singles.lua | 12 +++---- 6 files changed, 98 insertions(+), 95 deletions(-) create mode 100644 evolved/registry.lua diff --git a/develop/example.lua b/develop/example.lua index b1da39d..3573087 100644 --- a/develop/example.lua +++ b/develop/example.lua @@ -1,34 +1,32 @@ -local evolved = require 'evolved.evolved' -local evolved_singles = require 'evolved.singles' -local evolved_vectors = require 'evolved.vectors' +local evo = require 'evolved.evolved' local singles = { - delta_time = evolved_singles.create(0.016), + delta_time = evo.singles.create(0.016), } local fragments = { - position = evolved.create_entity(), - velocity = evolved.create_entity(), + position = evo.registry.create_entity(), + velocity = evo.registry.create_entity(), } local queries = { - bodies = evolved.create_query( + bodies = evo.registry.create_query( fragments.position, fragments.velocity), } do - local entity = evolved.create_entity() - local position = evolved_vectors.vector2(512, 50) - local velocity = evolved_vectors.vector2(math.random(-20, 20), 20) - evolved.insert_component(entity, fragments.position, position) - evolved.insert_component(entity, fragments.velocity, velocity) + local entity = evo.registry.create_entity() + local position = evo.vectors.vector2(512, 50) + local velocity = evo.vectors.vector2(math.random(-20, 20), 20) + evo.registry.insert_component(entity, fragments.position, position) + evo.registry.insert_component(entity, fragments.velocity, velocity) end do - local dt = evolved_singles.get(singles.delta_time) + local dt = evo.singles.get(singles.delta_time) - for chunk in evolved.execute_query(queries.bodies) do + for chunk in evo.registry.execute_query(queries.bodies) do local ps = chunk.components[fragments.position] local vs = chunk.components[fragments.velocity] diff --git a/develop/unbench.lua b/develop/unbench.lua index 21eae22..67ce65b 100644 --- a/develop/unbench.lua +++ b/develop/unbench.lua @@ -1 +1 @@ -local evolved = require 'evolved.evolved' +local evo = require 'evolved.evolved' diff --git a/develop/untests.lua b/develop/untests.lua index 21eae22..67ce65b 100644 --- a/develop/untests.lua +++ b/develop/untests.lua @@ -1 +1 @@ -local evolved = require 'evolved.evolved' +local evo = require 'evolved.evolved' diff --git a/evolved/evolved.lua b/evolved/evolved.lua index e4a3813..10a78cd 100644 --- a/evolved/evolved.lua +++ b/evolved/evolved.lua @@ -1,73 +1,5 @@ ----@class evolved -local evolved = {} - ----@class evolved.entity -local evolved_entity_mt = {} -evolved_entity_mt.__index = evolved_entity_mt - ----@class evolved.query -local evolved_query_mt = {} -evolved_query_mt.__index = evolved_query_mt - ----@class evolved.chunk ----@field entities evolved.entity[] ----@field components table -local evolved_chunk_mt = {} -evolved_chunk_mt.__index = evolved_chunk_mt - ----@return evolved.entity ----@nodiscard -function evolved.create_entity() end - ----@param entity evolved.entity -function evolved.destroy_entity(entity) end - ----@param entity evolved.entity ----@param fragment evolved.entity ----@return any ----@nodiscard -function evolved.get_component(entity, fragment) end - ----@param entity evolved.entity ----@param fragment evolved.entity ----@return boolean ----@nodiscard -function evolved.has_component(entity, fragment) end - ----@param entity evolved.entity ----@param ... evolved.entity ----@return boolean ----@nodiscard -function evolved.has_all_components(entity, ...) end - ----@param entity evolved.entity ----@param ... evolved.entity ----@return boolean ----@nodiscard -function evolved.has_any_components(entity, ...) end - ----@param entity evolved.entity ----@param fragment evolved.entity ----@param component any -function evolved.assign_component(entity, fragment, component) end - ----@param entity evolved.entity ----@param fragment evolved.entity ----@param component any -function evolved.insert_component(entity, fragment, component) end - ----@param entity evolved.entity ----@param fragment evolved.entity -function evolved.remove_component(entity, fragment) end - ----@param ... evolved.entity ----@return evolved.query ----@nodiscard -function evolved.create_query(...) end - ----@param query evolved.query ----@return fun(): evolved.chunk? ----@nodiscard -function evolved.execute_query(query) end - -return evolved +return { + registry = require 'evolved.registry', + singles = require 'evolved.singles', + vectors = require 'evolved.vectors', +} diff --git a/evolved/registry.lua b/evolved/registry.lua new file mode 100644 index 0000000..7de2f00 --- /dev/null +++ b/evolved/registry.lua @@ -0,0 +1,73 @@ +---@class evolved.registry +local registry = {} + +---@class evolved.entity +local evolved_entity_mt = {} +evolved_entity_mt.__index = evolved_entity_mt + +---@class evolved.query +local evolved_query_mt = {} +evolved_query_mt.__index = evolved_query_mt + +---@class evolved.chunk +---@field entities evolved.entity[] +---@field components table +local evolved_chunk_mt = {} +evolved_chunk_mt.__index = evolved_chunk_mt + +---@return evolved.entity +---@nodiscard +function registry.create_entity() end + +---@param entity evolved.entity +function registry.destroy_entity(entity) end + +---@param entity evolved.entity +---@param fragment evolved.entity +---@return any +---@nodiscard +function registry.get_component(entity, fragment) end + +---@param entity evolved.entity +---@param fragment evolved.entity +---@return boolean +---@nodiscard +function registry.has_component(entity, fragment) end + +---@param entity evolved.entity +---@param ... evolved.entity +---@return boolean +---@nodiscard +function registry.has_all_components(entity, ...) end + +---@param entity evolved.entity +---@param ... evolved.entity +---@return boolean +---@nodiscard +function registry.has_any_components(entity, ...) end + +---@param entity evolved.entity +---@param fragment evolved.entity +---@param component any +function registry.assign_component(entity, fragment, component) end + +---@param entity evolved.entity +---@param fragment evolved.entity +---@param component any +function registry.insert_component(entity, fragment, component) end + +---@param entity evolved.entity +---@param fragment evolved.entity +function registry.remove_component(entity, fragment) end + +---@param ... evolved.entity +---@return evolved.query +---@nodiscard +function registry.create_query(...) end + +---@param query evolved.query +---@return fun(): evolved.chunk? +---@nodiscard +function registry.execute_query(query) end + +return registry diff --git a/evolved/singles.lua b/evolved/singles.lua index fb392f4..b9e3992 100644 --- a/evolved/singles.lua +++ b/evolved/singles.lua @@ -1,4 +1,4 @@ -local evolved = require 'evolved.evolved' +local registry = require 'evolved.registry' ---@class evolved.singles local singles = {} @@ -7,8 +7,8 @@ local singles = {} ---@return evolved.entity ---@nodiscard function singles.create(component) - local single = evolved.create_entity() - evolved.insert_component(single, single, component) + local single = registry.create_entity() + registry.insert_component(single, single, component) return single end @@ -16,20 +16,20 @@ end ---@return any ---@nodiscard function singles.get(single) - return evolved.get_component(single, single) + return registry.get_component(single, single) end ---@param single evolved.entity ---@return boolean ---@nodiscard function singles.has(single) - return evolved.has_component(single, single) + return registry.has_component(single, single) end ---@param single evolved.entity ---@param component any function singles.assign(single, component) - evolved.assign_component(single, single, component) + registry.assign_component(single, single, component) end return singles