@oasys/oecs 0.3.0 → 0.4.0

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 (204) hide show
  1. package/README.md +196 -267
  2. package/dist/array-CxbPyiHO.cjs +1 -0
  3. package/dist/array-uFR7Q8fU.js +132 -0
  4. package/dist/core/ecs/access_check.d.ts +77 -0
  5. package/dist/core/ecs/access_check.d.ts.map +1 -0
  6. package/dist/core/ecs/archetype.d.ts +474 -0
  7. package/dist/core/ecs/archetype.d.ts.map +1 -0
  8. package/dist/core/ecs/builtin_relations.d.ts +43 -0
  9. package/dist/core/ecs/builtin_relations.d.ts.map +1 -0
  10. package/dist/core/ecs/command_log.d.ts +113 -0
  11. package/dist/core/ecs/command_log.d.ts.map +1 -0
  12. package/dist/core/ecs/component.d.ts +106 -0
  13. package/dist/core/ecs/component.d.ts.map +1 -0
  14. package/dist/core/ecs/compute_backend.d.ts +37 -0
  15. package/dist/core/ecs/compute_backend.d.ts.map +1 -0
  16. package/dist/core/ecs/dispatch_trace.d.ts +93 -0
  17. package/dist/core/ecs/dispatch_trace.d.ts.map +1 -0
  18. package/dist/core/ecs/ecs.d.ts +533 -0
  19. package/dist/core/ecs/ecs.d.ts.map +1 -0
  20. package/dist/core/ecs/ecs_memory.d.ts +179 -0
  21. package/dist/core/ecs/ecs_memory.d.ts.map +1 -0
  22. package/dist/core/ecs/entity.d.ts +28 -0
  23. package/dist/core/ecs/entity.d.ts.map +1 -0
  24. package/dist/core/ecs/event.d.ts +54 -0
  25. package/dist/core/ecs/event.d.ts.map +1 -0
  26. package/dist/core/ecs/frame_trace.d.ts +133 -0
  27. package/dist/core/ecs/frame_trace.d.ts.map +1 -0
  28. package/dist/core/ecs/host_commands.d.ts +252 -0
  29. package/dist/core/ecs/host_commands.d.ts.map +1 -0
  30. package/dist/core/ecs/index.d.ts +41 -0
  31. package/dist/core/ecs/index.d.ts.map +1 -0
  32. package/dist/core/ecs/observer.d.ts +142 -0
  33. package/dist/core/ecs/observer.d.ts.map +1 -0
  34. package/dist/core/ecs/query.d.ts +557 -0
  35. package/dist/core/ecs/query.d.ts.map +1 -0
  36. package/dist/core/ecs/ref.d.ts +31 -0
  37. package/dist/core/ecs/ref.d.ts.map +1 -0
  38. package/dist/core/ecs/relation.d.ts +231 -0
  39. package/dist/core/ecs/relation.d.ts.map +1 -0
  40. package/dist/core/ecs/resource.d.ts +33 -0
  41. package/dist/core/ecs/resource.d.ts.map +1 -0
  42. package/dist/core/ecs/resume.d.ts +85 -0
  43. package/dist/core/ecs/resume.d.ts.map +1 -0
  44. package/dist/core/ecs/run_condition.d.ts +75 -0
  45. package/dist/core/ecs/run_condition.d.ts.map +1 -0
  46. package/dist/core/ecs/schedule.d.ts +133 -0
  47. package/dist/core/ecs/schedule.d.ts.map +1 -0
  48. package/dist/core/ecs/sparse_store.d.ts +107 -0
  49. package/dist/core/ecs/sparse_store.d.ts.map +1 -0
  50. package/dist/core/ecs/store.d.ts +1149 -0
  51. package/dist/core/ecs/store.d.ts.map +1 -0
  52. package/dist/core/ecs/store_layout_listener.d.ts +23 -0
  53. package/dist/core/ecs/store_layout_listener.d.ts.map +1 -0
  54. package/dist/core/ecs/system.d.ts +134 -0
  55. package/dist/core/ecs/system.d.ts.map +1 -0
  56. package/dist/core/ecs/utils/arrays.d.ts +7 -0
  57. package/dist/core/ecs/utils/arrays.d.ts.map +1 -0
  58. package/dist/core/ecs/utils/constants.d.ts +12 -0
  59. package/dist/core/ecs/utils/constants.d.ts.map +1 -0
  60. package/dist/core/ecs/utils/error.d.ts +51 -0
  61. package/dist/core/ecs/utils/error.d.ts.map +1 -0
  62. package/dist/core/reactive/array.d.ts +24 -0
  63. package/dist/core/reactive/array.d.ts.map +1 -0
  64. package/dist/core/reactive/index.cjs +1 -0
  65. package/dist/core/reactive/index.d.ts +10 -0
  66. package/dist/core/reactive/index.d.ts.map +1 -0
  67. package/dist/core/reactive/index.js +17 -0
  68. package/dist/core/reactive/interop.d.ts +19 -0
  69. package/dist/core/reactive/interop.d.ts.map +1 -0
  70. package/dist/core/reactive/kernel.d.ts +71 -0
  71. package/dist/core/reactive/kernel.d.ts.map +1 -0
  72. package/dist/core/reactive/map.d.ts +16 -0
  73. package/dist/core/reactive/map.d.ts.map +1 -0
  74. package/dist/core/reactive/struct.d.ts +10 -0
  75. package/dist/core/reactive/struct.d.ts.map +1 -0
  76. package/dist/core/store/__generated__/abi.d.ts +43 -0
  77. package/dist/core/store/__generated__/abi.d.ts.map +1 -0
  78. package/dist/core/store/action_ring.d.ts +136 -0
  79. package/dist/core/store/action_ring.d.ts.map +1 -0
  80. package/dist/core/store/allocator.d.ts +238 -0
  81. package/dist/core/store/allocator.d.ts.map +1 -0
  82. package/dist/core/store/buffer_backed_column.d.ts +69 -0
  83. package/dist/core/store/buffer_backed_column.d.ts.map +1 -0
  84. package/dist/core/store/column_store.d.ts +265 -0
  85. package/dist/core/store/column_store.d.ts.map +1 -0
  86. package/dist/core/store/command_dispatch.d.ts +52 -0
  87. package/dist/core/store/command_dispatch.d.ts.map +1 -0
  88. package/dist/core/store/command_ring.d.ts +107 -0
  89. package/dist/core/store/command_ring.d.ts.map +1 -0
  90. package/dist/core/store/descriptor.d.ts +80 -0
  91. package/dist/core/store/descriptor.d.ts.map +1 -0
  92. package/dist/core/store/entity_index.d.ts +108 -0
  93. package/dist/core/store/entity_index.d.ts.map +1 -0
  94. package/dist/core/store/event_ring.d.ts +95 -0
  95. package/dist/core/store/event_ring.d.ts.map +1 -0
  96. package/dist/core/store/extend.d.ts +109 -0
  97. package/dist/core/store/extend.d.ts.map +1 -0
  98. package/dist/core/store/grow.d.ts +39 -0
  99. package/dist/core/store/grow.d.ts.map +1 -0
  100. package/dist/core/store/header.d.ts +64 -0
  101. package/dist/core/store/header.d.ts.map +1 -0
  102. package/dist/core/store/index.d.ts +16 -0
  103. package/dist/core/store/index.d.ts.map +1 -0
  104. package/dist/core/store/region_table.d.ts +74 -0
  105. package/dist/core/store/region_table.d.ts.map +1 -0
  106. package/dist/core/store/snapshot.d.ts +43 -0
  107. package/dist/core/store/snapshot.d.ts.map +1 -0
  108. package/dist/core/store/state_hash.d.ts +38 -0
  109. package/dist/core/store/state_hash.d.ts.map +1 -0
  110. package/dist/core/store/store_regions.d.ts +38 -0
  111. package/dist/core/store/store_regions.d.ts.map +1 -0
  112. package/dist/extensions/editor/editor.d.ts +149 -0
  113. package/dist/extensions/editor/editor.d.ts.map +1 -0
  114. package/dist/extensions/editor/field_handle.d.ts +35 -0
  115. package/dist/extensions/editor/field_handle.d.ts.map +1 -0
  116. package/dist/extensions/editor/index.cjs +1 -0
  117. package/dist/extensions/editor/index.d.ts +21 -0
  118. package/dist/extensions/editor/index.d.ts.map +1 -0
  119. package/dist/extensions/editor/index.js +209 -0
  120. package/dist/extensions/reactive/ecs_sync.d.ts +210 -0
  121. package/dist/extensions/reactive/ecs_sync.d.ts.map +1 -0
  122. package/dist/extensions/reactive/index.cjs +1 -0
  123. package/dist/extensions/reactive/index.d.ts +23 -0
  124. package/dist/extensions/reactive/index.d.ts.map +1 -0
  125. package/dist/extensions/reactive/index.js +225 -0
  126. package/dist/extensions/solid/index.cjs +1 -0
  127. package/dist/extensions/solid/index.d.ts +6 -0
  128. package/dist/extensions/solid/index.d.ts.map +1 -0
  129. package/dist/extensions/solid/index.js +32 -0
  130. package/dist/extensions/solid/kernel_solid.d.ts +42 -0
  131. package/dist/extensions/solid/kernel_solid.d.ts.map +1 -0
  132. package/dist/index.cjs +2 -1
  133. package/dist/index.d.ts +16 -12
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +8563 -1233
  136. package/dist/interop-CT-REx0W.cjs +1 -0
  137. package/dist/interop-CcY6ASQc.js +18 -0
  138. package/dist/kernel-DgyrLFjW.js +227 -0
  139. package/dist/kernel-yWV3XnAb.cjs +1 -0
  140. package/dist/log/console_sink.d.ts +4 -0
  141. package/dist/log/console_sink.d.ts.map +1 -0
  142. package/dist/log/index.d.ts +3 -0
  143. package/dist/log/index.d.ts.map +1 -0
  144. package/dist/log/logger.d.ts +27 -0
  145. package/dist/log/logger.d.ts.map +1 -0
  146. package/dist/primitives.cjs +1 -0
  147. package/dist/primitives.d.ts +18 -0
  148. package/dist/primitives.d.ts.map +1 -0
  149. package/dist/primitives.js +44 -0
  150. package/dist/shared-BXSZnxx4.cjs +1 -0
  151. package/dist/shared-C678TAPY.js +99 -0
  152. package/dist/shared.cjs +1 -0
  153. package/dist/shared.d.ts +22 -0
  154. package/dist/shared.d.ts.map +1 -0
  155. package/dist/shared.js +7 -0
  156. package/dist/topological_sort-DlRpSrxu.js +391 -0
  157. package/dist/topological_sort-WAT-VHb-.cjs +1 -0
  158. package/dist/type_primitives/assertions.d.ts +12 -8
  159. package/dist/type_primitives/assertions.d.ts.map +1 -1
  160. package/dist/type_primitives/binary_heap/binary_heap.d.ts +6 -2
  161. package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
  162. package/dist/type_primitives/bitset/bitset.d.ts +16 -4
  163. package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
  164. package/dist/type_primitives/brand.d.ts +6 -1
  165. package/dist/type_primitives/brand.d.ts.map +1 -1
  166. package/dist/type_primitives/error.d.ts +4 -0
  167. package/dist/type_primitives/error.d.ts.map +1 -1
  168. package/dist/type_primitives/index.d.ts +3 -0
  169. package/dist/type_primitives/index.d.ts.map +1 -1
  170. package/dist/type_primitives/sparse_map/sparse_map.d.ts +7 -3
  171. package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
  172. package/dist/type_primitives/sparse_set/sparse_set.d.ts +4 -0
  173. package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
  174. package/dist/type_primitives/topological_sort/topological_sort.d.ts +7 -3
  175. package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
  176. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +53 -16
  177. package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
  178. package/dist/utils/arrays.d.ts +1 -1
  179. package/dist/utils/arrays.d.ts.map +1 -1
  180. package/dist/utils/error.d.ts +2 -20
  181. package/dist/utils/error.d.ts.map +1 -1
  182. package/package.json +36 -9
  183. package/dist/archetype.d.ts +0 -101
  184. package/dist/archetype.d.ts.map +0 -1
  185. package/dist/component.d.ts +0 -45
  186. package/dist/component.d.ts.map +0 -1
  187. package/dist/ecs.d.ts +0 -104
  188. package/dist/ecs.d.ts.map +0 -1
  189. package/dist/entity.d.ts +0 -11
  190. package/dist/entity.d.ts.map +0 -1
  191. package/dist/event.d.ts +0 -30
  192. package/dist/event.d.ts.map +0 -1
  193. package/dist/query.d.ts +0 -90
  194. package/dist/query.d.ts.map +0 -1
  195. package/dist/ref.d.ts +0 -23
  196. package/dist/ref.d.ts.map +0 -1
  197. package/dist/resource.d.ts +0 -23
  198. package/dist/resource.d.ts.map +0 -1
  199. package/dist/schedule.d.ts +0 -45
  200. package/dist/schedule.d.ts.map +0 -1
  201. package/dist/store.d.ts +0 -118
  202. package/dist/store.d.ts.map +0 -1
  203. package/dist/system.d.ts +0 -16
  204. package/dist/system.d.ts.map +0 -1
