x_ite 16.1.3 → 16.3.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 (56) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +17 -38
  3. package/dist/assets/components/AnnotationComponent.min.js +2 -2
  4. package/dist/assets/components/CADGeometryComponent.js +17 -38
  5. package/dist/assets/components/CADGeometryComponent.min.js +2 -2
  6. package/dist/assets/components/CubeMapTexturingComponent.js +17 -38
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
  8. package/dist/assets/components/DISComponent.js +17 -38
  9. package/dist/assets/components/DISComponent.min.js +2 -2
  10. package/dist/assets/components/EventUtilitiesComponent.js +17 -38
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  12. package/dist/assets/components/GaussianSplatsComponent.js +17 -38
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +2 -2
  14. package/dist/assets/components/Geometry2DComponent.js +17 -38
  15. package/dist/assets/components/Geometry2DComponent.min.js +2 -2
  16. package/dist/assets/components/Geometry3DComponent.js +17 -38
  17. package/dist/assets/components/Geometry3DComponent.min.js +2 -2
  18. package/dist/assets/components/GeospatialComponent.js +17 -38
  19. package/dist/assets/components/GeospatialComponent.min.js +2 -2
  20. package/dist/assets/components/HAnimComponent.js +17 -38
  21. package/dist/assets/components/HAnimComponent.min.js +2 -2
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +17 -38
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +2 -2
  24. package/dist/assets/components/LayoutComponent.js +17 -38
  25. package/dist/assets/components/LayoutComponent.min.js +2 -2
  26. package/dist/assets/components/NURBSComponent.js +18 -39
  27. package/dist/assets/components/NURBSComponent.min.js +2 -2
  28. package/dist/assets/components/ParticleSystemsComponent.js +17 -38
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +2 -2
  30. package/dist/assets/components/PickingComponent.js +17 -38
  31. package/dist/assets/components/PickingComponent.min.js +2 -2
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +28 -39
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +2 -2
  34. package/dist/assets/components/ScriptingComponent.js +17 -38
  35. package/dist/assets/components/ScriptingComponent.min.js +2 -2
  36. package/dist/assets/components/TextComponent.js +17 -38
  37. package/dist/assets/components/TextComponent.min.js +2 -2
  38. package/dist/assets/components/TextureProjectionComponent.js +17 -38
  39. package/dist/assets/components/TextureProjectionComponent.min.js +2 -2
  40. package/dist/assets/components/Texturing3DComponent.js +27 -46
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +17 -38
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +2 -2
  44. package/dist/assets/components/WebXRComponent.js +17 -38
  45. package/dist/assets/components/WebXRComponent.min.js +2 -2
  46. package/dist/assets/components/X_ITEComponent.js +128 -39
  47. package/dist/assets/components/X_ITEComponent.min.js +2 -2
  48. package/dist/example.html +1 -1
  49. package/dist/x_ite.css +1 -1
  50. package/dist/x_ite.d.ts +3 -0
  51. package/dist/x_ite.js +294 -194
  52. package/dist/x_ite.min.js +2 -2
  53. package/dist/x_ite.min.mjs +2 -2
  54. package/dist/x_ite.mjs +294 -194
  55. package/dist/x_ite.zip +0 -0
  56. package/package.json +8 -8
package/dist/x_ite.mjs CHANGED
@@ -1,7 +1,7 @@
1
- /* X_ITE v16.1.3 */
1
+ /* X_ITE v16.3.0 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 143
4
+ /***/ 133
5
5
  (module, exports) {
6
6
 
7
7
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1006,7 +1006,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1006
1006
 
1007
1007
  /***/ },
1008
1008
 
