topazcube 0.1.31 → 0.1.35

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.
Files changed (103) hide show
  1. package/LICENSE.txt +0 -0
  2. package/README.md +0 -0
  3. package/dist/Renderer.cjs +20844 -0
  4. package/dist/Renderer.cjs.map +1 -0
  5. package/dist/Renderer.js +20827 -0
  6. package/dist/Renderer.js.map +1 -0
  7. package/dist/client.cjs +91 -260
  8. package/dist/client.cjs.map +1 -1
  9. package/dist/client.js +68 -215
  10. package/dist/client.js.map +1 -1
  11. package/dist/server.cjs +165 -432
  12. package/dist/server.cjs.map +1 -1
  13. package/dist/server.js +117 -370
  14. package/dist/server.js.map +1 -1
  15. package/dist/terminal.cjs +113 -200
  16. package/dist/terminal.cjs.map +1 -1
  17. package/dist/terminal.js +50 -51
  18. package/dist/terminal.js.map +1 -1
  19. package/dist/utils-CRhi1BDa.cjs +259 -0
  20. package/dist/utils-CRhi1BDa.cjs.map +1 -0
  21. package/dist/utils-D7tXt6-2.js +260 -0
  22. package/dist/utils-D7tXt6-2.js.map +1 -0
  23. package/package.json +19 -15
  24. package/src/{client.ts → network/client.js} +170 -403
  25. package/src/{compress-browser.ts → network/compress-browser.js} +2 -4
  26. package/src/{compress-node.ts → network/compress-node.js} +8 -14
  27. package/src/{server.ts → network/server.js} +229 -317
  28. package/src/{terminal.js → network/terminal.js} +0 -0
  29. package/src/{topazcube.ts → network/topazcube.js} +2 -2
  30. package/src/network/utils.js +375 -0
  31. package/src/renderer/Camera.js +191 -0
  32. package/src/renderer/DebugUI.js +703 -0
  33. package/src/renderer/Geometry.js +1049 -0
  34. package/src/renderer/Material.js +64 -0
  35. package/src/renderer/Mesh.js +211 -0
  36. package/src/renderer/Node.js +112 -0
  37. package/src/renderer/Pipeline.js +645 -0
  38. package/src/renderer/Renderer.js +1496 -0
  39. package/src/renderer/Skin.js +792 -0
  40. package/src/renderer/Texture.js +584 -0
  41. package/src/renderer/core/AssetManager.js +394 -0
  42. package/src/renderer/core/CullingSystem.js +308 -0
  43. package/src/renderer/core/EntityManager.js +541 -0
  44. package/src/renderer/core/InstanceManager.js +343 -0
  45. package/src/renderer/core/ParticleEmitter.js +358 -0
  46. package/src/renderer/core/ParticleSystem.js +564 -0
  47. package/src/renderer/core/SpriteSystem.js +349 -0
  48. package/src/renderer/gltf.js +563 -0
  49. package/src/renderer/math.js +161 -0
  50. package/src/renderer/rendering/HistoryBufferManager.js +333 -0
  51. package/src/renderer/rendering/ProbeCapture.js +1495 -0
  52. package/src/renderer/rendering/ReflectionProbeManager.js +352 -0
  53. package/src/renderer/rendering/RenderGraph.js +2258 -0
  54. package/src/renderer/rendering/passes/AOPass.js +308 -0
  55. package/src/renderer/rendering/passes/AmbientCapturePass.js +593 -0
  56. package/src/renderer/rendering/passes/BasePass.js +101 -0
  57. package/src/renderer/rendering/passes/BloomPass.js +420 -0
  58. package/src/renderer/rendering/passes/CRTPass.js +724 -0
  59. package/src/renderer/rendering/passes/FogPass.js +445 -0
  60. package/src/renderer/rendering/passes/GBufferPass.js +730 -0
  61. package/src/renderer/rendering/passes/HiZPass.js +744 -0
  62. package/src/renderer/rendering/passes/LightingPass.js +753 -0
  63. package/src/renderer/rendering/passes/ParticlePass.js +841 -0
  64. package/src/renderer/rendering/passes/PlanarReflectionPass.js +456 -0
  65. package/src/renderer/rendering/passes/PostProcessPass.js +405 -0
  66. package/src/renderer/rendering/passes/ReflectionPass.js +157 -0
  67. package/src/renderer/rendering/passes/RenderPostPass.js +364 -0
  68. package/src/renderer/rendering/passes/SSGIPass.js +266 -0
  69. package/src/renderer/rendering/passes/SSGITilePass.js +305 -0
  70. package/src/renderer/rendering/passes/ShadowPass.js +2072 -0
  71. package/src/renderer/rendering/passes/TransparentPass.js +831 -0
  72. package/src/renderer/rendering/passes/VolumetricFogPass.js +715 -0
  73. package/src/renderer/rendering/shaders/ao.wgsl +182 -0
  74. package/src/renderer/rendering/shaders/bloom.wgsl +97 -0
  75. package/src/renderer/rendering/shaders/bloom_blur.wgsl +80 -0
  76. package/src/renderer/rendering/shaders/crt.wgsl +455 -0
  77. package/src/renderer/rendering/shaders/depth_copy.wgsl +17 -0
  78. package/src/renderer/rendering/shaders/geometry.wgsl +580 -0
  79. package/src/renderer/rendering/shaders/hiz_reduce.wgsl +114 -0
  80. package/src/renderer/rendering/shaders/light_culling.wgsl +204 -0
  81. package/src/renderer/rendering/shaders/lighting.wgsl +932 -0
  82. package/src/renderer/rendering/shaders/lighting_common.wgsl +143 -0
  83. package/src/renderer/rendering/shaders/particle_render.wgsl +672 -0
  84. package/src/renderer/rendering/shaders/particle_simulate.wgsl +440 -0
  85. package/src/renderer/rendering/shaders/postproc.wgsl +293 -0
  86. package/src/renderer/rendering/shaders/render_post.wgsl +289 -0
  87. package/src/renderer/rendering/shaders/shadow.wgsl +117 -0
  88. package/src/renderer/rendering/shaders/ssgi.wgsl +266 -0
  89. package/src/renderer/rendering/shaders/ssgi_accumulate.wgsl +114 -0
  90. package/src/renderer/rendering/shaders/ssgi_propagate.wgsl +132 -0
  91. package/src/renderer/rendering/shaders/volumetric_blur.wgsl +80 -0
  92. package/src/renderer/rendering/shaders/volumetric_composite.wgsl +80 -0
  93. package/src/renderer/rendering/shaders/volumetric_raymarch.wgsl +634 -0
  94. package/src/renderer/utils/BoundingSphere.js +439 -0
  95. package/src/renderer/utils/Frustum.js +281 -0
  96. package/src/renderer/utils/Raycaster.js +761 -0
  97. package/dist/client.d.cts +0 -211
  98. package/dist/client.d.ts +0 -211
  99. package/dist/server.d.cts +0 -120
  100. package/dist/server.d.ts +0 -120
  101. package/dist/terminal.d.cts +0 -64
  102. package/dist/terminal.d.ts +0 -64
  103. package/src/utils.ts +0 -403
