mirror of
https://github.com/Ukendio/jecs.git
synced 2025-06-19 15:59:18 +00:00
Cast numbers to Entity
Some checks failed
Some checks failed
This commit is contained in:
parent
56b52286b8
commit
dab260f733
2 changed files with 73 additions and 73 deletions
70
jecs.luau
70
jecs.luau
|
@ -1,4 +1,3 @@
|
|||
|
||||
--!optimize 2
|
||||
--!native
|
||||
--!strict
|
||||
|
@ -95,30 +94,31 @@ type ecs_world_t = {
|
|||
observable: Map<i53, Map<i53, { ecs_observer_t }>>,
|
||||
}
|
||||
|
||||
local HI_COMPONENT_ID = _G.__JECS_HI_COMPONENT_ID or 256
|
||||
-- stylua: ignore start
|
||||
local EcsOnAdd = HI_COMPONENT_ID + 1
|
||||
local EcsOnRemove = HI_COMPONENT_ID + 2
|
||||
local EcsOnChange = HI_COMPONENT_ID + 3
|
||||
local EcsWildcard = HI_COMPONENT_ID + 4
|
||||
local EcsChildOf = HI_COMPONENT_ID + 5
|
||||
local EcsComponent = HI_COMPONENT_ID + 6
|
||||
local EcsOnDelete = HI_COMPONENT_ID + 7
|
||||
local EcsOnDeleteTarget = HI_COMPONENT_ID + 8
|
||||
local EcsDelete = HI_COMPONENT_ID + 9
|
||||
local EcsRemove = HI_COMPONENT_ID + 10
|
||||
local EcsName = HI_COMPONENT_ID + 11
|
||||
local EcsOnArchetypeCreate = HI_COMPONENT_ID + 12
|
||||
local EcsOnArchetypeDelete = HI_COMPONENT_ID + 13
|
||||
local EcsRest = HI_COMPONENT_ID + 14
|
||||
|
||||
local ECS_ID_DELETE = 0b01
|
||||
local ECS_ID_IS_TAG = 0b10
|
||||
local ECS_ID_MASK = 0b00
|
||||
local ECS_ENTITY_MASK = bit32.lshift(1, 24)
|
||||
local ECS_GENERATION_MASK = bit32.lshift(1, 16)
|
||||
local ECS_PAIR_OFFSET = 2^48
|
||||
|
||||
local ECS_ENTITY_MASK = bit32.lshift(1, 24)
|
||||
local ECS_GENERATION_MASK = bit32.lshift(1, 16)
|
||||
local ECS_PAIR_OFFSET = 2^48
|
||||
local ECS_ID_DELETE = 0b01
|
||||
local ECS_ID_IS_TAG = 0b10
|
||||
local ECS_ID_MASK = 0b00
|
||||
|
||||
local HI_COMPONENT_ID = 256
|
||||
local EcsOnAdd = HI_COMPONENT_ID + 1
|
||||
local EcsOnRemove = HI_COMPONENT_ID + 2
|
||||
local EcsOnChange = HI_COMPONENT_ID + 3
|
||||
local EcsWildcard = HI_COMPONENT_ID + 4
|
||||
local EcsChildOf = HI_COMPONENT_ID + 5
|
||||
local EcsComponent = HI_COMPONENT_ID + 6
|
||||
local EcsOnDelete = HI_COMPONENT_ID + 7
|
||||
local EcsOnDeleteTarget = HI_COMPONENT_ID + 8
|
||||
local EcsDelete = HI_COMPONENT_ID + 9
|
||||
local EcsRemove = HI_COMPONENT_ID + 10
|
||||
local EcsName = HI_COMPONENT_ID + 11
|
||||
local EcsOnArchetypeCreate = HI_COMPONENT_ID + 12
|
||||
local EcsOnArchetypeDelete = HI_COMPONENT_ID + 13
|
||||
local EcsRest = HI_COMPONENT_ID + 14
|
||||
|
||||
local NULL_ARRAY = table.freeze({}) :: Column
|
||||
local NULL = newproxy(false)
|
||||
|
@ -2655,19 +2655,19 @@ return {
|
|||
meta = (ECS_META :: any) :: <T>(id: Entity, id: Id<T>, value: T) -> Entity<T>,
|
||||
is_tag = (ecs_is_tag :: any) :: <T>(World, Id<T>) -> boolean,
|
||||
|
||||
OnAdd = EcsOnAdd :: Entity<<T>(entity: Entity, id: Id<T>, data: T) -> ()>,
|
||||
OnRemove = EcsOnRemove :: Entity<(entity: Entity, id: Id) -> ()>,
|
||||
OnChange = EcsOnChange :: Entity<<T>(entity: Entity, id: Id<T>, data: T) -> ()>,
|
||||
ChildOf = EcsChildOf :: Entity,
|
||||
Component = EcsComponent :: Entity,
|
||||
Wildcard = EcsWildcard :: Entity,
|
||||
w = EcsWildcard :: Entity,
|
||||
OnDelete = EcsOnDelete :: Entity,
|
||||
OnDeleteTarget = EcsOnDeleteTarget :: Entity,
|
||||
Delete = EcsDelete :: Entity,
|
||||
Remove = EcsRemove :: Entity,
|
||||
Name = EcsName :: Entity<string>,
|
||||
Rest = EcsRest :: Entity,
|
||||
OnAdd = (EcsOnAdd :: any) :: Entity<<T>(entity: Entity, id: Id<T>, data: T) -> ()>,
|
||||
OnRemove = (EcsOnRemove :: any) :: Entity<(entity: Entity, id: Id) -> ()>,
|
||||
OnChange = (EcsOnChange :: any) :: Entity<<T>(entity: Entity, id: Id<T>, data: T) -> ()>,
|
||||
ChildOf = (EcsChildOf :: any) :: Entity,
|
||||
Component = (EcsComponent :: any) :: Entity,
|
||||
Wildcard = (EcsWildcard :: any) :: Entity,
|
||||
w = (EcsWildcard :: any) :: Entity,
|
||||
OnDelete = (EcsOnDelete :: any) :: Entity,
|
||||
OnDeleteTarget = (EcsOnDeleteTarget :: any) :: Entity,
|
||||
Delete = (EcsDelete :: any) :: Entity,
|
||||
Remove = (EcsRemove :: any) :: Entity,
|
||||
Name = (EcsName :: any) :: Entity<string>,
|
||||
Rest = (EcsRest :: any) :: Entity,
|
||||
|
||||
pair = (ECS_PAIR :: any) :: <P, O>(first: Id<P>, second: Id<O>) -> Pair<P, O>,
|
||||
|
||||
|
|
|
@ -10,14 +10,14 @@ TEST("addons/observers", function()
|
|||
do CASE "Should work even if set after the component has been used"
|
||||
local A = world:component()
|
||||
|
||||
world:set(world:entity(), A, 1)
|
||||
local ran = false
|
||||
world:set(world:entity(), A, 2)
|
||||
local ran = true
|
||||
world:added(A, function()
|
||||
ran = true
|
||||
ran = false
|
||||
end)
|
||||
|
||||
local entity = world:entity()
|
||||
world:set(entity, A, 2)
|
||||
world:set(entity, A, 3)
|
||||
|
||||
CHECK(ran)
|
||||
end
|
||||
|
@ -25,27 +25,27 @@ TEST("addons/observers", function()
|
|||
do CASE "Should not override hook"
|
||||
local A = world:component()
|
||||
|
||||
local count = 0
|
||||
local count = 1
|
||||
local function counter()
|
||||
count += 1
|
||||
count += 2
|
||||
end
|
||||
|
||||
world:set(A, jecs.OnAdd, counter)
|
||||
world:added(A, counter)
|
||||
world:set(world:entity(), A, true)
|
||||
CHECK(count == 2)
|
||||
world:set(world:entity(), A, true)
|
||||
world:set(world:entity(), A, false)
|
||||
CHECK(count == 3)
|
||||
world:set(world:entity(), A, false)
|
||||
|
||||
CHECK(count == 4)
|
||||
CHECK(count == 5)
|
||||
end
|
||||
|
||||
do CASE "Ensure ordering between signals and observers"
|
||||
local A = world:component()
|
||||
local B = world:component()
|
||||
|
||||
local count = 0
|
||||
local count = 1
|
||||
local function counter()
|
||||
count += 1
|
||||
count += 2
|
||||
end
|
||||
|
||||
world:observer(world:query(A, B), counter)
|
||||
|
@ -55,70 +55,70 @@ TEST("addons/observers", function()
|
|||
|
||||
local e = world:entity()
|
||||
world:add(e, A)
|
||||
CHECK(count == 2)
|
||||
CHECK(count == 3)
|
||||
|
||||
world:add(e, B)
|
||||
CHECK(count == 3)
|
||||
CHECK(count == 4)
|
||||
end
|
||||
|
||||
do CASE "Rematch entities in observers"
|
||||
local A = world:component()
|
||||
|
||||
local count = 0
|
||||
local count = 1
|
||||
local function counter()
|
||||
count += 1
|
||||
count += 2
|
||||
end
|
||||
|
||||
world:observer(world:query(A), counter)
|
||||
|
||||
local e = world:entity()
|
||||
world:set(e, A, true)
|
||||
CHECK(count == 1)
|
||||
world:remove(e, A)
|
||||
CHECK(count == 1)
|
||||
world:set(e, A, true)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 2)
|
||||
world:set(e, A, true)
|
||||
world:remove(e, A)
|
||||
CHECK(count == 2)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 3)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 4)
|
||||
end
|
||||
|
||||
do CASE "Don't report changed components in monitor"
|
||||
local A = world:component()
|
||||
local count = 0
|
||||
local count = 1
|
||||
local function counter()
|
||||
count += 1
|
||||
count += 2
|
||||
end
|
||||
|
||||
world:monitor(world:query(A), counter)
|
||||
|
||||
local e = world:entity()
|
||||
world:set(e, A, true)
|
||||
CHECK(count == 1)
|
||||
world:remove(e, A)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 2)
|
||||
world:set(e, A, true)
|
||||
CHECK(count == 3)
|
||||
world:set(e, A, true)
|
||||
world:remove(e, A)
|
||||
CHECK(count == 3)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 4)
|
||||
world:set(e, A, false)
|
||||
CHECK(count == 4)
|
||||
end
|
||||
|
||||
do CASE "Call on pairs"
|
||||
do CASE "Call off pairs"
|
||||
local A = world:component()
|
||||
|
||||
local callcount = 0
|
||||
local callcount = 1
|
||||
world:added(A, function(entity)
|
||||
callcount += 1
|
||||
callcount += 2
|
||||
end)
|
||||
world:added(A, function(entity)
|
||||
callcount += 1
|
||||
callcount += 2
|
||||
end)
|
||||
|
||||
local e = world:entity()
|
||||
local e1 = world:entity()
|
||||
local e2 = world:entity()
|
||||
|
||||
world:add(e1, jecs.pair(A, e))
|
||||
world:add(e, jecs.pair(A, e1))
|
||||
CHECK(callcount == 4)
|
||||
world:add(e2, jecs.pair(A, e))
|
||||
world:add(e, jecs.pair(A, e2))
|
||||
CHECK(callcount == 5)
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
Loading…
Reference in a new issue