mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2026-03-22 04:44:06 +07:00
nr/to multi_spawn/lookup versions
This commit is contained in:
131
README.md
131
README.md
@@ -1500,9 +1500,13 @@ cancel :: boolean
|
||||
|
||||
spawn :: component_table?, component_mapper? -> entity
|
||||
multi_spawn :: integer, component_table?, component_mapper? -> entity[], integer
|
||||
multi_spawn_nr :: integer, component_table?, component_mapper? -> ()
|
||||
multi_spawn_to :: entity[], integer, integer, component_table?, component_mapper? -> ()
|
||||
|
||||
clone :: entity, component_table?, component_mapper? -> entity
|
||||
multi_clone :: integer, entity, component_table?, component_mapper? -> entity[], integer
|
||||
multi_clone_nr :: integer, entity, component_table?, component_mapper? -> ()
|
||||
multi_clone_to :: entity[], integer, integer, entity, component_table?, component_mapper? -> ()
|
||||
|
||||
alive :: entity -> boolean
|
||||
alive_all :: entity... -> boolean
|
||||
@@ -1535,6 +1539,7 @@ locate :: entity -> chunk?, integer
|
||||
|
||||
lookup :: string -> entity?
|
||||
multi_lookup :: string -> entity[], integer
|
||||
multi_lookup_to :: entity[], integer, string -> integer
|
||||
|
||||
process :: system... -> ()
|
||||
process_with :: system, ... -> ()
|
||||
@@ -1569,12 +1574,18 @@ builder :: builder
|
||||
|
||||
builder_mt:build :: entity?, component_mapper? -> entity
|
||||
builder_mt:multi_build :: integer, entity?, component_mapper? -> entity[], integer
|
||||
builder_mt:multi_build_nr :: integer, entity?, component_mapper? -> ()
|
||||
builder_mt:multi_build_to :: entity[], integer, integer, entity?, component_mapper? -> ()
|
||||
|
||||
builder_mt:spawn :: component_mapper? -> entity
|
||||
builder_mt:multi_spawn :: integer, component_mapper? -> entity[], integer
|
||||
builder_mt:multi_spawn_nr :: integer, component_mapper? -> ()
|
||||
builder_mt:multi_spawn_to :: entity[], integer, integer, component_mapper? -> ()
|
||||
|
||||
builder_mt:clone :: entity, component_mapper? -> entity
|
||||
builder_mt:multi_clone :: integer, entity, component_mapper? -> entity[], integer
|
||||
builder_mt:multi_clone_nr :: integer, entity, component_mapper? -> ()
|
||||
builder_mt:multi_clone_to :: entity[], integer, integer, entity, component_mapper? -> ()
|
||||
|
||||
builder_mt:has :: fragment -> boolean
|
||||
builder_mt:has_all :: fragment... -> boolean
|
||||
@@ -1835,9 +1846,31 @@ function evolved.spawn(component_table, component_mapper) end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function evolved.multi_spawn(entity_count, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.multi_spawn_nr`
|
||||
|
||||
```lua
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.multi_spawn_nr(entity_count, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.multi_spawn_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.multi_spawn_to(out_entity_list, out_entity_first,
|
||||
entity_count, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.clone`
|
||||
|
||||
```lua
|
||||
@@ -1857,9 +1890,33 @@ function evolved.clone(prefab, component_table, component_mapper) end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function evolved.multi_clone(entity_count, prefab, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.multi_clone_nr`
|
||||
|
||||
```lua
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.multi_clone_nr(entity_count, prefab, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.multi_clone_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.multi_clone_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_table, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.alive`
|
||||
|
||||
```lua
|
||||
@@ -2065,6 +2122,16 @@ function evolved.lookup(name) end
|
||||
function evolved.multi_lookup(name) end
|
||||
```
|
||||
|
||||
### `evolved.multi_lookup_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param name string
|
||||
---@return integer entity_count
|
||||
function evolved.multi_lookup_to(out_entity_list, out_entity_first, name) end
|
||||
```
|
||||
|
||||
### `evolved.process`
|
||||
|
||||
```lua
|
||||
@@ -2207,9 +2274,31 @@ function evolved.builder_mt:build(prefab, component_mapper) end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function evolved.builder_mt:multi_build(entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.builder_mt:multi_build_nr`
|
||||
|
||||
```lua
|
||||
---@param entity_count integer
|
||||
---@param prefab? evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_build_nr(entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
### `evolved.builder_mt:multi_build_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab? evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_build_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:spawn`
|
||||
|
||||
```lua
|
||||
@@ -2225,9 +2314,29 @@ function evolved.builder_mt:spawn(component_mapper) end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function evolved.builder_mt:multi_spawn(entity_count, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:multi_spawn_nr`
|
||||
|
||||
```lua
|
||||
---@param entity_count integer
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_spawn_nr(entity_count, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:multi_spawn_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_spawn_to(out_entity_list, out_entity_first,
|
||||
entity_count, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:clone`
|
||||
|
||||
```lua
|
||||
@@ -2245,9 +2354,31 @@ function evolved.builder_mt:clone(prefab, component_mapper) end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function evolved.builder_mt:multi_clone(entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:multi_clone_nr`
|
||||
|
||||
```lua
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_clone_nr(entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:multi_clone_to`
|
||||
|
||||
```lua
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function evolved.builder_mt:multi_clone_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_mapper) end
|
||||
```
|
||||
|
||||
#### `evolved.builder_mt:has`
|
||||
|
||||
```lua
|
||||
|
||||
349
evolved.lua
349
evolved.lua
@@ -1149,11 +1149,6 @@ local __DESTRUCTION_POLICY_REMOVE_FRAGMENT = __acquire_id()
|
||||
---
|
||||
|
||||
local __safe_tbls = {
|
||||
__EMPTY_ENTITY_LIST = __lua_setmetatable({}, {
|
||||
__tostring = function() return 'empty entity list' end,
|
||||
__newindex = function() __error_fmt 'attempt to modify empty entity list' end
|
||||
}) --[=[@as evolved.id[]]=],
|
||||
|
||||
__EMPTY_FRAGMENT_SET = __lua_setmetatable({}, {
|
||||
__tostring = function() return 'empty fragment set' end,
|
||||
__newindex = function() __error_fmt 'attempt to modify empty fragment set' end
|
||||
@@ -1184,9 +1179,13 @@ local __evolved_cancel
|
||||
|
||||
local __evolved_spawn
|
||||
local __evolved_multi_spawn
|
||||
local __evolved_multi_spawn_nr
|
||||
local __evolved_multi_spawn_to
|
||||
|
||||
local __evolved_clone
|
||||
local __evolved_multi_clone
|
||||
local __evolved_multi_clone_nr
|
||||
local __evolved_multi_clone_to
|
||||
|
||||
local __evolved_alive
|
||||
local __evolved_alive_all
|
||||
@@ -1221,6 +1220,7 @@ local __evolved_locate
|
||||
|
||||
local __evolved_lookup
|
||||
local __evolved_multi_lookup
|
||||
local __evolved_multi_lookup_to
|
||||
|
||||
local __evolved_process
|
||||
local __evolved_process_with
|
||||
@@ -2681,10 +2681,11 @@ end
|
||||
|
||||
---@param chunk? evolved.chunk
|
||||
---@param entity_list evolved.entity[]
|
||||
---@param entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __multi_spawn_entity(chunk, entity_list, entity_count, component_table, component_mapper)
|
||||
function __multi_spawn_entity(chunk, entity_list, entity_first, entity_count, component_table, component_mapper)
|
||||
if __defer_depth <= 0 then
|
||||
__error_fmt('spawn entity operations should be deferred')
|
||||
end
|
||||
@@ -2732,7 +2733,7 @@ function __multi_spawn_entity(chunk, entity_list, entity_count, component_table,
|
||||
local entity_places = __entity_places
|
||||
|
||||
for place = b_place, e_place do
|
||||
local entity = entity_list[place - b_place + 1]
|
||||
local entity = entity_list[place - b_place + entity_first]
|
||||
chunk_entity_list[place] = entity
|
||||
|
||||
local entity_primary = entity % 2 ^ 20
|
||||
@@ -2980,10 +2981,11 @@ end
|
||||
|
||||
---@param prefab evolved.entity
|
||||
---@param entity_list evolved.entity[]
|
||||
---@param entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
function __multi_clone_entity(prefab, entity_list, entity_first, entity_count, component_table, component_mapper)
|
||||
if __defer_depth <= 0 then
|
||||
__error_fmt('clone entity operations should be deferred')
|
||||
end
|
||||
@@ -2999,7 +3001,9 @@ function __multi_clone_entity(prefab, entity_list, entity_count, component_table
|
||||
end
|
||||
|
||||
if not prefab_chunk or not prefab_chunk.__without_unique_fragments then
|
||||
return __multi_spawn_entity(nil, entity_list, entity_count, component_table, component_mapper)
|
||||
return __multi_spawn_entity(nil,
|
||||
entity_list, entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
end
|
||||
|
||||
local chunk = component_table
|
||||
@@ -3048,7 +3052,7 @@ function __multi_clone_entity(prefab, entity_list, entity_count, component_table
|
||||
local entity_places = __entity_places
|
||||
|
||||
for place = b_place, e_place do
|
||||
local entity = entity_list[place - b_place + 1]
|
||||
local entity = entity_list[place - b_place + entity_first]
|
||||
chunk_entity_list[place] = entity
|
||||
|
||||
local entity_primary = entity % 2 ^ 20
|
||||
@@ -4379,10 +4383,10 @@ function __defer_spawn_entity(chunk, entity, component_table, component_mapper)
|
||||
end
|
||||
|
||||
__defer_ops[__defer_op.spawn_entity] = function(bytes, index)
|
||||
local chunk = bytes[index + 0]
|
||||
local entity = bytes[index + 1]
|
||||
local component_table2 = bytes[index + 2]
|
||||
local component_mapper = bytes[index + 3]
|
||||
local chunk = bytes[index + 0] ---@type evolved.chunk
|
||||
local entity = bytes[index + 1] ---@type evolved.entity
|
||||
local component_table2 = bytes[index + 2] ---@type evolved.component_table?
|
||||
local component_mapper = bytes[index + 3] ---@type evolved.component_mapper?
|
||||
|
||||
__evolved_defer()
|
||||
do
|
||||
@@ -4399,15 +4403,16 @@ end
|
||||
|
||||
---@param chunk? evolved.chunk
|
||||
---@param entity_list evolved.entity[]
|
||||
---@param entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __defer_multi_spawn_entity(chunk, entity_list, entity_count, component_table, component_mapper)
|
||||
function __defer_multi_spawn_entity(chunk, entity_list, entity_first, entity_count, component_table, component_mapper)
|
||||
---@type evolved.entity[]
|
||||
local entity_list2 = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
__lua_table_move(
|
||||
entity_list, 1, entity_count,
|
||||
entity_list, entity_first, entity_first + entity_count - 1,
|
||||
1, entity_list2)
|
||||
|
||||
---@type evolved.component_table?
|
||||
@@ -4435,15 +4440,17 @@ function __defer_multi_spawn_entity(chunk, entity_list, entity_count, component_
|
||||
end
|
||||
|
||||
__defer_ops[__defer_op.multi_spawn_entity] = function(bytes, index)
|
||||
local chunk = bytes[index + 0]
|
||||
local entity_count = bytes[index + 1]
|
||||
local entity_list2 = bytes[index + 2]
|
||||
local component_table2 = bytes[index + 3]
|
||||
local component_mapper = bytes[index + 4]
|
||||
local chunk = bytes[index + 0] ---@type evolved.chunk
|
||||
local entity_count = bytes[index + 1] ---@type integer
|
||||
local entity_list2 = bytes[index + 2] ---@type evolved.entity[]
|
||||
local component_table2 = bytes[index + 3] ---@type evolved.component_table?
|
||||
local component_mapper = bytes[index + 4] ---@type evolved.component_mapper?
|
||||
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_spawn_entity(chunk, entity_list2, entity_count, component_table2, component_mapper)
|
||||
__multi_spawn_entity(chunk,
|
||||
entity_list2, 1, entity_count,
|
||||
component_table2, component_mapper)
|
||||
|
||||
if entity_list2 then
|
||||
__release_table(__table_pool_tag.entity_list, entity_list2, false, true)
|
||||
@@ -4487,10 +4494,10 @@ function __defer_clone_entity(prefab, entity, component_table, component_mapper)
|
||||
end
|
||||
|
||||
__defer_ops[__defer_op.clone_entity] = function(bytes, index)
|
||||
local prefab = bytes[index + 0]
|
||||
local entity = bytes[index + 1]
|
||||
local component_table2 = bytes[index + 2]
|
||||
local component_mapper = bytes[index + 3]
|
||||
local prefab = bytes[index + 0] ---@type evolved.entity
|
||||
local entity = bytes[index + 1] ---@type evolved.entity
|
||||
local component_table2 = bytes[index + 2] ---@type evolved.component_table?
|
||||
local component_mapper = bytes[index + 3] ---@type evolved.component_mapper?
|
||||
|
||||
__evolved_defer()
|
||||
do
|
||||
@@ -4507,15 +4514,16 @@ end
|
||||
|
||||
---@param prefab evolved.entity
|
||||
---@param entity_list evolved.entity[]
|
||||
---@param entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __defer_multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
function __defer_multi_clone_entity(prefab, entity_list, entity_first, entity_count, component_table, component_mapper)
|
||||
---@type evolved.entity[]
|
||||
local entity_list2 = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
__lua_table_move(
|
||||
entity_list, 1, entity_count,
|
||||
entity_list, entity_first, entity_first + entity_count - 1,
|
||||
1, entity_list2)
|
||||
|
||||
---@type evolved.component_table?
|
||||
@@ -4543,15 +4551,17 @@ function __defer_multi_clone_entity(prefab, entity_list, entity_count, component
|
||||
end
|
||||
|
||||
__defer_ops[__defer_op.multi_clone_entity] = function(bytes, index)
|
||||
local prefab = bytes[index + 0]
|
||||
local entity_count = bytes[index + 1]
|
||||
local entity_list2 = bytes[index + 2]
|
||||
local component_table2 = bytes[index + 3]
|
||||
local component_mapper = bytes[index + 4]
|
||||
local prefab = bytes[index + 0] ---@type evolved.entity
|
||||
local entity_count = bytes[index + 1] ---@type integer
|
||||
local entity_list2 = bytes[index + 2] ---@type evolved.entity[]
|
||||
local component_table2 = bytes[index + 3] ---@type evolved.component_table?
|
||||
local component_mapper = bytes[index + 4] ---@type evolved.component_mapper?
|
||||
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_clone_entity(prefab, entity_list2, entity_count, component_table2, component_mapper)
|
||||
__multi_clone_entity(prefab,
|
||||
entity_list2, 1, entity_count,
|
||||
component_table2, component_mapper)
|
||||
|
||||
if entity_list2 then
|
||||
__release_table(__table_pool_tag.entity_list, entity_list2, false, true)
|
||||
@@ -4922,9 +4932,47 @@ end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __evolved_multi_spawn(entity_count, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return __safe_tbls.__EMPTY_ENTITY_LIST, 0
|
||||
return {}, 0
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
__evolved_multi_spawn_to(
|
||||
entity_list, 1, entity_count,
|
||||
component_table, component_mapper)
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __evolved_multi_spawn_nr(entity_count, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local entity_list = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
__evolved_multi_spawn_to(
|
||||
entity_list, 1, entity_count,
|
||||
component_table, component_mapper)
|
||||
|
||||
__release_table(__table_pool_tag.entity_list, entity_list, false, true)
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __evolved_multi_spawn_to(out_entity_list, out_entity_first,
|
||||
entity_count, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if __debug_mode then
|
||||
@@ -4938,27 +4986,27 @@ function __evolved_multi_spawn(entity_count, component_table, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
for entity_index = 1, entity_count do
|
||||
entity_list[entity_index] = __acquire_id()
|
||||
for entity_index = out_entity_first, out_entity_first + entity_count - 1 do
|
||||
out_entity_list[entity_index] = __acquire_id()
|
||||
end
|
||||
|
||||
if not component_table or not __lua_next(component_table) then
|
||||
return entity_list, entity_count
|
||||
return
|
||||
end
|
||||
|
||||
if __defer_depth > 0 then
|
||||
__defer_multi_spawn_entity(nil, entity_list, entity_count, component_table, component_mapper)
|
||||
__defer_multi_spawn_entity(nil,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
else
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_spawn_entity(nil, entity_list, entity_count, component_table, component_mapper)
|
||||
__multi_spawn_entity(nil,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
end
|
||||
__evolved_commit()
|
||||
end
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param prefab evolved.entity
|
||||
@@ -5003,9 +5051,49 @@ end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __evolved_multi_clone(entity_count, prefab, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return __safe_tbls.__EMPTY_ENTITY_LIST, 0
|
||||
return {}, 0
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
__evolved_multi_clone_to(
|
||||
entity_list, 1, entity_count,
|
||||
prefab, component_table, component_mapper)
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __evolved_multi_clone_nr(entity_count, prefab, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local entity_list = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
__evolved_multi_clone_to(
|
||||
entity_list, 1, entity_count,
|
||||
prefab, component_table, component_mapper)
|
||||
|
||||
__release_table(__table_pool_tag.entity_list, entity_list, false, true)
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_table? evolved.component_table
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __evolved_multi_clone_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_table, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
if __debug_mode then
|
||||
@@ -5024,23 +5112,23 @@ function __evolved_multi_clone(entity_count, prefab, component_table, component_
|
||||
end
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
for entity_index = 1, entity_count do
|
||||
entity_list[entity_index] = __acquire_id()
|
||||
for entity_index = out_entity_first, out_entity_first + entity_count - 1 do
|
||||
out_entity_list[entity_index] = __acquire_id()
|
||||
end
|
||||
|
||||
if __defer_depth > 0 then
|
||||
__defer_multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
__defer_multi_clone_entity(prefab,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
else
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
__multi_clone_entity(prefab,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
end
|
||||
__evolved_commit()
|
||||
end
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param entity evolved.entity
|
||||
@@ -6165,13 +6253,26 @@ end
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __evolved_multi_lookup(name)
|
||||
local entity_list = {}
|
||||
local entity_count = __evolved_multi_lookup_to(entity_list, 1, name)
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param name string
|
||||
---@return integer entity_count
|
||||
function __evolved_multi_lookup_to(out_entity_list, out_entity_first, name)
|
||||
do
|
||||
local named_entities = __named_entities[name]
|
||||
local named_entity_list = named_entities and named_entities.__item_list
|
||||
local named_entity_count = named_entities and named_entities.__item_count or 0
|
||||
|
||||
if named_entity_count > 0 then
|
||||
return __list_fns.dup(named_entity_list, named_entity_count), named_entity_count
|
||||
__lua_table_move(
|
||||
named_entity_list, 1, named_entity_count,
|
||||
out_entity_first, out_entity_list)
|
||||
return named_entity_count
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6179,11 +6280,12 @@ function __evolved_multi_lookup(name)
|
||||
local named_entity = __named_entity[name]
|
||||
|
||||
if named_entity then
|
||||
return { named_entity }, 1
|
||||
out_entity_list[out_entity_first] = named_entity
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return __safe_tbls.__EMPTY_ENTITY_LIST, 0
|
||||
return 0
|
||||
end
|
||||
|
||||
---@param ... evolved.system systems
|
||||
@@ -6531,6 +6633,7 @@ end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __builder_mt:multi_build(entity_count, prefab, component_mapper)
|
||||
if prefab then
|
||||
return self:multi_clone(entity_count, prefab, component_mapper)
|
||||
@@ -6539,6 +6642,31 @@ function __builder_mt:multi_build(entity_count, prefab, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
---@param entity_count integer
|
||||
---@param prefab? evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_build_nr(entity_count, prefab, component_mapper)
|
||||
if prefab then
|
||||
self:multi_clone_nr(entity_count, prefab, component_mapper)
|
||||
else
|
||||
self:multi_spawn_nr(entity_count, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab? evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_build_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_mapper)
|
||||
if prefab then
|
||||
self:multi_clone_to(out_entity_list, out_entity_first, entity_count, prefab, component_mapper)
|
||||
else
|
||||
self:multi_spawn_to(out_entity_list, out_entity_first, entity_count, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity entity
|
||||
function __builder_mt:spawn(component_mapper)
|
||||
@@ -6579,9 +6707,41 @@ end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __builder_mt:multi_spawn(entity_count, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return __safe_tbls.__EMPTY_ENTITY_LIST, 0
|
||||
return {}, 0
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
self:multi_spawn_to(entity_list, 1, entity_count, component_mapper)
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param entity_count integer
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_spawn_nr(entity_count, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local entity_list = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
self:multi_spawn_to(entity_list, 1, entity_count, component_mapper)
|
||||
|
||||
__release_table(__table_pool_tag.entity_list, entity_list, false, true)
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_spawn_to(out_entity_list, out_entity_first,
|
||||
entity_count, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local chunk = self.__chunk
|
||||
@@ -6598,27 +6758,27 @@ function __builder_mt:multi_spawn(entity_count, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
for entity_index = 1, entity_count do
|
||||
entity_list[entity_index] = __acquire_id()
|
||||
for entity_index = out_entity_first, out_entity_first + entity_count - 1 do
|
||||
out_entity_list[entity_index] = __acquire_id()
|
||||
end
|
||||
|
||||
if not component_table or not __lua_next(component_table) then
|
||||
return entity_list, entity_count
|
||||
return
|
||||
end
|
||||
|
||||
if __defer_depth > 0 then
|
||||
__defer_multi_spawn_entity(chunk, entity_list, entity_count, component_table, component_mapper)
|
||||
__defer_multi_spawn_entity(chunk,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
else
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_spawn_entity(chunk, entity_list, entity_count, component_table, component_mapper)
|
||||
__multi_spawn_entity(chunk,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
end
|
||||
__evolved_commit()
|
||||
end
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param prefab evolved.entity
|
||||
@@ -6663,9 +6823,43 @@ end
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
---@return evolved.entity[] entity_list
|
||||
---@return integer entity_count
|
||||
---@nodiscard
|
||||
function __builder_mt:multi_clone(entity_count, prefab, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return __safe_tbls.__EMPTY_ENTITY_LIST, 0
|
||||
return {}, 0
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
self:multi_clone_to(entity_list, 1, entity_count, prefab, component_mapper)
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_clone_nr(entity_count, prefab, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local entity_list = __acquire_table(__table_pool_tag.entity_list)
|
||||
|
||||
self:multi_clone_to(entity_list, 1, entity_count, prefab, component_mapper)
|
||||
|
||||
__release_table(__table_pool_tag.entity_list, entity_list, false, true)
|
||||
end
|
||||
|
||||
---@param out_entity_list evolved.entity[]
|
||||
---@param out_entity_first integer
|
||||
---@param entity_count integer
|
||||
---@param prefab evolved.entity
|
||||
---@param component_mapper? evolved.component_mapper
|
||||
function __builder_mt:multi_clone_to(out_entity_list, out_entity_first,
|
||||
entity_count, prefab, component_mapper)
|
||||
if entity_count <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local component_table = self.__component_table
|
||||
@@ -6686,23 +6880,23 @@ function __builder_mt:multi_clone(entity_count, prefab, component_mapper)
|
||||
end
|
||||
end
|
||||
|
||||
local entity_list = __lua_table_new(entity_count)
|
||||
|
||||
for entity_index = 1, entity_count do
|
||||
entity_list[entity_index] = __acquire_id()
|
||||
for entity_index = out_entity_first, out_entity_first + entity_count - 1 do
|
||||
out_entity_list[entity_index] = __acquire_id()
|
||||
end
|
||||
|
||||
if __defer_depth > 0 then
|
||||
__defer_multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
__defer_multi_clone_entity(prefab,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
else
|
||||
__evolved_defer()
|
||||
do
|
||||
__multi_clone_entity(prefab, entity_list, entity_count, component_table, component_mapper)
|
||||
__multi_clone_entity(prefab,
|
||||
out_entity_list, out_entity_first, entity_count,
|
||||
component_table, component_mapper)
|
||||
end
|
||||
__evolved_commit()
|
||||
end
|
||||
|
||||
return entity_list, entity_count
|
||||
end
|
||||
|
||||
---@param fragment evolved.fragment
|
||||
@@ -7660,9 +7854,13 @@ evolved.cancel = __evolved_cancel
|
||||
|
||||
evolved.spawn = __evolved_spawn
|
||||
evolved.multi_spawn = __evolved_multi_spawn
|
||||
evolved.multi_spawn_nr = __evolved_multi_spawn_nr
|
||||
evolved.multi_spawn_to = __evolved_multi_spawn_to
|
||||
|
||||
evolved.clone = __evolved_clone
|
||||
evolved.multi_clone = __evolved_multi_clone
|
||||
evolved.multi_clone_nr = __evolved_multi_clone_nr
|
||||
evolved.multi_clone_to = __evolved_multi_clone_to
|
||||
|
||||
evolved.alive = __evolved_alive
|
||||
evolved.alive_all = __evolved_alive_all
|
||||
@@ -7695,6 +7893,7 @@ evolved.locate = __evolved_locate
|
||||
|
||||
evolved.lookup = __evolved_lookup
|
||||
evolved.multi_lookup = __evolved_multi_lookup
|
||||
evolved.multi_lookup_to = __evolved_multi_lookup_to
|
||||
|
||||
evolved.process = __evolved_process
|
||||
evolved.process_with = __evolved_process_with
|
||||
|
||||
Reference in New Issue
Block a user