@vworlds/vecs 1.0.11 → 1.0.13
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/.husky/pre-commit +1 -0
- package/README.md +169 -72
- package/dist/component.d.ts +22 -70
- package/dist/component.js +4 -59
- package/dist/component.js.map +1 -1
- package/dist/dsl.d.ts +9 -5
- package/dist/dsl.js +6 -3
- package/dist/dsl.js.map +1 -1
- package/dist/entity.d.ts +10 -11
- package/dist/entity.js +55 -51
- package/dist/entity.js.map +1 -1
- package/dist/filter.d.ts +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/phase.d.ts +7 -2
- package/dist/phase.js.map +1 -1
- package/dist/query.d.ts +21 -21
- package/dist/query.js +17 -16
- package/dist/query.js.map +1 -1
- package/dist/system.d.ts +120 -8
- package/dist/system.js +152 -12
- package/dist/system.js.map +1 -1
- package/dist/timer.d.ts +50 -0
- package/dist/timer.js +154 -0
- package/dist/timer.js.map +1 -0
- package/dist/util/array_map.js +11 -7
- package/dist/util/array_map.js.map +1 -1
- package/dist/util/bitset.d.ts +17 -3
- package/dist/util/bitset.js +47 -30
- package/dist/util/bitset.js.map +1 -1
- package/dist/world.d.ts +48 -17
- package/dist/world.js +91 -25
- package/dist/world.js.map +1 -1
- package/package.json +1 -1
package/dist/world.js
CHANGED
|
@@ -5,6 +5,7 @@ import { System } from "./system.js";
|
|
|
5
5
|
import { Filter } from "./filter.js";
|
|
6
6
|
import { ArrayMap } from "./util/array_map.js";
|
|
7
7
|
import { Phase } from "./phase.js";
|
|
8
|
+
import { ALWAYS_TICK_SOURCE } from "./timer.js";
|
|
8
9
|
/**
|
|
9
10
|
* Numeric type ids below this value are reserved for components whose id was
|
|
10
11
|
* pre-registered via {@link World.registerComponentType} (typically server
|
|
@@ -29,6 +30,9 @@ const LOCAL_COMPONENT_MIN = 256;
|
|
|
29
30
|
* ```ts
|
|
30
31
|
* const world = new World();
|
|
31
32
|
*
|
|
33
|
+
* class Position { x = 0; y = 0; }
|
|
34
|
+
* class Velocity { vx = 0; vy = 0; }
|
|
35
|
+
*
|
|
32
36
|
* world.registerComponent(Position);
|
|
33
37
|
* world.registerComponent(Velocity);
|
|
34
38
|
*
|
|
@@ -36,6 +40,7 @@ const LOCAL_COMPONENT_MIN = 256;
|
|
|
36
40
|
* .requires(Position, Velocity)
|
|
37
41
|
* .each([Position, Velocity], (e, [pos, vel]) => {
|
|
38
42
|
* pos.x += vel.vx;
|
|
43
|
+
* e.modified(Position);
|
|
39
44
|
* });
|
|
40
45
|
*
|
|
41
46
|
* world.start();
|
|
@@ -59,8 +64,6 @@ export class World {
|
|
|
59
64
|
this._entities = new Map();
|
|
60
65
|
/** @internal All registered queries, including systems (which extend `Query`). */
|
|
61
66
|
this._queries = [];
|
|
62
|
-
/** @internal Component class → meta record. */
|
|
63
|
-
this._Class2Meta = new Map();
|
|
64
67
|
/** @internal Component type id → meta record. */
|
|
65
68
|
this._Type2Meta = new ArrayMap();
|
|
66
69
|
/** @internal Pre-registered name → type id mappings (server-assigned ids). */
|
|
@@ -79,6 +82,15 @@ export class World {
|
|
|
79
82
|
this._draining = false;
|
|
80
83
|
/** @internal Phase name → phase. Insertion-ordered, matches pipeline execution order. */
|
|
81
84
|
this._pipeline = new Map();
|
|
85
|
+
/** @internal World-owned tick sources evaluated once per frame. */
|
|
86
|
+
this._tickSources = new Set();
|
|
87
|
+
/** @internal Monotonic frame id used to memoize tick-source evaluation. */
|
|
88
|
+
this._frameCounter = 0;
|
|
89
|
+
/** @internal True while the world is driving one logical frame. */
|
|
90
|
+
this._frameInProgress = false;
|
|
91
|
+
/** Hidden property key used to store this world's meta on component classes. */
|
|
92
|
+
this.worldKey = `__vecs_world_${Math.random().toString(36).slice(2)}`;
|
|
93
|
+
this._tickSources.add(ALWAYS_TICK_SOURCE);
|
|
82
94
|
}
|
|
83
95
|
/**
|
|
84
96
|
* @internal Drain the top-level command queue: walk it in arrival order,
|
|
@@ -113,13 +125,13 @@ export class World {
|
|
|
113
125
|
this._entities.set(cmd.entity.eid, cmd.entity);
|
|
114
126
|
return;
|
|
115
127
|
case 1 /* CommandKind.Set */:
|
|
116
|
-
cmd.entity._set(cmd.
|
|
128
|
+
cmd.entity._set(cmd.meta, cmd.props);
|
|
117
129
|
return;
|
|
118
130
|
case 2 /* CommandKind.Modified */:
|
|
119
|
-
cmd.entity._modified(cmd.
|
|
131
|
+
cmd.entity._modified(cmd.meta);
|
|
120
132
|
return;
|
|
121
133
|
case 3 /* CommandKind.Remove */:
|
|
122
|
-
cmd.entity._remove(cmd.
|
|
134
|
+
cmd.entity._remove(cmd.meta);
|
|
123
135
|
return;
|
|
124
136
|
case 4 /* CommandKind.Destroy */:
|
|
125
137
|
cmd.entity._destroy();
|
|
@@ -164,6 +176,10 @@ export class World {
|
|
|
164
176
|
_addQuery(q) {
|
|
165
177
|
this._queries.push(q);
|
|
166
178
|
}
|
|
179
|
+
/** @internal Register a tick source with this world. */
|
|
180
|
+
_registerTickSource(t) {
|
|
181
|
+
this._tickSources.add(t);
|
|
182
|
+
}
|
|
167
183
|
/**
|
|
168
184
|
* @internal Unregister a query and purge its membership from every entity.
|
|
169
185
|
* Called by {@link Query.destroy}.
|
|
@@ -274,7 +290,7 @@ export class World {
|
|
|
274
290
|
local = true;
|
|
275
291
|
}
|
|
276
292
|
}
|
|
277
|
-
let meta = this.
|
|
293
|
+
let meta = this._tryGetComponentMeta(ComponentClass);
|
|
278
294
|
if (meta) {
|
|
279
295
|
if (local) {
|
|
280
296
|
this._localComponentCounter--;
|
|
@@ -283,9 +299,20 @@ export class World {
|
|
|
283
299
|
}
|
|
284
300
|
this.registerComponentType(componentName, type);
|
|
285
301
|
meta = new ComponentMeta(ComponentClass, type, componentName);
|
|
286
|
-
|
|
302
|
+
Object.defineProperty(ComponentClass, this.worldKey, {
|
|
303
|
+
value: meta,
|
|
304
|
+
enumerable: false,
|
|
305
|
+
});
|
|
287
306
|
this._Type2Meta.set(type, meta);
|
|
288
307
|
console.log("Registered component %s with type=%d as %s component", componentName, type, local ? "local" : "networked");
|
|
308
|
+
return meta;
|
|
309
|
+
}
|
|
310
|
+
/** @internal Return registered metadata for this world without throwing. */
|
|
311
|
+
_tryGetComponentMeta(typeOrClass) {
|
|
312
|
+
if (typeof typeOrClass === "function") {
|
|
313
|
+
return typeOrClass[this.worldKey];
|
|
314
|
+
}
|
|
315
|
+
return this._Type2Meta.get(typeOrClass);
|
|
289
316
|
}
|
|
290
317
|
/**
|
|
291
318
|
* Look up the {@link ComponentMeta} for a registered component.
|
|
@@ -295,13 +322,7 @@ export class World {
|
|
|
295
322
|
* @throws When no component with that class or type id has been registered.
|
|
296
323
|
*/
|
|
297
324
|
getComponentMeta(typeOrClass) {
|
|
298
|
-
|
|
299
|
-
if (typeof typeOrClass === "function") {
|
|
300
|
-
meta = this._Class2Meta.get(typeOrClass);
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
meta = this._Type2Meta.get(typeOrClass);
|
|
304
|
-
}
|
|
325
|
+
const meta = this._tryGetComponentMeta(typeOrClass);
|
|
305
326
|
if (!meta) {
|
|
306
327
|
throw `unregistered component meta for component type or class '${typeOrClass}'`;
|
|
307
328
|
}
|
|
@@ -328,8 +349,8 @@ export class World {
|
|
|
328
349
|
*
|
|
329
350
|
* ```ts
|
|
330
351
|
* world.hook(Sprite)
|
|
331
|
-
* .onAdd(c => c.initialize(scene))
|
|
332
|
-
* .onRemove(c => c.destroy());
|
|
352
|
+
* .onAdd((entity, c) => c.initialize(scene, entity))
|
|
353
|
+
* .onRemove((entity, c) => c.destroy(scene, entity));
|
|
333
354
|
* ```
|
|
334
355
|
*
|
|
335
356
|
* @param C - Component class.
|
|
@@ -360,9 +381,9 @@ export class World {
|
|
|
360
381
|
* @throws When any class has not been registered.
|
|
361
382
|
*/
|
|
362
383
|
setExclusiveComponents(...components) {
|
|
363
|
-
const
|
|
364
|
-
for (let i = 0; i <
|
|
365
|
-
|
|
384
|
+
const metas = components.map((C) => this.getComponentMeta(C));
|
|
385
|
+
for (let i = 0; i < metas.length; i++) {
|
|
386
|
+
metas[i]._exclusive = metas.filter((_, j) => j !== i);
|
|
366
387
|
}
|
|
367
388
|
}
|
|
368
389
|
/**
|
|
@@ -527,18 +548,55 @@ export class World {
|
|
|
527
548
|
this._reindexSystems();
|
|
528
549
|
}
|
|
529
550
|
/**
|
|
530
|
-
*
|
|
551
|
+
* Open a new frame and evaluate every registered tick source once.
|
|
552
|
+
*
|
|
553
|
+
* Call this before one or more {@link runPhase} calls when manually driving
|
|
554
|
+
* phases. {@link progress} wraps this automatically for the full pipeline.
|
|
555
|
+
*
|
|
556
|
+
* @param delta - Milliseconds elapsed since the previous frame.
|
|
557
|
+
* @throws When a frame is already open.
|
|
558
|
+
*/
|
|
559
|
+
beginFrame(delta) {
|
|
560
|
+
if (this._frameInProgress) {
|
|
561
|
+
throw "endFrame() not called before beginFrame()";
|
|
562
|
+
}
|
|
563
|
+
this._frameInProgress = true;
|
|
564
|
+
this._frameCounter++;
|
|
565
|
+
this.flush();
|
|
566
|
+
this._tickSources.forEach((t) => t._evalTick(delta, this._frameCounter));
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Close the current frame.
|
|
570
|
+
*
|
|
571
|
+
* @throws When no frame is currently open.
|
|
572
|
+
*/
|
|
573
|
+
endFrame() {
|
|
574
|
+
if (!this._frameInProgress) {
|
|
575
|
+
throw "beginFrame() not called before endFrame()";
|
|
576
|
+
}
|
|
577
|
+
this._frameInProgress = false;
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Execute every system in `phase` within the current frame.
|
|
531
581
|
*
|
|
532
582
|
* Pending top-level mutations are drained before the first system runs so
|
|
533
583
|
* each system observes a consistent world. Each system body executes in a
|
|
534
584
|
* deferred scope; mutations made by callbacks land in the world queue and
|
|
535
585
|
* are processed before the next system runs.
|
|
536
586
|
*
|
|
587
|
+
* `runPhase` is safe to call re-entrantly from a system body: it reuses the
|
|
588
|
+
* frame opened by {@link beginFrame} and does not advance `_frameCounter` or
|
|
589
|
+
* re-evaluate tick sources.
|
|
590
|
+
*
|
|
537
591
|
* @param phase - Phase reference returned from {@link addPhase}.
|
|
538
592
|
* @param now - Absolute timestamp in milliseconds (e.g. `Date.now()`).
|
|
539
593
|
* @param delta - Milliseconds elapsed since the previous tick.
|
|
594
|
+
* @throws When called outside an open frame.
|
|
540
595
|
*/
|
|
541
596
|
runPhase(phase, now, delta) {
|
|
597
|
+
if (!this._frameInProgress) {
|
|
598
|
+
throw "runPhase() called outside a frame — call beginFrame() first";
|
|
599
|
+
}
|
|
542
600
|
this.flush();
|
|
543
601
|
phase.systems.forEach((s) => {
|
|
544
602
|
s._run(now, delta);
|
|
@@ -547,16 +605,24 @@ export class World {
|
|
|
547
605
|
/**
|
|
548
606
|
* Run every phase in the pipeline in registration order.
|
|
549
607
|
*
|
|
550
|
-
* Equivalent to calling {@link runPhase} for each
|
|
608
|
+
* Equivalent to `beginFrame(delta)`, calling {@link runPhase} for each
|
|
609
|
+
* phase, then {@link endFrame}. All registered tick sources are evaluated
|
|
610
|
+
* once up front for the whole frame, and the frame is closed in a `finally`
|
|
611
|
+
* block if a system throws.
|
|
551
612
|
*
|
|
552
613
|
* @param now - Absolute timestamp in milliseconds (e.g. `Date.now()`).
|
|
553
614
|
* @param delta - Milliseconds elapsed since the previous tick.
|
|
554
615
|
*/
|
|
555
616
|
progress(now, delta) {
|
|
556
|
-
this.
|
|
557
|
-
|
|
558
|
-
this.
|
|
559
|
-
|
|
617
|
+
this.beginFrame(delta);
|
|
618
|
+
try {
|
|
619
|
+
this._pipeline.forEach((phase) => {
|
|
620
|
+
this.runPhase(phase, now, delta);
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
finally {
|
|
624
|
+
this.endFrame();
|
|
625
|
+
}
|
|
560
626
|
}
|
|
561
627
|
}
|
|
562
628
|
//# sourceMappingURL=world.js.map
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"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"}
|