iris-ecs 0.0.9 → 0.0.10

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 (48) hide show
  1. package/README.md +250 -61
  2. package/dist/archetype.d.ts +18 -1
  3. package/dist/archetype.d.ts.map +1 -1
  4. package/dist/archetype.js +60 -15
  5. package/dist/archetype.js.map +1 -1
  6. package/dist/component.d.ts +106 -7
  7. package/dist/component.d.ts.map +1 -1
  8. package/dist/component.js +86 -4
  9. package/dist/component.js.map +1 -1
  10. package/dist/directed-acyclic-graph.d.ts +123 -0
  11. package/dist/directed-acyclic-graph.d.ts.map +1 -0
  12. package/dist/directed-acyclic-graph.js +235 -0
  13. package/dist/directed-acyclic-graph.js.map +1 -0
  14. package/dist/entity.d.ts +18 -0
  15. package/dist/entity.d.ts.map +1 -1
  16. package/dist/entity.js +5 -15
  17. package/dist/entity.js.map +1 -1
  18. package/dist/error.d.ts +2 -2
  19. package/dist/error.js +2 -2
  20. package/dist/index.d.ts +8 -7
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -4
  23. package/dist/index.js.map +1 -1
  24. package/dist/name.d.ts +2 -2
  25. package/dist/name.d.ts.map +1 -1
  26. package/dist/name.js +3 -3
  27. package/dist/name.js.map +1 -1
  28. package/dist/query.d.ts +65 -5
  29. package/dist/query.d.ts.map +1 -1
  30. package/dist/query.js +34 -3
  31. package/dist/query.js.map +1 -1
  32. package/dist/resource.d.ts +62 -4
  33. package/dist/resource.d.ts.map +1 -1
  34. package/dist/resource.js +10 -1
  35. package/dist/resource.js.map +1 -1
  36. package/dist/scheduler.d.ts +119 -11
  37. package/dist/scheduler.d.ts.map +1 -1
  38. package/dist/scheduler.js +168 -68
  39. package/dist/scheduler.js.map +1 -1
  40. package/dist/schema.d.ts +97 -40
  41. package/dist/schema.d.ts.map +1 -1
  42. package/dist/schema.js +31 -69
  43. package/dist/schema.js.map +1 -1
  44. package/dist/world.d.ts +10 -1
  45. package/dist/world.d.ts.map +1 -1
  46. package/dist/world.js +3 -0
  47. package/dist/world.js.map +1 -1
  48. package/package.json +1 -1
package/dist/query.d.ts CHANGED
@@ -1,16 +1,21 @@
1
- import type { EntityId, EntityWith } from "./encoding.js";
1
+ import type { FieldColumnsOf } from "./archetype.js";
2
+ import type { Component, EntityId, EntityWith, Pair, Relation } from "./encoding.js";
2
3
  import type { FilterMeta } from "./filters.js";
3
4
  import type { World } from "./world.js";
4
5
  /**
5
6
  * Phantom brand for carrying guaranteed-present component types on QueryMeta.
6
7
  */
7
8
  declare const QUERY_COMPONENTS_BRAND: unique symbol;
9
+ /**
10
+ * Phantom brand for carrying original query terms tuple on QueryMeta (covariant).
11
+ */
12
+ declare const QUERY_TERMS_BRAND: unique symbol;
8
13
  /**
9
14
  * Query metadata for registry caching.
10
15
  *
11
16
  * Stores required and excluded components with reference to underlying filter.
12
17
  */
