@vworlds/vecs 1.0.20 → 1.0.22

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.
Files changed (155) hide show
  1. package/README.md +84 -99
  2. package/dist/component.d.ts +5 -2
  3. package/dist/component.js +4 -57
  4. package/dist/component.js.map +1 -1
  5. package/dist/component_meta.d.ts +15 -8
  6. package/dist/component_meta.js +6 -4
  7. package/dist/component_meta.js.map +1 -1
  8. package/dist/dsl.d.ts +56 -11
  9. package/dist/dsl.js +55 -38
  10. package/dist/dsl.js.map +1 -1
  11. package/dist/entity/entity.base.d.ts +4 -3
  12. package/dist/entity/entity.base.js +4 -4
  13. package/dist/entity/entity.base.js.map +1 -1
  14. package/dist/entity/entity.components.d.ts +16 -7
  15. package/dist/entity/entity.components.js +48 -23
  16. package/dist/entity/entity.components.js.map +1 -1
  17. package/dist/entity/entity.d.ts +5 -1
  18. package/dist/entity/entity.js +5 -0
  19. package/dist/entity/entity.js.map +1 -1
  20. package/dist/entity/entity.lifecycle.js +25 -25
  21. package/dist/entity/entity.lifecycle.js.map +1 -1
  22. package/dist/entity/entity.queries.js +0 -6
  23. package/dist/entity/entity.queries.js.map +1 -1
  24. package/dist/entity/entity.relationships.d.ts +1 -1
  25. package/dist/entity/entity.relationships.js +7 -5
  26. package/dist/entity/entity.relationships.js.map +1 -1
  27. package/dist/entity/index.d.ts +1 -1
  28. package/dist/entity/index.js.map +1 -1
  29. package/dist/filter.d.ts +6 -6
  30. package/dist/filter.js +2 -1
  31. package/dist/filter.js.map +1 -1
  32. package/dist/index.d.ts +10 -6
  33. package/dist/index.js +6 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/inject.d.ts +18 -17
  36. package/dist/inject.js +34 -34
  37. package/dist/inject.js.map +1 -1
  38. package/dist/module.d.ts +4 -4
  39. package/dist/module.js +0 -3
  40. package/dist/module.js.map +1 -1
  41. package/dist/modules/pipeline.d.ts +20 -0
  42. package/dist/modules/pipeline.js +57 -0
  43. package/dist/modules/pipeline.js.map +1 -0
  44. package/dist/modules/relationship_types.d.ts +37 -0
  45. package/dist/modules/relationship_types.js +39 -0
  46. package/dist/modules/relationship_types.js.map +1 -0
  47. package/dist/modules/relationships.d.ts +24 -0
  48. package/dist/modules/relationships.js +82 -0
  49. package/dist/modules/relationships.js.map +1 -0
  50. package/dist/modules/singleton.js +1 -2
  51. package/dist/modules/singleton.js.map +1 -1
  52. package/dist/package.json +2 -2
  53. package/dist/query/callbacks.d.ts +17 -0
  54. package/dist/query/callbacks.js +113 -0
  55. package/dist/query/callbacks.js.map +1 -0
  56. package/dist/query/constants.d.ts +1 -0
  57. package/dist/query/constants.js +2 -0
  58. package/dist/query/constants.js.map +1 -0
  59. package/dist/query/{query.03.tracking.d.ts → group.d.ts} +11 -9
  60. package/dist/query/group.js +31 -0
  61. package/dist/query/group.js.map +1 -0
  62. package/dist/query/grouped_query.d.ts +26 -0
  63. package/dist/query/grouped_query.js +121 -0
  64. package/dist/query/grouped_query.js.map +1 -0
  65. package/dist/query/grouped_query_registry.d.ts +4 -0
  66. package/dist/query/grouped_query_registry.js +11 -0
  67. package/dist/query/grouped_query_registry.js.map +1 -0
  68. package/dist/query/grouping.d.ts +24 -0
  69. package/dist/query/{query.07.groups.js → grouping.js} +29 -60
  70. package/dist/query/grouping.js.map +1 -0
  71. package/dist/query/index.d.ts +6 -6
  72. package/dist/query/index.js +6 -4
  73. package/dist/query/index.js.map +1 -1
  74. package/dist/query/query.d.ts +58 -28
  75. package/dist/query/query.js +334 -88
  76. package/dist/query/query.js.map +1 -1
  77. package/dist/system.d.ts +24 -54
  78. package/dist/system.js +47 -81
  79. package/dist/system.js.map +1 -1
  80. package/dist/terms/all_term.d.ts +2 -6
  81. package/dist/terms/all_term.js +2 -7
  82. package/dist/terms/all_term.js.map +1 -1
  83. package/dist/terms/any_term.d.ts +2 -6
  84. package/dist/terms/any_term.js +2 -7
  85. package/dist/terms/any_term.js.map +1 -1
  86. package/dist/terms/build.d.ts +9 -6
  87. package/dist/terms/build.js +17 -14
  88. package/dist/terms/build.js.map +1 -1
  89. package/dist/terms/component_term.d.ts +3 -3
  90. package/dist/terms/component_term.js.map +1 -1
  91. package/dist/terms/composite_build.d.ts +32 -0
  92. package/dist/terms/composite_build.js +28 -0
  93. package/dist/terms/composite_build.js.map +1 -0
  94. package/dist/terms/only_term.d.ts +3 -3
  95. package/dist/terms/only_term.js.map +1 -1
  96. package/dist/terms/predicate_term.d.ts +3 -3
  97. package/dist/terms/predicate_term.js +3 -3
  98. package/dist/terms/predicate_term.js.map +1 -1
  99. package/dist/terms/target_term.d.ts +3 -2
  100. package/dist/terms/target_term.js +11 -17
  101. package/dist/terms/target_term.js.map +1 -1
  102. package/dist/util/dense_set.js +1 -1
  103. package/dist/util/id_pool.d.ts +2 -0
  104. package/dist/util/id_pool.js +10 -0
  105. package/dist/util/id_pool.js.map +1 -1
  106. package/dist/util/ordered_set.js +15 -10
  107. package/dist/util/ordered_set.js.map +1 -1
  108. package/dist/world/world.components.d.ts +5 -9
  109. package/dist/world/world.components.js +16 -28
  110. package/dist/world/world.components.js.map +1 -1
  111. package/dist/world/world.d.ts +3 -6
  112. package/dist/world/world.entities.d.ts +2 -2
  113. package/dist/world/world.entities.js.map +1 -1
  114. package/dist/world/world.js +10 -10
  115. package/dist/world/world.js.map +1 -1
  116. package/dist/world/world.modules.d.ts +4 -7
  117. package/dist/world/world.modules.js +13 -10
  118. package/dist/world/world.modules.js.map +1 -1
  119. package/dist/world/world.pipeline.d.ts +5 -8
  120. package/dist/world/world.pipeline.js +24 -53
  121. package/dist/world/world.pipeline.js.map +1 -1
  122. package/dist/world/world.pools.d.ts +2 -1
  123. package/dist/world/world.pools.js.map +1 -1
  124. package/dist/world/world.queries.d.ts +3 -5
  125. package/dist/world/world.queries.js +11 -8
  126. package/dist/world/world.queries.js.map +1 -1
  127. package/package.json +2 -2
  128. package/dist/phase.d.ts +0 -29
  129. package/dist/phase.js +0 -24
  130. package/dist/phase.js.map +0 -1
  131. package/dist/query/query.00.base.d.ts +0 -23
  132. package/dist/query/query.00.base.js +0 -77
  133. package/dist/query/query.00.base.js.map +0 -1
  134. package/dist/query/query.01.reactive.d.ts +0 -7
  135. package/dist/query/query.01.reactive.js +0 -58
  136. package/dist/query/query.01.reactive.js.map +0 -1
  137. package/dist/query/query.02.lifecycle.d.ts +0 -6
  138. package/dist/query/query.02.lifecycle.js +0 -63
  139. package/dist/query/query.02.lifecycle.js.map +0 -1
  140. package/dist/query/query.03.tracking.js +0 -31
  141. package/dist/query/query.03.tracking.js.map +0 -1
  142. package/dist/query/query.04.callbacks.d.ts +0 -14
  143. package/dist/query/query.04.callbacks.js +0 -65
  144. package/dist/query/query.04.callbacks.js.map +0 -1
  145. package/dist/query/query.05.updates.d.ts +0 -14
  146. package/dist/query/query.05.updates.js +0 -81
  147. package/dist/query/query.05.updates.js.map +0 -1
  148. package/dist/query/query.06.predicate.d.ts +0 -13
  149. package/dist/query/query.06.predicate.js +0 -40
  150. package/dist/query/query.06.predicate.js.map +0 -1
  151. package/dist/query/query.07.groups.d.ts +0 -41
  152. package/dist/query/query.07.groups.js.map +0 -1
  153. package/dist/relationship.d.ts +0 -19
  154. package/dist/relationship.js +0 -18
  155. package/dist/relationship.js.map +0 -1
