@vworlds/vecs 1.0.4 → 1.0.5
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 -0
- package/dist/component.d.ts +5 -0
- package/dist/component.js +5 -0
- package/dist/component.js.map +1 -1
- package/dist/entity.d.ts +1 -0
- package/dist/entity.js +16 -1
- package/dist/entity.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/world.d.ts +15 -1
- package/dist/world.js +20 -8
- package/dist/world.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@ yarn add @vworlds/vecs
|
|
|
20
20
|
| **Query** | A reactive, always-updated set of entities that match a predicate. |
|
|
21
21
|
| **System** | A `Query` with per-tick runtime logic (phases, `update`, `each`, `run`). |
|
|
22
22
|
| **Filter** | A non-reactive, one-shot scan: walks all world entities on each `forEach` call. |
|
|
23
|
+
| **Exclusive components** | A group of components where at most one may be present on any entity at a time. |
|
|
23
24
|
|
|
24
25
|
### Lifecycle in brief
|
|
25
26
|
|
|
@@ -161,6 +162,23 @@ world.registerComponentType("Position", 1);
|
|
|
161
162
|
|
|
162
163
|
After `world.start()` any further call to `registerComponent` throws.
|
|
163
164
|
|
|
165
|
+
#### Exclusive components
|
|
166
|
+
|
|
167
|
+
Declare a group of components that cannot coexist on the same entity. Adding a member of the group automatically removes any other member that was already present.
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
world.setExclusiveComponents(Walking, Running, Idle);
|
|
171
|
+
|
|
172
|
+
const e = world.createEntity();
|
|
173
|
+
e.add(Walking);
|
|
174
|
+
e.add(Running); // Walking is automatically removed first
|
|
175
|
+
// e.get(Walking) === undefined, e.get(Running) is defined
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Each call to `setExclusiveComponents` defines one independent group. Components not in the group are unaffected. A component may belong to at most one exclusivity group (calling `setExclusiveComponents` a second time with the same class overwrites its group).
|
|
179
|
+
|
|
180
|
+
`setExclusiveComponents` may be called before or after `world.start()`.
|
|
181
|
+
|
|
164
182
|
#### Entity management
|
|
165
183
|
|
|
166
184
|
```ts
|
package/dist/component.d.ts
CHANGED
|
@@ -68,6 +68,11 @@ export declare class ComponentMeta implements Hook<Component> {
|
|
|
68
68
|
private onAddHandler;
|
|
69
69
|
private onRemoveHandler;
|
|
70
70
|
private onSetHandler;
|
|
71
|
+
/**
|
|
72
|
+
* Type ids of components that cannot coexist with this one on the same entity.
|
|
73
|
+
* Set via {@link World.setExclusiveComponents}. `undefined` means no restrictions.
|
|
74
|
+
*/
|
|
75
|
+
exclusive: number[] | undefined;
|
|
71
76
|
constructor(Class: typeof Component, type: number, componentName: string);
|
|
72
77
|
/** @inheritdoc */
|
|
73
78
|
onAdd(handler: (c: Component) => void): ComponentMeta;
|
package/dist/component.js
CHANGED
|
@@ -11,6 +11,11 @@ import { BitPtr, Bitset } from "./util/bitset.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export class ComponentMeta {
|
|
13
13
|
constructor(Class, type, componentName) {
|
|
14
|
+
/**
|
|
15
|
+
* Type ids of components that cannot coexist with this one on the same entity.
|
|
16
|
+
* Set via {@link World.setExclusiveComponents}. `undefined` means no restrictions.
|
|
17
|
+
*/
|
|
18
|
+
this.exclusive = undefined;
|
|
14
19
|
this.Class = Class;
|
|
15
20
|
this.type = type;
|
|
16
21
|
this.componentName = componentName;
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAoDlD;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAoDlD;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IAkBxB,YAAY,KAAuB,EAAE,IAAY,EAAE,aAAqB;QANxE;;;WAGG;QACI,cAAS,GAAyB,SAAS,CAAC;QAGjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,kBAAkB;IACX,KAAK,CAAC,OAA+B;QAC1C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IACX,QAAQ,CAAC,OAA+B;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IACX,KAAK,CAAC,OAA+B;QAC1C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,SAAS;IAGpB;IACE,4CAA4C;IAC5B,MAAc;IAC9B,0DAA0D;IAC1C,IAAmB;QAFnB,WAAM,GAAN,MAAM,CAAQ;QAEd,SAAI,GAAJ,IAAI,CAAe;QAN7B,UAAK,GAAY,KAAK,CAAC;IAO5B,CAAC;IAEJ,wDAAwD;IACxD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,mEAAmE;IACnE,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACI,QAAQ;QACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,kEAAkE;IAC3D,QAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACjC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA4B,EAC5B,KAAY;IAEZ,MAAM,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/entity.d.ts
CHANGED
package/dist/entity.js
CHANGED
|
@@ -57,13 +57,28 @@ export class Entity {
|
|
|
57
57
|
this._children = new Set();
|
|
58
58
|
return this._children;
|
|
59
59
|
}
|
|
60
|
+
getComponentInstance(meta) {
|
|
61
|
+
const c = new meta.Class(this, meta);
|
|
62
|
+
const hook = meta["onAddHandler"];
|
|
63
|
+
if (hook)
|
|
64
|
+
hook(c);
|
|
65
|
+
return c;
|
|
66
|
+
}
|
|
60
67
|
add(typeOrClass, markAsModified = true) {
|
|
61
68
|
const type = this.world.getComponentType(typeOrClass);
|
|
62
69
|
let c = this.components.get(type);
|
|
63
70
|
if (c) {
|
|
64
71
|
return c;
|
|
65
72
|
}
|
|
66
|
-
|
|
73
|
+
const meta = this.world.getComponentMeta(typeOrClass);
|
|
74
|
+
if (meta.exclusive) {
|
|
75
|
+
for (const exclusiveType of meta.exclusive) {
|
|
76
|
+
if (this.components.has(exclusiveType)) {
|
|
77
|
+
this.remove(exclusiveType);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
c = this.getComponentInstance(meta);
|
|
67
82
|
this.components.set(type, c);
|
|
68
83
|
this.componentBitmask.add(type);
|
|
69
84
|
this.world._notifyComponentAdded(this, c);
|
package/dist/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,MAAM;IA0BjB;IACE,+CAA+C;IAC/B,KAAY;IAC5B,0DAA0D;IAC1C,GAAW;QAFX,UAAK,GAAL,KAAK,CAAO;QAEZ,QAAG,GAAH,GAAG,CAAQ;QA7BrB,eAAU,GAAG,IAAI,QAAQ,EAAa,CAAC,CAAC,oCAAoC;QAC5E,sBAAiB,GAAG,IAAI,QAAQ,EAAa,CAAC,CAAC,4CAA4C;QAEnG;;;;WAIG;QACa,qBAAgB,GAAG,IAAI,MAAM,EAAE,CAAC;QAC/B,YAAO,GAAG,IAAI,GAAG,EAAS,CAAC;QAC3B,eAAU,GAAY,EAAE,CAAC;QAE1C;;;WAGG;QACI,eAAU,GAAG,IAAI,GAAG,EAAe,CAAC;QAMpC,sBAAiB,GAAY,KAAK,CAAC;QAClC,cAAS,GAAG,KAAK,CAAC;IAOvB,CAAC;IAEJ;;;;;;OAMG;IACH,IAAW,QAAQ;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IA4BM,GAAG,CACR,WAAsC,EACtC,iBAA0B,IAAI;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,CAAC;SACV;
|
|
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
|
@@ -97,7 +97,6 @@ export declare class World {
|
|
|
97
97
|
* @throws If called after registration has been disabled.
|
|
98
98
|
*/
|
|
99
99
|
setEntityIdRange(min: number): void;
|
|
100
|
-
private getComponentInstance;
|
|
101
100
|
/**
|
|
102
101
|
* Retrieve the {@link ComponentMeta} record for a registered component.
|
|
103
102
|
*
|
|
@@ -314,6 +313,21 @@ export declare class World {
|
|
|
314
313
|
* @param delta - Milliseconds elapsed since the previous tick.
|
|
315
314
|
*/
|
|
316
315
|
progress(now: number, delta: number): void;
|
|
316
|
+
/**
|
|
317
|
+
* Declare a group of mutually exclusive components.
|
|
318
|
+
*
|
|
319
|
+
* After this call, adding any component in the group to an entity that
|
|
320
|
+
* already has another component from the same group will throw.
|
|
321
|
+
*
|
|
322
|
+
* ```ts
|
|
323
|
+
* world.setExclusiveComponents(Walking, Running, Idle);
|
|
324
|
+
* // entity.add(Running) throws if entity already has Walking or Idle
|
|
325
|
+
* ```
|
|
326
|
+
*
|
|
327
|
+
* @param components - Two or more component classes that cannot coexist.
|
|
328
|
+
* @throws If any class has not been registered.
|
|
329
|
+
*/
|
|
330
|
+
setExclusiveComponents(...components: (typeof Component)[]): void;
|
|
317
331
|
/**
|
|
318
332
|
* Destroy every entity currently tracked by the world.
|
|
319
333
|
*
|
package/dist/world.js
CHANGED
|
@@ -119,14 +119,6 @@ export class World {
|
|
|
119
119
|
throw "setEntityIdRange must be called before component registration is disabled";
|
|
120
120
|
this.eidCounter = min;
|
|
121
121
|
}
|
|
122
|
-
getComponentInstance(typeOrClass, entity) {
|
|
123
|
-
const meta = this.getComponentMeta(typeOrClass);
|
|
124
|
-
const c = new meta.Class(entity, meta);
|
|
125
|
-
const hook = meta["onAddHandler"];
|
|
126
|
-
if (hook)
|
|
127
|
-
hook(c);
|
|
128
|
-
return c;
|
|
129
|
-
}
|
|
130
122
|
/**
|
|
131
123
|
* Retrieve the {@link ComponentMeta} record for a registered component.
|
|
132
124
|
*
|
|
@@ -458,6 +450,26 @@ export class World {
|
|
|
458
450
|
this.runPhase(phase, now, delta);
|
|
459
451
|
});
|
|
460
452
|
}
|
|
453
|
+
/**
|
|
454
|
+
* Declare a group of mutually exclusive components.
|
|
455
|
+
*
|
|
456
|
+
* After this call, adding any component in the group to an entity that
|
|
457
|
+
* already has another component from the same group will throw.
|
|
458
|
+
*
|
|
459
|
+
* ```ts
|
|
460
|
+
* world.setExclusiveComponents(Walking, Running, Idle);
|
|
461
|
+
* // entity.add(Running) throws if entity already has Walking or Idle
|
|
462
|
+
* ```
|
|
463
|
+
*
|
|
464
|
+
* @param components - Two or more component classes that cannot coexist.
|
|
465
|
+
* @throws If any class has not been registered.
|
|
466
|
+
*/
|
|
467
|
+
setExclusiveComponents(...components) {
|
|
468
|
+
const types = components.map((C) => this.getComponentType(C));
|
|
469
|
+
for (let i = 0; i < components.length; i++) {
|
|
470
|
+
this.getComponentMeta(components[i]).exclusive = types.filter((_, j) => j !== i);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
461
473
|
/**
|
|
462
474
|
* Destroy every entity currently tracked by the world.
|
|
463
475
|
*
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,GAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAU,KAAK,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,KAAK;IAchB;QAbQ,aAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,2BAA2B;QACjE,yBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,oBAAe,GAAa,EAAE,CAAC;QAC/B,sBAAiB,GAAa,EAAE,CAAC;QACjC,eAAU,GAAY,EAAE,CAAC;QAEzB,eAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,cAAS,GAAG,IAAI,QAAQ,EAAiB,CAAC;QAC1C,sBAAiB,GAAgB,EAAE,CAAC;QACpC,0BAAqB,GAAG,mBAAmB,CAAC;QAC5C,kCAA6B,GAAG,KAAK,CAAC;QACtC,aAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;QACpC,eAAU,GAAG,CAAC,CAAC;IACR,CAAC;IAEhB;;;;;;;;;;;;;;;;;OAiBG;IACI,iBAAiB,CACtB,GAAW,EACX,gBAAsC;QAEtC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,EAAE;YACN,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,gBAAgB;gBAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACI,YAAY;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;OAWG;IACI,gBAAgB,CAAC,GAAW;QACjC,IAAI,IAAI,CAAC,6BAA6B;YACpC,MAAM,2EAA2E,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|