iris-ecs 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -36
- package/dist/component.d.ts.map +1 -1
- package/dist/component.js +5 -5
- package/dist/component.js.map +1 -1
- package/dist/entity.d.ts +3 -3
- package/dist/entity.d.ts.map +1 -1
- package/dist/entity.js +7 -8
- package/dist/entity.js.map +1 -1
- package/dist/event.d.ts +19 -20
- package/dist/event.d.ts.map +1 -1
- package/dist/event.js +91 -65
- package/dist/event.js.map +1 -1
- package/dist/filters.d.ts.map +1 -1
- package/dist/filters.js +7 -6
- package/dist/filters.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/query.d.ts +2 -11
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +8 -13
- package/dist/query.js.map +1 -1
- package/dist/relation.js +2 -2
- package/dist/relation.js.map +1 -1
- package/dist/scheduler.d.ts +129 -27
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +255 -59
- package/dist/scheduler.js.map +1 -1
- package/dist/world.d.ts +33 -9
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +20 -6
- package/dist/world.js.map +1 -1
- package/package.json +1 -1
package/dist/event.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// Constants
|
|
3
|
-
// ============================================================================
|
|
4
|
-
/**
|
|
5
|
-
* Number of ticks before events expire.
|
|
6
|
-
*
|
|
7
|
-
* Events persist for this many ticks to ensure systems can read regardless
|
|
8
|
-
* of execution order.
|
|
9
|
-
*/
|
|
10
|
-
export const EVENT_EXPIRY_TICKS = 2;
|
|
11
1
|
/**
|
|
12
2
|
* Global event registry singleton.
|
|
13
3
|
*/
|
|
@@ -69,11 +59,9 @@ export function ensureEventQueue(world, event) {
|
|
|
69
59
|
if (!queue) {
|
|
70
60
|
queue = {
|
|
71
61
|
event: event,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
bySystemId: new Map(),
|
|
76
|
-
},
|
|
62
|
+
current: [],
|
|
63
|
+
previous: [],
|
|
64
|
+
lastTick: new Map(),
|
|
77
65
|
};
|
|
78
66
|
world.events.byId.set(event.id, queue);
|
|
79
67
|
}
|
|
@@ -96,13 +84,13 @@ export function emitEvent(world, event, ...args) {
|
|
|
96
84
|
const queue = ensureEventQueue(world, event);
|
|
97
85
|
const data = args[0];
|
|
98
86
|
const tick = world.execution.tick;
|
|
99
|
-
queue.
|
|
87
|
+
queue.current.push({ data, tick });
|
|
100
88
|
}
|
|
101
89
|
// ============================================================================
|
|
102
90
|
// Event Reading
|
|
103
91
|
// ============================================================================
|
|
104
92
|
/**
|
|
105
|
-
* Update lastTick for current
|
|
93
|
+
* Update lastTick for current system.
|
|
106
94
|
*
|
|
107
95
|
* Internal helper shared by fetchEvents, fetchLastEvent, and clearEvents.
|
|
108
96
|
*
|
|
@@ -111,32 +99,7 @@ export function emitEvent(world, event, ...args) {
|
|
|
111
99
|
*/
|
|
112
100
|
function markEventsRead(world, queue) {
|
|
113
101
|
const { systemId, tick } = world.execution;
|
|
114
|
-
|
|
115
|
-
queue.lastTick.self = tick;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
queue.lastTick.bySystemId.set(systemId, tick);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Remove expired events from queue.
|
|
123
|
-
*
|
|
124
|
-
* Events older than EVENT_EXPIRY_TICKS are removed to prevent unbounded growth.
|
|
125
|
-
*
|
|
126
|
-
* @param world - World instance
|
|
127
|
-
* @param queue - Event queue metadata
|
|
128
|
-
*/
|
|
129
|
-
function cleanupExpiredEvents(world, queue) {
|
|
130
|
-
const expiryTick = world.execution.tick - EVENT_EXPIRY_TICKS;
|
|
131
|
-
// Find first non-expired index
|
|
132
|
-
let firstValidIndex = 0;
|
|
133
|
-
while (firstValidIndex < queue.events.length && queue.events[firstValidIndex].tick <= expiryTick) {
|
|
134
|
-
firstValidIndex++;
|
|
135
|
-
}
|
|
136
|
-
// Remove expired events from front
|
|
137
|
-
if (firstValidIndex > 0) {
|
|
138
|
-
queue.events.splice(0, firstValidIndex);
|
|
139
|
-
}
|
|
102
|
+
queue.lastTick.set(systemId, tick);
|
|
140
103
|
}
|
|
141
104
|
/**
|
|
142
105
|
* Fetch events emitted since last call.
|
|
@@ -156,14 +119,25 @@ function cleanupExpiredEvents(world, queue) {
|
|
|
156
119
|
* ```
|
|
157
120
|
*/
|
|
158
121
|
export function* fetchEvents(world, event) {
|
|
159
|
-
const queue = ensureEventQueue(world, event);
|
|
160
122
|
const { systemId, tick } = world.execution;
|
|
161
|
-
//
|
|
162
|
-
|
|
123
|
+
// Outside system context: yield nothing
|
|
124
|
+
if (systemId === null) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const queue = ensureEventQueue(world, event);
|
|
128
|
+
const lastTick = queue.lastTick.get(systemId) ?? 0;
|
|
163
129
|
try {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
130
|
+
// Snapshot lengths so events emitted during iteration are not visible in this pass
|
|
131
|
+
const prevLen = queue.previous.length;
|
|
132
|
+
const currLen = queue.current.length;
|
|
133
|
+
for (let i = 0; i < prevLen; i++) {
|
|
134
|
+
const entry = queue.previous[i];
|
|
135
|
+
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
136
|
+
yield entry.data;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
for (let i = 0; i < currLen; i++) {
|
|
140
|
+
const entry = queue.current[i];
|
|
167
141
|
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
168
142
|
yield entry.data;
|
|
169
143
|
}
|
|
@@ -171,7 +145,6 @@ export function* fetchEvents(world, event) {
|
|
|
171
145
|
}
|
|
172
146
|
finally {
|
|
173
147
|
markEventsRead(world, queue);
|
|
174
|
-
cleanupExpiredEvents(world, queue);
|
|
175
148
|
}
|
|
176
149
|
}
|
|
177
150
|
// ============================================================================
|
|
@@ -194,11 +167,21 @@ export function* fetchEvents(world, event) {
|
|
|
194
167
|
* ```
|
|
195
168
|
*/
|
|
196
169
|
export function hasEvents(world, event) {
|
|
197
|
-
const queue = ensureEventQueue(world, event);
|
|
198
170
|
const { systemId, tick } = world.execution;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
171
|
+
// Outside system context: always false
|
|
172
|
+
if (systemId === null) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const queue = ensureEventQueue(world, event);
|
|
176
|
+
const lastTick = queue.lastTick.get(systemId) ?? 0;
|
|
177
|
+
for (let i = 0; i < queue.previous.length; i++) {
|
|
178
|
+
const entry = queue.previous[i];
|
|
179
|
+
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
for (let i = 0; i < queue.current.length; i++) {
|
|
184
|
+
const entry = queue.current[i];
|
|
202
185
|
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
203
186
|
return true;
|
|
204
187
|
}
|
|
@@ -221,12 +204,22 @@ export function hasEvents(world, event) {
|
|
|
221
204
|
* ```
|
|
222
205
|
*/
|
|
223
206
|
export function countEvents(world, event) {
|
|
224
|
-
const queue = ensureEventQueue(world, event);
|
|
225
207
|
const { systemId, tick } = world.execution;
|
|
226
|
-
|
|
208
|
+
// Outside system context: always 0
|
|
209
|
+
if (systemId === null) {
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
const queue = ensureEventQueue(world, event);
|
|
213
|
+
const lastTick = queue.lastTick.get(systemId) ?? 0;
|
|
227
214
|
let count = 0;
|
|
228
|
-
for (let i = 0; i < queue.
|
|
229
|
-
const entry = queue.
|
|
215
|
+
for (let i = 0; i < queue.previous.length; i++) {
|
|
216
|
+
const entry = queue.previous[i];
|
|
217
|
+
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
218
|
+
count++;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
for (let i = 0; i < queue.current.length; i++) {
|
|
222
|
+
const entry = queue.current[i];
|
|
230
223
|
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
231
224
|
count++;
|
|
232
225
|
}
|
|
@@ -252,20 +245,32 @@ export function countEvents(world, event) {
|
|
|
252
245
|
* ```
|
|
253
246
|
*/
|
|
254
247
|
export function fetchLastEvent(world, event) {
|
|
255
|
-
const queue = ensureEventQueue(world, event);
|
|
256
248
|
const { systemId, tick } = world.execution;
|
|
257
|
-
|
|
258
|
-
|
|
249
|
+
// Outside system context: always undefined
|
|
250
|
+
if (systemId === null) {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
const queue = ensureEventQueue(world, event);
|
|
254
|
+
const lastTick = queue.lastTick.get(systemId) ?? 0;
|
|
259
255
|
let result;
|
|
260
|
-
|
|
261
|
-
|
|
256
|
+
// Search current buffer backwards first, then previous
|
|
257
|
+
for (let i = queue.current.length - 1; i >= 0; i--) {
|
|
258
|
+
const entry = queue.current[i];
|
|
262
259
|
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
263
260
|
result = entry.data;
|
|
264
261
|
break;
|
|
265
262
|
}
|
|
266
263
|
}
|
|
264
|
+
if (result === undefined) {
|
|
265
|
+
for (let i = queue.previous.length - 1; i >= 0; i--) {
|
|
266
|
+
const entry = queue.previous[i];
|
|
267
|
+
if (entry.tick > lastTick && entry.tick <= tick) {
|
|
268
|
+
result = entry.data;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
267
273
|
markEventsRead(world, queue);
|
|
268
|
-
cleanupExpiredEvents(world, queue);
|
|
269
274
|
return result;
|
|
270
275
|
}
|
|
271
276
|
/**
|
|
@@ -286,8 +291,29 @@ export function fetchLastEvent(world, event) {
|
|
|
286
291
|
* ```
|
|
287
292
|
*/
|
|
288
293
|
export function clearEvents(world, event) {
|
|
294
|
+
const { systemId } = world.execution;
|
|
295
|
+
// Outside system context: no-op
|
|
296
|
+
if (systemId === null) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
289
299
|
const queue = ensureEventQueue(world, event);
|
|
290
300
|
markEventsRead(world, queue);
|
|
291
|
-
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Flush all event queues in the world.
|
|
304
|
+
*
|
|
305
|
+
* Swaps the active buffer for each queue and clears the new active buffer.
|
|
306
|
+
* Called internally at the end of each frame by runOnce().
|
|
307
|
+
*
|
|
308
|
+
* @param world - World instance
|
|
309
|
+
* @internal
|
|
310
|
+
*/
|
|
311
|
+
export function flushEvents(world) {
|
|
312
|
+
for (const queue of world.events.byId.values()) {
|
|
313
|
+
const temp = queue.current;
|
|
314
|
+
queue.current = queue.previous;
|
|
315
|
+
queue.previous = temp;
|
|
316
|
+
queue.current.length = 0;
|
|
317
|
+
}
|
|
292
318
|
}
|
|
293
319
|
//# sourceMappingURL=event.js.map
|
package/dist/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
|
package/dist/filters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAChD;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACnD,CAAC;AAMF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAK1D;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBpF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAChD;;OAEG;IACH,iBAAiB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;CACnD,CAAC;AAMF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAK1D;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAkBpF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,CAyCpF;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,GAAG,UAAU,CAyCzE;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAYrF"}
|
package/dist/filters.js
CHANGED
|
@@ -75,9 +75,12 @@ export function findMatchingArchetypes(world, terms) {
|
|
|
75
75
|
return [];
|
|
76
76
|
}
|
|
77
77
|
// Find the rarest type (appears in fewest archetypes) for optimal iteration
|
|
78
|
-
let
|
|
79
|
-
let minCount =
|
|
80
|
-
|
|
78
|
+
let rarestMeta = ensureEntity(world, terms.include[0]);
|
|
79
|
+
let minCount = rarestMeta.records.length;
|
|
80
|
+
if (minCount === 0) {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
for (let i = 1; i < terms.include.length; i++) {
|
|
81
84
|
const typeId = terms.include[i];
|
|
82
85
|
const meta = ensureEntity(world, typeId);
|
|
83
86
|
const count = meta.records.length;
|
|
@@ -86,12 +89,10 @@ export function findMatchingArchetypes(world, terms) {
|
|
|
86
89
|
return [];
|
|
87
90
|
}
|
|
88
91
|
if (count < minCount) {
|
|
89
|
-
|
|
92
|
+
rarestMeta = meta;
|
|
90
93
|
minCount = count;
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
|
-
// Only iterate archetypes containing the rarest type, then filter further
|
|
94
|
-
const rarestMeta = ensureEntity(world, rarestId);
|
|
95
96
|
const archetypes = rarestMeta.records;
|
|
96
97
|
const matches = [];
|
|
97
98
|
for (let a = 0; a < archetypes.length; a++) {
|
package/dist/filters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AA+CxG,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,+EAA+E;IAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAoB,EAAE,KAAkB;IACzE,wCAAwC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,KAAkB;IACrE,8DAA8D;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4EAA4E;IAC5E,IAAI,
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AA+CxG,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,+EAA+E;IAC/E,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAoB,EAAE,KAAkB;IACzE,wCAAwC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,KAAkB;IACrE,8DAA8D;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,4EAA4E;IAC5E,IAAI,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;IACxD,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;IAEzC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QACjC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,oEAAoE;YACpE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,UAAU,GAAG,IAAI,CAAC;YAClB,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;IACtC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAY,EAAE,QAAgB;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IAEjD,oEAAoE;IACpE,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAChF,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAElF,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,KAAkB;IAC3D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,iFAAiF;QACjF,UAAU,GAAG;YACX,KAAK;YACL,UAAU,EAAE,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC;YAEhD,sEAAsE;YACtE,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBACD,UAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YAED,8EAA8E;YAC9E,iBAAiB,EAAE,CAAC,SAAS,EAAE,EAAE;gBAC/B,MAAM,GAAG,GAAG,UAAW,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACtD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,UAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxC,CAAC;gBAED,kEAAkE;gBAClE,IAAI,UAAW,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;SACF,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE7C,qDAAqD;QACrD,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAClF,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACpF,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,SAAS,CAAC,CAAC,qBAAqB,CAAC,MAAkB;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEpC,2DAA2D;QAC3D,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,CAAC,CAAC,CAAE,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,18 +6,18 @@ export { getPairRelation, getPairTarget, getRelationTargets, pair } from "./rela
|
|
|
6
6
|
export { addResource, getResourceValue, hasResource, removeResource, setResourceValue, } from "./resource.js";
|
|
7
7
|
export { getName, lookupByName, Name, removeName, setName } from "./name.js";
|
|
8
8
|
export { added, changed, destroyQuery, ensureQuery, fetchEntities, fetchEntitiesWithQuery, fetchFirstEntity, not, } from "./query.js";
|
|
9
|
-
export { addSystem,
|
|
9
|
+
export { addSystem, defineSchedule, First, insertScheduleAfter, insertScheduleBefore, Last, PostUpdate, PreUpdate, run, runOnce, Shutdown, Startup, stop, Update, } from "./scheduler.js";
|
|
10
10
|
export type { ActionGetter, ActionInitializer, Actions } from "./actions.js";
|
|
11
11
|
export type { Component, Entity, EntityId, Pair, Relation, RelationTargetId, Tag } from "./encoding.js";
|
|
12
12
|
export type { Event, EventSchema } from "./event.js";
|
|
13
13
|
export type { FilterTerms } from "./filters.js";
|
|
14
|
+
export type { EventPayloads, EventType, Observer, ObserverMeta } from "./observer.js";
|
|
14
15
|
export type { AddedModifier, ChangedModifier, ModifierType, NotModifier, QueryMeta, QueryModifier } from "./query.js";
|
|
15
|
-
export type {
|
|
16
|
+
export type { ScheduleLabel, SystemMeta, SystemOptions, SystemRunner } from "./scheduler.js";
|
|
16
17
|
export type { InferSchemaRecord, Schema, SchemaRecord } from "./schema.js";
|
|
17
18
|
export type { World } from "./world.js";
|
|
18
|
-
export { clearEvents, countEvents, defineEvent,
|
|
19
|
+
export { clearEvents, countEvents, defineEvent, emitEvent, fetchEvents, fetchLastEvent, hasEvents, } from "./event.js";
|
|
19
20
|
export { removed } from "./removal.js";
|
|
20
|
-
export type { EventPayloads, EventType, Observer, ObserverMeta } from "./observer.js";
|
|
21
21
|
export { registerObserverCallback, unregisterObserverCallback } from "./observer.js";
|
|
22
22
|
export { Type } from "./schema.js";
|
|
23
23
|
export { defineActions } from "./actions.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMzE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAMzF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAM7E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAMxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACtH,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7F,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAMrF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -33,15 +33,18 @@ export { added, changed, destroyQuery, ensureQuery, fetchEntities, fetchEntities
|
|
|
33
33
|
// ============================================================================
|
|
34
34
|
// System Operations
|
|
35
35
|
// ============================================================================
|
|
36
|
-
export { addSystem,
|
|
36
|
+
export { addSystem, defineSchedule, First, insertScheduleAfter, insertScheduleBefore, Last, PostUpdate, PreUpdate, run, runOnce, Shutdown, Startup, stop, Update, } from "./scheduler.js";
|
|
37
37
|
// ============================================================================
|
|
38
38
|
// Event System
|
|
39
39
|
// ============================================================================
|
|
40
|
-
export { clearEvents, countEvents, defineEvent,
|
|
40
|
+
export { clearEvents, countEvents, defineEvent, emitEvent, fetchEvents, fetchLastEvent, hasEvents, } from "./event.js";
|
|
41
41
|
// ============================================================================
|
|
42
42
|
// Removal Detection
|
|
43
43
|
// ============================================================================
|
|
44
44
|
export { removed } from "./removal.js";
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Observers
|
|
47
|
+
// ============================================================================
|
|
45
48
|
export { registerObserverCallback, unregisterObserverCallback } from "./observer.js";
|
|
46
49
|
// ============================================================================
|
|
47
50
|
// Schema Factories
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7E,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EACL,KAAK,EACL,OAAO,EACP,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACL,SAAS,EACT,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,gBAAgB,CAAC;AAgBxB,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAErF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/query.d.ts
CHANGED
|
@@ -33,18 +33,9 @@ export type QueryMeta = {
|
|
|
33
33
|
*/
|
|
34
34
|
changed: EntityId[];
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* Per-system execution ticks for change detection: systemId -> tick.
|
|
37
37
|
*/
|
|
38
|
-
lastTick:
|
|
39
|
-
/**
|
|
40
|
-
* Tick when query last executed outside any system.
|
|
41
|
-
*/
|
|
42
|
-
self: number;
|
|
43
|
-
/**
|
|
44
|
-
* Per-system execution ticks: systemId -> tick
|
|
45
|
-
*/
|
|
46
|
-
bySystemId: Map<string, number>;
|
|
47
|
-
};
|
|
38
|
+
lastTick: Map<string, number>;
|
|
48
39
|
};
|
|
49
40
|
export type ModifierType = "not" | "added" | "changed";
|
|
50
41
|
export type NotModifier = {
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;OAEG;IACH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAMF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,WAAW,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,CAE9D;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKlH;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,SAAS,CAoE3F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAwEtG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAMrE;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAiB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAI/G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,GAAG,QAAQ,GAAG,SAAS,CAQ3G"}
|
package/dist/query.js
CHANGED
|
@@ -123,10 +123,7 @@ export function ensureQuery(world, ...terms) {
|
|
|
123
123
|
added,
|
|
124
124
|
changed,
|
|
125
125
|
filter: filterMeta,
|
|
126
|
-
lastTick:
|
|
127
|
-
self: 0,
|
|
128
|
-
bySystemId: new Map(),
|
|
129
|
-
},
|
|
126
|
+
lastTick: new Map(),
|
|
130
127
|
// Callback to clean up query when its underlying filter is destroyed
|
|
131
128
|
onFilterDestroy: (destroyedFilter) => {
|
|
132
129
|
if (destroyedFilter !== filterMeta) {
|
|
@@ -168,11 +165,14 @@ export function* fetchEntitiesWithQuery(world, queryMeta) {
|
|
|
168
165
|
yield* iterateFilterEntities(queryMeta.filter);
|
|
169
166
|
return;
|
|
170
167
|
}
|
|
168
|
+
// Outside system context: change detection returns empty (no meaningful tick tracking)
|
|
169
|
+
const { systemId, tick } = world.execution;
|
|
170
|
+
if (systemId === null) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
171
173
|
// Slow path: filter by change detection using archetype-local tick arrays.
|
|
172
174
|
// Each component tracks when it was added/changed per-entity via tick timestamps.
|
|
173
|
-
const
|
|
174
|
-
// Get lastTick for this execution context (global or per-system)
|
|
175
|
-
const lastTick = systemId === null ? queryMeta.lastTick.self : (queryMeta.lastTick.bySystemId.get(systemId) ?? 0);
|
|
175
|
+
const lastTick = queryMeta.lastTick.get(systemId) ?? 0;
|
|
176
176
|
const archetypes = queryMeta.filter.archetypes;
|
|
177
177
|
// Pre-allocated arrays reused across archetypes to avoid allocation in hot loop
|
|
178
178
|
const addedTickArrays = [];
|
|
@@ -219,12 +219,7 @@ export function* fetchEntitiesWithQuery(world, queryMeta) {
|
|
|
219
219
|
finally {
|
|
220
220
|
// Update lastTick after iteration completes (or on break/return/throw).
|
|
221
221
|
// This ensures subsequent iterations only see changes since this execution.
|
|
222
|
-
|
|
223
|
-
queryMeta.lastTick.self = tick;
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
queryMeta.lastTick.bySystemId.set(systemId, tick);
|
|
227
|
-
}
|
|
222
|
+
queryMeta.lastTick.set(systemId, tick);
|
|
228
223
|
}
|
|
229
224
|
}
|
|
230
225
|
/**
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AA2DrF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,WAAqB;IACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAC,WAAqB;IACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,WAAqB;IAC3C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,CAAC;AAC1F,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,OAAmB,EAAE,OAAmB,EAAE,KAAiB,EAAE,OAAmB;IACxG,6DAA6D;IAC7D,MAAM,IAAI,GAAG,CAAC,GAAe,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1E,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,GAAG,KAAmC;IAC9E,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,KAAK;oBACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC/B,MAAM;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE5D,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5E,SAAS,GAAG;YACV,OAAO;YACP,OAAO;YACP,KAAK;YACL,OAAO;YAEP,MAAM,EAAE,UAAU;YAElB,QAAQ,EAAE,IAAI,GAAG,EAAE;YAEnB,qEAAqE;YACrE,eAAe,EAAE,CAAC,eAAe,EAAE,EAAE;gBACnC,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;oBACnC,OAAO;gBACT,CAAC;gBAED,6DAA6D;gBAC7D,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAU,CAAC,eAAe,CAAC,CAAC;gBACjF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE3C,qEAAqE;QACrE,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,SAAS,CAAC,CAAC,sBAAsB,CAAC,KAAY,EAAE,SAAoB;IACxE,MAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtF,iCAAiC;IACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,uFAAuF;IACvF,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,kFAAkF;IAClF,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;IAE/C,gFAAgF;IAChF,MAAM,eAAe,GAAkB,EAAE,CAAC;IAC1C,MAAM,iBAAiB,GAAkB,EAAE,CAAC;IAE5C,sFAAsF;IACtF,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAEpC,wFAAwF;YACxF,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBACvD,IAAI,KAAK;oBAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YAED,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;gBACzD,IAAI,KAAK;oBAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAED,4CAA4C;YAC5C,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;gBAE9B,kFAAkF;gBAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;oBAC1C,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;wBAC9C,SAAS,UAAU,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAED,uFAAuF;gBACvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,MAAM,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;oBAC9C,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;wBAClD,SAAS,UAAU,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,wEAAwE;QACxE,4EAA4E;QAC5E,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,SAAoB;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpG,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAEhF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,SAAS,CAAC,CAAC,aAAa,CAAC,KAAY,EAAE,GAAG,KAAmC;IACjF,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;IAE/C,KAAK,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAY,EAAE,GAAG,KAAmC;IACnF,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAChE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/relation.js
CHANGED
|
@@ -124,7 +124,7 @@ export function cleanupPairsTargetingEntity(world, targetEntity) {
|
|
|
124
124
|
// Entity was never used as a target, nothing to clean up
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
|
-
const wildcardMeta =
|
|
127
|
+
const wildcardMeta = world.entities.byId.get(wildcardTargetPair);
|
|
128
128
|
// Separate pairs by their OnDeleteTarget policy:
|
|
129
129
|
// - pairsToRemove: Just destroy the pair entity (default behavior)
|
|
130
130
|
// - pairsToDelete: Cascade delete to subjects holding the pair
|
|
@@ -148,7 +148,7 @@ export function cleanupPairsTargetingEntity(world, targetEntity) {
|
|
|
148
148
|
// Using Set prevents duplicates when entity has multiple cascading pairs
|
|
149
149
|
const subjectsToDelete = new Set();
|
|
150
150
|
for (const pairId of pairsToDelete) {
|
|
151
|
-
const pairMeta =
|
|
151
|
+
const pairMeta = world.entities.byId.get(pairId);
|
|
152
152
|
for (const archetype of pairMeta.records) {
|
|
153
153
|
for (const entityId of archetype.entities) {
|
|
154
154
|
subjectsToDelete.add(entityId);
|
package/dist/relation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
|