@vworlds/vecs 1.0.20 → 1.0.21
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 +51 -48
- package/dist/component.d.ts +5 -2
- package/dist/component.js +4 -57
- package/dist/component.js.map +1 -1
- package/dist/component_meta.d.ts +15 -8
- package/dist/component_meta.js +6 -4
- package/dist/component_meta.js.map +1 -1
- package/dist/dsl.d.ts +56 -11
- package/dist/dsl.js +21 -31
- package/dist/dsl.js.map +1 -1
- package/dist/entity/entity.base.d.ts +4 -3
- package/dist/entity/entity.base.js +4 -4
- package/dist/entity/entity.base.js.map +1 -1
- package/dist/entity/entity.components.d.ts +16 -7
- package/dist/entity/entity.components.js +48 -23
- package/dist/entity/entity.components.js.map +1 -1
- package/dist/entity/entity.d.ts +5 -1
- package/dist/entity/entity.js +5 -0
- package/dist/entity/entity.js.map +1 -1
- package/dist/entity/entity.lifecycle.js +25 -25
- package/dist/entity/entity.lifecycle.js.map +1 -1
- package/dist/entity/entity.queries.js +0 -6
- package/dist/entity/entity.queries.js.map +1 -1
- package/dist/entity/entity.relationships.d.ts +1 -1
- package/dist/entity/entity.relationships.js +7 -5
- package/dist/entity/entity.relationships.js.map +1 -1
- package/dist/entity/index.d.ts +1 -1
- package/dist/entity/index.js.map +1 -1
- package/dist/filter.d.ts +6 -6
- package/dist/filter.js +2 -1
- package/dist/filter.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/inject.d.ts +18 -17
- package/dist/inject.js +34 -34
- package/dist/inject.js.map +1 -1
- package/dist/module.d.ts +0 -2
- package/dist/module.js +0 -3
- package/dist/module.js.map +1 -1
- package/dist/modules/relationship_types.d.ts +34 -0
- package/dist/modules/relationship_types.js +36 -0
- package/dist/modules/relationship_types.js.map +1 -0
- package/dist/modules/relationships.d.ts +24 -0
- package/dist/modules/relationships.js +82 -0
- package/dist/modules/relationships.js.map +1 -0
- package/dist/modules/singleton.js +1 -2
- package/dist/modules/singleton.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/query/callbacks.d.ts +17 -0
- package/dist/query/callbacks.js +113 -0
- package/dist/query/callbacks.js.map +1 -0
- package/dist/query/constants.d.ts +1 -0
- package/dist/query/constants.js +2 -0
- package/dist/query/constants.js.map +1 -0
- package/dist/query/{query.03.tracking.d.ts → group.d.ts} +11 -9
- package/dist/query/group.js +31 -0
- package/dist/query/group.js.map +1 -0
- package/dist/query/grouped_query.d.ts +26 -0
- package/dist/query/grouped_query.js +121 -0
- package/dist/query/grouped_query.js.map +1 -0
- package/dist/query/grouped_query_registry.d.ts +4 -0
- package/dist/query/grouped_query_registry.js +11 -0
- package/dist/query/grouped_query_registry.js.map +1 -0
- package/dist/query/grouping.d.ts +24 -0
- package/dist/query/{query.07.groups.js → grouping.js} +29 -60
- package/dist/query/grouping.js.map +1 -0
- package/dist/query/index.d.ts +6 -6
- package/dist/query/index.js +6 -4
- package/dist/query/index.js.map +1 -1
- package/dist/query/query.d.ts +58 -28
- package/dist/query/query.js +327 -88
- package/dist/query/query.js.map +1 -1
- package/dist/system.d.ts +18 -34
- package/dist/system.js +33 -49
- package/dist/system.js.map +1 -1
- package/dist/terms/all_term.d.ts +2 -6
- package/dist/terms/all_term.js +2 -7
- package/dist/terms/all_term.js.map +1 -1
- package/dist/terms/any_term.d.ts +2 -6
- package/dist/terms/any_term.js +2 -7
- package/dist/terms/any_term.js.map +1 -1
- package/dist/terms/build.d.ts +9 -6
- package/dist/terms/build.js +17 -14
- package/dist/terms/build.js.map +1 -1
- package/dist/terms/component_term.d.ts +3 -3
- package/dist/terms/component_term.js.map +1 -1
- package/dist/terms/composite_build.d.ts +32 -0
- package/dist/terms/composite_build.js +28 -0
- package/dist/terms/composite_build.js.map +1 -0
- package/dist/terms/only_term.d.ts +3 -3
- package/dist/terms/only_term.js.map +1 -1
- package/dist/terms/predicate_term.d.ts +3 -3
- package/dist/terms/predicate_term.js +3 -3
- package/dist/terms/predicate_term.js.map +1 -1
- package/dist/terms/target_term.d.ts +3 -2
- package/dist/terms/target_term.js +11 -17
- package/dist/terms/target_term.js.map +1 -1
- package/dist/util/dense_set.js +1 -1
- package/dist/util/id_pool.d.ts +2 -0
- package/dist/util/id_pool.js +10 -0
- package/dist/util/id_pool.js.map +1 -1
- package/dist/util/ordered_set.js +15 -10
- package/dist/util/ordered_set.js.map +1 -1
- package/dist/world/world.components.d.ts +5 -4
- package/dist/world/world.components.js +16 -16
- package/dist/world/world.components.js.map +1 -1
- package/dist/world/world.entities.d.ts +2 -2
- package/dist/world/world.entities.js.map +1 -1
- package/dist/world/world.js +2 -4
- package/dist/world/world.js.map +1 -1
- package/dist/world/world.modules.d.ts +2 -2
- package/dist/world/world.modules.js +6 -1
- package/dist/world/world.modules.js.map +1 -1
- package/dist/world/world.pools.d.ts +2 -1
- package/dist/world/world.pools.js.map +1 -1
- package/dist/world/world.queries.d.ts +3 -5
- package/dist/world/world.queries.js +11 -8
- package/dist/world/world.queries.js.map +1 -1
- package/package.json +1 -1
- package/dist/query/query.00.base.d.ts +0 -23
- package/dist/query/query.00.base.js +0 -77
- package/dist/query/query.00.base.js.map +0 -1
- package/dist/query/query.01.reactive.d.ts +0 -7
- package/dist/query/query.01.reactive.js +0 -58
- package/dist/query/query.01.reactive.js.map +0 -1
- package/dist/query/query.02.lifecycle.d.ts +0 -6
- package/dist/query/query.02.lifecycle.js +0 -63
- package/dist/query/query.02.lifecycle.js.map +0 -1
- package/dist/query/query.03.tracking.js +0 -31
- package/dist/query/query.03.tracking.js.map +0 -1
- package/dist/query/query.04.callbacks.d.ts +0 -14
- package/dist/query/query.04.callbacks.js +0 -65
- package/dist/query/query.04.callbacks.js.map +0 -1
- package/dist/query/query.05.updates.d.ts +0 -14
- package/dist/query/query.05.updates.js +0 -81
- package/dist/query/query.05.updates.js.map +0 -1
- package/dist/query/query.06.predicate.d.ts +0 -13
- package/dist/query/query.06.predicate.js +0 -40
- package/dist/query/query.06.predicate.js.map +0 -1
- package/dist/query/query.07.groups.d.ts +0 -41
- package/dist/query/query.07.groups.js.map +0 -1
- package/dist/relationship.d.ts +0 -19
- package/dist/relationship.js +0 -18
- package/dist/relationship.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type EntityTestFunc, type QueryDSL } from "../dsl.js";
|
|
2
|
-
import type { Entity } from "../entity/index.js";
|
|
2
|
+
import type { EID, Entity } from "../entity/index.js";
|
|
3
3
|
import type { World } from "../world/index.js";
|
|
4
4
|
import { Term } from "./term.js";
|
|
5
5
|
import type { getTerm as GetTermFn } from "./build.js";
|
|
@@ -11,7 +11,7 @@ import type { getTerm as GetTermFn } from "./build.js";
|
|
|
11
11
|
* first building — and then having to tear down — the composite child terms.
|
|
12
12
|
*/
|
|
13
13
|
export type MergedInfo = {
|
|
14
|
-
componentEids: ReadonlySet<
|
|
14
|
+
componentEids: ReadonlySet<EID>;
|
|
15
15
|
dependsOnWorld: boolean;
|
|
16
16
|
containsOnly: boolean;
|
|
17
17
|
};
|
|
@@ -21,7 +21,7 @@ export type MergedInfo = {
|
|
|
21
21
|
* - **Plain predicate** (`kind === "predicate"`): wraps a user-supplied
|
|
22
22
|
* `{ test, watch }` DSL node. The predicate is evaluated whenever a watched
|
|
23
23
|
* component changes; membership requires the world leaf to include the entity
|
|
24
|
-
* (i.e. it
|
|
24
|
+
* (i.e. it has not been destroyed).
|
|
25
25
|
*
|
|
26
26
|
* - **Merged / diamond-collapsed** (`kind === "merged"`): wraps a compiled
|
|
27
27
|
* predicate for an `all`/`any` subtree that was detected to contain a
|
|
@@ -7,7 +7,7 @@ import { WorldTerm } from "./world_term.js";
|
|
|
7
7
|
* - **Plain predicate** (`kind === "predicate"`): wraps a user-supplied
|
|
8
8
|
* `{ test, watch }` DSL node. The predicate is evaluated whenever a watched
|
|
9
9
|
* component changes; membership requires the world leaf to include the entity
|
|
10
|
-
* (i.e. it
|
|
10
|
+
* (i.e. it has not been destroyed).
|
|
11
11
|
*
|
|
12
12
|
* - **Merged / diamond-collapsed** (`kind === "merged"`): wraps a compiled
|
|
13
13
|
* predicate for an `all`/`any` subtree that was detected to contain a
|
|
@@ -49,7 +49,7 @@ export class PredicateTerm extends Term {
|
|
|
49
49
|
static buildPredicate(world, dsl, key, getTerm, onDestroy) {
|
|
50
50
|
const watch = normalizeWatch(dsl.watch);
|
|
51
51
|
const worldTerm = getTerm(world, true);
|
|
52
|
-
const watchedTerms = watch.map((
|
|
52
|
+
const watchedTerms = watch.map((ceid) => getTerm(world, ceid));
|
|
53
53
|
return new PredicateTerm(world, key, "predicate", dsl.test, worldTerm, watchedTerms, false, onDestroy);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
@@ -72,7 +72,7 @@ export class PredicateTerm extends Term {
|
|
|
72
72
|
static buildMerged(world, dsl, key, info, getTerm, onDestroy) {
|
|
73
73
|
const predicate = _compile(world, dsl);
|
|
74
74
|
const worldTerm = info.dependsOnWorld ? getTerm(world, true) : undefined;
|
|
75
|
-
const watchedTerms = [...info.componentEids].map((
|
|
75
|
+
const watchedTerms = [...info.componentEids].map((ceid) => getTerm(world, ceid));
|
|
76
76
|
return new PredicateTerm(world, key, "merged", predicate, worldTerm, watchedTerms, info.containsOnly, onDestroy);
|
|
77
77
|
}
|
|
78
78
|
/** Direct shape-channel invalidation from `WorldTerm.subscribeShape`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predicate_term.js","sourceRoot":"","sources":["../../src/terms/predicate_term.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsC,MAAM,WAAW,CAAC;AAGzE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgB5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,aAAc,SAAQ,IAAI;IAKrC,YACE,KAAY,EACZ,GAAW,EACX,IAA4B,EAC5B,SAAyB,EACzB,SAA2B,EAC3B,YAA6B,EAC7B,gBAAyB,EACzB,SAA+B;QAE/B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3E,IAAI,gBAAgB,IAAI,SAAS,YAAY,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,cAAc,CAC1B,KAAY,EACZ,GAA8C,EAC9C,GAAW,EACX,OAAyB,EACzB,SAA+B;QAE/B,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"predicate_term.js","sourceRoot":"","sources":["../../src/terms/predicate_term.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { QueryDSL } from "../dsl.js";
|
|
2
|
+
import type { EID } from "../entity/index.js";
|
|
2
3
|
import type { World } from "../world/index.js";
|
|
3
4
|
import { Term } from "./term.js";
|
|
4
5
|
import type { getTerm as GetTermFn } from "./build.js";
|
|
@@ -28,7 +29,7 @@ import type { getTerm as GetTermFn } from "./build.js";
|
|
|
28
29
|
export declare class TargetTerm extends Term {
|
|
29
30
|
private readonly _relationshipEid;
|
|
30
31
|
private readonly _innerTerm;
|
|
31
|
-
constructor(world: World, key: string, _relationshipEid:
|
|
32
|
+
constructor(world: World, key: string, _relationshipEid: EID, relationshipTerm: Term, _innerTerm: Term, onDestroy: (term: Term) => void);
|
|
32
33
|
/**
|
|
33
34
|
* Build a `TargetTerm` for the given relationship eid and inner DSL.
|
|
34
35
|
*
|
|
@@ -39,5 +40,5 @@ export declare class TargetTerm extends Term {
|
|
|
39
40
|
* @param getTerm - Term canonicalizer / cache accessor.
|
|
40
41
|
* @param onDestroy - Called when the last consumer unsubscribes.
|
|
41
42
|
*/
|
|
42
|
-
static build(world: World, relationshipEid:
|
|
43
|
+
static build(world: World, relationshipEid: EID, innerDSL: QueryDSL, key: string, getTerm: typeof GetTermFn, onDestroy: (term: Term) => void): TargetTerm;
|
|
43
44
|
}
|
|
@@ -45,8 +45,16 @@ export class TargetTerm extends Term {
|
|
|
45
45
|
const innerTerm = getTerm(world, innerDSL);
|
|
46
46
|
return new TargetTerm(world, key, relationshipEid, relationshipTerm, innerTerm, onDestroy);
|
|
47
47
|
}
|
|
48
|
+
/** @internal Fan-out child membership event handler. See {@link _fanOut}. */
|
|
49
|
+
_onChildEvent(_kind, entity, child) {
|
|
50
|
+
this._fanOut(entity, child);
|
|
51
|
+
}
|
|
52
|
+
/** @internal Fan-out child refresh handler. See {@link _fanOut}. */
|
|
53
|
+
_onChildRefresh(entity, child) {
|
|
54
|
+
this._fanOut(entity, child);
|
|
55
|
+
}
|
|
48
56
|
/**
|
|
49
|
-
* @internal
|
|
57
|
+
* @internal Shared fan-out logic for child membership and refresh events.
|
|
50
58
|
*
|
|
51
59
|
* When the relationship component is added/removed from `entity`
|
|
52
60
|
* (`child === children[0]`), re-evaluate that entity directly. When the
|
|
@@ -54,26 +62,12 @@ export class TargetTerm extends Term {
|
|
|
54
62
|
* every source entity that points at that target via the relationship and
|
|
55
63
|
* re-evaluate each one.
|
|
56
64
|
*/
|
|
57
|
-
|
|
58
|
-
if (child === this._children[0]) {
|
|
59
|
-
this._sync(entity);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
entity.children(this._relationshipEid).forEach((source) => this._sync(source));
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* @internal Fan-out child refresh handler.
|
|
66
|
-
*
|
|
67
|
-
* Mirrors `_onChildEvent`: a data/shape change on the relationship component
|
|
68
|
-
* or the inner term may alter whether a source entity matches, so the same
|
|
69
|
-
* fan-out logic applies.
|
|
70
|
-
*/
|
|
71
|
-
_onChildRefresh(entity, child) {
|
|
65
|
+
_fanOut(entity, child) {
|
|
72
66
|
if (child === this._children[0]) {
|
|
73
67
|
this._sync(entity);
|
|
74
68
|
return;
|
|
75
69
|
}
|
|
76
|
-
entity.
|
|
70
|
+
entity._childrenByEid(this._relationshipEid)?.forEach((source) => this._sync(source));
|
|
77
71
|
}
|
|
78
72
|
/** @internal */
|
|
79
73
|
_matches(entity) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target_term.js","sourceRoot":"","sources":["../../src/terms/target_term.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI;IAClC,YACE,KAAY,EACZ,GAAW,EACM,
|
|
1
|
+
{"version":3,"file":"target_term.js","sourceRoot":"","sources":["../../src/terms/target_term.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAI;IAClC,YACE,KAAY,EACZ,GAAW,EACM,gBAAqB,EACtC,gBAAsB,EACL,UAAgB,EACjC,SAA+B;QAE/B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAL7B,qBAAgB,GAAhB,gBAAgB,CAAK;QAErB,eAAU,GAAV,UAAU,CAAM;QAIjC,IAAI,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CACjB,KAAY,EACZ,eAAoB,EACpB,QAAkB,EAClB,GAAW,EACX,OAAyB,EACzB,SAA+B;QAE/B,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;IAED,6EAA6E;IAC1D,aAAa,CAAC,KAAoB,EAAE,MAAc,EAAE,KAAW;QAChF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,oEAAoE;IACjD,eAAe,CAAC,MAAc,EAAE,KAAW;QAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACK,OAAO,CAAC,MAAc,EAAE,KAAW;QACzC,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,gBAAgB;IACN,QAAQ,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAA8B,EAAE,MAAM,CAAC;QACxF,OAAO,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF"}
|
package/dist/util/dense_set.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* slot and pops — both O(1) and without the tombstone slots a churned native
|
|
8
8
|
* `Set` accumulates. The swap means iteration order is **not** insertion order
|
|
9
9
|
* after a deletion; that is fine for query membership, whose order is
|
|
10
|
-
* unspecified unless `Query.
|
|
10
|
+
* unspecified unless `Query.orderBy` is used (which keeps an {@link OrderedSet}
|
|
11
11
|
* instead).
|
|
12
12
|
*
|
|
13
13
|
* @internal Used only inside the package.
|
package/dist/util/id_pool.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class IdPool {
|
|
|
15
15
|
private _lowest;
|
|
16
16
|
private _minFreeWord;
|
|
17
17
|
private _next;
|
|
18
|
+
private _allocatedCount;
|
|
18
19
|
private readonly _waitBuckets;
|
|
19
20
|
private _waitCursor;
|
|
20
21
|
constructor(name: string, min: number, max: number | undefined, reuseWaitFrames?: number);
|
|
@@ -22,6 +23,7 @@ export declare class IdPool {
|
|
|
22
23
|
alloc(): number;
|
|
23
24
|
free(id: number): void;
|
|
24
25
|
owns(id: number): boolean;
|
|
26
|
+
get allocated(): number;
|
|
25
27
|
peek(): number;
|
|
26
28
|
reserve(id: number): void;
|
|
27
29
|
private _growBits;
|
package/dist/util/id_pool.js
CHANGED
|
@@ -20,6 +20,8 @@ export class IdPool {
|
|
|
20
20
|
// bit below `_next`. Pure hint - alloc walks forward from here. Bumped
|
|
21
21
|
// up when alloc fills a word to all-ones and pulled back down by free.
|
|
22
22
|
this._minFreeWord = 0;
|
|
23
|
+
// Running count of currently allocated ids (includes ids in wait buckets).
|
|
24
|
+
this._allocatedCount = 0;
|
|
23
25
|
this._waitCursor = 0;
|
|
24
26
|
if (!Number.isSafeInteger(reuseWaitFrames) || reuseWaitFrames < 0) {
|
|
25
27
|
throw new Error(`Id pool '${name}' reuseWaitFrames must be a non-negative integer`);
|
|
@@ -46,6 +48,7 @@ export class IdPool {
|
|
|
46
48
|
const word = offset >>> 5;
|
|
47
49
|
this._bits[word] = this._bits[word] | (1 << offset);
|
|
48
50
|
this._freeBelowNext--;
|
|
51
|
+
this._allocatedCount++;
|
|
49
52
|
return cached;
|
|
50
53
|
}
|
|
51
54
|
if (this._freeBelowNext > 0) {
|
|
@@ -60,6 +63,7 @@ export class IdPool {
|
|
|
60
63
|
bits[word] = nw;
|
|
61
64
|
this._minFreeWord = nw === -1 ? word + 1 : word;
|
|
62
65
|
this._freeBelowNext--;
|
|
66
|
+
this._allocatedCount++;
|
|
63
67
|
return this.min + word * 32 + bit;
|
|
64
68
|
}
|
|
65
69
|
const max = this.max;
|
|
@@ -73,6 +77,7 @@ export class IdPool {
|
|
|
73
77
|
if ((cur & mask) === 0) {
|
|
74
78
|
this._bits[word] = cur | mask;
|
|
75
79
|
this._next = id + 1;
|
|
80
|
+
this._allocatedCount++;
|
|
76
81
|
return id;
|
|
77
82
|
}
|
|
78
83
|
id++;
|
|
@@ -92,6 +97,9 @@ export class IdPool {
|
|
|
92
97
|
owns(id) {
|
|
93
98
|
return id >= this.min && (this.max === undefined || id <= this.max);
|
|
94
99
|
}
|
|
100
|
+
get allocated() {
|
|
101
|
+
return this._allocatedCount;
|
|
102
|
+
}
|
|
95
103
|
peek() {
|
|
96
104
|
if (this._lowest !== -1) {
|
|
97
105
|
return this._lowest;
|
|
@@ -130,6 +138,7 @@ export class IdPool {
|
|
|
130
138
|
throw new Error(`Id ${id} is already reserved`);
|
|
131
139
|
}
|
|
132
140
|
this._bits[word] = cur | mask;
|
|
141
|
+
this._allocatedCount++;
|
|
133
142
|
if (id < this._next) {
|
|
134
143
|
this._freeBelowNext--;
|
|
135
144
|
}
|
|
@@ -155,6 +164,7 @@ export class IdPool {
|
|
|
155
164
|
return;
|
|
156
165
|
}
|
|
157
166
|
this._bits[word] = cur & ~mask;
|
|
167
|
+
this._allocatedCount--;
|
|
158
168
|
if (id < this._next) {
|
|
159
169
|
this._freeBelowNext++;
|
|
160
170
|
if (word < this._minFreeWord) {
|
package/dist/util/id_pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id_pool.js","sourceRoot":"","sources":["../../src/util/id_pool.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,MAAM,OAAO,MAAM;
|
|
1
|
+
{"version":3,"file":"id_pool.js","sourceRoot":"","sources":["../../src/util/id_pool.ts"],"names":[],"mappings":"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"}
|
package/dist/util/ordered_set.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* insertion order.
|
|
4
4
|
*
|
|
5
5
|
* Backed by a sorted array. Insertions and lookups are `O(log n)` (binary
|
|
6
|
-
* search) plus the cost of an array splice on `add
|
|
6
|
+
* search) plus the cost of an array splice on `add`. Removal uses identity
|
|
7
|
+
* lookup because sorted values may be mutable.
|
|
7
8
|
*
|
|
8
|
-
* Used by `Query.
|
|
9
|
+
* Used by `Query.orderBy` to keep matched entities in a user-defined order so
|
|
9
10
|
* iteration in `forEach` and `each` walks them sorted.
|
|
10
11
|
*
|
|
11
12
|
* @internal Used only inside the package.
|
|
@@ -57,6 +58,15 @@ export class OrderedSet {
|
|
|
57
58
|
this._items.splice(i, 0, value);
|
|
58
59
|
return this;
|
|
59
60
|
}
|
|
61
|
+
/** Remove `value` by identity, then insert it at its current sort position. */
|
|
62
|
+
reSort(value) {
|
|
63
|
+
const i = this._items.indexOf(value);
|
|
64
|
+
if (i === -1) {
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
this._items.splice(i, 1);
|
|
68
|
+
return this.add(value);
|
|
69
|
+
}
|
|
60
70
|
/**
|
|
61
71
|
* Return `true` when an element comparing equal to `value` is in the set.
|
|
62
72
|
*
|
|
@@ -66,15 +76,10 @@ export class OrderedSet {
|
|
|
66
76
|
const i = this._bisect(value);
|
|
67
77
|
return i < this._items.length && this._compare(this._items[i], value) === 0;
|
|
68
78
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Remove the element comparing equal to `value`. Returns `true` if an
|
|
71
|
-
* element was removed.
|
|
72
|
-
*
|
|
73
|
-
* @param value - Element to remove.
|
|
74
|
-
*/
|
|
79
|
+
/** Remove `value` by identity. Returns `true` if an element was removed. */
|
|
75
80
|
delete(value) {
|
|
76
|
-
const i = this.
|
|
77
|
-
if (i
|
|
81
|
+
const i = this._items.indexOf(value);
|
|
82
|
+
if (i !== -1) {
|
|
78
83
|
this._items.splice(i, 1);
|
|
79
84
|
return true;
|
|
80
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordered_set.js","sourceRoot":"","sources":["../../src/util/ordered_set.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ordered_set.js","sourceRoot":"","sources":["../../src/util/ordered_set.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,UAAU;IAIrB,YAAY,OAA+B;QAHnC,WAAM,GAAQ,EAAE,CAAC;QAIvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,OAAO,CAAC,KAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,CAAC;YACX,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,2CAA2C;IAC3C,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,IAAW,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,KAAQ;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IACxE,MAAM,CAAC,KAAQ;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,KAAQ;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,KAAQ;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4BAA4B;IACrB,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,UAAsD,EAAE,OAAiB;QACtF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,8CAA8C;IACvC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,gEAAgE;IACzD,CAAC,OAAO;QACb,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8CAA8C;IACvC,IAAI;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,8CAA8C;IACvC,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, type ComponentClass, type ComponentType } from "../component.js";
|
|
2
|
+
import { type EID } from "../entity/index.js";
|
|
2
3
|
import { Entities } from "./world.entities.js";
|
|
3
4
|
import { type World } from "./world.js";
|
|
4
5
|
export declare class Components extends Entities {
|
|
@@ -11,7 +12,7 @@ export declare class Components extends Entities {
|
|
|
11
12
|
* Subsequent calls with the same class return the same entity. The same class
|
|
12
13
|
* may be registered independently in multiple worlds.
|
|
13
14
|
*
|
|
14
|
-
* Pass an explicit numeric `
|
|
15
|
+
* Pass an explicit numeric `ceid` to pin the component to a server-assigned
|
|
15
16
|
* stable id instead of auto-allocating one.
|
|
16
17
|
*
|
|
17
18
|
* Passing a **string** resolves an already-registered component entity by
|
|
@@ -22,19 +23,19 @@ export declare class Components extends Entities {
|
|
|
22
23
|
* new class throws.
|
|
23
24
|
*
|
|
24
25
|
* @param ComponentClass - The component class to register or retrieve.
|
|
25
|
-
* @param
|
|
26
|
+
* @param ceid - Optional explicit numeric component entity id.
|
|
26
27
|
* @returns The `Component` entity for the given class.
|
|
27
28
|
*
|
|
28
29
|
* @example
|
|
29
30
|
* ```ts
|
|
30
31
|
* world.component(Position); // register and auto-assign id
|
|
31
32
|
* world.component(Position, 42); // register with explicit id 42
|
|
32
|
-
* const
|
|
33
|
+
* const componentMeta = world.component(Position).meta; // access metadata
|
|
33
34
|
* world.component(Position).name = "Position";
|
|
34
35
|
* world.component("Position"); // look up by name
|
|
35
36
|
* ```
|
|
36
37
|
*/
|
|
37
|
-
component<T extends ComponentType>(this: World, ComponentClass: T,
|
|
38
|
+
component<T extends ComponentType>(this: World, ComponentClass: T, ceid?: EID): Component<T>;
|
|
38
39
|
component(this: World, name: string): Component;
|
|
39
40
|
/** Prevent any further calls to {@link component}. */
|
|
40
41
|
disableComponentRegistration(): void;
|
|
@@ -7,7 +7,7 @@ export class Components extends Entities {
|
|
|
7
7
|
/** @internal `true` once {@link start} or {@link disableComponentRegistration} has been called. */
|
|
8
8
|
this._componentRegistrationDisabled = false;
|
|
9
9
|
}
|
|
10
|
-
component(ComponentClassOrName,
|
|
10
|
+
component(ComponentClassOrName, ceid) {
|
|
11
11
|
if (typeof ComponentClassOrName === "string") {
|
|
12
12
|
const entity = this.entity(ComponentClassOrName);
|
|
13
13
|
if (!(entity instanceof Component)) {
|
|
@@ -15,7 +15,7 @@ export class Components extends Entities {
|
|
|
15
15
|
}
|
|
16
16
|
return entity;
|
|
17
17
|
}
|
|
18
|
-
return this._component(Component, ComponentClassOrName,
|
|
18
|
+
return this._component(Component, ComponentClassOrName, ceid);
|
|
19
19
|
}
|
|
20
20
|
/** Prevent any further calls to {@link component}. */
|
|
21
21
|
disableComponentRegistration() {
|
|
@@ -51,19 +51,19 @@ export class Components extends Entities {
|
|
|
51
51
|
}
|
|
52
52
|
/** Declare a group of mutually exclusive components. */
|
|
53
53
|
setExclusiveComponents(...components) {
|
|
54
|
-
const
|
|
55
|
-
for (let i = 0; i <
|
|
56
|
-
|
|
54
|
+
const componentMetas = components.map((C) => this.entity(C).meta);
|
|
55
|
+
for (let i = 0; i < componentMetas.length; i++) {
|
|
56
|
+
componentMetas[i]._exclusive = componentMetas.filter((_, j) => j !== i);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
/** @internal Register a component-like entity in the requested id pool. */
|
|
60
|
-
_component(Constructor, ComponentClass,
|
|
61
|
-
if (
|
|
62
|
-
throw new Error(`Component eid ${
|
|
60
|
+
_component(Constructor, ComponentClass, ceid, pool = this._componentPool) {
|
|
61
|
+
if (ceid === RESERVED_EID) {
|
|
62
|
+
throw new Error(`Component eid ${ceid} is reserved`);
|
|
63
63
|
}
|
|
64
64
|
const existingComponent = this._classRegistry.get(ComponentClass);
|
|
65
65
|
if (existingComponent) {
|
|
66
|
-
if (
|
|
66
|
+
if (ceid === undefined || ceid === existingComponent.eid) {
|
|
67
67
|
return existingComponent;
|
|
68
68
|
}
|
|
69
69
|
throw new Error(`Component class ${ComponentClass.name} is already registered with eid ${existingComponent.eid}`);
|
|
@@ -71,17 +71,17 @@ export class Components extends Entities {
|
|
|
71
71
|
if (this._componentRegistrationDisabled) {
|
|
72
72
|
throw new Error("World component registration is disabled");
|
|
73
73
|
}
|
|
74
|
-
if (
|
|
75
|
-
|
|
74
|
+
if (ceid === undefined) {
|
|
75
|
+
ceid = pool.alloc();
|
|
76
76
|
}
|
|
77
77
|
else {
|
|
78
|
-
if (this._entities.has(
|
|
79
|
-
throw new Error(`Entity id ${
|
|
78
|
+
if (this._entities.has(ceid)) {
|
|
79
|
+
throw new Error(`Entity id ${ceid} is already taken`);
|
|
80
80
|
}
|
|
81
|
-
this._reserveEid(
|
|
81
|
+
this._reserveEid(ceid);
|
|
82
82
|
}
|
|
83
|
-
const component = new Constructor(this,
|
|
84
|
-
this._entities.set(
|
|
83
|
+
const component = new Constructor(this, ceid, ComponentClass);
|
|
84
|
+
this._entities.set(ceid, component);
|
|
85
85
|
this._classRegistry.set(ComponentClass, component);
|
|
86
86
|
// Component-definition entities are first-class entities: notify so any
|
|
87
87
|
// live world-rooted query/term picks them up reactively (reflection),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.components.js","sourceRoot":"","sources":["../../src/world/world.components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2C,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,OAAO,UAAW,SAAQ,QAAQ;IAAxC;;QACE,mGAAmG;QACzF,mCAA8B,GAAG,KAAK,CAAC;IAqJnD,CAAC;IA7GQ,SAAS,CAEd,oBAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"world.components.js","sourceRoot":"","sources":["../../src/world/world.components.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type ComponentRef } from "../component.js";
|
|
2
|
-
import { Entity } from "../entity/index.js";
|
|
2
|
+
import { Entity, type EID } from "../entity/index.js";
|
|
3
3
|
import { Deferred } from "./world.deferred.js";
|
|
4
4
|
import type { World } from "./world.js";
|
|
5
5
|
export declare class Entities extends Deferred {
|
|
6
6
|
/** Return the entity with id `eid`, creating it if it does not yet exist. */
|
|
7
|
-
getOrCreateEntity(this: World, eid:
|
|
7
|
+
getOrCreateEntity(this: World, eid: EID, onCreateCallback?: (e: Entity) => void): Entity;
|
|
8
8
|
/** Look up an entity by component ref or identity name. */
|
|
9
9
|
getEntity(this: World, ref: ComponentRef | string): Entity | undefined;
|
|
10
10
|
/** Create a new entity with an auto-assigned id. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.entities.js","sourceRoot":"","sources":["../../src/world/world.entities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"world.entities.js","sourceRoot":"","sources":["../../src/world/world.entities.ts"],"names":[],"mappings":"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"}
|
package/dist/world/world.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SilenceSource } from "../modules/relationships.js";
|
|
2
2
|
import { Query } from "../query/index.js";
|
|
3
|
-
import { ChildOf, SilenceSource } from "../relationship.js";
|
|
4
3
|
import { System } from "../system.js";
|
|
5
4
|
import { Pipeline } from "./world.pipeline.js";
|
|
6
5
|
/**
|
|
@@ -30,10 +29,9 @@ import { Pipeline } from "./world.pipeline.js";
|
|
|
30
29
|
export class World extends Pipeline {
|
|
31
30
|
constructor(options = {}) {
|
|
32
31
|
super(options);
|
|
33
|
-
this.component(
|
|
32
|
+
this.component(SilenceSource).onRemove((entity) => entity.get(Query)?._clearSilence());
|
|
34
33
|
this.component(Query).onRemove((_entity, query) => query.destroy());
|
|
35
34
|
this.component(System).onRemove((_entity, system) => system.destroy());
|
|
36
|
-
this.component(SilenceSource).onRemove((entity) => entity.get(Query)?._clearSilence());
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
37
|
//# sourceMappingURL=world.js.map
|
package/dist/world/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,KAAM,SAAQ,QAAQ;IACjC,YAAmB,UAAwB,EAAE;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Entity, type EntityClass } from "../entity/index.js";
|
|
1
|
+
import { Entity, type EID, type EntityClass } from "../entity/index.js";
|
|
2
2
|
import { Components } from "./world.components.js";
|
|
3
3
|
import type { WorldOptions } from "./world.base.js";
|
|
4
4
|
import type { World } from "./world.js";
|
|
@@ -7,6 +7,6 @@ type ModuleEntity = Entity & {
|
|
|
7
7
|
};
|
|
8
8
|
export declare class Modules extends Components {
|
|
9
9
|
constructor(options?: WorldOptions);
|
|
10
|
-
module<T extends ModuleEntity>(this: World, ModuleClass: EntityClass<T>, eid?:
|
|
10
|
+
module<T extends ModuleEntity>(this: World, ModuleClass: EntityClass<T>, eid?: EID): T;
|
|
11
11
|
}
|
|
12
12
|
export {};
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { IdentityModule } from "../modules/identity.js";
|
|
2
2
|
import { SingletonModule } from "../modules/singleton.js";
|
|
3
|
+
import { RelationshipsModule } from "../modules/relationships.js";
|
|
3
4
|
import { Components } from "./world.components.js";
|
|
4
|
-
const BUILTIN_MODULES = [
|
|
5
|
+
const BUILTIN_MODULES = [
|
|
6
|
+
IdentityModule,
|
|
7
|
+
SingletonModule,
|
|
8
|
+
RelationshipsModule,
|
|
9
|
+
];
|
|
5
10
|
export class Modules extends Components {
|
|
6
11
|
constructor(options = {}) {
|
|
7
12
|
super(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.modules.js","sourceRoot":"","sources":["../../src/world/world.modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,MAAM,eAAe,GAAgC,
|
|
1
|
+
{"version":3,"file":"world.modules.js","sourceRoot":"","sources":["../../src/world/world.modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMnD,MAAM,eAAe,GAAgC;IACnD,cAAc;IACd,eAAe;IACf,mBAAmB;CACpB,CAAC;AAEF,MAAM,OAAO,OAAQ,SAAQ,UAAU;IACrC,YAAmB,UAAwB,EAAE;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,IAAwB,CAAC;QACvC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAEM,MAAM,CAAsC,WAA2B,EAAE,GAAS;QACvF,MAAM,cAAc,GAAG,WAAwC,CAAC;QAChE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAI,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnF,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EID } from "../entity/index.js";
|
|
1
2
|
import { type IdPoolConfig } from "../util/id_pool.js";
|
|
2
3
|
import { Base, type WorldOptions } from "./world.base.js";
|
|
3
4
|
export declare const DEFAULT_POOLS: readonly IdPoolConfig[];
|
|
@@ -5,5 +6,5 @@ export declare class Pools extends Base {
|
|
|
5
6
|
constructor(options?: WorldOptions);
|
|
6
7
|
get pools(): ReadonlyArray<IdPoolConfig>;
|
|
7
8
|
/** Return the id that the named pool will allocate next without reserving it. */
|
|
8
|
-
peekNextEid(poolName: string):
|
|
9
|
+
peekNextEid(poolName: string): EID;
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.pools.js","sourceRoot":"","sources":["../../src/world/world.pools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"world.pools.js","sourceRoot":"","sources":["../../src/world/world.pools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type ExtractRequired, type QueryDSL } from "../dsl.js";
|
|
1
|
+
import { type ExtractSpecRequired, type QueryDSL, type QuerySpec } from "../dsl.js";
|
|
3
2
|
import { Filter } from "../filter.js";
|
|
4
3
|
import { Query } from "../query/index.js";
|
|
5
4
|
import { Term } from "../terms/index.js";
|
|
@@ -8,9 +7,8 @@ import type { World } from "./world.js";
|
|
|
8
7
|
export declare class Queries extends Storage {
|
|
9
8
|
/** Read-only view of every registered query (includes systems). */
|
|
10
9
|
get queries(): ReadonlyArray<Query>;
|
|
11
|
-
/** Create a non-reactive {@link Filter} that matches entities satisfying `
|
|
12
|
-
filter<
|
|
13
|
-
filter<T extends ComponentType[]>(this: World, q: QueryDSL, _guaranteed: readonly [...T]): Filter<T>;
|
|
10
|
+
/** Create a non-reactive {@link Filter} that matches entities satisfying `spec`. */
|
|
11
|
+
filter<const S extends QuerySpec>(this: World, spec: S): Filter<ExtractSpecRequired<S>>;
|
|
14
12
|
/** Create and return a standalone {@link Query}, ready for fluent configuration. */
|
|
15
13
|
query(this: World, name: string): Query;
|
|
16
14
|
/** Return the shared materialized term for a reactive query DSL expression. */
|