mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-13 03:29:08 +07:00
simple not impl api
This commit is contained in:
@@ -1 +1,41 @@
|
||||
local evolved = require 'evolved.evolved'
|
||||
local evolved_singles = require 'evolved.singles'
|
||||
local evolved_vectors = require 'evolved.vectors'
|
||||
|
||||
local registry = evolved.create_registry()
|
||||
|
||||
local singles = {
|
||||
delta_time = evolved_singles.create(registry, 0.016),
|
||||
}
|
||||
|
||||
local fragments = {
|
||||
position = evolved.create_entity(registry),
|
||||
velocity = evolved.create_entity(registry),
|
||||
}
|
||||
|
||||
local queries = {
|
||||
bodies = evolved.create_query(registry,
|
||||
fragments.position,
|
||||
fragments.velocity),
|
||||
}
|
||||
|
||||
do
|
||||
local entity = evolved.create_entity(registry)
|
||||
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)
|
||||
end
|
||||
|
||||
do
|
||||
local dt = evolved_singles.get(singles.delta_time)
|
||||
|
||||
for chunk in evolved.execute_query(queries.bodies) do
|
||||
local ps = chunk.components[fragments.position]
|
||||
local vs = chunk.components[fragments.velocity]
|
||||
|
||||
for i in #chunk.entities do
|
||||
ps[i] = ps[i] + vs[i] * dt
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,75 @@
|
||||
---@class evolved.registry
|
||||
---
|
||||
---@class evolved.entity
|
||||
---
|
||||
---@class evolved.query
|
||||
---
|
||||
---@class evolved.chunk
|
||||
---@field entities evolved.entity[]
|
||||
---@field components table<evolved.entity, any[]>
|
||||
|
||||
---@class evolved
|
||||
local evolved = {}
|
||||
|
||||
---@return evolved.registry
|
||||
---@nodiscard
|
||||
function evolved.create_registry() end
|
||||
|
||||
---@param registry evolved.registry
|
||||
---@return evolved.entity
|
||||
---@nodiscard
|
||||
function evolved.create_entity(registry) 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 registry evolved.registry
|
||||
---@param ... evolved.entity
|
||||
---@return evolved.query
|
||||
---@nodiscard
|
||||
function evolved.create_query(registry, ...) end
|
||||
|
||||
---@param query evolved.query
|
||||
---@return fun(): evolved.chunk?
|
||||
---@nodiscard
|
||||
function evolved.execute_query(query) end
|
||||
|
||||
return evolved
|
||||
|
||||
36
evolved/singles.lua
Normal file
36
evolved/singles.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
local evolved = require 'evolved.evolved'
|
||||
|
||||
---@class evolved.singles
|
||||
local singles = {}
|
||||
|
||||
---@param registry evolved.registry
|
||||
---@param component any
|
||||
---@return evolved.entity
|
||||
---@nodiscard
|
||||
function singles.create(registry, component)
|
||||
local single = evolved.create_entity(registry)
|
||||
evolved.insert_component(single, single, component)
|
||||
return single
|
||||
end
|
||||
|
||||
---@param single evolved.entity
|
||||
---@return any
|
||||
---@nodiscard
|
||||
function singles.get(single)
|
||||
return evolved.get_component(single, single)
|
||||
end
|
||||
|
||||
---@param single evolved.entity
|
||||
---@return boolean
|
||||
---@nodiscard
|
||||
function singles.has(single)
|
||||
return evolved.has_component(single, single)
|
||||
end
|
||||
|
||||
---@param single evolved.entity
|
||||
---@param component any
|
||||
function singles.assign(single, component)
|
||||
evolved.assign_component(single, single, component)
|
||||
end
|
||||
|
||||
return singles
|
||||
Reference in New Issue
Block a user