1009
- /***/ 701
1009
+ /***/ 991
1010
1010
  (module) {
1011
1011
 
1012
1012
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2002,7 +2002,7 @@ return /******/ (function(modules) { // webpackBootstrap
2002
2002
 
2003
2003
  /***/ },
2004
2004
 
2005
- /***/ 877
2005
+ /***/ 643
2006
2006
  (module) {
2007
2007
 
2008
2008
  /**
@@ -6809,48 +6809,27 @@ if (true) {
6809
6809
  /******/
6810
6810
  /************************************************************************/
6811
6811
  /******/ /* webpack/runtime/define property getters */
6812
- /******/ (() => {
6813
- /******/ // define getter/value functions for harmony exports
6814
- /******/ __webpack_require__.d = (exports, definition) => {
6815
- /******/ if(Array.isArray(definition)) {
6816
- /******/ var i = 0;
6817
- /******/ while(i < definition.length) {
6818
- /******/ var key = definition[i++];
6819
- /******/ var binding = definition[i++];
6820
- /******/ if(!__webpack_require__.o(exports, key)) {
6821
- /******/ if(binding === 0) {
6822
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
6823
- /******/ } else {
6824
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
6825
- /******/ }
6826
- /******/ } else if(binding === 0) { i++; }
6827
- /******/ }
6828
- /******/ } else {
6829
- /******/ for(var key in definition) {
6830
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
6831
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
6832
- /******/ }
6833
- /******/ }
6812
+ /******/ // define getter/value functions for harmony exports
6813
+ /******/ __webpack_require__.d = (exports, definition) => {
6814
+ /******/ for(var key in definition) {
6815
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
6816
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
6834
6817
  /******/ }
6835
- /******/ };
6836
- /******/ })();
6818
+ /******/ }
6819
+ /******/ };
6837
6820
  /******/
6838
6821
  /******/ /* webpack/runtime/global */
6839
- /******/ (() => {
6840
- /******/ __webpack_require__.g = (function() {
6841
- /******/ if (typeof globalThis === 'object') return globalThis;
6842
- /******/ try {
6843
- /******/ return this || new Function('return this')();
6844
- /******/ } catch (e) {
6845
- /******/ if (typeof window === 'object') return window;
6846
- /******/ }
6847
- /******/ })();
6822
+ /******/ __webpack_require__.g = (function() {
6823
+ /******/ if (typeof globalThis === 'object') return globalThis;
6824
+ /******/ try {
6825
+ /******/ return this || new Function('return this')();
6826
+ /******/ } catch (e) {
6827
+ /******/ if (typeof window === 'object') return window;
6828
+ /******/ }
6848
6829
  /******/ })();
6849
6830
  /******/
6850
6831
  /******/ /* webpack/runtime/hasOwnProperty shorthand */
6851
- /******/ (() => {
6852
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
6853
- /******/ })();
6832
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
6854
6833
  /******/
6855
6834
  /************************************************************************/
6856
6835
 
@@ -6861,7 +6840,7 @@ Object .defineProperty (Namespace, "add",
6861
6840
  {
6862
6841
  value (name, module)
6863
6842
  {
6864
- if (Namespace .hasOwnProperty (name))
6843
+ if (Object .hasOwn (Namespace, name))
6865
6844
  {
6866
6845
  console .error (new Error (`Namespace: "${name}" already exists.`));
6867
6846
  return module;
@@ -6891,18 +6870,22 @@ Object .defineProperty (X3DConstants, "addConstant",
6891
6870
  {
6892
6871
  value (name, value)
6893
6872
  {
6894
- if (this .hasOwnProperty (name) || this .hasOwnProperty (value))
6873
+ if (Object .hasOwn (this, name) || Object .hasOwn (this, value))
6895
6874
  return;
6896
6875
 
6897
- Object .defineProperty (this, name,
6898
- {
6899
- value: value ?? ++ CONSTANT_VALUE,
6900
- enumerable: true,
6901
- });
6876
+ value ??= ++ CONSTANT_VALUE;
6902
6877
 
6903
- Object .defineProperty (this, this [name],
6878
+ Object .defineProperties (this,
6904
6879
  {
6905
- value: name,
6880
+ [name]:
6881
+ {
6882
+ value: value,
6883
+ enumerable: true,
6884
+ },
6885
+ [value]:
6886
+ {
6887
+ value: name,
6888
+ },
6906
6889
  });
6907
6890
  },
6908
6891
  });
@@ -18882,7 +18865,7 @@ const Legacy_default_ = Legacy;
18882
18865
 
18883
18866
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18884
18867
  ;// ./src/x_ite/BROWSER_VERSION.js
18885
- const BROWSER_VERSION_default_ = "16.1.3";
18868
+ const BROWSER_VERSION_default_ = "16.3.0";
18886
18869
  ;
18887
18870
 
18888
18871
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -18992,37 +18975,28 @@ const dictionary_default_ = [
18992
18975
  {
18993
18976
  en: "fps",
18994
18977
  de: "BpS",
18995
- fr: "",
18996
18978
  },
18997
18979
  {
18998
18980
  en: "Speed",
18999
18981
  de: "Geschwindigkeit",
19000
- fr: "Vélocité",
18982
+ fr: "Vitesse",
19001
18983
  },
19002
18984
  {
19003
18985
  en: "m/s",
19004
- de: "",
19005
- fr: "",
19006
18986
  },
19007
18987
  {
19008
18988
  en: "km/h",
19009
- de: "",
19010
- fr: "",
19011
18989
  },
19012
18990
  {
19013
18991
  en: "Browser",
19014
- de: "",
19015
18992
  fr: "Navigateur",
19016
18993
  },
19017
18994
  {
19018
18995
  en: "ms",
19019
- de: "",
19020
- fr: "",
19021
18996
  },
19022
18997
  {
19023
18998
  en: "X3D total",
19024
18999
  de: "X3D gesamt",
19025
- fr: "X3D total",
19026
19000
  },
19027
19001
  {
19028
19002
  en: "Event Processing",
@@ -19047,12 +19021,12 @@ const dictionary_default_ = [
19047
19021
  {
19048
19022
  en: "Rendering",
19049
19023
  de: "Rendering",
19050
- fr: "Rendement",
19024
+ fr: "Rendu",
19051
19025
  },
19052
19026
  {
19053
19027
  en: "Number of Primitives",
19054
19028
  de: "Anzahl der Grundobjekte",
19055
- fr: "Nombre d'Objets de Base",
19029
+ fr: "Nombre de Primitives",
19056
19030
  },
19057
19031
  {
19058
19032
  en: "Number of Shapes",
@@ -19062,12 +19036,12 @@ const dictionary_default_ = [
19062
19036
  {
19063
19037
  en: "Number of Sensors",
19064
19038
  de: "Anzahl der Sensoren",
19065
- fr: "Nombre de Senseurs",
19039
+ fr: "Nombre de Capteurs",
19066
19040
  },
19067
19041
  {
19068
19042
  en: "Browser Timings",
19069
19043
  de: "Zeitberechnung",
19070
- fr: "Calcul du Temps",
19044
+ fr: "Temps du Navigateur",
19071
19045
  },
19072
19046
  {
19073
19047
  en: "Viewpoints",
@@ -19077,7 +19051,7 @@ const dictionary_default_ = [
19077
19051
  {
19078
19052
  en: "Available Viewers",
19079
19053
  de: "Verfügbare Betrachter",
19080
- fr: "Visionneurs disponibles",
19054
+ fr: "Visionneurs disponibles",
19081
19055
  },
19082
19056
  {
19083
19057
  en: "Straighten Horizon",
@@ -19087,17 +19061,17 @@ const dictionary_default_ = [
19087
19061
  {
19088
19062
  en: "Primitive Quality",
19089
19063
  de: "Qualität der Grundobjekte",
19090
- fr: "Qualité des Objets simples",
19064
+ fr: "Qualité des Primitives",
19091
19065
  },
19092
19066
  {
19093
19067
  en: "High",
19094
19068
  de: "Hoch",
19095
- fr: "Haut",
19069
+ fr: "Élevée",
19096
19070
  },
19097
19071
  {
19098
19072
  en: "high",
19099
19073
  de: "hoch",
19100
- fr: "haut",
19074
+ fr: "élevée",
19101
19075
  },
19102
19076
  {
19103
19077
  en: "Medium",
@@ -19121,18 +19095,18 @@ const dictionary_default_ = [
19121
19095
  },
19122
19096
  {
19123
19097
  en: "Texture Quality",
19124
- de: "Textur Qualität",
19098
+ de: "Texturqualität",
19125
19099
  fr: "Qualité des Textures",
19126
19100
  },
19127
19101
  {
19128
19102
  en: "Display Rubberband",
19129
19103
  de: "Gummiband anzeigen",
19130
- fr: "Présenter le Bande élastique",
19104
+ fr: "Afficher la Sélection élastique",
19131
19105
  },
19132
19106
  {
19133
19107
  en: "Rubberband",
19134
19108
  de: "Gummiband",
19135
- fr: "Bande élastique",
19109
+ fr: "Sélection élastique",
19136
19110
  },
19137
19111
  {
19138
19112
  en: "on",
@@ -19147,22 +19121,22 @@ const dictionary_default_ = [
19147
19121
  {
19148
19122
  en: "Mute Browser",
19149
19123
  de: "Browser stumm schalten",
19150
- fr: "Rendre Navigateur muet",
19124
+ fr: "Couper le Son du Navigateur",
19151
19125
  },
19152
19126
  {
19153
19127
  en: "Browser muted",
19154
- de: "Browser stumm geschalten",
19155
- fr: "Navigateur muet",
19128
+ de: "Browser stummgeschaltet",
19129
+ fr: "Son du Navigateur coupé",
19156
19130
  },
19157
19131
  {
19158
19132
  en: "Browser unmuted",
19159
- de: "Browser Ton an",
19160
- fr: "Son de Navigateur réactivé",
19133
+ de: "Browserton eingeschaltet",
19134
+ fr: "Son du Navigateur rétabli",
19161
19135
  },
19162
19136
  {
19163
19137
  en: "Leave Fullscreen",
19164
19138
  de: "Vollbild verlassen",
19165
- fr: "Laisser le plein Écran",
19139
+ fr: "Quitter le Plein Écran",
19166
19140
  },
19167
19141
  {
19168
19142
  en: "Fullscreen",
@@ -19207,7 +19181,6 @@ const dictionary_default_ = [
19207
19181
  {
19208
19182
  en: "Points",
19209
19183
  de: "Punkte",
19210
- fr: "",
19211
19184
  },
19212
19185
  {
19213
19186
  en: "Flat",
@@ -19216,7 +19189,7 @@ const dictionary_default_ = [
19216
19189
  },
19217
19190
  {
19218
19191
  en: "Wireframe",
19219
- de: "Drahtgittermodel",
19192
+ de: "Drahtgittermodell",
19220
19193
  fr: "Image filaire",
19221
19194
  },
19222
19195
  {
@@ -19237,7 +19210,7 @@ const dictionary_default_ = [
19237
19210
  {
19238
19211
  en: "Failed loading world.",
19239
19212
  de: "Laden der Dateien fehlgeschlagen.",
19240
- fr: "Le chargement des Fichiers a échoué.",
19213
+ fr: "Le chargement des fichiers a échoué.",
19241
19214
  },
19242
19215
  {
19243
19216
  en: "Show World Info",
@@ -19247,12 +19220,11 @@ const dictionary_default_ = [
19247
19220
  {
19248
19221
  en: "Viewpoint is copied to clipboard.",
19249
19222
  de: "Ansichtspunkt wurde in die Zwischenablage kopiert.",
19250
- fr: "Le point de Vue est copié dans le Presse-Papiers.",
19223
+ fr: "Le point de vue a été copié dans le presse-papiers.",
19251
19224
  },
19252
19225
  {
19253
19226
  en: "Animations",
19254
- de: "Animationen",
19255
- fr: "",
19227
+ fr: "Séquences animées",
19256
19228
  },
19257
19229
  {
19258
19230
  en: "All",
@@ -19266,18 +19238,18 @@ const dictionary_default_ = [
19266
19238
  },
19267
19239
  {
19268
19240
  en: "Start WebXR session.",
19269
- de: "Starte eine WebXR Session.",
19270
- fr: "Démarrez une session WebXR.",
19241
+ de: "WebXR-Sitzung starten.",
19242
+ fr: "Démarrer une session WebXR.",
19271
19243
  },
19272
19244
  {
19273
19245
  en: "Stop WebXR session.",
19274
- de: "Beende die WebXR Session.",
19275
- fr: "Terminez la session WebXR.",
19246
+ de: "WebXR-Sitzung beenden.",
19247
+ fr: "Terminer la session WebXR.",
19276
19248
  },
19277
19249
  {
19278
19250
  en: "Activate sound.",
19279
- de: "Activiere den Ton.",
19280
- fr: "Activez le son.",
19251
+ de: "Ton aktivieren.",
19252
+ fr: "Activer le son.",
19281
19253
  },
19282
19254
  {
19283
19255
  en: "Points; Lines; Triangles",
@@ -19286,7 +19258,7 @@ const dictionary_default_ = [
19286
19258
  },
19287
19259
  {
19288
19260
  en: "Opaque Shapes + Transparent Shapes",
19289
- de: "opaque Formen + transparente Formen",
19261
+ de: "Undurchsichtige Formen + Transparente Formen",
19290
19262
  fr: "Formes opaques + Formes transparentes",
19291
19263
  },
19292
19264
  ];
@@ -19821,13 +19793,15 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
19821
19793
  this ._Exposure .addInterest ("set_Exposure__", this);
19822
19794
  this ._LogarithmicDepthBuffer .addInterest ("set_LogarithmicDepthBuffer__", this);
19823
19795
  this ._Multisampling .addInterest ("set_Multisampling__", this);
19824
- this ._Mute .addInterest ("set_Mute__", this);
19796
+ this ._Mute .addInterest ("set_SoundIntensity__", this);
19825
19797
  this ._OrderIndependentTransparency .addInterest ("set_OrderIndependentTransparency__", this);
19798
+ this ._SoundIntensity .addInterest ("set_SoundIntensity__", this);
19826
19799
  this ._Timings .addInterest ("set_Timings__", this);
19827
19800
  this ._XRSessionMode .addInterest ("set_XRSessionMode__", this);
19828
19801
 
19829
19802
  this .set_Antialiased__ (this ._Antialiased);
19830
19803
  this .set_Shading__ (this ._Shading);
19804
+ this .set_SoundIntensity__ ();
19831
19805
  this .set_AutoUpdate__ (this ._AutoUpdate);
19832
19806
  this .set_ContentScale__ (this ._ContentScale);
19833
19807
  this .set_DisplayColorSpace (this ._DisplayColorSpace);
@@ -19996,13 +19970,6 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
19996
19970
  browser .setShading (this .shading);
19997
19971
  };
19998
19972
  })(),
19999
- set_StraightenHorizon__ (straightenHorizon)
20000
- {
20001
- this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
20002
-
20003
- if (straightenHorizon .getValue ())
20004
- this .getBrowser () .getActiveLayer () ?.straightenView ();
20005
- },
20006
19973
  set_AutoUpdate__ (autoUpdate)
20007
19974
  {
20008
19975
  document .removeEventListener ("visibilitychange", this .checkUpdateListener);
@@ -20139,20 +20106,25 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
20139
20106
 
20140
20107
  browser .reshape ();
20141
20108
  },
20142
- set_Mute__ (mute)
20109
+ set_OrderIndependentTransparency__ ()
20110
+ {
20111
+ this .getBrowser () .reshape ();
20112
+ },
20113
+ set_SoundIntensity__ ()
20143
20114
  {
20144
20115
  const
20145
- browser = this .getBrowser (),
20146
- audioContext = browser .getAudioContext ();
20116
+ unmute = !this ._Mute .getValue (),
20117
+ gain = unmute * Math_Algorithm .clamp (this ._SoundIntensity .getValue (), 0, 1);
20147
20118
 
20148
- if (mute .getValue ())
20149
- browser .stopAudioElement (audioContext, "suspend");
20150
- else
20151
- browser .startAudioElement (audioContext, "resume");
20119
+ for (const soundNode of this .getBrowser () .getSoundDestinations ())
20120
+ soundNode .getSoundDestination () .gain .value = gain;
20152
20121
  },
20153
- set_OrderIndependentTransparency__ ()
20122
+ set_StraightenHorizon__ (straightenHorizon)
20154
20123
  {
20155
- this .getBrowser () .reshape ();
20124
+ this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
20125
+
20126
+ if (straightenHorizon .getValue ())
20127
+ this .getBrowser () .getActiveLayer () ?.straightenView ();
20156
20128
  },
20157
20129
  set_Timings__ (timings)
20158
20130
  {
@@ -20205,6 +20177,7 @@ Object .defineProperties (BrowserOptions,
20205
20177
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Mute", new x_ite_Fields .SFBool ()),
20206
20178
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Notifications", new x_ite_Fields .SFBool (true)),
20207
20179
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "OrderIndependentTransparency", new x_ite_Fields .SFBool ()),
20180
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "SoundIntensity", new x_ite_Fields .SFFloat (1)),
20208
20181
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "StraightenHorizon", new x_ite_Fields .SFBool (true)),
20209
20182
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "TextCompression", new x_ite_Fields .SFString ("CHAR_SPACING")),
20210
20183
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Timings", new x_ite_Fields .SFBool ()),
@@ -20338,6 +20311,7 @@ Object .defineProperties (RenderingProperties,
20338
20311
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "MaxSamples", new x_ite_Fields .SFInt32 (0)),
20339
20312
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "Multisampling", new x_ite_Fields .SFInt32 (4)),
20340
20313
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "PixelsPerPoint", new x_ite_Fields .SFDouble (1)),
20314
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "SoundDestinations", new x_ite_Fields .SFInt32 ()),
20341
20315
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "XRSession", new x_ite_Fields .SFBool ()),
20342
20316
  ]),
20343
20317
  enumerable: true,
@@ -21581,7 +21555,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21581
21555
  {
21582
21556
  destinationField .addReference (instance .getField (originalReference .getName ()));
21583
21557
  }
21584
- catch (error)
21558
+ catch
21585
21559
  {
21586
21560
  console .error (`No reference '${originalReference .getName ()}' inside execution context ${instance .getTypeName ()} '${instance .getName ()}'.`);
21587
21561
  }
@@ -22010,7 +21984,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
22010
21984
  [_metaDataCallbacks]: new Map (),
22011
21985
  addMetaDataCallback (key, path, callback)
22012
21986
  {
22013
- if (!this .hasOwnProperty (_metaDataCallbacks))
21987
+ if (!Object .hasOwn (this, _metaDataCallbacks))
22014
21988
  this [_metaDataCallbacks] = new Map ();
22015
21989
 
22016
21990
  let map = this [_metaDataCallbacks] .get (path);
@@ -31218,7 +31192,7 @@ const Plane3_default_ = Plane3;
31218
31192
 
31219
31193
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31220
31194
  ;// ./src/standard/Math/Geometry/Triangle3.js
31221
- /* provided dependency */ var libtess = __webpack_require__(877);
31195
+ /* provided dependency */ var libtess = __webpack_require__(643);
31222
31196
 
31223
31197
 
31224
31198
  const Triangle3 =
@@ -39097,8 +39071,9 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39097
39071
  {
39098
39072
  this .cycle += this .interval * Math .floor ((time - this .cycle) / this .interval);
39099
39073
 
39100
- this ._elapsedTime = this .getElapsedTime ();
39101
- this ._cycleTime = time;
39074
+ this ._elapsedTime = this .getElapsedTime ();
39075
+ this ._cycleComplete = time;
39076
+ this ._cycleTime = time;
39102
39077
 
39103
39078
  this .set_fraction (time);
39104
39079
  }
@@ -39106,6 +39081,7 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39106
39081
  else
39107
39082
  {
39108
39083
  this ._elapsedTime = this .getElapsedTime ();
39084
+ this ._cycleComplete = time;
39109
39085
  this ._fraction_changed = this .fraction = this .last;
39110
39086
 
39111
39087
  this .stop ();
@@ -39143,6 +39119,7 @@ Object .defineProperties (TimeSensor,
39143
39119
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39144
39120
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39145
39121
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39122
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFTime ()),
39146
39123
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39147
39124
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39148
39125
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
@@ -40689,6 +40666,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
40689
40666
  case "KHR_materials_ior":
40690
40667
  case "KHR_materials_iridescence":
40691
40668
  case "KHR_materials_pbrSpecularGlossiness":
40669
+ case "KHR_materials_retroreflection":
40692
40670
  case "KHR_materials_sheen":
40693
40671
  case "KHR_materials_specular":
40694
40672
  case "KHR_materials_transmission":
@@ -41757,6 +41735,9 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
41757
41735
  case "KHR_materials_iridescence":
41758
41736
  this .khrMaterialsIridescenceObject (value, materialNode);
41759
41737
  break;
41738
+ case "KHR_materials_retroreflection":
41739
+ this .khrMaterialsRetroreflectionObject (value, materialNode);
41740
+ break;
41760
41741
  case "KHR_materials_sheen":
41761
41742
  this .khrMaterialsSheenObject (value, materialNode);
41762
41743
  break;
@@ -41904,6 +41885,23 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
41904
41885
 
41905
41886
  materialNode ._extensions .push (extension);
41906
41887
  },
41888
+ khrMaterialsRetroreflectionObject (KHR_materials_retroreflection, materialNode)
41889
+ {
41890
+ if (!(KHR_materials_retroreflection instanceof Object))
41891
+ return;
41892
+
41893
+ const extension = this .getScene () .createNode ("RetroreflectionMaterialExtension", false);
41894
+
41895
+ extension ._retroreflection = this .numberValue (KHR_materials_retroreflection .retroreflectionFactor, 0);
41896
+ extension ._retroreflectionTexture = this .textureInfo (KHR_materials_retroreflection .retroreflectionTexture);
41897
+ extension ._retroreflectionTextureMapping = this .textureMapping (KHR_materials_retroreflection .retroreflectionTexture);
41898
+
41899
+ extension .setup ();
41900
+
41901
+ KHR_materials_retroreflection .pointers = [extension];
41902
+
41903
+ materialNode ._extensions .push (extension);
41904
+ },
41907
41905
  khrMaterialsSheenObject (KHR_materials_sheen, materialNode)
41908
41906
  {
41909
41907
  if (!(KHR_materials_sheen instanceof Object))
@@ -47918,7 +47916,7 @@ const Bezier_default_ = Bezier;
47918
47916
 
47919
47917
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47920
47918
  ;// ./src/x_ite/Parser/SVGParser.js
47921
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(877);
47919
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(643);
47922
47920
 
47923
47921
 
47924
47922
 
@@ -54664,7 +54662,7 @@ function X3DCoreContext (element)
54664
54662
  {
54665
54663
  const link = document .createElement ("link");
54666
54664
 
54667
- link .integrity = "sha384-F+mssNuFiQHol3RT7fLg6krIVxgAio+0HtxiqkBJSZIYtVM6Z51XLEsu66xkirs/";
54665
+ link .integrity = "sha384-dhnoOI+clBqqFYGBrUCL7KhjerG/JEhXRHWvaNS1qEwbCU/f0MWYgFRQj2esJwbi";
54668
54666
  link .rel = "stylesheet";
54669
54667
  link .crossOrigin = "anonymous";
54670
54668
  link .onload = resolve;
@@ -64060,10 +64058,13 @@ const
64060
64058
  _loadingTotal = Symbol (),
64061
64059
  X3DNetworkingContext_loadingObjects = Symbol (),
64062
64060
  _browserLoading = Symbol (),
64061
+ _percentTime = Symbol (),
64063
64062
  _set_loadCount = Symbol (),
64064
64063
  _loadFractions = Symbol (),
64065
64064
  _defaultScene = Symbol ();
64066
64065
 
64066
+ const PERCENT_TIME = 8_000; // in ms
64067
+
64067
64068
  function getBaseURI (element)
64068
64069
  {
64069
64070
  const { baseURI } = element;
@@ -64120,6 +64121,7 @@ Object .assign (X3DNetworkingContext .prototype,
64120
64121
  setBrowserLoading (value)
64121
64122
  {
64122
64123
  this [_browserLoading] = value;
64124
+ this [_percentTime] = Date .now ();
64123
64125
 
64124
64126
  if (value)
64125
64127
  {
@@ -64182,12 +64184,18 @@ Object .assign (X3DNetworkingContext .prototype,
64182
64184
  this [X3DNetworkingContext_loadingObjects] .add (object);
64183
64185
 
64184
64186
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64187
+
64188
+ if (Date .now () - this [_percentTime] < PERCENT_TIME)
64189
+ this [_percentTime] = Date .now ();
64185
64190
  },
64186
64191
  removeLoadingObject (object)
64187
64192
  {
64188
64193
  this [X3DNetworkingContext_loadingObjects] .delete (object);
64189
64194
 
64190
64195
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64196
+
64197
+ if (Date .now () - this [_percentTime] < PERCENT_TIME)
64198
+ this [_percentTime] = Date .now ();
64191
64199
  },
64192
64200
  getDisplayLoadCount ()
64193
64201
  {
@@ -64223,8 +64231,8 @@ Object .assign (X3DNetworkingContext .prototype,
64223
64231
  if (this ._loadCount .getValue () || this [_browserLoading])
64224
64232
  {
64225
64233
  string = ((loadingDisplay || 1) === 1
64226
- ? gettext ("Loading %1 file")
64227
- : gettext ("Loading %1 files")) .replace ("%1", loadingDisplay || 1);
64234
+ ? gettext("Loading %1 file")
64235
+ : gettext("Loading %1 files")) .replace ("%1", loadingDisplay || 1);
64228
64236
  }
64229
64237
  else
64230
64238
  {
@@ -64241,8 +64249,14 @@ Object .assign (X3DNetworkingContext .prototype,
64241
64249
  const fractions = 1 - (this ._loadCount .getValue () + loadFractions)
64242
64250
  / (this [_loadingTotal] + this [_loadFractions] .size);
64243
64251
 
64252
+ const percent = fractions * 100;
64253
+
64254
+ // Show progress in % if loading takes too long.
64255
+ if (Date .now () - this [_percentTime] > PERCENT_TIME)
64256
+ string += ` (${percent .toFixed (2)}\u202F%)`;
64257
+
64244
64258
  this .getSplashScreen () .querySelector (".x_ite-private-spinner-text") .textContent = string;
64245
- this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${100 * fractions}%`;
64259
+ this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${percent}%`;
64246
64260
  }
64247
64261
  else
64248
64262
  {
@@ -67090,7 +67104,7 @@ vec3 getIBLRadianceCharlie(const in vec3 n,const in vec3 v,const in float sheenR
67090
67104
 
67091
67105
 
67092
67106
  const MaterialInfo2_glsl_default_ = () => /* glsl */ `
67093
- struct MaterialInfo{float ior;float perceptualRoughness;vec3 f0_dielectric;float alphaRoughness;float fresnel_w;vec3 f90;vec3 f90_dielectric;float metallic;vec3 baseColor;float sheenRoughnessFactor;vec3 sheenColorFactor;vec3 clearcoatF0;vec3 clearcoatF90;float clearcoatFactor;vec3 clearcoatNormal;float clearcoatRoughness;float specularWeight;float transmissionFactor;float thickness;vec3 attenuationColor;float attenuationDistance;float iridescenceFactor;float iridescenceIor;float iridescenceThickness;float diffuseTransmissionFactor;vec3 diffuseTransmissionColorFactor;vec3 anisotropicT;vec3 anisotropicB;float anisotropyStrength;float dispersion;vec3 multiscatterColor;};
67107
+ struct MaterialInfo{float ior;float perceptualRoughness;vec3 f0_dielectric;float alphaRoughness;float fresnel_w;vec3 f90;vec3 f90_dielectric;float metallic;vec3 baseColor;float sheenRoughnessFactor;vec3 sheenColorFactor;vec3 clearcoatF0;vec3 clearcoatF90;float clearcoatFactor;vec3 clearcoatNormal;float clearcoatRoughness;float specularWeight;float transmissionFactor;float thickness;vec3 attenuationColor;float attenuationDistance;float iridescenceFactor;float iridescenceIor;float iridescenceThickness;float diffuseTransmissionFactor;vec3 diffuseTransmissionColorFactor;vec3 anisotropicT;vec3 anisotropicB;float anisotropyStrength;float dispersion;vec3 multiscatterColor;float retroreflectionFactor;};
67094
67108
  #if defined(X3D_MATERIAL_METALLIC_ROUGHNESS)
67095
67109
  ${MaterialTextures .texture ("x3d_BaseTexture", "rgba", "linear")}
67096
67110
  vec4 getBaseColor(){float alpha=1.-x3d_Material.transparency;vec4 baseColor=vec4(x3d_Material.baseColor,alpha);
@@ -67255,6 +67269,14 @@ vec3 anisotropySample=getAnisotropyTextureEXT();direction=anisotropySample.xy*2.
67255
67269
  #endif
67256
67270
  vec2 directionRotation=x3d_AnisotropyEXT.xy;mat2 rotationMatrix=mat2(directionRotation.xy,-directionRotation.y,directionRotation.x);direction=rotationMatrix*direction;info.anisotropicT=mat3(normalInfo.t,normalInfo.b,normalInfo.n)*normalize(vec3(direction,0.));info.anisotropicB=cross(normalInfo.ng,info.anisotropicT);info.anisotropyStrength=clamp(x3d_AnisotropyEXT.z*strengthFactor,0.,1.);return info;}
67257
67271
  #endif
67272
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67273
+ ${MaterialTextures .texture ("x3d_RetroreflectionTextureEXT", "r")}
67274
+ uniform float x3d_RetroreflectionEXT;MaterialInfo getRetroreflectionInfo(in MaterialInfo info){float retroreflectionFactor=x3d_RetroreflectionEXT;
67275
+ #if defined(X3D_RETROREFLECTION_TEXTURE_EXT)
67276
+ retroreflectionFactor*=getRetroreflectionTextureEXT();
67277
+ #endif
67278
+ info.retroreflectionFactor=retroreflectionFactor;return info;}
67279
+ #endif
67258
67280
  `
67259
67281
  ;
67260
67282
 
@@ -67297,6 +67319,9 @@ baseColor.rgb*=getTextureProjectorColor();
67297
67319
  vec3 color=vec3(0);vec3 v=normalize(-vertex);
67298
67320
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67299
67321
  NormalInfo normalInfo=getNormalInfo(x3d_Material.normalScale);vec3 n=normalInfo.n;float NdotV=clamp(dot(n,v),0.,1.);
67322
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67323
+ vec3 v_retro=reflect(-v,n);float NdotV_retro=clamp(dot(n,v_retro),0.,1.);
67324
+ #endif
67300
67325
  #endif
67301
67326
  MaterialInfo materialInfo;materialInfo.baseColor=baseColor.rgb;materialInfo.ior=1.5;materialInfo.f0_dielectric=vec3(.04);materialInfo.specularWeight=1.;materialInfo.f90=vec3(1);materialInfo.f90_dielectric=materialInfo.f90;
67302
67327
  #if defined(X3D_IOR_MATERIAL_EXT)
@@ -67332,10 +67357,17 @@ materialInfo=getVolumeScatterInfo(materialInfo);
67332
67357
  #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67333
67358
  materialInfo=getAnisotropyInfo(materialInfo,normalInfo);
67334
67359
  #endif
67360
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67361
+ materialInfo=getRetroreflectionInfo(materialInfo);
67362
+ #endif
67335
67363
  materialInfo.perceptualRoughness=clamp(materialInfo.perceptualRoughness,0.,1.);materialInfo.metallic=clamp(materialInfo.metallic,0.,1.);materialInfo.alphaRoughness=materialInfo.perceptualRoughness*materialInfo.perceptualRoughness;vec3 f_specular_dielectric=vec3(0);vec3 f_specular_metal=vec3(0);vec3 f_diffuse=vec3(0);vec3 f_dielectric_brdf_ibl=vec3(0);vec3 f_metal_brdf_ibl=vec3(0);vec3 f_emissive=vec3(0);vec3 clearcoat_brdf=vec3(0);vec3 f_sheen=vec3(0);vec3 f_specular_transmission=vec3(0);vec3 f_diffuse_transmission=vec3(0);float clearcoatFactor=0.;vec3 clearcoatFresnel=vec3(0);float albedoSheenScaling=1.;float diffuseTransmissionThickness=1.;vec3 diffuseTransmissionIBL=vec3(0);
67336
67364
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67337
67365
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67338
- vec3 iridescenceFresnel_dielectric=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,baseColor.rgb);if(materialInfo.iridescenceThickness==0.)materialInfo.iridescenceFactor=0.;
67366
+ vec3 iridescenceFresnel_dielectric=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,baseColor.rgb);
67367
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67368
+ vec3 iridescenceFresnel_dielectric_retro=evalIridescence(1.,materialInfo.iridescenceIor,NdotV_retro,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic_retro=evalIridescence(1.,materialInfo.iridescenceIor,NdotV_retro,materialInfo.iridescenceThickness,baseColor.rgb);
67369
+ #endif
67370
+ if(materialInfo.iridescenceThickness==0.)materialInfo.iridescenceFactor=0.;
67339
67371
  #endif
67340
67372
  #endif
67341
67373
  #if defined(X3D_DIFFUSE_TRANSMISSION_MATERIAL_EXT)
@@ -67414,6 +67446,19 @@ l_metal_brdf=metal_fresnel*l_specular_metal;l_dielectric_brdf=mix(l_diffuse,l_sp
67414
67446
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67415
67447
  l_metal_brdf=mix(l_metal_brdf,l_specular_metal*iridescenceFresnel_metallic,materialInfo.iridescenceFactor);l_dielectric_brdf=mix(l_dielectric_brdf,rgb_mix(l_diffuse,l_specular_dielectric,iridescenceFresnel_dielectric),materialInfo.iridescenceFactor);
67416
67448
  #endif
67449
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67450
+ vec3 h_retro=normalize(l+v_retro);float NdotH_retro=clamp(dot(n,h_retro),0.,1.);float VdotH_retro=clamp(dot(v_retro,h_retro),0.,1.);vec3 dielectric_fresnel_retro=F_Schlick(materialInfo.f0_dielectric*materialInfo.specularWeight,materialInfo.f90_dielectric,abs(VdotH_retro));vec3 metal_fresnel_retro=F_Schlick(baseColor.rgb,vec3(1),abs(VdotH_retro));vec3 l_specular_metal_retro;
67451
+ #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67452
+ l_specular_metal_retro=intensity*NdotL*BRDF_specularGGXAnisotropy(materialInfo.alphaRoughness,materialInfo.anisotropyStrength,n,v_retro,l,h_retro,materialInfo.anisotropicT,materialInfo.anisotropicB);
67453
+ #else
67454
+ l_specular_metal_retro=intensity*NdotL*BRDF_specularGGX(materialInfo.alphaRoughness,NdotL,NdotV_retro,NdotH_retro);
67455
+ #endif
67456
+ vec3 l_specular_dielectric_retro=l_specular_metal_retro;vec3 l_metal_brdf_retro=metal_fresnel_retro*l_specular_metal_retro;vec3 l_dielectric_brdf_retro=mix(l_diffuse,l_specular_dielectric_retro,dielectric_fresnel_retro);
67457
+ #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67458
+ l_metal_brdf_retro=mix(l_metal_brdf_retro,l_specular_metal*iridescenceFresnel_metallic_retro,materialInfo.iridescenceFactor);l_dielectric_brdf_retro=mix(l_dielectric_brdf_retro,rgb_mix(l_diffuse,l_specular_dielectric,iridescenceFresnel_dielectric_retro),materialInfo.iridescenceFactor);
67459
+ #endif
67460
+ l_metal_brdf=mix(l_metal_brdf,l_metal_brdf_retro,materialInfo.retroreflectionFactor);l_dielectric_brdf=mix(l_dielectric_brdf,l_dielectric_brdf_retro,materialInfo.retroreflectionFactor);
67461
+ #endif
67417
67462
  #if defined(X3D_CLEARCOAT_MATERIAL_EXT)
67418
67463
  l_clearcoat_brdf=intensity*getPunctualRadianceClearCoat(materialInfo.clearcoatNormal,v,l,h,VdotH,materialInfo.clearcoatF0,materialInfo.clearcoatF90,materialInfo.clearcoatRoughness);
67419
67464
  #endif
@@ -71847,10 +71892,9 @@ const PeriodicWave_default_ = PeriodicWave;
71847
71892
 
71848
71893
 
71849
71894
 
71850
-
71851
71895
  const
71852
71896
  _audioContext = Symbol (),
71853
- _audioNodes = Symbol (),
71897
+ _soundDestinationNodes = Symbol (),
71854
71898
  _audioElements = Symbol (),
71855
71899
  _defaultPeriodicWave = Symbol (),
71856
71900
  _noSoundButton = Symbol (),
@@ -71858,9 +71902,7 @@ const
71858
71902
 
71859
71903
  function X3DSoundContext ()
71860
71904
  {
71861
- this .addChildObjects (Base_X3DConstants .outputOnly, "audio", new x_ite_Fields .SFBool ());
71862
-
71863
- this [_audioNodes] = new Set ();
71905
+ this [_soundDestinationNodes] = new Set ();
71864
71906
  this [_audioElements] = new Map ();
71865
71907
  }
71866
71908
 
@@ -71898,17 +71940,25 @@ Object .assign (X3DSoundContext .prototype,
71898
71940
  return audioContext;
71899
71941
  })();
71900
71942
  },
71901
- addAudioNode (element)
71943
+ addSoundDestination (soundDestinationNode)
71902
71944
  {
71903
- this [_audioNodes] .add (element);
71945
+ const gain = !this .getBrowserOption ("Mute") * Math_Algorithm .clamp (this .getBrowserOption ("SoundIntensity"), 0, 1);
71946
+
71947
+ soundDestinationNode .getSoundDestination () .gain .value = gain;
71904
71948
 
71905
- this ._audio = this [_audioNodes] .size;
71949
+ this [_soundDestinationNodes] .add (soundDestinationNode);
71950
+
71951
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71906
71952
  },
71907
- removeAudioNode (element)
71953
+ removeSoundDestination (soundDestinationNode)
71908
71954
  {
71909
- this [_audioNodes] .delete (element);
71955
+ this [_soundDestinationNodes] .delete (soundDestinationNode);
71910
71956
 
71911
- this ._audio = this [_audioNodes] .size;
71957
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71958
+ },
71959
+ getSoundDestinations ()
71960
+ {
71961
+ return this [_soundDestinationNodes];
71912
71962
  },
71913
71963
  startAudioElement (audioElement, functionName = "play")
71914
71964
  {
@@ -87270,7 +87320,7 @@ Object .assign (Object .setPrototypeOf (PhysicalMaterial .prototype, Shape_X3DOn
87270
87320
 
87271
87321
  this .setTransmission (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .TransmissionMaterialExtension)));
87272
87322
 
87273
- this .setVolumeScatter (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeScatterMaterialExtension)) && extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeMaterialExtension)));
87323
+ this .setVolumeScatter (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeScatterMaterialExtension)));
87274
87324
 
87275
87325
  this .set_extensionsKey__ ();
87276
87326
  this .set_renderedTextures__ ();
@@ -87739,6 +87789,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Sound
87739
87789
  const channelCountModes = new Map ([
87740
87790
  ["MAX", "max"],
87741
87791
  ["CLAMPED-MAX", "clamped-max"],
87792
+ ["CLAMPED_MAX", "clamped-max"],
87742
87793
  ["EXPLICIT", "explicit"],
87743
87794
  ]);
87744
87795
 
@@ -88317,10 +88368,12 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
88317
88368
  unloadData ()
88318
88369
  {
88319
88370
  this .setMediaElement (null);
88371
+
88372
+ this ._duration_changed = -1;
88320
88373
  },
88321
88374
  loadData ()
88322
88375
  {
88323
- this .unloadData ();
88376
+ this .setMediaElement (null);
88324
88377
 
88325
88378
  new InputOutput_FileLoader (this, { dataAsString: false }) .loadDocument (this ._url, async (data, fileURL) =>
88326
88379
  {
@@ -88413,10 +88466,13 @@ function X3DSoundDestinationNode (executionContext)
88413
88466
 
88414
88467
  this .addType (Base_X3DConstants .X3DSoundDestinationNode);
88415
88468
 
88469
+ // Private properties
88470
+
88416
88471
  const audioContext = this .getBrowser () .getAudioContext ();
88417
88472
 
88418
88473
  this .childNodes = [ ];
88419
88474
  this .audioDestination = new GainNode (audioContext, { gain: 0 });
88475
+ this .soundDestination = new GainNode (audioContext, { gain: 0 });
88420
88476
  }
88421
88477
 
88422
88478
  Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype),
@@ -88441,6 +88497,10 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88441
88497
  this .set_channelInterpretation__ ();
88442
88498
  this .set_children__ ();
88443
88499
  },
88500
+ getSoundDestination ()
88501
+ {
88502
+ return this .soundDestination;
88503
+ },
88444
88504
  getAudioDestination ()
88445
88505
  {
88446
88506
  return this .audioDestination;
@@ -88451,17 +88511,17 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88451
88511
 
88452
88512
  const
88453
88513
  browser = this .getBrowser (),
88454
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88514
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88455
88515
 
88456
88516
  if (active)
88457
88517
  {
88458
- this .audioDestination .connect (this .getSoundDestination ());
88459
- browser .addAudioNode (this);
88518
+ browser .addSoundDestination (this);
88519
+ this .audioDestination .connect (this .soundDestination);
88460
88520
  }
88461
88521
  else
88462
88522
  {
88523
+ browser .removeSoundDestination (this);
88463
88524
  this .audioDestination .disconnect ();
88464
- browser .removeAudioNode (this);
88465
88525
  }
88466
88526
 
88467
88527
  this ._isActive = this ._enabled;
@@ -88479,6 +88539,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88479
88539
  const channelCountModes = new Map ([
88480
88540
  ["MAX", "max"],
88481
88541
  ["CLAMPED-MAX", "clamped-max"],
88542
+ ["CLAMPED_MAX", "clamped-max"],
88482
88543
  ["EXPLICIT", "explicit"],
88483
88544
  ]);
88484
88545
 
@@ -88562,6 +88623,8 @@ function AudioDestination (executionContext)
88562
88623
  this .audioElement = new Audio ();
88563
88624
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
88564
88625
  this .audioElement .srcObject = this .mediaStreamAudioDestinationNode .stream;
88626
+
88627
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
88565
88628
  }
88566
88629
 
88567
88630
  Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -88578,17 +88641,13 @@ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSo
88578
88641
 
88579
88642
  this .set_mediaDeviceID__ ();
88580
88643
  },
88581
- getSoundDestination ()
88582
- {
88583
- return this .mediaStreamAudioDestinationNode;
88584
- },
88585
88644
  set_enabled__ ()
88586
88645
  {
88587
88646
  Sound_X3DSoundDestinationNode .prototype .set_enabled__ .call (this);
88588
88647
 
88589
88648
  const
88590
88649
  browser = this .getBrowser (),
88591
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88650
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88592
88651
 
88593
88652
  if (active)
88594
88653
  browser .startAudioElement (this .audioElement);
@@ -88832,7 +88891,7 @@ Object .assign (Object .setPrototypeOf (BufferAudioSource .prototype, Sound_X3DS
88832
88891
  }
88833
88892
  else
88834
88893
  {
88835
- this ._bufferDuration = 0;
88894
+ this ._bufferDuration = -1;
88836
88895
 
88837
88896
  this .setMediaElement (null);
88838
88897
  }
@@ -89070,6 +89129,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89070
89129
  const channelCountModes = new Map ([
89071
89130
  ["MAX", "max"],
89072
89131
  ["CLAMPED-MAX", "clamped-max"],
89132
+ ["CLAMPED_MAX", "clamped-max"],
89073
89133
  ["EXPLICIT", "explicit"],
89074
89134
  ]);
89075
89135
 
@@ -89134,7 +89194,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89134
89194
  for (const [i, childNode] of this .childNodes .entries ())
89135
89195
  this .connectChildNode (i, childNode);
89136
89196
  },
89137
- setChildNodes (childNodes)
89197
+ setChildNodes ()
89138
89198
  { },
89139
89199
  connectChildNode (i, childNode)
89140
89200
  {
@@ -90303,18 +90363,20 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90303
90363
  const
90304
90364
  audioContext = this .getBrowser () .getAudioContext (),
90305
90365
  gainNode = new GainNode (audioContext, { gain: 0 }),
90366
+ gainStereoNode = new GainNode (audioContext, { gain: 0 }),
90306
90367
  splitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs: 2 }),
90307
- mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90308
90368
  gainFrontLeftNode = new GainNode (audioContext, { gain: 0 }),
90309
90369
  gainFrontRightNode = new GainNode (audioContext, { gain: 0 }),
90310
90370
  gainBackLeftNode = new GainNode (audioContext, { gain: 0 }),
90311
- gainBackRightNode = new GainNode (audioContext, { gain: 0 });
90371
+ gainBackRightNode = new GainNode (audioContext, { gain: 0 }),
90372
+ mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90373
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90312
90374
 
90313
90375
  gainNode .channelCount = 2;
90314
90376
  gainNode .channelCountMode = "explicit";
90315
90377
  gainNode .channelInterpretation = "speakers";
90316
90378
 
90317
- gainNode .connect (splitterNode);
90379
+ gainStereoNode .connect (soundDestination);
90318
90380
  splitterNode .connect (gainFrontLeftNode, 0);
90319
90381
  splitterNode .connect (gainFrontRightNode, 1);
90320
90382
  splitterNode .connect (gainBackRightNode, 0);
@@ -90323,27 +90385,37 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90323
90385
  gainFrontRightNode .connect (mergerNode, 0, 1);
90324
90386
  gainBackLeftNode .connect (mergerNode, 0, 0);
90325
90387
  gainBackRightNode .connect (mergerNode, 0, 1);
90326
- mergerNode .connect (audioContext .destination);
90388
+ mergerNode .connect (soundDestination);
90389
+ soundDestination .connect (audioContext .destination);
90327
90390
 
90328
90391
  this .gainNode = gainNode;
90392
+ this .gainStereoNode = gainStereoNode;
90329
90393
  this .splitterNode = splitterNode;
90330
90394
  this .gainFrontLeftNode = gainFrontLeftNode;
90331
90395
  this .gainFrontRightNode = gainFrontRightNode;
90332
90396
  this .gainBackLeftNode = gainBackLeftNode;
90333
90397
  this .gainBackRightNode = gainBackRightNode;
90334
90398
  this .mergerNode = mergerNode;
90399
+ this .soundDestination = soundDestination;
90335
90400
 
90336
- this .getLive () .addInterest ("set_live__", this);
90337
- this ._traversed .addInterest ("set_live__", this);
90401
+ this .getLive () .addInterest ("set_enabled__", this);
90402
+ this ._traversed .addInterest ("set_enabled__", this);
90403
+ this ._enabled .addInterest ("set_enabled__", this);
90338
90404
 
90339
- this ._intensity .addInterest ("set_intensity__", this);
90340
- this ._source .addInterest ("set_children__", this);
90341
- this ._children .addInterest ("set_children__", this);
90405
+ this ._spatialize .addInterest ("set_spatialize__", this);
90406
+ this ._intensity .addInterest ("set_intensity__", this);
90407
+ this ._source .addInterest ("set_children__", this);
90408
+ this ._children .addInterest ("set_children__", this);
90342
90409
 
90343
- this .set_live__ ();
90410
+ this .set_enabled__ ();
90411
+ this .set_spatialize__ ();
90344
90412
  this .set_intensity__ ();
90345
90413
  this .set_children__ ();
90346
90414
  },
90415
+ getSoundDestination ()
90416
+ {
90417
+ return this .soundDestination;
90418
+ },
90347
90419
  setTraversed (value)
90348
90420
  {
90349
90421
  if (value)
@@ -90371,32 +90443,44 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90371
90443
  rotationFront = 1 - rotation,
90372
90444
  rotationBack = rotation;
90373
90445
 
90446
+ this .gainStereoNode .gain .value = gain;
90374
90447
  this .gainFrontLeftNode .gain .value = gain * rotationFront * panLeft;
90375
90448
  this .gainFrontRightNode .gain .value = gain * rotationFront * panRight;
90376
90449
  this .gainBackLeftNode .gain .value = gain * rotationBack * panLeft;
90377
90450
  this .gainBackRightNode .gain .value = gain * rotationBack * panRight;
90378
90451
  },
90379
- set_live__ ()
90452
+ set_enabled__ ()
90380
90453
  {
90381
- const browser = this .getBrowser ();
90382
-
90383
- this .mergerNode .disconnect ();
90454
+ const
90455
+ browser = this .getBrowser (),
90456
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90384
90457
 
90385
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90458
+ if (active)
90386
90459
  {
90387
90460
  const audioContext = this .getBrowser () .getAudioContext ();
90388
90461
 
90389
- this .mergerNode .connect (audioContext .destination);
90462
+ this .soundDestination .connect (audioContext .destination);
90390
90463
 
90391
- browser .addAudioNode (this);
90464
+ browser .addSoundDestination (this);
90392
90465
  browser .sensorEvents () .addInterest ("update", this);
90393
90466
  }
90394
90467
  else
90395
90468
  {
90396
- browser .removeAudioNode (this);
90469
+ this .soundDestination .disconnect ();
90470
+
90471
+ browser .removeSoundDestination (this);
90397
90472
  browser .sensorEvents () .removeInterest ("update", this);
90398
90473
  }
90399
90474
  },
90475
+ set_spatialize__ ()
90476
+ {
90477
+ this .gainNode .disconnect ();
90478
+
90479
+ if (this ._spatialize .getValue ())
90480
+ this .gainNode .connect (this .splitterNode);
90481
+ else
90482
+ this .gainNode .connect (this .gainStereoNode);
90483
+ },
90400
90484
  set_intensity__ ()
90401
90485
  {
90402
90486
  this .gainNode .gain .value = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1);
@@ -90415,7 +90499,7 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90415
90499
 
90416
90500
  for (const child of this ._children)
90417
90501
  {
90418
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90502
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90419
90503
 
90420
90504
  if (!childNode)
90421
90505
  continue;
@@ -90660,22 +90744,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90660
90744
  Sound_X3DSoundNode .prototype .initialize .call (this);
90661
90745
 
90662
90746
  const
90663
- audioContext = this .getBrowser () .getAudioContext (),
90664
- gainNode = new GainNode (audioContext, { gain: 0 }),
90665
- pannerNode = new PannerNode (audioContext);
90747
+ audioContext = this .getBrowser () .getAudioContext (),
90748
+ gainNode = new GainNode (audioContext, { gain: 0 }),
90749
+ pannerNode = new PannerNode (audioContext),
90750
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90666
90751
 
90667
90752
  gainNode .channelCount = 2;
90668
90753
  gainNode .channelCountMode = "explicit";
90669
90754
  gainNode .channelInterpretation = "speakers";
90670
90755
 
90671
- gainNode .connect (pannerNode);
90672
- pannerNode .connect (audioContext .destination);
90756
+ gainNode .connect (pannerNode);
90757
+ pannerNode .connect (soundDestination);
90758
+ soundDestination .connect (audioContext .destination);
90673
90759
 
90674
- this .gainNode = gainNode;
90675
- this .pannerNode = pannerNode;
90760
+ this .gainNode = gainNode;
90761
+ this .pannerNode = pannerNode;
90762
+ this .soundDestination = soundDestination;
90676
90763
 
90677
- this .getLive () .addInterest ("set_live__", this);
90678
- this ._traversed .addInterest ("set_live__", this);
90764
+ this .getLive () .addInterest ("set_enabled__", this);
90765
+ this ._traversed .addInterest ("set_enabled__", this);
90766
+ this ._enabled .addInterest ("set_enabled__", this);
90679
90767
 
90680
90768
  this ._spatialize .addInterest ("set_spatialize__", this);
90681
90769
  this ._intensity .addInterest ("set_intensity__", this);
@@ -90691,7 +90779,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90691
90779
  this ._rolloffFactor .addInterest ("set_distanceModel__", this);
90692
90780
  this ._children .addInterest ("set_children__", this);
90693
90781
 
90694
- this .set_live__ ();
90782
+ this .set_enabled__ ();
90695
90783
  this .set_spatialize__ ();
90696
90784
  this .set_intensity__ ();
90697
90785
  this .set_coneOuterGain__ ();
@@ -90704,6 +90792,10 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90704
90792
  this .set_dopplerEnabled__ ();
90705
90793
  this .set_children__ ();
90706
90794
  },
90795
+ getSoundDestination ()
90796
+ {
90797
+ return this .soundDestination;
90798
+ },
90707
90799
  setTraversed (value)
90708
90800
  {
90709
90801
  if (value)
@@ -90723,24 +90815,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90723
90815
  {
90724
90816
  return this .currentTraversed;
90725
90817
  },
90726
- set_live__ ()
90818
+ set_enabled__ ()
90727
90819
  {
90728
- const browser = this .getBrowser ();
90729
-
90730
- this .pannerNode .disconnect ();
90820
+ const
90821
+ browser = this .getBrowser (),
90822
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90731
90823
 
90732
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90824
+ if (active)
90733
90825
  {
90734
90826
  const audioContext = this .getBrowser () .getAudioContext ();
90735
90827
 
90736
- this .pannerNode .connect (audioContext .destination);
90828
+ this .soundDestination .connect (audioContext .destination);
90737
90829
 
90738
- browser .addAudioNode (this);
90830
+ browser .addSoundDestination (this);
90739
90831
  browser .sensorEvents () .addInterest ("update", this);
90740
90832
  }
90741
90833
  else
90742
90834
  {
90743
- browser .removeAudioNode (this);
90835
+ this .soundDestination .disconnect ();
90836
+
90837
+ browser .removeSoundDestination (this);
90744
90838
  browser .sensorEvents () .removeInterest ("update", this);
90745
90839
  }
90746
90840
  },
@@ -90819,7 +90913,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90819
90913
 
90820
90914
  for (const child of this ._children)
90821
90915
  {
90822
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90916
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90823
90917
 
90824
90918
  if (!childNode)
90825
90919
  continue;
@@ -90932,9 +91026,13 @@ function StreamAudioDestination (executionContext)
90932
91026
 
90933
91027
  this .addType (Base_X3DConstants .StreamAudioDestination);
90934
91028
 
91029
+ // Private properties
91030
+
90935
91031
  const audioContext = this .getBrowser () .getAudioContext ();
90936
91032
 
90937
91033
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
91034
+
91035
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
90938
91036
  }
90939
91037
 
90940
91038
  Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -90947,10 +91045,6 @@ Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound
90947
91045
 
90948
91046
  this .set_mediaDeviceID__ ();
90949
91047
  },
90950
- getSoundDestination ()
90951
- {
90952
- return this .mediaStreamAudioDestinationNode;
90953
- },
90954
91048
  set_enabled__ ()
90955
91049
  { },
90956
91050
  set_mediaDeviceID__ ()
@@ -91387,8 +91481,8 @@ const PNGMedia_default_ = PNGMedia;
91387
91481
 
91388
91482
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91389
91483
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91390
- /* provided dependency */ var SuperGif = __webpack_require__(143);
91391
- /* provided dependency */ var APNG = __webpack_require__(701);
91484
+ /* provided dependency */ var SuperGif = __webpack_require__(133);
91485
+ /* provided dependency */ var APNG = __webpack_require__(991);
91392
91486
 
91393
91487
 
91394
91488
 
@@ -91449,6 +91543,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91449
91543
  {
91450
91544
  this .clearTexture ();
91451
91545
  this .setMediaElement (null);
91546
+ this .updateOutputs (0, 0, 0, false, -1);
91452
91547
  },
91453
91548
  async loadData ()
91454
91549
  {
@@ -91523,7 +91618,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91523
91618
 
91524
91619
  this .setMediaElement (null);
91525
91620
  this .clearTexture ();
91526
- this .updateOutputs (0, 0, 0, -1);
91621
+ this .updateOutputs (0, 0, 0, false, -1);
91527
91622
  this .setLoadState (Base_X3DConstants .FAILED_STATE);
91528
91623
  },
91529
91624
  loadDocument (fileURL)
@@ -91564,7 +91659,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91564
91659
 
91565
91660
  this .setMediaElement (gif);
91566
91661
  this .setTextureData (width, height, true, false, gif .get_frames () [0] .data);
91567
- this .updateOutputs (width, height, 4, gif .duration);
91662
+ this .updateOutputs (width, height, 4, false, gif .duration);
91568
91663
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91569
91664
 
91570
91665
  this .set_speed__ ();
@@ -91577,7 +91672,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91577
91672
 
91578
91673
  this .setMediaElement (apng);
91579
91674
  this .setTextureData (width, height, true, false, currentFrame);
91580
- this .updateOutputs (width, height, 4, duration);
91675
+ this .updateOutputs (width, height, 4, false, duration);
91581
91676
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91582
91677
 
91583
91678
  this .set_speed__ ();
@@ -91598,16 +91693,21 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91598
91693
 
91599
91694
  this .setMediaElement (video);
91600
91695
  this .setTextureData (width, height, true, false, video);
91601
- this .updateOutputs (width, height, 3, video .duration);
91696
+ this .updateOutputs (width, height, 3, this .hasAudioTracks (video), video .duration);
91602
91697
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91603
91698
 
91604
91699
  this .set_speed__ ();
91605
91700
  },
91606
- updateOutputs (width, height, colorDepth, duration)
91701
+ hasAudioTracks (video)
91702
+ {
91703
+ return !! (video .mozHasAudio || video .webkitAudioDecodedByteCount || video .audioTracks ?.length);
91704
+ },
91705
+ updateOutputs (width, height, colorDepth, hasSound, duration)
91607
91706
  {
91608
91707
  this ._width = width;
91609
91708
  this ._height = height;
91610
91709
  this ._colorDepth = colorDepth;
91710
+ this ._hasSound = hasSound;
91611
91711
  this ._duration_changed = duration;
91612
91712
  },
91613
91713
  set_speed__ ()
@@ -93333,7 +93433,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93333
93433
  {
93334
93434
  const spinnerText = this .getSplashScreen () .querySelector (".x_ite-private-spinner-text");
93335
93435
 
93336
- spinnerText .textContent = gettext ("Failed loading world.");
93436
+ spinnerText .textContent = gettext("Failed loading world.");
93337
93437
  });
93338
93438
 
93339
93439
  reject (new Error ("Couldn't load X3D file."));
@@ -94026,7 +94126,7 @@ const QuickSort_default_ = QuickSort;
94026
94126
 
94027
94127
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94028
94128
  ;// ./src/lib/libtess.js
94029
- /* provided dependency */ var libtess_libtess = __webpack_require__(877);
94129
+ /* provided dependency */ var libtess_libtess = __webpack_require__(643);
94030
94130
  const libtess_default_ = libtess_libtess;
94031
94131
  ;
94032
94132