mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-16 22:19:25 +07:00
create entity without multi inserts
This commit is contained in:
@@ -7,6 +7,12 @@ local fragments = {
|
|||||||
velocity = registry:entity(),
|
velocity = registry:entity(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
registry:entity(
|
||||||
|
fragments.position,
|
||||||
|
fragments.velocity)
|
||||||
|
end
|
||||||
|
|
||||||
do
|
do
|
||||||
local entity = registry:entity()
|
local entity = registry:entity()
|
||||||
entity:insert(fragments.position)
|
entity:insert(fragments.position)
|
||||||
|
|||||||
@@ -27,6 +27,31 @@ local function describe(name, func, ...)
|
|||||||
collectgarbage('restart')
|
collectgarbage('restart')
|
||||||
end
|
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()
|
describe('entity:chunk', function()
|
||||||
for _ = 1, 500 do
|
for _ = 1, 500 do
|
||||||
local registry = evolved.registry()
|
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
|
---@param ... evolved.entity
|
||||||
---@return evolved.query
|
---@return evolved.query
|
||||||
function evolved_registry_mt:query(...)
|
function evolved_registry_mt:query(...)
|
||||||
@@ -318,8 +330,9 @@ function evolved_registry_mt:query(...)
|
|||||||
return query
|
return query
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param ... evolved.entity
|
||||||
---@return evolved.entity
|
---@return evolved.entity
|
||||||
function evolved_registry_mt:entity()
|
function evolved_registry_mt:entity(...)
|
||||||
local id = self.nextid
|
local id = self.nextid
|
||||||
self.nextid = self.nextid + 1
|
self.nextid = self.nextid + 1
|
||||||
|
|
||||||
@@ -333,9 +346,7 @@ function evolved_registry_mt:entity()
|
|||||||
setmetatable(entity, evolved_entity_mt)
|
setmetatable(entity, evolved_entity_mt)
|
||||||
self.entities[#self.entities + 1] = entity
|
self.entities[#self.entities + 1] = entity
|
||||||
|
|
||||||
do
|
self:chunk(...):insert(entity)
|
||||||
self.chunks[1]:insert(entity)
|
|
||||||
end
|
|
||||||
|
|
||||||
return entity
|
return entity
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user