@@ -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,33 +12,28 @@ 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 `eid` to pin the component to a server-assigned
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
18
19
  * name (set via `world.component(C).name = "..."`). Throws if no entity with
19
20
  * that name exists or if the named entity is not a `Component` entity.
20
21
  *
21
- * After {@link start} (or {@link disableComponentRegistration}), registering a
22
- * new class throws.
23
- *
24
22
  * @param ComponentClass - The component class to register or retrieve.
25
- * @param eid - Optional explicit numeric entity id.
23
+ * @param ceid - Optional explicit numeric component entity id.
26
24
  * @returns The `Component` entity for the given class.
27
25
  *
28
26
  * @example
29
27
  * ```ts
30
28
  * world.component(Position); // register and auto-assign id
31
29
  * world.component(Position, 42); // register with explicit id 42
32
- * const meta = world.component(Position).ownMeta; // access metadata
30
+ * const componentMeta = world.component(Position).meta; // access metadata
33
31
  * world.component(Position).name = "Position";
34
32
  * world.component("Position"); // look up by name
35
33
  * ```
36
34
  */
37
- component<T extends ComponentType>(this: World, ComponentClass: T, eid?: number): Component<T>;
35
+ component<T extends ComponentType>(this: World, ComponentClass: T, ceid?: EID): Component<T>;
38
36
  component(this: World, name: string): Component;
