@vworlds/vecs 1.0.44 → 1.0.46
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 +7 -1
- package/dist/component.d.ts +57 -51
- package/dist/component.js +25 -9
- package/dist/component.js.map +1 -1
- package/dist/component_meta.d.ts +71 -66
- package/dist/component_meta.js +331 -34
- package/dist/component_meta.js.map +1 -1
- package/dist/dsl.js +1 -1
- package/dist/dsl.js.map +1 -1
- package/dist/entity/entity.base.js +4 -0
- package/dist/entity/entity.base.js.map +1 -1
- package/dist/entity/entity.components.d.ts +39 -27
- package/dist/entity/entity.components.js +258 -74
- package/dist/entity/entity.components.js.map +1 -1
- package/dist/entity/entity.d.ts +1 -2
- package/dist/entity/entity.js +2 -3
- package/dist/entity/entity.js.map +1 -1
- package/dist/entity/entity.lifecycle.d.ts +7 -1
- package/dist/entity/entity.lifecycle.js +40 -53
- package/dist/entity/entity.lifecycle.js.map +1 -1
- package/dist/entity/entity.queries.js +30 -0
- package/dist/entity/entity.queries.js.map +1 -1
- package/dist/entity/entity.relationships.d.ts +4 -0
- package/dist/entity/entity.relationships.js +18 -10
- package/dist/entity/entity.relationships.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/inject.d.ts +63 -14
- package/dist/inject.js +165 -89
- package/dist/inject.js.map +1 -1
- package/dist/modules/identity.js +2 -2
- package/dist/modules/identity.js.map +1 -1
- package/dist/modules/implements.js +2 -2
- package/dist/modules/implements.js.map +1 -1
- package/dist/modules/pipeline.js +5 -5
- package/dist/modules/pipeline.js.map +1 -1
- package/dist/modules/relationship_types.d.ts +70 -3
- package/dist/modules/relationship_types.js +70 -3
- package/dist/modules/relationship_types.js.map +1 -1
- package/dist/modules/relationships.d.ts +31 -8
- package/dist/modules/relationships.js +120 -30
- package/dist/modules/relationships.js.map +1 -1
- package/dist/modules/singleton.js +2 -2
- package/dist/modules/singleton.js.map +1 -1
- package/dist/modules/snapshot.d.ts +26 -0
- package/dist/modules/snapshot.js +45 -0
- package/dist/modules/snapshot.js.map +1 -0
- package/dist/modules/snapshot_types.d.ts +85 -0
- package/dist/modules/snapshot_types.js +130 -0
- package/dist/modules/snapshot_types.js.map +1 -0
- package/dist/package.json +2 -2
- package/dist/query/callbacks.d.ts +9 -7
- package/dist/query/callbacks.js +27 -41
- package/dist/query/callbacks.js.map +1 -1
- package/dist/query/grouped_query.js +7 -7
- package/dist/query/grouped_query.js.map +1 -1
- package/dist/query/grouping.d.ts +6 -2
- package/dist/query/grouping.js +84 -15
- package/dist/query/grouping.js.map +1 -1
- package/dist/query/query.d.ts +4 -4
- package/dist/query/query.js +37 -14
- package/dist/query/query.js.map +1 -1
- package/dist/snapshot/capture.d.ts +1 -0
- package/dist/snapshot/capture.js +212 -0
- package/dist/snapshot/capture.js.map +1 -0
- package/dist/snapshot/clone.d.ts +1 -0
- package/dist/snapshot/clone.js +107 -0
- package/dist/snapshot/clone.js.map +1 -0
- package/dist/snapshot/index.d.ts +5 -0
- package/dist/snapshot/index.js +21 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/snapshot/preflight.d.ts +1 -0
- package/dist/snapshot/preflight.js +40 -0
- package/dist/snapshot/preflight.js.map +1 -0
- package/dist/snapshot/restore.d.ts +1 -0
- package/dist/snapshot/restore.js +111 -0
- package/dist/snapshot/restore.js.map +1 -0
- package/dist/snapshot/types.d.ts +135 -0
- package/dist/snapshot/types.js +26 -0
- package/dist/snapshot/types.js.map +1 -0
- package/dist/system.d.ts +3 -1
- package/dist/system.js +33 -23
- package/dist/system.js.map +1 -1
- package/dist/terms/all_term.js +19 -0
- package/dist/terms/all_term.js.map +1 -1
- package/dist/terms/any_term.js +19 -0
- package/dist/terms/any_term.js.map +1 -1
- package/dist/terms/not_term.js +4 -0
- package/dist/terms/not_term.js.map +1 -1
- package/dist/terms/target_term.d.ts +1 -2
- package/dist/terms/target_term.js +2 -4
- package/dist/terms/target_term.js.map +1 -1
- package/dist/terms/term.d.ts +2 -0
- package/dist/terms/term.js +59 -10
- package/dist/terms/term.js.map +1 -1
- package/dist/util/array_map.d.ts +43 -12
- package/dist/util/array_map.js +90 -41
- package/dist/util/array_map.js.map +1 -1
- package/dist/util/dense_set.js +26 -0
- package/dist/util/dense_set.js.map +1 -1
- package/dist/world/world.base.js +12 -0
- package/dist/world/world.base.js.map +1 -1
- package/dist/world/world.d.ts +7 -0
- package/dist/world/world.deferred.js +17 -0
- package/dist/world/world.deferred.js.map +1 -1
- package/dist/world/world.entities.d.ts +13 -2
- package/dist/world/world.entities.js +16 -2
- package/dist/world/world.entities.js.map +1 -1
- package/dist/world/world.js +15 -3
- package/dist/world/world.js.map +1 -1
- package/dist/world/world.pipeline.d.ts +2 -2
- package/dist/world/world.pipeline.js +4 -2
- package/dist/world/world.pipeline.js.map +1 -1
- package/dist/world/world.queries.d.ts +7 -0
- package/dist/world/world.queries.js +52 -0
- package/dist/world/world.queries.js.map +1 -1
- package/dist/world/world.transfers.d.ts +137 -0
- package/dist/world/world.transfers.js +188 -0
- package/dist/world/world.transfers.js.map +1 -0
- package/docs/README.md +18 -6
- package/docs/components.md +91 -48
- package/docs/concepts.md +21 -17
- package/docs/design-guide.md +125 -89
- package/docs/entities.md +62 -72
- package/docs/execution-model.md +26 -10
- package/docs/getting-started.md +6 -6
- package/docs/glossary.md +19 -10
- package/docs/modules.md +8 -8
- package/docs/queries-and-filters.md +15 -10
- package/docs/relationships.md +250 -115
- package/docs/snapshots.md +181 -0
- package/docs/systems.md +64 -21
- package/docs/utilities.md +10 -6
- package/package.json +2 -2
- package/skills/vecs/SKILL.md +5 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ComponentClass, type ComponentInstance, type ComponentRef, type ComponentType, type
|
|
1
|
+
import { type ComponentClass, type ComponentInstance, type ComponentRef, type ComponentType, type HookEvent, type HookEventMap } from "../component_meta.js";
|
|
2
2
|
import { Relationship } from "../component_meta.js";
|
|
3
3
|
import { Relationships } from "./entity.relationships.js";
|
|
4
4
|
import type { EID, Entity } from "./entity.js";
|
|
@@ -9,18 +9,28 @@ export declare class Components extends Relationships {
|
|
|
9
9
|
* Idempotent. Does not fire `onSet` -- use {@link set} when you want to apply
|
|
10
10
|
* data and notify watchers.
|
|
11
11
|
*
|
|
12
|
+
* Relationship components require an explicit `target`. The target is
|
|
13
|
+
* resolved eagerly via {@link World.entity}: any {@link ComponentRef} that
|
|
14
|
+
* resolves to an existing entity is accepted, but a ref that does not yet
|
|
15
|
+
* resolve throws. Non-relationship components ignore `target` and throw when
|
|
16
|
+
* one is supplied.
|
|
17
|
+
*
|
|
12
18
|
* @param Class - Component class to instantiate.
|
|
19
|
+
* @param target - Relationship target. Any {@link ComponentRef} that resolves
|
|
20
|
+
* to an existing entity; required for {@link Relationship} components.
|
|
13
21
|
* @returns This entity, for chaining.
|
|
14
22
|
*/
|
|
15
|
-
add<C extends ComponentClass>(Class: C): this;
|
|
23
|
+
add<C extends ComponentClass>(Class: C, ...target: InstanceType<C> extends Relationship ? [target: ComponentRef] : []): this;
|
|
16
24
|
/**
|
|
17
25
|
* Attach a component by numeric type id.
|
|
18
26
|
*
|
|
19
27
|
* @param type - Numeric component type id.
|
|
28
|
+
* @param target - Relationship target; any {@link ComponentRef} that resolves
|
|
29
|
+
* to an existing entity. Ignored for non-relationship components.
|
|
20
30
|
* @returns This entity, for chaining.
|
|
21
31
|
*/
|
|
22
|
-
add(ceid: EID): this;
|
|
23
|
-
add(entity: Entity): this;
|
|
32
|
+
add(ceid: EID, target?: ComponentRef): this;
|
|
33
|
+
add(entity: Entity, target?: ComponentRef): this;
|
|
24
34
|
/**
|
|
25
35
|
* Attach an existing component instance to this entity and store that exact
|
|
26
36
|
* object. If a component of the same registered class already exists, it is
|
|
@@ -91,17 +101,6 @@ export declare class Components extends Relationships {
|
|
|
91
101
|
ensure(ceid: EID, callback: (component: ComponentInstance) => void): Readonly<ComponentInstance>;
|
|
92
102
|
ensure(entity: Entity): ComponentInstance;
|
|
93
103
|
ensure(entity: Entity, callback: (component: ComponentInstance) => void): Readonly<ComponentInstance>;
|
|
94
|
-
/**
|
|
95
|
-
* Return the target of relationship `Class`, creating and targeting a new
|
|
96
|
-
* independent entity when the relationship is absent.
|
|
97
|
-
*
|
|
98
|
-
* The relationship class must already be registered in this world. Repeated
|
|
99
|
-
* calls during deferred execution return the same pending target.
|
|
100
|
-
*
|
|
101
|
-
* @param Class - Registered relationship component class.
|
|
102
|
-
* @returns The existing or newly created relationship target.
|
|
103
|
-
*/
|
|
104
|
-
ensureTarget(this: Entity, Class: ComponentType<Relationship>): Entity;
|
|
105
104
|
/**
|
|
106
105
|
* Mark a component type as having changed, queueing the corresponding `onSet` / `update`
|
|
107
106
|
* notifications.
|
|
@@ -112,7 +111,7 @@ export declare class Components extends Relationships {
|
|
|
112
111
|
* @param typeOrClass - Component class or numeric type id whose data changed.
|
|
113
112
|
* @returns This entity, for chaining.
|
|
114
113
|
*/
|
|
115
|
-
modified(ref: ComponentRef): this;
|
|
114
|
+
modified(this: Entity, ref: ComponentRef): this;
|
|
116
115
|
/**
|
|
117
116
|
* Detach a component from this entity.
|
|
118
117
|
*
|
|
@@ -120,16 +119,26 @@ export declare class Components extends Relationships {
|
|
|
120
119
|
* component until the queue drains. When applied, queries fire `exit`
|
|
121
120
|
* callbacks first and the `onRemove` hook fires last.
|
|
122
121
|
*
|
|
122
|
+
* Relationship components take an explicit `target` to remove one edge. The
|
|
123
|
+
* target is resolved eagerly via {@link World.entity}: any
|
|
124
|
+
* {@link ComponentRef} that resolves to an existing entity is accepted, but
|
|
125
|
+
* a ref that does not yet resolve throws. Omit `target` to remove every edge
|
|
126
|
+
* of the relationship.
|
|
127
|
+
*
|
|
123
128
|
* @param Class - Component class to detach.
|
|
129
|
+
* @param target - Relationship target; any {@link ComponentRef} that resolves
|
|
130
|
+
* to an existing entity. Ignored for non-relationship components.
|
|
124
131
|
*/
|
|
125
|
-
remove<C extends ComponentType>(Class: C): void;
|
|
132
|
+
remove<C extends ComponentType>(Class: C, ...target: InstanceType<C> extends Relationship ? [target?: ComponentRef] : []): void;
|
|
126
133
|
/**
|
|
127
134
|
* Detach a component by numeric type id.
|
|
128
135
|
*
|
|
129
136
|
* @param type - Numeric component type id.
|
|
137
|
+
* @param target - Relationship target; any {@link ComponentRef} that resolves
|
|
138
|
+
* to an existing entity. Ignored for non-relationship components.
|
|
130
139
|
*/
|
|
131
|
-
remove(ceid: EID): void;
|
|
132
|
-
remove(entity: Entity): void;
|
|
140
|
+
remove(ceid: EID, target?: ComponentRef): void;
|
|
141
|
+
remove(entity: Entity, target?: ComponentRef): void;
|
|
133
142
|
/**
|
|
134
143
|
* Attach a component (creating it if necessary), copy `props` onto the
|
|
135
144
|
* instance, and fire the `onSet` hook plus any `update` callbacks for the
|
|
@@ -152,15 +161,18 @@ export declare class Components extends Relationships {
|
|
|
152
161
|
*/
|
|
153
162
|
set(ceid: EID, props: Partial<ComponentInstance>): this;
|
|
154
163
|
set(entity: Entity, props: Partial<ComponentInstance>): this;
|
|
164
|
+
/** Assign relationship data while ignoring all target-storage spellings. */
|
|
165
|
+
private _assignRelationshipProps;
|
|
155
166
|
private _throwIfInterface;
|
|
156
|
-
|
|
157
|
-
|
|
167
|
+
private _assertTargetWorld;
|
|
168
|
+
private _emitTargetAdd;
|
|
169
|
+
private _emitTargetRemove;
|
|
158
170
|
/**
|
|
159
|
-
* Register a handler
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* @returns This entity, for chaining.
|
|
171
|
+
* Register a handler for a hook event on this entity's component meta.
|
|
172
|
+
* See {@link ComponentMeta.on} for the event list and semantics. Returns this
|
|
173
|
+
* entity for chaining.
|
|
163
174
|
*/
|
|
164
|
-
|
|
165
|
-
|
|
175
|
+
on<E extends HookEvent>(event: E, handler: HookEventMap[E], insert?: boolean): this;
|
|
176
|
+
/** Remove a previously-registered handler by reference. See {@link ComponentMeta.off}. */
|
|
177
|
+
off<E extends HookEvent>(event: E, handler: HookEventMap[E]): this;
|
|
166
178
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { _slotHandlers, } from "../component_meta.js";
|
|
1
2
|
import { Relationships } from "./entity.relationships.js";
|
|
2
3
|
export class Components extends Relationships {
|
|
3
4
|
/**
|
|
@@ -6,19 +7,23 @@ export class Components extends Relationships {
|
|
|
6
7
|
* caller had performed a `set` operation.
|
|
7
8
|
*/
|
|
8
9
|
_attach(meta, component) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
meta._pendingEnsures.delete(entity);
|
|
10
|
+
if (meta._pendingEnsures?.get(this) === component) {
|
|
11
|
+
meta._pendingEnsures.delete(this);
|
|
12
12
|
}
|
|
13
13
|
if (this._destroyed) {
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
+
if (meta.isRelationship) {
|
|
17
|
+
throw new Error("Entity.attach cannot attach Relationship components; add explicit targets");
|
|
18
|
+
}
|
|
16
19
|
const existing = this._components.get(meta.eid);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
if (existing !== undefined && existing !== component) {
|
|
21
|
+
meta._onPolicyRemove?.(this, existing);
|
|
22
|
+
}
|
|
20
23
|
this._storeComponent(meta, component, existing === undefined);
|
|
21
|
-
|
|
24
|
+
if (existing !== undefined && existing !== component) {
|
|
25
|
+
meta._onPolicyAdd?.(this, component);
|
|
26
|
+
}
|
|
22
27
|
this._notifyComponentSet(meta, component, existing !== undefined);
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
@@ -67,18 +72,17 @@ export class Components extends Relationships {
|
|
|
67
72
|
/** @internal Apply one remove without expanding interface aliases. */
|
|
68
73
|
_removeRaw(meta, c) {
|
|
69
74
|
if (meta.isRelationship) {
|
|
70
|
-
this.
|
|
75
|
+
this._detachRelationship(meta, c);
|
|
76
|
+
return;
|
|
71
77
|
}
|
|
72
78
|
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
73
79
|
this.componentBitmask.deleteBit(meta.bitPtr);
|
|
74
80
|
this.world._notifyComponentRemoved(meta.eid, this);
|
|
75
81
|
this._components.delete(meta.eid);
|
|
76
82
|
this.world._notifyComponentChanged(meta.eid, this);
|
|
77
|
-
meta.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
removeHandlers.forEach((handler) => handler(this, c));
|
|
81
|
-
}
|
|
83
|
+
meta._detachCarrier(this);
|
|
84
|
+
meta._onPolicyRemove?.(this, c);
|
|
85
|
+
meta._onRemove?.(this, c);
|
|
82
86
|
}
|
|
83
87
|
/**
|
|
84
88
|
* @internal Apply a `Set` command: create the component if missing, assign
|
|
@@ -89,23 +93,49 @@ export class Components extends Relationships {
|
|
|
89
93
|
if (this._destroyed) {
|
|
90
94
|
return;
|
|
91
95
|
}
|
|
96
|
+
if (meta.isRelationship) {
|
|
97
|
+
const relationship = this._components.get(meta.eid);
|
|
98
|
+
if (!relationship || props === undefined) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (this._assignRelationshipProps(relationship, props)) {
|
|
102
|
+
this._notifyComponentSet(meta, relationship, true);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
92
106
|
const existing = this._components.get(meta.eid);
|
|
93
|
-
const
|
|
94
|
-
? existing?.target
|
|
95
|
-
: undefined;
|
|
96
|
-
const c = existing ?? this._new(meta, props);
|
|
107
|
+
const c = existing ?? this._materialize(meta, props);
|
|
97
108
|
if (props !== undefined) {
|
|
98
109
|
if (existing) {
|
|
99
110
|
Object.assign(c, props);
|
|
100
111
|
}
|
|
101
|
-
const newTarget = c.target;
|
|
102
|
-
this._updateIncoming(meta, oldTarget, newTarget);
|
|
103
112
|
this._notifyComponentSet(meta, c, existing !== undefined);
|
|
104
113
|
}
|
|
105
114
|
}
|
|
106
|
-
add(ref) {
|
|
115
|
+
add(ref, target) {
|
|
107
116
|
const componentMeta = this.world.entity(ref).meta;
|
|
108
117
|
this._throwIfInterface(componentMeta, "add");
|
|
118
|
+
if (componentMeta.isRelationship) {
|
|
119
|
+
if (target === undefined) {
|
|
120
|
+
throw new Error("Entity.add requires a target for Relationship components");
|
|
121
|
+
}
|
|
122
|
+
const targetEntity = this.world.entity(target);
|
|
123
|
+
if (this.world.deferred) {
|
|
124
|
+
this.world._enqueue({
|
|
125
|
+
kind: 6 /* CommandKind.AddTarget */,
|
|
126
|
+
entity: this,
|
|
127
|
+
meta: componentMeta,
|
|
128
|
+
target: targetEntity,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this._addTarget(componentMeta, targetEntity);
|
|
133
|
+
}
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
if (target !== undefined) {
|
|
137
|
+
throw new Error("Entity.add target argument requires a Relationship component");
|
|
138
|
+
}
|
|
109
139
|
if (this.world.deferred) {
|
|
110
140
|
this.world._enqueue({
|
|
111
141
|
kind: 1 /* CommandKind.Set */,
|
|
@@ -124,6 +154,9 @@ export class Components extends Relationships {
|
|
|
124
154
|
const instance = component ?? classOrComponent;
|
|
125
155
|
const componentMeta = this.world.entity(ComponentKey).meta;
|
|
126
156
|
this._throwIfInterface(componentMeta, "attach");
|
|
157
|
+
if (componentMeta.isRelationship) {
|
|
158
|
+
throw new Error("Entity.attach cannot attach Relationship components; add explicit targets");
|
|
159
|
+
}
|
|
127
160
|
this._attach_or_enqueue(componentMeta, instance);
|
|
128
161
|
return this;
|
|
129
162
|
}
|
|
@@ -177,33 +210,6 @@ export class Components extends Relationships {
|
|
|
177
210
|
}
|
|
178
211
|
return this._ensureMissingInstance(componentMeta, callback);
|
|
179
212
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Return the target of relationship `Class`, creating and targeting a new
|
|
182
|
-
* independent entity when the relationship is absent.
|
|
183
|
-
*
|
|
184
|
-
* The relationship class must already be registered in this world. Repeated
|
|
185
|
-
* calls during deferred execution return the same pending target.
|
|
186
|
-
*
|
|
187
|
-
* @param Class - Registered relationship component class.
|
|
188
|
-
* @returns The existing or newly created relationship target.
|
|
189
|
-
*/
|
|
190
|
-
ensureTarget(Class) {
|
|
191
|
-
if (this._destroyed) {
|
|
192
|
-
throw new Error(`Cannot ensure relationship target on destroyed entity ${this.eid}`);
|
|
193
|
-
}
|
|
194
|
-
const componentMeta = this.world.entity(Class).meta;
|
|
195
|
-
if (!componentMeta.isRelationship) {
|
|
196
|
-
throw new Error("Entity.ensureTarget requires a Relationship component");
|
|
197
|
-
}
|
|
198
|
-
const existing = this._get(componentMeta.eid);
|
|
199
|
-
if (existing) {
|
|
200
|
-
return existing.target;
|
|
201
|
-
}
|
|
202
|
-
const relationship = this._ensureMissingInstance(componentMeta, (component) => {
|
|
203
|
-
component.target = this.world.entity();
|
|
204
|
-
}, false);
|
|
205
|
-
return relationship.target;
|
|
206
|
-
}
|
|
207
213
|
/** @internal Return a pending instance, or create and attach one. The caller checked storage. */
|
|
208
214
|
_ensureMissingInstance(componentMeta, callback, initializePending = true) {
|
|
209
215
|
const pending = componentMeta._pendingEnsures?.get(this);
|
|
@@ -265,9 +271,27 @@ export class Components extends Relationships {
|
|
|
265
271
|
this._attach(meta, component);
|
|
266
272
|
}
|
|
267
273
|
}
|
|
268
|
-
remove(ref) {
|
|
274
|
+
remove(ref, target) {
|
|
269
275
|
const componentMeta = this.world.entity(ref).meta;
|
|
270
276
|
this._throwIfInterface(componentMeta, "remove");
|
|
277
|
+
if (target !== undefined) {
|
|
278
|
+
if (!componentMeta.isRelationship) {
|
|
279
|
+
throw new Error("Entity.remove target argument requires a Relationship component");
|
|
280
|
+
}
|
|
281
|
+
const targetEntity = this.world.entity(target);
|
|
282
|
+
if (this.world.deferred) {
|
|
283
|
+
this.world._enqueue({
|
|
284
|
+
kind: 7 /* CommandKind.RemoveTarget */,
|
|
285
|
+
entity: this,
|
|
286
|
+
meta: componentMeta,
|
|
287
|
+
target: targetEntity,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
this._removeTarget(componentMeta, targetEntity);
|
|
292
|
+
}
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
271
295
|
if (this.world.deferred) {
|
|
272
296
|
this.world._enqueue({
|
|
273
297
|
kind: 3 /* CommandKind.Remove */,
|
|
@@ -298,20 +322,113 @@ export class Components extends Relationships {
|
|
|
298
322
|
/**
|
|
299
323
|
* @internal
|
|
300
324
|
*
|
|
301
|
-
*
|
|
302
|
-
*
|
|
325
|
+
* The canonical component materializer: construct a destination-owned
|
|
326
|
+
* instance of `meta`'s class, assign `data` onto it, and store it on this
|
|
327
|
+
* entity. Every metadata semantic is applied exactly once, in this order:
|
|
328
|
+
* exclusivity eviction of conflicting components, interface-alias eviction
|
|
329
|
+
* and storage, the framework `policyAdd` hook, the public `add` hook, and
|
|
330
|
+
* query-entry notification.
|
|
303
331
|
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
332
|
+
* This is the single constructor-and-copy implementation in vecs. Ordinary
|
|
333
|
+
* {@link set} calls it, and so does the cross-world subtree restore
|
|
334
|
+
* (`lib/vecs/src/snapshot/restore.ts`), so a component that
|
|
335
|
+
* arrives in a destination world is indistinguishable from one created by
|
|
336
|
+
* `set` — same alias slots, same exclusivity outcome, same hooks, same
|
|
337
|
+
* notifications.
|
|
338
|
+
*
|
|
339
|
+
* @param meta - Metadata of the component type to materialize.
|
|
340
|
+
* @param data - The instance's own fields. Assignable onto a default-constructed
|
|
341
|
+
* instance, or handed to `construct` for a custom policy.
|
|
342
|
+
* @param construct - Optional factory that builds the instance from `data`,
|
|
343
|
+
* used by owner-declared snapshot policies whose type needs construction
|
|
344
|
+
* beyond `new Class()` plus field assignment. Omit it for the default.
|
|
345
|
+
* @returns The freshly materialized, destination-owned instance.
|
|
306
346
|
*/
|
|
307
|
-
|
|
347
|
+
_materialize(meta, data, construct) {
|
|
348
|
+
const c = construct ? construct(data) : this._constructFrom(meta, data);
|
|
349
|
+
this._storeComponent(meta, c, true);
|
|
350
|
+
return c;
|
|
351
|
+
}
|
|
352
|
+
/** @internal Default construction for {@link _materialize}: `new Class()` plus field assignment. */
|
|
353
|
+
_constructFrom(meta, data) {
|
|
308
354
|
const c = new meta.Class();
|
|
309
|
-
if (
|
|
310
|
-
Object.assign(c,
|
|
355
|
+
if (data != null) {
|
|
356
|
+
Object.assign(c, data);
|
|
311
357
|
}
|
|
312
|
-
this._storeComponent(meta, c, true);
|
|
313
358
|
return c;
|
|
314
359
|
}
|
|
360
|
+
/** @internal Apply one relationship-edge addition. */
|
|
361
|
+
_addTarget(meta, target) {
|
|
362
|
+
this._assertTargetWorld(target);
|
|
363
|
+
if (this._destroyed || target._destroyed) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const existing = this._components.get(meta.eid);
|
|
367
|
+
if (existing?._hasTarget(target)) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
if (existing && meta.relationshipExclusive) {
|
|
371
|
+
const previous = existing._replaceTarget(target);
|
|
372
|
+
this._removeIncoming(previous, meta.eid);
|
|
373
|
+
this._addIncoming(target, meta.eid);
|
|
374
|
+
const reflectsReplacement = () => this._components.get(meta.eid) === existing &&
|
|
375
|
+
existing._hasTarget(target) &&
|
|
376
|
+
!existing._hasTarget(previous);
|
|
377
|
+
if (!this._emitTargetRemove(meta, existing, previous, reflectsReplacement)) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
if (!this._emitTargetAdd(meta, existing, target, reflectsReplacement)) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
this._notifyRelationshipChanged(meta, existing);
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
if (existing) {
|
|
387
|
+
existing._addTarget(target);
|
|
388
|
+
this._addIncoming(target, meta.eid);
|
|
389
|
+
const reflectsAdd = () => this._components.get(meta.eid) === existing && existing._hasTarget(target);
|
|
390
|
+
if (!this._emitTargetAdd(meta, existing, target, reflectsAdd)) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
this._notifyRelationshipChanged(meta, existing);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
const relationship = new meta.Class();
|
|
397
|
+
relationship._addTarget(target);
|
|
398
|
+
this._storeRelationship(meta, relationship);
|
|
399
|
+
this._addIncoming(target, meta.eid);
|
|
400
|
+
const reflectsAdd = () => this._components.get(meta.eid) === relationship && relationship._hasTarget(target);
|
|
401
|
+
if (!this._emitTargetAdd(meta, relationship, target, reflectsAdd)) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
meta._onAdd?.(this, relationship);
|
|
405
|
+
if (!reflectsAdd()) {
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
this.world._notifyComponentAdded(meta.eid, this);
|
|
409
|
+
}
|
|
410
|
+
/** @internal Apply one relationship-edge removal. */
|
|
411
|
+
_removeTarget(meta, target) {
|
|
412
|
+
this._assertTargetWorld(target);
|
|
413
|
+
if (this._destroyed) {
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
const relationship = this._components.get(meta.eid);
|
|
417
|
+
if (!relationship?._hasTarget(target)) {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
if (relationship._targetCount() === 1) {
|
|
421
|
+
this._remove(meta);
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
relationship._removeTarget(target);
|
|
425
|
+
this._removeIncoming(target, meta.eid);
|
|
426
|
+
const reflectsRemove = () => this._components.get(meta.eid) === relationship && !relationship._hasTarget(target);
|
|
427
|
+
if (!this._emitTargetRemove(meta, relationship, target, reflectsRemove)) {
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
this._notifyRelationshipChanged(meta, relationship);
|
|
431
|
+
}
|
|
315
432
|
/** @internal Perform the shared set-side hook and query update routing. */
|
|
316
433
|
_notifyComponentSet(meta, instance, isUpdate) {
|
|
317
434
|
this._notifyRaw(meta, instance, isUpdate);
|
|
@@ -321,13 +438,55 @@ export class Components extends Relationships {
|
|
|
321
438
|
}
|
|
322
439
|
}
|
|
323
440
|
}
|
|
441
|
+
/** @internal Detach a whole relationship before exposing its zero-target snapshot to hooks. */
|
|
442
|
+
_detachRelationship(meta, relationship) {
|
|
443
|
+
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
444
|
+
this.componentBitmask.deleteBit(meta.bitPtr);
|
|
445
|
+
this.world._notifyComponentRemoved(meta.eid, this);
|
|
446
|
+
this._components.delete(meta.eid);
|
|
447
|
+
this.world._notifyComponentChanged(meta.eid, this);
|
|
448
|
+
meta._detachCarrier(this);
|
|
449
|
+
const targets = relationship._takeTargets();
|
|
450
|
+
for (const target of targets) {
|
|
451
|
+
this._removeIncoming(target, meta.eid);
|
|
452
|
+
}
|
|
453
|
+
for (const target of targets) {
|
|
454
|
+
const reflectsRemove = () => this._components.get(meta.eid) !== relationship && !relationship._hasTarget(target);
|
|
455
|
+
this._emitTargetRemove(meta, relationship, target, reflectsRemove);
|
|
456
|
+
}
|
|
457
|
+
meta._onRemove?.(this, relationship);
|
|
458
|
+
}
|
|
459
|
+
/** @internal Store a newly attached relationship without firing hooks or query entry early. */
|
|
460
|
+
_storeRelationship(meta, relationship) {
|
|
461
|
+
if (meta._exclusive) {
|
|
462
|
+
for (const exclusiveMeta of meta._exclusive) {
|
|
463
|
+
if (this._components.has(exclusiveMeta.eid)) {
|
|
464
|
+
this._remove(exclusiveMeta);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
this._components.set(meta.eid, relationship);
|
|
469
|
+
this.componentBitmask.addBit(meta.bitPtr);
|
|
470
|
+
meta._attachCarrier(this);
|
|
471
|
+
}
|
|
472
|
+
/** Assign relationship data while ignoring all target-storage spellings. */
|
|
473
|
+
_assignRelationshipProps(relationship, props) {
|
|
474
|
+
let assigned = false;
|
|
475
|
+
for (const [key, value] of Object.entries(props)) {
|
|
476
|
+
if (key !== "target" && key !== "targets" && key !== "_targets") {
|
|
477
|
+
relationship[key] = value;
|
|
478
|
+
assigned = true;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
return assigned;
|
|
482
|
+
}
|
|
324
483
|
/** @internal Perform one set-side hook and query update without expanding aliases. */
|
|
325
484
|
_notifyRaw(meta, instance, isUpdate) {
|
|
326
|
-
meta.
|
|
485
|
+
meta._onSet?.(this, instance);
|
|
327
486
|
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
328
487
|
if (isUpdate) {
|
|
329
488
|
this.world._notifyComponentChanged(meta.eid, this);
|
|
330
|
-
this.
|
|
489
|
+
this._routeModified(meta.eid, instance);
|
|
331
490
|
}
|
|
332
491
|
}
|
|
333
492
|
/** @internal Store a component instance and perform the shared add-side bookkeeping. */
|
|
@@ -361,10 +520,11 @@ export class Components extends Relationships {
|
|
|
361
520
|
this._components.set(meta.eid, instance);
|
|
362
521
|
this.componentBitmask.addBit(meta.bitPtr);
|
|
363
522
|
if (!existing) {
|
|
364
|
-
meta.
|
|
523
|
+
meta._attachCarrier(this);
|
|
365
524
|
}
|
|
366
525
|
if (isAdd && !existing) {
|
|
367
|
-
meta.
|
|
526
|
+
meta._onPolicyAdd?.(this, instance);
|
|
527
|
+
meta._onAdd?.(this, instance);
|
|
368
528
|
}
|
|
369
529
|
if (!existing) {
|
|
370
530
|
this.world._notifyComponentAdded(meta.eid, this);
|
|
@@ -375,26 +535,50 @@ export class Components extends Relationships {
|
|
|
375
535
|
throw new Error(`Cannot ${op} the abstract interface ${meta.Class.name}; operate via the concrete component`);
|
|
376
536
|
}
|
|
377
537
|
}
|
|
378
|
-
|
|
379
|
-
this.
|
|
380
|
-
|
|
538
|
+
_assertTargetWorld(target) {
|
|
539
|
+
if (target.world !== this.world) {
|
|
540
|
+
throw new Error("Relationship target must belong to the same World as its source");
|
|
541
|
+
}
|
|
381
542
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
543
|
+
_emitTargetAdd(meta, relationship, target, isCurrent) {
|
|
544
|
+
// Policy handlers run first; each may mutate the relationship (e.g. an
|
|
545
|
+
// OwnedTarget policy parents the target). If one makes the edge no longer
|
|
546
|
+
// current, abort remaining policies and the public hook.
|
|
547
|
+
if (meta._onTargetPolicyAdd !== undefined) {
|
|
548
|
+
for (const h of _slotHandlers(meta._onTargetPolicyAdd)) {
|
|
549
|
+
h(this, relationship, target);
|
|
550
|
+
if (!isCurrent()) {
|
|
551
|
+
return false;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
meta._onTargetAdd?.(this, relationship, target);
|
|
556
|
+
return isCurrent();
|
|
557
|
+
}
|
|
558
|
+
_emitTargetRemove(meta, relationship, target, isCurrent) {
|
|
559
|
+
if (meta._onTargetPolicyRemove !== undefined) {
|
|
560
|
+
for (const h of _slotHandlers(meta._onTargetPolicyRemove)) {
|
|
561
|
+
h(this, relationship, target);
|
|
562
|
+
if (!isCurrent()) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
meta._onTargetRemove?.(this, relationship, target);
|
|
568
|
+
return isCurrent();
|
|
385
569
|
}
|
|
386
570
|
/**
|
|
387
|
-
* Register a handler
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
* @returns This entity, for chaining.
|
|
571
|
+
* Register a handler for a hook event on this entity's component meta.
|
|
572
|
+
* See {@link ComponentMeta.on} for the event list and semantics. Returns this
|
|
573
|
+
* entity for chaining.
|
|
391
574
|
*/
|
|
392
|
-
|
|
393
|
-
this.meta.
|
|
575
|
+
on(event, handler, insert = false) {
|
|
576
|
+
this.meta.on(event, handler, insert);
|
|
394
577
|
return this;
|
|
395
578
|
}
|
|
396
|
-
|
|
397
|
-
|
|
579
|
+
/** Remove a previously-registered handler by reference. See {@link ComponentMeta.off}. */
|
|
580
|
+
off(event, handler) {
|
|
581
|
+
this.meta.off(event, handler);
|
|
398
582
|
return this;
|
|
399
583
|
}
|
|
400
584
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"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"}
|
package/dist/entity/entity.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type EntityClass<T extends Entity = Entity> = new (world: World, eid: EID
|
|
|
20
20
|
* ## Deferred semantics
|
|
21
21
|
*
|
|
22
22
|
* Inside a system body or `forEach` iteration the world is in **deferred
|
|
23
|
-
* mode**: `add` / `attach` / `set` / `ensure` / `
|
|
23
|
+
* mode**: `add` / `attach` / `set` / `ensure` / `modified` / `remove` /
|
|
24
24
|
* `destroy` only enqueue commands. The data layer (the components map and
|
|
25
25
|
* `componentBitmask`) is mutated when the world drains its queue. Concretely,
|
|
26
26
|
* while deferred:
|
|
@@ -29,7 +29,6 @@ export type EntityClass<T extends Entity = Entity> = new (world: World, eid: EID
|
|
|
29
29
|
* - `entity.get(C)` / `entity.getMut(C)` returns `undefined` after `entity.attach(instance)` if C was absent.
|
|
30
30
|
* - `entity.get(C)` / `entity.getMut(C)` returns the previous value after `entity.set(C, props)`.
|
|
31
31
|
* - `entity.ensure(C)` returns a mutable component immediately, but `entity.get(C)` does not see it until the queue drains.
|
|
32
|
-
* - `entity.ensureTarget(R)` returns its pending target immediately, but `entity.target(R)` does not see it until the queue drains.
|
|
33
32
|
* - `entity.get(C)` / `entity.getMut(C)` still returns the component after `entity.remove(C)`.
|
|
34
33
|
*
|
|
35
34
|
* Outside deferred mode the same calls execute inline and mutations are
|