@vworlds/vecs 1.0.9 → 1.0.11

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 (46) hide show
  1. package/.husky/pre-commit +1 -0
  2. package/README.md +218 -229
  3. package/dist/command.d.ts +1 -0
  4. package/dist/command.js +2 -0
  5. package/dist/command.js.map +1 -0
  6. package/dist/component.d.ts +51 -59
  7. package/dist/component.js +31 -25
  8. package/dist/component.js.map +1 -1
  9. package/dist/dsl.d.ts +34 -26
  10. package/dist/dsl.js +46 -20
  11. package/dist/dsl.js.map +1 -1
  12. package/dist/entity.d.ts +110 -127
  13. package/dist/entity.js +323 -164
  14. package/dist/entity.js.map +1 -1
  15. package/dist/filter.d.ts +31 -23
  16. package/dist/filter.js +41 -32
  17. package/dist/filter.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/package.json +3 -1
  20. package/dist/phase.d.ts +5 -28
  21. package/dist/phase.js +11 -10
  22. package/dist/phase.js.map +1 -1
  23. package/dist/query.d.ts +128 -94
  24. package/dist/query.js +254 -145
  25. package/dist/query.js.map +1 -1
  26. package/dist/system.d.ts +64 -128
  27. package/dist/system.js +156 -149
  28. package/dist/system.js.map +1 -1
  29. package/dist/util/array_map.d.ts +4 -55
  30. package/dist/util/array_map.js +35 -37
  31. package/dist/util/array_map.js.map +1 -1
  32. package/dist/util/bitset.d.ts +40 -50
  33. package/dist/util/bitset.js +76 -62
  34. package/dist/util/bitset.js.map +1 -1
  35. package/dist/util/events.d.ts +14 -18
  36. package/dist/util/events.js +24 -3
  37. package/dist/util/events.js.map +1 -1
  38. package/dist/util/ordered_set.d.ts +1 -17
  39. package/dist/util/ordered_set.js +74 -25
  40. package/dist/util/ordered_set.js.map +1 -1
  41. package/dist/world.d.ts +222 -201
  42. package/dist/world.js +394 -323
  43. package/dist/world.js.map +1 -1
  44. package/eslint-rules/internal-underscore.js +60 -0
  45. package/eslint.config.js +5 -0
  46. package/package.json +3 -1
package/dist/entity.js CHANGED
@@ -2,153 +2,276 @@ import { ArrayMap } from "./util/array_map.js";
2
2
  import { Events } from "./util/events.js";
3
3
  import { Bitset } from "./util/bitset.js";
4
4
  /**
5
- * A game object a unique identifier with an arbitrary set of
6
- * {@link Component | components} attached to it.
5
+ * A game object: a unique numeric id with an arbitrary set of
6
+ * {@link Component | components} attached.
7
7
  *
8
- * You never construct an `Entity` directly. Use {@link World.entity} to create
9
- * one, or {@link World.getOrCreateEntity} when the id is assigned by an
10
- * external authority (e.g. the server):
8
+ * Never instantiate `Entity` directly. Use {@link World.entity} for an
9
+ * auto-assigned id, or {@link World.getOrCreateEntity} when the id comes from
10
+ * an external authority such as a game server:
11
11
  *
12
12
  * ```ts
13
13
  * const e = world.entity();
14
14
  * e.set(Position, { x: 100 });
15
15
  * ```
16
16
  *
17
- * Entities support a parent–child hierarchy. When a parent is destroyed its
18
- * children are destroyed recursively. The `children` set is created lazily.
17
+ * Entities support a parent–child hierarchy. `parent` and `children` form a
18
+ * bidirectional link maintained by {@link setParent}; the children set is
19
+ * created lazily. Destroying a parent recursively destroys its children.
20
+ *
21
+ * ## Deferred semantics
22
+ *
23
+ * Inside a system body or `forEach` iteration the world is in **deferred
24
+ * mode**: `add` / `set` / `modified` / `remove` / `destroy` / `setParent` only
25
+ * enqueue commands. The data layer (the components map and `componentBitmask`)
26
+ * is mutated when the world drains its queue. Concretely, while deferred:
27
+ *
28
+ * - `entity.get(C)` returns `undefined` after `entity.add(C)` (no instance yet).
29
+ * - `entity.get(C)` returns the previous value after `entity.set(C, props)`.
30
+ * - `entity.get(C)` still returns the component after `entity.remove(C)`.
31
+ *
32
+ * Outside deferred mode the same calls execute inline and mutations are
33
+ * visible immediately.
19
34
  */