39
- /** Prevent any further calls to {@link component}. */
40
- disableComponentRegistration(): void;
41
37
  /**
42
38
  * Read the singleton data stored on the component entity for `Class`.
43
39
  *
@@ -2,12 +2,7 @@ import { Component } from "../component.js";
2
2
  import { Entities } from "./world.entities.js";
3
3
  const RESERVED_EID = 0;
4
4
  export class Components extends Entities {
5
- constructor() {
6
- super(...arguments);
7
- /** @internal `true` once {@link start} or {@link disableComponentRegistration} has been called. */
8
- this._componentRegistrationDisabled = false;
9
- }
10
- component(ComponentClassOrName, eid) {
5
+ component(ComponentClassOrName, ceid) {
11
6
  if (typeof ComponentClassOrName === "string") {
12
7
  const entity = this.entity(ComponentClassOrName);
13
8
  if (!(entity instanceof Component)) {
@@ -15,11 +10,7 @@ export class Components extends Entities {
15
10
  }
16
11
  return entity;
17
12
  }
18
- return this._component(Component, ComponentClassOrName, eid);
19
- }
20
- /** Prevent any further calls to {@link component}. */
21
- disableComponentRegistration() {
22
- this._componentRegistrationDisabled = true;
13
+ return this._component(Component, ComponentClassOrName, ceid);
23
14
  }
24
15
  /**
25
16
  * Read the singleton data stored on the component entity for `Class`.
@@ -51,37 +42,34 @@ export class Components extends Entities {
51
42
  }
52
43
  /** Declare a group of mutually exclusive components. */
53
44
  setExclusiveComponents(...components) {
54
- const metas = components.map((C) => this.entity(C).ownMeta);
55
- for (let i = 0; i < metas.length; i++) {
56
- metas[i]._exclusive = metas.filter((_, j) => j !== i);
45
+ const componentMetas = components.map((C) => this.entity(C).meta);
46
+ for (let i = 0; i < componentMetas.length; i++) {
47
+ componentMetas[i]._exclusive = componentMetas.filter((_, j) => j !== i);
57
48
  }
58
49
  }
59
50
  /** @internal Register a component-like entity in the requested id pool. */
60
- _component(Constructor, ComponentClass, eid, pool = this._componentPool) {
61
- if (eid === RESERVED_EID) {
62
- throw new Error(`Component eid ${eid} is reserved`);
51
+ _component(Constructor, ComponentClass, ceid, pool = this._componentPool) {
52
+ if (ceid === RESERVED_EID) {
53
+ throw new Error(`Component eid ${ceid} is reserved`);
63
54
  }
64
55
  const existingComponent = this._classRegistry.get(ComponentClass);
65
56
  if (existingComponent) {
66
- if (eid === undefined || eid === existingComponent.eid) {
57
+ if (ceid === undefined || ceid === existingComponent.eid) {
67
58
  return existingComponent;
68
59
  }
69
60
  throw new Error(`Component class ${ComponentClass.name} is already registered with eid ${existingComponent.eid}`);
70
61
  }
71
- if (this._componentRegistrationDisabled) {
72
- throw new Error("World component registration is disabled");
73
- }
74
- if (eid === undefined) {
75
- eid = pool.alloc();
62
+ if (ceid === undefined) {
63
+ ceid = pool.alloc();
76
64
  }
77
65
  else {
78
- if (this._entities.has(eid)) {
79
- throw new Error(`Entity id ${eid} is already taken`);
66
+ if (this._entities.has(ceid)) {
67
+ throw new Error(`Entity id ${ceid} is already taken`);
80
68
  }
81
- this._reserveEid(eid);
69
+ this._reserveEid(ceid);
82
70
  }
83
- const component = new Constructor(this, eid, ComponentClass);
84
- this._entities.set(eid, component);
71
+ const component = new Constructor(this, ceid, ComponentClass);
72
+ this._entities.set(ceid, component);
85
73
  this._classRegistry.set(ComponentClass, component);
86
74
  // Component-definition entities are first-class entities: notify so any
87
75
  // 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":"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"}
1
+ {"version":3,"file":"world.components.js","sourceRoot":"","sources":["../../src/world/world.components.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,9 @@ import { type WorldOptions } from "./world.base.js";
8
8
  *
9
9
  * 1. **Register components** — call {@link component} for every component
10
10
  * class you plan to use.
11
- * 2. **Build the pipeline** — {@link addPhase} for every named phase, then
12
- * {@link system} / {@link query} for each processor.
13
- * 3. **Start** — call {@link start} to freeze component registration and
14
- * distribute systems into their phases.
15
- * 4. **Run loop** — call {@link runPhase} per phase or {@link progress} for
16
- * every phase, once per frame.
11
+ * 2. **Build the pipeline** — attach systems to phase entities with
12
+ * `DependsOn`, or call {@link setPipeline} with a custom query spec.
13
+ * 3. **Run loop** — call {@link progress} once per frame.
17
14
  *
18
15
  * ## Deferred mode
19
16
  *
@@ -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: number, onCreateCallback?: (e: Entity) => void): Entity;
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":"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"}
1
+ {"version":3,"file":"world.entities.js","sourceRoot":"","sources":["../../src/world/world.entities.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
- import { CleanupPolicy } from "../component_meta.js";
1
+ import { SilenceSource } from "../modules/relationships.js";
2
+ import { IdentityModule } from "../modules/identity.js";
3
+ import { PipelineModule } from "../modules/pipeline.js";
4
+ import { RelationshipsModule } from "../modules/relationships.js";
5
+ import { SingletonModule } from "../modules/singleton.js";
2
6
  import { Query } from "../query/index.js";
3
- import { ChildOf, SilenceSource } from "../relationship.js";
4
7
  import { System } from "../system.js";
5
8
  import { Pipeline } from "./world.pipeline.js";
6
9
  /**
@@ -11,12 +14,9 @@ import { Pipeline } from "./world.pipeline.js";
11
14
  *
12
15
  * 1. **Register components** — call {@link component} for every component
13
16
  * class you plan to use.
14
- * 2. **Build the pipeline** — {@link addPhase} for every named phase, then
15
- * {@link system} / {@link query} for each processor.
16
- * 3. **Start** — call {@link start} to freeze component registration and
17
- * distribute systems into their phases.
18
- * 4. **Run loop** — call {@link runPhase} per phase or {@link progress} for
19
- * every phase, once per frame.
17
+ * 2. **Build the pipeline** — attach systems to phase entities with
18
+ * `DependsOn`, or call {@link setPipeline} with a custom query spec.
19
+ * 3. **Run loop** — call {@link progress} once per frame.
20
20
  *
21
21
  * ## Deferred mode
22
22
  *
@@ -30,10 +30,10 @@ import { Pipeline } from "./world.pipeline.js";
30
30
  export class World extends Pipeline {
31
31
  constructor(options = {}) {
32
32
  super(options);
33
- this.component(ChildOf).ownMeta.onDeleteTarget = CleanupPolicy.Delete;
33
+ this.component(SilenceSource).onRemove((entity) => entity.get(Query)?._clearSilence());
34
34
  this.component(Query).onRemove((_entity, query) => query.destroy());
35
35
  this.component(System).onRemove((_entity, system) => system.destroy());
36
- this.component(SilenceSource).onRemove((entity) => entity.get(Query)?._clearSilence());
36
+ [IdentityModule, SingletonModule, RelationshipsModule, PipelineModule].forEach((mod) => this.module(mod));
37
37
  }
38
38
  }
39
39
  //# sourceMappingURL=world.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"world.js","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5D,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,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;QACtE,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;QACvE,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;IACzF,CAAC;CACF"}
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,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,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;;;;;;;;;;;;;;;;;;;;GAoBG;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;QACvE,CAAC,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACrF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CACjB,CAAC;IACJ,CAAC;CACF"}
@@ -1,12 +1,9 @@
1
- import { Entity, type EntityClass } from "../entity/index.js";
1
+ import { type EID, type EntityClass } from "../entity/index.js";
2
+ import { type Module, type ModuleConfig } from "../module.js";
2
3
  import { Components } from "./world.components.js";
3
- import type { WorldOptions } from "./world.base.js";
4
4
  import type { World } from "./world.js";
5
- type ModuleEntity = Entity & {
6
- init(): void;
7
- };
5
+ type ModuleArgs<T extends Module<any>> = undefined extends ModuleConfig<T> ? [eid?: EID] | [config: Exclude<ModuleConfig<T>, undefined>, eid?: EID] : [config: ModuleConfig<T>, eid?: EID];
8
6
  export declare class Modules extends Components {
9
- constructor(options?: WorldOptions);
10
- module<T extends ModuleEntity>(this: World, ModuleClass: EntityClass<T>, eid?: number): T;
7
+ module<T extends Module<any>>(this: World, ModuleClass: EntityClass<T>, ...args: ModuleArgs<T>): T;
11
8
  }
12
9
  export {};
@@ -1,21 +1,24 @@
1
- import { IdentityModule } from "../modules/identity.js";
2
- import { SingletonModule } from "../modules/singleton.js";
3
1
  import { Components } from "./world.components.js";
4
- const BUILTIN_MODULES = [IdentityModule, SingletonModule];
5
2
  export class Modules extends Components {
6
- constructor(options = {}) {
7
- super(options);
8
- const world = this;
9
- BUILTIN_MODULES.forEach((mod) => world.module(mod));
10
- }
11
- module(ModuleClass, eid) {
3
+ module(ModuleClass, ...args) {
4
+ const { config, eid } = resolveModuleArgs(args);
12
5
  const ComponentClass = ModuleClass;
13
6
  const isNew = !this._classRegistry.has(ComponentClass);
14
7
  const mod = this._component(ModuleClass, ComponentClass, eid, this._modulePool);
8
+ if (!isNew && config !== undefined) {
9
+ throw new Error(`Module ${ModuleClass.name} is already registered; configuration is only accepted on first registration`);
10
+ }
15
11
  if (isNew) {
16
- mod.init();
12
+ mod.init(config);
17
13
  }
18
14
  return mod;
19
15
  }
20
16
  }
17
+ function resolveModuleArgs(args) {
18
+ const first = args[0];
19
+ if (typeof first === "number") {
20
+ return { config: undefined, eid: first };
21
+ }
22
+ return { config: first, eid: args[1] };
23
+ }
21
24
  //# sourceMappingURL=world.modules.js.map
@@ -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,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAEvF,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,GAAY;QAC1F,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
+ {"version":3,"file":"world.modules.js","sourceRoot":"","sources":["../../src/world/world.modules.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD,MAAM,OAAO,OAAQ,SAAQ,UAAU;IAC9B,MAAM,CAEX,WAA2B,EAC3B,GAAG,IAAmB;QAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,IAAiD,CAAC,CAAC;QAC7F,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,CAAC,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,CAAC,IAAI,8EAA8E,CACzG,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,MAAyB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,SAAS,iBAAiB,CAAC,IAA+C;IAIxE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC"}
@@ -1,21 +1,18 @@
1
- import { IPhase } from "../phase.js";
1
+ import { type QuerySpec } from "../dsl.js";
2
+ import { Query } from "../query/index.js";
2
3
  import { System } from "../system.js";
3
4
  import type { WorldOptions } from "./world.base.js";
4
5
  import { Modules } from "./world.modules.js";
5
6
  export declare class Pipeline extends Modules {
6
7
  constructor(options?: WorldOptions);
7
- /** Add a named phase to the update pipeline. */
8
- addPhase(name: string): IPhase;
9
8
  /** Open a new frame and evaluate every registered tick source once. */
10
9
  beginFrame(delta: number): void;
11
10
  /** Close the current frame. */
12
11
  endFrame(): void;
13
- /** Run every phase in the pipeline in registration order. */
12
+ /** Run every system in the pipeline query order. */
14
13
  progress(now: number, delta: number): void;
15
- /** Execute every system in `phase` within the current frame. */
16
- runPhase(phase: IPhase, now: number, delta: number): void;
17
- /** Freeze component registration and prepare the world for running. */
18
- start(): void;
14
+ /** Define the query whose ordered results become this world's system pipeline. */
15
+ setPipeline<const S extends QuerySpec>(spec: S): Query<[typeof System]>;
19
16
  /** Create and return a new {@link System}, ready for fluent configuration. */
20
17
  system(name: string): System;
21
18
  }
@@ -1,26 +1,17 @@
1
- import { Phase } from "../phase.js";
2
1
  import { System } from "../system.js";
3
2
  import { ALWAYS_TICK_SOURCE } from "../timer.js";
4
3
  import { Modules } from "./world.modules.js";
5
4
  export class Pipeline extends Modules {
6
5
  constructor(options = {}) {
7
6
  super(options);
8
- /** @internal `true` once {@link start} has prepared the phase pipeline. */
9
- this._started = false;
10
- /** @internal Phase name -> phase. Insertion-ordered, matches pipeline execution order. */
11
- this._pipeline = new Map();
7
+ /** @internal Flat system execution pipeline, rebuilt from `_pipelineQuery`. */
8
+ this._pipeline = [];
12
9
  /** @internal World-owned tick sources evaluated once per frame. */
13
10
  this._tickSources = new Set();
14
11
  /** @internal Monotonic frame id used to memoize tick-source evaluation. */
15
12
  this._frameCounter = 0;
16
13
  this._tickSources.add(ALWAYS_TICK_SOURCE);
17
14
  }
18
- /** Add a named phase to the update pipeline. */
19
- addPhase(name) {
20
- const phase = new Phase(name, this);
21
- this._pipeline.set(name, phase);
22
- return phase;
23
- }
24
15
  /** Open a new frame and evaluate every registered tick source once. */
25
16
  beginFrame(delta) {
26
17
  if (this._frameInProgress) {
@@ -30,6 +21,7 @@ export class Pipeline extends Modules {
30
21
  this._frameCounter++;
31
22
  this._advanceIdPoolFrame();
32
23
  this.flush();
24
+ this._refreshPipelineIfChanged();
33
25
  this._tickSources.forEach((t) => t._evalTick(delta, this._frameCounter));
34
26
  }
35
27
  /** Close the current frame. */
@@ -39,68 +31,47 @@ export class Pipeline extends Modules {
39
31
  }
40
32
  this._frameInProgress = false;
41
33
  }
42
- /** Run every phase in the pipeline in registration order. */
34
+ /** Run every system in the pipeline query order. */
43
35
  progress(now, delta) {
44
36
  this.beginFrame(delta);
45
37
  try {
46
- this._pipeline.forEach((phase) => {
47
- this.runPhase(phase, now, delta);
48
- });
38
+ for (const system of this._pipeline) {
39
+ system._run(now, delta);
40
+ this.flush();
41
+ }
49
42
  }
50
43
  finally {
51
44
  this.endFrame();
52
45
  }
53
46
  }
54
- /** Execute every system in `phase` within the current frame. */
55
- runPhase(phase, now, delta) {
56
- if (!this._frameInProgress) {
57
- throw new Error("runPhase() called outside a frame — call beginFrame() first");
58
- }
59
- this.flush();
60
- phase.systems.forEach((s) => {
61
- s._run(now, delta);
62
- });
63
- }
64
- /** Freeze component registration and prepare the world for running. */
65
- start() {
66
- this._buildPendingQueries();
67
- this._componentRegistrationDisabled = true;
68
- this._started = true;
69
- this._reindexSystems();
47
+ /** Define the query whose ordered results become this world's system pipeline. */
48
+ setPipeline(spec) {
49
+ this._pipelineQuery?.destroy();
50
+ const query = this.query("vecs::Pipeline").with(spec).with(System).track();
51
+ this._pipelineQuery = query;
52
+ this._pipeline.length = 0;
53
+ return this._pipelineQuery;
70
54
  }
71
55
  /** Create and return a new {@link System}, ready for fluent configuration. */
72
56
  system(name) {
73
- if (this._started) {
74
- throw new Error("systems cannot be added after world start");
75
- }
76
57
  return new System(name, this);
77
58
  }
78
59
  /** @internal Register a tick source with this world. */
79
60
  _registerTickSource(t) {
80
61
  this._tickSources.add(t);
81
62
  }
82
- /** @internal Distribute every registered system into its phase's `systems` list. */
83
- _reindexSystems() {
84
- let _defaultPhase = this._pipeline.get("update");
85
- if (!_defaultPhase) {
86
- _defaultPhase = new Phase("update", this);
87
- this._pipeline.set(_defaultPhase.name, _defaultPhase);
63
+ /** @internal Rebuild the flat pipeline when its query changed. */
64
+ _refreshPipelineIfChanged() {
65
+ if (!this._pipelineQuery || !this._pipelineQuery.changed) {
66
+ return;
88
67
  }
89
- const defaultPhase = _defaultPhase;
90
- this._pipeline.forEach((phase) => {
91
- phase.systems.length = 0;
92
- });
93
- this._queries.forEach((q) => {
94
- if (!(q instanceof System)) {
95
- return;
96
- }
97
- let phase = q._phase;
98
- if (typeof phase === "string") {
99
- phase = this._pipeline.get(phase);
68
+ const systems = [];
69
+ this._pipelineQuery.forEach([System], (entity, [system]) => {
70
+ if (system !== undefined && system.entity === entity) {
71
+ systems.push(system);
100
72
  }
101
- phase = phase || defaultPhase;
102
- phase.systems.push(q);
103
73
  });
74
+ this._pipeline = systems;
104
75
  }
105
76
  }
106
77
  //# sourceMappingURL=world.pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"world.pipeline.js","sourceRoot":"","sources":["../../src/world/world.pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"world.pipeline.js","sourceRoot":"","sources":["../../src/world/world.pipeline.ts"],"names":[],"mappings":"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"}
@@ -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): number;
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":"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"}
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 ComponentType } from "../component.js";
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 `q`. */
12
- filter<Q extends QueryDSL>(this: World, q: Q): Filter<ExtractRequired<Q>>;
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. */
@@ -1,3 +1,4 @@
1
+ import { isQueryConfig } from "../dsl.js";
1
2
  import { Filter } from "../filter.js";
2
3
  import { Query } from "../query/index.js";
3
4
  import { getCachedTerm, getTerm, notifyComponentAdded, notifyComponentChanged, notifyComponentRemoved, notifyEntityCreated, notifyEntityDestroyed, } from "../terms/build.js";
@@ -48,8 +49,10 @@ export class Queries extends Storage {
48
49
  _removeUnbuiltQuery(q) {
49
50
  this._unbuiltQueries.delete(q);
50
51
  }
51
- filter(q, _guaranteed) {
52
- return new Filter(this, q);
52
+ /** Create a non-reactive {@link Filter} that matches entities satisfying `spec`. */
53
+ filter(spec) {
54
+ const dsl = isQueryConfig(spec) ? spec.with : spec;
55
+ return new Filter(this, dsl);
53
56
  }
54
57
  /** Create and return a standalone {@link Query}, ready for fluent configuration. */
55
58
  query(name) {
@@ -64,16 +67,16 @@ export class Queries extends Storage {
64
67
  return getCachedTerm(this, q);
65
68
  }
66
69
  /** @internal Drive the component leaf for a newly attached component. */
67
- _notifyComponentAdded(eid, entity) {
68
- notifyComponentAdded(this, eid, entity);
70
+ _notifyComponentAdded(ceid, entity) {
71
+ notifyComponentAdded(this, ceid, entity);
69
72
  }
70
73
  /** @internal Drive predicate/target refresh for changed component data. */
71
- _notifyComponentChanged(eid, entity) {
72
- notifyComponentChanged(this, eid, entity);
74
+ _notifyComponentChanged(ceid, entity) {
75
+ notifyComponentChanged(this, ceid, entity);
73
76
  }
74
77
  /** @internal Drive the component leaf for a detached component. */
75
- _notifyComponentRemoved(eid, entity) {
76
- notifyComponentRemoved(this, eid, entity);
78
+ _notifyComponentRemoved(ceid, entity) {
79
+ notifyComponentRemoved(this, ceid, entity);
77
80
  }
78
81
  /** @internal Drive the world leaf for a created entity. */
79
82
  _notifyEntityCreated(entity) {
@@ -1 +1 @@
1
- {"version":3,"file":"world.queries.js","sourceRoot":"","sources":["../../src/world/world.queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"world.queries.js","sourceRoot":"","sources":["../../src/world/world.queries.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vworlds/vecs",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -24,7 +24,7 @@
24
24
  "test:watch": "vitest",
25
25
  "lint": "eslint \"src/**/*.ts\" \"tests/**/*.ts\" --no-error-on-unmatched-pattern",
26
26
  "typecheck": "tsc --noEmit",
27
- "format:check": "prettier --check \"**/*.{ts,md}\""
27
+ "format:check": "prettier --check \"**/*.{ts,md}\" --ignore-path ../../.prettierignore"
28
28
  },
29
29
  "dependencies": {
30
30
  "eventemitter3": "^4.0.7"