13
- export type QueryMeta<C extends EntityId = EntityId> = {
18
+ export type QueryMeta<C extends EntityId = EntityId, T extends unknown[] = (EntityId | QueryModifier)[]> = {
14
19
  /**
15
20
  * Required components.
16
21
  */
@@ -39,6 +44,10 @@ export type QueryMeta<C extends EntityId = EntityId> = {
39
44
  * Phantom field carrying guaranteed-present component types via contravariance.
40
45
  */
41
46
  readonly [QUERY_COMPONENTS_BRAND]: (c: C) => void;
47
+ /**
48
+ * Phantom field carrying original query terms tuple (covariant).
49
+ */
50
+ readonly [QUERY_TERMS_BRAND]?: T;
42
51
  };
43
52
  export type ModifierType = "not" | "added" | "changed";
44
53
  export type NotModifier<C extends EntityId = EntityId> = {
@@ -94,6 +103,13 @@ export declare function changed<C extends EntityId>(componentId: C): ChangedModi
94
103
  * Extract union of guaranteed-present component IDs from query terms tuple.
95
104
  */
96
105
  export type ExtractIncluded<T extends unknown[]> = T extends [infer Head, ...infer Tail] ? Head extends NotModifier ? ExtractIncluded<Tail> : Head extends AddedModifier<infer C> ? C | ExtractIncluded<Tail> : Head extends ChangedModifier<infer C> ? C | ExtractIncluded<Tail> : Head extends EntityId ? Head | ExtractIncluded<Tail> : ExtractIncluded<Tail> : never;
106
+ /**
107
+ * Map a query terms tuple to a tuple of field column types.
108
+ *
109
+ * Data-bearing terms (Components, Pairs with schema) produce a `FieldColumnsOf` entry.
110
+ * Non-data terms (Tags, data-less Pairs, NotModifiers) are skipped.
111
+ */
112
+ export type ColumnsTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail] ? Head extends NotModifier ? ColumnsTuple<Tail> : Head extends Component<infer S> ? [FieldColumnsOf<S>, ...ColumnsTuple<Tail>] : Head extends Pair<infer R> ? R extends Relation<infer S> ? keyof S extends never ? ColumnsTuple<Tail> : [FieldColumnsOf<S>, ...ColumnsTuple<Tail>] : ColumnsTuple<Tail> : ColumnsTuple<Tail> : [];
97
113
  /**
98
114
  * Hash query terms to unique string ID for cache lookup.
99
115
  *
@@ -118,9 +134,9 @@ export declare function hashQuery(include: EntityId[], exclude: EntityId[], adde
118
134
  * @throws {InvalidArgument} If no included components (query must match something)
119
135
  *
120
136
  * @example
121
- * const query = cacheQuery(world, Position, Velocity, not(Dead));
137
+ * const query = cacheQuery(world, [Position, Velocity, not(Dead)]);
122
138
  */
123
- export declare function ensureQuery<T extends (EntityId | QueryModifier)[]>(world: World, ...terms: [...T]): QueryMeta<ExtractIncluded<T>>;
139
+ export declare function ensureQuery<T extends (EntityId | QueryModifier)[]>(world: World, terms: [...T]): QueryMeta<ExtractIncluded<T>, T>;
124
140
  /**
125
141
  * Iterate entities matching components and modifiers via callback.
126
142
  *
@@ -139,7 +155,7 @@ export declare function ensureQuery<T extends (EntityId | QueryModifier)[]>(worl
139
155
  * });
140
156
  *
141
157
  * // With pre-built query
142
- * const q = cacheQuery(world, Position, Velocity);
158
+ * const q = cacheQuery(world, [Position, Velocity]);
143
159
  * queryEntities(world, q, (entity) => { ... });
144
160
  *
145
161
  * // Early exit
@@ -187,5 +203,49 @@ export declare function queryFirstEntity<C extends EntityId>(world: World, query
187
203
  */
188
204
  export declare function collectEntities<T extends (EntityId | QueryModifier)[]>(world: World, terms: [...T]): EntityWith<ExtractIncluded<T>>[];
189
205
  export declare function collectEntities<C extends EntityId>(world: World, query: QueryMeta<C>): EntityWith<C>[];
206
+ /**
207
+ * Iterate matching archetypes with direct column access.
208
+ *
209
+ * Low-level query API that exposes raw storage arrays for high-performance iteration.
210
+ * The callback fires once per matching archetype with the archetype's live entities
211
+ * array and column parameters for each data-bearing term.
212
+ *
213
+ * Only `not()` modifiers are supported. `added()` and `changed()` are rejected —
214
+ * use `queryEntities` for change detection.
215
+ *
216
+ * The `entities` array is the archetype's live backing store. If mutating
217
+ * (destroying entities, adding/removing components) during iteration,
218
+ * iterate backward to avoid skipping entities due to swap-and-pop.
219
+ *
220
+ * @param world - World instance
221
+ * @param termsOrQuery - Array of component IDs and not() modifiers, or pre-built QueryMeta
222
+ * @param callback - Called for each matching archetype. Return `false` to stop iteration
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * // Direct column access for high-performance iteration
227
+ * queryColumns(world, [Position, Velocity, not(Dead)], (entities, [pos, vel]) => {
228
+ * for (let i = 0; i < entities.length; i++) {
229
+ * pos.x[i] += vel.x[i]!;
230
+ * pos.y[i] += vel.y[i]!;
231
+ * }
232
+ * });
233
+ *
234
+ * // Pre-cached query
235
+ * const q = cacheQuery(world, [Position, Velocity, not(Dead)]);
236
+ * queryColumns(world, q, (entities, [pos, vel]) => { ... });
237
+ *
238
+ * // Mutation-safe backward iteration
239
+ * queryColumns(world, [Position, Health], (entities, [pos, health]) => {
240
+ * for (let i = entities.length - 1; i >= 0; i--) {
241
+ * if (health.hp[i]! <= 0) {
242
+ * destroyEntity(world, entities[i]!);
243
+ * }
244
+ * }
245
+ * });
246
+ * ```
247
+ */
248
+ export declare function queryColumns<T extends (EntityId | NotModifier)[]>(world: World, terms: [...T], callback: (entities: EntityId[], columns: ColumnsTuple<T>) => unknown): void;
249
+ export declare function queryColumns<C extends EntityId, T extends unknown[]>(world: World, query: QueryMeta<C, T>, callback: (entities: EntityId[], columns: ColumnsTuple<T>) => unknown): void;
190
250
  export {};
191
251
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
package/dist/query.js CHANGED
@@ -82,9 +82,9 @@ export function hashQuery(include, exclude, added, changed) {
82
82
  * @throws {InvalidArgument} If no included components (query must match something)
83
83
  *
84
84
  * @example
85
- * const query = cacheQuery(world, Position, Velocity, not(Dead));
85
+ * const query = cacheQuery(world, [Position, Velocity, not(Dead)]);
86
86
  */
87
- export function ensureQuery(world, ...terms) {
87
+ export function ensureQuery(world, terms) {
88
88
  const include = [];
89
89
  const exclude = [];
90
90
  const added = [];
@@ -212,7 +212,7 @@ function resolveQuery(world, termsOrQuery) {
212
212
  if (!Array.isArray(termsOrQuery)) {
213
213
  return termsOrQuery;
214
214
  }
215
- return ensureQuery(world, ...termsOrQuery);
215
+ return ensureQuery(world, termsOrQuery);
216
216
  }
217
217
  export function queryEntities(world, termsOrQuery,
218
218
  // biome-ignore lint/suspicious/noExplicitAny: implementation overload must be wider than public overloads
@@ -234,4 +234,35 @@ export function collectEntities(world, termsOrQuery) {
234
234
  });
235
235
  return result;
236
236
  }
237
+ export function queryColumns(world, termsOrQuery,
238
+ // biome-ignore lint/suspicious/noExplicitAny: implementation overload must be wider than public overloads
239
+ callback) {
240
+ const queryMeta = resolveQuery(world, termsOrQuery);
241
+ assert(queryMeta.added.length === 0 && queryMeta.changed.length === 0, InvalidArgument, {
242
+ expected: "queryColumns does not support added() or changed() modifiers",
243
+ });
244
+ const archetypes = queryMeta.filter.archetypes;
245
+ const include = queryMeta.include;
246
+ // Single allocation reused across all archetype iterations
247
+ const columns = [];
248
+ for (let a = 0; a < archetypes.length; a++) {
249
+ const archetype = archetypes[a];
250
+ if (archetype.entities.length === 0) {
251
+ continue;
252
+ }
253
+ // Resolve columns for each included term. Tags and data-less pairs have
254
+ // no entry in archetype.columns, so they are naturally skipped, and only
255
+ // data-bearing components and pairs produce callback parameters
256
+ columns.length = 0;
257
+ for (let t = 0; t < include.length; t++) {
258
+ const cols = archetype.columns.get(include[t]);
259
+ if (cols) {
260
+ columns.push(cols);
261
+ }
262
+ }
263
+ if (callback(archetype.entities, columns) === false) {
264
+ return;
265
+ }
266
+ }
267
+ }
237
268
  //# sourceMappingURL=query.js.map
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Component, EntityId, EntityWith } from "./encoding.js";
2
- import type { InferSchema, InferSchemaRecord, SchemaRecord } from "./schema.js";
2
+ import type { InferSchema, InferSchemaRecord, ScalarFields, SchemaRecord, TypedArrayInstance, VectorFields } from "./schema.js";
3
3
  import type { World } from "./world.js";
4
4
  /**
5
5
  * Adds a global resource (singleton) to the world using the component-on-self pattern.
@@ -64,8 +64,8 @@ export declare function hasResource(world: World, component: EntityId): boolean;
64
64
  * const current = getResourceValue(world, Time, "current"); // number | undefined
65
65
  * ```
66
66
  */
67
- export declare function getResourceValue<S extends SchemaRecord, N extends string, K extends keyof S>(world: World, component: Component<S, N> & EntityWith<Component<S, N>>, key: K): InferSchema<S[K]>;
68
- export declare function getResourceValue<S extends SchemaRecord, K extends keyof S>(world: World, component: Component<S>, key: K): InferSchema<S[K]> | undefined;
67
+ export declare function getResourceValue<S extends SchemaRecord, N extends string, K extends ScalarFields<S>>(world: World, component: Component<S, N> & EntityWith<Component<S, N>>, key: K): InferSchema<S[K]>;
68
+ export declare function getResourceValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, component: Component<S>, key: K): InferSchema<S[K]> | undefined;
69
69
  /**
70
70
  * Sets the value of a specific field on a global resource.
71
71
  *
@@ -80,5 +80,63 @@ export declare function getResourceValue<S extends SchemaRecord, K extends keyof
80
80
  * setResourceValue(world, Time, "delta", 0.033);
81
81
  * ```
82
82
  */
83
- export declare function setResourceValue<S extends SchemaRecord, K extends keyof S>(world: World, component: Component<S>, key: K, value: InferSchema<S[K]>): void;
83
+ export declare function setResourceValue<S extends SchemaRecord, K extends ScalarFields<S>>(world: World, component: Component<S>, key: K, value: InferSchema<S[K]>): void;
84
+ /**
85
+ * Gets the value of a vector field on a global resource as a tuple copy.
86
+ *
87
+ * Returns a new array containing the vector elements. Mutations to the
88
+ * returned array do not affect the stored data.
89
+ *
90
+ * @param world - World instance
91
+ * @param component - Component definition (narrowed via hasResource for non-null access)
92
+ * @param key - Vector field name
93
+ * @returns Tuple copy of vector value, or undefined if not present
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const Gravity = defineComponent("Gravity", { value: Type.f32(3) });
98
+ * addResource(world, Gravity, { value: [0, -9.81, 0] });
99
+ * const g = getResourceVectorValue(world, Gravity, "value"); // [number, number, number]
100
+ * ```
101
+ */
102
+ export declare function getResourceVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, component: Component<S, N> & EntityWith<Component<S, N>>, key: K): InferSchema<S[K]>;
103
+ export declare function getResourceVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, component: Component<S>, key: K): InferSchema<S[K]> | undefined;
104
+ /**
105
+ * Sets the value of a vector field on a global resource from a tuple.
106
+ *
107
+ * Copies the tuple elements into the interleaved column. Updates change
108
+ * detection tick and fires componentChanged observer.
109
+ *
110
+ * @param world - World instance
111
+ * @param component - Component definition
112
+ * @param key - Vector field name
113
+ * @param value - Tuple of values to set
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * setResourceVectorValue(world, Gravity, "value", [0, -20, 0]);
118
+ * ```
119
+ */
120
+ export declare function setResourceVectorValue<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, component: Component<S, N> & EntityWith<Component<S, N>>, key: K, value: InferSchema<S[K]>): void;
121
+ export declare function setResourceVectorValue<S extends SchemaRecord, K extends VectorFields<S>>(world: World, component: Component<S>, key: K, value: InferSchema<S[K]>): void;
122
+ /**
123
+ * Gets a zero-copy typed array view into a vector field on a global resource.
124
+ *
125
+ * Returns a `subarray` view that shares the underlying buffer. Mutations
126
+ * to the view directly modify the stored data.
127
+ *
128
+ * @param world - World instance
129
+ * @param component - Component definition (narrowed via hasResource for non-null access)
130
+ * @param key - Vector field name
131
+ * @returns Typed array view into the vector, or undefined if not present
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const Gravity = defineComponent("Gravity", { value: Type.f32(3) });
136
+ * const view = getResourceVectorView(world, Gravity, "value"); // Float32Array
137
+ * view[1] = -20; // direct mutation, no copy
138
+ * ```
139
+ */
140
+ export declare function getResourceVectorView<S extends SchemaRecord, N extends string, K extends VectorFields<S>>(world: World, component: Component<S, N> & EntityWith<Component<S, N>>, key: K): TypedArrayInstance;
141
+ export declare function getResourceVectorView<S extends SchemaRecord, K extends VectorFields<S>>(world: World, component: Component<S>, key: K): TypedArrayInstance | undefined;
84
142
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GACzB,IAAI,CAEN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,EAClE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC;AAMxE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAC1F,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACxD,GAAG,EAAE,CAAC,GACL,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,CAAC,EACxE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,GAAG,EAAE,CAAC,GACL,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAUjC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,MAAM,CAAC,EACxE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACvB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACvB,IAAI,CAEN"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
package/dist/resource.js CHANGED
@@ -1,4 +1,4 @@
1
- import { addComponent, getComponentValue, hasComponent, removeComponent, setComponentValue } from "./component.js";
1
+ import { addComponent, getComponentValue, getComponentVectorValue, getComponentVectorView, hasComponent, removeComponent, setComponentValue, setComponentVectorValue, } from "./component.js";
2
2
  // ============================================================================