@@ -14,22 +14,56 @@ export declare const DEFAULT_INITIAL_CAPACITY = 16;
14
14
  export declare const GROWTH_FACTOR = 2;
15
15
  export type TypedArrayTag = "f32" | "f64" | "i8" | "i16" | "i32" | "u8" | "u16" | "u32";
16
16
  export type AnyTypedArray = Float32Array | Float64Array | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array;
17
- export declare class GrowableTypedArray<T extends AnyTypedArray> {
17
+ /**
18
+ * Common surface of a row-addressable column buffer. `GrowableTypedArray<T>`
19
+ * implements it over a heap-allocated TypedArray; SAB-backed columns (see
20
+ * `packages/engine/src/core/sab/sab_backed_column.ts`) implement it over a
21
+ * `SharedArrayBuffer` view at a known offset. Archetype column storage
22
+ * targets this interface so a single code path serves both backings.
23
+ */
24
+ export interface ColumnBacking<T extends AnyTypedArray> {
25
+ readonly length: number;
26
+ readonly buf: T;
27
+ push(value: number): void;
28
+ pop(): number;
29
+ swapRemove(i: number): number;
30
+ clear(): void;
31
+ view(): T;
32
+ ensureCapacity(capacity: number): void;
33
+ bulkAppend(src: T, srcOffset: number, count: number): void;
34
+ bulkAppendZeroes(count: number): void;
35
+ bulkAppendValue(value: number, count: number): void;
36
+ /** Set the logical length directly, declaring that `[0, len)` already holds
37
+ * valid data. The snapshot-mount path (`Archetype.restoreHostRows`, #789)
38
+ * uses this: a restored SAB carries the column bytes, but the column's logical
39
+ * length is host state that must be re-synced with `Archetype.length`. Throws
40
+ * if `len` exceeds capacity. NOT a hot-path method — push/pop track length. */
41
+ setLength(len: number): void;
42
+ }
43
+ /**
44
+ * TypedArray wrapper with amortised O(1) append. Doubles the backing buffer on overflow.
45
+ *
46
+ */
47
+ export declare class GrowableTypedArray<T extends AnyTypedArray> implements ColumnBacking<T> {
18
48
  private readonly _ctor;
19
49
  private _buf;
20
50
  private _len;
21
- constructor(_ctor: new (n: number) => T, initial_capacity?: number);
51
+ constructor(_ctor: new (n: number) => T, initialCapacity?: number);
22
52
  get length(): number;
23
53
  push(value: number): void;
24
54
  pop(): number;
25
55
  get(i: number): number;
26
- set_at(i: number, value: number): void;
56
+ setAt(i: number, value: number): void;
27
57
  /**
28
58
  * Move the last element into slot i, decrement length.
29
59
  * Returns the value that was removed from slot i.
30
60
  */
31
- swap_remove(i: number): number;
61
+ swapRemove(i: number): number;
32
62
  clear(): void;
63
+ /** Set the logical length directly (snapshot-mount reconstruction, #789). The
64
+ * caller guarantees `[0, len)` already holds valid data. Grows the backing if
65
+ * needed so the length is always representable. */
66
+ setLength(len: number): void;
33
67
  /**
34
68
  * Raw backing buffer. Valid data: indices 0..length-1.
35
69
  * This reference is stable until the next push() that triggers a grow —
@@ -43,39 +77,42 @@ export declare class GrowableTypedArray<T extends AnyTypedArray> {
43
77
  view(): T;
44
78
  [Symbol.iterator](): Iterator<number>;
45
79
  /** Ensure the backing buffer can hold at least `capacity` elements without growing. */
46
- ensure_capacity(capacity: number): void;
80
+ ensureCapacity(capacity: number): void;
47
81
  /**
48
- * Append `count` elements from `src` starting at `src_offset`.
82
+ * Append `count` elements from `src` starting at `srcOffset`.
49
83
  * Grows if needed. Equivalent to push() in a loop but uses TypedArray.set().
50
84
  */
51
- bulk_append(src: T, src_offset: number, count: number): void;
85
+ bulkAppend(src: T, srcOffset: number, count: number): void;
52
86
  /** Append `count` zeroes. Grows if needed. */
53
- bulk_append_zeroes(count: number): void;
87
+ bulkAppendZeroes(count: number): void;
88
+ /** Append `count` copies of `value`. Grows if needed. Single-pass
89
+ * analogue of `bulkAppendZeroes` for a non-zero default. */
90
+ bulkAppendValue(value: number, count: number): void;
54
91
  private _grow;
55
92
  }
56
93
  export declare class GrowableFloat32Array extends GrowableTypedArray<Float32Array> {
57
- constructor(initial_capacity?: number);
94
+ constructor(initialCapacity?: number);
58
95
  }
59
96
  export declare class GrowableFloat64Array extends GrowableTypedArray<Float64Array> {
60
- constructor(initial_capacity?: number);
97
+ constructor(initialCapacity?: number);
61
98
  }
62
99
  export declare class GrowableInt8Array extends GrowableTypedArray<Int8Array> {
63
- constructor(initial_capacity?: number);
100
+ constructor(initialCapacity?: number);
64
101
  }
65
102
  export declare class GrowableInt16Array extends GrowableTypedArray<Int16Array> {
66
- constructor(initial_capacity?: number);
103
+ constructor(initialCapacity?: number);
67
104
  }
68
105
  export declare class GrowableInt32Array extends GrowableTypedArray<Int32Array> {
69
- constructor(initial_capacity?: number);
106
+ constructor(initialCapacity?: number);
70
107
  }
71
108
  export declare class GrowableUint8Array extends GrowableTypedArray<Uint8Array> {
72
- constructor(initial_capacity?: number);
109
+ constructor(initialCapacity?: number);
73
110
  }
74
111
  export declare class GrowableUint16Array extends GrowableTypedArray<Uint16Array> {
75
- constructor(initial_capacity?: number);
112
+ constructor(initialCapacity?: number);
76
113
  }
77
114
  export declare class GrowableUint32Array extends GrowableTypedArray<Uint32Array> {
78
- constructor(initial_capacity?: number);
115
+ constructor(initialCapacity?: number);
79
116
  }
80
117
  export declare const TypedArrayFor: {
81
118
  readonly f32: typeof GrowableFloat32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"typed_arrays.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/typed_arrays/typed_arrays.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;KAWK;AAEL,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAExF,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,CAAC;AAEhB,qBAAa,kBAAkB,CAAC,CAAC,SAAS,aAAa;IAKnD,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,IAAI,CAAK;gBAGE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,EAC5C,gBAAgB,SAAK;IAKvB,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,GAAG,IAAI,MAAM;IAIb,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAItB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACI,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAM9B,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACH,IAAW,GAAG,IAAI,CAAC,CAElB;IAED;;;OAGG;IACI,IAAI,IAAI,CAAC;IAIhB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;IAYrC,uFAAuF;IAChF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS9C;;;OAGG;IACI,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnE,8CAA8C;IACvC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9C,OAAO,CAAC,KAAK;CAKd;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;gBAC5D,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;gBAC5D,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,SAAS,CAAC;gBACtD,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;gBACxD,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;gBACxD,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;gBACxD,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;gBAC1D,gBAAgB,SAA2B;CAGxD;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;gBAC1D,gBAAgB,SAA2B;CAGxD;AAED,eAAO,MAAM,aAAa;;;;;;;;;CASyE,CAAC"}
1
+ {"version":3,"file":"typed_arrays.d.ts","sourceRoot":"","sources":["../../../src/type_primitives/typed_arrays/typed_arrays.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * Array utilities — helpers for hash-bucketed maps.
3
3
  ***/
4
4
  /** Push a value into a hash-bucket map, creating the bucket array if absent. */
5
- export declare function bucket_push<T>(map: Map<number, T[]>, key: number, value: T): void;
5
+ export declare function bucketPush<T>(map: Map<number, T[]>, key: number, value: T): void;
6
6
  //# sourceMappingURL=arrays.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../src/utils/arrays.ts"],"names":[],"mappings":"AAAA;;KAEK;AAEL,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAOjF"}
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../src/utils/arrays.ts"],"names":[],"mappings":"AAAA;;KAEK;AAEL,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAOhF"}
@@ -1,24 +1,6 @@
1
1
  export declare abstract class AppError extends Error {
2
- readonly is_operational: boolean;
2
+ readonly isOperational: boolean;
3
3
  readonly context?: Record<string, unknown> | undefined;
4
- constructor(message: string, is_operational: boolean, context?: Record<string, unknown> | undefined);
4
+ constructor(message: string, isOperational: boolean, context?: Record<string, unknown> | undefined);
5
5
  }
6
- export declare enum ECS_ERROR {
7
- EID_MAX_INDEX_OVERFLOW = "EID_MAX_INDEX_OVERFLOW",
8
- EID_MAX_GEN_OVERFLOW = "EID_MAX_GEN_OVERFLOW",
9
- COMPONENT_NOT_REGISTERED = "COMPONENT_NOT_REGISTERED",
10
- ENTITY_NOT_ALIVE = "ENTITY_NOT_ALIVE",
11
- CIRCULAR_SYSTEM_DEPENDENCY = "CIRCULAR_SYSTEM_DEPENDENCY",
12
- DUPLICATE_SYSTEM = "DUPLICATE_SYSTEM",
13
- ARCHETYPE_NOT_FOUND = "ARCHETYPE_NOT_FOUND",
14
- RESOURCE_NOT_REGISTERED = "RESOURCE_NOT_REGISTERED",
15
- RESOURCE_ALREADY_REGISTERED = "RESOURCE_ALREADY_REGISTERED",
16
- EVENT_ALREADY_REGISTERED = "EVENT_ALREADY_REGISTERED",
17
- EVENT_NOT_REGISTERED = "EVENT_NOT_REGISTERED"
18
- }
19
- export declare class ECSError extends AppError {
20
- readonly category: ECS_ERROR;
21
- constructor(category: ECS_ERROR, message?: string, context?: Record<string, unknown>);
22
- }
23
- export declare function is_ecs_error(error: unknown): error is ECSError;
24
6
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA,8BAAsB,QAAS,SAAQ,KAAK;aAGxB,cAAc,EAAE,OAAO;aACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,cAAc,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMpD;AAED,oBAAY,SAAS;IACnB,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,wBAAwB,6BAA6B;IACrD,gBAAgB,qBAAqB;IACrC,0BAA0B,+BAA+B;IACzD,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,2BAA2B,gCAAgC;IAC3D,wBAAwB,6BAA6B;IACrD,oBAAoB,yBAAyB;CAC9C;AAED,qBAAa,QAAS,SAAQ,QAAQ;aAElB,QAAQ,EAAE,SAAS;gBAAnB,QAAQ,EAAE,SAAS,EACnC,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIpC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE9D"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAGA,8BAAsB,QAAS,SAAQ,KAAK;aAGxB,aAAa,EAAE,OAAO;aACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMpD"}
package/package.json CHANGED
@@ -1,18 +1,36 @@
1
1
  {
2
2
  "name": "@oasys/oecs",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Archetype-based Entity Component System",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "import": {
9
- "types": "./dist/index.d.ts",
10
- "default": "./dist/index.js"
11
- },
12
- "require": {
13
- "types": "./dist/index.d.ts",
14
- "default": "./dist/index.cjs"
15
- }
8
+ "import": { "types": "./dist/index.d.ts", "default": "./dist/index.js" },
9
+ "require": { "types": "./dist/index.d.ts", "default": "./dist/index.cjs" }
10
+ },
11
+ "./primitives": {
12
+ "import": { "types": "./dist/primitives.d.ts", "default": "./dist/primitives.js" },
13
+ "require": { "types": "./dist/primitives.d.ts", "default": "./dist/primitives.cjs" }
14
+ },
15
+ "./reactive": {
16
+ "import": { "types": "./dist/core/reactive/index.d.ts", "default": "./dist/core/reactive/index.js" },
17
+ "require": { "types": "./dist/core/reactive/index.d.ts", "default": "./dist/core/reactive/index.cjs" }
18
+ },
19
+ "./reactive-sync": {
20
+ "import": { "types": "./dist/extensions/reactive/index.d.ts", "default": "./dist/extensions/reactive/index.js" },
21
+ "require": { "types": "./dist/extensions/reactive/index.d.ts", "default": "./dist/extensions/reactive/index.cjs" }
22
+ },
23
+ "./editor": {
24
+ "import": { "types": "./dist/extensions/editor/index.d.ts", "default": "./dist/extensions/editor/index.js" },
25
+ "require": { "types": "./dist/extensions/editor/index.d.ts", "default": "./dist/extensions/editor/index.cjs" }
26
+ },
27
+ "./solid": {
28
+ "import": { "types": "./dist/extensions/solid/index.d.ts", "default": "./dist/extensions/solid/index.js" },
29
+ "require": { "types": "./dist/extensions/solid/index.d.ts", "default": "./dist/extensions/solid/index.cjs" }
30
+ },
31
+ "./shared": {
32
+ "import": { "types": "./dist/shared.d.ts", "default": "./dist/shared.js" },
33
+ "require": { "types": "./dist/shared.d.ts", "default": "./dist/shared.cjs" }
16
34
  }
17
35
  },