package/dist/client.js CHANGED
@@ -1,136 +1,7 @@
1
- // src/client.ts
2
1
  import { applyOperation } from "fast-json-patch";
3
-
4
- // src/utils.ts
5
- import { Packr } from "msgpackr";
6
- import { FLOAT32_OPTIONS } from "msgpackr";
7
- var { ALWAYS } = FLOAT32_OPTIONS;
8
- var packr = new Packr({
9
- useFloat32: ALWAYS
10
- });
11
- function encode(obj) {
12
- return packr.pack(obj);
13
- }
14
- function decode(data) {
15
- return packr.unpack(data);
16
- }
17
- function reactive(name, object, callback, path = "", excludedProperties = false) {
18
- if (object === null || typeof object !== "object") {
19
- return object;
20
- }
21
- function isReactive(p) {
22
- let r = true;
23
- if (p.startsWith("_")) {
24
- r = false;
25
- }
26
- if (excludedProperties) {
27
- if (excludedProperties[p]) {
28
- r = false;
29
- }
30
- }
31
- if (path == "/entities") {
32
- r = false;
33
- }
34
- return r;
35
- }
36
- for (const property in object) {
37
- if (isReactive(property)) {
38
- object[property] = reactive(
39
- name,
40
- object[property],
41
- callback,
42
- path + "/" + property,
43
- excludedProperties
44
- );
45
- } else {
46
- }
47
- }
48
- return new Proxy(object, {
49
- get(target, property, receiver) {
50
- return Reflect.get(target, property, receiver);
51
- },
52
- set(target, property, value) {
53
- let newvalue;
54
- let pn = path + "/" + String(property);
55
- if (isReactive(String(property))) {
56
- newvalue = reactive(name, value, callback, pn, excludedProperties);
57
- callback(name, "replace", target, pn, newvalue);
58
- } else {
59
- newvalue = value;
60
- }
61
- return Reflect.set(target, property, newvalue);
62
- },
63
- deleteProperty(target, property) {
64
- let pn = path + "/" + String(property);
65
- if (isReactive(String(property))) {
66
- callback(name, "remove", target, pn, null);
67
- }
68
- delete target[property];
69
- return true;
70
- }
71
- });
72
- }
73
- function msgop(op) {
74
- let nop = {};
75
- if (!op.o) {
76
- nop.op = "replace";
77
- } else {
78
- nop.op = {
79
- a: "add",
80
- r: "remove",
81
- d: "delete",
82
- t: "test"
83
- }[op.o];
84
- }
85
- nop.path = op.p;
86
- nop.value = op.v;
87
- return nop;
88
- }
89
- function opmsg(op, target, path, value) {
90
- let c = { p: path, v: value };
91
- if (op != "replace") {
92
- c.o = {
93
- add: "a",
94
- remove: "r",
95
- delete: "d",
96
- test: "t"
97
- }[op];
98
- }
99
- return c;
100
- }
101
- function decode_uint32(byteArray, offset = 0) {
102
- let p = offset;
103
- return (byteArray[p++] & 127) << 24 | byteArray[p++] << 16 | byteArray[p++] << 8 | byteArray[p];
104
- }
105
- function decode_uint24(byteArray, offset = 0) {
106
- let p = offset;
107
- return byteArray[p++] << 16 | byteArray[p++] << 8 | byteArray[p];
108
- }
109
- function decode_uint16(byteArray, offset = 0) {
110
- let p = offset;
111
- return byteArray[p++] << 8 | byteArray[p];
112
- }
113
- function decode_fp168(byteArray, offset = 0) {
114
- const divider = (byteArray[offset] & 128) === 128 ? -256 : 256;
115
- byteArray[offset] &= 127;
116
- const fp = decode_uint24(byteArray, offset);
117
- return fp / divider;
118
- }
119
- function decode_fp1616(byteArray, offset = 0) {
120
- const divider = (byteArray[offset] & 128) === 128 ? -65536 : 65536;
121
- byteArray[offset] &= 127;
122
- const fp = decode_uint32(byteArray, offset);
123
- return fp / divider;
124
- }
125
- function decode_fp412(byteArray, offset = 0) {
126
- const divider = (byteArray[offset] & 128) === 128 ? -4096 : 4096;
127
- byteArray[offset] &= 127;
128
- const fp = decode_uint16(byteArray, offset);
129
- return fp / divider;
130
- }
131
-
132
- // src/compress-browser.ts
133
- var browserFormat = "gzip";
2
+ import { d as decode, e as encode, r as reactive, m as msgop, o as opmsg, a as decode_uint32, b as decode_fp168, c as decode_fp412, f as decode_fp1616 } from "./utils-D7tXt6-2.js";
3
+ import { vec3, quat } from "gl-matrix";
4
+ const browserFormat = "gzip";
134
5
  async function decompress(buffer) {
135
6
  if (typeof DecompressionStream !== "undefined") {
136
7
  try {
@@ -146,13 +17,9 @@ async function decompress(buffer) {
146
17
  throw new Error("DecompressionStream not supported");
147
18
  }
148
19
  }
149
-
150
- // src/client.ts
151
- import { vec3, quat } from "gl-matrix";
152
- var TopazCubeClient = class {
20
+ class TopazCubeClient {
153
21
  DEBUG = false;
154
22
  CYCLE = 200;
155
- // update/patch rate in ms
156
23
  url = "";
157
24
  documents = {};
158
25
  autoReconnect = true;
@@ -170,13 +37,11 @@ var TopazCubeClient = class {
170
37
  recRTCBps: 0,
171
38
  ping: 0,
172
39
  stdiff: 0
173
- // server time difference
174
40
  };
175
41
  lastFullState = 0;
176
42
  lastPatch = 0;
177
43
  _chunks = {};
178
44
  le = true;
179
- // Server is little endian
180
45
  _documentChanges = {};
181
46
  ID = 0;
182
47
  socket = null;
@@ -185,9 +50,7 @@ var TopazCubeClient = class {
185
50
  _remoteCandidates = [];
186
51
  _offerSent = false;
187
52
  _dataChannel = null;
188
- // our data channel
189
53
  _serverDataChannel = null;
190
- // server data channel
191
54
  _webRTCConnected = false;
192
55
  isInterpolated = false;
193
56
  _lastInterpolate = Date.now();
@@ -202,11 +65,8 @@ var TopazCubeClient = class {
202
65
  _pingiv = null;
203
66
  constructor({
204
67
  url,
205
- // server url
206
68
  autoReconnect = true,
207
- // auto reconnect on disconnect
208
69
  allowSync = true,
209
- // allow sync on connect
210
70
  allowWebRTC = false,
211
71
  DEBUG = false
212
72
  }) {
@@ -232,7 +92,6 @@ var TopazCubeClient = class {
232
92
  error(...args) {
233
93
  console.error(...args);
234
94
  }
235
- /*= UPDATE ===================================================================*/
236
95
  _startLoop() {
237
96
  if (this._loopiv) {
238
97
  clearInterval(this._loopiv);
@@ -278,27 +137,25 @@ var TopazCubeClient = class {
278
137
  this.isPatched = false;
279
138
  this.le = true;
280
139
  }
281
- /*= INTERPOLATION ============================================================*/
282
- // to be called in display rate (like 60fps) to interpolate .position, .rotation and .scale
283
140
  interpolate() {
284
- let now = Date.now();
285
- let dt = now - this._lastInterpolate;
141
+ const now = Date.now();
142
+ const dt = now - this._lastInterpolate;
286
143
  this._lastInterpolate = now;
287
144
  if (dt <= 0 || dt > 200) {
288
145
  return;
289
146
  }
290
147
  this.isInterpolated = true;
291
- for (let name in this.documents) {
292
- let doc = this.documents[name];
293
- let entities = doc?.entities;
148
+ for (const name in this.documents) {
149
+ const doc = this.documents[name];
150
+ const entities = doc?.entities;
294
151
  if (!entities) {
295
152
  continue;
296
153
  }
297
- for (let id in entities) {
298
- let e = entities[id];
154
+ for (const id in entities) {
155
+ const e = entities[id];
299
156
  if (e._lpostime1 && e._lpostime2) {
300
- let t1 = e._lpostime1;
301
- let t2 = e._lpostime2;
157
+ const t1 = e._lpostime1;
158
+ const t2 = e._lpostime2;
302
159
  const interval = t2 - t1;
303
160
  const elapsed = now - t1;
304
161
  e.pelapsed = elapsed;
@@ -313,8 +170,8 @@ var TopazCubeClient = class {
313
170
  }
314
171
  }
315
172
  if (e._lrottime1 && e._lrottime2) {
316
- let t1 = e._lrottime1;
317
- let t2 = e._lrottime2;
173
+ const t1 = e._lrottime1;
174
+ const t2 = e._lrottime2;
318
175
  const interval = t2 - t1;
319
176
  const elapsed = now - t1;
320
177
  e.relapsed = elapsed;
@@ -332,7 +189,6 @@ var TopazCubeClient = class {
332
189
  }
333
190
  this.isInterpolated = false;
334
191
  }
335
- /*= CONNECTION ===============================================================*/
336
192
  subscribe(name) {
337
193
  this.documents[name] = {};
338
194
  this.send({ c: "sub", n: name });
@@ -350,11 +206,11 @@ var TopazCubeClient = class {
350
206
  this.log("connecting...");
351
207
  this.socket = new WebSocket(this.url);
352
208
  this.socket.onmessage = async (event) => {
353
- let buffer = await event.data.arrayBuffer();
209
+ const buffer = await event.data.arrayBuffer();
354
210
  this.stats.rec += buffer.byteLength;
355
- let dec = await decompress(buffer);
356
- let decu = new Uint8Array(dec);
357
- let message = decode(decu);
211
+ const dec = await decompress(buffer);
212
+ const decu = new Uint8Array(dec);
213
+ const message = decode(decu);
358
214
  this._onMessage(message);
359
215
  };
360
216
  this.socket.onclose = (_event) => {
@@ -441,7 +297,6 @@ var TopazCubeClient = class {
441
297
  this.send({ c: "ping", ct: Date.now() });
442
298
  }
443
299
  }
444
- /*= MESSAGES =================================================================*/
445
300
  onChange(_name, _doc, patch) {
446
301
  }
447
302
  onMessage(_message) {
@@ -451,7 +306,7 @@ var TopazCubeClient = class {
451
306
  return;
452
307
  }
453
308
  try {
454
- let enc = encode(operation);
309
+ const enc = encode(operation);
455
310
  this.stats.send += enc.byteLength;
456
311
  if (this.socket) {
457
312
  this.socket.send(enc);
@@ -461,14 +316,14 @@ var TopazCubeClient = class {
461
316
  }
462
317
  }
463
318
  get document() {
464
- let names = "" + Object.keys(this.documents);
319
+ const names = "" + Object.keys(this.documents);
465
320
  return this.documents["" + names[0]];
466
321
  }
467
322
  async _onMessage(message) {
468
323
  let time = Date.now();
469
324
  if (message.c == "full") {
470
- let name = "" + message.n;
471
- let doc = message.doc;
325
+ const name = "" + message.n;
326
+ const doc = message.doc;
472
327
  this.documents[name] = doc;
473
328
  this._decodeFastChanges(message);
474
329
  this.isPatched = false;
@@ -487,15 +342,15 @@ var TopazCubeClient = class {
487
342
  }
488
343
  } else if (message.c == "patch") {
489
344
  this.lastPatch = message.t;
490
- let name = message.n;
345
+ const name = message.n;
491
346
  if (!this.documents[name]) {
492
347
  this.warn("Patch for unknown document", name);
493
348
  return;
494
349
  }
495
350
  if (message.doc) {
496
351
  this.isPatched = true;
497
- for (let op of message.doc) {
498
- let dop = msgop(op);
352
+ for (const op of message.doc) {
353
+ const dop = msgop(op);
499
354
  try {
500
355
  applyOperation(this.documents[name], dop);
501
356
  } catch (e) {
@@ -511,13 +366,13 @@ var TopazCubeClient = class {
511
366
  this._chunks[message.mid + "-" + message.seq] = message;
512
367
  if (message.last) {
513
368
  let cfound = 0;
514
- let ts = message.ts;
515
- let cdata = new Uint8Array(ts);
369
+ const ts = message.ts;
370
+ const cdata = new Uint8Array(ts);
516
371
  for (const cid in this._chunks) {
517
- let chunk = this._chunks[cid];
372
+ const chunk = this._chunks[cid];
518
373
  if (chunk.mid == message.mid) {
519
- let offset = chunk.ofs;
520
- let _csize = chunk.chs;
374
+ const offset = chunk.ofs;
375
+ chunk.chs;
521
376
  cdata.set(new Uint8Array(chunk.data), offset);
522
377
  cfound++;
523
378
  delete this._chunks[cid];
@@ -525,9 +380,9 @@ var TopazCubeClient = class {
525
380
  }
526
381
  if (cfound == message.seq + 1) {
527
382
  try {
528
- let cdec = await decompress(cdata);
529
- let cdecu = new Uint8Array(cdec);
530
- let nmessage = decode(cdecu);
383
+ const cdec = await decompress(cdata);
384
+ const cdecu = new Uint8Array(cdec);
385
+ const nmessage = decode(cdecu);
531
386
  this._onMessage(nmessage);
532
387
  } catch (error) {
533
388
  this.error("Error decoding chunks:", error);
@@ -538,13 +393,13 @@ var TopazCubeClient = class {
538
393
  }
539
394
  } else if (message.c == "fpatch") {
540
395
  time = Date.now();
541
- let name = message.n;
396
+ const name = message.n;
542
397
  let doPatch = true;
543
398
  if (!this._lastUpdateId[name]) {
544
399
  this._lastUpdateId[name] = message.u;
545
400
  } else {
546
401
  if (this._lastUpdateId[name] < message.u) {
547
- let lp = message.u - this._lastUpdateId[name] - 1;
402
+ const lp = message.u - this._lastUpdateId[name] - 1;
548
403
  if (lp > 0) {
549
404
  this.warn("Lost " + lp + " updates");
550
405
  }
@@ -560,9 +415,9 @@ var TopazCubeClient = class {
560
415
  } else if (message.c == "pong") {
561
416
  this.ID = message.ID;
562
417
  time = Date.now();
563
- let lastct = message.ct;
564
- let ping = time - lastct;
565
- let stime = message.t;
418
+ const lastct = message.ct;
419
+ const ping = time - lastct;
420
+ const stime = message.t;
566
421
  this.send({ c: "peng", ct: Date.now(), st: stime });
567
422
  this.stats.stdiff = stime + ping / 2 - time;
568
423
  this.stats.ping = ping;
@@ -580,7 +435,7 @@ var TopazCubeClient = class {
580
435
  await this._peerConnection.setRemoteDescription(sessionDesc);
581
436
  }
582
437
  this.log("RTC: Remote description set successfully");
583
- for (let candidate of this._remoteCandidates) {
438
+ for (const candidate of this._remoteCandidates) {
584
439
  try {
585
440
  await this._peerConnection?.addIceCandidate(candidate);
586
441
  this.log("RTC: Added remote ICE candidate:", candidate);
@@ -616,12 +471,12 @@ var TopazCubeClient = class {
616
471
  this._documentChanges[name].push(opmsg(op, target, path, value));
617
472
  }
618
473
  _sendPatches() {
619
- for (let name in this._documentChanges) {
620
- let dc = this._documentChanges[name];
474
+ for (const name in this._documentChanges) {
475
+ const dc = this._documentChanges[name];
621
476
  if (!dc || dc.length == 0) {
622
477
  continue;
623
478
  }
624
- let record = {
479
+ const record = {
625
480
  n: name,
626
481
  c: "sync",
627
482
  ct: Date.now(),
@@ -638,17 +493,17 @@ var TopazCubeClient = class {
638
493
  }
639
494
  }
640
495
  _decodeFastChanges(message) {
641
- let time = Date.now();
642
- let name = message.n;
643
- let fdata = message.fdata;
496
+ const time = Date.now();
497
+ const name = message.n;
498
+ const fdata = message.fdata;
644
499
  if (!fdata) {
645
500
  return;
646
501
  }
647
- let doc = this.documents[name];
502
+ const doc = this.documents[name];
648
503
  if (!doc) {
649
504
  return;
650
505
  }
651
- let entities = doc.entities;
506
+ const entities = doc.entities;
652
507
  if (!entities) {
653
508
  return;
654
509
  }
@@ -656,34 +511,34 @@ var TopazCubeClient = class {
656
511
  if (!origin) {
657
512
  origin = [0, 0, 0];
658
513
  }
659
- for (let key in fdata) {
660
- let changes = fdata[key];
514
+ for (const key in fdata) {
515
+ const changes = fdata[key];
661
516
  if (changes.dict) {
662
- let pdata = changes.pdata;
663
- let dict = changes.dict;
664
- let rdict = {};
665
- for (let key2 in dict) {
517
+ const pdata = changes.pdata;
518
+ const dict = changes.dict;
519
+ const rdict = {};
520
+ for (const key2 in dict) {
666
521
  rdict[dict[key2]] = key2;
667
522
  }
668
523
  let offset = 0;
669
524
  while (offset < pdata.byteLength) {
670
- let id = "" + decode_uint32(pdata, offset);
525
+ const id = "" + decode_uint32(pdata, offset);
671
526
  offset += 4;
672
- let did = "" + decode_uint32(pdata, offset);
527
+ const did = "" + decode_uint32(pdata, offset);
673
528
  offset += 4;
674
- let e = entities[id];
529
+ const e = entities[id];
675
530
  if (!e) {
676
531
  continue;
677
532
  }
678
- let value = rdict[did];
533
+ const value = rdict[did];
679
534
  e[key] = value;
680
535
  e["_changed_" + key] = time;
681
536
  }
682
537
  } else {
683
- let pdata = changes.pdata;
538
+ const pdata = changes.pdata;
684
539
  let offset = 0;
685
540
  while (offset < pdata.byteLength) {
686
- let id = "" + decode_uint32(pdata, offset);
541
+ const id = "" + decode_uint32(pdata, offset);
687
542
  let e = entities[id];
688
543
  if (!e) {
689
544
  if (key == "position") {
@@ -778,7 +633,6 @@ var TopazCubeClient = class {
778
633
  }
779
634
  }
780
635
  }
781
- /*= WEBRTC ===================================================================*/
782
636
  sendRTC(message) {
783
637
  if (this._dataChannel && this._dataChannel.readyState === "open") {
784
638
  this._dataChannel.send(encode(message));
@@ -794,10 +648,10 @@ var TopazCubeClient = class {
794
648
  }
795
649
  async _onRTCMessage(data) {
796
650
  this.stats.recRTC += data.byteLength;
797
- let datau = new Uint8Array(data);
798
- let dec = await decompress(datau);
799
- let decu = new Uint8Array(dec);
800
- let message = decode(decu);
651
+ const datau = new Uint8Array(data);
652
+ const dec = await decompress(datau);
653
+ const decu = new Uint8Array(dec);
654
+ const message = decode(decu);
801
655
  this._onMessage(message);
802
656
  }
803
657
  async _initializeWebRTC() {
@@ -833,7 +687,7 @@ var TopazCubeClient = class {
833
687
  this._peerConnection.onicegatheringstatechange = () => {
834
688
  this.log(`RTC: ICE gathering state. _candidates:`, this._candidates.length, this._peerConnection?.iceGatheringState);
835
689
  if (this._peerConnection?.iceGatheringState == "complete" && this._offerSent) {
836
- for (let candidate of this._candidates) {
690
+ for (const candidate of this._candidates) {
837
691
  this.send({
838
692
  c: "rtc-candidate",
839
693
  type: "ice-candidate",
@@ -883,7 +737,7 @@ var TopazCubeClient = class {
883
737
  const offer = await this._peerConnection.createOffer(offerOptions);
884
738
  await this._peerConnection.setLocalDescription(offer);
885
739
  await new Promise((resolve) => setTimeout(resolve, 100));
886
- let ld = this._peerConnection.localDescription;
740
+ const ld = this._peerConnection.localDescription;
887
741
  if (ld) {
888
742
  const offerPayload = {
889
743
  c: "rtc-offer",
@@ -905,7 +759,6 @@ var TopazCubeClient = class {
905
759
  this.error("RTC: error:", error);
906
760
  }
907
761
  }
908
- // Add this method to restart ICE if needed
909
762
  async _restartIce() {
910
763
  try {
911
764
  const offerOptions = {
@@ -938,8 +791,8 @@ var TopazCubeClient = class {
938
791
  }
939
792
  this._webRTCConnected = false;
940
793
  }
941
- };
794
+ }
942
795
  export {
943
796
  TopazCubeClient as default
944
797
  };
945
- //# sourceMappingURL=client.js.map
798
+ //# sourceMappingURL=client.js.map