topazcube 0.1.30 → 0.1.33

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 (96) hide show
  1. package/LICENSE.txt +0 -0
  2. package/README.md +0 -0
  3. package/dist/Renderer.cjs +18200 -0
  4. package/dist/Renderer.cjs.map +1 -0
  5. package/dist/Renderer.js +18183 -0
  6. package/dist/Renderer.js.map +1 -0
  7. package/dist/client.cjs +94 -260
  8. package/dist/client.cjs.map +1 -1
  9. package/dist/client.js +71 -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} +173 -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 +572 -0
  33. package/src/renderer/Geometry.js +1049 -0
  34. package/src/renderer/Material.js +61 -0
  35. package/src/renderer/Mesh.js +211 -0
  36. package/src/renderer/Node.js +112 -0
  37. package/src/renderer/Pipeline.js +643 -0
  38. package/src/renderer/Renderer.js +1324 -0
  39. package/src/renderer/Skin.js +792 -0
  40. package/src/renderer/Texture.js +584 -0
  41. package/src/renderer/core/AssetManager.js +359 -0
  42. package/src/renderer/core/CullingSystem.js +307 -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 +546 -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 +2064 -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 +417 -0
  58. package/src/renderer/rendering/passes/FogPass.js +419 -0
  59. package/src/renderer/rendering/passes/GBufferPass.js +706 -0
  60. package/src/renderer/rendering/passes/HiZPass.js +714 -0
  61. package/src/renderer/rendering/passes/LightingPass.js +739 -0
  62. package/src/renderer/rendering/passes/ParticlePass.js +835 -0
  63. package/src/renderer/rendering/passes/PlanarReflectionPass.js +456 -0
  64. package/src/renderer/rendering/passes/PostProcessPass.js +282 -0
  65. package/src/renderer/rendering/passes/ReflectionPass.js +157 -0
  66. package/src/renderer/rendering/passes/RenderPostPass.js +364 -0
  67. package/src/renderer/rendering/passes/SSGIPass.js +265 -0
  68. package/src/renderer/rendering/passes/SSGITilePass.js +296 -0
  69. package/src/renderer/rendering/passes/ShadowPass.js +1822 -0
  70. package/src/renderer/rendering/passes/TransparentPass.js +831 -0
  71. package/src/renderer/rendering/shaders/ao.wgsl +182 -0
  72. package/src/renderer/rendering/shaders/bloom.wgsl +97 -0
  73. package/src/renderer/rendering/shaders/bloom_blur.wgsl +80 -0
  74. package/src/renderer/rendering/shaders/depth_copy.wgsl +17 -0
  75. package/src/renderer/rendering/shaders/geometry.wgsl +550 -0
  76. package/src/renderer/rendering/shaders/hiz_reduce.wgsl +114 -0
  77. package/src/renderer/rendering/shaders/light_culling.wgsl +204 -0
  78. package/src/renderer/rendering/shaders/lighting.wgsl +932 -0
  79. package/src/renderer/rendering/shaders/lighting_common.wgsl +143 -0
  80. package/src/renderer/rendering/shaders/particle_render.wgsl +525 -0
  81. package/src/renderer/rendering/shaders/particle_simulate.wgsl +440 -0
  82. package/src/renderer/rendering/shaders/postproc.wgsl +272 -0
  83. package/src/renderer/rendering/shaders/render_post.wgsl +289 -0
  84. package/src/renderer/rendering/shaders/shadow.wgsl +76 -0
  85. package/src/renderer/rendering/shaders/ssgi.wgsl +266 -0
  86. package/src/renderer/rendering/shaders/ssgi_accumulate.wgsl +114 -0
  87. package/src/renderer/rendering/shaders/ssgi_propagate.wgsl +132 -0
  88. package/src/renderer/utils/BoundingSphere.js +439 -0
  89. package/src/renderer/utils/Frustum.js +281 -0
  90. package/dist/client.d.cts +0 -211
  91. package/dist/client.d.ts +0 -211
  92. package/dist/server.d.cts +0 -120
  93. package/dist/server.d.ts +0 -120
  94. package/dist/terminal.d.cts +0 -64
  95. package/dist/terminal.d.ts +0 -64
  96. 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,14 +297,16 @@ 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) {
448
303
  }
