mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-16 14:11:16 +07:00
remove wildcard-set
This commit is contained in:
@@ -530,10 +530,6 @@ do
|
|||||||
evo.set(e, evo.pair(p1, s2), 42)
|
evo.set(e, evo.pair(p1, s2), 42)
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 84)
|
assert(evo.get(e, evo.pair(p1, s1)) == 84)
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 42)
|
assert(evo.get(e, evo.pair(p1, s2)) == 42)
|
||||||
|
|
||||||
evo.set(e, evo.pair(p1, evo.ANY), 21)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 21)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 21)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -810,106 +806,6 @@ do
|
|||||||
assert(evo.secondary_count(e, evo.ANY) == 0)
|
assert(evo.secondary_count(e, evo.ANY) == 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
do
|
|
||||||
local f, p1, p2, s1, s2 = evo.id(5)
|
|
||||||
|
|
||||||
do
|
|
||||||
local e = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:set(evo.pair(p1, s1), 42)
|
|
||||||
:set(evo.pair(p1, s2), 84)
|
|
||||||
:set(evo.pair(p2, s1), 21)
|
|
||||||
:set(evo.pair(p2, s2), 63)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
local ef = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
evo.set(e, evo.pair(p1, evo.ANY), 99)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 21)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 63)
|
|
||||||
|
|
||||||
local q = evo.builder():include(f):spawn()
|
|
||||||
evo.batch_set(q, evo.pair(p1, evo.ANY), 42)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 21)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 63)
|
|
||||||
|
|
||||||
assert(evo.has(ef, f))
|
|
||||||
assert(not evo.has(ef, evo.pair(evo.ANY, evo.ANY)))
|
|
||||||
end
|
|
||||||
|
|
||||||
do
|
|
||||||
local e = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:set(evo.pair(p1, s1), 42)
|
|
||||||
:set(evo.pair(p1, s2), 84)
|
|
||||||
:set(evo.pair(p2, s1), 21)
|
|
||||||
:set(evo.pair(p2, s2), 63)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
local ef = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
evo.set(e, evo.pair(evo.ANY, s1), 99)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 84)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 63)
|
|
||||||
|
|
||||||
local q = evo.builder():include(f):spawn()
|
|
||||||
evo.batch_set(q, evo.pair(evo.ANY, s1), 42)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 84)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 63)
|
|
||||||
|
|
||||||
assert(evo.has(ef, f))
|
|
||||||
assert(not evo.has(ef, evo.pair(evo.ANY, evo.ANY)))
|
|
||||||
end
|
|
||||||
|
|
||||||
do
|
|
||||||
local e = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:set(evo.pair(p1, s1), 42)
|
|
||||||
:set(evo.pair(p1, s2), 84)
|
|
||||||
:set(evo.pair(p2, s1), 21)
|
|
||||||
:set(evo.pair(p2, s2), 63)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
local ef = evo.builder()
|
|
||||||
:set(f)
|
|
||||||
:spawn()
|
|
||||||
|
|
||||||
evo.set(e, evo.pair(evo.ANY, evo.ANY), 99)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 99)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 99)
|
|
||||||
|
|
||||||
local q = evo.builder():include(f):spawn()
|
|
||||||
evo.batch_set(q, evo.pair(evo.ANY, evo.ANY), 42)
|
|
||||||
|
|
||||||
assert(evo.get(e, evo.pair(p1, s1)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p1, s2)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s1)) == 42)
|
|
||||||
assert(evo.get(e, evo.pair(p2, s2)) == 42)
|
|
||||||
|
|
||||||
assert(evo.has(ef, f))
|
|
||||||
assert(not evo.has(ef, evo.pair(evo.ANY, evo.ANY)))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
do
|
do
|
||||||
do
|
do
|
||||||
local p, s = evo.id(2)
|
local p, s = evo.id(2)
|
||||||
|
|||||||
79
evolved.lua
79
evolved.lua
@@ -3193,43 +3193,6 @@ function __chunk_set(old_chunk, fragment, component)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if __is_wildcard(fragment) then
|
|
||||||
local primary, secondary = __evolved_unpair(fragment)
|
|
||||||
|
|
||||||
local new_component = component
|
|
||||||
if new_component == nil then new_component = true end
|
|
||||||
|
|
||||||
---@type evolved.id[]?, integer
|
|
||||||
local pair_list, pair_count = nil, 0
|
|
||||||
|
|
||||||
if primary == __ANY and secondary == __ANY then
|
|
||||||
pair_list = old_chunk.__pair_list
|
|
||||||
pair_count = old_chunk.__pair_count
|
|
||||||
elseif primary == __ANY then
|
|
||||||
local pairs = old_chunk.__secondary_pairs[secondary]
|
|
||||||
pair_list = pairs and pairs.__item_list
|
|
||||||
pair_count = pairs and pairs.__item_count or 0
|
|
||||||
elseif secondary == __ANY then
|
|
||||||
local pairs = old_chunk.__primary_pairs[primary]
|
|
||||||
pair_list = pairs and pairs.__item_list
|
|
||||||
pair_count = pairs and pairs.__item_count or 0
|
|
||||||
end
|
|
||||||
|
|
||||||
for pair_index = 1, pair_count do
|
|
||||||
---@cast pair_list -?
|
|
||||||
local pair = pair_list[pair_index]
|
|
||||||
|
|
||||||
local component_index = old_component_indices[pair]
|
|
||||||
local component_storage = old_component_storages[component_index]
|
|
||||||
|
|
||||||
for old_place = 1, old_entity_count do
|
|
||||||
component_storage[old_place] = new_component
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local new_chunk = __chunk_with_fragment(old_chunk, fragment)
|
local new_chunk = __chunk_with_fragment(old_chunk, fragment)
|
||||||
|
|
||||||
if not new_chunk then
|
if not new_chunk then
|
||||||
@@ -5011,12 +4974,17 @@ function __evolved_set(entity, fragment, component)
|
|||||||
__id_name(entity))
|
__id_name(entity))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if __is_wildcard(fragment) then
|
||||||
|
__error_fmt('the wildcard fragment (%s) cannot be set',
|
||||||
|
__id_name(fragment))
|
||||||
|
end
|
||||||
|
|
||||||
if __defer_depth > 0 then
|
if __defer_depth > 0 then
|
||||||
__defer_set(entity, fragment, component)
|
__defer_set(entity, fragment, component)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local entity_index = entity % 0x100000
|
local entity_index = entity % 2 ^ 20
|
||||||
|
|
||||||
local entity_chunks = __entity_chunks
|
local entity_chunks = __entity_chunks
|
||||||
local entity_places = __entity_places
|
local entity_places = __entity_places
|
||||||
@@ -5024,41 +4992,6 @@ function __evolved_set(entity, fragment, component)
|
|||||||
local old_chunk = entity_chunks[entity_index]
|
local old_chunk = entity_chunks[entity_index]
|
||||||
local old_place = entity_places[entity_index]
|
local old_place = entity_places[entity_index]
|
||||||
|
|
||||||
if __is_wildcard(fragment) then
|
|
||||||
local primary, secondary = __evolved_unpair(fragment)
|
|
||||||
|
|
||||||
local new_component = component
|
|
||||||
if new_component == nil then new_component = true end
|
|
||||||
|
|
||||||
---@type evolved.id[]?, integer
|
|
||||||
local pair_list, pair_count = nil, 0
|
|
||||||
|
|
||||||
if primary == __ANY and secondary == __ANY then
|
|
||||||
pair_list = old_chunk.__pair_list
|
|
||||||
pair_count = old_chunk.__pair_count
|
|
||||||
elseif primary == __ANY then
|
|
||||||
local pairs = old_chunk.__secondary_pairs[secondary]
|
|
||||||
pair_list = pairs and pairs.__item_list
|
|
||||||
pair_count = pairs and pairs.__item_count or 0
|
|
||||||
elseif secondary == __ANY then
|
|
||||||
local pairs = old_chunk.__primary_pairs[primary]
|
|
||||||
pair_list = pairs and pairs.__item_list
|
|
||||||
pair_count = pairs and pairs.__item_count or 0
|
|
||||||
end
|
|
||||||
|
|
||||||
for pair_index = 1, pair_count do
|
|
||||||
---@cast pair_list -?
|
|
||||||
local pair = pair_list[pair_index]
|
|
||||||
|
|
||||||
local component_index = old_chunk.__component_indices[pair]
|
|
||||||
local component_storage = old_chunk.__component_storages[component_index]
|
|
||||||
|
|
||||||
component_storage[old_place] = new_component
|
|
||||||
end
|
|
||||||
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local new_chunk = __chunk_with_fragment(old_chunk, fragment)
|
local new_chunk = __chunk_with_fragment(old_chunk, fragment)
|
||||||
|
|
||||||
if not new_chunk then
|
if not new_chunk then
|
||||||
|
|||||||
Reference in New Issue
Block a user