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.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.1.3 */
1
+ /* X_ITE v16.3.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
- /***/ 143
15
+ /***/ 133
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
- /***/ 701
1020
+ /***/ 991
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
- /***/ 877
2016
+ /***/ 643
2017
2017
  (module) {
2018
2018
 
2019
2019
  /**
@@ -6820,48 +6820,27 @@ if (true) {
6820
6820
  /******/
6821
6821
  /************************************************************************/
6822
6822
  /******/ /* webpack/runtime/define property getters */
6823
- /******/ (() => {
6824
- /******/ // define getter/value functions for harmony exports
6825
- /******/ __webpack_require__.d = (exports, definition) => {
6826
- /******/ if(Array.isArray(definition)) {
6827
- /******/ var i = 0;
6828
- /******/ while(i < definition.length) {
6829
- /******/ var key = definition[i++];
6830
- /******/ var binding = definition[i++];
6831
- /******/ if(!__webpack_require__.o(exports, key)) {
6832
- /******/ if(binding === 0) {
6833
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
6834
- /******/ } else {
6835
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
6836
- /******/ }
6837
- /******/ } else if(binding === 0) { i++; }
6838
- /******/ }
6839
- /******/ } else {
6840
- /******/ for(var key in definition) {
6841
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
6842
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
6843
- /******/ }
6844
- /******/ }
6823
+ /******/ // define getter/value functions for harmony exports
6824
+ /******/ __webpack_require__.d = (exports, definition) => {
6825
+ /******/ for(var key in definition) {
6826
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
6827
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
6845
6828
  /******/ }
6846
- /******/ };
6847
- /******/ })();
6829
+ /******/ }
6830
+ /******/ };
6848
6831
  /******/
6849
6832
  /******/ /* webpack/runtime/global */
