@vworlds/vecs 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -9
- package/dist/entity.d.ts +77 -54
- package/dist/entity.js +225 -180
- package/dist/entity.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/world.d.ts +1 -1
- package/dist/world.js +4 -1
- package/dist/world.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -120,11 +120,12 @@ for (let tick = 0; tick < 5; tick++) {
|
|
|
120
120
|
|
|
121
121
|
## Deferred mode
|
|
122
122
|
|
|
123
|
-
Inside a system body, a `Query.forEach`, or any `world.defer(...)` block, the world is in **deferred mode**: entity mutations (`add` / `set` / `remove` / `destroy` / `setParent` / `modified`) are queued instead of applied inline. The queue drains on the boundary that opened the deferred scope.
|
|
123
|
+
Inside a system body, a `Query.forEach`, or any `world.defer(...)` block, the world is in **deferred mode**: entity mutations (`add` / `attach` / `set` / `remove` / `destroy` / `setParent` / `modified`) are queued instead of applied inline. The queue drains on the boundary that opened the deferred scope.
|
|
124
124
|
|
|
125
125
|
Concretely, while deferred:
|
|
126
126
|
|
|
127
127
|
- `entity.get(C)` returns `undefined` after `entity.add(C)` (no instance has been created yet).
|
|
128
|
+
- `entity.get(C)` returns `undefined` after `entity.attach(instance)` if C was absent.
|
|
128
129
|
- `entity.get(C)` returns the **previous** value after `entity.set(C, props)`.
|
|
129
130
|
- `entity.get(C)` still returns the component after `entity.remove(C)`.
|
|
130
131
|
|
|
@@ -213,7 +214,7 @@ world
|
|
|
213
214
|
.onSet((entity, sprite) => sprite.syncToScene(entity));
|
|
214
215
|
```
|
|
215
216
|
|
|
216
|
-
`onAdd` fires when the component is first attached. `onRemove` fires when it is removed (or the entity is destroyed). `onSet` fires whenever `entity.modified(C)` is called,
|
|
217
|
+
`onAdd` fires when the component is first attached. `onRemove` fires when it is removed (or the entity is destroyed). `onSet` fires whenever `entity.modified(C)` is called, when `entity.set(C, props)` applies data, and when `entity.attach(instance)` stores an existing instance. Hook callbacks receive the owning entity because component instances do not carry entity references.
|
|
217
218
|
|
|
218
219
|
#### Phases
|
|
219
220
|
|
|
@@ -384,15 +385,20 @@ entity.modified(Position); // tell the world this component changed
|
|
|
384
385
|
|
|
385
386
|
// Equivalent — set assigns props and fires onSet automatically:
|
|
386
387
|
entity.set(Position, { x: 100 });
|
|
388
|
+
|
|
389
|
+
// Store an existing instance directly:
|
|
390
|
+
const shared = new Position();
|
|
391
|
+
entity.attach(shared);
|
|
392
|
+
entity.get(Position) === shared; // true
|
|
387
393
|
```
|
|
388
394
|
|
|
389
|
-
| Rule | Description
|
|
390
|
-
| ------------------------- |
|
|
391
|
-
| Plain class | Components should be ordinary classes with field initializers and methods as needed.
|
|
392
|
-
| No-arg construction | vecs calls `new ComponentClass()`, so constructors should be omitted or take no parameters.
|
|
393
|
-
| Explicit registration | Call `world.registerComponent(C)` before using the class as a component.
|
|
394
|
-
| Shared instances possible |
|
|
395
|
-
| Manual dirty marking | After mutating fields directly, call `entity.modified(C)` to notify hooks, queries, and systems.
|
|
395
|
+
| Rule | Description |
|
|
396
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
397
|
+
| Plain class | Components should be ordinary classes with field initializers and methods as needed. |
|
|
398
|
+
| No-arg construction | vecs calls `new ComponentClass()`, so constructors should be omitted or take no parameters. |
|
|
399
|
+
| Explicit registration | Call `world.registerComponent(C)` before using the class as a component. |
|
|
400
|
+
| Shared instances possible | `entity.attach(instance)` stores the exact passed object; code should use the entity passed by vecs callbacks. |
|
|
401
|
+
| Manual dirty marking | After mutating fields directly, call `entity.modified(C)` to notify hooks, queries, and systems. |
|
|
396
402
|
|
|
397
403
|
Use `world.getComponentMeta(C)` or `world.getComponentType(C)` when you need metadata such as the numeric type id or component name. Metadata is world-specific.
|
|
398
404
|
|
|
@@ -409,6 +415,7 @@ Created via `world.entity()` (auto-assigned id) or `world.getOrCreateEntity(id,
|
|
|
409
415
|
| `componentBitmask` | `Bitset` of component type ids attached to this entity. Used by archetype matching. |
|
|
410
416
|
| `properties` | `Map<string, any>` free-form bag for module-level bookkeeping. |
|
|
411
417
|
| `add(Class)` | Attach a component (idempotent). Returns the entity for chaining. |
|
|
418
|
+
| `attach(instance)` | Attach an existing registered component instance directly; replaces any previous instance for that component class and fires `onSet`. |
|
|
412
419
|
| `set(Class, props)` | Attach a component and assign `props`; fires `onSet`. Returns the entity for chaining. |
|
|
413
420
|
| `modified(Class)` | Queue an `onSet` / `update` notification for a component class or numeric type id. Returns the entity for chaining. |
|
|
414
421
|
| `get(Class)` | Return the component instance, or `undefined`. |
|
|
@@ -430,6 +437,8 @@ vel.vx += accel;
|
|
|
430
437
|
entity.modified(Velocity); // chainable
|
|
431
438
|
```
|
|
432
439
|
|
|
440
|
+
Use `entity.attach(instance)` when component ownership is intentionally shared with caller code or another object graph. The instance constructor must be registered in the entity's world; unregistered instances throw. If the component belongs to an exclusive component group, conflicting components are removed before the instance is stored.
|
|
441
|
+
|
|
433
442
|
#### Parent / child hierarchy
|
|
434
443
|
|
|
435
444
|
```ts
|
package/dist/entity.d.ts
CHANGED
|
@@ -19,18 +19,20 @@ type EntityEvents = Events<{
|
|
|
19
19
|
* e.set(Position, { x: 100 });
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* Entities support a parent
|
|
22
|
+
* Entities support a parent-child hierarchy. `parent` and `children` form a
|
|
23
23
|
* bidirectional link maintained by {@link setParent}; the children set is
|
|
24
24
|
* created lazily. Destroying a parent recursively destroys its children.
|
|
25
25
|
*
|
|
26
26
|
* ## Deferred semantics
|
|
27
27
|
*
|
|
28
28
|
* Inside a system body or `forEach` iteration the world is in **deferred
|
|
29
|
-
* mode**: `add` / `set` / `modified` / `remove` / `destroy` /
|
|
30
|
-
* enqueue commands. The data layer (the components map and
|
|
31
|
-
* is mutated when the world drains its queue. Concretely,
|
|
29
|
+
* mode**: `add` / `attach` / `set` / `modified` / `remove` / `destroy` /
|
|
30
|
+
* `setParent` only enqueue commands. The data layer (the components map and
|
|
31
|
+
* `componentBitmask`) is mutated when the world drains its queue. Concretely,
|
|
32
|
+
* while deferred:
|
|
32
33
|
*
|
|
33
34
|
* - `entity.get(C)` returns `undefined` after `entity.add(C)` (no instance yet).
|
|
35
|
+
* - `entity.get(C)` returns `undefined` after `entity.attach(instance)` if C was absent.
|
|
34
36
|
* - `entity.get(C)` returns the previous value after `entity.set(C, props)`.
|
|
35
37
|
* - `entity.get(C)` still returns the component after `entity.remove(C)`.
|
|
36
38
|
*
|
|
@@ -57,11 +59,19 @@ export declare class Entity {
|
|
|
57
59
|
world: World,
|
|
58
60
|
/** Unique numeric entity id assigned at creation. */
|
|
59
61
|
eid: number);
|
|
62
|
+
/** Fire every `onAdd` hook registered for `meta`. */
|
|
63
|
+
private _runOnAddHandlers;
|
|
64
|
+
/** Fire every `onSet` hook registered for `meta`. */
|
|
65
|
+
private _runOnSetHandlers;
|
|
60
66
|
/**
|
|
61
67
|
* Re-evaluate every world query for this entity, firing `_enter` / `_exit`
|
|
62
68
|
* routing whenever membership flipped.
|
|
63
69
|
*/
|
|
64
70
|
private _updateQueries;
|
|
71
|
+
/** Store a component instance and perform the shared add-side bookkeeping. */
|
|
72
|
+
private _storeComponent;
|
|
73
|
+
/** Perform the shared set-side hook and query update routing. */
|
|
74
|
+
private _notifyComponentSet;
|
|
65
75
|
/**
|
|
66
76
|
* Construct a fresh component of `type`, apply `props`, store it on this
|
|
67
77
|
* entity, fire the `onAdd` hook, and route query updates.
|
|
@@ -70,57 +80,39 @@ export declare class Entity {
|
|
|
70
80
|
* component already on this entity is removed first.
|
|
71
81
|
*/
|
|
72
82
|
private _new;
|
|
73
|
-
/** Parent entity in the scene hierarchy, or `undefined` for a root entity. */
|
|
74
|
-
get parent(): Entity | undefined;
|
|
75
83
|
/**
|
|
76
84
|
* Read-only view of direct child entities. The backing set is created lazily
|
|
77
85
|
* on the first child link; before that this getter returns a shared empty set.
|
|
78
86
|
*/
|
|
79
87
|
get children(): ReadonlySet<Entity>;
|
|
80
|
-
/**
|
|
81
|
-
* Typed event emitter for entity-level lifecycle events. Currently only the
|
|
82
|
-
* `"destroy"` event is emitted, just before the entity is fully torn down.
|
|
83
|
-
*
|
|
84
|
-
* The emitter is created lazily on first access.
|
|
85
|
-
*/
|
|
86
|
-
get events(): EntityEvents;
|
|
87
|
-
/** `true` when no components are currently attached to this entity. */
|
|
88
|
-
get empty(): boolean;
|
|
89
88
|
/**
|
|
90
89
|
* Read-only view of all components currently attached to this entity, keyed
|
|
91
90
|
* by numeric component type id.
|
|
92
91
|
*
|
|
93
92
|
* The mutating methods (`set`, `delete`, `clear`) are not exposed. Use
|
|
94
|
-
* `entity.add`, `entity.set`, and `entity.remove` to change
|
|
95
|
-
* set.
|
|
93
|
+
* `entity.add`, `entity.attach`, `entity.set`, and `entity.remove` to change
|
|
94
|
+
* the component set.
|
|
96
95
|
*
|
|
97
96
|
* ```ts
|
|
98
97
|
* entity.components.forEach((c) => console.log(c.constructor.name));
|
|
99
98
|
* ```
|
|
100
99
|
*/
|
|
101
100
|
get components(): ReadonlyArrayMap<Component>;
|
|
101
|
+
/** `true` when no components are currently attached to this entity. */
|
|
102
|
+
get empty(): boolean;
|
|
102
103
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* @param newParent - New parent, or `undefined` to make this a root entity.
|
|
107
|
-
*/
|
|
108
|
-
setParent(newParent: Entity | undefined): void;
|
|
109
|
-
/**
|
|
110
|
-
* Mark a component type as having changed, queueing the corresponding `onSet` / `update`
|
|
111
|
-
* notifications.
|
|
112
|
-
*
|
|
113
|
-
* Repeated calls before the world routes the modified command are coalesced via
|
|
114
|
-
* the entity's dirty component bitset.
|
|
104
|
+
* Typed event emitter for entity-level lifecycle events. Currently only the
|
|
105
|
+
* `"destroy"` event is emitted, just before the entity is fully torn down.
|
|
115
106
|
*
|
|
116
|
-
*
|
|
117
|
-
* @returns This entity, for chaining.
|
|
107
|
+
* The emitter is created lazily on first access.
|
|
118
108
|
*/
|
|
119
|
-
|
|
109
|
+
get events(): EntityEvents;
|
|
110
|
+
/** Parent entity in the scene hierarchy, or `undefined` for a root entity. */
|
|
111
|
+
get parent(): Entity | undefined;
|
|
120
112
|
/**
|
|
121
113
|
* Attach a component to this entity if it is not already present.
|
|
122
114
|
*
|
|
123
|
-
* Idempotent. Does not fire `onSet`
|
|
115
|
+
* Idempotent. Does not fire `onSet` -- use {@link set} when you want to apply
|
|
124
116
|
* data and notify watchers.
|
|
125
117
|
*
|
|
126
118
|
* @param Class - Component class to instantiate.
|
|
@@ -135,26 +127,44 @@ export declare class Entity {
|
|
|
135
127
|
*/
|
|
136
128
|
add(type: number): Entity;
|
|
137
129
|
/**
|
|
138
|
-
* Attach
|
|
139
|
-
*
|
|
140
|
-
*
|
|
130
|
+
* Attach an existing component instance to this entity and store that exact
|
|
131
|
+
* object. If a component of the same registered class already exists, it is
|
|
132
|
+
* replaced rather than assigned into.
|
|
141
133
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
134
|
+
* `attach` uses the instance constructor to resolve component metadata, so
|
|
135
|
+
* the constructor must already be registered in this world. The operation
|
|
136
|
+
* fires hooks and query updates like a `set` operation.
|
|
144
137
|
*
|
|
145
|
-
* @param
|
|
146
|
-
* @param props - Properties to assign onto the component instance.
|
|
138
|
+
* @param component - Existing component instance to store on the entity.
|
|
147
139
|
* @returns This entity, for chaining.
|
|
148
140
|
*/
|
|
149
|
-
|
|
141
|
+
attach(component: Component): Entity;
|
|
150
142
|
/**
|
|
151
|
-
*
|
|
143
|
+
* Destroy this entity and recursively destroy its children.
|
|
152
144
|
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
145
|
+
* Each component fires its `onRemove` hook, the `"destroy"` event is emitted
|
|
146
|
+
* just before teardown, and the entity is unregistered from the world.
|
|
147
|
+
* After destruction the entity must not be used.
|
|
148
|
+
*/
|
|
149
|
+
destroy(): void;
|
|
150
|
+
/**
|
|
151
|
+
* Look up a component on this entity.
|
|
152
|
+
*
|
|
153
|
+
* @param typeOrClass - Component class or numeric type id.
|
|
154
|
+
* @returns The component instance, or `undefined` when it is not attached.
|
|
155
|
+
*/
|
|
156
|
+
get<C extends ComponentClass>(typeOrClass: number | C): InstanceType<C> | undefined;
|
|
157
|
+
/**
|
|
158
|
+
* Mark a component type as having changed, queueing the corresponding `onSet` / `update`
|
|
159
|
+
* notifications.
|
|
160
|
+
*
|
|
161
|
+
* Repeated calls before the world routes the modified command are coalesced via
|
|
162
|
+
* the entity's dirty component bitset.
|
|
163
|
+
*
|
|
164
|
+
* @param typeOrClass - Component class or numeric type id whose data changed.
|
|
155
165
|
* @returns This entity, for chaining.
|
|
156
166
|
*/
|
|
157
|
-
|
|
167
|
+
modified(typeOrClass: ComponentClassOrType): Entity;
|
|
158
168
|
/**
|
|
159
169
|
* Detach a component from this entity.
|
|
160
170
|
*
|
|
@@ -172,20 +182,33 @@ export declare class Entity {
|
|
|
172
182
|
*/
|
|
173
183
|
remove(type: number): void;
|
|
174
184
|
/**
|
|
175
|
-
*
|
|
185
|
+
* Reparent this entity. In deferred mode the change is queued; outside
|
|
186
|
+
* deferred mode it executes inline.
|
|
176
187
|
*
|
|
177
|
-
* @param
|
|
178
|
-
* @returns The component instance, or `undefined` when it is not attached.
|
|
188
|
+
* @param newParent - New parent, or `undefined` to make this a root entity.
|
|
179
189
|
*/
|
|
180
|
-
|
|
190
|
+
setParent(newParent: Entity | undefined): void;
|
|
181
191
|
/**
|
|
182
|
-
*
|
|
192
|
+
* Attach a component (creating it if necessary), copy `props` onto the
|
|
193
|
+
* instance, and fire the `onSet` hook plus any `update` callbacks for the
|
|
194
|
+
* component type.
|
|
183
195
|
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
196
|
+
* In deferred mode `props` are not applied until the queued `Set` command is
|
|
197
|
+
* routed.
|
|
198
|
+
*
|
|
199
|
+
* @param Class - Component class to instantiate.
|
|
200
|
+
* @param props - Properties to assign onto the component instance.
|
|
201
|
+
* @returns This entity, for chaining.
|
|
187
202
|
*/
|
|
188
|
-
|
|
203
|
+
set<C extends ComponentClass>(Class: C, props: Partial<InstanceType<C>>): Entity;
|
|
204
|
+
/**
|
|
205
|
+
* Attach a component by numeric type id and copy `props` onto it.
|
|
206
|
+
*
|
|
207
|
+
* @param type - Numeric component type id.
|
|
208
|
+
* @param props - Properties to assign onto the component instance.
|
|
209
|
+
* @returns This entity, for chaining.
|
|
210
|
+
*/
|
|
211
|
+
set(type: number, props: Partial<Component>): Entity;
|
|
189
212
|
/** Returns `"EntityN"` where N is the entity id. */
|
|
190
213
|
toString(): string;
|
|
191
214
|
}
|
package/dist/entity.js
CHANGED
|
@@ -14,18 +14,20 @@ import { Bitset } from "./util/bitset.js";
|
|
|
14
14
|
* e.set(Position, { x: 100 });
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
|
-
* Entities support a parent
|
|
17
|
+
* Entities support a parent-child hierarchy. `parent` and `children` form a
|
|
18
18
|
* bidirectional link maintained by {@link setParent}; the children set is
|
|
19
19
|
* created lazily. Destroying a parent recursively destroys its children.
|
|
20
20
|
*
|
|
21
21
|
* ## Deferred semantics
|
|
22
22
|
*
|
|
23
23
|
* Inside a system body or `forEach` iteration the world is in **deferred
|
|
24
|
-
* mode**: `add` / `set` / `modified` / `remove` / `destroy` /
|
|
25
|
-
* enqueue commands. The data layer (the components map and
|
|
26
|
-
* is mutated when the world drains its queue. Concretely,
|
|
24
|
+
* mode**: `add` / `attach` / `set` / `modified` / `remove` / `destroy` /
|
|
25
|
+
* `setParent` only enqueue commands. The data layer (the components map and
|
|
26
|
+
* `componentBitmask`) is mutated when the world drains its queue. Concretely,
|
|
27
|
+
* while deferred:
|
|
27
28
|
*
|
|
28
29
|
* - `entity.get(C)` returns `undefined` after `entity.add(C)` (no instance yet).
|
|
30
|
+
* - `entity.get(C)` returns `undefined` after `entity.attach(instance)` if C was absent.
|
|
29
31
|
* - `entity.get(C)` returns the previous value after `entity.set(C, props)`.
|
|
30
32
|
* - `entity.get(C)` still returns the component after `entity.remove(C)`.
|
|
31
33
|
*
|
|
@@ -59,6 +61,14 @@ export class Entity {
|
|
|
59
61
|
/** @internal Set to `true` after the world has fully torn down this entity. */
|
|
60
62
|
this._destroyed = false;
|
|
61
63
|
}
|
|
64
|
+
/** Fire every `onAdd` hook registered for `meta`. */
|
|
65
|
+
_runOnAddHandlers(meta, component) {
|
|
66
|
+
meta._onAddHandlers?.forEach((handler) => handler(this, component));
|
|
67
|
+
}
|
|
68
|
+
/** Fire every `onSet` hook registered for `meta`. */
|
|
69
|
+
_runOnSetHandlers(meta, component) {
|
|
70
|
+
meta._onSetHandlers?.forEach((handler) => handler(this, component));
|
|
71
|
+
}
|
|
62
72
|
/**
|
|
63
73
|
* Re-evaluate every world query for this entity, firing `_enter` / `_exit`
|
|
64
74
|
* routing whenever membership flipped.
|
|
@@ -66,20 +76,14 @@ export class Entity {
|
|
|
66
76
|
_updateQueries() {
|
|
67
77
|
this.world.queries.forEach((q) => {
|
|
68
78
|
const belongs = q.belongs(this);
|
|
69
|
-
const isIn = this.
|
|
79
|
+
const isIn = this._queries.has(q);
|
|
70
80
|
if (belongs !== isIn) {
|
|
71
81
|
belongs ? q._enter(this) : q._exit(this);
|
|
72
82
|
}
|
|
73
83
|
});
|
|
74
84
|
}
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
* entity, fire the `onAdd` hook, and route query updates.
|
|
78
|
-
*
|
|
79
|
-
* If the component type belongs to an exclusivity group, any conflicting
|
|
80
|
-
* component already on this entity is removed first.
|
|
81
|
-
*/
|
|
82
|
-
_new(meta, props) {
|
|
85
|
+
/** Store a component instance and perform the shared add-side bookkeeping. */
|
|
86
|
+
_storeComponent(meta, component, isAdd) {
|
|
83
87
|
if (meta._exclusive) {
|
|
84
88
|
for (const exclusiveMeta of meta._exclusive) {
|
|
85
89
|
if (this._components.has(exclusiveMeta.type)) {
|
|
@@ -87,124 +91,55 @@ export class Entity {
|
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
}
|
|
90
|
-
|
|
91
|
-
if (props !== undefined) {
|
|
92
|
-
Object.assign(c, props);
|
|
93
|
-
}
|
|
94
|
-
this._components.set(meta.type, c);
|
|
94
|
+
this._components.set(meta.type, component);
|
|
95
95
|
this.componentBitmask.addBit(meta.bitPtr);
|
|
96
|
-
if (
|
|
97
|
-
|
|
96
|
+
if (isAdd) {
|
|
97
|
+
this._runOnAddHandlers(meta, component);
|
|
98
98
|
}
|
|
99
99
|
this._updateQueries();
|
|
100
|
-
return c;
|
|
101
100
|
}
|
|
102
|
-
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* @internal Look up a component instance by numeric type id.
|
|
110
|
-
*
|
|
111
|
-
* Faster than {@link get} because no class → type id resolution is needed.
|
|
112
|
-
*/
|
|
113
|
-
_get(type) {
|
|
114
|
-
return this._components.get(type);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @internal Reparent this entity in place, maintaining the bidirectional
|
|
118
|
-
* link. Throws if `newParent` is a descendant of this entity.
|
|
119
|
-
*
|
|
120
|
-
* Called by the world either inline (outside deferred mode) or while
|
|
121
|
-
* routing a queued `SetParent` command.
|
|
122
|
-
*/
|
|
123
|
-
_setParent(newParent) {
|
|
124
|
-
if (this._destroyed) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
if (newParent !== undefined) {
|
|
128
|
-
let ancestor = newParent;
|
|
129
|
-
while (ancestor !== undefined) {
|
|
130
|
-
if (ancestor === this) {
|
|
131
|
-
throw new Error(`Circular parent reference: entity ${this.eid} is already an ancestor of entity ${newParent.eid}`);
|
|
132
|
-
}
|
|
133
|
-
ancestor = ancestor._parent;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (this._parent) {
|
|
137
|
-
this._parent._children?.delete(this);
|
|
138
|
-
}
|
|
139
|
-
this._parent = newParent;
|
|
140
|
-
if (newParent) {
|
|
141
|
-
(newParent._children ?? (newParent._children = new Set())).add(this);
|
|
101
|
+
/** Perform the shared set-side hook and query update routing. */
|
|
102
|
+
_notifyComponentSet(meta, component, isUpdate) {
|
|
103
|
+
this._runOnSetHandlers(meta, component);
|
|
104
|
+
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
105
|
+
if (isUpdate) {
|
|
106
|
+
this._queries.forEach((q) => q._notifyModified(this, meta, component));
|
|
142
107
|
}
|
|
143
108
|
}
|
|
144
109
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
110
|
+
* Construct a fresh component of `type`, apply `props`, store it on this
|
|
111
|
+
* entity, fire the `onAdd` hook, and route query updates.
|
|
112
|
+
*
|
|
113
|
+
* If the component type belongs to an exclusivity group, any conflicting
|
|
114
|
+
* component already on this entity is removed first.
|
|
148
115
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const existing = this._components.get(meta.type);
|
|
154
|
-
const c = existing ?? this._new(meta, props);
|
|
116
|
+
_new(meta, props) {
|
|
117
|
+
const c = new meta.Class();
|
|
155
118
|
if (props !== undefined) {
|
|
156
|
-
|
|
157
|
-
Object.assign(c, props);
|
|
158
|
-
}
|
|
159
|
-
const setHandlers = meta._onSetHandlers;
|
|
160
|
-
if (setHandlers) {
|
|
161
|
-
setHandlers.forEach((handler) => handler(this, c));
|
|
162
|
-
}
|
|
163
|
-
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
164
|
-
if (existing) {
|
|
165
|
-
this._queries.forEach((q) => q._notifyModified(this, meta, c));
|
|
166
|
-
}
|
|
119
|
+
Object.assign(c, props);
|
|
167
120
|
}
|
|
121
|
+
this._storeComponent(meta, c, true);
|
|
122
|
+
return c;
|
|
168
123
|
}
|
|
169
124
|
/**
|
|
170
|
-
* @internal
|
|
171
|
-
*
|
|
125
|
+
* @internal Record that this entity is now tracked by `q`. Called by
|
|
126
|
+
* `Query._enter`.
|
|
172
127
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
const c = this._components.get(meta.type);
|
|
178
|
-
if (!c) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
const setHandlers = meta._onSetHandlers;
|
|
182
|
-
if (setHandlers) {
|
|
183
|
-
setHandlers.forEach((handler) => handler(this, c));
|
|
184
|
-
}
|
|
185
|
-
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
186
|
-
this._queries.forEach((q) => q._notifyModified(this, meta, c));
|
|
128
|
+
_addQueryMembership(q) {
|
|
129
|
+
this._queries.add(q);
|
|
187
130
|
}
|
|
188
131
|
/**
|
|
189
|
-
* @internal Apply
|
|
190
|
-
*
|
|
132
|
+
* @internal Apply an `Attach` command: store the provided component instance,
|
|
133
|
+
* replacing any previous instance for this type. Events are fired as if the
|
|
134
|
+
* caller had performed a `set` operation.
|
|
191
135
|
*/
|
|
192
|
-
|
|
136
|
+
_attach(meta, component) {
|
|
193
137
|
if (this._destroyed) {
|
|
194
138
|
return;
|
|
195
139
|
}
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
201
|
-
this.componentBitmask.deleteBit(meta.bitPtr);
|
|
202
|
-
this._updateQueries();
|
|
203
|
-
this._components.delete(meta.type);
|
|
204
|
-
const removeHandlers = meta._onRemoveHandlers;
|
|
205
|
-
if (removeHandlers) {
|
|
206
|
-
removeHandlers.forEach((handler) => handler(this, c));
|
|
207
|
-
}
|
|
140
|
+
const existing = this._components.get(meta.type);
|
|
141
|
+
this._storeComponent(meta, component, existing === undefined);
|
|
142
|
+
this._notifyComponentSet(meta, component, existing !== undefined);
|
|
208
143
|
}
|
|
209
144
|
/**
|
|
210
145
|
* @internal Apply a `Destroy` command: fire `_exit` on every query, then
|
|
@@ -241,6 +176,34 @@ export class Entity {
|
|
|
241
176
|
this._parent = undefined;
|
|
242
177
|
}
|
|
243
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* @internal Look up a component instance by numeric type id.
|
|
181
|
+
*
|
|
182
|
+
* Faster than {@link get} because no class to type id resolution is needed.
|
|
183
|
+
*/
|
|
184
|
+
_get(type) {
|
|
185
|
+
return this._components.get(type);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @internal Return `true` when this entity is currently tracked by `q`.
|
|
189
|
+
*/
|
|
190
|
+
_isInQuery(q) {
|
|
191
|
+
return this._queries.has(q);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* @internal Apply a `Modified` command: fire `onSet` and route modified
|
|
195
|
+
* events to every query that watches the component type.
|
|
196
|
+
*/
|
|
197
|
+
_modified(meta) {
|
|
198
|
+
if (this._destroyed) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const c = this._components.get(meta.type);
|
|
202
|
+
if (!c) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
this._notifyComponentSet(meta, c, true);
|
|
206
|
+
}
|
|
244
207
|
/**
|
|
245
208
|
* @internal Forget query `q` without firing exit callbacks. Called by
|
|
246
209
|
* {@link World} when a {@link Query.destroy} sweeps every entity.
|
|
@@ -249,11 +212,25 @@ export class Entity {
|
|
|
249
212
|
this._queries.delete(q);
|
|
250
213
|
}
|
|
251
214
|
/**
|
|
252
|
-
* @internal
|
|
253
|
-
* `
|
|
215
|
+
* @internal Apply a `Remove` command: clear the type bit, route exits,
|
|
216
|
+
* detach the component, and fire `onRemove`.
|
|
254
217
|
*/
|
|
255
|
-
|
|
256
|
-
this.
|
|
218
|
+
_remove(meta) {
|
|
219
|
+
if (this._destroyed) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const c = this._components.get(meta.type);
|
|
223
|
+
if (!c) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
227
|
+
this.componentBitmask.deleteBit(meta.bitPtr);
|
|
228
|
+
this._updateQueries();
|
|
229
|
+
this._components.delete(meta.type);
|
|
230
|
+
const removeHandlers = meta._onRemoveHandlers;
|
|
231
|
+
if (removeHandlers) {
|
|
232
|
+
removeHandlers.forEach((handler) => handler(this, c));
|
|
233
|
+
}
|
|
257
234
|
}
|
|
258
235
|
/**
|
|
259
236
|
* @internal Record that this entity is no longer tracked by `q`. Called by
|
|
@@ -262,9 +239,51 @@ export class Entity {
|
|
|
262
239
|
_removeQueryMembership(q) {
|
|
263
240
|
this._queries.delete(q);
|
|
264
241
|
}
|
|
265
|
-
/**
|
|
266
|
-
|
|
267
|
-
|
|
242
|
+
/**
|
|
243
|
+
* @internal Apply a `Set` command: create the component if missing, assign
|
|
244
|
+
* `props` if provided, fire `onSet`, and route modified events to every
|
|
245
|
+
* query that watches the component type.
|
|
246
|
+
*/
|
|
247
|
+
_set(meta, props) {
|
|
248
|
+
if (this._destroyed) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const existing = this._components.get(meta.type);
|
|
252
|
+
const c = existing ?? this._new(meta, props);
|
|
253
|
+
if (props !== undefined) {
|
|
254
|
+
if (existing) {
|
|
255
|
+
Object.assign(c, props);
|
|
256
|
+
}
|
|
257
|
+
this._notifyComponentSet(meta, c, existing !== undefined);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* @internal Reparent this entity in place, maintaining the bidirectional
|
|
262
|
+
* link. Throws if `newParent` is a descendant of this entity.
|
|
263
|
+
*
|
|
264
|
+
* Called by the world either inline (outside deferred mode) or while
|
|
265
|
+
* routing a queued `SetParent` command.
|
|
266
|
+
*/
|
|
267
|
+
_setParent(newParent) {
|
|
268
|
+
if (this._destroyed) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (newParent !== undefined) {
|
|
272
|
+
let ancestor = newParent;
|
|
273
|
+
while (ancestor !== undefined) {
|
|
274
|
+
if (ancestor === this) {
|
|
275
|
+
throw new Error(`Circular parent reference: entity ${this.eid} is already an ancestor of entity ${newParent.eid}`);
|
|
276
|
+
}
|
|
277
|
+
ancestor = ancestor._parent;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (this._parent) {
|
|
281
|
+
this._parent._children?.delete(this);
|
|
282
|
+
}
|
|
283
|
+
this._parent = newParent;
|
|
284
|
+
if (newParent) {
|
|
285
|
+
(newParent._children ?? (newParent._children = new Set())).add(this);
|
|
286
|
+
}
|
|
268
287
|
}
|
|
269
288
|
/**
|
|
270
289
|
* Read-only view of direct child entities. The backing set is created lazily
|
|
@@ -273,6 +292,25 @@ export class Entity {
|
|
|
273
292
|
get children() {
|
|
274
293
|
return this._children ?? Entity._emptyChildren;
|
|
275
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Read-only view of all components currently attached to this entity, keyed
|
|
297
|
+
* by numeric component type id.
|
|
298
|
+
*
|
|
299
|
+
* The mutating methods (`set`, `delete`, `clear`) are not exposed. Use
|
|
300
|
+
* `entity.add`, `entity.attach`, `entity.set`, and `entity.remove` to change
|
|
301
|
+
* the component set.
|
|
302
|
+
*
|
|
303
|
+
* ```ts
|
|
304
|
+
* entity.components.forEach((c) => console.log(c.constructor.name));
|
|
305
|
+
* ```
|
|
306
|
+
*/
|
|
307
|
+
get components() {
|
|
308
|
+
return this._components;
|
|
309
|
+
}
|
|
310
|
+
/** `true` when no components are currently attached to this entity. */
|
|
311
|
+
get empty() {
|
|
312
|
+
return this._components.size == 0;
|
|
313
|
+
}
|
|
276
314
|
/**
|
|
277
315
|
* Typed event emitter for entity-level lifecycle events. Currently only the
|
|
278
316
|
* `"destroy"` event is emitted, just before the entity is fully torn down.
|
|
@@ -285,38 +323,72 @@ export class Entity {
|
|
|
285
323
|
}
|
|
286
324
|
return this._events;
|
|
287
325
|
}
|
|
288
|
-
/**
|
|
289
|
-
get
|
|
290
|
-
return this.
|
|
326
|
+
/** Parent entity in the scene hierarchy, or `undefined` for a root entity. */
|
|
327
|
+
get parent() {
|
|
328
|
+
return this._parent;
|
|
329
|
+
}
|
|
330
|
+
add(typeOrClass) {
|
|
331
|
+
const meta = this.world.getComponentMeta(typeOrClass);
|
|
332
|
+
if (this.world.deferred) {
|
|
333
|
+
this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, meta, props: undefined });
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
this._set(meta, undefined);
|
|
337
|
+
}
|
|
338
|
+
return this;
|
|
291
339
|
}
|
|
292
340
|
/**
|
|
293
|
-
*
|
|
294
|
-
*
|
|
341
|
+
* Attach an existing component instance to this entity and store that exact
|
|
342
|
+
* object. If a component of the same registered class already exists, it is
|
|
343
|
+
* replaced rather than assigned into.
|
|
295
344
|
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
* set.
|
|
345
|
+
* `attach` uses the instance constructor to resolve component metadata, so
|
|
346
|
+
* the constructor must already be registered in this world. The operation
|
|
347
|
+
* fires hooks and query updates like a `set` operation.
|
|
299
348
|
*
|
|
300
|
-
*
|
|
301
|
-
* entity
|
|
302
|
-
* ```
|
|
349
|
+
* @param component - Existing component instance to store on the entity.
|
|
350
|
+
* @returns This entity, for chaining.
|
|
303
351
|
*/
|
|
304
|
-
|
|
305
|
-
|
|
352
|
+
attach(component) {
|
|
353
|
+
const meta = this.world.getComponentMeta(component.constructor);
|
|
354
|
+
if (this.world.deferred) {
|
|
355
|
+
this.world._enqueue({ kind: 6 /* CommandKind.Attach */, entity: this, meta, component });
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
this._attach(meta, component);
|
|
359
|
+
}
|
|
360
|
+
return this;
|
|
306
361
|
}
|
|
307
362
|
/**
|
|
308
|
-
*
|
|
309
|
-
* deferred mode it executes inline.
|
|
363
|
+
* Destroy this entity and recursively destroy its children.
|
|
310
364
|
*
|
|
311
|
-
*
|
|
365
|
+
* Each component fires its `onRemove` hook, the `"destroy"` event is emitted
|
|
366
|
+
* just before teardown, and the entity is unregistered from the world.
|
|
367
|
+
* After destruction the entity must not be used.
|
|
312
368
|
*/
|
|
313
|
-
|
|
369
|
+
destroy() {
|
|
314
370
|
if (this.world.deferred) {
|
|
315
|
-
this.world._enqueue({ kind:
|
|
371
|
+
this.world._enqueue({ kind: 4 /* CommandKind.Destroy */, entity: this });
|
|
316
372
|
}
|
|
317
373
|
else {
|
|
318
|
-
this.
|
|
374
|
+
this._destroy();
|
|
319
375
|
}
|
|
376
|
+
if (this._children) {
|
|
377
|
+
this._children.forEach((child) => {
|
|
378
|
+
child.destroy();
|
|
379
|
+
});
|
|
380
|
+
this._children.clear();
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Look up a component on this entity.
|
|
385
|
+
*
|
|
386
|
+
* @param typeOrClass - Component class or numeric type id.
|
|
387
|
+
* @returns The component instance, or `undefined` when it is not attached.
|
|
388
|
+
*/
|
|
389
|
+
get(typeOrClass) {
|
|
390
|
+
const type = this.world.getComponentType(typeOrClass);
|
|
391
|
+
return this._get(type);
|
|
320
392
|
}
|
|
321
393
|
/**
|
|
322
394
|
* Mark a component type as having changed, queueing the corresponding `onSet` / `update`
|
|
@@ -342,26 +414,6 @@ export class Entity {
|
|
|
342
414
|
}
|
|
343
415
|
return this;
|
|
344
416
|
}
|
|
345
|
-
add(typeOrClass) {
|
|
346
|
-
const meta = this.world.getComponentMeta(typeOrClass);
|
|
347
|
-
if (this.world.deferred) {
|
|
348
|
-
this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, meta, props: undefined });
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
this._set(meta, undefined);
|
|
352
|
-
}
|
|
353
|
-
return this;
|
|
354
|
-
}
|
|
355
|
-
set(typeOrClass, props) {
|
|
356
|
-
const meta = this.world.getComponentMeta(typeOrClass);
|
|
357
|
-
if (this.world.deferred) {
|
|
358
|
-
this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, meta, props });
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
this._set(meta, props);
|
|
362
|
-
}
|
|
363
|
-
return this;
|
|
364
|
-
}
|
|
365
417
|
remove(typeOrClass) {
|
|
366
418
|
const meta = this.world.getComponentMeta(typeOrClass);
|
|
367
419
|
if (this.world.deferred) {
|
|
@@ -372,35 +424,28 @@ export class Entity {
|
|
|
372
424
|
}
|
|
373
425
|
}
|
|
374
426
|
/**
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
* @param typeOrClass - Component class or numeric type id.
|
|
378
|
-
* @returns The component instance, or `undefined` when it is not attached.
|
|
379
|
-
*/
|
|
380
|
-
get(typeOrClass) {
|
|
381
|
-
const type = this.world.getComponentType(typeOrClass);
|
|
382
|
-
return this._get(type);
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Destroy this entity and recursively destroy its children.
|
|
427
|
+
* Reparent this entity. In deferred mode the change is queued; outside
|
|
428
|
+
* deferred mode it executes inline.
|
|
386
429
|
*
|
|
387
|
-
*
|
|
388
|
-
* just before teardown, and the entity is unregistered from the world.
|
|
389
|
-
* After destruction the entity must not be used.
|
|
430
|
+
* @param newParent - New parent, or `undefined` to make this a root entity.
|
|
390
431
|
*/
|
|
391
|
-
|
|
432
|
+
setParent(newParent) {
|
|
392
433
|
if (this.world.deferred) {
|
|
393
|
-
this.world._enqueue({ kind:
|
|
434
|
+
this.world._enqueue({ kind: 5 /* CommandKind.SetParent */, entity: this, parent: newParent });
|
|
394
435
|
}
|
|
395
436
|
else {
|
|
396
|
-
this.
|
|
437
|
+
this._setParent(newParent);
|
|
397
438
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
this.
|
|
439
|
+
}
|
|
440
|
+
set(typeOrClass, props) {
|
|
441
|
+
const meta = this.world.getComponentMeta(typeOrClass);
|
|
442
|
+
if (this.world.deferred) {
|
|
443
|
+
this.world._enqueue({ kind: 1 /* CommandKind.Set */, entity: this, meta, props });
|
|
403
444
|
}
|
|
445
|
+
else {
|
|
446
|
+
this._set(meta, props);
|
|
447
|
+
}
|
|
448
|
+
return this;
|
|
404
449
|
}
|
|
405
450
|
/** Returns `"EntityN"` where N is the entity id. */
|
|
406
451
|
toString() {
|
package/dist/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAoB,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
package/dist/world.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ import { IPhase } from "./phase.js";
|
|
|
45
45
|
* ## Deferred mode
|
|
46
46
|
*
|
|
47
47
|
* The world can be in **deferred mode**, in which case entity mutations
|
|
48
|
-
* (`add` / `set` / `remove` / `destroy` / `setParent` / `modified`) are
|
|
48
|
+
* (`add` / `attach` / `set` / `remove` / `destroy` / `setParent` / `modified`) are
|
|
49
49
|
* queued instead of applied inline. Systems run inside an automatically
|
|
50
50
|
* deferred scope; user code can wrap arbitrary blocks with
|
|
51
51
|
* {@link beginDefer} / {@link endDefer} or {@link defer}. {@link flush}
|
package/dist/world.js
CHANGED
|
@@ -52,7 +52,7 @@ const LOCAL_COMPONENT_MIN = 256;
|
|
|
52
52
|
* ## Deferred mode
|
|
53
53
|
*
|
|
54
54
|
* The world can be in **deferred mode**, in which case entity mutations
|
|
55
|
-
* (`add` / `set` / `remove` / `destroy` / `setParent` / `modified`) are
|
|
55
|
+
* (`add` / `attach` / `set` / `remove` / `destroy` / `setParent` / `modified`) are
|
|
56
56
|
* queued instead of applied inline. Systems run inside an automatically
|
|
57
57
|
* deferred scope; user code can wrap arbitrary blocks with
|
|
58
58
|
* {@link beginDefer} / {@link endDefer} or {@link defer}. {@link flush}
|
|
@@ -139,6 +139,9 @@ export class World {
|
|
|
139
139
|
case 5 /* CommandKind.SetParent */:
|
|
140
140
|
cmd.entity._setParent(cmd.parent);
|
|
141
141
|
return;
|
|
142
|
+
case 6 /* CommandKind.Attach */:
|
|
143
|
+
cmd.entity._attach(cmd.meta, cmd.component);
|
|
144
|
+
return;
|
|
142
145
|
}
|
|
143
146
|
}
|
|
144
147
|
/**
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|