@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
package/dist/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
|
package/dist/module.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Component } from "./component.js";
|
|
2
|
-
import { type World } from "./world/index.js";
|
|
3
2
|
/**
|
|
4
3
|
* Base class for built-in world modules.
|
|
5
4
|
*
|
|
@@ -11,7 +10,6 @@ import { type World } from "./world/index.js";
|
|
|
11
10
|
* created and initialised by the world internally.
|
|
12
11
|
*/
|
|
13
12
|
export declare abstract class Module extends Component {
|
|
14
|
-
constructor(world: World, eid: number);
|
|
15
13
|
/**
|
|
16
14
|
* Initialise this module.
|
|
17
15
|
*
|
package/dist/module.js
CHANGED
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,OAAgB,MAAO,SAAQ,SAAS;CAS7C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Relationship } from "../component_meta.js";
|
|
2
|
+
import { type Entity } from "../entity/index.js";
|
|
3
|
+
/** Built-in parent-child relationship. */
|
|
4
|
+
export declare class ChildOf extends Relationship {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Built-in relationship marking a feedback **silence domain** for a query
|
|
8
|
+
* or system.
|
|
9
|
+
*
|
|
10
|
+
* When a query carries a `SilenceSource` pointing at a query entity, it
|
|
11
|
+
* ignores `update` notifications whose originating entity (the system
|
|
12
|
+
* that wrote the component) is a member of that query. Configure it through
|
|
13
|
+
* {@link Query.ignoreSource}.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SilenceSource extends Relationship {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Marker component used to tag a relationship component as traversable.
|
|
19
|
+
*
|
|
20
|
+
* Attach to a relationship-component entity (e.g. `ChildOf`) to enable
|
|
21
|
+
* automatic depth tracking: every entity carrying the tagged relationship
|
|
22
|
+
* gets a depth entry whose value is the number of hops to the nearest root
|
|
23
|
+
* (zero for roots).
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* world.component(ChildOf).add(Traversable);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* The depth map is maintained reactively by {@link RelationshipsModule}.
|
|
30
|
+
*/
|
|
31
|
+
export declare class Traversable {
|
|
32
|
+
/** Entity to depth (hops to root, 0-based). */
|
|
33
|
+
depths: Map<Entity, number>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Relationship } from "../component_meta.js";
|
|
2
|
+
/** Built-in parent-child relationship. */
|
|
3
|
+
export class ChildOf extends Relationship {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Built-in relationship marking a feedback **silence domain** for a query
|
|
7
|
+
* or system.
|
|
8
|
+
*
|
|
9
|
+
* When a query carries a `SilenceSource` pointing at a query entity, it
|
|
10
|
+
* ignores `update` notifications whose originating entity (the system
|
|
11
|
+
* that wrote the component) is a member of that query. Configure it through
|
|
12
|
+
* {@link Query.ignoreSource}.
|
|
13
|
+
*/
|
|
14
|
+
export class SilenceSource extends Relationship {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Marker component used to tag a relationship component as traversable.
|
|
18
|
+
*
|
|
19
|
+
* Attach to a relationship-component entity (e.g. `ChildOf`) to enable
|
|
20
|
+
* automatic depth tracking: every entity carrying the tagged relationship
|
|
21
|
+
* gets a depth entry whose value is the number of hops to the nearest root
|
|
22
|
+
* (zero for roots).
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* world.component(ChildOf).add(Traversable);
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* The depth map is maintained reactively by {@link RelationshipsModule}.
|
|
29
|
+
*/
|
|
30
|
+
export class Traversable {
|
|
31
|
+
constructor() {
|
|
32
|
+
/** Entity to depth (hops to root, 0-based). */
|
|
33
|
+
this.depths = new Map();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=relationship_types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship_types.js","sourceRoot":"","sources":["../../src/modules/relationship_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,0CAA0C;AAC1C,MAAM,OAAO,OAAQ,SAAQ,YAAY;CAAG;AAE5C;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;CAAG;AAElD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAW;IAAxB;QACE,+CAA+C;QAC/C,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,CAAC;CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Module } from "../module.js";
|
|
2
|
+
export { ChildOf, SilenceSource, Traversable } from "./relationship_types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Built-in world module that registers the `ChildOf` relationship and
|
|
5
|
+
* maintains depth tracking for traversable relationships.
|
|
6
|
+
*
|
|
7
|
+
* Registered automatically by every {@link World}. It sets `ChildOf`'s
|
|
8
|
+
* `onDeleteTarget` cleanup policy to {@link CleanupPolicy.Delete}, so
|
|
9
|
+
* destroying a parent recursively destroys the children that target it through
|
|
10
|
+
* `ChildOf` (custom relationships default to `Remove`).
|
|
11
|
+
*
|
|
12
|
+
* When a relationship component entity has `Traversable` attached, the module
|
|
13
|
+
* installs `onAdd`, `onSet`, and `onRemove` hooks on that relationship so that
|
|
14
|
+
* every entity's depth is updated when the relationship is added, retargeted,
|
|
15
|
+
* or removed.
|
|
16
|
+
*
|
|
17
|
+
* Depth is computed by walking `entity.parent(relEid)` to the root. When an
|
|
18
|
+
* entity's depth changes, every descendant is recursively recomputed.
|
|
19
|
+
*/
|
|
20
|
+
export declare class RelationshipsModule extends Module {
|
|
21
|
+
init(): void;
|
|
22
|
+
private _cascadeUpdate;
|
|
23
|
+
private _depthOf;
|
|
24
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CleanupPolicy } from "../component_meta.js";
|
|
2
|
+
import { Module } from "../module.js";
|
|
3
|
+
import { ChildOf, Traversable } from "./relationship_types.js";
|
|
4
|
+
export { ChildOf, SilenceSource, Traversable } from "./relationship_types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Built-in world module that registers the `ChildOf` relationship and
|
|
7
|
+
* maintains depth tracking for traversable relationships.
|
|
8
|
+
*
|
|
9
|
+
* Registered automatically by every {@link World}. It sets `ChildOf`'s
|
|
10
|
+
* `onDeleteTarget` cleanup policy to {@link CleanupPolicy.Delete}, so
|
|
11
|
+
* destroying a parent recursively destroys the children that target it through
|
|
12
|
+
* `ChildOf` (custom relationships default to `Remove`).
|
|
13
|
+
*
|
|
14
|
+
* When a relationship component entity has `Traversable` attached, the module
|
|
15
|
+
* installs `onAdd`, `onSet`, and `onRemove` hooks on that relationship so that
|
|
16
|
+
* every entity's depth is updated when the relationship is added, retargeted,
|
|
17
|
+
* or removed.
|
|
18
|
+
*
|
|
19
|
+
* Depth is computed by walking `entity.parent(relEid)` to the root. When an
|
|
20
|
+
* entity's depth changes, every descendant is recursively recomputed.
|
|
21
|
+
*/
|
|
22
|
+
export class RelationshipsModule extends Module {
|
|
23
|
+
init() {
|
|
24
|
+
const world = this.world;
|
|
25
|
+
const childOf = world.component(ChildOf);
|
|
26
|
+
const traversable = world.component(Traversable);
|
|
27
|
+
childOf.meta.onDeleteTarget = CleanupPolicy.Delete;
|
|
28
|
+
traversable.onAdd((rel, traversable) => {
|
|
29
|
+
const relEid = rel.eid;
|
|
30
|
+
rel
|
|
31
|
+
.onAdd((entity) => {
|
|
32
|
+
this._cascadeUpdate(entity, relEid, traversable);
|
|
33
|
+
})
|
|
34
|
+
.onSet((entity) => {
|
|
35
|
+
this._cascadeUpdate(entity, relEid, traversable);
|
|
36
|
+
})
|
|
37
|
+
.onRemove((entity) => {
|
|
38
|
+
traversable.depths.delete(entity);
|
|
39
|
+
for (const child of entity._childrenByEid(relEid) ?? []) {
|
|
40
|
+
this._cascadeUpdate(child, relEid, traversable);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
world.entities.forEach((entity) => {
|
|
44
|
+
if (entity.has(relEid)) {
|
|
45
|
+
this._cascadeUpdate(entity, relEid, traversable);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
childOf.add(Traversable);
|
|
50
|
+
}
|
|
51
|
+
_cascadeUpdate(entity, relEid, traversable, visited = new Set()) {
|
|
52
|
+
if (visited.has(entity)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
visited.add(entity);
|
|
56
|
+
if (entity.has(relEid)) {
|
|
57
|
+
traversable.depths.set(entity, this._depthOf(entity, relEid, traversable, new Set()));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
traversable.depths.delete(entity);
|
|
61
|
+
}
|
|
62
|
+
for (const child of entity._childrenByEid(relEid) ?? []) {
|
|
63
|
+
this._cascadeUpdate(child, relEid, traversable, visited);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
_depthOf(entity, relEid, traversable, visited) {
|
|
67
|
+
if (!entity.has(relEid) || visited.has(entity)) {
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
visited.add(entity);
|
|
71
|
+
const parent = entity.parent(relEid);
|
|
72
|
+
if (!parent) {
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
const parentDepth = traversable.depths.get(parent);
|
|
76
|
+
if (parentDepth !== undefined && !visited.has(parent)) {
|
|
77
|
+
return parentDepth + 1;
|
|
78
|
+
}
|
|
79
|
+
return this._depthOf(parent, relEid, traversable, visited) + 1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=relationships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../src/modules/relationships.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,9 +23,8 @@ export class Singleton {
|
|
|
23
23
|
*/
|
|
24
24
|
export class SingletonModule extends Module {
|
|
25
25
|
init() {
|
|
26
|
-
this.world.component(Singleton);
|
|
27
26
|
this.world.component(Singleton).onAdd((target) => {
|
|
28
|
-
const targetMeta = target.
|
|
27
|
+
const targetMeta = target.meta;
|
|
29
28
|
if (targetMeta.usageCount !== 0) {
|
|
30
29
|
throw new Error(`Cannot make component ${targetMeta.Class.name} singleton; ${targetMeta.usageCount} instance(s) already exist`);
|
|
31
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/modules/singleton.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,SAAS;CAAG;AAEzB;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAClC,IAAI;QACT,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../src/modules/singleton.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,SAAS;CAAG;AAEzB;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAClC,IAAI;QACT,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,MAAc,EAAQ,EAAE;YAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YAC/B,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,yBAAyB,UAAU,CAAC,KAAK,CAAC,IAAI,eAAe,UAAU,CAAC,UAAU,4BAA4B,CAC/G,CAAC;YACJ,CAAC;YAED,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1B,IAAI,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,CAAC,KAAK,CAAC,IAAI,cAAc,MAAM,CAAC,GAAG,kCAAkC,MAAM,CAAC,GAAG,EAAE,CAC9H,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ComponentInstance, type ComponentType } from "../component.js";
|
|
2
|
+
import { Entity, type EID } from "../entity/index.js";
|
|
3
|
+
import { Iter, type InjectElement, type InjectTuple } from "../inject.js";
|
|
4
|
+
import { OrderedSet } from "../util/ordered_set.js";
|
|
5
|
+
import { type World } from "../world/index.js";
|
|
6
|
+
export type EntityCallback = (e: Entity, snapshot?: Map<EID, ComponentInstance>) => void;
|
|
7
|
+
export type ComponentCallback = (e: Entity, c: ComponentInstance) => void;
|
|
8
|
+
export declare function makeEnterCallback(world: World, arg0: InjectTuple | ((e: Entity) => void) | typeof Entity | typeof Iter, arg1?: InjectTuple | Function, arg2?: Function): EntityCallback;
|
|
9
|
+
export declare function makeExitCallback(world: World, arg0: readonly unknown[] | ((e: Entity) => void) | typeof Entity | typeof Iter, arg1?: readonly unknown[] | ((...args: any[]) => void), arg2?: (...args: any[]) => void): {
|
|
10
|
+
callback: EntityCallback;
|
|
11
|
+
snapshotTypes: EID[] | undefined;
|
|
12
|
+
};
|
|
13
|
+
export declare function makeSortedEntitySet(world: World, arg0: readonly InjectElement[] | typeof Entity | typeof Iter, arg1?: readonly InjectElement[] | Function, arg2?: Function): OrderedSet<Entity>;
|
|
14
|
+
export declare function makeUpdateRegistration<C extends ComponentType>(world: World, arg0: C | typeof Entity | typeof Iter, arg1: C | readonly InjectElement[] | ((...args: any[]) => void), arg2?: readonly InjectElement[] | ((...args: any[]) => void), arg3?: (...args: any[]) => void): {
|
|
15
|
+
componentEid: EID;
|
|
16
|
+
callback: ComponentCallback;
|
|
17
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { directInjectEids, getInjected, getInjectedWithSrc, injectArity, isCursorMarker, Iter, mapInject, wantsIter, } from "../inject.js";
|
|
2
|
+
import { OrderedSet } from "../util/ordered_set.js";
|
|
3
|
+
export function makeEnterCallback(world, arg0, arg1, arg2) {
|
|
4
|
+
if (typeof arg0 === "function" && !isCursorMarker(arg0)) {
|
|
5
|
+
return arg0;
|
|
6
|
+
}
|
|
7
|
+
const useIter = wantsIter(arg0);
|
|
8
|
+
const components = (isCursorMarker(arg0) ? arg1 : arg0);
|
|
9
|
+
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
10
|
+
const inject = mapInject(world, components);
|
|
11
|
+
const arity = injectArity(inject);
|
|
12
|
+
if (useIter) {
|
|
13
|
+
return (e) => {
|
|
14
|
+
const injected = new Array(arity);
|
|
15
|
+
const it = new Iter(arity);
|
|
16
|
+
it.entity = e;
|
|
17
|
+
getInjectedWithSrc(e, inject, injected, it.src, true);
|
|
18
|
+
cb(it, injected);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return (e) => {
|
|
22
|
+
const injected = new Array(arity);
|
|
23
|
+
getInjected(e, inject, true, injected);
|
|
24
|
+
cb(e, injected);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function makeExitCallback(world, arg0, arg1, arg2) {
|
|
28
|
+
if (typeof arg0 === "function" && !isCursorMarker(arg0)) {
|
|
29
|
+
return { callback: arg0, snapshotTypes: undefined };
|
|
30
|
+
}
|
|
31
|
+
const useIter = wantsIter(arg0);
|
|
32
|
+
const components = (isCursorMarker(arg0) ? arg1 : arg0);
|
|
33
|
+
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
34
|
+
const inject = mapInject(world, components);
|
|
35
|
+
const snapshotTypes = directInjectEids(inject);
|
|
36
|
+
const arity = injectArity(inject);
|
|
37
|
+
if (useIter) {
|
|
38
|
+
const callback = (e, exitSnapshot) => {
|
|
39
|
+
const injected = new Array(arity);
|
|
40
|
+
const it = new Iter(arity);
|
|
41
|
+
it.entity = e;
|
|
42
|
+
getInjectedWithSrc(e, inject, injected, it.src, true, exitSnapshot);
|
|
43
|
+
cb(it, injected);
|
|
44
|
+
};
|
|
45
|
+
return { callback, snapshotTypes };
|
|
46
|
+
}
|
|
47
|
+
const callback = (e, exitSnapshot) => {
|
|
48
|
+
const injected = new Array(arity);
|
|
49
|
+
getInjected(e, inject, true, injected, exitSnapshot);
|
|
50
|
+
cb(e, injected);
|
|
51
|
+
};
|
|
52
|
+
return { callback, snapshotTypes };
|
|
53
|
+
}
|
|
54
|
+
export function makeSortedEntitySet(world, arg0, arg1, arg2) {
|
|
55
|
+
const useIter = wantsIter(arg0);
|
|
56
|
+
const components = (isCursorMarker(arg0) ? arg1 : arg0);
|
|
57
|
+
const cb = (isCursorMarker(arg0) ? arg2 : arg1);
|
|
58
|
+
const inject = mapInject(world, components);
|
|
59
|
+
const arity = injectArity(inject);
|
|
60
|
+
if (useIter) {
|
|
61
|
+
const itA = new Iter(arity);
|
|
62
|
+
const itB = new Iter(arity);
|
|
63
|
+
const resolvedA = new Array(arity);
|
|
64
|
+
const resolvedB = new Array(arity);
|
|
65
|
+
return new OrderedSet((a, b) => {
|
|
66
|
+
itA.entity = a;
|
|
67
|
+
itB.entity = b;
|
|
68
|
+
getInjectedWithSrc(a, inject, resolvedA, itA.src);
|
|
69
|
+
getInjectedWithSrc(b, inject, resolvedB, itB.src);
|
|
70
|
+
return cb(itA, resolvedA, itB, resolvedB) || a.eid - b.eid;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const resolvedA = new Array(arity);
|
|
74
|
+
const resolvedB = new Array(arity);
|
|
75
|
+
return new OrderedSet((a, b) => {
|
|
76
|
+
getInjected(a, inject, false, resolvedA);
|
|
77
|
+
getInjected(b, inject, false, resolvedB);
|
|
78
|
+
return cb(a, resolvedA, b, resolvedB) || a.eid - b.eid;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
export function makeUpdateRegistration(world, arg0, arg1, arg2, arg3) {
|
|
82
|
+
const useIter = wantsIter(arg0);
|
|
83
|
+
if (isCursorMarker(arg0)) {
|
|
84
|
+
arg0 = arg1;
|
|
85
|
+
arg1 = arg2;
|
|
86
|
+
arg2 = arg3;
|
|
87
|
+
}
|
|
88
|
+
const ComponentClass = arg0;
|
|
89
|
+
const componentEid = world.entity(ComponentClass).eid;
|
|
90
|
+
if (typeof arg1 === "function") {
|
|
91
|
+
return { componentEid, callback: arg1 };
|
|
92
|
+
}
|
|
93
|
+
const components = arg1;
|
|
94
|
+
const callback = arg2;
|
|
95
|
+
const inject = mapInject(world, components);
|
|
96
|
+
const arity = injectArity(inject);
|
|
97
|
+
const injected = new Array(arity);
|
|
98
|
+
if (useIter) {
|
|
99
|
+
const it = new Iter(arity);
|
|
100
|
+
const cb = (e, c) => {
|
|
101
|
+
it.entity = e;
|
|
102
|
+
getInjectedWithSrc(e, inject, injected, it.src);
|
|
103
|
+
callback(it, c, injected);
|
|
104
|
+
};
|
|
105
|
+
return { componentEid, callback: cb };
|
|
106
|
+
}
|
|
107
|
+
const cb = (e, c) => {
|
|
108
|
+
getInjected(e, inject, false, injected);
|
|
109
|
+
callback(e, c, injected);
|
|
110
|
+
};
|
|
111
|
+
return { componentEid, callback: cb };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=callbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/query/callbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SOURCE_TRACKED_QUERY_ERROR = "source/children is not supported in a tracked query; use world.filter(...)";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/query/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GACrC,4EAA4E,CAAC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
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
|
-
import {
|
|
5
|
-
export declare class
|
|
4
|
+
import { type World } from "../world/index.js";
|
|
5
|
+
export declare class Group<K = unknown, R extends ComponentType[] = []> {
|
|
6
|
+
readonly key: K;
|
|
7
|
+
private readonly _entities;
|
|
8
|
+
private readonly _world;
|
|
9
|
+
constructor(world: World, key: K);
|
|
6
10
|
get count(): number;
|
|
7
|
-
has(e: Entity): boolean;
|
|
8
11
|
[Symbol.iterator](): IterableIterator<Entity>;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
forEach(callback: (e: Entity) => void):
|
|
12
|
-
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (
|
|
13
|
-
|
|
14
|
-
forEach<J extends FanInjectTuple>(cursor: typeof Iter, components: readonly [...J], callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): void;
|
|
12
|
+
forEach(callback: (e: Entity) => void): this;
|
|
13
|
+
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
14
|
+
forEach<J extends FanInjectTuple>(cursor: typeof Entity, components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
15
|
+
forEach<J extends FanInjectTuple>(cursor: typeof Iter, components: readonly [...J], callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
16
|
+
has(e: Entity): boolean;
|
|
15
17
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { forEachInjected, } from "../inject.js";
|
|
2
|
+
export class Group {
|
|
3
|
+
constructor(world, key) {
|
|
4
|
+
this._entities = new Set();
|
|
5
|
+
this._world = world;
|
|
6
|
+
this.key = key;
|
|
7
|
+
}
|
|
8
|
+
get count() {
|
|
9
|
+
return this._entities.size;
|
|
10
|
+
}
|
|
11
|
+
[Symbol.iterator]() {
|
|
12
|
+
return this._entities[Symbol.iterator]();
|
|
13
|
+
}
|
|
14
|
+
forEach(arg0, arg1, arg2) {
|
|
15
|
+
forEachInjected(this._world, this._entities, arg0, arg1, arg2);
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
has(e) {
|
|
19
|
+
return this._entities.has(e);
|
|
20
|
+
}
|
|
21
|
+
/** @internal */
|
|
22
|
+
_add(e) {
|
|
23
|
+
this._entities.add(e);
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
_remove(e) {
|
|
27
|
+
this._entities.delete(e);
|
|
28
|
+
return this._entities.size === 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/query/group.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,GAIhB,MAAM,cAAc,CAAC;AAGtB,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;IAiBM,OAAO,CAAC,IAAa,EAAE,IAAc,EAAE,IAAc;QAC1D,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,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,26 @@
|
|
|
1
|
+
import { type ComponentType } from "../component.js";
|
|
2
|
+
import { Group } from "./group.js";
|
|
3
|
+
import { Query } from "./query.js";
|
|
4
|
+
/**
|
|
5
|
+
* A {@link Query} that has been partitioned by {@link Query.groupBy}. Adds the
|
|
6
|
+
* typed group-accessor surface ({@link group}, {@link groups}, etc.) on top of
|
|
7
|
+
* the query's usual reactive membership.
|
|
8
|
+
*
|
|
9
|
+
* Instances are created lazily by {@link Query.groupBy} via
|
|
10
|
+
* `Object.setPrototypeOf`, so callers keep the same configured query object.
|
|
11
|
+
*
|
|
12
|
+
* @typeParam K - The grouping key type produced by the key function (or the
|
|
13
|
+
* relationship target entity, for the relationship form).
|
|
14
|
+
* @typeParam R - Component classes guaranteed present on every matched entity.
|
|
15
|
+
*/
|
|
16
|
+
export declare class GroupedQuery<K = unknown, R extends ComponentType[] = []> extends Query<R> {
|
|
17
|
+
private _grouping;
|
|
18
|
+
get groupCount(): number;
|
|
19
|
+
destroy(): void;
|
|
20
|
+
group(key: K): Group<K, R> | undefined;
|
|
21
|
+
groups(): IterableIterator<Group<K, R>>;
|
|
22
|
+
groupKeys(): IterableIterator<K>;
|
|
23
|
+
onGroupEnter(callback: (group: Group<K, R>) => void): this;
|
|
24
|
+
onGroupExit(callback: (key: K, group: Group<K, R>) => void): this;
|
|
25
|
+
private _composeGroupMembership;
|
|
26
|
+
}
|