modules refactoring

This commit is contained in:
BlackMATov
2024-11-21 01:02:12 +07:00
parent c13ea001d5
commit eefdf2e58b
6 changed files with 98 additions and 95 deletions

View File

@@ -1,34 +1,32 @@
local evolved = require 'evolved.evolved' local evo = require 'evolved.evolved'
local evolved_singles = require 'evolved.singles'
local evolved_vectors = require 'evolved.vectors'
local singles = { local singles = {
delta_time = evolved_singles.create(0.016), delta_time = evo.singles.create(0.016),
} }
local fragments = { local fragments = {
position = evolved.create_entity(), position = evo.registry.create_entity(),
velocity = evolved.create_entity(), velocity = evo.registry.create_entity(),
} }
local queries = { local queries = {
bodies = evolved.create_query( bodies = evo.registry.create_query(
fragments.position, fragments.position,
fragments.velocity), fragments.velocity),
} }
do do
local entity = evolved.create_entity() local entity = evo.registry.create_entity()
local position = evolved_vectors.vector2(512, 50) local position = evo.vectors.vector2(512, 50)
local velocity = evolved_vectors.vector2(math.random(-20, 20), 20) local velocity = evo.vectors.vector2(math.random(-20, 20), 20)
evolved.insert_component(entity, fragments.position, position) evo.registry.insert_component(entity, fragments.position, position)
evolved.insert_component(entity, fragments.velocity, velocity) evo.registry.insert_component(entity, fragments.velocity, velocity)
end end
do 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 ps = chunk.components[fragments.position]
local vs = chunk.components[fragments.velocity] local vs = chunk.components[fragments.velocity]

View File

@@ -1 +1 @@
local evolved = require 'evolved.evolved' local evo = require 'evolved.evolved'

View File

@@ -1 +1 @@
local evolved = require 'evolved.evolved' local evo = require 'evolved.evolved'

View File

@@ -1,73 +1,5 @@
---@class evolved return {
local evolved = {} registry = require 'evolved.registry',
singles = require 'evolved.singles',
---@class evolved.entity vectors = require 'evolved.vectors',
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<evolved.entity, any[]>
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

73
evolved/registry.lua Normal file
View File

@@ -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<evolved.entity, any[]>
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

View File

@@ -1,4 +1,4 @@
local evolved = require 'evolved.evolved' local registry = require 'evolved.registry'
---@class evolved.singles ---@class evolved.singles
local singles = {} local singles = {}
@@ -7,8 +7,8 @@ local singles = {}
---@return evolved.entity ---@return evolved.entity
---@nodiscard ---@nodiscard
function singles.create(component) function singles.create(component)
local single = evolved.create_entity() local single = registry.create_entity()
evolved.insert_component(single, single, component) registry.insert_component(single, single, component)
return single return single
end end
@@ -16,20 +16,20 @@ end
---@return any ---@return any
---@nodiscard ---@nodiscard
function singles.get(single) function singles.get(single)
return evolved.get_component(single, single) return registry.get_component(single, single)
end end
---@param single evolved.entity ---@param single evolved.entity
---@return boolean ---@return boolean
---@nodiscard ---@nodiscard
function singles.has(single) function singles.has(single)
return evolved.has_component(single, single) return registry.has_component(single, single)
end end
---@param single evolved.entity ---@param single evolved.entity
---@param component any ---@param component any
function singles.assign(single, component) function singles.assign(single, component)
evolved.assign_component(single, single, component) registry.assign_component(single, single, component)
end end
return singles return singles