@vworlds/vecs-client 1.0.21 → 1.0.22
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/node_modules/@vworlds/vecs-protocol/package.json +1 -1
- package/package.json +4 -4
- package/vecs-client/src/client_world.d.ts +12 -4
- package/vecs-client/src/client_world.js +14 -10
- package/vecs-client/src/client_world.js.map +1 -1
- package/vecs-client/src/{interpolator.d.ts → diff_buffer.d.ts} +23 -7
- package/vecs-client/src/{interpolator.js → diff_buffer.js} +71 -42
- package/vecs-client/src/diff_buffer.js.map +1 -0
- package/vecs-client/src/index.d.ts +2 -1
- package/vecs-client/src/index.js +1 -1
- package/vecs-client/src/index.js.map +1 -1
- package/vecs-client/src/interpolator.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vworlds/vecs-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./vecs-client/src/index.js",
|
|
6
6
|
"types": "./vecs-client/src/index.d.ts",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@vworlds/dgram-client": "^1.0.8",
|
|
19
|
-
"@vworlds/vecs": "1.0.
|
|
20
|
-
"@vworlds/vecs-protocol": "1.0.
|
|
21
|
-
"@vworlds/vecs-wire": "1.0.
|
|
19
|
+
"@vworlds/vecs": "1.0.22",
|
|
20
|
+
"@vworlds/vecs-protocol": "1.0.22",
|
|
21
|
+
"@vworlds/vecs-wire": "1.0.22",
|
|
22
22
|
"eventemitter3": "^5.0.4"
|
|
23
23
|
},
|
|
24
24
|
"bundleDependencies": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NetworkWorld, type NetworkWorldOptions, type RPCHandler, type VecsSocket } from "@vworlds/vecs-protocol";
|
|
2
|
-
import { type ComponentInstance, type
|
|
2
|
+
import { type ComponentInstance, type Entity } from "@vworlds/vecs";
|
|
3
3
|
import { EventEmitter } from "eventemitter3";
|
|
4
|
-
import { ComponentSnapshot } from "./
|
|
4
|
+
import { ComponentSnapshot, type ComponentInterpolator } from "./diff_buffer.js";
|
|
5
5
|
export interface ClientWorldResetEvent {
|
|
6
6
|
initial: boolean;
|
|
7
7
|
fromFrame: number;
|
|
@@ -18,9 +18,16 @@ export interface ClientWorldOptions extends NetworkWorldOptions {
|
|
|
18
18
|
interpolatorBucketLength?: number;
|
|
19
19
|
serverTickIntervalMs?: number;
|
|
20
20
|
ackIntervalMs?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Component types to interpolate between server frames, keyed by component
|
|
23
|
+
* type id, with the function used to blend each one. Types without an entry
|
|
24
|
+
* are snapped to their latest received value. Defaults to interpolating the
|
|
25
|
+
* first network component (type 1) as a 2D position via `interpolatePosition`.
|
|
26
|
+
*/
|
|
27
|
+
interpolators?: Iterable<readonly [number, ComponentInterpolator]>;
|
|
21
28
|
}
|
|
22
29
|
export interface InstallSystemsOptions {
|
|
23
|
-
applyPhase?: string |
|
|
30
|
+
applyPhase?: string | Entity;
|
|
24
31
|
}
|
|
25
32
|
export interface DgramConnectOptions extends Omit<ClientWorldOptions, "socket"> {
|
|
26
33
|
host: string;
|
|
@@ -35,7 +42,7 @@ export declare class ClientWorld extends NetworkWorld {
|
|
|
35
42
|
private _socket;
|
|
36
43
|
private readonly _rpc;
|
|
37
44
|
private readonly _rpcInbox;
|
|
38
|
-
private readonly
|
|
45
|
+
private readonly _diffBuffer;
|
|
39
46
|
private readonly _encodeBuffer;
|
|
40
47
|
private readonly _ackIntervalMs;
|
|
41
48
|
private readonly _networkedQuery;
|
|
@@ -61,6 +68,7 @@ export declare class ClientWorld extends NetworkWorld {
|
|
|
61
68
|
private _removeComponent;
|
|
62
69
|
private _destroyNetworkEntities;
|
|
63
70
|
private _handleDisconnect;
|
|
71
|
+
private _phaseTarget;
|
|
64
72
|
private _startAckTimer;
|
|
65
73
|
private _stopAckTimer;
|
|
66
74
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Client2Server, Server2Client, SessionRPC, ALL_COMPONENTS, cid_unpack, NetworkWorld, worldPath, } from "@vworlds/vecs-protocol";
|
|
2
|
+
import { ON_UPDATE, Phase, } from "@vworlds/vecs";
|
|
2
3
|
import { Decoder, Encoder } from "@vworlds/vecs-wire";
|
|
3
4
|
import { EventEmitter } from "eventemitter3";
|
|
4
|
-
import {
|
|
5
|
+
import { DiffBuffer, diffFromStateDiff, } from "./diff_buffer.js";
|
|
5
6
|
class Networked {
|
|
6
7
|
}
|
|
7
8
|
const DEFAULT_CLIENT_LOCAL_ENTITY_ID_START = 10000;
|
|
@@ -23,7 +24,7 @@ export class ClientWorld extends NetworkWorld {
|
|
|
23
24
|
this._ackIntervalMs = options.ackIntervalMs ?? 1000 / 30;
|
|
24
25
|
this.component(Networked);
|
|
25
26
|
this._networkedQuery = this.query("ClientWorld:Networked").with(Networked).track().build();
|
|
26
|
-
this.
|
|
27
|
+
this._diffBuffer = new DiffBuffer(options.interpolatorBucketLength ?? 3, options.serverTickIntervalMs ?? 1000 / 30, (snapshot) => this.decodeComponentSnapshot(snapshot), options.interpolators);
|
|
27
28
|
if (options.socket) {
|
|
28
29
|
this.attachSocket(options.socket);
|
|
29
30
|
}
|
|
@@ -47,7 +48,7 @@ export class ClientWorld extends NetworkWorld {
|
|
|
47
48
|
return;
|
|
48
49
|
}
|
|
49
50
|
this._systemsInstalled = true;
|
|
50
|
-
const applyPhase = options.applyPhase ??
|
|
51
|
+
const applyPhase = this._phaseTarget(options.applyPhase ?? ON_UPDATE);
|
|
51
52
|
this.system("ClientWorld:Apply")
|
|
52
53
|
.phase(applyPhase)
|
|
53
54
|
.run((now) => this.apply(now));
|
|
@@ -66,7 +67,7 @@ export class ClientWorld extends NetworkWorld {
|
|
|
66
67
|
const incoming = this._rpcInbox.splice(0);
|
|
67
68
|
this._rpc.process(incoming);
|
|
68
69
|
}
|
|
69
|
-
const diff = this.
|
|
70
|
+
const diff = this._diffBuffer.pull(now);
|
|
70
71
|
diff.snapshots.forEach((snapshot) => this._applySnapshot(snapshot));
|
|
71
72
|
diff.removed?.forEach((key) => {
|
|
72
73
|
const [eid, type] = cid_unpack(key);
|
|
@@ -78,7 +79,7 @@ export class ClientWorld extends NetworkWorld {
|
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
81
|
const rpc = this._rpc.getOutgoing();
|
|
81
|
-
const ackFrame = this.
|
|
82
|
+
const ackFrame = this._diffBuffer.version < 0 ? 0 : this._diffBuffer.version;
|
|
82
83
|
const encoder = new Encoder(this._encodeBuffer);
|
|
83
84
|
encoder.write(new Client2Server({ ackFrame, input: this._input, rpc }));
|
|
84
85
|
this._socket.send(encoder.getBuffer());
|
|
@@ -100,7 +101,7 @@ export class ClientWorld extends NetworkWorld {
|
|
|
100
101
|
// A diff with fromFrame === 0 is a full baseline: the complete authoritative
|
|
101
102
|
// state at sd.toFrame. The server streams these whenever a client falls
|
|
102
103
|
// outside its history window -- most commonly a backgrounded tab, where the
|
|
103
|
-
// render loop (and therefore
|
|
104
|
+
// render loop (and therefore DiffBuffer.pull) is suspended and acks are
|
|
104
105
|
// throttled, so the server keeps resending the whole world until the client
|
|
105
106
|
// catches up.
|
|
106
107
|
//
|
|
@@ -117,19 +118,19 @@ export class ClientWorld extends NetworkWorld {
|
|
|
117
118
|
// Skip baselines we have already advanced past (duplicates or, with the
|
|
118
119
|
// unordered transport, stragglers). After a reconnect the server may have
|
|
119
120
|
// restarted its frame counter, so a forced reset overrides this.
|
|
120
|
-
if (!this._forceBaselineReset && sd.toFrame <= this.
|
|
121
|
+
if (!this._forceBaselineReset && sd.toFrame <= this._diffBuffer.version) {
|
|
121
122
|
return;
|
|
122
123
|
}
|
|
123
124
|
this._forceBaselineReset = false;
|
|
124
125
|
const initial = !this._baselineApplied;
|
|
125
126
|
this._baselineApplied = true;
|
|
126
127
|
this._destroyNetworkEntities();
|
|
127
|
-
this.
|
|
128
|
-
this.
|
|
128
|
+
this._diffBuffer.reset();
|
|
129
|
+
this._diffBuffer.push(diffFromStateDiff(sd));
|
|
129
130
|
this.events.emit("reset", { initial, fromFrame: sd.fromFrame, toFrame: sd.toFrame });
|
|
130
131
|
return;
|
|
131
132
|
}
|
|
132
|
-
this.
|
|
133
|
+
this._diffBuffer.push(diffFromStateDiff(sd));
|
|
133
134
|
}
|
|
134
135
|
decodeComponentSnapshot(snapshot) {
|
|
135
136
|
if (!(snapshot.payload instanceof Uint8Array)) {
|
|
@@ -177,6 +178,9 @@ export class ClientWorld extends NetworkWorld {
|
|
|
177
178
|
}
|
|
178
179
|
this.events.emit("disconnect");
|
|
179
180
|
}
|
|
181
|
+
_phaseTarget(phase) {
|
|
182
|
+
return (typeof phase === "string" ? this.entity(phase) : phase).add(Phase);
|
|
183
|
+
}
|
|
180
184
|
_startAckTimer() {
|
|
181
185
|
if (this._ackTimer !== undefined) {
|
|
182
186
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_world.js","sourceRoot":"","sources":["../../../src/client_world.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,aAAa,EACb,UAAU,EAEV,cAAc,EACd,UAAU,EACV,YAAY,EAIZ,SAAS,GACV,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"client_world.js","sourceRoot":"","sources":["../../../src/client_world.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@ export interface IPosition {
|
|
|
5
5
|
readonly y: number;
|
|
6
6
|
}
|
|
7
7
|
type DecodeComponentSnapshot = (snapshot: ComponentSnapshot) => ComponentInstance;
|
|
8
|
+
/**
|
|
9
|
+
* Blends a source and target component toward render time. `alpha` is the
|
|
10
|
+
* normalized interpolation factor in the range [0, 1], where 0 returns the
|
|
11
|
+
* source value and 1 the target value. The returned value should be a fresh
|
|
12
|
+
* component instance; inputs must not be mutated.
|
|
13
|
+
*/
|
|
14
|
+
export type ComponentInterpolator = (source: ComponentInstance, target: ComponentInstance, alpha: number) => ComponentInstance;
|
|
8
15
|
export declare class ComponentSnapshot {
|
|
9
16
|
readonly eid: EID;
|
|
10
17
|
readonly type: number;
|
|
@@ -21,10 +28,12 @@ export declare class Diff {
|
|
|
21
28
|
constructor(from: number, to: number, removed?: number[] | undefined);
|
|
22
29
|
get smap(): Map<number, ComponentSnapshot>;
|
|
23
30
|
set smap(v: Map<number, ComponentSnapshot>);
|
|
31
|
+
getSnapshot(cid: CID): ComponentSnapshot | undefined;
|
|
32
|
+
upsertSnapshot(snapshot: ComponentSnapshot): void;
|
|
24
33
|
updateSnapshotsFromMap(): void;
|
|
25
34
|
}
|
|
26
35
|
export declare function diffFromStateDiff(sd: StateDiff): Diff;
|
|
27
|
-
export declare class
|
|
36
|
+
export declare class DiffBuffer {
|
|
28
37
|
private max_length;
|
|
29
38
|
private server_tick_interval;
|
|
30
39
|
private readonly _decodeComponentSnapshot?;
|
|
@@ -35,18 +44,25 @@ export declare class Interpolator {
|
|
|
35
44
|
version: number;
|
|
36
45
|
private _tServ;
|
|
37
46
|
private _lastTime;
|
|
47
|
+
private readonly _componentInterpolators;
|
|
38
48
|
constructor(max_length?: number, // max bucket length
|
|
39
49
|
server_tick_interval?: number, // server tick interval FPS configuration
|
|
40
|
-
_decodeComponentSnapshot?: DecodeComponentSnapshot | undefined);
|
|
50
|
+
_decodeComponentSnapshot?: DecodeComponentSnapshot | undefined, componentInterpolators?: Iterable<readonly [number, ComponentInterpolator]>);
|
|
41
51
|
private _updateState;
|
|
42
52
|
private _pop;
|
|
43
53
|
pull(now: number): Diff;
|
|
44
54
|
reset(): void;
|
|
45
55
|
push(diff: Diff): void;
|
|
46
|
-
private
|
|
47
|
-
private
|
|
56
|
+
private _decodeSnapshot;
|
|
57
|
+
private _interpolate;
|
|
48
58
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Default {@link ComponentInterpolator} for 2D point components: linearly
|
|
61
|
+
* interpolates the `x` and `y` fields. Exported so callers can interpolate
|
|
62
|
+
* their own position-like components without reimplementing the math.
|
|
63
|
+
*/
|
|
64
|
+
export declare const interpolatePosition: ComponentInterpolator;
|
|
65
|
+
export declare function merge(a: Diff | undefined, b: Diff, check?: boolean, mutateAccumulator?: boolean): Diff;
|
|
66
|
+
export declare function merge(a: Diff, b: Diff | undefined, check?: boolean, mutateAccumulator?: boolean): Diff;
|
|
67
|
+
export declare function merge(a: Diff | undefined, b: Diff | undefined, check?: boolean, mutateAccumulator?: boolean): Diff | undefined;
|
|
52
68
|
export {};
|
|
@@ -10,6 +10,12 @@ export class ComponentSnapshot {
|
|
|
10
10
|
this.cid = cid_pack(eid, type);
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
// A Diff carries the component snapshots and removals for a frame range. It
|
|
14
|
+
// keeps two views of the same snapshots: `snapshots` (an ordered array, the
|
|
15
|
+
// form decoded from the wire and consumed by callers) and `smap` (a cid-keyed
|
|
16
|
+
// map, used for fast lookup and overwrite during merge). `smap` is built
|
|
17
|
+
// lazily from `snapshots` on first access. Use `getSnapshot`/`upsertSnapshot`
|
|
18
|
+
// when keyed access should preserve the current representation.
|
|
13
19
|
export class Diff {
|
|
14
20
|
constructor(from, to, removed) {
|
|
15
21
|
this.from = from;
|
|
@@ -27,6 +33,25 @@ export class Diff {
|
|
|
27
33
|
this._smap = v;
|
|
28
34
|
this.updateSnapshotsFromMap();
|
|
29
35
|
}
|
|
36
|
+
getSnapshot(cid) {
|
|
37
|
+
if (this._smap) {
|
|
38
|
+
return this._smap.get(cid);
|
|
39
|
+
}
|
|
40
|
+
return this.snapshots.find((snapshot) => snapshot.cid === cid);
|
|
41
|
+
}
|
|
42
|
+
upsertSnapshot(snapshot) {
|
|
43
|
+
if (this._smap) {
|
|
44
|
+
this._smap.set(snapshot.cid, snapshot);
|
|
45
|
+
this.updateSnapshotsFromMap();
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const index = this.snapshots.findIndex((existing) => existing.cid === snapshot.cid);
|
|
49
|
+
if (index === -1) {
|
|
50
|
+
this.snapshots.push(snapshot);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.snapshots[index] = snapshot;
|
|
54
|
+
}
|
|
30
55
|
updateSnapshotsFromMap() {
|
|
31
56
|
this.snapshots = [...this.smap.values()];
|
|
32
57
|
}
|
|
@@ -40,10 +65,12 @@ export function diffFromStateDiff(sd) {
|
|
|
40
65
|
d.removed = sd.removed.map(([eid, type]) => cid_pack(eid, type));
|
|
41
66
|
return d;
|
|
42
67
|
}
|
|
43
|
-
export class
|
|
68
|
+
export class DiffBuffer {
|
|
44
69
|
constructor(max_length = MAX_LENGTH, // max bucket length
|
|
45
70
|
server_tick_interval = 1000 / 60, // server tick interval FPS configuration
|
|
46
|
-
_decodeComponentSnapshot
|
|
71
|
+
_decodeComponentSnapshot, componentInterpolators = [
|
|
72
|
+
[POSITION_COMPONENT_TYPE, interpolatePosition],
|
|
73
|
+
]) {
|
|
47
74
|
this.max_length = max_length;
|
|
48
75
|
this.server_tick_interval = server_tick_interval;
|
|
49
76
|
this._decodeComponentSnapshot = _decodeComponentSnapshot;
|
|
@@ -65,6 +92,7 @@ export class Interpolator {
|
|
|
65
92
|
throw new Error("minimum interpolation bucket length is 2");
|
|
66
93
|
}
|
|
67
94
|
this.bucket = Array(this.max_length).fill(undefined);
|
|
95
|
+
this._componentInterpolators = new Map(componentInterpolators);
|
|
68
96
|
}
|
|
69
97
|
_updateState(sd) {
|
|
70
98
|
// apply diff to current state
|
|
@@ -110,8 +138,8 @@ export class Interpolator {
|
|
|
110
138
|
if (this._tServ === -1) {
|
|
111
139
|
this._tServ = now;
|
|
112
140
|
}
|
|
113
|
-
//
|
|
114
|
-
let
|
|
141
|
+
// interpolationStart is the timestamp of the currently visualized state.
|
|
142
|
+
let interpolationStart = this._lastTime;
|
|
115
143
|
// The following loop will incorporate (merge) into the
|
|
116
144
|
// proposed diff (sd) as many snapshots from the bucket
|
|
117
145
|
// as it needs in order to catch up to server time, that is,
|
|
@@ -119,9 +147,11 @@ export class Interpolator {
|
|
|
119
147
|
// snapshots until we are behind
|
|
120
148
|
// or have eaten the whole buffer.
|
|
121
149
|
for (let i = 0; i < this.bucket.length && now >= this._tServ; i++, this._tServ += this.server_tick_interval) {
|
|
122
|
-
// take snapshot on bucket[0] and merge it on to the result
|
|
123
|
-
|
|
124
|
-
|
|
150
|
+
// take snapshot on bucket[0] and merge it on to the result. sd is owned
|
|
151
|
+
// exclusively by this pull(), so fold each frame in place to avoid copying
|
|
152
|
+
// the snapshot map on every iteration.
|
|
153
|
+
sd = merge(sd, this.bucket[0], false, true);
|
|
154
|
+
interpolationStart = this._tServ;
|
|
125
155
|
this._pop(); //remove bucket[0] and shift contents to the left
|
|
126
156
|
}
|
|
127
157
|
// skip bucket items that are undefined. At the end of this
|
|
@@ -141,7 +171,7 @@ export class Interpolator {
|
|
|
141
171
|
// callers can render fake frames between server ticks.
|
|
142
172
|
const target = this.bucket[0];
|
|
143
173
|
if (target) {
|
|
144
|
-
this.
|
|
174
|
+
this._interpolate(sd, target, interpolationStart, this._tServ, now);
|
|
145
175
|
this._first = target.to;
|
|
146
176
|
}
|
|
147
177
|
else {
|
|
@@ -225,53 +255,53 @@ export class Interpolator {
|
|
|
225
255
|
this.version = diff.to;
|
|
226
256
|
}
|
|
227
257
|
}
|
|
228
|
-
|
|
258
|
+
_decodeSnapshot(snapshot) {
|
|
229
259
|
if (!(snapshot.payload instanceof Uint8Array)) {
|
|
230
|
-
if (!isPosition(snapshot.payload)) {
|
|
231
|
-
throw new Error(`Component type ${POSITION_COMPONENT_TYPE} must satisfy IPosition`);
|
|
232
|
-
}
|
|
233
260
|
return snapshot.payload;
|
|
234
261
|
}
|
|
235
262
|
if (!this._decodeComponentSnapshot) {
|
|
236
|
-
throw new Error("
|
|
263
|
+
throw new Error("Component interpolation requires a component snapshot decoder");
|
|
237
264
|
}
|
|
238
|
-
|
|
239
|
-
if (!isPosition(component)) {
|
|
240
|
-
throw new Error(`Component type ${POSITION_COMPONENT_TYPE} must satisfy IPosition`);
|
|
241
|
-
}
|
|
242
|
-
return component;
|
|
265
|
+
return this._decodeComponentSnapshot(snapshot);
|
|
243
266
|
}
|
|
244
|
-
|
|
267
|
+
_interpolate(sd, target, start, end, now) {
|
|
268
|
+
if (this._componentInterpolators.size === 0) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const alpha = end === start ? 1 : (now - start) / (end - start);
|
|
245
272
|
target.snapshots.forEach((targetSnapshot) => {
|
|
246
|
-
|
|
273
|
+
const interpolate = this._componentInterpolators.get(targetSnapshot.type);
|
|
274
|
+
if (!interpolate) {
|
|
247
275
|
return;
|
|
248
276
|
}
|
|
249
|
-
const sourceSnapshot = sd.
|
|
277
|
+
const sourceSnapshot = sd.getSnapshot(targetSnapshot.cid) ?? this._state.get(targetSnapshot.cid);
|
|
250
278
|
if (!sourceSnapshot) {
|
|
251
279
|
return;
|
|
252
280
|
}
|
|
253
|
-
const
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
sd.smap.set(targetSnapshot.cid, new ComponentSnapshot(targetSnapshot.eid, POSITION_COMPONENT_TYPE, position));
|
|
281
|
+
const source = this._decodeSnapshot(sourceSnapshot);
|
|
282
|
+
const targetComponent = this._decodeSnapshot(targetSnapshot);
|
|
283
|
+
sd.upsertSnapshot(new ComponentSnapshot(targetSnapshot.eid, targetSnapshot.type, interpolate(source, targetComponent, alpha)));
|
|
257
284
|
});
|
|
258
|
-
sd.updateSnapshotsFromMap();
|
|
259
285
|
}
|
|
260
286
|
}
|
|
261
287
|
function isPosition(component) {
|
|
262
288
|
const candidate = component;
|
|
263
289
|
return typeof candidate.x === "number" && typeof candidate.y === "number";
|
|
264
290
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
291
|
+
/**
|
|
292
|
+
* Default {@link ComponentInterpolator} for 2D point components: linearly
|
|
293
|
+
* interpolates the `x` and `y` fields. Exported so callers can interpolate
|
|
294
|
+
* their own position-like components without reimplementing the math.
|
|
295
|
+
*/
|
|
296
|
+
export const interpolatePosition = (source, target, alpha) => {
|
|
297
|
+
if (!isPosition(source) || !isPosition(target)) {
|
|
298
|
+
throw new Error(`Component type ${POSITION_COMPONENT_TYPE} must satisfy IPosition`);
|
|
268
299
|
}
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
300
|
+
const result = new target.constructor();
|
|
301
|
+
result.x = source.x + (target.x - source.x) * alpha;
|
|
302
|
+
result.y = source.y + (target.y - source.y) * alpha;
|
|
303
|
+
return result;
|
|
304
|
+
};
|
|
275
305
|
// helper function to add items to a set
|
|
276
306
|
function addToSet(set, data) {
|
|
277
307
|
if (!data) {
|
|
@@ -281,7 +311,7 @@ function addToSet(set, data) {
|
|
|
281
311
|
set.add(item);
|
|
282
312
|
}
|
|
283
313
|
}
|
|
284
|
-
export function merge(a, b, check = true) {
|
|
314
|
+
export function merge(a, b, check = true, mutateAccumulator = false) {
|
|
285
315
|
if (!a) {
|
|
286
316
|
return b;
|
|
287
317
|
}
|
|
@@ -294,21 +324,20 @@ export function merge(a, b, check = true) {
|
|
|
294
324
|
// incremented version counter on its own.
|
|
295
325
|
throw new Error("cannot merge snapshots");
|
|
296
326
|
}
|
|
297
|
-
const m = new Diff(a.from, b.to, undefined);
|
|
298
327
|
const removed = new Set();
|
|
299
328
|
addToSet(removed, a.removed);
|
|
300
329
|
addToSet(removed, b.removed);
|
|
301
|
-
const as = new Map(a.smap);
|
|
330
|
+
const as = mutateAccumulator ? a.smap : new Map(a.smap);
|
|
302
331
|
const bs = b.smap;
|
|
303
332
|
bs.forEach((s) => {
|
|
304
333
|
as.set(s.cid, s);
|
|
305
334
|
removed.delete(s.cid); // undelete re-added entities
|
|
306
335
|
});
|
|
307
336
|
removed.forEach((r) => as.delete(r));
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
337
|
+
const m = mutateAccumulator ? a : new Diff(a.from, b.to, undefined);
|
|
338
|
+
m.to = b.to;
|
|
339
|
+
m.removed = removed.size ? [...removed] : undefined;
|
|
311
340
|
m.smap = as;
|
|
312
341
|
return m;
|
|
313
342
|
}
|
|
314
|
-
//# sourceMappingURL=
|
|
343
|
+
//# sourceMappingURL=diff_buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff_buffer.js","sourceRoot":"","sources":["../../../src/diff_buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { ComponentSnapshot, Diff,
|
|
1
|
+
export { ComponentSnapshot, Diff, DiffBuffer, interpolatePosition } from "./diff_buffer.js";
|
|
2
|
+
export type { ComponentInterpolator, IPosition } from "./diff_buffer.js";
|
|
2
3
|
export { ClientWorld } from "./client_world.js";
|
|
3
4
|
export type { ClientWorldOptions, DgramConnectOptions, InstallSystemsOptions, } from "./client_world.js";
|
|
4
5
|
export { worldPath } from "@vworlds/vecs-protocol";
|
package/vecs-client/src/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ComponentSnapshot, Diff,
|
|
1
|
+
export { ComponentSnapshot, Diff, DiffBuffer, interpolatePosition } from "./diff_buffer.js";
|
|
2
2
|
export { ClientWorld } from "./client_world.js";
|
|
3
3
|
export { worldPath } from "@vworlds/vecs-protocol";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpolator.js","sourceRoot":"","sources":["../../../src/interpolator.ts"],"names":[],"mappings":"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"}
|