6850
- /******/ (() => {
6851
- /******/ __webpack_require__.g = (function() {
6852
- /******/ if (typeof globalThis === 'object') return globalThis;
6853
- /******/ try {
6854
- /******/ return this || new Function('return this')();
6855
- /******/ } catch (e) {
6856
- /******/ if (typeof window === 'object') return window;
6857
- /******/ }
6858
- /******/ })();
6833
+ /******/ __webpack_require__.g = (function() {
6834
+ /******/ if (typeof globalThis === 'object') return globalThis;
6835
+ /******/ try {
6836
+ /******/ return this || new Function('return this')();
6837
+ /******/ } catch (e) {
6838
+ /******/ if (typeof window === 'object') return window;
6839
+ /******/ }
6859
6840
  /******/ })();
6860
6841
  /******/
6861
6842
  /******/ /* webpack/runtime/hasOwnProperty shorthand */
6862
- /******/ (() => {
6863
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
6864
- /******/ })();
6843
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
6865
6844
  /******/
6866
6845
  /************************************************************************/
6867
6846
  let __webpack_exports__ = {};
@@ -6881,7 +6860,7 @@ Object .defineProperty (Namespace, "add",
6881
6860
  {
6882
6861
  value (name, module)
6883
6862
  {
6884
- if (Namespace .hasOwnProperty (name))
6863
+ if (Object .hasOwn (Namespace, name))
6885
6864
  {
6886
6865
  console .error (new Error (`Namespace: "${name}" already exists.`));
6887
6866
  return module;
@@ -6911,18 +6890,22 @@ Object .defineProperty (X3DConstants, "addConstant",
6911
6890
  {
6912
6891
  value (name, value)
6913
6892
  {
6914
- if (this .hasOwnProperty (name) || this .hasOwnProperty (value))
6893
+ if (Object .hasOwn (this, name) || Object .hasOwn (this, value))
6915
6894
  return;
6916
6895
 
6917
- Object .defineProperty (this, name,
6918
- {
6919
- value: value ?? ++ CONSTANT_VALUE,
6920
- enumerable: true,
6921
- });
6896
+ value ??= ++ CONSTANT_VALUE;
6922
6897
 
6923
- Object .defineProperty (this, this [name],
6898
+ Object .defineProperties (this,
6924
6899
  {
6925
- value: name,
6900
+ [name]:
6901
+ {
6902
+ value: value,
6903
+ enumerable: true,
6904
+ },
6905
+ [value]:
6906
+ {
6907
+ value: name,
6908
+ },
6926
6909
  });
6927
6910
  },
6928
6911
  });
@@ -18902,7 +18885,7 @@ const Legacy_default_ = Legacy;
18902
18885
 
18903
18886
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18904
18887
  ;// ./src/x_ite/BROWSER_VERSION.js
18905
- const BROWSER_VERSION_default_ = "16.1.3";
18888
+ const BROWSER_VERSION_default_ = "16.3.0";
18906
18889
  ;
18907
18890
 
18908
18891
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -19012,37 +18995,28 @@ const dictionary_default_ = [
19012
18995
  {
19013
18996
  en: "fps",
19014
18997
  de: "BpS",
19015
- fr: "",
19016
18998
  },
19017
18999
  {
19018
19000
  en: "Speed",
19019
19001
  de: "Geschwindigkeit",
19020
- fr: "Vélocité",
19002
+ fr: "Vitesse",
19021
19003
  },
19022
19004
  {
19023
19005
  en: "m/s",
19024
- de: "",
19025
- fr: "",
19026
19006
  },
19027
19007
  {
19028
19008
  en: "km/h",
19029
- de: "",
19030
- fr: "",
19031
19009
  },
19032
19010
  {
19033
19011
  en: "Browser",
19034
- de: "",
19035
19012
  fr: "Navigateur",
19036
19013
  },
19037
19014
  {
19038
19015
  en: "ms",
19039
- de: "",
19040
- fr: "",
19041
19016
  },
19042
19017
  {
19043
19018
  en: "X3D total",
19044
19019
  de: "X3D gesamt",
19045
- fr: "X3D total",
19046
19020
  },
19047
19021
  {
19048
19022
  en: "Event Processing",
@@ -19067,12 +19041,12 @@ const dictionary_default_ = [
19067
19041
  {
19068
19042
  en: "Rendering",
19069
19043
  de: "Rendering",
19070
- fr: "Rendement",
19044
+ fr: "Rendu",
19071
19045
  },
19072
19046
  {
19073
19047
  en: "Number of Primitives",
19074
19048
  de: "Anzahl der Grundobjekte",
19075
- fr: "Nombre d'Objets de Base",
19049
+ fr: "Nombre de Primitives",
19076
19050
  },
19077
19051
  {
19078
19052
  en: "Number of Shapes",
@@ -19082,12 +19056,12 @@ const dictionary_default_ = [
19082
19056
  {
19083
19057
  en: "Number of Sensors",
19084
19058
  de: "Anzahl der Sensoren",
19085
- fr: "Nombre de Senseurs",
19059
+ fr: "Nombre de Capteurs",
19086
19060
  },
19087
19061
  {
19088
19062
  en: "Browser Timings",
19089
19063
  de: "Zeitberechnung",
19090
- fr: "Calcul du Temps",
19064
+ fr: "Temps du Navigateur",
19091
19065
  },
19092
19066
  {
19093
19067
  en: "Viewpoints",
@@ -19097,7 +19071,7 @@ const dictionary_default_ = [
19097
19071
  {
19098
19072
  en: "Available Viewers",
19099
19073
  de: "Verfügbare Betrachter",
19100
- fr: "Visionneurs disponibles",
19074
+ fr: "Visionneurs disponibles",
19101
19075
  },
19102
19076
  {
19103
19077
  en: "Straighten Horizon",
@@ -19107,17 +19081,17 @@ const dictionary_default_ = [
19107
19081
  {
19108
19082
  en: "Primitive Quality",
19109
19083
  de: "Qualität der Grundobjekte",
19110
- fr: "Qualité des Objets simples",
19084
+ fr: "Qualité des Primitives",
19111
19085
  },
19112
19086
  {
19113
19087
  en: "High",
19114
19088
  de: "Hoch",
19115
- fr: "Haut",
19089
+ fr: "Élevée",
19116
19090
  },
19117
19091
  {
19118
19092
  en: "high",
19119
19093
  de: "hoch",
19120
- fr: "haut",
19094
+ fr: "élevée",
19121
19095
  },
19122
19096
  {
19123
19097
  en: "Medium",
@@ -19141,18 +19115,18 @@ const dictionary_default_ = [
19141
19115
  },
19142
19116
  {
19143
19117
  en: "Texture Quality",
19144
- de: "Textur Qualität",
19118
+ de: "Texturqualität",
19145
19119
  fr: "Qualité des Textures",
19146
19120
  },
19147
19121
  {
19148
19122
  en: "Display Rubberband",
19149
19123
  de: "Gummiband anzeigen",
19150
- fr: "Présenter le Bande élastique",
19124
+ fr: "Afficher la Sélection élastique",
19151
19125
  },
19152
19126
  {
19153
19127
  en: "Rubberband",
19154
19128
  de: "Gummiband",
19155
- fr: "Bande élastique",
19129
+ fr: "Sélection élastique",
19156
19130
  },
19157
19131
  {
19158
19132
  en: "on",
@@ -19167,22 +19141,22 @@ const dictionary_default_ = [
19167
19141
  {
19168
19142
  en: "Mute Browser",
19169
19143
  de: "Browser stumm schalten",
19170
- fr: "Rendre Navigateur muet",
19144
+ fr: "Couper le Son du Navigateur",
19171
19145
  },
19172
19146
  {
19173
19147
  en: "Browser muted",
19174
- de: "Browser stumm geschalten",
19175
- fr: "Navigateur muet",
19148
+ de: "Browser stummgeschaltet",
19149
+ fr: "Son du Navigateur coupé",
19176
19150
  },
19177
19151
  {
19178
19152
  en: "Browser unmuted",
19179
- de: "Browser Ton an",
19180
- fr: "Son de Navigateur réactivé",
19153
+ de: "Browserton eingeschaltet",
19154
+ fr: "Son du Navigateur rétabli",
19181
19155
  },
19182
19156
  {
19183
19157
  en: "Leave Fullscreen",
19184
19158
  de: "Vollbild verlassen",
19185
- fr: "Laisser le plein Écran",
19159
+ fr: "Quitter le Plein Écran",
19186
19160
  },
19187
19161
  {
19188
19162
  en: "Fullscreen",
@@ -19227,7 +19201,6 @@ const dictionary_default_ = [
19227
19201
  {
19228
19202
  en: "Points",
19229
19203
  de: "Punkte",
19230
- fr: "",
19231
19204
  },
19232
19205
  {
19233
19206
  en: "Flat",
@@ -19236,7 +19209,7 @@ const dictionary_default_ = [
19236
19209
  },
19237
19210
  {
19238
19211
  en: "Wireframe",
19239
- de: "Drahtgittermodel",
19212
+ de: "Drahtgittermodell",
19240
19213
  fr: "Image filaire",
19241
19214
  },
19242
19215
  {
@@ -19257,7 +19230,7 @@ const dictionary_default_ = [
19257
19230
  {
19258
19231
  en: "Failed loading world.",
19259
19232
  de: "Laden der Dateien fehlgeschlagen.",
19260
- fr: "Le chargement des Fichiers a échoué.",
19233
+ fr: "Le chargement des fichiers a échoué.",
19261
19234
  },
19262
19235
  {
19263
19236
  en: "Show World Info",
@@ -19267,12 +19240,11 @@ const dictionary_default_ = [
19267
19240
  {
19268
19241
  en: "Viewpoint is copied to clipboard.",
19269
19242
  de: "Ansichtspunkt wurde in die Zwischenablage kopiert.",
19270
- fr: "Le point de Vue est copié dans le Presse-Papiers.",
19243
+ fr: "Le point de vue a été copié dans le presse-papiers.",
19271
19244
  },
19272
19245
  {
19273
19246
  en: "Animations",
19274
- de: "Animationen",
19275
- fr: "",
19247
+ fr: "Séquences animées",
19276
19248
  },
19277
19249
  {
19278
19250
  en: "All",
@@ -19286,18 +19258,18 @@ const dictionary_default_ = [
19286
19258
  },
19287
19259
  {
19288
19260
  en: "Start WebXR session.",
19289
- de: "Starte eine WebXR Session.",
19290
- fr: "Démarrez une session WebXR.",
19261
+ de: "WebXR-Sitzung starten.",
19262
+ fr: "Démarrer une session WebXR.",
19291
19263
  },
19292
19264
  {
19293
19265
  en: "Stop WebXR session.",
19294
- de: "Beende die WebXR Session.",
19295
- fr: "Terminez la session WebXR.",
19266
+ de: "WebXR-Sitzung beenden.",
19267
+ fr: "Terminer la session WebXR.",
19296
19268
  },
19297
19269
  {
19298
19270
  en: "Activate sound.",
19299
- de: "Activiere den Ton.",
19300
- fr: "Activez le son.",
19271
+ de: "Ton aktivieren.",
19272
+ fr: "Activer le son.",
19301
19273
  },
19302
19274
  {
19303
19275
  en: "Points; Lines; Triangles",
@@ -19306,7 +19278,7 @@ const dictionary_default_ = [
19306
19278
  },
19307
19279
  {
19308
19280
  en: "Opaque Shapes + Transparent Shapes",
19309
- de: "opaque Formen + transparente Formen",
19281
+ de: "Undurchsichtige Formen + Transparente Formen",
19310
19282
  fr: "Formes opaques + Formes transparentes",
19311
19283
  },
19312
19284
  ];
@@ -19841,13 +19813,15 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
19841
19813
  this ._Exposure .addInterest ("set_Exposure__", this);
19842
19814
  this ._LogarithmicDepthBuffer .addInterest ("set_LogarithmicDepthBuffer__", this);
19843
19815
  this ._Multisampling .addInterest ("set_Multisampling__", this);
19844
- this ._Mute .addInterest ("set_Mute__", this);
19816
+ this ._Mute .addInterest ("set_SoundIntensity__", this);
19845
19817
  this ._OrderIndependentTransparency .addInterest ("set_OrderIndependentTransparency__", this);
19818
+ this ._SoundIntensity .addInterest ("set_SoundIntensity__", this);
19846
19819
  this ._Timings .addInterest ("set_Timings__", this);
19847
19820
  this ._XRSessionMode .addInterest ("set_XRSessionMode__", this);
19848
19821
 
19849
19822
  this .set_Antialiased__ (this ._Antialiased);
19850
19823
  this .set_Shading__ (this ._Shading);
19824
+ this .set_SoundIntensity__ ();
19851
19825
  this .set_AutoUpdate__ (this ._AutoUpdate);
19852
19826
  this .set_ContentScale__ (this ._ContentScale);
19853
19827
  this .set_DisplayColorSpace (this ._DisplayColorSpace);
@@ -20016,13 +19990,6 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
20016
19990
  browser .setShading (this .shading);
20017
19991
  };
20018
19992
  })(),
20019
- set_StraightenHorizon__ (straightenHorizon)
20020
- {
20021
- this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
20022
-
20023
- if (straightenHorizon .getValue ())
20024
- this .getBrowser () .getActiveLayer () ?.straightenView ();
20025
- },
20026
19993
  set_AutoUpdate__ (autoUpdate)
20027
19994
  {
20028
19995
  document .removeEventListener ("visibilitychange", this .checkUpdateListener);
@@ -20159,20 +20126,25 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, Base_X3DBaseN
20159
20126
 
20160
20127
  browser .reshape ();
20161
20128
  },
20162
- set_Mute__ (mute)
20129
+ set_OrderIndependentTransparency__ ()
20130
+ {
20131
+ this .getBrowser () .reshape ();
20132
+ },
20133
+ set_SoundIntensity__ ()
20163
20134
  {
20164
20135
  const
20165
- browser = this .getBrowser (),
20166
- audioContext = browser .getAudioContext ();
20136
+ unmute = !this ._Mute .getValue (),
20137
+ gain = unmute * Math_Algorithm .clamp (this ._SoundIntensity .getValue (), 0, 1);
20167
20138
 
20168
- if (mute .getValue ())
20169
- browser .stopAudioElement (audioContext, "suspend");
20170
- else
20171
- browser .startAudioElement (audioContext, "resume");
20139
+ for (const soundNode of this .getBrowser () .getSoundDestinations ())
20140
+ soundNode .getSoundDestination () .gain .value = gain;
20172
20141
  },
20173
- set_OrderIndependentTransparency__ ()
20142
+ set_StraightenHorizon__ (straightenHorizon)
20174
20143
  {
20175
- this .getBrowser () .reshape ();
20144
+ this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
20145
+
20146
+ if (straightenHorizon .getValue ())
20147
+ this .getBrowser () .getActiveLayer () ?.straightenView ();
20176
20148
  },
20177
20149
  set_Timings__ (timings)
20178
20150
  {
@@ -20225,6 +20197,7 @@ Object .defineProperties (BrowserOptions,
20225
20197
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Mute", new x_ite_Fields .SFBool ()),
20226
20198
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Notifications", new x_ite_Fields .SFBool (true)),
20227
20199
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "OrderIndependentTransparency", new x_ite_Fields .SFBool ()),
20200
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "SoundIntensity", new x_ite_Fields .SFFloat (1)),
20228
20201
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "StraightenHorizon", new x_ite_Fields .SFBool (true)),
20229
20202
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "TextCompression", new x_ite_Fields .SFString ("CHAR_SPACING")),
20230
20203
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Timings", new x_ite_Fields .SFBool ()),
@@ -20358,6 +20331,7 @@ Object .defineProperties (RenderingProperties,
20358
20331
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "MaxSamples", new x_ite_Fields .SFInt32 (0)),
20359
20332
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "Multisampling", new x_ite_Fields .SFInt32 (4)),
20360
20333
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "PixelsPerPoint", new x_ite_Fields .SFDouble (1)),
20334
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "SoundDestinations", new x_ite_Fields .SFInt32 ()),
20361
20335
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "XRSession", new x_ite_Fields .SFBool ()),
20362
20336
  ]),
20363
20337
  enumerable: true,
@@ -21601,7 +21575,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
21601
21575
  {
21602
21576
  destinationField .addReference (instance .getField (originalReference .getName ()));
21603
21577
  }
21604
- catch (error)
21578
+ catch
21605
21579
  {
21606
21580
  console .error (`No reference '${originalReference .getName ()}' inside execution context ${instance .getTypeName ()} '${instance .getName ()}'.`);
21607
21581
  }
@@ -22030,7 +22004,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
22030
22004
  [_metaDataCallbacks]: new Map (),
22031
22005
  addMetaDataCallback (key, path, callback)
22032
22006
  {
22033
- if (!this .hasOwnProperty (_metaDataCallbacks))
22007
+ if (!Object .hasOwn (this, _metaDataCallbacks))
22034
22008
  this [_metaDataCallbacks] = new Map ();
22035
22009
 
22036
22010
  let map = this [_metaDataCallbacks] .get (path);
@@ -31238,7 +31212,7 @@ const Plane3_default_ = Plane3;
31238
31212
 
31239
31213
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31240
31214
  ;// ./src/standard/Math/Geometry/Triangle3.js
31241
- /* provided dependency */ var libtess = __webpack_require__(877);
31215
+ /* provided dependency */ var libtess = __webpack_require__(643);
31242
31216
 
31243
31217
 
31244
31218
  const Triangle3 =
@@ -39117,8 +39091,9 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39117
39091
  {
39118
39092
  this .cycle += this .interval * Math .floor ((time - this .cycle) / this .interval);
39119
39093
 
39120
- this ._elapsedTime = this .getElapsedTime ();
39121
- this ._cycleTime = time;
39094
+ this ._elapsedTime = this .getElapsedTime ();
39095
+ this ._cycleComplete = time;
39096
+ this ._cycleTime = time;
39122
39097
 
39123
39098
  this .set_fraction (time);
39124
39099
  }
@@ -39126,6 +39101,7 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39126
39101
  else
39127
39102
  {
39128
39103
  this ._elapsedTime = this .getElapsedTime ();
39104
+ this ._cycleComplete = time;
39129
39105
  this ._fraction_changed = this .fraction = this .last;
39130
39106
 
39131
39107
  this .stop ();
@@ -39163,6 +39139,7 @@ Object .defineProperties (TimeSensor,
39163
39139
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39164
39140
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39165
39141
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39142
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFTime ()),
39166
39143
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39167
39144
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39168
39145
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
@@ -40709,6 +40686,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
40709
40686
  case "KHR_materials_ior":
40710
40687
  case "KHR_materials_iridescence":
40711
40688
  case "KHR_materials_pbrSpecularGlossiness":
40689
+ case "KHR_materials_retroreflection":
40712
40690
  case "KHR_materials_sheen":
40713
40691
  case "KHR_materials_specular":
40714
40692
  case "KHR_materials_transmission":
@@ -41777,6 +41755,9 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
41777
41755
  case "KHR_materials_iridescence":
41778
41756
  this .khrMaterialsIridescenceObject (value, materialNode);
41779
41757
  break;
41758
+ case "KHR_materials_retroreflection":
41759
+ this .khrMaterialsRetroreflectionObject (value, materialNode);
41760
+ break;
41780
41761
  case "KHR_materials_sheen":
41781
41762
  this .khrMaterialsSheenObject (value, materialNode);
41782
41763
  break;
@@ -41924,6 +41905,23 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
41924
41905
 
41925
41906
  materialNode ._extensions .push (extension);
41926
41907
  },
41908
+ khrMaterialsRetroreflectionObject (KHR_materials_retroreflection, materialNode)
41909
+ {
41910
+ if (!(KHR_materials_retroreflection instanceof Object))
41911
+ return;
41912
+
41913
+ const extension = this .getScene () .createNode ("RetroreflectionMaterialExtension", false);
41914
+
41915
+ extension ._retroreflection = this .numberValue (KHR_materials_retroreflection .retroreflectionFactor, 0);
41916
+ extension ._retroreflectionTexture = this .textureInfo (KHR_materials_retroreflection .retroreflectionTexture);
41917
+ extension ._retroreflectionTextureMapping = this .textureMapping (KHR_materials_retroreflection .retroreflectionTexture);
41918
+
41919
+ extension .setup ();
41920
+
41921
+ KHR_materials_retroreflection .pointers = [extension];
41922
+
41923
+ materialNode ._extensions .push (extension);
41924
+ },
41927
41925
  khrMaterialsSheenObject (KHR_materials_sheen, materialNode)
41928
41926
  {
41929
41927
  if (!(KHR_materials_sheen instanceof Object))
@@ -47938,7 +47936,7 @@ const Bezier_default_ = Bezier;
47938
47936
 
47939
47937
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47940
47938
  ;// ./src/x_ite/Parser/SVGParser.js
47941
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(877);
47939
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(643);
47942
47940
 
47943
47941
 
47944
47942
 
@@ -54684,7 +54682,7 @@ function X3DCoreContext (element)
54684
54682
  {
54685
54683
  const link = document .createElement ("link");
54686
54684
 
54687
- link .integrity = "sha384-F+mssNuFiQHol3RT7fLg6krIVxgAio+0HtxiqkBJSZIYtVM6Z51XLEsu66xkirs/";
54685
+ link .integrity = "sha384-dhnoOI+clBqqFYGBrUCL7KhjerG/JEhXRHWvaNS1qEwbCU/f0MWYgFRQj2esJwbi";
54688
54686
  link .rel = "stylesheet";
54689
54687
  link .crossOrigin = "anonymous";
54690
54688
  link .onload = resolve;
@@ -64080,10 +64078,13 @@ const
64080
64078
  _loadingTotal = Symbol (),
64081
64079
  X3DNetworkingContext_loadingObjects = Symbol (),
64082
64080
  _browserLoading = Symbol (),
64081
+ _percentTime = Symbol (),
64083
64082
  _set_loadCount = Symbol (),
64084
64083
  _loadFractions = Symbol (),
64085
64084
  _defaultScene = Symbol ();
64086
64085
 
64086
+ const PERCENT_TIME = 8_000; // in ms
64087
+
64087
64088
  function getBaseURI (element)
64088
64089
  {
64089
64090
  const { baseURI } = element;
@@ -64140,6 +64141,7 @@ Object .assign (X3DNetworkingContext .prototype,
64140
64141
  setBrowserLoading (value)
64141
64142
  {
64142
64143
  this [_browserLoading] = value;
64144
+ this [_percentTime] = Date .now ();
64143
64145
 
64144
64146
  if (value)
64145
64147
  {
@@ -64202,12 +64204,18 @@ Object .assign (X3DNetworkingContext .prototype,
64202
64204
  this [X3DNetworkingContext_loadingObjects] .add (object);
64203
64205
 
64204
64206
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64207
+
64208
+ if (Date .now () - this [_percentTime] < PERCENT_TIME)
64209
+ this [_percentTime] = Date .now ();
64205
64210
  },
64206
64211
  removeLoadingObject (object)
64207
64212
  {
64208
64213
  this [X3DNetworkingContext_loadingObjects] .delete (object);
64209
64214
 
64210
64215
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64216
+
64217
+ if (Date .now () - this [_percentTime] < PERCENT_TIME)
64218
+ this [_percentTime] = Date .now ();
64211
64219
  },
64212
64220
  getDisplayLoadCount ()
64213
64221
  {
@@ -64243,8 +64251,8 @@ Object .assign (X3DNetworkingContext .prototype,
64243
64251
  if (this ._loadCount .getValue () || this [_browserLoading])
64244
64252
  {
64245
64253
  string = ((loadingDisplay || 1) === 1
64246
- ? gettext ("Loading %1 file")
64247
- : gettext ("Loading %1 files")) .replace ("%1", loadingDisplay || 1);
64254
+ ? gettext("Loading %1 file")
64255
+ : gettext("Loading %1 files")) .replace ("%1", loadingDisplay || 1);
64248
64256
  }
64249
64257
  else
64250
64258
  {
@@ -64261,8 +64269,14 @@ Object .assign (X3DNetworkingContext .prototype,
64261
64269
  const fractions = 1 - (this ._loadCount .getValue () + loadFractions)
64262
64270
  / (this [_loadingTotal] + this [_loadFractions] .size);
64263
64271
 
64272
+ const percent = fractions * 100;
64273
+
64274
+ // Show progress in % if loading takes too long.
64275
+ if (Date .now () - this [_percentTime] > PERCENT_TIME)
64276
+ string += ` (${percent .toFixed (2)}\u202F%)`;
64277
+
64264
64278
  this .getSplashScreen () .querySelector (".x_ite-private-spinner-text") .textContent = string;
64265
- this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${100 * fractions}%`;
64279
+ this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${percent}%`;
64266
64280
  }
64267
64281
  else
64268
64282
  {
@@ -67110,7 +67124,7 @@ vec3 getIBLRadianceCharlie(const in vec3 n,const in vec3 v,const in float sheenR
67110
67124
 
67111
67125
 
67112
67126
  const MaterialInfo2_glsl_default_ = () => /* glsl */ `
67113
- 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;};
67127
+ 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;};
67114
67128
  #if defined(X3D_MATERIAL_METALLIC_ROUGHNESS)
67115
67129
  ${MaterialTextures .texture ("x3d_BaseTexture", "rgba", "linear")}
67116
67130
  vec4 getBaseColor(){float alpha=1.-x3d_Material.transparency;vec4 baseColor=vec4(x3d_Material.baseColor,alpha);
@@ -67275,6 +67289,14 @@ vec3 anisotropySample=getAnisotropyTextureEXT();direction=anisotropySample.xy*2.
67275
67289
  #endif
67276
67290
  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;}
67277
67291
  #endif
67292
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67293
+ ${MaterialTextures .texture ("x3d_RetroreflectionTextureEXT", "r")}
67294
+ uniform float x3d_RetroreflectionEXT;MaterialInfo getRetroreflectionInfo(in MaterialInfo info){float retroreflectionFactor=x3d_RetroreflectionEXT;
67295
+ #if defined(X3D_RETROREFLECTION_TEXTURE_EXT)
67296
+ retroreflectionFactor*=getRetroreflectionTextureEXT();
67297
+ #endif
67298
+ info.retroreflectionFactor=retroreflectionFactor;return info;}
67299
+ #endif
67278
67300
  `
67279
67301
  ;
67280
67302
 
@@ -67317,6 +67339,9 @@ baseColor.rgb*=getTextureProjectorColor();
67317
67339
  vec3 color=vec3(0);vec3 v=normalize(-vertex);
67318
67340
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67319
67341
  NormalInfo normalInfo=getNormalInfo(x3d_Material.normalScale);vec3 n=normalInfo.n;float NdotV=clamp(dot(n,v),0.,1.);
67342
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67343
+ vec3 v_retro=reflect(-v,n);float NdotV_retro=clamp(dot(n,v_retro),0.,1.);
67344
+ #endif
67320
67345
  #endif
67321
67346
  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;
67322
67347
  #if defined(X3D_IOR_MATERIAL_EXT)
@@ -67352,10 +67377,17 @@ materialInfo=getVolumeScatterInfo(materialInfo);
67352
67377
  #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67353
67378
  materialInfo=getAnisotropyInfo(materialInfo,normalInfo);
67354
67379
  #endif
67380
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67381
+ materialInfo=getRetroreflectionInfo(materialInfo);
67382
+ #endif
67355
67383
  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);
67356
67384
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67357
67385
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67358
- 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.;
67386
+ 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);
67387
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67388
+ 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);
67389
+ #endif
67390
+ if(materialInfo.iridescenceThickness==0.)materialInfo.iridescenceFactor=0.;
67359
67391
  #endif
67360
67392
  #endif
67361
67393
  #if defined(X3D_DIFFUSE_TRANSMISSION_MATERIAL_EXT)
@@ -67434,6 +67466,19 @@ l_metal_brdf=metal_fresnel*l_specular_metal;l_dielectric_brdf=mix(l_diffuse,l_sp
67434
67466
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67435
67467
  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);
67436
67468
  #endif
67469
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67470
+ 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;
67471
+ #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67472
+ l_specular_metal_retro=intensity*NdotL*BRDF_specularGGXAnisotropy(materialInfo.alphaRoughness,materialInfo.anisotropyStrength,n,v_retro,l,h_retro,materialInfo.anisotropicT,materialInfo.anisotropicB);
67473
+ #else
67474
+ l_specular_metal_retro=intensity*NdotL*BRDF_specularGGX(materialInfo.alphaRoughness,NdotL,NdotV_retro,NdotH_retro);
67475
+ #endif
67476
+ 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);
67477
+ #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67478
+ 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);
67479
+ #endif
67480
+ 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);
67481
+ #endif
67437
67482
  #if defined(X3D_CLEARCOAT_MATERIAL_EXT)
67438
67483
  l_clearcoat_brdf=intensity*getPunctualRadianceClearCoat(materialInfo.clearcoatNormal,v,l,h,VdotH,materialInfo.clearcoatF0,materialInfo.clearcoatF90,materialInfo.clearcoatRoughness);
67439
67484
  #endif
@@ -71867,10 +71912,9 @@ const PeriodicWave_default_ = PeriodicWave;
71867
71912
 
71868
71913
 
71869
71914
 
71870
-
71871
71915
  const
71872
71916
  _audioContext = Symbol (),
71873
- _audioNodes = Symbol (),
71917
+ _soundDestinationNodes = Symbol (),
71874
71918
  _audioElements = Symbol (),
71875
71919
  _defaultPeriodicWave = Symbol (),
71876
71920
  _noSoundButton = Symbol (),
@@ -71878,9 +71922,7 @@ const
71878
71922
 
71879
71923
  function X3DSoundContext ()
71880
71924
  {
71881
- this .addChildObjects (Base_X3DConstants .outputOnly, "audio", new x_ite_Fields .SFBool ());
71882
-
71883
- this [_audioNodes] = new Set ();
71925
+ this [_soundDestinationNodes] = new Set ();
71884
71926
  this [_audioElements] = new Map ();
71885
71927
  }
71886
71928
 
@@ -71918,17 +71960,25 @@ Object .assign (X3DSoundContext .prototype,
71918
71960
  return audioContext;
71919
71961
  })();
71920
71962
  },
71921
- addAudioNode (element)
71963
+ addSoundDestination (soundDestinationNode)
71922
71964
  {
71923
- this [_audioNodes] .add (element);
71965
+ const gain = !this .getBrowserOption ("Mute") * Math_Algorithm .clamp (this .getBrowserOption ("SoundIntensity"), 0, 1);
71966
+
71967
+ soundDestinationNode .getSoundDestination () .gain .value = gain;
71924
71968
 
71925
- this ._audio = this [_audioNodes] .size;
71969
+ this [_soundDestinationNodes] .add (soundDestinationNode);
71970
+
71971
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71926
71972
  },
71927
- removeAudioNode (element)
71973
+ removeSoundDestination (soundDestinationNode)
71928
71974
  {
71929
- this [_audioNodes] .delete (element);
71975
+ this [_soundDestinationNodes] .delete (soundDestinationNode);
71930
71976
 
71931
- this ._audio = this [_audioNodes] .size;
71977
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71978
+ },
71979
+ getSoundDestinations ()
71980
+ {
71981
+ return this [_soundDestinationNodes];
71932
71982
  },
71933
71983
  startAudioElement (audioElement, functionName = "play")
71934
71984
  {
@@ -87290,7 +87340,7 @@ Object .assign (Object .setPrototypeOf (PhysicalMaterial .prototype, Shape_X3DOn
87290
87340
 
87291
87341
  this .setTransmission (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .TransmissionMaterialExtension)));
87292
87342
 
87293
- this .setVolumeScatter (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeScatterMaterialExtension)) && extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeMaterialExtension)));
87343
+ this .setVolumeScatter (extensionNodes .some (extensionNode => extensionNode .getType () .includes (Base_X3DConstants .VolumeScatterMaterialExtension)));
87294
87344
 
87295
87345
  this .set_extensionsKey__ ();
87296
87346
  this .set_renderedTextures__ ();
@@ -87759,6 +87809,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Sound
87759
87809
  const channelCountModes = new Map ([
87760
87810
  ["MAX", "max"],
87761
87811
  ["CLAMPED-MAX", "clamped-max"],
87812
+ ["CLAMPED_MAX", "clamped-max"],
87762
87813
  ["EXPLICIT", "explicit"],
87763
87814
  ]);
87764
87815
 
@@ -88337,10 +88388,12 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
88337
88388
  unloadData ()
88338
88389
  {
88339
88390
  this .setMediaElement (null);
88391
+
88392
+ this ._duration_changed = -1;
88340
88393
  },
88341
88394
  loadData ()
88342
88395
  {
88343
- this .unloadData ();
88396
+ this .setMediaElement (null);
88344
88397
 
88345
88398
  new InputOutput_FileLoader (this, { dataAsString: false }) .loadDocument (this ._url, async (data, fileURL) =>
88346
88399
  {
@@ -88433,10 +88486,13 @@ function X3DSoundDestinationNode (executionContext)
88433
88486
 
88434
88487
  this .addType (Base_X3DConstants .X3DSoundDestinationNode);
88435
88488
 
88489
+ // Private properties
88490
+
88436
88491
  const audioContext = this .getBrowser () .getAudioContext ();
88437
88492
 
88438
88493
  this .childNodes = [ ];
88439
88494
  this .audioDestination = new GainNode (audioContext, { gain: 0 });
88495
+ this .soundDestination = new GainNode (audioContext, { gain: 0 });
88440
88496
  }
88441
88497
 
88442
88498
  Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype),
@@ -88461,6 +88517,10 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88461
88517
  this .set_channelInterpretation__ ();
88462
88518
  this .set_children__ ();
88463
88519
  },
88520
+ getSoundDestination ()
88521
+ {
88522
+ return this .soundDestination;
88523
+ },
88464
88524
  getAudioDestination ()
88465
88525
  {
88466
88526
  return this .audioDestination;
@@ -88471,17 +88531,17 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88471
88531
 
88472
88532
  const
88473
88533
  browser = this .getBrowser (),
88474
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88534
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88475
88535
 
88476
88536
  if (active)
88477
88537
  {
88478
- this .audioDestination .connect (this .getSoundDestination ());
88479
- browser .addAudioNode (this);
88538
+ browser .addSoundDestination (this);
88539
+ this .audioDestination .connect (this .soundDestination);
88480
88540
  }
88481
88541
  else
88482
88542
  {
88543
+ browser .removeSoundDestination (this);
88483
88544
  this .audioDestination .disconnect ();
88484
- browser .removeAudioNode (this);
88485
88545
  }
88486
88546
 
88487
88547
  this ._isActive = this ._enabled;
@@ -88499,6 +88559,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88499
88559
  const channelCountModes = new Map ([
88500
88560
  ["MAX", "max"],
88501
88561
  ["CLAMPED-MAX", "clamped-max"],
88562
+ ["CLAMPED_MAX", "clamped-max"],
88502
88563
  ["EXPLICIT", "explicit"],
88503
88564
  ]);
88504
88565
 
@@ -88582,6 +88643,8 @@ function AudioDestination (executionContext)
88582
88643
  this .audioElement = new Audio ();
88583
88644
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
88584
88645
  this .audioElement .srcObject = this .mediaStreamAudioDestinationNode .stream;
88646
+
88647
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
88585
88648
  }
88586
88649
 
88587
88650
  Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -88598,17 +88661,13 @@ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSo
88598
88661
 
88599
88662
  this .set_mediaDeviceID__ ();
88600
88663
  },
88601
- getSoundDestination ()
88602
- {
88603
- return this .mediaStreamAudioDestinationNode;
88604
- },
88605
88664
  set_enabled__ ()
88606
88665
  {
88607
88666
  Sound_X3DSoundDestinationNode .prototype .set_enabled__ .call (this);
88608
88667
 
88609
88668
  const
88610
88669
  browser = this .getBrowser (),
88611
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88670
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88612
88671
 
88613
88672
  if (active)
88614
88673
  browser .startAudioElement (this .audioElement);
@@ -88852,7 +88911,7 @@ Object .assign (Object .setPrototypeOf (BufferAudioSource .prototype, Sound_X3DS
88852
88911
  }
88853
88912
  else
88854
88913
  {
88855
- this ._bufferDuration = 0;
88914
+ this ._bufferDuration = -1;
88856
88915
 
88857
88916
  this .setMediaElement (null);
88858
88917
  }
@@ -89090,6 +89149,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89090
89149
  const channelCountModes = new Map ([
89091
89150
  ["MAX", "max"],
89092
89151
  ["CLAMPED-MAX", "clamped-max"],
89152
+ ["CLAMPED_MAX", "clamped-max"],
89093
89153
  ["EXPLICIT", "explicit"],
89094
89154
  ]);
89095
89155
 
@@ -89154,7 +89214,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89154
89214
  for (const [i, childNode] of this .childNodes .entries ())
89155
89215
  this .connectChildNode (i, childNode);
89156
89216
  },
89157
- setChildNodes (childNodes)
89217
+ setChildNodes ()
89158
89218
  { },
89159
89219
  connectChildNode (i, childNode)
89160
89220
  {
@@ -90323,18 +90383,20 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90323
90383
  const
90324
90384
  audioContext = this .getBrowser () .getAudioContext (),
90325
90385
  gainNode = new GainNode (audioContext, { gain: 0 }),
90386
+ gainStereoNode = new GainNode (audioContext, { gain: 0 }),
90326
90387
  splitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs: 2 }),
90327
- mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90328
90388
  gainFrontLeftNode = new GainNode (audioContext, { gain: 0 }),
90329
90389
  gainFrontRightNode = new GainNode (audioContext, { gain: 0 }),
90330
90390
  gainBackLeftNode = new GainNode (audioContext, { gain: 0 }),
90331
- gainBackRightNode = new GainNode (audioContext, { gain: 0 });
90391
+ gainBackRightNode = new GainNode (audioContext, { gain: 0 }),
90392
+ mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90393
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90332
90394
 
90333
90395
  gainNode .channelCount = 2;
90334
90396
  gainNode .channelCountMode = "explicit";
90335
90397
  gainNode .channelInterpretation = "speakers";
90336
90398
 
90337
- gainNode .connect (splitterNode);
90399
+ gainStereoNode .connect (soundDestination);
90338
90400
  splitterNode .connect (gainFrontLeftNode, 0);
90339
90401
  splitterNode .connect (gainFrontRightNode, 1);
90340
90402
  splitterNode .connect (gainBackRightNode, 0);
@@ -90343,27 +90405,37 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90343
90405
  gainFrontRightNode .connect (mergerNode, 0, 1);
90344
90406
  gainBackLeftNode .connect (mergerNode, 0, 0);
90345
90407
  gainBackRightNode .connect (mergerNode, 0, 1);
90346
- mergerNode .connect (audioContext .destination);
90408
+ mergerNode .connect (soundDestination);
90409
+ soundDestination .connect (audioContext .destination);
90347
90410
 
90348
90411
  this .gainNode = gainNode;
90412
+ this .gainStereoNode = gainStereoNode;
90349
90413
  this .splitterNode = splitterNode;
90350
90414
  this .gainFrontLeftNode = gainFrontLeftNode;
90351
90415
  this .gainFrontRightNode = gainFrontRightNode;
90352
90416
  this .gainBackLeftNode = gainBackLeftNode;
90353
90417
  this .gainBackRightNode = gainBackRightNode;
90354
90418
  this .mergerNode = mergerNode;
90419
+ this .soundDestination = soundDestination;
90355
90420
 
90356
- this .getLive () .addInterest ("set_live__", this);
90357
- this ._traversed .addInterest ("set_live__", this);
90421
+ this .getLive () .addInterest ("set_enabled__", this);
90422
+ this ._traversed .addInterest ("set_enabled__", this);
90423
+ this ._enabled .addInterest ("set_enabled__", this);
90358
90424
 
90359
- this ._intensity .addInterest ("set_intensity__", this);
90360
- this ._source .addInterest ("set_children__", this);
90361
- this ._children .addInterest ("set_children__", this);
90425
+ this ._spatialize .addInterest ("set_spatialize__", this);
90426
+ this ._intensity .addInterest ("set_intensity__", this);
90427
+ this ._source .addInterest ("set_children__", this);
90428
+ this ._children .addInterest ("set_children__", this);
90362
90429
 
90363
- this .set_live__ ();
90430
+ this .set_enabled__ ();
90431
+ this .set_spatialize__ ();
90364
90432
  this .set_intensity__ ();
90365
90433
  this .set_children__ ();
90366
90434
  },
90435
+ getSoundDestination ()
90436
+ {
90437
+ return this .soundDestination;
90438
+ },
90367
90439
  setTraversed (value)
90368
90440
  {
90369
90441
  if (value)
@@ -90391,32 +90463,44 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90391
90463
  rotationFront = 1 - rotation,
90392
90464
  rotationBack = rotation;
90393
90465
 
90466
+ this .gainStereoNode .gain .value = gain;
90394
90467
  this .gainFrontLeftNode .gain .value = gain * rotationFront * panLeft;
90395
90468
  this .gainFrontRightNode .gain .value = gain * rotationFront * panRight;
90396
90469
  this .gainBackLeftNode .gain .value = gain * rotationBack * panLeft;
90397
90470
  this .gainBackRightNode .gain .value = gain * rotationBack * panRight;
90398
90471
  },
90399
- set_live__ ()
90472
+ set_enabled__ ()
90400
90473
  {
90401
- const browser = this .getBrowser ();
90402
-
90403
- this .mergerNode .disconnect ();
90474
+ const
90475
+ browser = this .getBrowser (),
90476
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90404
90477
 
90405
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90478
+ if (active)
90406
90479
  {
90407
90480
  const audioContext = this .getBrowser () .getAudioContext ();
90408
90481
 
90409
- this .mergerNode .connect (audioContext .destination);
90482
+ this .soundDestination .connect (audioContext .destination);
90410
90483
 
90411
- browser .addAudioNode (this);
90484
+ browser .addSoundDestination (this);
90412
90485
  browser .sensorEvents () .addInterest ("update", this);
90413
90486
  }
90414
90487
  else
90415
90488
  {
90416
- browser .removeAudioNode (this);
90489
+ this .soundDestination .disconnect ();
90490
+
90491
+ browser .removeSoundDestination (this);
90417
90492
  browser .sensorEvents () .removeInterest ("update", this);
90418
90493
  }
90419
90494
  },
90495
+ set_spatialize__ ()
90496
+ {
90497
+ this .gainNode .disconnect ();
90498
+
90499
+ if (this ._spatialize .getValue ())
90500
+ this .gainNode .connect (this .splitterNode);
90501
+ else
90502
+ this .gainNode .connect (this .gainStereoNode);
90503
+ },
90420
90504
  set_intensity__ ()
90421
90505
  {
90422
90506
  this .gainNode .gain .value = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1);
@@ -90435,7 +90519,7 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90435
90519
 
90436
90520
  for (const child of this ._children)
90437
90521
  {
90438
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90522
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90439
90523
 
90440
90524
  if (!childNode)
90441
90525
  continue;
@@ -90680,22 +90764,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90680
90764
  Sound_X3DSoundNode .prototype .initialize .call (this);
90681
90765
 
90682
90766
  const
90683
- audioContext = this .getBrowser () .getAudioContext (),
90684
- gainNode = new GainNode (audioContext, { gain: 0 }),
90685
- pannerNode = new PannerNode (audioContext);
90767
+ audioContext = this .getBrowser () .getAudioContext (),
90768
+ gainNode = new GainNode (audioContext, { gain: 0 }),
90769
+ pannerNode = new PannerNode (audioContext),
90770
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90686
90771
 
90687
90772
  gainNode .channelCount = 2;
90688
90773
  gainNode .channelCountMode = "explicit";
90689
90774
  gainNode .channelInterpretation = "speakers";
90690
90775
 
90691
- gainNode .connect (pannerNode);
90692
- pannerNode .connect (audioContext .destination);
90776
+ gainNode .connect (pannerNode);
90777
+ pannerNode .connect (soundDestination);
90778
+ soundDestination .connect (audioContext .destination);
90693
90779
 
90694
- this .gainNode = gainNode;
90695
- this .pannerNode = pannerNode;
90780
+ this .gainNode = gainNode;
90781
+ this .pannerNode = pannerNode;
90782
+ this .soundDestination = soundDestination;
90696
90783
 
90697
- this .getLive () .addInterest ("set_live__", this);
90698
- this ._traversed .addInterest ("set_live__", this);
90784
+ this .getLive () .addInterest ("set_enabled__", this);
90785
+ this ._traversed .addInterest ("set_enabled__", this);
90786
+ this ._enabled .addInterest ("set_enabled__", this);
90699
90787
 
90700
90788
  this ._spatialize .addInterest ("set_spatialize__", this);
90701
90789
  this ._intensity .addInterest ("set_intensity__", this);
@@ -90711,7 +90799,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90711
90799
  this ._rolloffFactor .addInterest ("set_distanceModel__", this);
90712
90800
  this ._children .addInterest ("set_children__", this);
90713
90801
 
90714
- this .set_live__ ();
90802
+ this .set_enabled__ ();
90715
90803
  this .set_spatialize__ ();
90716
90804
  this .set_intensity__ ();
90717
90805
  this .set_coneOuterGain__ ();
@@ -90724,6 +90812,10 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90724
90812
  this .set_dopplerEnabled__ ();
90725
90813
  this .set_children__ ();
90726
90814
  },
90815
+ getSoundDestination ()
90816
+ {
90817
+ return this .soundDestination;
90818
+ },
90727
90819
  setTraversed (value)
90728
90820
  {
90729
90821
  if (value)
@@ -90743,24 +90835,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90743
90835
  {
90744
90836
  return this .currentTraversed;
90745
90837
  },
90746
- set_live__ ()
90838
+ set_enabled__ ()
90747
90839
  {
90748
- const browser = this .getBrowser ();
90749
-
90750
- this .pannerNode .disconnect ();
90840
+ const
90841
+ browser = this .getBrowser (),
90842
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90751
90843
 
90752
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90844
+ if (active)
90753
90845
  {
90754
90846
  const audioContext = this .getBrowser () .getAudioContext ();
90755
90847
 
90756
- this .pannerNode .connect (audioContext .destination);
90848
+ this .soundDestination .connect (audioContext .destination);
90757
90849
 
90758
- browser .addAudioNode (this);
90850
+ browser .addSoundDestination (this);
90759
90851
  browser .sensorEvents () .addInterest ("update", this);
90760
90852
  }
90761
90853
  else
90762
90854
  {
90763
- browser .removeAudioNode (this);
90855
+ this .soundDestination .disconnect ();
90856
+
90857
+ browser .removeSoundDestination (this);
90764
90858
  browser .sensorEvents () .removeInterest ("update", this);
90765
90859
  }
90766
90860
  },
@@ -90839,7 +90933,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90839
90933
 
90840
90934
  for (const child of this ._children)
90841
90935
  {
90842
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90936
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90843
90937
 
90844
90938
  if (!childNode)
90845
90939
  continue;
@@ -90952,9 +91046,13 @@ function StreamAudioDestination (executionContext)
90952
91046
 
90953
91047
  this .addType (Base_X3DConstants .StreamAudioDestination);
90954
91048
 
91049
+ // Private properties
91050
+
90955
91051
  const audioContext = this .getBrowser () .getAudioContext ();
90956
91052
 
90957
91053
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
91054
+
91055
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
90958
91056
  }
90959
91057
 
90960
91058
  Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -90967,10 +91065,6 @@ Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound
90967
91065
 
90968
91066
  this .set_mediaDeviceID__ ();
90969
91067
  },
90970
- getSoundDestination ()
90971
- {
90972
- return this .mediaStreamAudioDestinationNode;
90973
- },
90974
91068
  set_enabled__ ()
90975
91069
  { },
90976
91070
  set_mediaDeviceID__ ()
@@ -91407,8 +91501,8 @@ const PNGMedia_default_ = PNGMedia;
91407
91501
 
91408
91502
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91409
91503
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91410
- /* provided dependency */ var SuperGif = __webpack_require__(143);
91411
- /* provided dependency */ var APNG = __webpack_require__(701);
91504
+ /* provided dependency */ var SuperGif = __webpack_require__(133);
91505
+ /* provided dependency */ var APNG = __webpack_require__(991);
91412
91506
 
91413
91507
 
91414
91508
 
@@ -91469,6 +91563,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91469
91563
  {
91470
91564
  this .clearTexture ();
91471
91565
  this .setMediaElement (null);
91566
+ this .updateOutputs (0, 0, 0, false, -1);
91472
91567
  },
91473
91568
  async loadData ()
91474
91569
  {
@@ -91543,7 +91638,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91543
91638
 
91544
91639
  this .setMediaElement (null);
91545
91640
  this .clearTexture ();
91546
- this .updateOutputs (0, 0, 0, -1);
91641
+ this .updateOutputs (0, 0, 0, false, -1);
91547
91642
  this .setLoadState (Base_X3DConstants .FAILED_STATE);
91548
91643
  },
91549
91644
  loadDocument (fileURL)
@@ -91584,7 +91679,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91584
91679
 
91585
91680
  this .setMediaElement (gif);
91586
91681
  this .setTextureData (width, height, true, false, gif .get_frames () [0] .data);
91587
- this .updateOutputs (width, height, 4, gif .duration);
91682
+ this .updateOutputs (width, height, 4, false, gif .duration);
91588
91683
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91589
91684
 
91590
91685
  this .set_speed__ ();
@@ -91597,7 +91692,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91597
91692
 
91598
91693
  this .setMediaElement (apng);
91599
91694
  this .setTextureData (width, height, true, false, currentFrame);
91600
- this .updateOutputs (width, height, 4, duration);
91695
+ this .updateOutputs (width, height, 4, false, duration);
91601
91696
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91602
91697
 
91603
91698
  this .set_speed__ ();
@@ -91618,16 +91713,21 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91618
91713
 
91619
91714
  this .setMediaElement (video);
91620
91715
  this .setTextureData (width, height, true, false, video);
91621
- this .updateOutputs (width, height, 3, video .duration);
91716
+ this .updateOutputs (width, height, 3, this .hasAudioTracks (video), video .duration);
91622
91717
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91623
91718
 
91624
91719
  this .set_speed__ ();
91625
91720
  },
91626
- updateOutputs (width, height, colorDepth, duration)
91721
+ hasAudioTracks (video)
91722
+ {
91723
+ return !! (video .mozHasAudio || video .webkitAudioDecodedByteCount || video .audioTracks ?.length);
91724
+ },
91725
+ updateOutputs (width, height, colorDepth, hasSound, duration)
91627
91726
  {
91628
91727
  this ._width = width;
91629
91728
  this ._height = height;
91630
91729
  this ._colorDepth = colorDepth;
91730
+ this ._hasSound = hasSound;
91631
91731
  this ._duration_changed = duration;
91632
91732
  },
91633
91733
  set_speed__ ()
@@ -93353,7 +93453,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93353
93453
  {
93354
93454
  const spinnerText = this .getSplashScreen () .querySelector (".x_ite-private-spinner-text");
93355
93455
 
93356
- spinnerText .textContent = gettext ("Failed loading world.");
93456
+ spinnerText .textContent = gettext("Failed loading world.");
93357
93457
  });
93358
93458
 
93359
93459
  reject (new Error ("Couldn't load X3D file."));
@@ -94046,7 +94146,7 @@ const QuickSort_default_ = QuickSort;
94046
94146
 
94047
94147
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94048
94148
  ;// ./src/lib/libtess.js
94049
- /* provided dependency */ var libtess_libtess = __webpack_require__(877);
94149
+ /* provided dependency */ var libtess_libtess = __webpack_require__(643);
94050
94150
  const libtess_default_ = libtess_libtess;
94051
94151
  ;
94052
94152