x_ite 16.1.3 → 16.2.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 +22 -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 +232 -191
  52. package/dist/x_ite.min.js +2 -2
  53. package/dist/x_ite.min.mjs +2 -2
  54. package/dist/x_ite.mjs +232 -191
  55. package/dist/x_ite.zip +0 -0
  56. package/package.json +6 -6
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.1.3 */
1
+ /* X_ITE v16.2.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
+ /***/ 627
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
+ /***/ 249
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
+ /***/ 289
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.2.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__(289);
31242
31216
 
31243
31217
 
31244
31218
  const Triangle3 =
@@ -47938,7 +47912,7 @@ const Bezier_default_ = Bezier;
47938
47912
 
47939
47913
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47940
47914
  ;// ./src/x_ite/Parser/SVGParser.js
47941
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(877);
47915
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(289);
47942
47916
 
47943
47917
 
47944
47918
 
@@ -54684,7 +54658,7 @@ function X3DCoreContext (element)
54684
54658
  {
54685
54659
  const link = document .createElement ("link");
54686
54660
 
54687
- link .integrity = "sha384-F+mssNuFiQHol3RT7fLg6krIVxgAio+0HtxiqkBJSZIYtVM6Z51XLEsu66xkirs/";
54661
+ link .integrity = "sha384-OncRzbLtLD5Caw7AMriMRlhuhJ/fW3gh5dFvrdeifrhlqF+YTzx/lbZh5l6JjYau";
54688
54662
  link .rel = "stylesheet";
54689
54663
  link .crossOrigin = "anonymous";
54690
54664
  link .onload = resolve;
@@ -64080,6 +64054,7 @@ const
64080
64054
  _loadingTotal = Symbol (),
64081
64055
  X3DNetworkingContext_loadingObjects = Symbol (),
64082
64056
  _browserLoading = Symbol (),
64057
+ _browserTime = Symbol (),
64083
64058
  _set_loadCount = Symbol (),
64084
64059
  _loadFractions = Symbol (),
64085
64060
  _defaultScene = Symbol ();
@@ -64140,6 +64115,7 @@ Object .assign (X3DNetworkingContext .prototype,
64140
64115
  setBrowserLoading (value)
64141
64116
  {
64142
64117
  this [_browserLoading] = value;
64118
+ this [_browserTime] = Date .now ();
64143
64119
 
64144
64120
  if (value)
64145
64121
  {
@@ -64202,12 +64178,16 @@ Object .assign (X3DNetworkingContext .prototype,
64202
64178
  this [X3DNetworkingContext_loadingObjects] .add (object);
64203
64179
 
64204
64180
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64181
+
64182
+ this [_browserTime] = Date .now ();
64205
64183
  },
64206
64184
  removeLoadingObject (object)
64207
64185
  {
64208
64186
  this [X3DNetworkingContext_loadingObjects] .delete (object);
64209
64187
 
64210
64188
  this ._loadCount = this [X3DNetworkingContext_loadingObjects] .size;
64189
+
64190
+ this [_browserTime] = Date .now ();
64211
64191
  },
64212
64192
  getDisplayLoadCount ()
64213
64193
  {
@@ -64261,8 +64241,14 @@ Object .assign (X3DNetworkingContext .prototype,
64261
64241
  const fractions = 1 - (this ._loadCount .getValue () + loadFractions)
64262
64242
  / (this [_loadingTotal] + this [_loadFractions] .size);
64263
64243
 
64244
+ const percent = fractions * 100;
64245
+
64246
+ // Show progress in % if loading takes too long.
64247
+ if (Date .now () - this [_browserTime] > 8_000)
64248
+ string += ` (${percent .toFixed (2)} %)`;
64249
+
64264
64250
  this .getSplashScreen () .querySelector (".x_ite-private-spinner-text") .textContent = string;
64265
- this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${100 * fractions}%`;
64251
+ this .getSplashScreen () .querySelector (".x_ite-private-progressbar div") .style .width = `${percent}%`;
64266
64252
  }
64267
64253
  else
64268
64254
  {
@@ -71867,10 +71853,9 @@ const PeriodicWave_default_ = PeriodicWave;
71867
71853
 
71868
71854
 
71869
71855
 
71870
-
71871
71856
  const
71872
71857
  _audioContext = Symbol (),
71873
- _audioNodes = Symbol (),
71858
+ _soundDestinationNodes = Symbol (),
71874
71859
  _audioElements = Symbol (),
71875
71860
  _defaultPeriodicWave = Symbol (),
71876
71861
  _noSoundButton = Symbol (),
@@ -71878,9 +71863,7 @@ const
71878
71863
 
71879
71864
  function X3DSoundContext ()
71880
71865
  {
71881
- this .addChildObjects (Base_X3DConstants .outputOnly, "audio", new x_ite_Fields .SFBool ());
71882
-
71883
- this [_audioNodes] = new Set ();
71866
+ this [_soundDestinationNodes] = new Set ();
71884
71867
  this [_audioElements] = new Map ();
71885
71868
  }
71886
71869
 
@@ -71918,17 +71901,25 @@ Object .assign (X3DSoundContext .prototype,
71918
71901
  return audioContext;
71919
71902
  })();
71920
71903
  },
71921
- addAudioNode (element)
71904
+ addSoundDestination (soundDestinationNode)
71922
71905
  {
71923
- this [_audioNodes] .add (element);
71906
+ const gain = !this .getBrowserOption ("Mute") * Math_Algorithm .clamp (this .getBrowserOption ("SoundIntensity"), 0, 1);
71907
+
71908
+ soundDestinationNode .getSoundDestination () .gain .value = gain;
71924
71909
 
71925
- this ._audio = this [_audioNodes] .size;
71910
+ this [_soundDestinationNodes] .add (soundDestinationNode);
71911
+
71912
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71926
71913
  },
71927
- removeAudioNode (element)
71914
+ removeSoundDestination (soundDestinationNode)
71928
71915
  {
71929
- this [_audioNodes] .delete (element);
71916
+ this [_soundDestinationNodes] .delete (soundDestinationNode);
71930
71917
 
71931
- this ._audio = this [_audioNodes] .size;
71918
+ this .getRenderingProperties () ._SoundDestinations = this [_soundDestinationNodes] .size;
71919
+ },
71920
+ getSoundDestinations ()
71921
+ {
71922
+ return this [_soundDestinationNodes];
71932
71923
  },
71933
71924
  startAudioElement (audioElement, functionName = "play")
71934
71925
  {
@@ -72907,7 +72898,7 @@ const
72907
72898
  _animFrame = Symbol (),
72908
72899
  _previousTime = Symbol (),
72909
72900
  _systemTime = Symbol (),
72910
- _browserTime = Symbol (),
72901
+ X3DBrowserContext_browserTime = Symbol (),
72911
72902
  _cameraTime = Symbol (),
72912
72903
  _collisionTime = Symbol (),
72913
72904
  _displayTime = Symbol (),
@@ -72959,7 +72950,7 @@ function X3DBrowserContext (element)
72959
72950
  this [_previousTime] = 0;
72960
72951
  this [_renderCallback] = this [_traverse] .bind (this);
72961
72952
  this [_systemTime] = new Time_StopWatch ();
72962
- this [_browserTime] = new Time_StopWatch ();
72953
+ this [X3DBrowserContext_browserTime] = new Time_StopWatch ();
72963
72954
  this [_cameraTime] = new Time_StopWatch ();
72964
72955
  this [_collisionTime] = new Time_StopWatch ();
72965
72956
  this [_displayTime] = new Time_StopWatch ();
@@ -73079,7 +73070,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73079
73070
  // Start
73080
73071
 
73081
73072
  this [_systemTime] .stop ();
73082
- this [_browserTime] .start ();
73073
+ this [X3DBrowserContext_browserTime] .start ();
73083
73074
 
73084
73075
  // Time
73085
73076
 
@@ -73140,7 +73131,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73140
73131
 
73141
73132
  // Finish
73142
73133
 
73143
- this [_browserTime] .stop ();
73134
+ this [X3DBrowserContext_browserTime] .stop ();
73144
73135
  this [_systemTime] .start ();
73145
73136
  },
73146
73137
  getSystemTime ()
@@ -73149,7 +73140,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73149
73140
  },
73150
73141
  getBrowserTime ()
73151
73142
  {
73152
- return this [_browserTime];
73143
+ return this [X3DBrowserContext_browserTime];
73153
73144
  },
73154
73145
  getCameraTime ()
73155
73146
  {
@@ -87759,6 +87750,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Sound
87759
87750
  const channelCountModes = new Map ([
87760
87751
  ["MAX", "max"],
87761
87752
  ["CLAMPED-MAX", "clamped-max"],
87753
+ ["CLAMPED_MAX", "clamped-max"],
87762
87754
  ["EXPLICIT", "explicit"],
87763
87755
  ]);
87764
87756
 
@@ -88337,10 +88329,12 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
88337
88329
  unloadData ()
88338
88330
  {
88339
88331
  this .setMediaElement (null);
88332
+
88333
+ this ._duration_changed = -1;
88340
88334
  },
88341
88335
  loadData ()
88342
88336
  {
88343
- this .unloadData ();
88337
+ this .setMediaElement (null);
88344
88338
 
88345
88339
  new InputOutput_FileLoader (this, { dataAsString: false }) .loadDocument (this ._url, async (data, fileURL) =>
88346
88340
  {
@@ -88433,10 +88427,13 @@ function X3DSoundDestinationNode (executionContext)
88433
88427
 
88434
88428
  this .addType (Base_X3DConstants .X3DSoundDestinationNode);
88435
88429
 
88430
+ // Private properties
88431
+
88436
88432
  const audioContext = this .getBrowser () .getAudioContext ();
88437
88433
 
88438
88434
  this .childNodes = [ ];
88439
88435
  this .audioDestination = new GainNode (audioContext, { gain: 0 });
88436
+ this .soundDestination = new GainNode (audioContext, { gain: 0 });
88440
88437
  }
88441
88438
 
88442
88439
  Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype),
@@ -88461,6 +88458,10 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88461
88458
  this .set_channelInterpretation__ ();
88462
88459
  this .set_children__ ();
88463
88460
  },
88461
+ getSoundDestination ()
88462
+ {
88463
+ return this .soundDestination;
88464
+ },
88464
88465
  getAudioDestination ()
88465
88466
  {
88466
88467
  return this .audioDestination;
@@ -88471,17 +88472,17 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88471
88472
 
88472
88473
  const
88473
88474
  browser = this .getBrowser (),
88474
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88475
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88475
88476
 
88476
88477
  if (active)
88477
88478
  {
88478
- this .audioDestination .connect (this .getSoundDestination ());
88479
- browser .addAudioNode (this);
88479
+ browser .addSoundDestination (this);
88480
+ this .audioDestination .connect (this .soundDestination);
88480
88481
  }
88481
88482
  else
88482
88483
  {
88484
+ browser .removeSoundDestination (this);
88483
88485
  this .audioDestination .disconnect ();
88484
- browser .removeAudioNode (this);
88485
88486
  }
88486
88487
 
88487
88488
  this ._isActive = this ._enabled;
@@ -88499,6 +88500,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
88499
88500
  const channelCountModes = new Map ([
88500
88501
  ["MAX", "max"],
88501
88502
  ["CLAMPED-MAX", "clamped-max"],
88503
+ ["CLAMPED_MAX", "clamped-max"],
88502
88504
  ["EXPLICIT", "explicit"],
88503
88505
  ]);
88504
88506
 
@@ -88582,6 +88584,8 @@ function AudioDestination (executionContext)
88582
88584
  this .audioElement = new Audio ();
88583
88585
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
88584
88586
  this .audioElement .srcObject = this .mediaStreamAudioDestinationNode .stream;
88587
+
88588
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
88585
88589
  }
88586
88590
 
88587
88591
  Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -88598,17 +88602,13 @@ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSo
88598
88602
 
88599
88603
  this .set_mediaDeviceID__ ();
88600
88604
  },
88601
- getSoundDestination ()
88602
- {
88603
- return this .mediaStreamAudioDestinationNode;
88604
- },
88605
88605
  set_enabled__ ()
88606
88606
  {
88607
88607
  Sound_X3DSoundDestinationNode .prototype .set_enabled__ .call (this);
88608
88608
 
88609
88609
  const
88610
88610
  browser = this .getBrowser (),
88611
- active = this ._enabled .getValue () && this .getLive () .getValue ();
88611
+ active = this .getLive () .getValue () && this ._enabled .getValue ();
88612
88612
 
88613
88613
  if (active)
88614
88614
  browser .startAudioElement (this .audioElement);
@@ -88852,7 +88852,7 @@ Object .assign (Object .setPrototypeOf (BufferAudioSource .prototype, Sound_X3DS
88852
88852
  }
88853
88853
  else
88854
88854
  {
88855
- this ._bufferDuration = 0;
88855
+ this ._bufferDuration = -1;
88856
88856
 
88857
88857
  this .setMediaElement (null);
88858
88858
  }
@@ -89090,6 +89090,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89090
89090
  const channelCountModes = new Map ([
89091
89091
  ["MAX", "max"],
89092
89092
  ["CLAMPED-MAX", "clamped-max"],
89093
+ ["CLAMPED_MAX", "clamped-max"],
89093
89094
  ["EXPLICIT", "explicit"],
89094
89095
  ]);
89095
89096
 
@@ -89154,7 +89155,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3
89154
89155
  for (const [i, childNode] of this .childNodes .entries ())
89155
89156
  this .connectChildNode (i, childNode);
89156
89157
  },
89157
- setChildNodes (childNodes)
89158
+ setChildNodes ()
89158
89159
  { },
89159
89160
  connectChildNode (i, childNode)
89160
89161
  {
@@ -90323,18 +90324,20 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90323
90324
  const
90324
90325
  audioContext = this .getBrowser () .getAudioContext (),
90325
90326
  gainNode = new GainNode (audioContext, { gain: 0 }),
90327
+ gainStereoNode = new GainNode (audioContext, { gain: 0 }),
90326
90328
  splitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs: 2 }),
90327
- mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90328
90329
  gainFrontLeftNode = new GainNode (audioContext, { gain: 0 }),
90329
90330
  gainFrontRightNode = new GainNode (audioContext, { gain: 0 }),
90330
90331
  gainBackLeftNode = new GainNode (audioContext, { gain: 0 }),
90331
- gainBackRightNode = new GainNode (audioContext, { gain: 0 });
90332
+ gainBackRightNode = new GainNode (audioContext, { gain: 0 }),
90333
+ mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
90334
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90332
90335
 
90333
90336
  gainNode .channelCount = 2;
90334
90337
  gainNode .channelCountMode = "explicit";
90335
90338
  gainNode .channelInterpretation = "speakers";
90336
90339
 
90337
- gainNode .connect (splitterNode);
90340
+ gainStereoNode .connect (soundDestination);
90338
90341
  splitterNode .connect (gainFrontLeftNode, 0);
90339
90342
  splitterNode .connect (gainFrontRightNode, 1);
90340
90343
  splitterNode .connect (gainBackRightNode, 0);
@@ -90343,27 +90346,37 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90343
90346
  gainFrontRightNode .connect (mergerNode, 0, 1);
90344
90347
  gainBackLeftNode .connect (mergerNode, 0, 0);
90345
90348
  gainBackRightNode .connect (mergerNode, 0, 1);
90346
- mergerNode .connect (audioContext .destination);
90349
+ mergerNode .connect (soundDestination);
90350
+ soundDestination .connect (audioContext .destination);
90347
90351
 
90348
90352
  this .gainNode = gainNode;
90353
+ this .gainStereoNode = gainStereoNode;
90349
90354
  this .splitterNode = splitterNode;
90350
90355
  this .gainFrontLeftNode = gainFrontLeftNode;
90351
90356
  this .gainFrontRightNode = gainFrontRightNode;
90352
90357
  this .gainBackLeftNode = gainBackLeftNode;
90353
90358
  this .gainBackRightNode = gainBackRightNode;
90354
90359
  this .mergerNode = mergerNode;
90360
+ this .soundDestination = soundDestination;
90355
90361
 
90356
- this .getLive () .addInterest ("set_live__", this);
90357
- this ._traversed .addInterest ("set_live__", this);
90362
+ this .getLive () .addInterest ("set_enabled__", this);
90363
+ this ._traversed .addInterest ("set_enabled__", this);
90364
+ this ._enabled .addInterest ("set_enabled__", this);
90358
90365
 
90359
- this ._intensity .addInterest ("set_intensity__", this);
90360
- this ._source .addInterest ("set_children__", this);
90361
- this ._children .addInterest ("set_children__", this);
90366
+ this ._spatialize .addInterest ("set_spatialize__", this);
90367
+ this ._intensity .addInterest ("set_intensity__", this);
90368
+ this ._source .addInterest ("set_children__", this);
90369
+ this ._children .addInterest ("set_children__", this);
90362
90370
 
90363
- this .set_live__ ();
90371
+ this .set_enabled__ ();
90372
+ this .set_spatialize__ ();
90364
90373
  this .set_intensity__ ();
90365
90374
  this .set_children__ ();
90366
90375
  },
90376
+ getSoundDestination ()
90377
+ {
90378
+ return this .soundDestination;
90379
+ },
90367
90380
  setTraversed (value)
90368
90381
  {
90369
90382
  if (value)
@@ -90391,32 +90404,44 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90391
90404
  rotationFront = 1 - rotation,
90392
90405
  rotationBack = rotation;
90393
90406
 
90407
+ this .gainStereoNode .gain .value = gain;
90394
90408
  this .gainFrontLeftNode .gain .value = gain * rotationFront * panLeft;
90395
90409
  this .gainFrontRightNode .gain .value = gain * rotationFront * panRight;
90396
90410
  this .gainBackLeftNode .gain .value = gain * rotationBack * panLeft;
90397
90411
  this .gainBackRightNode .gain .value = gain * rotationBack * panRight;
90398
90412
  },
90399
- set_live__ ()
90413
+ set_enabled__ ()
90400
90414
  {
90401
- const browser = this .getBrowser ();
90402
-
90403
- this .mergerNode .disconnect ();
90415
+ const
90416
+ browser = this .getBrowser (),
90417
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90404
90418
 
90405
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90419
+ if (active)
90406
90420
  {
90407
90421
  const audioContext = this .getBrowser () .getAudioContext ();
90408
90422
 
90409
- this .mergerNode .connect (audioContext .destination);
90423
+ this .soundDestination .connect (audioContext .destination);
90410
90424
 
90411
- browser .addAudioNode (this);
90425
+ browser .addSoundDestination (this);
90412
90426
  browser .sensorEvents () .addInterest ("update", this);
90413
90427
  }
90414
90428
  else
90415
90429
  {
90416
- browser .removeAudioNode (this);
90430
+ this .soundDestination .disconnect ();
90431
+
90432
+ browser .removeSoundDestination (this);
90417
90433
  browser .sensorEvents () .removeInterest ("update", this);
90418
90434
  }
90419
90435
  },
90436
+ set_spatialize__ ()
90437
+ {
90438
+ this .gainNode .disconnect ();
90439
+
90440
+ if (this ._spatialize .getValue ())
90441
+ this .gainNode .connect (this .splitterNode);
90442
+ else
90443
+ this .gainNode .connect (this .gainStereoNode);
90444
+ },
90420
90445
  set_intensity__ ()
90421
90446
  {
90422
90447
  this .gainNode .gain .value = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1);
@@ -90435,7 +90460,7 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90435
90460
 
90436
90461
  for (const child of this ._children)
90437
90462
  {
90438
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90463
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90439
90464
 
90440
90465
  if (!childNode)
90441
90466
  continue;
@@ -90680,22 +90705,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90680
90705
  Sound_X3DSoundNode .prototype .initialize .call (this);
90681
90706
 
90682
90707
  const
90683
- audioContext = this .getBrowser () .getAudioContext (),
90684
- gainNode = new GainNode (audioContext, { gain: 0 }),
90685
- pannerNode = new PannerNode (audioContext);
90708
+ audioContext = this .getBrowser () .getAudioContext (),
90709
+ gainNode = new GainNode (audioContext, { gain: 0 }),
90710
+ pannerNode = new PannerNode (audioContext),
90711
+ soundDestination = new GainNode (audioContext, { gain: 0 });
90686
90712
 
90687
90713
  gainNode .channelCount = 2;
90688
90714
  gainNode .channelCountMode = "explicit";
90689
90715
  gainNode .channelInterpretation = "speakers";
90690
90716
 
90691
- gainNode .connect (pannerNode);
90692
- pannerNode .connect (audioContext .destination);
90717
+ gainNode .connect (pannerNode);
90718
+ pannerNode .connect (soundDestination);
90719
+ soundDestination .connect (audioContext .destination);
90693
90720
 
90694
- this .gainNode = gainNode;
90695
- this .pannerNode = pannerNode;
90721
+ this .gainNode = gainNode;
90722
+ this .pannerNode = pannerNode;
90723
+ this .soundDestination = soundDestination;
90696
90724
 
90697
- this .getLive () .addInterest ("set_live__", this);
90698
- this ._traversed .addInterest ("set_live__", this);
90725
+ this .getLive () .addInterest ("set_enabled__", this);
90726
+ this ._traversed .addInterest ("set_enabled__", this);
90727
+ this ._enabled .addInterest ("set_enabled__", this);
90699
90728
 
90700
90729
  this ._spatialize .addInterest ("set_spatialize__", this);
90701
90730
  this ._intensity .addInterest ("set_intensity__", this);
@@ -90711,7 +90740,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90711
90740
  this ._rolloffFactor .addInterest ("set_distanceModel__", this);
90712
90741
  this ._children .addInterest ("set_children__", this);
90713
90742
 
90714
- this .set_live__ ();
90743
+ this .set_enabled__ ();
90715
90744
  this .set_spatialize__ ();
90716
90745
  this .set_intensity__ ();
90717
90746
  this .set_coneOuterGain__ ();
@@ -90724,6 +90753,10 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90724
90753
  this .set_dopplerEnabled__ ();
90725
90754
  this .set_children__ ();
90726
90755
  },
90756
+ getSoundDestination ()
90757
+ {
90758
+ return this .soundDestination;
90759
+ },
90727
90760
  setTraversed (value)
90728
90761
  {
90729
90762
  if (value)
@@ -90743,24 +90776,26 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90743
90776
  {
90744
90777
  return this .currentTraversed;
90745
90778
  },
90746
- set_live__ ()
90779
+ set_enabled__ ()
90747
90780
  {
90748
- const browser = this .getBrowser ();
90749
-
90750
- this .pannerNode .disconnect ();
90781
+ const
90782
+ browser = this .getBrowser (),
90783
+ active = this .getLive () .getValue () && this ._traversed .getValue () && this ._enabled .getValue ();
90751
90784
 
90752
- if (this .getLive () .getValue () && this ._traversed .getValue ())
90785
+ if (active)
90753
90786
  {
90754
90787
  const audioContext = this .getBrowser () .getAudioContext ();
90755
90788
 
90756
- this .pannerNode .connect (audioContext .destination);
90789
+ this .soundDestination .connect (audioContext .destination);
90757
90790
 
90758
- browser .addAudioNode (this);
90791
+ browser .addSoundDestination (this);
90759
90792
  browser .sensorEvents () .addInterest ("update", this);
90760
90793
  }
90761
90794
  else
90762
90795
  {
90763
- browser .removeAudioNode (this);
90796
+ this .soundDestination .disconnect ();
90797
+
90798
+ browser .removeSoundDestination (this);
90764
90799
  browser .sensorEvents () .removeInterest ("update", this);
90765
90800
  }
90766
90801
  },
@@ -90839,7 +90874,7 @@ Object .assign (Object .setPrototypeOf (SpatialSound .prototype, Sound_X3DSoundN
90839
90874
 
90840
90875
  for (const child of this ._children)
90841
90876
  {
90842
- const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
90877
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DNode, child);
90843
90878
 
90844
90879
  if (!childNode)
90845
90880
  continue;
@@ -90952,9 +90987,13 @@ function StreamAudioDestination (executionContext)
90952
90987
 
90953
90988
  this .addType (Base_X3DConstants .StreamAudioDestination);
90954
90989
 
90990
+ // Private properties
90991
+
90955
90992
  const audioContext = this .getBrowser () .getAudioContext ();
90956
90993
 
90957
90994
  this .mediaStreamAudioDestinationNode = new MediaStreamAudioDestinationNode (audioContext);
90995
+
90996
+ this .getSoundDestination () .connect (this .mediaStreamAudioDestinationNode);
90958
90997
  }
90959
90998
 
90960
90999
  Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
@@ -90967,10 +91006,6 @@ Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound
90967
91006
 
90968
91007
  this .set_mediaDeviceID__ ();
90969
91008
  },
90970
- getSoundDestination ()
90971
- {
90972
- return this .mediaStreamAudioDestinationNode;
90973
- },
90974
91009
  set_enabled__ ()
90975
91010
  { },
90976
91011
  set_mediaDeviceID__ ()
@@ -91407,8 +91442,8 @@ const PNGMedia_default_ = PNGMedia;
91407
91442
 
91408
91443
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91409
91444
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91410
- /* provided dependency */ var SuperGif = __webpack_require__(143);
91411
- /* provided dependency */ var APNG = __webpack_require__(701);
91445
+ /* provided dependency */ var SuperGif = __webpack_require__(627);
91446
+ /* provided dependency */ var APNG = __webpack_require__(249);
91412
91447
 
91413
91448
 
91414
91449
 
@@ -91469,6 +91504,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91469
91504
  {
91470
91505
  this .clearTexture ();
91471
91506
  this .setMediaElement (null);
91507
+ this .updateOutputs (0, 0, 0, false, -1);
91472
91508
  },
91473
91509
  async loadData ()
91474
91510
  {
@@ -91543,7 +91579,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91543
91579
 
91544
91580
  this .setMediaElement (null);
91545
91581
  this .clearTexture ();
91546
- this .updateOutputs (0, 0, 0, -1);
91582
+ this .updateOutputs (0, 0, 0, false, -1);
91547
91583
  this .setLoadState (Base_X3DConstants .FAILED_STATE);
91548
91584
  },
91549
91585
  loadDocument (fileURL)
@@ -91584,7 +91620,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91584
91620
 
91585
91621
  this .setMediaElement (gif);
91586
91622
  this .setTextureData (width, height, true, false, gif .get_frames () [0] .data);
91587
- this .updateOutputs (width, height, 4, gif .duration);
91623
+ this .updateOutputs (width, height, 4, false, gif .duration);
91588
91624
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91589
91625
 
91590
91626
  this .set_speed__ ();
@@ -91597,7 +91633,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91597
91633
 
91598
91634
  this .setMediaElement (apng);
91599
91635
  this .setTextureData (width, height, true, false, currentFrame);
91600
- this .updateOutputs (width, height, 4, duration);
91636
+ this .updateOutputs (width, height, 4, false, duration);
91601
91637
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91602
91638
 
91603
91639
  this .set_speed__ ();
@@ -91618,16 +91654,21 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
91618
91654
 
91619
91655
  this .setMediaElement (video);
91620
91656
  this .setTextureData (width, height, true, false, video);
91621
- this .updateOutputs (width, height, 3, video .duration);
91657
+ this .updateOutputs (width, height, 3, this .hasAudioTracks (video), video .duration);
91622
91658
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
91623
91659
 
91624
91660
  this .set_speed__ ();
91625
91661
  },
91626
- updateOutputs (width, height, colorDepth, duration)
91662
+ hasAudioTracks (video)
91663
+ {
91664
+ return !! (video .mozHasAudio || video .webkitAudioDecodedByteCount || video .audioTracks ?.length);
91665
+ },
91666
+ updateOutputs (width, height, colorDepth, hasSound, duration)
91627
91667
  {
91628
91668
  this ._width = width;
91629
91669
  this ._height = height;
91630
91670
  this ._colorDepth = colorDepth;
91671
+ this ._hasSound = hasSound;
91631
91672
  this ._duration_changed = duration;
91632
91673
  },
91633
91674
  set_speed__ ()
@@ -94046,7 +94087,7 @@ const QuickSort_default_ = QuickSort;
94046
94087
 
94047
94088
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94048
94089
  ;// ./src/lib/libtess.js
94049
- /* provided dependency */ var libtess_libtess = __webpack_require__(877);
94090
+ /* provided dependency */ var libtess_libtess = __webpack_require__(289);
94050
94091
  const libtess_default_ = libtess_libtess;
94051
94092
  ;
94052
94093