18
36
  "main": "./dist/index.cjs",
@@ -44,7 +62,16 @@
44
62
  "archetype",
45
63
  "gamedev"
46
64
  ],
65
+ "peerDependencies": {
66
+ "solid-js": "^1.9.3"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "solid-js": {
70
+ "optional": true
71
+ }
72
+ },
47
73
  "devDependencies": {
74
+ "solid-js": "^1.9.3",
48
75
  "@types/node": "^25.0.3",
49
76
  "typescript": "~5.6.2",
50
77
  "vite": "^6.0.3",
@@ -1,101 +0,0 @@
1
- import { Brand, GrowableTypedArray, AnyTypedArray, TypedArrayTag, BitSet } from './type_primitives';
2
- import { ComponentID, ComponentDef, ComponentSchema, TagToTypedArray, ReadonlyColumn, ReadonlyUint32Array } from './component';
3
- import { EntityID } from './entity';
4
- export type ArchetypeID = Brand<number, "archetype_id">;
5
- export declare const as_archetype_id: (value: number) => ArchetypeID;
6
- export interface ArchetypeEdge {
7
- add: ArchetypeID | null;
8
- remove: ArchetypeID | null;
9
- /** Pre-computed column mapping for add direction: this → add target. */
10
- add_map: Int16Array | null;
11
- /** Pre-computed column mapping for remove direction: this → remove target. */
12
- remove_map: Int16Array | null;
13
- }
14
- export interface ArchetypeColumnLayout {
15
- component_id: ComponentID;
16
- field_names: string[];
17
- field_index: Record<string, number>;
18
- field_types: TypedArrayTag[];
19
- }
20
- interface ArchetypeColumnGroup {
21
- layout: ArchetypeColumnLayout;
22
- columns: GrowableTypedArray<AnyTypedArray>[];
23
- }
24
- export declare class Archetype {
25
- readonly id: ArchetypeID;
26
- readonly mask: BitSet;
27
- readonly has_columns: boolean;
28
- private readonly _entity_ids;
29
- length: number;
30
- private readonly edges;
31
- readonly _flat_columns: GrowableTypedArray<AnyTypedArray>[];
32
- readonly _col_offset: number[];
33
- readonly _field_count: number[];
34
- private readonly _field_index;
35
- private readonly _field_names;
36
- readonly column_groups: (ArchetypeColumnGroup | undefined)[];
37
- readonly _column_ids: number[];
38
- readonly _changed_tick: number[];
39
- constructor(id: ArchetypeID, mask: BitSet, layouts?: ArchetypeColumnLayout[], initial_capacity?: number);
40
- get entity_count(): number;
41
- /** Raw entity ID buffer. Valid data at indices 0..entity_count-1. */
42
- get entity_ids(): ReadonlyUint32Array;
43
- get entity_list(): Uint32Array;
44
- has_component(id: ComponentID): boolean;
45
- matches(required: BitSet): boolean;
46
- /** Get a single field's column (read-only). Valid data: indices 0..entity_count-1. */
47
- get_column<S extends ComponentSchema, K extends string & keyof S>(def: ComponentDef<S>, field: K): ReadonlyColumn;
48
- /** Get a single field's column (mutable). Marks the component as changed at the given tick. */
49
- get_column_mut<S extends ComponentSchema, K extends string & keyof S>(def: ComponentDef<S>, field: K, tick: number): TagToTypedArray[S[K]];
50
- write_fields(row: number, component_id: ComponentID, values: Record<string, number>, tick: number): void;
51
- /** Fast positional write: values[i] → field[i] in declaration order. No string lookup. */
52
- write_fields_positional(row: number, component_id: ComponentID, values: ArrayLike<number>, tick: number): void;
53
- read_field(row: number, component_id: ComponentID, field: string): number;
54
- /** Copy all shared component columns from source archetype at src_row into dst_row. */
55
- copy_shared_from(source: Archetype, src_row: number, dst_row: number, tick: number): void;
56
- /**
57
- * Add an entity. Pushes zeroes into all columns and returns the assigned row.
58
- * Store is responsible for tracking entity_index → row.
59
- */
60
- add_entity(entity_id: EntityID): number;
61
- /**
62
- * Remove entity at row via swap-and-pop. Swaps the last entity into the
63
- * vacated row to keep data dense. Returns the entity_index of the swapped
64
- * entity (so Store can update its row), or NO_SWAP if no swap was needed.
65
- */
66
- remove_entity(row: number): number;
67
- /** Tag-optimized add: skip column push entirely (no data to store). */
68
- add_entity_tag(entity_id: EntityID): number;
69
- /** Tag-optimized remove via swap-and-pop: skip column swap/pop entirely. */
70
- remove_entity_tag(row: number): number;
71
- /**
72
- * Move an entity from src archetype into this archetype in a single pass.
73
- * Combines add_entity + copy_shared_from + remove_entity(src).
74
- * Uses a pre-computed transition map for branchless column copy.
75
- * Writes dst_row to _move_result[0], swapped entity index to _move_result[1].
76
- */
77
- move_entity_from(src: Archetype, src_row: number, entity_id: EntityID, transition_map: Int16Array, tick: number): void;
78
- /**
79
- * Move an entity from src into this archetype (tag-only: no columns to copy).
80
- * Writes dst_row to _move_result[0], swapped entity index to _move_result[1].
81
- */
82
- move_entity_from_tag(src: Archetype, src_row: number, entity_id: EntityID): void;
83
- /**
84
- * Bulk-move ALL entities from src into this archetype using TypedArray.set().
85
- * Much faster than per-entity move_entity_from when the entire source is moving.
86
- * After this call, src is empty. Returns the starting dst_row for the batch.
87
- */
88
- bulk_move_all_from(src: Archetype, transition_map: Int16Array, tick: number): number;
89
- get_edge(component_id: ComponentID): ArchetypeEdge | undefined;
90
- set_edge(component_id: ComponentID, edge: ArchetypeEdge): void;
91
- }
92
- /** Reusable result buffer for move_entity_from/move_entity_from_tag. [dst_row, swapped_index] */
93
- export declare const _move_result: [number, number];
94
- /**
95
- * Build a transition map from src archetype to dst archetype.
96
- * For each column in dst, stores the index of the corresponding column in src,
97
- * or -1 if the column is new (no source).
98
- */
99
- export declare function build_transition_map(src: Archetype, dst: Archetype): Int16Array;
100
- export {};
101
- //# sourceMappingURL=archetype.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetype.d.ts","sourceRoot":"","sources":["../src/archetype.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { Brand, TypedArrayTag } from './type_primitives';
2
- export type ComponentID = Brand<number, "component_id">;
3
- export declare const as_component_id: (value: number) => ComponentID;
4
- /** Core schema type: maps field names to typed array tags. */
5
- export type ComponentSchema = Readonly<Record<string, TypedArrayTag>>;
6
- /** Compile-time tag → TypedArray mapping. */
7
- export type TagToTypedArray = {
8
- f32: Float32Array;
9
- f64: Float64Array;
10
- i8: Int8Array;
11
- i16: Int16Array;
12
- i32: Int32Array;
13
- u8: Uint8Array;
14
- u16: Uint16Array;
15
- u32: Uint32Array;
16
- };
17
- /** Maps schema fields to their value object: { x: number, y: number }. */
18
- export type FieldValues<S extends ComponentSchema> = {
19
- readonly [K in keyof S]: number;
20
- };
21
- /** Maps schema fields to their specific typed array columns. */
22
- export type ColumnsForSchema<S extends ComponentSchema> = {
23
- readonly [K in keyof S]: TagToTypedArray[S[K]];
24
- };
25
- export type ComponentFields = readonly string[];
26
- /** Maps component fields to column arrays (used by events — always Float64Array). */
27
- export type ColumnsForFields<F extends ComponentFields> = {
28
- readonly [K in F[number]]: Float64Array;
29
- };
30
- declare const __schema: unique symbol;
31
- export type ComponentDef<S extends ComponentSchema = ComponentSchema> = ComponentID & {
32
- readonly [__schema]: S;
33
- };
34
- /** Compile-time readonly view of a typed array column. Prevents index writes. */
35
- export interface ReadonlyColumn {
36
- readonly [index: number]: number;
37
- readonly length: number;
38
- }
39
- /** Compile-time readonly view of a Uint32Array. Prevents index writes. */
40
- export interface ReadonlyUint32Array {
41
- readonly [index: number]: number;
42
- readonly length: number;
43
- }
44
- export {};
45
- //# sourceMappingURL=component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBK;AAEL,OAAO,EACL,KAAK,EAGL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACxD,eAAO,MAAM,eAAe,UAAW,MAAM,gBAK1C,CAAC;AAEJ,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,EAAE,EAAE,SAAS,CAAC;IACd,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,EAAE,EAAE,UAAU,CAAC;IACf,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,WAAW,CAAC;CAClB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,IAAI;IACnD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAChC,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI;IACxD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAC;AAGF,MAAM,MAAM,eAAe,GAAG,SAAS,MAAM,EAAE,CAAC;AAEhD,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI;IACxD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY;CACxC,CAAC;AAMF,OAAO,CAAC,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AAEtC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI,WAAW,GAAG;IACpF,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACxB,CAAC;AAEF,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
package/dist/ecs.d.ts DELETED
@@ -1,104 +0,0 @@
1
- import { SCHEDULE, SystemEntry } from './schedule';
2
- import { Archetype } from './archetype';
3
- import { SystemContext, Query, QueryBuilder, QueryResolver } from './query';
4
- import { EntityID } from './entity';
5
- import { ComponentDef, ComponentSchema, ComponentFields, FieldValues } from './component';
6
- import { EventKey, EventReader } from './event';
7
- import { ResourceKey } from './resource';
8
- import { SystemFn, SystemConfig, SystemDescriptor } from './system';
9
- import { BitSet, TypedArrayTag } from './type_primitives';
10
- export interface WorldOptions {
11
- fixed_timestep?: number;
12
- max_fixed_steps?: number;
13
- initial_capacity?: number;
14
- }
15
- export declare class ECS implements QueryResolver {
16
- private readonly store;
17
- private readonly schedule;
18
- private readonly ctx;
19
- private readonly systems;
20
- private next_system_id;
21
- private _tick;
22
- private _fixed_timestep;
23
- private _accumulator;
24
- private _max_fixed_steps;
25
- private readonly query_cache;
26
- private readonly scratch_mask;
27
- constructor(options?: WorldOptions);
28
- get fixed_timestep(): number;
29
- set fixed_timestep(value: number);
30
- get fixed_alpha(): number;
31
- register_component<S extends Record<string, TypedArrayTag>>(schema: S): ComponentDef<S>;
32
- register_component<const F extends readonly string[], T extends TypedArrayTag = "f64">(fields: F, type?: T): ComponentDef<{
33
- readonly [K in F[number]]: T;
34
- }>;
35
- register_tag(): ComponentDef<Record<string, never>>;
36
- register_event<F extends readonly string[]>(key: EventKey<F>, fields: F): void;
37
- register_signal(key: EventKey<readonly []>): void;
38
- register_resource<T>(key: ResourceKey<T>, value: T): void;
39
- resource<T>(key: ResourceKey<T>): T;
40
- set_resource<T>(key: ResourceKey<T>, value: T): void;
41
- has_resource<T>(key: ResourceKey<T>): boolean;
42
- create_entity(): EntityID;
43
- destroy_entity_deferred(id: EntityID): void;
44
- is_alive(id: EntityID): boolean;
45
- get entity_count(): number;
46
- add_component(entity_id: EntityID, def: ComponentDef<Record<string, never>>): this;
47
- add_component<S extends ComponentSchema>(entity_id: EntityID, def: ComponentDef<S>, values: FieldValues<S>): this;
48
- add_components(entity_id: EntityID, entries: {
49
- def: ComponentDef;
50
- values?: Record<string, number>;
51
- }[]): void;
52
- remove_component(entity_id: EntityID, def: ComponentDef): this;
53
- remove_components(entity_id: EntityID, ...defs: ComponentDef[]): void;
54
- has_component(entity_id: EntityID, def: ComponentDef): boolean;
55
- /**
56
- * Bulk add a component to ALL entities in the given archetype.
57
- * O(columns) via TypedArray.set() instead of O(N×columns).
58
- */
59
- batch_add_component(src_arch: Archetype, def: ComponentDef<Record<string, never>>): void;
60
- batch_add_component<S extends ComponentSchema>(src_arch: Archetype, def: ComponentDef<S>, values: FieldValues<S>): void;
61
- /**
62
- * Bulk remove a component from ALL entities in the given archetype.
63
- * O(columns) via TypedArray.set() instead of O(N×columns).
64
- */
65
- batch_remove_component(src_arch: Archetype, def: ComponentDef): void;
66
- get_field<S extends ComponentSchema>(entity_id: EntityID, def: ComponentDef<S>, field: string & keyof S): number;
67
- set_field<S extends ComponentSchema>(entity_id: EntityID, def: ComponentDef<S>, field: string & keyof S, value: number): void;
68
- emit(key: EventKey<readonly []>): void;
69
- emit<F extends ComponentFields>(key: EventKey<F>, values: {
70
- readonly [K in F[number]]: number;
71
- }): void;
72
- read<F extends ComponentFields>(key: EventKey<F>): EventReader<F>;
73
- query<T extends ComponentDef[]>(...defs: T): Query<T>;
74
- _get_last_run_tick(): number;
75
- /** QueryResolver implementation — creates or retrieves a cached Query. */
76
- _resolve_query(include: BitSet, exclude: BitSet | null, any_of: BitSet | null, defs: readonly ComponentDef[]): Query<any>;
77
- private _find_cached;
78
- /**
79
- * Register a system.
80
- *
81
- * // Bare function (no query, no lifecycle hooks)
82
- * world.register_system((ctx, dt) => { ... });
83
- *
84
- * // Function + query builder
85
- * world.register_system(
86
- * (q, ctx, dt) => { q.for_each((arch) => { ... }); },
87
- * (qb) => qb.every(Pos, Vel),
88
- * );
89
- *
90
- * // Full config (for lifecycle hooks)
91
- * world.register_system({ fn(ctx, dt) { ... } });
92
- */
93
- register_system(fn: SystemFn): SystemDescriptor;
94
- register_system<Defs extends readonly ComponentDef[]>(fn: (q: Query<Defs>, ctx: SystemContext, dt: number) => void, query_fn: (qb: QueryBuilder) => Query<Defs>): SystemDescriptor;
95
- register_system(config: SystemConfig): SystemDescriptor;
96
- add_systems(label: SCHEDULE, ...entries: (SystemDescriptor | SystemEntry)[]): this;
97
- remove_system(system: SystemDescriptor): void;
98
- get system_count(): number;
99
- startup(): void;
100
- update(dt: number): void;
101
- flush(): void;
102
- dispose(): void;
103
- }
104
- //# sourceMappingURL=ecs.d.ts.map
package/dist/ecs.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ecs.d.ts","sourceRoot":"","sources":["../src/ecs.ts"],"names":[],"mappings":"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"}
package/dist/entity.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import { Brand } from './type_primitives';
2
- export type EntityID = Brand<number, "entity_id">;
3
- export declare const INDEX_BITS = 20;
4
- export declare const INDEX_MASK: number;
5
- export declare const MAX_INDEX: number;
6
- export declare const GENERATION_BITS: number;
7
- export declare const MAX_GENERATION: number;
8
- export declare const create_entity_id: (index: number, generation: number) => EntityID;
9
- export declare const get_entity_index: (id: EntityID) => number;
10
- export declare const get_entity_generation: (id: EntityID) => number;
11
- //# sourceMappingURL=entity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;KAkBK;AAEL,OAAO,EAAE,KAAK,EAAe,MAAM,mBAAmB,CAAC;AAIvD,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAElD,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAwB,CAAC;AAChD,eAAO,MAAM,SAAS,QAAa,CAAC;AACpC,eAAO,MAAM,eAAe,QAAiC,CAAC;AAC9D,eAAO,MAAM,cAAc,QAA6B,CAAC;AAEzD,eAAO,MAAM,gBAAgB,UAAW,MAAM,cAAc,MAAM,KAAG,QAWpE,CAAC;AAEF,eAAO,MAAM,gBAAgB,OAAQ,QAAQ,KAAG,MAAyB,CAAC;AAE1E,eAAO,MAAM,qBAAqB,OAAQ,QAAQ,KAAG,MAAsC,CAAC"}
package/dist/event.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import { Brand } from './type_primitives';
2
- import { ComponentFields, ColumnsForFields } from './component';
3
- export type EventID = Brand<number, "event_id">;
4
- export declare const as_event_id: (value: number) => EventID;
5
- declare const __event_schema: unique symbol;
6
- export type EventDef<F extends ComponentFields = ComponentFields> = EventID & {
7
- readonly [__event_schema]: F;
8
- };
9
- /** Reader view over an event channel's SoA columns. */
10
- export type EventReader<F extends ComponentFields> = {
11
- length: number;
12
- } & ColumnsForFields<F>;
13
- export declare class EventChannel {
14
- readonly field_names: string[];
15
- readonly columns: number[][];
16
- readonly reader: EventReader<any>;
17
- constructor(field_names: string[]);
18
- emit(values: Record<string, number>): void;
19
- /** Emit a signal (zero-field event). */
20
- emit_signal(): void;
21
- clear(): void;
22
- }
23
- declare const __event_key_schema: unique symbol;
24
- export type EventKey<F extends ComponentFields = ComponentFields> = symbol & {
25
- readonly [__event_key_schema]: F;
26
- };
27
- export declare function event_key<F extends readonly string[]>(name: string): EventKey<F>;
28
- export declare function signal_key(name: string): EventKey<readonly []>;
29
- export {};
30
- //# sourceMappingURL=event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BK;AAEL,OAAO,EAAE,KAAK,EAA2D,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChD,eAAO,MAAM,WAAW,UAAW,MAAM,YAKtC,CAAC;AAGJ,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAE5C,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI,OAAO,GAAG;IAC5E,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;CAC9B,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,IAAI;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB,qBAAa,YAAY;IACvB,SAAgB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtC,SAAgB,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAEpC,SAAgB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBAE7B,WAAW,EAAE,MAAM,EAAE;IAgB1B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IASjD,wCAAwC;IACjC,WAAW,IAAI,IAAI;IAInB,KAAK,IAAI,IAAI;CAOrB;AAMD,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAEhD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI,MAAM,GAAG;IAC3E,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;CAClC,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEhF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAE9D"}