449
304
  send(operation) {
305
+ if (!this.isConnected) {
306
+ return;
307
+ }
450
308
  try {
451
- let enc = encode(operation);
309
+ const enc = encode(operation);
452
310
  this.stats.send += enc.byteLength;
453
311
  if (this.socket) {
454
312
  this.socket.send(enc);
@@ -458,14 +316,14 @@ var TopazCubeClient = class {
458
316
  }
459
317
  }
460
318
  get document() {
461
- let names = "" + Object.keys(this.documents);
319
+ const names = "" + Object.keys(this.documents);
462
320
  return this.documents["" + names[0]];
463
321
  }
464
322
  async _onMessage(message) {
465
323
  let time = Date.now();
466
324
  if (message.c == "full") {
467
- let name = "" + message.n;
468
- let doc = message.doc;
325
+ const name = "" + message.n;
326
+ const doc = message.doc;
469
327
  this.documents[name] = doc;
470
328
  this._decodeFastChanges(message);
471
329
  this.isPatched = false;
@@ -484,15 +342,15 @@ var TopazCubeClient = class {
484
342
  }
485
343
  } else if (message.c == "patch") {
486
344
  this.lastPatch = message.t;
487
- let name = message.n;
345
+ const name = message.n;
488
346
  if (!this.documents[name]) {
489
347
  this.warn("Patch for unknown document", name);
490
348
  return;
491
349
  }
492
350
  if (message.doc) {
493
351
  this.isPatched = true;
494
- for (let op of message.doc) {
495
- let dop = msgop(op);
352
+ for (const op of message.doc) {
353
+ const dop = msgop(op);
496
354
  try {
497
355
  applyOperation(this.documents[name], dop);
498
356
  } catch (e) {
@@ -508,13 +366,13 @@ var TopazCubeClient = class {
508
366
  this._chunks[message.mid + "-" + message.seq] = message;
509
367
  if (message.last) {
510
368
  let cfound = 0;
511
- let ts = message.ts;
512
- let cdata = new Uint8Array(ts);
369
+ const ts = message.ts;
370
+ const cdata = new Uint8Array(ts);
513
371
  for (const cid in this._chunks) {
514
- let chunk = this._chunks[cid];
372
+ const chunk = this._chunks[cid];
515
373
  if (chunk.mid == message.mid) {
516
- let offset = chunk.ofs;
517
- let _csize = chunk.chs;
374
+ const offset = chunk.ofs;
375
+ chunk.chs;
518
376
  cdata.set(new Uint8Array(chunk.data), offset);
519
377
  cfound++;
520
378
  delete this._chunks[cid];
@@ -522,9 +380,9 @@ var TopazCubeClient = class {
522
380
  }
523
381
  if (cfound == message.seq + 1) {
524
382
  try {
525
- let cdec = await decompress(cdata);
526
- let cdecu = new Uint8Array(cdec);
527
- let nmessage = decode(cdecu);
383
+ const cdec = await decompress(cdata);
384
+ const cdecu = new Uint8Array(cdec);
385
+ const nmessage = decode(cdecu);
528
386
  this._onMessage(nmessage);
529
387
  } catch (error) {
530
388
  this.error("Error decoding chunks:", error);
@@ -535,13 +393,13 @@ var TopazCubeClient = class {
535
393
  }
536
394
  } else if (message.c == "fpatch") {
537
395
  time = Date.now();
538
- let name = message.n;
396
+ const name = message.n;
539
397
  let doPatch = true;
540
398
  if (!this._lastUpdateId[name]) {
541
399
  this._lastUpdateId[name] = message.u;
542
400
  } else {
543
401
  if (this._lastUpdateId[name] < message.u) {
544
- let lp = message.u - this._lastUpdateId[name] - 1;
402
+ const lp = message.u - this._lastUpdateId[name] - 1;
545
403
  if (lp > 0) {
546
404
  this.warn("Lost " + lp + " updates");
547
405
  }
@@ -557,9 +415,9 @@ var TopazCubeClient = class {
557
415
  } else if (message.c == "pong") {
558
416
  this.ID = message.ID;
559
417
  time = Date.now();
560
- let lastct = message.ct;
561
- let ping = time - lastct;
562
- let stime = message.t;
418
+ const lastct = message.ct;
419
+ const ping = time - lastct;
420
+ const stime = message.t;
563
421
  this.send({ c: "peng", ct: Date.now(), st: stime });
564
422
  this.stats.stdiff = stime + ping / 2 - time;
565
423
  this.stats.ping = ping;
@@ -577,7 +435,7 @@ var TopazCubeClient = class {
577
435
  await this._peerConnection.setRemoteDescription(sessionDesc);
578
436
  }
579
437
  this.log("RTC: Remote description set successfully");
580
- for (let candidate of this._remoteCandidates) {
438
+ for (const candidate of this._remoteCandidates) {
581
439
  try {
582
440
  await this._peerConnection?.addIceCandidate(candidate);
583
441
  this.log("RTC: Added remote ICE candidate:", candidate);
@@ -613,12 +471,12 @@ var TopazCubeClient = class {
613
471
  this._documentChanges[name].push(opmsg(op, target, path, value));
614
472
  }
615
473
  _sendPatches() {
616
- for (let name in this._documentChanges) {
617
- let dc = this._documentChanges[name];
474
+ for (const name in this._documentChanges) {
475
+ const dc = this._documentChanges[name];
618
476
  if (!dc || dc.length == 0) {
619
477
  continue;
620
478
  }
621
- let record = {
479
+ const record = {
622
480
  n: name,
623
481
  c: "sync",
624
482
  ct: Date.now(),
@@ -635,17 +493,17 @@ var TopazCubeClient = class {
635
493
  }
636
494
  }
637
495
  _decodeFastChanges(message) {
638
- let time = Date.now();
639
- let name = message.n;
640
- let fdata = message.fdata;
496
+ const time = Date.now();
497
+ const name = message.n;
498
+ const fdata = message.fdata;
641
499
  if (!fdata) {
642
500
  return;
643
501
  }
644
- let doc = this.documents[name];
502
+ const doc = this.documents[name];
645
503
  if (!doc) {
646
504
  return;
647
505
  }
648
- let entities = doc.entities;
506
+ const entities = doc.entities;
649
507
  if (!entities) {
650
508
  return;
651
509
  }
@@ -653,34 +511,34 @@ var TopazCubeClient = class {
653
511
  if (!origin) {
654
512
  origin = [0, 0, 0];
655
513
  }
656
- for (let key in fdata) {
657
- let changes = fdata[key];
514
+ for (const key in fdata) {
515
+ const changes = fdata[key];
658
516
  if (changes.dict) {
659
- let pdata = changes.pdata;
660
- let dict = changes.dict;
661
- let rdict = {};
662
- for (let key2 in dict) {
517
+ const pdata = changes.pdata;
518
+ const dict = changes.dict;
519
+ const rdict = {};
520
+ for (const key2 in dict) {
663
521
  rdict[dict[key2]] = key2;
664
522
  }
665
523
  let offset = 0;
666
524
  while (offset < pdata.byteLength) {
667
- let id = "" + decode_uint32(pdata, offset);
525
+ const id = "" + decode_uint32(pdata, offset);
668
526
  offset += 4;
669
- let did = "" + decode_uint32(pdata, offset);
527
+ const did = "" + decode_uint32(pdata, offset);
670
528
  offset += 4;
671
- let e = entities[id];
529
+ const e = entities[id];
672
530
  if (!e) {
673
531
  continue;
674
532
  }
675
- let value = rdict[did];
533
+ const value = rdict[did];
676
534
  e[key] = value;
677
535
  e["_changed_" + key] = time;
678
536
  }
679
537
  } else {
680
- let pdata = changes.pdata;
538
+ const pdata = changes.pdata;
681
539
  let offset = 0;
682
540
  while (offset < pdata.byteLength) {
683
- let id = "" + decode_uint32(pdata, offset);
541
+ const id = "" + decode_uint32(pdata, offset);
684
542
  let e = entities[id];
685
543
  if (!e) {
686
544
  if (key == "position") {
@@ -775,7 +633,6 @@ var TopazCubeClient = class {
775
633
  }
776
634
  }
777
635
  }
778
- /*= WEBRTC ===================================================================*/
779
636
  sendRTC(message) {
780
637
  if (this._dataChannel && this._dataChannel.readyState === "open") {
781
638
  this._dataChannel.send(encode(message));
@@ -791,10 +648,10 @@ var TopazCubeClient = class {
791
648
  }
792
649
  async _onRTCMessage(data) {
793
650
  this.stats.recRTC += data.byteLength;
794
- let datau = new Uint8Array(data);
795
- let dec = await decompress(datau);
796
- let decu = new Uint8Array(dec);
797
- 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);
798
655
  this._onMessage(message);
799
656
  }
800
657
  async _initializeWebRTC() {
@@ -830,7 +687,7 @@ var TopazCubeClient = class {
830
687
  this._peerConnection.onicegatheringstatechange = () => {
831
688
  this.log(`RTC: ICE gathering state. _candidates:`, this._candidates.length, this._peerConnection?.iceGatheringState);
832
689
  if (this._peerConnection?.iceGatheringState == "complete" && this._offerSent) {
833
- for (let candidate of this._candidates) {
690
+ for (const candidate of this._candidates) {
834
691
  this.send({
835
692
  c: "rtc-candidate",
836
693
  type: "ice-candidate",
@@ -880,7 +737,7 @@ var TopazCubeClient = class {
880
737
  const offer = await this._peerConnection.createOffer(offerOptions);
881
738
  await this._peerConnection.setLocalDescription(offer);
882
739
  await new Promise((resolve) => setTimeout(resolve, 100));
883
- let ld = this._peerConnection.localDescription;
740
+ const ld = this._peerConnection.localDescription;
884
741
  if (ld) {
885
742
  const offerPayload = {
886
743
  c: "rtc-offer",
@@ -902,7 +759,6 @@ var TopazCubeClient = class {
902
759
  this.error("RTC: error:", error);
903
760
  }
904
761
  }
905
- // Add this method to restart ICE if needed
906
762
  async _restartIce() {
907
763
  try {
908
764
  const offerOptions = {
@@ -935,8 +791,8 @@ var TopazCubeClient = class {
935
791
  }
936
792
  this._webRTCConnected = false;
937
793
  }
938
- };
794
+ }
939
795
  export {
940
796
  TopazCubeClient as default
941
797
  };
942
- //# sourceMappingURL=client.js.map
798
+ //# sourceMappingURL=client.js.map