evolved.TAG is a TAG :-)

This commit is contained in:
BlackMATov
2024-12-29 18:54:09 +07:00
parent 345a89d1de
commit 2d4126ef09
3 changed files with 97 additions and 0 deletions

View File

@@ -1,5 +1,23 @@
# evolved.lua (work in progress)
## Constants
```
TAG :: fragment
DEFAULT :: fragment
CONSTRUCT :: fragment
ON_SET :: fragment
ON_ASSIGN :: fragment
ON_INSERT :: fragment
ON_REMOVE :: fragment
INCLUDE_LIST :: fragment
EXCLUDE_LIST :: fragment
```
## Functions
```
id :: integer? -> id...

View File

@@ -2223,3 +2223,80 @@ do
assert(evo.get(e1, f1) == nil)
end
end
do
local f1, f2 = evo.id(2)
local q = evo.id()
evo.set(q, evo.INCLUDE_LIST, { f1 })
evo.set(q, evo.INCLUDE_LIST, { f2 })
local e1 = evo.id()
assert(evo.insert(e1, f1, 41))
local e2 = evo.id()
assert(evo.insert(e2, f2, 42))
do
local iter, state = evo.execute(q)
local chunk, entities = iter(state)
assert(chunk == evo.chunk(f2))
assert(entities and entities[1] == e2)
end
evo.set(q, evo.INCLUDE_LIST)
do
local iter, state = evo.execute(q)
local chunk, entities = iter(state)
assert(not chunk)
assert(not entities)
end
end
do
local f1, f2 = evo.id(2)
local q = evo.id()
evo.set(q, evo.INCLUDE_LIST, { f1 })
evo.set(q, evo.EXCLUDE_LIST, { f1 })
evo.set(q, evo.EXCLUDE_LIST, { f2 })
local e1 = evo.id()
assert(evo.insert(e1, f1, 41))
local e2 = evo.id()
assert(evo.insert(e2, f1, 43))
assert(evo.insert(e2, f2, 44))
do
local iter, state = evo.execute(q)
local chunk, entities = iter(state)
assert(chunk == evo.chunk(f1))
assert(entities and entities[1] == e1)
chunk, entities = iter(state)
assert(not chunk)
assert(not entities)
end
evo.set(q, evo.EXCLUDE_LIST)
do
local iter, state = evo.execute(q)
local chunk, entities = iter(state)
assert(chunk == evo.chunk(f1))
assert(entities and entities[1] == e1)
chunk, entities = iter(state)
assert(chunk == evo.chunk(f1, f2))
assert(entities and entities[1] == e2)
chunk, entities = iter(state)
assert(not chunk)
assert(not entities)
end
end

View File

@@ -2123,6 +2123,8 @@ local __EXCLUDE_SET = __acquire_id()
local __SORTED_INCLUDE_LIST = __acquire_id()
local __SORTED_EXCLUDE_LIST = __acquire_id()
assert(evolved.insert(evolved.TAG, evolved.TAG))
assert(evolved.insert(evolved.INCLUDE_LIST, evolved.CONSTRUCT, function(_, _, include_list)
return include_list or {}
end))