mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-13 11:38:15 +07:00
create entity without multi inserts
This commit is contained in:
@@ -7,6 +7,12 @@ local fragments = {
|
||||
velocity = registry:entity(),
|
||||
}
|
||||
|
||||
do
|
||||
registry:entity(
|
||||
fragments.position,
|
||||
fragments.velocity)
|
||||
end
|
||||
|
||||
do
|
||||
local entity = registry:entity()
|
||||
entity:insert(fragments.position)
|
||||
|
||||
@@ -27,6 +27,31 @@ local function describe(name, func, ...)
|
||||
collectgarbage('restart')
|
||||
end
|
||||
|
||||
describe('entity:entity', function()
|
||||
for _ = 1, 500 do
|
||||
local registry = evolved.registry()
|
||||
|
||||
---@type evolved.entity[]
|
||||
local all_fragments = {}
|
||||
local all_fragment_count = math.random(1, 10)
|
||||
for i = 1, all_fragment_count do all_fragments[i] = registry:entity() end
|
||||
|
||||
for _ = 1, 100 do
|
||||
---@type evolved.entity[]
|
||||
local insert_fragments = {}
|
||||
local insert_fragment_count = math.random(1, 10)
|
||||
for i = 1, insert_fragment_count do insert_fragments[i] = all_fragments[math.random(1, all_fragment_count)] end
|
||||
|
||||
local e1 = registry:entity()
|
||||
for _, fragment in ipairs(insert_fragments) do e1:insert(fragment) end
|
||||
|
||||
local e2 = registry:entity(unpack(insert_fragments))
|
||||
|
||||
assert(e1.chunk == e2.chunk)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
describe('entity:chunk', function()
|
||||
for _ = 1, 500 do
|
||||
local registry = evolved.registry()
|
||||
|
||||
19
evolved.lua
19
evolved.lua
@@ -276,6 +276,18 @@ end
|
||||
---
|
||||
---
|
||||
|
||||
---@param ... evolved.entity
|
||||
---@return evolved.chunk
|
||||
function evolved_registry_mt:chunk(...)
|
||||
local chunk = self.chunks[1]
|
||||
|
||||
for i = 1, select('#', ...) do
|
||||
chunk = chunk:with(select(i, ...))
|
||||
end
|
||||
|
||||
return chunk
|
||||
end
|
||||
|
||||
---@param ... evolved.entity
|
||||
---@return evolved.query
|
||||
function evolved_registry_mt:query(...)
|
||||
@@ -318,8 +330,9 @@ function evolved_registry_mt:query(...)
|
||||
return query
|
||||
end
|
||||
|
||||
---@param ... evolved.entity
|
||||
---@return evolved.entity
|
||||
function evolved_registry_mt:entity()
|
||||
function evolved_registry_mt:entity(...)
|
||||
local id = self.nextid
|
||||
self.nextid = self.nextid + 1
|
||||
|
||||
@@ -333,9 +346,7 @@ function evolved_registry_mt:entity()
|
||||
setmetatable(entity, evolved_entity_mt)
|
||||
self.entities[#self.entities + 1] = entity
|
||||
|
||||
do
|
||||
self.chunks[1]:insert(entity)
|
||||
end
|
||||
self:chunk(...):insert(entity)
|
||||
|
||||
return entity
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user