20
35
  export class Entity {
21
36
  constructor(
22
- /** The {@link World} that owns this entity. */
37
+ /** World that owns this entity. */
23
38
  world,
24
- /** Unique numeric entity id assigned at creation time. */
39
+ /** Unique numeric entity id assigned at creation. */
25
40
  eid) {
26
41
  this.world = world;
27
42
  this.eid = eid;
28
- this.components = new ArrayMap(); //maps component types to Components
29
- this.deletedComponents = new ArrayMap(); //maps deleted component types to Components
43
+ /** @internal Maps numeric component type id to component instance. */
44
+ this._components = new ArrayMap();
45
+ /** @internal Set of queries this entity currently belongs to. */
46
+ this._queries = new Set();
30
47
  /**
31
- * Bitmask representing the set of component types currently attached to this
32
- * entity. Used by the world to efficiently match entities against query
33
- * predicates.
48
+ * Bitmask of component type ids currently attached to this entity. Used by
49
+ * the world for fast archetype matching against query predicates.
34
50
  */
35
51
  this.componentBitmask = new Bitset();
36
- this.queries = new Set();
37
- this.newQueries = [];
38
52
  /**
39
- * A free-form property bag that modules can use to associate arbitrary data
40
- * with an entity without registering a component.
53
+ * Free-form property bag. Modules can use it to associate arbitrary data with
54
+ * an entity without registering a dedicated component.
41
55
  */
42
56
  this.properties = new Map();
43
- this._archetypeChanged = false;
44
- this.destroyed = false;
57
+ /** @internal Set to `true` after the world has fully torn down this entity. */
58
+ this._destroyed = false;
59
+ }
60
+ /**
61
+ * Re-evaluate every world query for this entity, firing `_enter` / `_exit`
62
+ * routing whenever membership flipped.
63
+ */
64
+ _updateQueries() {
65
+ this.world.queries.forEach((q) => {
66
+ const belongs = q.belongs(this);
67
+ const isIn = this._isInQuery(q);
68
+ if (belongs !== isIn) {
69
+ belongs ? q._enter(this) : q._exit(this);
70
+ }
71
+ });
45
72
  }
46
73
  /**
47
- * The set of direct child entities in the scene hierarchy.
74
+ * Construct a fresh component of `type`, apply `props`, store it on this
75
+ * entity, fire the `onAdd` hook, and route query updates.
48
76
  *
49
- * The set is created lazily on first access. Mutate it only through
50
- * {@link Entity.destroy} or by setting {@link Entity.parent} on a child —
51
- * both will keep the parent–child links consistent.
77
+ * If the component type belongs to an exclusivity group, any conflicting
78
+ * component already on this entity is removed first.
52
79
  */
53
- get children() {
54
- if (!this._children) {
55
- this._children = new Set();
80
+ _new(type, props) {
81
+ const meta = this.world.getComponentMeta(type);
82
+ if (meta.exclusive) {
83
+ for (const exclusiveType of meta.exclusive) {
84
+ if (this._components.has(exclusiveType)) {
85
+ this._remove(exclusiveType);
86
+ }
87
+ }
56
88
  }
57
- return this._children;
58
- }
59
- getComponentInstance(meta) {
60
89
  const c = new meta.Class(this, meta);
61
- const hook = meta._onAddHandler;
62
- if (hook) {
63
- hook(c);
90
+ if (props !== undefined) {
91
+ Object.assign(c, props);
92
+ }
93
+ this._components.set(type, c);
94
+ this.componentBitmask.add(type);
95
+ if (meta._onAddHandlers) {
96
+ meta._onAddHandlers.forEach((handler) => handler(c));
64
97
  }
98
+ this._updateQueries();
65
99
  return c;
66
100
  }
67
101
  /**
68
- * Queue an `onSet` / `update` notification for the given component and
69
- * return the entity for chaining.
70
- *
71
- * Equivalent to `component.modified()`, but usable inside an entity method
72
- * chain (e.g. after `add` or `set`).
102
+ * @internal Return `true` when this entity is currently tracked by `q`.
103
+ */
104
+ _isInQuery(q) {
105
+ return this._queries.has(q);
106
+ }
107
+ /**
108
+ * @internal Look up a component instance by numeric type id.
73
109
  *
74
- * @param c - The component instance whose data changed.
75
- * @returns This entity, for chaining.
110
+ * Faster than {@link get} because no class type id resolution is needed.
76
111
  */
77
- modified(c) {
78
- this.world._queueUpdatedComponent(c);
79
- return this;
112
+ _get(type) {
113
+ return this._components.get(type);
80
114
  }
81
- _add(typeOrClass, markAsModified = true) {
82
- const type = this.world.getComponentType(typeOrClass);
83
- let c = this.components.get(type);
84
- if (c) {
85
- return c;
115
+ /**
116
+ * @internal Reparent this entity in place, maintaining the bidirectional
117
+ * link. Throws if `newParent` is a descendant of this entity.
118
+ *
119
+ * Called by the world either inline (outside deferred mode) or while
120
+ * routing a queued `SetParent` command.
121
+ */
122
+ _setParent(newParent) {
123
+ if (this._destroyed) {
124
+ return;
86
125
  }
87
- const meta = this.world.getComponentMeta(typeOrClass);
88
- if (meta.exclusive) {
89
- for (const exclusiveType of meta.exclusive) {
90
- if (this.components.has(exclusiveType)) {
91
- this.remove(exclusiveType);
126
+ if (newParent !== undefined) {
127
+ let ancestor = newParent;
128
+ while (ancestor !== undefined) {
129
+ if (ancestor === this) {
130
+ throw new Error(`Circular parent reference: entity ${this.eid} is already an ancestor of entity ${newParent.eid}`);
92
131
  }
132
+ ancestor = ancestor._parent;
93
133
  }
94
134
  }
95
- c = this.getComponentInstance(meta);
96
- this.components.set(type, c);
97
- this.componentBitmask.add(type);
98
- this.world._notifyComponentAdded(this, c);
99
- if (markAsModified) {
100
- this.modified(c);
135
+ if (this._parent) {
136
+ this._parent._children?.delete(this);
137
+ }
138
+ this._parent = newParent;
139
+ if (newParent) {
140
+ (newParent._children ?? (newParent._children = new Set())).add(this);
101
141
  }
102
- return c;
103
142
  }
104
- add(typeOrClass, markAsModified = true) {
105
- this._add(typeOrClass, markAsModified);
106
- return this;
143
+ /**
144
+ * @internal Apply a `Set` command: create the component if missing, assign
145
+ * `props` if provided, fire `onSet`, and route modified events to every
146
+ * query that watches the component type.
147
+ */
148
+ _set(type, props) {
149
+ if (this._destroyed) {
150
+ return;
151
+ }
152
+ const existing = this._components.get(type);
153
+ const c = existing ?? this._new(type, props);
154
+ if (props !== undefined) {
155
+ if (existing) {
156
+ Object.assign(c, props);
157
+ }
158
+ const setHandlers = c.meta._onSetHandlers;
159
+ if (setHandlers) {
160
+ setHandlers.forEach((handler) => handler(c));
161
+ }
162
+ c._dirty = false;
163
+ if (existing) {
164
+ this._queries.forEach((q) => q._notifyModified(c));
165
+ }
166
+ }
107
167
  }
108
- set(typeOrClass, props) {
109
- const c = this._add(typeOrClass, false);
110
- this.modified(c);
111
- Object.assign(c, props);
112
- return this;
168
+ /**
169
+ * @internal Apply a `Modified` command: fire `onSet` and route modified
170
+ * events to every query that watches the component type.
171
+ */
172
+ _modified(type) {
173
+ if (this._destroyed) {
174
+ return;
175
+ }
176
+ const c = this._components.get(type);
177
+ if (!c) {
178
+ return;
179
+ }
180
+ const setHandlers = c.meta._onSetHandlers;
181
+ if (setHandlers) {
182
+ setHandlers.forEach((handler) => handler(c));
183
+ }
184
+ c._dirty = false;
185
+ this._queries.forEach((q) => q._notifyModified(c));
113
186
  }
114
- remove(typeOrClass) {
115
- const type = this.world.getComponentType(typeOrClass);
116
- const c = this.components.get(type);
117
- if (c) {
118
- this.components.delete(type);
119
- this.deletedComponents.set(type, c);
120
- this.componentBitmask.delete(type);
121
- this.world._notifyComponentRemoved(this, c);
122
- }
123
- }
124
- /** @internal Called by queries to deliver update notifications. */
125
- _notifyModified(component) {
126
- this.queries.forEach((q) => {
127
- q.notifyModified(component);
128
- });
187
+ /**
188
+ * @internal Apply a `Remove` command: clear the type bit, route exits,
189
+ * detach the component, and fire `onRemove`.
190
+ */
191
+ _remove(type) {
192
+ if (this._destroyed) {
193
+ return;
194
+ }
195
+ const c = this._components.get(type);
196
+ if (!c) {
197
+ return;
198
+ }
199
+ this.componentBitmask.delete(type);
200
+ this._updateQueries();
201
+ this._components.delete(type);
202
+ const removeHandlers = c.meta._onRemoveHandlers;
203
+ if (removeHandlers) {
204
+ removeHandlers.forEach((handler) => handler(c));
205
+ }
129
206
  }
130
207
  /**
131
- * Retrieve the component of type `Class`, or `undefined` if not present.
132
- *
133
- * @param typeOrClass - Component class or numeric type id.
134
- * @param get_deleted - If `true`, also search components that were removed
135
- * in the current frame but not yet garbage-collected. Useful inside
136
- * `exit` callbacks to read final component values.
137
- * @returns The component instance or `undefined`.
208
+ * @internal Apply a `Destroy` command: fire `_exit` on every query, then
209
+ * `onRemove` on every component, emit the `destroy` event, and unlink from
210
+ * the world and any parent.
138
211
  */
139
- get(typeOrClass, get_deleted = false) {
140
- const type = this.world.getComponentType(typeOrClass);
141
- const c = this.components.get(type);
142
- if (!c && get_deleted) {
143
- return this.deletedComponents.get(type);
212
+ _destroy() {
213
+ if (this._destroyed) {
214
+ return;
215
+ }
216
+ this._destroyed = true;
217
+ const toExit = [];
218
+ this._queries.forEach((q) => {
219
+ if (q.world) {
220
+ toExit.push(q);
221
+ }
222
+ });
223
+ toExit.forEach((q) => q._exit(this));
224
+ this._components.forEach((c) => {
225
+ const removeHandlers = c.meta._onRemoveHandlers;
226
+ if (removeHandlers) {
227
+ removeHandlers.forEach((handler) => handler(c));
228
+ }
229
+ });
230
+ if (this._events) {
231
+ this._events.emit("destroy");
232
+ this._events.removeAllListeners("destroy");
233
+ }
234
+ this.world._unregisterEntity(this);
235
+ if (this._parent) {
236
+ this._parent._children?.delete(this);
237
+ this._parent = undefined;
144
238
  }
145
- return c;
146
239
  }
147
240
  /**
148
- * Typed event emitter for entity-level lifecycle events.
149
- *
150
- * Currently emits one event:
151
- * - `"destroy"` — fired just before the entity is fully torn down.
241
+ * @internal Forget query `q` without firing exit callbacks. Called by
242
+ * {@link World} when a {@link Query.destroy} sweeps every entity.
243
+ */
244
+ _purgeQuery(q) {
245
+ this._queries.delete(q);
246
+ }
247
+ /**
248
+ * @internal Record that this entity is now tracked by `q`. Called by
249
+ * `Query._enter`.
250
+ */
251
+ _addQueryMembership(q) {
252
+ this._queries.add(q);
253
+ }
254
+ /**
255
+ * @internal Record that this entity is no longer tracked by `q`. Called by
256
+ * `Query._exit`.
257
+ */
258
+ _removeQueryMembership(q) {
259
+ this._queries.delete(q);
260
+ }
261
+ /** Parent entity in the scene hierarchy, or `undefined` for a root entity. */
262
+ get parent() {
263
+ return this._parent;
264
+ }
265
+ /**
266
+ * Read-only view of direct child entities. The backing set is created lazily
267
+ * on the first child link; before that this getter returns a shared empty set.
268
+ */
269
+ get children() {
270
+ return this._children ?? Entity._emptyChildren;
271
+ }
272
+ /**
273
+ * Typed event emitter for entity-level lifecycle events. Currently only the
274
+ * `"destroy"` event is emitted, just before the entity is fully torn down.
152
275
  *
153
276
  * The emitter is created lazily on first access.
154
277
  */
@@ -158,92 +281,128 @@ export class Entity {
158
281
  }
159
282
  return this._events;
160
283
  }
161
- /** @internal */
162
- _hasQuery(q) {
163
- return this.queries.has(q);
284
+ /** `true` when no components are currently attached to this entity. */
285
+ get empty() {
286
+ return this._components.size == 0;
164
287
  }
165
- /** @internal Removes a query from this entity's tracking sets without firing any callbacks. */
166
- _purgeQuery(q) {
167
- this.queries.delete(q);
168
- const idx = this.newQueries.indexOf(q);
169
- if (idx !== -1) {
170
- this.newQueries.splice(idx, 1);
171
- }
288
+ /**
289
+ * Read-only view of all components currently attached to this entity, keyed
290
+ * by numeric component type id.
291
+ *
292
+ * The mutating methods (`set`, `delete`, `clear`) are not exposed. Use
293
+ * `entity.add`, `entity.set`, and `entity.remove` to change the component
294
+ * set.
295
+ *
296
+ * ```ts
297
+ * entity.components.forEach((c) => console.log(c.constructor.name));
298
+ * ```
299
+ */
300
+ get components() {
301
+ return this._components;
172
302
  }
173
- /** @internal */
174
- _addQuery(q) {
175
- if (!this.queries.has(q)) {
176
- this.newQueries.push(q);
177
- q._enter(this);
303
+ /**
304
+ * Reparent this entity. In deferred mode the change is queued; outside
305
+ * deferred mode it executes inline.
306
+ *
307
+ * @param newParent - New parent, or `undefined` to make this a root entity.
308
+ */
309
+ setParent(newParent) {
310
+ if (this.world.deferred) {
311
+ this.world._enqueue({ kind: 5 /* CommandKind.SetParent */, entity: this, parent: newParent });
312
+ }
313
+ else {
314
+ this._setParent(newParent);
178
315
  }
179
316
  }
180
- /** @internal */
181
- _removeQuery(q) {
182
- if (this.queries.delete(q)) {
183
- q._exit(this);
317
+ /**
318
+ * Mark `c` as having changed, queueing the corresponding `onSet` / `update`
319
+ * notifications.
320
+ *
321
+ * Equivalent to `c.modified()` but returns the entity for chaining. Repeated
322
+ * calls before the world routes the modified command are coalesced via the
323
+ * component's dirty flag.
324
+ *
325
+ * @param c - Component instance whose data changed.
326
+ * @returns This entity, for chaining.
327
+ */
328
+ modified(c) {
329
+ if (c._dirty) {
330
+ return this;
331
+ }
332
+ c._dirty = true;
333
+ if (this.world.deferred) {
334
+ this.world._enqueue({ kind: 2 /* CommandKind.Modified */, entity: this, type: c.type });
335
+ }
336
+ else {
337
+ this._modified(c.type);
184
338
  }
339
+ return this;
185
340
  }
186
- /** @internal */
187
- _updateQueries() {
188
- this.newQueries.forEach((q) => {
189
- this.queries.add(q);
190
- });
191
- this.newQueries.length = 0;
341
+ add(typeOrClass) {
342
+ const type = this.world.getComponentType(typeOrClass);
343
+ if (this.world.deferred) {
344
+ this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, type, props: undefined });
345
+ }
346
+ else {
347
+ this._set(type, undefined);
348
+ }
349
+ return this;
192
350
  }
193
- /** `true` when the entity has no components attached. */
194
- get empty() {
195
- return this.components.size == 0;
351
+ set(typeOrClass, props) {
352
+ const type = this.world.getComponentType(typeOrClass);
353
+ if (this.world.deferred) {
354
+ this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, type, props });
355
+ }
356
+ else {
357
+ this._set(type, props);
358
+ }
359
+ return this;
196
360
  }
197
- /** @internal */
198
- _destroy() {
199
- if (this.destroyed) {
200
- return;
361
+ remove(typeOrClass) {
362
+ const type = this.world.getComponentType(typeOrClass);
363
+ if (this.world.deferred) {
364
+ this.world._enqueue({ kind: 3 /* CommandKind.Remove */, entity: this, type });
201
365
  }
202
- this.destroyed = true;
203
- this.queries.forEach((q) => {
204
- q._exit(this);
205
- });
206
- this.queries.clear();
207
- if (this._events) {
208
- this._events.emit("destroy");
209
- this._events.removeAllListeners("destroy");
366
+ else {
367
+ this._remove(type);
210
368
  }
211
369
  }
212
370
  /**
213
- * Destroy this entity and recursively destroy all of its children.
371
+ * Look up a component on this entity.
214
372
  *
215
- * All components are removed (triggering `onRemove` hooks and `exit`
216
- * callbacks), the entity is unregistered from the world, and the `"destroy"`
217
- * event is emitted. The entity must not be used after calling this method.
373
+ * @param typeOrClass - Component class or numeric type id.
374
+ * @returns The component instance, or `undefined` when it is not attached.
218
375
  */
219
- destroy() {
220
- this.world._notifyEntityDestroyed(this);
221
- this.children.forEach((child) => {
222
- child.destroy();
223
- });
224
- this.children.clear();
225
- if (this.parent) {
226
- this.parent.children.delete(this);
227
- this.world.archetypeChanged(this.parent);
228
- this.parent = undefined;
229
- }
230
- }
231
- /** @internal */
232
- clearDeletedComponents() {
233
- this.deletedComponents.clear();
376
+ get(typeOrClass) {
377
+ const type = this.world.getComponentType(typeOrClass);
378
+ return this._get(type);
234
379
  }
235
380
  /**
236
- * Iterate over every component currently attached to this entity.
381
+ * Destroy this entity and recursively destroy its children.
237
382
  *
238
- * @param callback - Called with each component instance. Iteration order is
239
- * not guaranteed.
383
+ * Each component fires its `onRemove` hook, the `"destroy"` event is emitted
384
+ * just before teardown, and the entity is unregistered from the world.
385
+ * After destruction the entity must not be used.
240
386
  */
241
- forEachComponent(callback) {
242
- this.components.forEach(callback);
387
+ destroy() {
388
+ if (this.world.deferred) {
389
+ this.world._enqueue({ kind: 4 /* CommandKind.Destroy */, entity: this });
390
+ }
391
+ else {
392
+ this._destroy();
393
+ }
394
+ if (this._children) {
395
+ this._children.forEach((child) => {
396
+ child.destroy();
397
+ });
398
+ this._children.clear();
399
+ }
243
400
  }
244
401
  /** Returns `"EntityN"` where N is the entity id. */
245
402
  toString() {
246
403
  return `Entity${this.eid}`;
247
404
  }
248
405
  }
406
+ /** @internal Empty children set used as the default `children` value. */
407
+ Entity._emptyChildren = new Set();
249
408
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}