mirror of
https://github.com/Ukendio/jecs.git
synced 2025-08-04 03:09:18 +00:00
Monitors and observers need to able to accept pair terms
Some checks failed
Some checks failed
This commit is contained in:
parent
4230a0a797
commit
4153a7cdfe
4 changed files with 27 additions and 6 deletions
|
@ -69,6 +69,9 @@ local function observers_new<T...>(
|
|||
end
|
||||
|
||||
for _, term in terms do
|
||||
if jecs.IS_PAIR(term) then
|
||||
term = jecs.ECS_PAIR_FIRST(term)
|
||||
end
|
||||
world:added(term, emplaced)
|
||||
world:changed(term, emplaced)
|
||||
end
|
||||
|
@ -151,7 +154,7 @@ local function monitors_new<T...>(
|
|||
i += 1
|
||||
entities[i] = entity
|
||||
if callback ~= nil then
|
||||
callback(entity, id, value)
|
||||
callback(entity, jecs.OnAdd)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -164,6 +167,9 @@ local function monitors_new<T...>(
|
|||
end
|
||||
|
||||
for _, term in terms do
|
||||
if jecs.IS_PAIR(term) then
|
||||
term = jecs.ECS_PAIR_FIRST(term)
|
||||
end
|
||||
world:added(term, emplaced)
|
||||
world:removed(term, removed)
|
||||
end
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
||||
local jecs = require(ReplicatedStorage.ecs)
|
||||
local schedule = require(ReplicatedStorage.schedule)
|
||||
local observers_add = require(ReplicatedStorage.observers_add)
|
||||
|
||||
local SYSTEM = schedule.SYSTEM
|
||||
local RUN = schedule.RUN
|
||||
require(ReplicatedStorage.components)
|
||||
local world = observers_add(jecs.world())
|
||||
local world = jecs.world()
|
||||
|
||||
local systems = ReplicatedStorage.systems
|
||||
SYSTEM(world, systems.receive_replication)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
local jecs = require(game:GetService("ReplicatedStorage").ecs)
|
||||
local observers_add = require("../ReplicatedStorage/observers_add")
|
||||
|
||||
export type World = typeof(observers_add(jecs.world()))
|
||||
export type World = typeof(jecs.world())
|
||||
export type Entity = jecs.Entity
|
||||
export type Id<T> = jecs.Id<T>
|
||||
export type Snapshot = {
|
||||
|
|
|
@ -2,11 +2,28 @@ local jecs = require("@jecs")
|
|||
local testkit = require("@testkit")
|
||||
local test = testkit.test()
|
||||
local CASE, TEST, FINISH, CHECK = test.CASE, test.TEST, test.FINISH, test.CHECK
|
||||
local FOCUS = test.FOCUS
|
||||
local ob = require("@addons/ob")
|
||||
|
||||
TEST("addons/observers", function()
|
||||
local world = jecs.world()
|
||||
|
||||
local world = jecs.world()
|
||||
do CASE "monitors should accept pairs"
|
||||
local A = world:component()
|
||||
local B = world:component()
|
||||
|
||||
local c = 1
|
||||
ob.monitor(world:query(jecs.pair(A, B)), function (_, event)
|
||||
c += 1
|
||||
end)
|
||||
|
||||
local child = world:entity()
|
||||
world:add(child, jecs.pair(A, B))
|
||||
CHECK(c == 2)
|
||||
|
||||
world:remove(child, jecs.pair(A, B))
|
||||
CHECK(c == 3)
|
||||
end
|
||||
do CASE "Ensure ordering between signals and observers"
|
||||
local A = world:component()
|
||||
local B = world:component()
|
||||
|
|
Loading…
Reference in a new issue