3
3
  // Resource Operations
4
4
  // ============================================================================
@@ -59,4 +59,13 @@ export function getResourceValue(world, component, key) {
59
59
  export function setResourceValue(world, component, key, value) {
60
60
  setComponentValue(world, component, component, key, value);
61
61
  }
62
+ export function getResourceVectorValue(world, component, key) {
63
+ return getComponentVectorValue(world, component, component, key);
64
+ }
65
+ export function setResourceVectorValue(world, component, key, value) {
66
+ setComponentVectorValue(world, component, component, key, value);
67
+ }
68
+ export function getResourceVectorView(world, component, key) {
69
+ return getComponentVectorView(world, component, component, key);
70
+ }
62
71
  //# sourceMappingURL=resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKnH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CACzB,KAAY,EACZ,SAAuB,EACvB,IAA0B;IAE1B,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,SAAmB;IAC9D,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAwBD,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,SAAmB;IAC3D,OAAO,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AA8BD,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,SAAuB,EACvB,GAAM;IAEN,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,SAAuB,EACvB,GAAM,EACN,KAAwB;IAExB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAYxB,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CACzB,KAAY,EACZ,SAAuB,EACvB,IAA0B;IAE1B,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,SAAmB;IAC9D,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAwBD,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,SAAmB;IAC3D,OAAO,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AA8BD,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,SAAuB,EACvB,GAAM;IAEN,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,SAAuB,EACvB,GAAM,EACN,KAAwB;IAExB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAoCD,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,SAAuB,EACvB,GAAM;IAEN,OAAO,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAgCD,MAAM,UAAU,sBAAsB,CACpC,KAAY,EACZ,SAAuB,EACvB,GAAM,EACN,KAAwB;IAExB,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAgCD,MAAM,UAAU,qBAAqB,CACnC,KAAY,EACZ,SAAuB,EACvB,GAAM;IAEN,OAAO,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC"}
@@ -64,6 +64,60 @@ export declare const PostUpdate: ScheduleLabel;
64
64
  * Last schedule in the main loop. Runs every frame after PostUpdate.
65
65
  */
66
66
  export declare const Last: ScheduleLabel;
67
+ /**
68
+ * System set label brand for nominal typing.
69
+ */
70
+ declare const SYSTEM_SET_LABEL_BRAND: unique symbol;
71
+ /**
72
+ * System set label (branded string).
73
+ *
74
+ * Identifies a system set for group-level ordering.
75
+ */
76
+ export type SystemSetLabel = string & {
77
+ [SYSTEM_SET_LABEL_BRAND]: true;
78
+ };
79
+ /**
80
+ * Reference to a system or system set in ordering constraints.
81
+ */
82
+ export type SystemReference = SystemFactory | SystemSetLabel | string;
83
+ /**
84
+ * Options for system set registration.
85
+ */
86
+ export type SystemSetOptions = {
87
+ /**
88
+ * Schedule this set belongs to. Defaults to Update.
89
+ */
90
+ schedule?: ScheduleLabel;
91
+ /**
92
+ * All systems in this set run before these systems or sets.
93
+ */
94
+ before?: SystemReference | SystemReference[];
95
+ /**
96
+ * All systems in this set run after these systems or sets.
97
+ */
98
+ after?: SystemReference | SystemReference[];
99
+ };
100
+ /**
101
+ * System set metadata stored in registry.
102
+ */
103
+ export type SystemSetMeta = {
104
+ /**
105
+ * Schedule this set belongs to.
106
+ */
107
+ schedule: ScheduleLabel;
108
+ /**
109
+ * Systems or sets this set must execute before.
110
+ */
111
+ before: string[];
112
+ /**
113
+ * Systems or sets this set must execute after.
114
+ */
115
+ after: string[];
116
+ /**
117
+ * System names that belong to this set (populated by addSystem calls).
118
+ */
119
+ systems: string[];
120
+ };
67
121
  /**
68
122
  * System function signature.
69
123
  *
@@ -92,26 +146,41 @@ export type SystemFactory = {
92
146
  readonly init: (world: World) => SystemTick;
93
147
  };
94
148
  /**
95
- * Options for system registration.
149
+ * Shared options for system registration.
96
150
  */
97
- export type SystemOptions = {
151
+ type SystemOptionsBase = {
98
152
  /**
99
153
  * Custom name (overrides function.name). Required for anonymous functions.
100
154
  */
101
155
  name?: string;
102
156
  /**
103
- * Schedule this system belongs to. Defaults to Update.
157
+ * Run before these systems or sets (within same schedule).
104
158
  */
105
- schedule?: ScheduleLabel;
159
+ before?: SystemReference | SystemReference[];
106
160
  /**
107
- * Run before these systems (within same schedule).
161
+ * Run after these systems or sets (within same schedule).
108
162
  */
109
- before?: string | string[];
163
+ after?: SystemReference | SystemReference[];
164
+ };
165
+ /**
166
+ * Options for system registration.
167
+ *
168
+ * Exactly one of `schedule` or `set` may be provided. When `set` is given,
169
+ * the system inherits the set's schedule. When neither is given, the system
170
+ * defaults to the Update schedule.
171
+ */
172
+ export type SystemOptions = SystemOptionsBase & ({
173
+ /** Schedule this system belongs to. Defaults to Update. */
174
+ schedule?: ScheduleLabel;
175
+ set?: never;
176
+ } | {
177
+ schedule?: never;
110
178
  /**
111
- * Run after these systems (within same schedule).
179
+ * System set this system belongs to. The set must be registered first
180
+ * via `addSystemSet()`. The set's schedule applies to this system.
112
181
  */
113
- after?: string | string[];
114
- };
182
+ set?: SystemSetLabel;
183
+ });
115
184
  /**
116
185
  * System metadata stored in registry.
117
186
  */
@@ -136,7 +205,46 @@ export type SystemMeta = {
136
205
  * Systems this one must execute after (these run before this system).
137
206
  */
138
207
  after: string[];
208
+ /**
209
+ * System set this system belongs to, if any.
210
+ */
211
+ set?: SystemSetLabel;
139
212
  };
213
+ /**
214
+ * Define a system set label.
215
+ *
216
+ * System sets are named groups for group-level ordering. Define the label
217
+ * first, then register it in a world via `addSystemSet()`.
218
+ *
219
+ * @param name - Set name (must be unique when registered)
220
+ * @returns System set label
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * const PhysicsSystems = defineSystemSet("PhysicsSystems");
225
+ * addSystemSet(world, PhysicsSystems, { before: RenderSystems });
226
+ * ```
227
+ */
228
+ export declare function defineSystemSet(name: string): SystemSetLabel;
229
+ /**
230
+ * Register a system set in the world with optional ordering constraints.
231
+ *
232
+ * Must be called before any `addSystem()` call that references this set
233
+ * via the `set` option.
234
+ *
235
+ * @param world - World instance
236
+ * @param set - System set label from `defineSystemSet()`
237
+ * @param options - Registration options (schedule, before, after)
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * const PhysicsSystems = defineSystemSet("PhysicsSystems");
242
+ * const RenderSystems = defineSystemSet("RenderSystems");
243
+ * addSystemSet(world, PhysicsSystems, { schedule: Update, before: RenderSystems });
244
+ * addSystemSet(world, RenderSystems, { schedule: Update });
245
+ * ```
246
+ */
247
+ export declare function addSystemSet(world: World, set: SystemSetLabel, options?: SystemSetOptions): void;
140
248
  /**
141
249
  * Registers a system in the world for later scheduling.
142
250
  *
@@ -151,7 +259,7 @@ export type SystemMeta = {
151
259
  * @example
152
260
  * ```typescript
153
261
  * addSystem(world, physicsSystem);
154
- * addSystem(world, renderSystem, { schedule: PostUpdate, after: "physicsSystem" });
262
+ * addSystem(world, renderSystem, { schedule: PostUpdate, after: physicsSystem });
155
263
  * addSystem(world, movementFactory); // SystemFactory from defineSystem()
156
264
  * ```
157
265
  */
@@ -175,7 +283,7 @@ export declare function addSystem(world: World, system: SystemRunner | SystemFac
175
283
  * ```typescript
176
284
  * const movementSystem = defineSystem("movementSystem", (world) => {
177
285
  * // Init: runs once at addSystem() time
178
- * const movers = cacheQuery(world, Position, Velocity);
286
+ * const movers = cacheQuery(world, [Position, Velocity]);
179
287
  *
180
288
  * // Tick: runs every frame
181
289
  * return () => {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}