@vworlds/vecs 1.0.31 → 1.0.32
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/dist/filter.d.ts +10 -9
- package/dist/filter.js +6 -7
- package/dist/filter.js.map +1 -1
- package/dist/inject.d.ts +15 -6
- package/dist/inject.js +17 -13
- package/dist/inject.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/query/callbacks.d.ts +6 -5
- package/dist/query/callbacks.js +50 -26
- package/dist/query/callbacks.js.map +1 -1
- package/dist/query/group.d.ts +3 -2
- package/dist/query/group.js +2 -2
- package/dist/query/group.js.map +1 -1
- package/dist/query/options.d.ts +29 -0
- package/dist/query/options.js +2 -0
- package/dist/query/options.js.map +1 -0
- package/dist/query/query.d.ts +34 -19
- package/dist/query/query.js +29 -13
- package/dist/query/query.js.map +1 -1
- package/dist/system.d.ts +10 -9
- package/dist/system.js +4 -5
- package/dist/system.js.map +1 -1
- package/docs/README.md +2 -2
- package/docs/design-guide.md +4 -4
- package/docs/queries-and-filters.md +7 -6
- package/docs/systems.md +35 -17
- package/package.json +1 -1
package/dist/filter.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { World } from "./world/index.js";
|
|
|
4
4
|
import { type QueryDSL } from "./dsl.js";
|
|
5
5
|
import type { Term } from "./terms/term.js";
|
|
6
6
|
import { Iter, type FanInjectTuple, type MaybeResolvedInjectTuple } from "./inject.js";
|
|
7
|
+
import type { EntityCursorOption, FanInjectCallbackOptions, IterCursorOption } from "./query/options.js";
|
|
7
8
|
/**
|
|
8
9
|
* A non-reactive, one-shot entity filter.
|
|
9
10
|
*
|
|
@@ -71,17 +72,17 @@ export declare class Filter<R extends ComponentType[] = []> {
|
|
|
71
72
|
*/
|
|
72
73
|
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
73
74
|
/**
|
|
74
|
-
* As above, but pass `Entity`
|
|
75
|
-
* explicit. Identical behavior to the
|
|
75
|
+
* As above, but pass `{ cursor: Entity, inject: [...] }` to make the
|
|
76
|
+
* entity-first signature explicit. Identical behavior to the array form.
|
|
76
77
|
*/
|
|
77
|
-
forEach<J extends FanInjectTuple>(
|
|
78
|
+
forEach<J extends FanInjectTuple>(options: EntityCursorOption & FanInjectCallbackOptions<J>, callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
78
79
|
/**
|
|
79
|
-
* As above, but pass `Iter`
|
|
80
|
-
* cursor instead of the bare entity. The cursor exposes the
|
|
81
|
-
* (`it.entity`) and, in `it.src`, the source entity each
|
|
82
|
-
* was read from (the visited entity for direct components,
|
|
83
|
-
* relationship's target entity for ones injected via `target`).
|
|
80
|
+
* As above, but pass `{ cursor: Iter, inject: [...] }` to receive a reused
|
|
81
|
+
* {@link Iter} cursor instead of the bare entity. The cursor exposes the
|
|
82
|
+
* visited entity (`it.entity`) and, in `it.src`, the source entity each
|
|
83
|
+
* resolved component was read from (the visited entity for direct components,
|
|
84
|
+
* the relationship's target entity for ones injected via `target`).
|
|
84
85
|
*/
|
|
85
|
-
forEach<J extends FanInjectTuple>(
|
|
86
|
+
forEach<J extends FanInjectTuple>(options: IterCursorOption & FanInjectCallbackOptions<J>, callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
86
87
|
private _forEachMatch;
|
|
87
88
|
}
|
package/dist/filter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _compile, getDSLCacheKey } from "./dsl.js";
|
|
2
|
-
import {
|
|
2
|
+
import { makeInjectedInvoker, normalizeFanInjectCallbackArgs, } from "./inject.js";
|
|
3
3
|
/**
|
|
4
4
|
* A non-reactive, one-shot entity filter.
|
|
5
5
|
*
|
|
@@ -45,18 +45,17 @@ export class Filter {
|
|
|
45
45
|
get rootTerm() {
|
|
46
46
|
return this.world._getCachedTermByKey(this._termKey);
|
|
47
47
|
}
|
|
48
|
-
forEach(arg0, arg1
|
|
49
|
-
// Bare `forEach(callback)
|
|
50
|
-
if (typeof arg0 === "function"
|
|
48
|
+
forEach(arg0, arg1) {
|
|
49
|
+
// Bare `forEach(callback)`.
|
|
50
|
+
if (typeof arg0 === "function") {
|
|
51
51
|
const callback = arg0;
|
|
52
52
|
this.world.defer(() => {
|
|
53
53
|
this._forEachMatch(callback);
|
|
54
54
|
});
|
|
55
55
|
return this;
|
|
56
56
|
}
|
|
57
|
-
const useIter =
|
|
58
|
-
const
|
|
59
|
-
const callback = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
57
|
+
const { components, useIter } = normalizeFanInjectCallbackArgs(arg0);
|
|
58
|
+
const callback = arg1;
|
|
60
59
|
this.world.defer(() => {
|
|
61
60
|
const invoke = makeInjectedInvoker(this.world, components, useIter, callback);
|
|
62
61
|
this._forEachMatch(invoke);
|
package/dist/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AAExF,OAAO,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AAExF,OAAO,EAEL,mBAAmB,EACnB,8BAA8B,GAK/B,MAAM,aAAa,CAAC;AAOrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,MAAM;IAKjB;IACE,6CAA6C;IAC7B,KAAY,EAC5B,GAAa;QADG,UAAK,GAAL,KAAK,CAAO;QAG5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAmDM,OAAO,CAAC,IAAkD,EAAE,IAAe;QAChF,4BAA4B;QAC5B,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAA2B,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAwB,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,QAA6B;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/inject.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export declare function directInjectSnapshotTypes(inject: readonly ResolvedInjec
|
|
|
43
43
|
* the first argument:
|
|
44
44
|
*
|
|
45
45
|
* ```ts
|
|
46
|
-
* system.each(Iter, [Body, { target: [ChildOf, [Position]] }], (it, [body, pos]) => {
|
|
46
|
+
* system.each({ cursor: Iter, inject: [Body, { target: [ChildOf, [Position]] }] }, (it, [body, pos]) => {
|
|
47
47
|
* it.entity; // the visited entity
|
|
48
48
|
* it.src[0]; // entity `body` was read from (the visited entity)
|
|
49
49
|
* it.src[1]; // entity `pos` was read from (the ChildOf target), or undefined
|
|
@@ -68,17 +68,26 @@ export declare class Iter {
|
|
|
68
68
|
readonly src: (Entity | undefined)[];
|
|
69
69
|
constructor(arity: number);
|
|
70
70
|
}
|
|
71
|
-
export declare function isCursorMarker(x: unknown): x is typeof Entity | typeof Iter;
|
|
72
71
|
export declare function wantsIter(x: unknown): x is typeof Iter;
|
|
72
|
+
export type FanInjectCallbackOptions<J extends FanInjectTuple = FanInjectTuple> = {
|
|
73
|
+
cursor?: typeof Entity | typeof Iter;
|
|
74
|
+
inject: readonly [...J];
|
|
75
|
+
};
|
|
76
|
+
export type FanInjectCallbackArg<J extends FanInjectTuple = FanInjectTuple> = readonly [...J] | FanInjectCallbackOptions<J>;
|
|
77
|
+
export type InjectedCallback = (eOrIt: Entity | Iter, resolved: readonly (ComponentInstance | undefined)[]) => void;
|
|
73
78
|
/**
|
|
74
79
|
* Iterate `entities`, resolving injected components per the `forEach` /
|
|
75
|
-
* `each` argument grammar (bare callback, `[components]`,
|
|
76
|
-
* cursor
|
|
80
|
+
* `each` argument grammar (bare callback, `[components]`, or
|
|
81
|
+
* `{ cursor, inject }`). Runs inside a deferred scope so mutations made by the
|
|
77
82
|
* callback are buffered and applied after iteration finishes.
|
|
78
83
|
*
|
|
79
84
|
* Shared by {@link Query.forEach} and {@link Group.forEach} so both honour the
|
|
80
85
|
* same injection and deferral semantics.
|
|
81
86
|
*/
|
|
82
|
-
export declare function forEachInjected(world: World, entities: Iterable<Entity>,
|
|
83
|
-
export declare function
|
|
87
|
+
export declare function forEachInjected(world: World, entities: Iterable<Entity>, callbackOrInject: ((e: Entity) => void) | FanInjectCallbackArg, injectedCallback?: InjectedCallback): void;
|
|
88
|
+
export declare function normalizeFanInjectCallbackArgs(callbackOrInject: FanInjectCallbackArg): {
|
|
89
|
+
components: readonly FanInjectElement[];
|
|
90
|
+
useIter: boolean;
|
|
91
|
+
};
|
|
92
|
+
export declare function makeInjectedInvoker(world: World, components: readonly FanInjectElement[], useIter: boolean, callback: InjectedCallback): (e: Entity) => void;
|
|
84
93
|
export {};
|
package/dist/inject.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Entity } from "./entity/index.js";
|
|
2
1
|
import { _resolveRelationship } from "./dsl.js";
|
|
3
2
|
function _isTargetInject(value) {
|
|
4
3
|
return typeof value === "object" && value !== null && "target" in value;
|
|
@@ -105,7 +104,7 @@ export function directInjectSnapshotTypes(inject) {
|
|
|
105
104
|
* the first argument:
|
|
106
105
|
*
|
|
107
106
|
* ```ts
|
|
108
|
-
* system.each(Iter, [Body, { target: [ChildOf, [Position]] }], (it, [body, pos]) => {
|
|
107
|
+
* system.each({ cursor: Iter, inject: [Body, { target: [ChildOf, [Position]] }] }, (it, [body, pos]) => {
|
|
109
108
|
* it.entity; // the visited entity
|
|
110
109
|
* it.src[0]; // entity `body` was read from (the visited entity)
|
|
111
110
|
* it.src[1]; // entity `pos` was read from (the ChildOf target), or undefined
|
|
@@ -122,34 +121,30 @@ export class Iter {
|
|
|
122
121
|
this.src = new Array(arity);
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
|
-
export function isCursorMarker(x) {
|
|
126
|
-
return x === Entity || x === Iter;
|
|
127
|
-
}
|
|
128
124
|
export function wantsIter(x) {
|
|
129
125
|
return x === Iter;
|
|
130
126
|
}
|
|
131
127
|
/**
|
|
132
128
|
* Iterate `entities`, resolving injected components per the `forEach` /
|
|
133
|
-
* `each` argument grammar (bare callback, `[components]`,
|
|
134
|
-
* cursor
|
|
129
|
+
* `each` argument grammar (bare callback, `[components]`, or
|
|
130
|
+
* `{ cursor, inject }`). Runs inside a deferred scope so mutations made by the
|
|
135
131
|
* callback are buffered and applied after iteration finishes.
|
|
136
132
|
*
|
|
137
133
|
* Shared by {@link Query.forEach} and {@link Group.forEach} so both honour the
|
|
138
134
|
* same injection and deferral semantics.
|
|
139
135
|
*/
|
|
140
|
-
export function forEachInjected(world, entities,
|
|
136
|
+
export function forEachInjected(world, entities, callbackOrInject, injectedCallback) {
|
|
141
137
|
world.beginDefer();
|
|
142
138
|
try {
|
|
143
139
|
// Bare `forEach(callback)`: a function that is not a cursor marker.
|
|
144
|
-
if (typeof
|
|
140
|
+
if (typeof callbackOrInject === "function") {
|
|
145
141
|
for (const entity of entities) {
|
|
146
|
-
|
|
142
|
+
callbackOrInject(entity);
|
|
147
143
|
}
|
|
148
144
|
return;
|
|
149
145
|
}
|
|
150
|
-
const useIter =
|
|
151
|
-
const
|
|
152
|
-
const callback = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
146
|
+
const { components, useIter } = normalizeFanInjectCallbackArgs(callbackOrInject);
|
|
147
|
+
const callback = injectedCallback;
|
|
153
148
|
const invoke = makeInjectedInvoker(world, components, useIter, callback);
|
|
154
149
|
for (const entity of entities) {
|
|
155
150
|
invoke(entity);
|
|
@@ -159,6 +154,15 @@ export function forEachInjected(world, entities, arg0, arg1, arg2) {
|
|
|
159
154
|
world.endDefer();
|
|
160
155
|
}
|
|
161
156
|
}
|
|
157
|
+
export function normalizeFanInjectCallbackArgs(callbackOrInject) {
|
|
158
|
+
if (!Array.isArray(callbackOrInject) && "inject" in callbackOrInject) {
|
|
159
|
+
return {
|
|
160
|
+
components: callbackOrInject.inject,
|
|
161
|
+
useIter: wantsIter(callbackOrInject.cursor),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return { components: callbackOrInject, useIter: false };
|
|
165
|
+
}
|
|
162
166
|
export function makeInjectedInvoker(world, components, useIter, callback) {
|
|
163
167
|
const inject = mapInject(world, components);
|
|
164
168
|
const arity = injectArity(inject);
|
package/dist/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { type ComponentInstance, type ComponentType } from "../component.js";
|
|
2
2
|
import { Entity, type EID } from "../entity/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { type InjectElement, type InjectSnapshot, type InjectSnapshotTypes, type InjectTuple } from "../inject.js";
|
|
4
|
+
import type { InjectCallbackOptions, OrderByOptions, UpdateCallbackOptions } from "./options.js";
|
|
4
5
|
import { OrderedSet } from "../util/ordered_set.js";
|
|
5
6
|
import { type World } from "../world/index.js";
|
|
6
7
|
export type EntityCallback = (e: Entity, snapshot?: InjectSnapshot) => void;
|
|
7
8
|
export type ComponentCallback = (e: Entity, c: ComponentInstance) => void;
|
|
8
|
-
export declare function makeEnterCallback(world: World, arg0: InjectTuple | ((e: Entity) => void)
|
|
9
|
+
export declare function makeEnterCallback(world: World, arg0: InjectTuple | InjectCallbackOptions<InjectTuple> | ((e: Entity) => void), arg1?: Function): {
|
|
9
10
|
callback: EntityCallback;
|
|
10
11
|
snapshotTypes: InjectSnapshotTypes | undefined;
|
|
11
12
|
};
|
|
12
|
-
export declare function makeExitCallback(world: World, arg0:
|
|
13
|
+
export declare function makeExitCallback(world: World, arg0: InjectTuple | InjectCallbackOptions<InjectTuple> | ((e: Entity) => void), arg1?: (...args: any[]) => void): {
|
|
13
14
|
callback: EntityCallback;
|
|
14
15
|
snapshotTypes: InjectSnapshotTypes | undefined;
|
|
15
16
|
};
|
|
16
|
-
export declare function makeSortedEntitySet(world: World, arg0: readonly InjectElement[] |
|
|
17
|
+
export declare function makeSortedEntitySet(world: World, arg0: readonly InjectElement[] | OrderByOptions<InjectTuple>, arg1?: Function): {
|
|
17
18
|
set: OrderedSet<Entity>;
|
|
18
19
|
watchEids: EID[];
|
|
19
20
|
};
|
|
20
|
-
export declare function makeUpdateRegistration<C extends ComponentType>(world: World, arg0: C |
|
|
21
|
+
export declare function makeUpdateRegistration<C extends ComponentType>(world: World, arg0: C | UpdateCallbackOptions<C, InjectTuple>, arg1: (...args: any[]) => void): {
|
|
21
22
|
componentEid: EID;
|
|
22
23
|
callback: ComponentCallback;
|
|
23
24
|
};
|
package/dist/query/callbacks.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { directInjectEids, directInjectSnapshotTypes, getInjected, getInjectedWithSrc, injectArity,
|
|
1
|
+
import { directInjectEids, directInjectSnapshotTypes, getInjected, getInjectedWithSrc, injectArity, Iter, mapInject, wantsIter, } from "../inject.js";
|
|
2
2
|
import { OrderedSet } from "../util/ordered_set.js";
|
|
3
|
-
export function makeEnterCallback(world, arg0, arg1
|
|
4
|
-
if (typeof arg0 === "function"
|
|
3
|
+
export function makeEnterCallback(world, arg0, arg1) {
|
|
4
|
+
if (typeof arg0 === "function") {
|
|
5
5
|
// Wrap so the drain's extra snapshot argument never leaks to a plain
|
|
6
6
|
// (non-injecting) enter callback — it observes only the entity.
|
|
7
7
|
const fn = arg0;
|
|
8
8
|
return { callback: (e) => fn(e), snapshotTypes: undefined };
|
|
9
9
|
}
|
|
10
|
-
const useIter =
|
|
11
|
-
const
|
|
12
|
-
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
10
|
+
const { components, useIter } = normalizeInjectCallbackArgs(arg0);
|
|
11
|
+
const cb = arg1;
|
|
13
12
|
const inject = mapInject(world, components);
|
|
14
13
|
// Mirror exit: capture the injected components so a System's inbox-queued enter
|
|
15
14
|
// still resolves them even if the entity is destroyed before the inbox drains.
|
|
@@ -33,13 +32,12 @@ export function makeEnterCallback(world, arg0, arg1, arg2) {
|
|
|
33
32
|
};
|
|
34
33
|
return { callback, snapshotTypes };
|
|
35
34
|
}
|
|
36
|
-
export function makeExitCallback(world, arg0, arg1
|
|
37
|
-
if (typeof arg0 === "function"
|
|
35
|
+
export function makeExitCallback(world, arg0, arg1) {
|
|
36
|
+
if (typeof arg0 === "function") {
|
|
38
37
|
return { callback: arg0, snapshotTypes: undefined };
|
|
39
38
|
}
|
|
40
|
-
const useIter =
|
|
41
|
-
const
|
|
42
|
-
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
39
|
+
const { components, useIter } = normalizeInjectCallbackArgs(arg0);
|
|
40
|
+
const cb = arg1;
|
|
43
41
|
const inject = mapInject(world, components);
|
|
44
42
|
const snapshotTypes = directInjectSnapshotTypes(inject);
|
|
45
43
|
const arity = injectArity(inject);
|
|
@@ -60,10 +58,9 @@ export function makeExitCallback(world, arg0, arg1, arg2) {
|
|
|
60
58
|
};
|
|
61
59
|
return { callback, snapshotTypes };
|
|
62
60
|
}
|
|
63
|
-
export function makeSortedEntitySet(world, arg0, arg1
|
|
64
|
-
const useIter =
|
|
65
|
-
const
|
|
66
|
-
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
61
|
+
export function makeSortedEntitySet(world, arg0, arg1) {
|
|
62
|
+
const { components, useIter } = normalizeInjectCallbackArgs(arg0);
|
|
63
|
+
const cb = arg1;
|
|
67
64
|
const inject = mapInject(world, components);
|
|
68
65
|
const arity = injectArity(inject);
|
|
69
66
|
const watchEids = directInjectEids(inject);
|
|
@@ -90,20 +87,25 @@ export function makeSortedEntitySet(world, arg0, arg1, arg2) {
|
|
|
90
87
|
});
|
|
91
88
|
return { set, watchEids };
|
|
92
89
|
}
|
|
93
|
-
export function makeUpdateRegistration(world, arg0, arg1
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
arg0 = arg1;
|
|
97
|
-
arg1 = arg2;
|
|
98
|
-
arg2 = arg3;
|
|
99
|
-
}
|
|
100
|
-
const ComponentClass = arg0;
|
|
90
|
+
export function makeUpdateRegistration(world, arg0, arg1) {
|
|
91
|
+
const normalized = normalizeUpdateCallbackArgs(arg0);
|
|
92
|
+
const { ComponentClass, components, useIter } = normalized;
|
|
101
93
|
const componentEid = world.entity(ComponentClass).eid;
|
|
102
|
-
if (
|
|
94
|
+
if (components === undefined) {
|
|
95
|
+
const fn = arg1;
|
|
96
|
+
if (useIter) {
|
|
97
|
+
const it = new Iter(0);
|
|
98
|
+
return {
|
|
99
|
+
componentEid,
|
|
100
|
+
callback: (e, c) => {
|
|
101
|
+
it.entity = e;
|
|
102
|
+
fn(it, c);
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
103
106
|
return { componentEid, callback: arg1 };
|
|
104
107
|
}
|
|
105
|
-
const
|
|
106
|
-
const callback = arg2;
|
|
108
|
+
const callback = arg1;
|
|
107
109
|
const inject = mapInject(world, components);
|
|
108
110
|
const arity = injectArity(inject);
|
|
109
111
|
const injected = new Array(arity);
|
|
@@ -122,4 +124,26 @@ export function makeUpdateRegistration(world, arg0, arg1, arg2, arg3) {
|
|
|
122
124
|
};
|
|
123
125
|
return { componentEid, callback: cb };
|
|
124
126
|
}
|
|
127
|
+
function isOptionsObject(value) {
|
|
128
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
129
|
+
}
|
|
130
|
+
function normalizeInjectCallbackArgs(arg0) {
|
|
131
|
+
if (isOptionsObject(arg0) && "inject" in arg0) {
|
|
132
|
+
return {
|
|
133
|
+
components: arg0.inject,
|
|
134
|
+
useIter: wantsIter(arg0.cursor),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return { components: arg0, useIter: false };
|
|
138
|
+
}
|
|
139
|
+
function normalizeUpdateCallbackArgs(arg0) {
|
|
140
|
+
if (isOptionsObject(arg0) && "watch" in arg0) {
|
|
141
|
+
return {
|
|
142
|
+
ComponentClass: arg0.watch,
|
|
143
|
+
components: arg0.inject,
|
|
144
|
+
useIter: wantsIter(arg0.cursor),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return { ComponentClass: arg0, components: undefined, useIter: false };
|
|
148
|
+
}
|
|
125
149
|
//# sourceMappingURL=callbacks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/query/callbacks.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/query/callbacks.ts"],"names":[],"mappings":"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"}
|
package/dist/query/group.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type ComponentType } from "../component.js";
|
|
|
2
2
|
import { Entity } from "../entity/index.js";
|
|
3
3
|
import { Iter, type FanInjectTuple, type MaybeResolvedInjectTuple } from "../inject.js";
|
|
4
4
|
import { type World } from "../world/index.js";
|
|
5
|
+
import type { EntityCursorOption, FanInjectCallbackOptions, IterCursorOption } from "./options.js";
|
|
5
6
|
export declare class Group<K = unknown, R extends ComponentType[] = []> {
|
|
6
7
|
readonly key: K;
|
|
7
8
|
private readonly _entities;
|
|
@@ -11,7 +12,7 @@ export declare class Group<K = unknown, R extends ComponentType[] = []> {
|
|
|
11
12
|
[Symbol.iterator](): IterableIterator<Entity>;
|
|
12
13
|
forEach(callback: (e: Entity) => void): this;
|
|
13
14
|
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
14
|
-
forEach<J extends FanInjectTuple>(
|
|
15
|
-
forEach<J extends FanInjectTuple>(
|
|
15
|
+
forEach<J extends FanInjectTuple>(options: EntityCursorOption & FanInjectCallbackOptions<J>, callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
16
|
+
forEach<J extends FanInjectTuple>(options: IterCursorOption & FanInjectCallbackOptions<J>, callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
16
17
|
has(e: Entity): boolean;
|
|
17
18
|
}
|
package/dist/query/group.js
CHANGED
|
@@ -11,8 +11,8 @@ export class Group {
|
|
|
11
11
|
[Symbol.iterator]() {
|
|
12
12
|
return this._entities[Symbol.iterator]();
|
|
13
13
|
}
|
|
14
|
-
forEach(arg0, arg1
|
|
15
|
-
forEachInjected(this._world, this._entities, arg0, arg1
|
|
14
|
+
forEach(arg0, arg1) {
|
|
15
|
+
forEachInjected(this._world, this._entities, arg0, arg1);
|
|
16
16
|
return this;
|
|
17
17
|
}
|
|
18
18
|
has(e) {
|
package/dist/query/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/query/group.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/query/group.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,GAMhB,MAAM,cAAc,CAAC;AAItB,MAAM,OAAO,KAAK;IAKhB,YAAmB,KAAY,EAAE,GAAM;QAHtB,cAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAI7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3C,CAAC;IAeM,OAAO,CAAC,IAAkD,EAAE,IAAe;QAChF,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAwB,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,GAAG,CAAC,CAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACT,IAAI,CAAC,CAAS;QACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,OAAO,CAAC,CAAS;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ComponentRef, type ComponentType } from "../component.js";
|
|
2
|
+
import { Entity } from "../entity/index.js";
|
|
3
|
+
import { Iter, type FanInjectTuple, type InjectTuple } from "../inject.js";
|
|
4
|
+
export type EntityCursorOption = {
|
|
5
|
+
cursor?: typeof Entity;
|
|
6
|
+
};
|
|
7
|
+
export type IterCursorOption = {
|
|
8
|
+
cursor: typeof Iter;
|
|
9
|
+
};
|
|
10
|
+
type CursorOption = EntityCursorOption | IterCursorOption;
|
|
11
|
+
type InjectOption<J extends InjectTuple> = {
|
|
12
|
+
inject: readonly [...J];
|
|
13
|
+
};
|
|
14
|
+
type FanInjectOption<J extends FanInjectTuple> = {
|
|
15
|
+
inject: readonly [...J];
|
|
16
|
+
};
|
|
17
|
+
type WatchOption<C extends ComponentType> = {
|
|
18
|
+
watch: C;
|
|
19
|
+
};
|
|
20
|
+
type RelationshipOption<R extends ComponentRef = ComponentRef> = {
|
|
21
|
+
relationship: R;
|
|
22
|
+
};
|
|
23
|
+
export type InjectCallbackOptions<J extends InjectTuple> = CursorOption & InjectOption<J>;
|
|
24
|
+
export type FanInjectCallbackOptions<J extends FanInjectTuple> = CursorOption & FanInjectOption<J>;
|
|
25
|
+
export type UpdateCallbackOptions<C extends ComponentType, J extends InjectTuple> = CursorOption & WatchOption<C> & Partial<InjectOption<J>>;
|
|
26
|
+
export type OrderByOptions<J extends InjectTuple> = CursorOption & InjectOption<J>;
|
|
27
|
+
export type GroupByOptions<J extends FanInjectTuple> = FanInjectOption<J>;
|
|
28
|
+
export type CascadeOptions = RelationshipOption;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/query/options.ts"],"names":[],"mappings":""}
|
package/dist/query/query.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { Iter, type FanInjectTuple, type InjectTuple, type MaybeResolvedInjectTu
|
|
|
5
5
|
import { TermConsumer, TermEventKind, type Term } from "../terms/term.js";
|
|
6
6
|
import { type World } from "../world/index.js";
|
|
7
7
|
import { type GroupedQuery } from "./grouped_query.js";
|
|
8
|
+
import type { CascadeOptions, EntityCursorOption, FanInjectCallbackOptions, GroupByOptions, InjectCallbackOptions, IterCursorOption, OrderByOptions, UpdateCallbackOptions } from "./options.js";
|
|
8
9
|
/**
|
|
9
10
|
* A reactive, always-up-to-date set of entities matching a {@link QueryDSL}
|
|
10
11
|
* predicate.
|
|
@@ -48,47 +49,61 @@ export declare class Query<R extends ComponentType[] = []> implements TermConsum
|
|
|
48
49
|
has(e: Entity): boolean;
|
|
49
50
|
forEach(callback: (e: Entity) => void): this;
|
|
50
51
|
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
51
|
-
forEach<J extends FanInjectTuple>(
|
|
52
|
-
forEach<J extends FanInjectTuple>(
|
|
52
|
+
forEach<J extends FanInjectTuple>(options: EntityCursorOption & FanInjectCallbackOptions<J>, callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
53
|
+
forEach<J extends FanInjectTuple>(options: IterCursorOption & FanInjectCallbackOptions<J>, callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
53
54
|
toString(): string;
|
|
54
55
|
with<const S extends readonly QuerySpec[]>(...specs: [...S]): Query<[...R, ...ExtractSpecsRequired<S>]>;
|
|
55
56
|
without(dsl: QueryDSL): this;
|
|
56
57
|
track(): this;
|
|
57
58
|
orderBy<J extends InjectTuple>(components: readonly [...J], compare: (entityA: Entity, a: MaybeResolvedInjectTuple<J, R>, entityB: Entity, b: MaybeResolvedInjectTuple<J, R>) => number): this;
|
|
58
|
-
orderBy<J extends InjectTuple>(
|
|
59
|
-
orderBy<J extends InjectTuple>(
|
|
59
|
+
orderBy<J extends InjectTuple>(options: EntityCursorOption & OrderByOptions<J>, compare: (entityA: Entity, a: MaybeResolvedInjectTuple<J, R>, entityB: Entity, b: MaybeResolvedInjectTuple<J, R>) => number): this;
|
|
60
|
+
orderBy<J extends InjectTuple>(options: IterCursorOption & OrderByOptions<J>, compare: (a: Iter, aResolved: MaybeResolvedInjectTuple<J, R>, b: Iter, bResolved: MaybeResolvedInjectTuple<J, R>) => number): this;
|
|
60
61
|
cascade(rel: ComponentRef): this;
|
|
62
|
+
cascade(options: CascadeOptions): this;
|
|
61
63
|
cascade(rel: ComponentRef, compare: (a: Entity, b: Entity) => number): this;
|
|
64
|
+
cascade(options: CascadeOptions, compare: (a: Entity, b: Entity) => number): this;
|
|
62
65
|
groupBy<K, J extends FanInjectTuple>(components: readonly [...J], key: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => K): GroupedQuery<K, R>;
|
|
66
|
+
groupBy<K, J extends FanInjectTuple>(options: GroupByOptions<J>, key: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => K): GroupedQuery<K, R>;
|
|
63
67
|
groupBy(relationship: ComponentRef): GroupedQuery<Entity, R>;
|
|
68
|
+
groupBy(options: {
|
|
69
|
+
relationship: ComponentRef;
|
|
70
|
+
}): GroupedQuery<Entity, R>;
|
|
64
71
|
ignoreSource(source: QueryDSL | Query): this;
|
|
65
72
|
enter<J extends InjectTuple>(inject: readonly [...J], callback: (e: Entity, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
66
|
-
enter<J extends InjectTuple>(
|
|
67
|
-
enter<J extends InjectTuple>(
|
|
73
|
+
enter<J extends InjectTuple>(options: EntityCursorOption & InjectCallbackOptions<J>, callback: (e: Entity, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
74
|
+
enter<J extends InjectTuple>(options: IterCursorOption & InjectCallbackOptions<J>, callback: (it: Iter, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
68
75
|
enter(callback: (e: Entity) => void): this;
|
|
69
76
|
exit<J extends InjectTuple>(inject: readonly [...J], callback: (e: Entity, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
70
|
-
exit<J extends InjectTuple>(
|
|
71
|
-
exit<J extends InjectTuple>(
|
|
77
|
+
exit<J extends InjectTuple>(options: EntityCursorOption & InjectCallbackOptions<J>, callback: (e: Entity, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
78
|
+
exit<J extends InjectTuple>(options: IterCursorOption & InjectCallbackOptions<J>, callback: (it: Iter, injected: RequiredResolvedInjectTuple<J>) => void): this;
|
|
72
79
|
exit(callback: (e: Entity) => void): this;
|
|
73
80
|
/**
|
|
74
81
|
* Register one update callback for a watched component.
|
|
75
82
|
*
|
|
76
|
-
* `update(ComponentClass,
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
+
* `update(ComponentClass, callback)` keeps the common component-only form.
|
|
84
|
+
* Use `update({ watch, inject, cursor }, callback)` when the callback
|
|
85
|
+
* needs injected components or an {@link Iter} cursor.
|
|
86
|
+
*
|
|
87
|
+
* `update` also adds the watched component to the query predicate, so the
|
|
88
|
+
* callback only observes entities that carry it. The callback fires when the
|
|
89
|
+
* component is set or marked modified on a matched entity, and when a matched
|
|
90
|
+
* entity enters with the watched component already present. Calling `update`
|
|
91
|
+
* more than once for the same component on one query or system is rejected
|
|
92
|
+
* instead of replacing the previous callback.
|
|
83
93
|
*
|
|
84
94
|
* @throws When this query has already been built, when `ComponentClass`
|
|
85
95
|
* already has an update callback on this query.
|
|
86
96
|
*/
|
|
87
97
|
update<C extends ComponentType>(ComponentClass: C, callback: (e: Entity, c: InstanceType<C>) => void): this;
|
|
88
|
-
update<C extends ComponentType, J extends InjectTuple>(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
update<C extends ComponentType, J extends InjectTuple>(
|
|
98
|
+
update<C extends ComponentType, J extends InjectTuple>(options: EntityCursorOption & UpdateCallbackOptions<C, J> & {
|
|
99
|
+
inject: readonly [...J];
|
|
100
|
+
}, callback: (e: Entity, c: InstanceType<C>, injected: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
101
|
+
update<C extends ComponentType, J extends InjectTuple>(options: IterCursorOption & UpdateCallbackOptions<C, J> & {
|
|
102
|
+
inject: readonly [...J];
|
|
103
|
+
}, callback: (it: Iter, c: InstanceType<C>, injected: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
104
|
+
update<C extends ComponentType>(options: EntityCursorOption & UpdateCallbackOptions<C, []>, callback: (e: Entity, c: InstanceType<C>) => void): this;
|
|
105
|
+
update<C extends ComponentType>(options: IterCursorOption & UpdateCallbackOptions<C, []>, callback: (it: Iter, c: InstanceType<C>) => void): this;
|
|
106
|
+
update<C extends ComponentType>(arg0: C | UpdateCallbackOptions<C, InjectTuple>, callback: (e: Entity, c: InstanceType<C>) => void): this;
|
|
92
107
|
build(): this;
|
|
93
108
|
destroy(): void;
|
|
94
109
|
/** Extension hook for subclasses that need to observe query membership entry. */
|
package/dist/query/query.js
CHANGED
|
@@ -103,9 +103,9 @@ export class Query {
|
|
|
103
103
|
}
|
|
104
104
|
return this._entities?.has(e) ?? this.rootTerm?.has(e) ?? false;
|
|
105
105
|
}
|
|
106
|
-
forEach(arg0, arg1
|
|
106
|
+
forEach(arg0, arg1) {
|
|
107
107
|
this.changed = false;
|
|
108
|
-
this._forEach(arg0, arg1
|
|
108
|
+
this._forEach(arg0, arg1);
|
|
109
109
|
return this;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
@@ -114,8 +114,8 @@ export class Query {
|
|
|
114
114
|
* tick and must not reset `changed` (that flag tracks whether membership or
|
|
115
115
|
* watched data changed since the caller last read it).
|
|
116
116
|
*/
|
|
117
|
-
_forEach(arg0, arg1
|
|
118
|
-
forEachInjected(this.world, this._matchedEntities(), arg0, arg1
|
|
117
|
+
_forEach(arg0, arg1) {
|
|
118
|
+
forEachInjected(this.world, this._matchedEntities(), arg0, arg1);
|
|
119
119
|
}
|
|
120
120
|
toString() {
|
|
121
121
|
return this.name ?? "";
|
|
@@ -157,16 +157,17 @@ export class Query {
|
|
|
157
157
|
this._tracking = true;
|
|
158
158
|
return this;
|
|
159
159
|
}
|
|
160
|
-
orderBy(arg0, arg1
|
|
160
|
+
orderBy(arg0, arg1) {
|
|
161
161
|
this._assertConfigurable();
|
|
162
162
|
this._tracking = true;
|
|
163
|
-
const { set, watchEids } = makeSortedEntitySet(this.world, arg0, arg1
|
|
163
|
+
const { set, watchEids } = makeSortedEntitySet(this.world, arg0, arg1);
|
|
164
164
|
this._entities = set;
|
|
165
165
|
this._watchOrderBy(watchEids);
|
|
166
166
|
return this;
|
|
167
167
|
}
|
|
168
|
-
cascade(
|
|
168
|
+
cascade(arg0, compare) {
|
|
169
169
|
this._assertConfigurable();
|
|
170
|
+
const rel = isRelationshipOptions(arg0) ? arg0.relationship : arg0;
|
|
170
171
|
const relEntity = this.world.entity(rel);
|
|
171
172
|
const relMeta = relEntity.meta;
|
|
172
173
|
if (!relMeta.isRelationship) {
|
|
@@ -188,6 +189,12 @@ export class Query {
|
|
|
188
189
|
groupBy(arg0, arg1) {
|
|
189
190
|
this._assertConfigurable();
|
|
190
191
|
Object.setPrototypeOf(this, getGroupedQueryPrototype());
|
|
192
|
+
if (isGroupByInjectOptions(arg0)) {
|
|
193
|
+
return this._initialize(arg0.inject, arg1);
|
|
194
|
+
}
|
|
195
|
+
if (isRelationshipOptions(arg0)) {
|
|
196
|
+
return this._initialize(arg0.relationship, arg1);
|
|
197
|
+
}
|
|
191
198
|
return this._initialize(arg0, arg1);
|
|
192
199
|
}
|
|
193
200
|
ignoreSource(source) {
|
|
@@ -199,23 +206,23 @@ export class Query {
|
|
|
199
206
|
this._silenceQuery = query;
|
|
200
207
|
return this;
|
|
201
208
|
}
|
|
202
|
-
enter(arg0, arg1
|
|
209
|
+
enter(arg0, arg1) {
|
|
203
210
|
this._assertConfigurable();
|
|
204
|
-
const enter = makeEnterCallback(this.world, arg0, arg1
|
|
211
|
+
const enter = makeEnterCallback(this.world, arg0, arg1);
|
|
205
212
|
this._enterCallback = enter.callback;
|
|
206
213
|
this._enterSnapshotTypes = enter.snapshotTypes;
|
|
207
214
|
return this;
|
|
208
215
|
}
|
|
209
|
-
exit(arg0, arg1
|
|
216
|
+
exit(arg0, arg1) {
|
|
210
217
|
this._assertConfigurable();
|
|
211
|
-
const exit = makeExitCallback(this.world, arg0, arg1
|
|
218
|
+
const exit = makeExitCallback(this.world, arg0, arg1);
|
|
212
219
|
this._exitCallback = exit.callback;
|
|
213
220
|
this._exitSnapshotTypes = exit.snapshotTypes;
|
|
214
221
|
return this;
|
|
215
222
|
}
|
|
216
|
-
update(arg0, arg1
|
|
223
|
+
update(arg0, arg1) {
|
|
217
224
|
this._assertConfigurable();
|
|
218
|
-
const { componentEid, callback } = makeUpdateRegistration(this.world, arg0, arg1
|
|
225
|
+
const { componentEid, callback } = makeUpdateRegistration(this.world, arg0, arg1);
|
|
219
226
|
if (this._componentUpdateCallbacks.has(componentEid)) {
|
|
220
227
|
const componentName = this.world.entity(componentEid).meta.Class.name;
|
|
221
228
|
throw new Error(`query '${this.name}' already has an update callback for component ${componentName}`);
|
|
@@ -397,4 +404,13 @@ export class Query {
|
|
|
397
404
|
}
|
|
398
405
|
}
|
|
399
406
|
}
|
|
407
|
+
function isOptionsObject(value) {
|
|
408
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
409
|
+
}
|
|
410
|
+
function isGroupByInjectOptions(value) {
|
|
411
|
+
return isOptionsObject(value) && "inject" in value;
|
|
412
|
+
}
|
|
413
|
+
function isRelationshipOptions(value) {
|
|
414
|
+
return isOptionsObject(value) && "relationship" in value;
|
|
415
|
+
}
|
|
400
416
|
//# sourceMappingURL=query.js.map
|
package/dist/query/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"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"}
|
package/dist/system.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ComponentType } from "./component.js";
|
|
2
2
|
import { Iter, type FanInjectTuple, type MaybeResolvedInjectTuple } from "./inject.js";
|
|
3
3
|
import { Query } from "./query/index.js";
|
|
4
|
+
import type { EntityCursorOption, FanInjectCallbackOptions, IterCursorOption } from "./query/options.js";
|
|
4
5
|
import { type ExtractSpecsRequired, type QuerySpec } from "./dsl.js";
|
|
5
6
|
import { Entity } from "./entity/index.js";
|
|
6
7
|
import { type World } from "./world/index.js";
|
|
@@ -166,18 +167,18 @@ export declare class System<R extends ComponentType[] = []> extends Query<R> imp
|
|
|
166
167
|
*/
|
|
167
168
|
each<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
168
169
|
/**
|
|
169
|
-
* As above, but pass `Entity`
|
|
170
|
-
* explicit. Identical behavior to the
|
|
170
|
+
* As above, but pass `{ cursor: Entity, inject: [...] }` to make the
|
|
171
|
+
* entity-first signature explicit. Identical behavior to the array form.
|
|
171
172
|
*/
|
|
172
|
-
each<J extends FanInjectTuple>(
|
|
173
|
+
each<J extends FanInjectTuple>(options: EntityCursorOption & FanInjectCallbackOptions<J>, callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
173
174
|
/**
|
|
174
|
-
* As above, but pass `Iter`
|
|
175
|
-
* cursor instead of the bare entity. The cursor exposes the
|
|
176
|
-
* (`it.entity`) and, in `it.src`, the source entity each
|
|
177
|
-
* was read from (the visited entity for direct components,
|
|
178
|
-
* target for `target`-injected ones).
|
|
175
|
+
* As above, but pass `{ cursor: Iter, inject: [...] }` to receive a reused
|
|
176
|
+
* {@link Iter} cursor instead of the bare entity. The cursor exposes the
|
|
177
|
+
* visited entity (`it.entity`) and, in `it.src`, the source entity each
|
|
178
|
+
* resolved component was read from (the visited entity for direct components,
|
|
179
|
+
* the relationship target for `target`-injected ones).
|
|
179
180
|
*/
|
|
180
|
-
each<J extends FanInjectTuple>(
|
|
181
|
+
each<J extends FanInjectTuple>(options: IterCursorOption & FanInjectCallbackOptions<J>, callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
181
182
|
/**
|
|
182
183
|
* Add entity-membership predicates using {@link QuerySpec} expressions.
|
|
183
184
|
*
|
package/dist/system.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { makeInjectedInvoker, normalizeFanInjectCallbackArgs, } from "./inject.js";
|
|
2
2
|
import { SOURCE_TRACKED_QUERY_ERROR, Query } from "./query/index.js";
|
|
3
3
|
import { containsDownTerm, } from "./dsl.js";
|
|
4
4
|
import { ON_UPDATE, Phase } from "./modules/pipeline.js";
|
|
@@ -328,15 +328,14 @@ export class System extends Query {
|
|
|
328
328
|
this._runCallback = callback;
|
|
329
329
|
return this;
|
|
330
330
|
}
|
|
331
|
-
each(arg0, arg1
|
|
331
|
+
each(arg0, arg1) {
|
|
332
332
|
this._assertConfigurable();
|
|
333
333
|
if (this._eachCallback) {
|
|
334
334
|
throw new Error(`each already registered for system '${this.name}'`);
|
|
335
335
|
}
|
|
336
336
|
this.track();
|
|
337
|
-
const useIter =
|
|
338
|
-
const
|
|
339
|
-
const callback = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
337
|
+
const { components, useIter } = normalizeFanInjectCallbackArgs(arg0);
|
|
338
|
+
const callback = arg1;
|
|
340
339
|
this._eachCallback = makeInjectedInvoker(this.world, components, useIter, callback);
|
|
341
340
|
return this;
|
|
342
341
|
}
|
package/dist/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Read in this order the first time through:
|
|
|
17
17
|
- [Components](./components.md) — registration, hooks, exclusivity, cleanup policies,
|
|
18
18
|
interfaces, singletons.
|
|
19
19
|
- [Entities](./entities.md) — creation, lookup, the component API, lifecycle.
|
|
20
|
-
- [Systems](./systems.md) — membership, reactive callbacks, `each`/`run`, cadence, injection.
|
|
20
|
+
- [Systems](./systems.md) — membership, reactive callbacks, callback options, `each`/`run`, cadence, injection.
|
|
21
21
|
- [Queries and filters](./queries-and-filters.md) — the query DSL, live queries, one-shot
|
|
22
22
|
filters, grouped queries, `Bitset`.
|
|
23
23
|
- [Relationships](./relationships.md) — entity-to-entity links, hierarchy, cleanup cascades.
|
|
@@ -38,7 +38,7 @@ Keep the [Glossary](./glossary.md) at hand for terminology.
|
|
|
38
38
|
| [execution-model.md](./execution-model.md) | `world.progress`, the 8 built-in phases, deferred commands, flush boundaries, event routing. |
|
|
39
39
|
| [components.md](./components.md) | `world.component`, hooks, exclusive groups, `CleanupPolicy`, `Implements`, `Singleton`. |
|
|
40
40
|
| [entities.md](./entities.md) | `world.entity`, `add`/`set`/`get`/`remove`/`destroy`, deferred read semantics. |
|
|
41
|
-
| [systems.md](./systems.md) | `world.system`, `with`/`without`, `enter`/`update`/`exit`,
|
|
41
|
+
| [systems.md](./systems.md) | `world.system`, `with`/`without`, `enter`/`update`/`exit`, callback options, tick sources. |
|
|
42
42
|
| [queries-and-filters.md](./queries-and-filters.md) | `QueryDSL`, `Query`, `Filter`, `groupBy`, `ignoreSource`. |
|
|
43
43
|
| [relationships.md](./relationships.md) | `Relationship`, `ChildOf`/`DependsOn`, `parent`/`children`, `Traversable`, cascades. |
|
|
44
44
|
| [modules.md](./modules.md) | `Module<Config>`, `world.module`, composition, built-in modules. |
|
package/docs/design-guide.md
CHANGED
|
@@ -213,10 +213,10 @@ classes or DSL objects (`{ all: [...] }`, `{ any: [...] }`, `{ parent: X }`, `{
|
|
|
213
213
|
```ts
|
|
214
214
|
// ❌ redundant
|
|
215
215
|
.enter([Rotation, VGameObject], (_e, [r, vgo]) => vgo.obj.setRotation(coords.rot(r.angle)))
|
|
216
|
-
.update(Rotation, [VGameObject], (_e, r, [vgo]) => vgo.obj.setRotation(coords.rot(r.angle)));
|
|
216
|
+
.update({ watch: Rotation, inject: [VGameObject] }, (_e, r, [vgo]) => vgo.obj.setRotation(coords.rot(r.angle)));
|
|
217
217
|
|
|
218
218
|
// ✅ update fires on entry too
|
|
219
|
-
.update(Rotation, [VGameObject], (_e, r, [vgo]) => vgo.obj.setRotation(coords.rot(r.angle)));
|
|
219
|
+
.update({ watch: Rotation, inject: [VGameObject] }, (_e, r, [vgo]) => vgo.obj.setRotation(coords.rot(r.angle)));
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
### Injection
|
|
@@ -225,7 +225,7 @@ Pull components into the callback instead of `entity.get()`-ing them by hand:
|
|
|
225
225
|
|
|
226
226
|
```ts
|
|
227
227
|
.enter([Arc], (entity, [arc]) => { /* … */ })
|
|
228
|
-
.update(Arc, [VGameObject], (entity, arc, [vgo]) => { /* … */ })
|
|
228
|
+
.update({ watch: Arc, inject: [VGameObject] }, (entity, arc, [vgo]) => { /* … */ })
|
|
229
229
|
.exit([Arc, VGameObject], (entity, [arc, vgo]) => { /* … */ })
|
|
230
230
|
.each([Position, Velocity], (entity, [pos, vel]) => { /* … */ })
|
|
231
231
|
```
|
|
@@ -382,7 +382,7 @@ world
|
|
|
382
382
|
.system("render.arc")
|
|
383
383
|
.with(Arc, VGameObject)
|
|
384
384
|
.phase(ON_STORE)
|
|
385
|
-
.update(Arc, [VGameObject], (e, arc, [vgo]) =>
|
|
385
|
+
.update({ watch: Arc, inject: [VGameObject] }, (e, arc, [vgo]) =>
|
|
386
386
|
(vgo.obj as ArcObject).setRadius(coords.len(arc.radius))
|
|
387
387
|
);
|
|
388
388
|
|
|
@@ -79,6 +79,7 @@ projectiles.count; // kept up to date automatically
|
|
|
79
79
|
projectiles.has(e);
|
|
80
80
|
for (const e of projectiles) { ... }
|
|
81
81
|
projectiles.forEach([Position], (e, [pos]) => { ... });
|
|
82
|
+
projectiles.forEach({ inject: [Position] }, (e, [pos]) => { ... });
|
|
82
83
|
```
|
|
83
84
|
|
|
84
85
|
The crucial difference from systems: **standalone query callbacks fire synchronously** while the
|
|
@@ -131,19 +132,19 @@ interest management, any "find members in bucket K" — without re-scanning:
|
|
|
131
132
|
const ballsByCell = world
|
|
132
133
|
.query("ByCell")
|
|
133
134
|
.with(Ball, Position)
|
|
134
|
-
.groupBy([Position], (_e, [p]) => cellIndex(p)); // re-buckets reactively as Position changes
|
|
135
|
+
.groupBy({ inject: [Position] }, (_e, [p]) => cellIndex(p)); // re-buckets reactively as Position changes
|
|
135
136
|
|
|
136
|
-
ballsByCell.group(key)?.forEach([Position], (e, [p]) => { ... });
|
|
137
|
+
ballsByCell.group(key)?.forEach({ inject: [Position] }, (e, [p]) => { ... });
|
|
137
138
|
ballsByCell.group(key)?.count;
|
|
138
139
|
for (const group of ballsByCell.groups()) { ... }
|
|
139
140
|
```
|
|
140
141
|
|
|
141
142
|
Two forms (`lib/vecs/src/query/grouped_query.ts`):
|
|
142
143
|
|
|
143
|
-
- `groupBy([components], keyFn)`
|
|
144
|
-
changing them re-keys the entity.
|
|
145
|
-
- `groupBy(RelationshipClass)`
|
|
146
|
-
buckets is a retarget, a plain data change (see
|
|
144
|
+
- `groupBy([components], keyFn)` / `groupBy({ inject: [components] }, keyFn)` — bucket by a
|
|
145
|
+
computed key; injected components are watched, so changing them re-keys the entity.
|
|
146
|
+
- `groupBy(RelationshipClass)` / `groupBy({ relationship: RelationshipClass })` — bucket by the
|
|
147
|
+
relationship's target entity. Moving between buckets is a retarget, a plain data change (see
|
|
147
148
|
[Relationships](./relationships.md#retargeting)).
|
|
148
149
|
|
|
149
150
|
The result is a `GroupedQuery<K, R>` adding `group(key)`, `groups()`, `groupKeys()`, `groupCount`,
|
package/docs/systems.md
CHANGED
|
@@ -18,7 +18,7 @@ world
|
|
|
18
18
|
.system("Render")
|
|
19
19
|
.with(Sprite, Position)
|
|
20
20
|
.enter([Sprite, Position], (e, [sprite, pos]) => sprite.show(pos))
|
|
21
|
-
.update(Position, [Sprite], (e, pos, [sprite]) => sprite.moveTo(pos.x, pos.y))
|
|
21
|
+
.update({ watch: Position, inject: [Sprite] }, (e, pos, [sprite]) => sprite.moveTo(pos.x, pos.y))
|
|
22
22
|
.exit([Sprite], (e, [sprite]) => sprite.hide());
|
|
23
23
|
```
|
|
24
24
|
|
|
@@ -77,16 +77,17 @@ taxonomy, ordering rules, and custom phases are covered in
|
|
|
77
77
|
Mutation events are routed into the system's inbox as the world applies commands; the inbox is
|
|
78
78
|
replayed in arrival order at the top of the system's next run, inside a deferred scope.
|
|
79
79
|
|
|
80
|
-
### `.enter(callback)` / `.enter(inject, callback)`
|
|
80
|
+
### `.enter(callback)` / `.enter(inject, callback)` / `.enter(options, callback)`
|
|
81
81
|
|
|
82
82
|
Fires once when an entity starts matching the system:
|
|
83
83
|
|
|
84
84
|
```ts
|
|
85
85
|
.enter((e) => { ... })
|
|
86
86
|
.enter([Position, Sprite], (e, [pos, sprite]) => sprite.setPosition(pos.x, pos.y))
|
|
87
|
+
.enter({ inject: [Position, Sprite] }, (e, [pos, sprite]) => sprite.setPosition(pos.x, pos.y))
|
|
87
88
|
```
|
|
88
89
|
|
|
89
|
-
### `.update(ComponentClass, callback)` / `.update(
|
|
90
|
+
### `.update(ComponentClass, callback)` / `.update(options, callback)`
|
|
90
91
|
|
|
91
92
|
Fires when the watched component is set or marked modified on a tracked entity — and **on entry**
|
|
92
93
|
for each watched component the entity already has. `update(ComponentClass, ...)` also adds
|
|
@@ -96,7 +97,9 @@ reference:
|
|
|
96
97
|
|
|
97
98
|
```ts
|
|
98
99
|
.update(Position, (entity, pos) => renderer.setPosition(entity.eid, pos.x, pos.y))
|
|
99
|
-
.update(Position, [Sprite], (entity, pos, [sprite]) =>
|
|
100
|
+
.update({ watch: Position, inject: [Sprite] }, (entity, pos, [sprite]) =>
|
|
101
|
+
sprite.setPosition(pos.x, pos.y)
|
|
102
|
+
)
|
|
100
103
|
```
|
|
101
104
|
|
|
102
105
|
Because `update` fires on entry, a separate `enter` that applies the same value is redundant —
|
|
@@ -108,7 +111,7 @@ Use `.update(C, ...)` by itself when `C` is the membership shape and watched val
|
|
|
108
111
|
A query or system can register only one `update(C, ...)` callback for each component. A duplicate
|
|
109
112
|
registration throws instead of replacing the existing callback.
|
|
110
113
|
|
|
111
|
-
### `.exit(callback)` / `.exit(inject, callback)`
|
|
114
|
+
### `.exit(callback)` / `.exit(inject, callback)` / `.exit(options, callback)`
|
|
112
115
|
|
|
113
116
|
Fires when an entity stops matching (component removed, or entity destroyed). Directly injected
|
|
114
117
|
components are read from a **snapshot captured at exit time**, so they are still resolvable even
|
|
@@ -117,11 +120,12 @@ be `undefined`:
|
|
|
117
120
|
|
|
118
121
|
```ts
|
|
119
122
|
.exit([Sprite], (e, [sprite]) => sprite.destroy());
|
|
123
|
+
.exit({ inject: [Sprite] }, (e, [sprite]) => sprite.destroy());
|
|
120
124
|
```
|
|
121
125
|
|
|
122
126
|
## Per-tick callbacks: `each` and `run`
|
|
123
127
|
|
|
124
|
-
### `.each(components, callback)`
|
|
128
|
+
### `.each(components, callback)` / `.each(options, callback)`
|
|
125
129
|
|
|
126
130
|
Fires every tick the system runs, once per tracked entity, regardless of change. Use it only for
|
|
127
131
|
genuinely per-frame sweeps — when reacting to change suffices, prefer `update` (see
|
|
@@ -132,6 +136,10 @@ genuinely per-frame sweeps — when reacting to change suffices, prefer `update`
|
|
|
132
136
|
.each([Position, Velocity], (e, [pos, vel]) => {
|
|
133
137
|
pos.x += vel.vx;
|
|
134
138
|
});
|
|
139
|
+
|
|
140
|
+
.each({ inject: [Position, Velocity] }, (e, [pos, vel]) => {
|
|
141
|
+
pos.x += vel.vx;
|
|
142
|
+
});
|
|
135
143
|
```
|
|
136
144
|
|
|
137
145
|
`each` implies `.track()`. Only one `each` per system — a second call throws. The resolved tuple
|
|
@@ -157,11 +165,12 @@ then `each`.
|
|
|
157
165
|
|
|
158
166
|
## Component injection
|
|
159
167
|
|
|
160
|
-
`enter`, `exit`, `update`, `each`, `orderBy`, and `forEach` accept
|
|
161
|
-
|
|
168
|
+
`enter`, `exit`, `update`, `each`, `orderBy`, and `forEach` accept either a short injection list or
|
|
169
|
+
an options object with `inject`, resolved per entity and passed as a typed tuple:
|
|
162
170
|
|
|
163
171
|
```ts
|
|
164
172
|
.each([Position, Sprite], (e, [pos, sprite]) => { ... })
|
|
173
|
+
.each({ inject: [Position, Sprite] }, (e, [pos, sprite]) => { ... })
|
|
165
174
|
```
|
|
166
175
|
|
|
167
176
|
Nullability follows membership: components guaranteed by `with` (or `hint`) are non-nullable;
|
|
@@ -199,17 +208,20 @@ in `each` and `forEach`, at most once per tuple, and entities with zero children
|
|
|
199
208
|
|
|
200
209
|
### The `Iter` cursor
|
|
201
210
|
|
|
202
|
-
Pass `Iter
|
|
203
|
-
|
|
211
|
+
Pass `{ cursor: Iter, ... }` to `each`, `forEach`, `enter`, `exit`, `update`, or `orderBy` to receive
|
|
212
|
+
a reusable cursor instead of the bare entity:
|
|
204
213
|
|
|
205
214
|
```ts
|
|
206
215
|
import { Iter } from "@vworlds/vecs";
|
|
207
216
|
|
|
208
|
-
system.each(
|
|
209
|
-
|
|
210
|
-
it
|
|
211
|
-
|
|
212
|
-
|
|
217
|
+
system.each(
|
|
218
|
+
{ cursor: Iter, inject: [Body, { target: [ChildOf, [Position]] }] },
|
|
219
|
+
(it, [body, pos]) => {
|
|
220
|
+
it.entity; // the visited entity
|
|
221
|
+
it.src[0]; // entity body was read from (the visited entity)
|
|
222
|
+
it.src[1]; // entity pos was read from (the ChildOf target), or undefined
|
|
223
|
+
}
|
|
224
|
+
);
|
|
213
225
|
```
|
|
214
226
|
|
|
215
227
|
`it.src` holds the source entity per tuple slot: the visited entity for direct components, the
|
|
@@ -217,11 +229,11 @@ relationship target for `target` slots, the specific child for `down` slots. Whe
|
|
|
217
229
|
requested, the non-cursor path runs with zero per-entity overhead — dispatch happens once at setup
|
|
218
230
|
time. `each`/`forEach`/`update`/`orderBy` reuse cursor and tuple instances across the pass, so
|
|
219
231
|
snapshot what you need before triggering further mutations from inside a callback. Passing
|
|
220
|
-
`
|
|
232
|
+
`{ cursor: Entity, ... }` is also accepted and means the default entity-first signature.
|
|
221
233
|
|
|
222
234
|
## Ordering and tracking
|
|
223
235
|
|
|
224
|
-
### `.orderBy(components, compare)`
|
|
236
|
+
### `.orderBy(components, compare)` / `.orderBy(options, compare)`
|
|
225
237
|
|
|
226
238
|
Keep matched entities in a custom order. Iteration, `forEach`, and `each` then walk entities in
|
|
227
239
|
sorted order. Implies tracking:
|
|
@@ -232,6 +244,12 @@ world
|
|
|
232
244
|
.with(Position, Sprite)
|
|
233
245
|
.orderBy([Position], (_ea, [a], _eb, [b]) => a.y - b.y)
|
|
234
246
|
.each([Position, Sprite], (e, [pos, sprite]) => sprite.draw(pos.x, pos.y));
|
|
247
|
+
|
|
248
|
+
world
|
|
249
|
+
.system("Render")
|
|
250
|
+
.with(Position, Sprite)
|
|
251
|
+
.orderBy({ inject: [Position] }, (_ea, [a], _eb, [b]) => a.y - b.y)
|
|
252
|
+
.each({ inject: [Position, Sprite] }, (e, [pos, sprite]) => sprite.draw(pos.x, pos.y));
|
|
235
253
|
```
|
|
236
254
|
|
|
237
255
|
Ties break by entity id, so the order is deterministic.
|