@genex-ai/multiplayer 0.8.6 → 0.8.7
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/dist/index.js +15 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -189,6 +189,7 @@ function attachSession(client, initialRoom) {
|
|
|
189
189
|
const objOwners = /* @__PURE__ */ new Map();
|
|
190
190
|
const objRaw = /* @__PURE__ */ new Map();
|
|
191
191
|
const localObjState = /* @__PURE__ */ new Map();
|
|
192
|
+
const pendingBridge = /* @__PURE__ */ new Map();
|
|
192
193
|
let hostId;
|
|
193
194
|
const testSkew = typeof globalThis !== "undefined" && globalThis.__GENEX_MP_TEST_SKEW__ || 0;
|
|
194
195
|
const now = testSkew ? () => nowMs() + testSkew : nowMs;
|
|
@@ -223,6 +224,12 @@ function attachSession(client, initialRoom) {
|
|
|
223
224
|
}
|
|
224
225
|
let buf = buffers.get(id);
|
|
225
226
|
if (!buf) buffers.set(id, buf = []);
|
|
227
|
+
const bridge = pendingBridge.get(id);
|
|
228
|
+
if (bridge && buf.length === 0 && sendTime != null) {
|
|
229
|
+
const delay = autoDelayById.get(id) ?? INTERP_MIN_MS;
|
|
230
|
+
buf.push({ t: t - Math.max(1, delay), state: bridge });
|
|
231
|
+
}
|
|
232
|
+
pendingBridge.delete(id);
|
|
226
233
|
buf.push({ t, state });
|
|
227
234
|
const cutoff = t - 1500;
|
|
228
235
|
while (buf.length > 2 && buf[0].t < cutoff) buf.shift();
|
|
@@ -255,6 +262,7 @@ function attachSession(client, initialRoom) {
|
|
|
255
262
|
smoothedAt.delete(streamKey);
|
|
256
263
|
intervalsById.delete(streamKey);
|
|
257
264
|
autoDelayById.delete(streamKey);
|
|
265
|
+
pendingBridge.delete(streamKey);
|
|
258
266
|
};
|
|
259
267
|
const clearStreamClock = (streamKey) => {
|
|
260
268
|
buffers.delete(streamKey);
|
|
@@ -311,7 +319,13 @@ function attachSession(client, initialRoom) {
|
|
|
311
319
|
}
|
|
312
320
|
if (blob.d && typeof blob.d === "object" && Object.keys(blob.d).length > 0) {
|
|
313
321
|
objRaw.set(id, blob.d);
|
|
314
|
-
if (owner !== room.sessionId)
|
|
322
|
+
if (owner !== room.sessionId) {
|
|
323
|
+
if (ownerChanged) {
|
|
324
|
+
pendingBridge.set(key, smoothed.get(key) ?? blob.d);
|
|
325
|
+
} else {
|
|
326
|
+
pushSnap(key, blob.d, blob.t);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
315
329
|
}
|
|
316
330
|
if (ownerChanged) emit("object", id);
|
|
317
331
|
return;
|