x_ite 16.3.1 → 16.4.0

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 (59) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +1 -1
  3. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  4. package/dist/assets/components/CADGeometryComponent.js +1 -1
  5. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturingComponent.js +1 -1
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +1 -1
  8. package/dist/assets/components/DISComponent.js +1 -1
  9. package/dist/assets/components/DISComponent.min.js +1 -1
  10. package/dist/assets/components/EventUtilitiesComponent.js +6 -5
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  12. package/dist/assets/components/GaussianSplatsComponent.js +1 -1
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +1 -1
  19. package/dist/assets/components/GeospatialComponent.min.js +1 -1
  20. package/dist/assets/components/HAnimComponent.js +1 -1
  21. package/dist/assets/components/HAnimComponent.min.js +1 -1
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  26. package/dist/assets/components/NURBSComponent.js +1 -1
  27. package/dist/assets/components/NURBSComponent.min.js +1 -1
  28. package/dist/assets/components/ParticleSystemsComponent.js +1 -1
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +1 -1
  30. package/dist/assets/components/PickingComponent.js +1 -1
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +1 -1
  34. package/dist/assets/components/ScriptingComponent.js +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  36. package/dist/assets/components/TextComponent.js +1 -1
  37. package/dist/assets/components/TextComponent.min.js +1 -1
  38. package/dist/assets/components/TextureProjectionComponent.js +1 -1
  39. package/dist/assets/components/TextureProjectionComponent.min.js +1 -1
  40. package/dist/assets/components/Texturing3DComponent.js +10 -10
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +1 -1
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +1 -1
  44. package/dist/assets/components/WebXRComponent.js +5 -3
  45. package/dist/assets/components/WebXRComponent.min.js +2 -2
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/assets/images/background-light.svg +1 -1
  49. package/dist/assets/images/head_mounted_device.svg +1 -0
  50. package/dist/assets/images/no_sound.svg +1 -1
  51. package/dist/example.html +1 -1
  52. package/dist/x_ite.css +1 -1
  53. package/dist/x_ite.js +104 -123
  54. package/dist/x_ite.min.js +2 -2
  55. package/dist/x_ite.min.mjs +2 -2
  56. package/dist/x_ite.mjs +104 -123
  57. package/dist/x_ite.zip +0 -0
  58. package/package.json +3 -3
  59. package/dist/assets/images/xr.svg +0 -1
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.3.1 */
1
+ /* X_ITE v16.4.0 */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory();
@@ -12,7 +12,7 @@
12
12
  return /******/ (() => { // webpackBootstrap
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 617
15
+ /***/ 530
16
16
  (module, exports) {
17
17
 
18
18
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1017,7 +1017,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1017
1017
 
1018
1018
  /***/ },
1019
1019
 
1020
- /***/ 851
1020
+ /***/ 504
1021
1021
  (module) {
1022
1022
 
1023
1023
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2013,7 +2013,7 @@ return /******/ (function(modules) { // webpackBootstrap
2013
2013
 
2014
2014
  /***/ },
2015
2015
 
2016
- /***/ 775
2016
+ /***/ 780
2017
2017
  (module) {
2018
2018
 
2019
2019
  /**
@@ -18889,7 +18889,7 @@ const Legacy_default_ = Legacy;
18889
18889
 
18890
18890
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18891
18891
  ;// ./src/x_ite/BROWSER_VERSION.js
18892
- const BROWSER_VERSION_default_ = "16.3.1";
18892
+ const BROWSER_VERSION_default_ = "16.4.0";
18893
18893
  ;
18894
18894
 
18895
18895
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -19346,7 +19346,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19346
19346
  // HTML
19347
19347
 
19348
19348
  const html = /* html */ `
19349
- <div class="x_ite-private-browser-timings x_ite-private-hidden"><table>
19349
+ <div class="x_ite-private-browser-timings x_ite-private-fade x_ite-private-hidden"><table>
19350
19350
  <thead>
19351
19351
  <tr>
19352
19352
  <th colspan="2">${gettext("Browser Timings")}</th>
@@ -19449,8 +19449,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19449
19449
 
19450
19450
  if (this .getBrowser () .getBrowserOption ("Timings"))
19451
19451
  {
19452
- element .classList .remove ("x_ite-private-fade-out-300", "x_ite-private-hidden");
19453
- element .classList .add ("x_ite-private-fade-in-300");
19452
+ element .classList .remove ("x_ite-private-hidden");
19454
19453
 
19455
19454
  this .getBrowser () .addBrowserCallback (this, Base_X3DConstants .INITIALIZED_EVENT, () => this .reset ());
19456
19455
  this .getBrowser () .prepareEvents () .addInterest ("update", this);
@@ -19458,8 +19457,7 @@ Object .assign (Object .setPrototypeOf (BrowserTimings .prototype, Base_X3DBaseN
19458
19457
  }
19459
19458
  else
19460
19459
  {
19461
- element .classList .remove ("x_ite-private-fade-in-300");
19462
- element .classList .add ("x_ite-private-fade-out-300");
19460
+ element .classList .add ("x_ite-private-hidden");
19463
19461
 
19464
19462
  this .getBrowser () .removeBrowserCallback (this, Base_X3DConstants .INITIALIZED_EVENT);
19465
19463
  this .getBrowser () .prepareEvents () .removeInterest ("update", this);
@@ -20364,19 +20362,18 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20364
20362
  {
20365
20363
  Base_X3DBaseNode .prototype .initialize .call (this);
20366
20364
 
20367
- this .element = (() =>
20368
- {
20369
- const element = document .createElement ("div");
20365
+ const
20366
+ element = document .createElement ("div"),
20367
+ span = document .createElement ("span");
20370
20368
 
20371
- element .style .visibility = "hidden";
20369
+ element .classList .add ("x_ite-private-notification");
20372
20370
 
20373
- element .append (document .createElement ("span"));
20374
- element .classList .add ("x_ite-private-notification");
20371
+ element .append (span);
20375
20372
 
20376
- this .getBrowser () .getSurface () .append (element);
20373
+ this .getBrowser () .getSurface () .append (element);
20377
20374
 
20378
- return element;
20379
- })();
20375
+ this .element = element;
20376
+ this .span = span;
20380
20377
 
20381
20378
  this ._string .addInterest ("set_string__", this);
20382
20379
  },
@@ -20390,12 +20387,12 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20390
20387
 
20391
20388
  clearTimeout (this .timeoutId);
20392
20389
 
20393
- this .element .querySelector ("span") .textContent = this ._string .getValue ();
20390
+ this .span .textContent = this ._string .getValue ();
20394
20391
 
20395
20392
  Object .assign (this .element .style,
20396
20393
  {
20397
20394
  visibility: "visible",
20398
- width: `${this .textWidth (this .element)}px`,
20395
+ width: `${this .span .clientWidth}px`,
20399
20396
  transition: "width 300ms ease-in-out",
20400
20397
  });
20401
20398
 
@@ -20410,22 +20407,6 @@ Object .assign (Object .setPrototypeOf (Notification .prototype, Base_X3DBaseNod
20410
20407
  },
20411
20408
  5000);
20412
20409
  },
20413
- textWidth (element)
20414
- {
20415
- const
20416
- children = Array .from (element .children),
20417
- span = document .createElement ("span");
20418
-
20419
- span .textContent = element .textContent;
20420
-
20421
- element .replaceChildren (span);
20422
-
20423
- const width = span .clientWidth;
20424
-
20425
- element .replaceChildren (... children);
20426
-
20427
- return width;
20428
- },
20429
20410
  });
20430
20411
 
20431
20412
  Object .defineProperties (Notification,
@@ -20528,12 +20509,9 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20528
20509
  layer .remove ();
20529
20510
 
20530
20511
  for (const child of ul .children)
20531
- {
20532
- child .classList .remove ("x_ite-private-fade-in-300");
20533
- child .classList .add ("x_ite-private-fade-out-300");
20534
- }
20512
+ child .classList .add ("x_ite-private-hidden");
20535
20513
 
20536
- setTimeout (() => ul .remove (), 1000);
20514
+ setTimeout (() => ul .remove (), 1_000);
20537
20515
 
20538
20516
  return false;
20539
20517
  };
@@ -20544,8 +20522,6 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20544
20522
 
20545
20523
  ul .classList .add ("context-menu-root", "context-menu-list", menu .className);
20546
20524
 
20547
- ul .style .display = "none";
20548
-
20549
20525
  ul .addEventListener ("contextmenu", () => this .hide ());
20550
20526
 
20551
20527
  root .append (ul);
@@ -20563,15 +20539,12 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20563
20539
  // Must animate children because of blurish background.
20564
20540
 
20565
20541
  for (const child of ul .children)
20566
- child .classList .add ("x_ite-private-hidden");
20542
+ child .classList .add ("x_ite-private-fade", "x_ite-private-hidden");
20567
20543
 
20568
20544
  ul .style .display = "block";
20569
20545
 
20570
20546
  for (const child of ul .children)
20571
- {
20572
20547
  child .classList .remove ("x_ite-private-hidden");
20573
- child .classList .add ("x_ite-private-fade-in-300");
20574
- }
20575
20548
 
20576
20549
  // Reposition menu if to right or to low.
20577
20550
 
@@ -20765,7 +20738,7 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
20765
20738
  className: "x_ite-private-menu",
20766
20739
  items: {
20767
20740
  "title": {
20768
- name: `${browser .getName ()} Browser v${browser .getVersion ()}`,
20741
+ name: `${browser .getName ()} v${browser .getVersion ()}`,
20769
20742
  className: "context-menu-title context-menu-icon x_ite-private-icon-logo context-menu-not-selectable",
20770
20743
  },
20771
20744
  "separator0": "--------",
@@ -21000,8 +20973,7 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
21000
20973
  overlay .classList .add ("x_ite-private-world-info-overlay");
21001
20974
  priv .append (overlay);
21002
20975
 
21003
- div .style .display = "none";
21004
- div .classList .add ("x_ite-private-world-info", "x_ite-private-hidden");
20976
+ div .classList .add ("x_ite-private-world-info", "x_ite-private-fade", "x_ite-private-hidden");
21005
20977
  overlay .append (div);
21006
20978
 
21007
20979
  const buttons = document .createElement ("div");
@@ -21132,13 +21104,12 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
21132
21104
 
21133
21105
  div .append (content);
21134
21106
 
21135
- div .style .display = "block";
21136
21107
  div .classList .remove ("x_ite-private-hidden");
21137
- div .classList .add ("x_ite-private-fade-in-300");
21138
21108
 
21139
21109
  overlay .addEventListener ("click", () =>
21140
21110
  {
21141
- div .classList .add ("x_ite-private-fade-out-300");
21111
+ div .classList .add ("x_ite-private-hidden");
21112
+
21142
21113
  setTimeout (() => overlay .remove (), 300);
21143
21114
  });
21144
21115
  },
@@ -21462,6 +21433,8 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21462
21433
  {
21463
21434
  if (instance ?.getType () .includes (Base_X3DConstants .X3DExecutionContext) ?? true)
21464
21435
  {
21436
+ // Make flat copy:
21437
+
21465
21438
  const copy = this .create (instance);
21466
21439
 
21467
21440
  for (const field of this .getPredefinedFields ())
@@ -21477,6 +21450,8 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21477
21450
  }
21478
21451
  else
21479
21452
  {
21453
+ // Make a copy for a X3DPrototypeInstance.
21454
+
21480
21455
  const executionContext = instance .getBody ();
21481
21456
 
21482
21457
  // First try to get a named node with the node's name.
@@ -26147,7 +26122,7 @@ Object .assign (X3DParser .prototype,
26147
26122
  if (!this .isInsideProtoDeclaration ())
26148
26123
  nodes .forEach (node => node .setup ());
26149
26124
 
26150
- nodes .length = 0;;
26125
+ nodes .length = 0;
26151
26126
  },
26152
26127
  rotateAxes90 (array)
26153
26128
  {
@@ -31215,7 +31190,7 @@ const Plane3_default_ = Plane3;
31215
31190
 
31216
31191
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31217
31192
  ;// ./src/standard/Math/Geometry/Triangle3.js
31218
- /* provided dependency */ var libtess = __webpack_require__(775);
31193
+ /* provided dependency */ var libtess = __webpack_require__(780);
31219
31194
 
31220
31195
 
31221
31196
  const Triangle3 =
@@ -47962,7 +47937,7 @@ const Bezier_default_ = Bezier;
47962
47937
 
47963
47938
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47964
47939
  ;// ./src/x_ite/Parser/SVGParser.js
47965
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(775);
47940
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(780);
47966
47941
 
47967
47942
 
47968
47943
 
@@ -50745,11 +50720,6 @@ class GoldenGate extends Parser_X3DParser
50745
50720
  return this .#parsers .slice ();
50746
50721
  }
50747
50722
 
50748
- /**
50749
- * @deprecated Use `GoldenGate.add/remove/getParsers`.
50750
- */
50751
- static get Parser () { return this .#parsers; }
50752
-
50753
50723
  parseIntoScene (x3dSyntax, resolve, reject)
50754
50724
  {
50755
50725
  for (const Parser of GoldenGate .#parsers)
@@ -50797,14 +50767,7 @@ class GoldenGate extends Parser_X3DParser
50797
50767
  }
50798
50768
  else
50799
50769
  {
50800
- if (this .#inputs .has (encoding))
50801
- return this .#inputs .get (encoding);
50802
-
50803
- const input = this .createInput (encoding, x3dSyntax);
50804
-
50805
- this .#inputs .set (encoding, input);
50806
-
50807
- return input;
50770
+ return this .#inputs .getOrInsertComputed (encoding, () => this .createInput (encoding, x3dSyntax));
50808
50771
  }
50809
50772
  }
50810
50773
 
@@ -50816,7 +50779,7 @@ class GoldenGate extends Parser_X3DParser
50816
50779
  {
50817
50780
  case "STRING":
50818
50781
  {
50819
- const string = helper.decodeText (x3dSyntax);;
50782
+ const string = helper.decodeText (x3dSyntax);
50820
50783
 
50821
50784
  if (x3dSyntax instanceof ArrayBuffer)
50822
50785
  {
@@ -54690,9 +54653,9 @@ function X3DCoreContext (element)
54690
54653
  <div class="x_ite-private-browser" part="browser" tabindex="0">
54691
54654
  <div class="x_ite-private-surface" part="surface">
54692
54655
  <canvas class="x_ite-private-canvas" part="canvas"></canvas>
54693
- <div class="x_ite-private-buttons" part="buttons"></div>
54656
+ <div class="x_ite-private-buttons x_ite-private-fade" part="buttons"></div>
54694
54657
  </div>
54695
- <div class="x_ite-private-splash-screen x_ite-private-hidden">
54658
+ <div class="x_ite-private-splash-screen x_ite-private-fade x_ite-private-hidden">
54696
54659
  <div class="x_ite-private-spinner"></div>
54697
54660
  <div class="x_ite-private-progress">
54698
54661
  <div class="x_ite-private-x_ite">
@@ -54716,7 +54679,7 @@ function X3DCoreContext (element)
54716
54679
  {
54717
54680
  const link = document .createElement ("link");
54718
54681
 
54719
- link .integrity = "sha384-x6y/hxdrQVgxMyDh++oW/v2xiaW7k1Rmjai5PMfLQ+DLzcx2odeW89DVDfzQkGs9";
54682
+ link .integrity = "sha384-/SECsklivyOEI8wp6xcDS0QDczGbqmxoaXDzSZCmJLpGmYfD16XJmOZr0O2QNDmj";
54720
54683
  link .rel = "stylesheet";
54721
54684
  link .crossOrigin = "anonymous";
54722
54685
  link .onload = resolve;
@@ -55015,12 +54978,7 @@ Object .assign (X3DCoreContext .prototype,
55015
54978
  this .setBrowserOption ("SplashScreen", this .parseBooleanAttribute (newValue) ?? true);
55016
54979
 
55017
54980
  if (!this .getBrowserOption ("SplashScreen"))
55018
- {
55019
- this .getCanvas () .style .display = "block";
55020
-
55021
- this .getSplashScreen () .classList .remove ("x_ite-private-fade-out-splash-screen");
55022
54981
  this .getSplashScreen () .classList .add ("x_ite-private-hidden");
55023
- }
55024
54982
 
55025
54983
  break;
55026
54984
  }
@@ -64188,7 +64146,7 @@ Object .assign (X3DNetworkingContext .prototype,
64188
64146
  {
64189
64147
  this .getContextMenu () .hide ();
64190
64148
  this .getCanvas () .style .display = "none";
64191
- this .getSplashScreen () .classList .remove ("x_ite-private-fade-out-splash-screen", "x_ite-private-hidden");
64149
+ this .getSplashScreen () .classList .remove ("x_ite-private-hidden");
64192
64150
  }
64193
64151
  }
64194
64152
  else
@@ -64203,7 +64161,7 @@ Object .assign (X3DNetworkingContext .prototype,
64203
64161
  setTimeout (() =>
64204
64162
  {
64205
64163
  if (!this [_browserLoading])
64206
- this .getSplashScreen () .classList .add ("x_ite-private-fade-out-splash-screen");
64164
+ this .getSplashScreen () .classList .add ("x_ite-private-hidden");
64207
64165
  });
64208
64166
  }
64209
64167
  }
@@ -66156,10 +66114,16 @@ Object .assign (X3DRenderingContext .prototype,
66156
66114
  {
66157
66115
  return Utility_Lock .acquire (this [_buttonLock], async () =>
66158
66116
  {
66159
- this .getSurface () .querySelector (".x_ite-private-xr-button") ?.remove ();
66160
66117
 
66161
66118
  if (!await this .xrCheckSupport ())
66119
+ {
66120
+ const button = this .getSurface () .querySelector (".x_ite-private-xr-button");
66121
+
66122
+ if (button)
66123
+ button .classList .add ("x_ite-private-hidden");
66124
+
66162
66125
  return;
66126
+ }
66163
66127
 
66164
66128
  await this .loadComponents (this .getComponent ("WebXR"), this .getComponent ("Geometry2D"));
66165
66129
 
@@ -71942,7 +71906,6 @@ const PeriodicWave_default_ = PeriodicWave;
71942
71906
 
71943
71907
 
71944
71908
 
71945
-
71946
71909
  const
71947
71910
  _audioContext = Symbol (),
71948
71911
  _soundDestinationNodes = Symbol (),
@@ -72053,7 +72016,7 @@ Object .assign (X3DSoundContext .prototype,
72053
72016
  noSoundButton = document .createElement ("div"),
72054
72017
  startAudioElements = () => this .startAudioElements ();
72055
72018
 
72056
- noSoundButton .classList .add ("x_ite-private-no-sound-button", "x_ite-private-button");
72019
+ noSoundButton .classList .add ("x_ite-private-no-sound-button", "x_ite-private-button", "x_ite-private-fade");
72057
72020
  noSoundButton .part ?.add ("no-sound-button");
72058
72021
 
72059
72022
  noSoundButton .title = gettext("Activate sound.");
@@ -72065,24 +72028,12 @@ Object .assign (X3DSoundContext .prototype,
72065
72028
  return noSoundButton;
72066
72029
  })();
72067
72030
 
72068
- const
72069
- count = !! this [_audioElements] .size,
72070
- fade = count ? "x_ite-private-fade-in-300" : "x_ite-private-fade-out-300";
72031
+ const count = !! this [_audioElements] .size;
72071
72032
 
72072
72033
  if (count)
72073
- this [_noSoundButton] .style .display = "";
72074
-
72075
- this [_noSoundButton] .classList .add (fade);
72076
-
72077
- await helper.sleep (400);
72078
-
72079
- this [_noSoundButton] .classList .remove (fade);
72080
-
72081
- if (count !== !! this [_audioElements] .size)
72082
- return;
72083
-
72084
- if (!count)
72085
- this [_noSoundButton] .style .display = "none";
72034
+ this [_noSoundButton] .classList .remove ("x_ite-private-hidden");
72035
+ else
72036
+ this [_noSoundButton] .classList .add ("x_ite-private-hidden");
72086
72037
  },
72087
72038
  200);
72088
72039
  },
@@ -84068,7 +84019,9 @@ const Inline_default_ = Inline;
84068
84019
  * THIS NODE IS STILL EXPERIMENTAL.
84069
84020
  */
84070
84021
 
84071
- const InlineGeometry_cache = Symbol .for ("X_ITE.cache");
84022
+ const
84023
+ InlineGeometry_cache = Symbol .for ("X_ITE.cache"),
84024
+ _lock = Symbol ();
84072
84025
 
84073
84026
  function InlineGeometry (executionContext)
84074
84027
  {
@@ -84099,43 +84052,54 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84099
84052
  },
84100
84053
  set_solid__ ()
84101
84054
  {
84102
- if (!this .geometryNode)
84055
+ const { geometryNode } = this;
84056
+
84057
+ if (!geometryNode)
84103
84058
  return;
84104
84059
 
84105
- if (this .geometryNode .getGeometryType () < 2)
84060
+ if (geometryNode .getGeometryType () < 2)
84106
84061
  return;
84107
84062
 
84108
- this .geometryNode ._solid = this ._solid;
84063
+ geometryNode ._solid = this ._solid;
84109
84064
  },
84110
84065
  set_smooth__ ()
84111
84066
  {
84112
- if (!this .geometryNode)
84067
+ const { geometryNode } = this;
84068
+
84069
+ if (!geometryNode)
84113
84070
  return;
84114
84071
 
84115
- if (this .geometryNode .getGeometryType () < 2)
84072
+ if (geometryNode .getGeometryType () < 3)
84073
+ return;
84074
+
84075
+ if (geometryNode ._normal ?.getValue ())
84116
84076
  return;
84117
84077
 
84118
84078
  const smooth = this ._smooth .getValue ();
84119
84079
 
84120
- if (this .geometryNode ._creaseAngle)
84080
+ if (geometryNode ._creaseAngle)
84121
84081
  {
84122
84082
  const creaseAngle = smooth ? Math .PI : 0;
84123
84083
 
84124
- if (this .geometryNode ._creaseAngle .equals (creaseAngle))
84084
+ if (geometryNode ._creaseAngle .equals (creaseAngle))
84125
84085
  return;
84126
84086
 
84127
- this .geometryNode ._creaseAngle = creaseAngle;
84087
+ geometryNode ._creaseAngle = creaseAngle;
84128
84088
  }
84129
- else if (this .geometryNode ._normal && !this .geometryNode ._normal .getValue ())
84089
+
84090
+ if (geometryNode ._normalPerVertex)
84130
84091
  {
84131
- if (this .geometryNode ._normalPerVertex .equals (smooth))
84092
+ if (geometryNode ._normalPerVertex .equals (smooth))
84132
84093
  return;
84133
84094
 
84134
- this .geometryNode ._normalPerVertex = smooth;
84095
+ geometryNode ._normalPerVertex = smooth;
84135
84096
  }
84136
84097
  },
84137
84098
  unloadData ()
84138
84099
  {
84100
+ if (this .geometryNode)
84101
+ this .geometryNode [_lock] = false;
84102
+
84139
84103
  this .fileLoader ?.abort ();
84140
84104
  this .setInternalScene (null);
84141
84105
  },
@@ -84143,6 +84107,9 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84143
84107
  {
84144
84108
  const cache = this .getBrowser () .getBrowserOption ("Cache");
84145
84109
 
84110
+ if (this .geometryNode)
84111
+ this .geometryNode [_lock] = false;
84112
+
84146
84113
  this .fileLoader ?.abort ();
84147
84114
 
84148
84115
  this .fileLoader = new InputOutput_FileLoader (this, { cacheScene: cache })
@@ -84152,13 +84119,8 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84152
84119
  {
84153
84120
  // Remove old scene.
84154
84121
 
84155
- if (this .scene)
84156
- {
84157
- this .getLive () .removeFieldInterest (this .scene .getLive ());
84158
-
84159
- if (!this .scene [InlineGeometry_cache])
84160
- this .scene .dispose ();
84161
- }
84122
+ if (!this .scene ?.[InlineGeometry_cache])
84123
+ this .scene ?.dispose ();
84162
84124
 
84163
84125
  // Set new scene.
84164
84126
 
@@ -84178,6 +84140,19 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84178
84140
  if (!this .geometryNode)
84179
84141
  throw new Error ("No X3DGeometryNode found.");
84180
84142
 
84143
+ if (this .geometryNode [_lock])
84144
+ {
84145
+ this .geometryNode = this .geometryNode .copy (this .getExecutionContext ());
84146
+
84147
+ this .geometryNode .setup ();
84148
+
84149
+ // TODO: add routes.
84150
+ }
84151
+ else
84152
+ {
84153
+ this .geometryNode [_lock] = true;
84154
+ }
84155
+
84181
84156
  this .scene .setExecutionContext (scene [InlineGeometry_cache] ? browser .getDefaultScene () : this .getExecutionContext ());
84182
84157
  this .scene .setLive (true);
84183
84158
 
@@ -84259,6 +84234,9 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84259
84234
  { },
84260
84235
  dispose ()
84261
84236
  {
84237
+ if (this .geometryNode)
84238
+ this .geometryNode [_lock] = false;
84239
+
84262
84240
  Networking_X3DUrlObject .prototype .dispose .call (this);
84263
84241
  Rendering_X3DGeometryNode .prototype .dispose .call (this);
84264
84242
  },
@@ -88725,7 +88703,10 @@ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSo
88725
88703
  },
88726
88704
  set_mediaDeviceID_impl__ ()
88727
88705
  {
88728
- const sinkId = this ._mediaDeviceID .getValue () || "default";
88706
+ const sinkId = this ._mediaDeviceID .getValue ();
88707
+
88708
+ if (this .audioElement .sinkId === sinkId)
88709
+ return Promise .resolve ();
88729
88710
 
88730
88711
  return this .audioElement .setSinkId ?.(sinkId) ?? Promise .resolve ();
88731
88712
  },
@@ -91565,8 +91546,8 @@ const PNGMedia_default_ = PNGMedia;
91565
91546
 
91566
91547
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91567
91548
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91568
- /* provided dependency */ var SuperGif = __webpack_require__(617);
91569
- /* provided dependency */ var APNG = __webpack_require__(851);
91549
+ /* provided dependency */ var SuperGif = __webpack_require__(530);
91550
+ /* provided dependency */ var APNG = __webpack_require__(504);
91570
91551
 
91571
91552
 
91572
91553
 
@@ -94210,7 +94191,7 @@ const QuickSort_default_ = QuickSort;
94210
94191
 
94211
94192
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94212
94193
  ;// ./src/lib/libtess.js
94213
- /* provided dependency */ var libtess_libtess = __webpack_require__(775);
94194
+ /* provided dependency */ var libtess_libtess = __webpack_require__(780);
94214
94195
  const libtess_default_ = libtess_libtess;
94215
94196
  ;
94216
94197