x_ite 8.11.17 → 8.12.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 (49) hide show
  1. package/README.md +3 -1
  2. package/dist/LICENSE.md +2 -2
  3. package/dist/assets/components/Annotation.js +13 -13
  4. package/dist/assets/components/Annotation.min.js +1 -1
  5. package/dist/assets/components/CADGeometry.js +22 -22
  6. package/dist/assets/components/CADGeometry.min.js +1 -1
  7. package/dist/assets/components/CubeMapTexturing.js +25 -25
  8. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  9. package/dist/assets/components/DIS.js +13 -13
  10. package/dist/assets/components/DIS.min.js +1 -1
  11. package/dist/assets/components/EventUtilities.js +9 -9
  12. package/dist/assets/components/EventUtilities.min.js +1 -1
  13. package/dist/assets/components/Geometry2D.js +19 -19
  14. package/dist/assets/components/Geometry2D.min.js +1 -1
  15. package/dist/assets/components/Geospatial.js +49 -49
  16. package/dist/assets/components/Geospatial.min.js +1 -1
  17. package/dist/assets/components/HAnim.js +23 -23
  18. package/dist/assets/components/HAnim.min.js +1 -1
  19. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  20. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  21. package/dist/assets/components/Layout.js +26 -26
  22. package/dist/assets/components/Layout.min.js +1 -1
  23. package/dist/assets/components/NURBS.js +24 -24
  24. package/dist/assets/components/NURBS.min.js +1 -1
  25. package/dist/assets/components/ParticleSystems.js +24 -24
  26. package/dist/assets/components/ParticleSystems.min.js +1 -1
  27. package/dist/assets/components/Picking.js +18 -18
  28. package/dist/assets/components/Picking.min.js +1 -1
  29. package/dist/assets/components/RigidBodyPhysics.js +17 -17
  30. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  31. package/dist/assets/components/Scripting.js +39 -38
  32. package/dist/assets/components/Scripting.min.js +1 -1
  33. package/dist/assets/components/Text.js +36 -36
  34. package/dist/assets/components/Text.min.js +1 -1
  35. package/dist/assets/components/TextureProjector.js +14 -14
  36. package/dist/assets/components/TextureProjector.min.js +1 -1
  37. package/dist/assets/components/Texturing3D.js +30 -30
  38. package/dist/assets/components/Texturing3D.min.js +1 -1
  39. package/dist/assets/components/VolumeRendering.js +18 -18
  40. package/dist/assets/components/VolumeRendering.min.js +1 -1
  41. package/dist/assets/components/X_ITE.js +9 -9
  42. package/dist/assets/components/X_ITE.min.js +1 -1
  43. package/dist/x_ite.css +1 -1
  44. package/dist/x_ite.js +1274 -464
  45. package/dist/x_ite.min.js +1 -1
  46. package/dist/x_ite.min.mjs +1 -0
  47. package/dist/x_ite.mjs +121582 -0
  48. package/dist/x_ite.zip +0 -0
  49. package/package.json +9 -2
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.11.17 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v8.12.0 */(function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if(typeof define === 'function' && define.amd)
@@ -11,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 833:
14
+ /***/ 153:
15
15
  /***/ (function(module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
- /* provided dependency */ var jQuery = __webpack_require__(757);
18
+ /* provided dependency */ var jQuery = __webpack_require__(464);
19
19
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
20
20
 
21
21
  /**
@@ -387,10 +387,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
387
387
 
388
388
  /***/ }),
389
389
 
390
- /***/ 32:
390
+ /***/ 734:
391
391
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
392
392
 
393
- /* provided dependency */ var jQuery = __webpack_require__(757);
393
+ /* provided dependency */ var jQuery = __webpack_require__(464);
394
394
  /**
395
395
  * @preserve jquery.fullscreen 1.1.5
396
396
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -586,7 +586,7 @@ installFullScreenHandlers();
586
586
 
587
587
  /***/ }),
588
588
 
589
- /***/ 716:
589
+ /***/ 520:
590
590
  /***/ ((module, exports, __webpack_require__) => {
591
591
 
592
592
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -600,7 +600,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
600
600
  (function (factory) {
601
601
  if ( true ) {
602
602
  // AMD. Register as an anonymous module.
603
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(757)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
603
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(464)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
604
604
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
605
605
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
606
606
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -811,18 +811,18 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
811
811
 
812
812
  /***/ }),
813
813
 
814
- /***/ 757:
814
+ /***/ 464:
815
815
  /***/ (function(module, exports) {
816
816
 
817
817
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
818
- * jQuery JavaScript Library v3.7.0
818
+ * jQuery JavaScript Library v3.7.1
819
819
  * https://jquery.com/
820
820
  *
821
821
  * Copyright OpenJS Foundation and other contributors
822
822
  * Released under the MIT license
823
823
  * https://jquery.org/license
824
824
  *
825
- * Date: 2023-05-11T18:29Z
825
+ * Date: 2023-08-28T13:37Z
826
826
  */
827
827
  ( function( global, factory ) {
828
828
 
@@ -963,7 +963,7 @@ function toType( obj ) {
963
963
 
964
964
 
965
965
 
966
- var version = "3.7.0",
966
+ var version = "3.7.1",
967
967
 
968
968
  rhtmlSuffix = /HTML$/i,
969
969
 
@@ -1227,9 +1227,14 @@ jQuery.extend( {
1227
1227
  // Do not traverse comment nodes
1228
1228
  ret += jQuery.text( node );
1229
1229
  }
1230
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1230
+ }
1231
+ if ( nodeType === 1 || nodeType === 11 ) {
1231
1232
  return elem.textContent;
1232
- } else if ( nodeType === 3 || nodeType === 4 ) {
1233
+ }
1234
+ if ( nodeType === 9 ) {
1235
+ return elem.documentElement.textContent;
1236
+ }
1237
+ if ( nodeType === 3 || nodeType === 4 ) {
1233
1238
  return elem.nodeValue;
1234
1239
  }
1235
1240
 
@@ -1942,12 +1947,17 @@ function setDocument( node ) {
1942
1947
  documentElement.msMatchesSelector;
1943
1948
 
1944
1949
  // Support: IE 9 - 11+, Edge 12 - 18+
1945
- // Accessing iframe documents after unload throws "permission denied" errors (see trac-13936)
1946
- // Support: IE 11+, Edge 17 - 18+
1947
- // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1948
- // two documents; shallow comparisons work.
1949
- // eslint-disable-next-line eqeqeq
1950
- if ( preferredDoc != document &&
1950
+ // Accessing iframe documents after unload throws "permission denied" errors
1951
+ // (see trac-13936).
1952
+ // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
1953
+ // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
1954
+ if ( documentElement.msMatchesSelector &&
1955
+
1956
+ // Support: IE 11+, Edge 17 - 18+
1957
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1958
+ // two documents; shallow comparisons work.
1959
+ // eslint-disable-next-line eqeqeq
1960
+ preferredDoc != document &&
1951
1961
  ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1952
1962
 
1953
1963
  // Support: IE 9 - 11+, Edge 12 - 18+
@@ -3510,12 +3520,12 @@ jQuery.find = find;
3510
3520
  jQuery.expr[ ":" ] = jQuery.expr.pseudos;
3511
3521
  jQuery.unique = jQuery.uniqueSort;
3512
3522
 
3513
- // These have always been private, but they used to be documented
3514
- // as part of Sizzle so let's maintain them in the 3.x line
3515
- // for backwards compatibility purposes.
3523
+ // These have always been private, but they used to be documented as part of
3524
+ // Sizzle so let's maintain them for now for backwards compatibility purposes.
3516
3525
  find.compile = compile;
3517
3526
  find.select = select;
3518
3527
  find.setDocument = setDocument;
3528
+ find.tokenize = tokenize;
3519
3529
 
3520
3530
  find.escape = jQuery.escapeSelector;
3521
3531
  find.getText = jQuery.text;
@@ -6729,7 +6739,7 @@ function domManip( collection, args, callback, ignored ) {
6729
6739
  if ( hasScripts ) {
6730
6740
  doc = scripts[ scripts.length - 1 ].ownerDocument;
6731
6741
 
6732
- // Reenable scripts
6742
+ // Re-enable scripts
6733
6743
  jQuery.map( scripts, restoreScript );
6734
6744
 
6735
6745
  // Evaluate executable scripts on first document insertion
@@ -7186,7 +7196,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
7186
7196
  trChild = document.createElement( "div" );
7187
7197
 
7188
7198
  table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
7189
- tr.style.cssText = "border:1px solid";
7199
+ tr.style.cssText = "box-sizing:content-box;border:1px solid";
7190
7200
 
7191
7201
  // Support: Chrome 86+
7192
7202
  // Height set through cssText does not get applied.
@@ -7198,7 +7208,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
7198
7208
  // In our bodyBackground.html iframe,
7199
7209
  // display for all div elements is set to "inline",
7200
7210
  // which causes a problem only in Android 8 Chrome 86.
7201
- // Ensuring the div is display: block
7211
+ // Ensuring the div is `display: block`
7202
7212
  // gets around this issue.
7203
7213
  trChild.style.display = "block";
7204
7214
 
@@ -11366,7 +11376,9 @@ jQuery.fn.extend( {
11366
11376
  },
11367
11377
 
11368
11378
  hover: function( fnOver, fnOut ) {
11369
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
11379
+ return this
11380
+ .on( "mouseenter", fnOver )
11381
+ .on( "mouseleave", fnOut || fnOver );
11370
11382
  }
11371
11383
  } );
11372
11384
 
@@ -11523,7 +11535,7 @@ return jQuery;
11523
11535
 
11524
11536
  /***/ }),
11525
11537
 
11526
- /***/ 986:
11538
+ /***/ 602:
11527
11539
  /***/ ((module) => {
11528
11540
 
11529
11541
  /**
@@ -16302,7 +16314,7 @@ if (true) {
16302
16314
 
16303
16315
  /***/ }),
16304
16316
 
16305
- /***/ 308:
16317
+ /***/ 644:
16306
16318
  /***/ (function(__unused_webpack_module, exports) {
16307
16319
 
16308
16320
 
@@ -19547,7 +19559,7 @@ if (true) {
19547
19559
 
19548
19560
  /***/ }),
19549
19561
 
19550
- /***/ 33:
19562
+ /***/ 49:
19551
19563
  /***/ (function(module, exports) {
19552
19564
 
19553
19565
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20675,7 +20687,7 @@ Object .defineProperty (Namespace, "add",
20675
20687
  }
20676
20688
  else
20677
20689
  {
20678
- const X3D = window [Symbol .for ("X_ITE.X3D-8.11.17")];
20690
+ const X3D = window [Symbol .for ("X_ITE.X3D-8.12.0")];
20679
20691
 
20680
20692
  if (X3D)
20681
20693
  X3D [name] = module;
@@ -28151,13 +28163,13 @@ Object .assign (Quaternion .prototype,
28151
28163
  return this .assign (e .assign (exponent) .multRight (this .log ()) .exp ());
28152
28164
 
28153
28165
  if (this .isReal ())
28154
- return this .set (0, 0, 0, Math .pow (this .w, exponent));
28166
+ return this .set (0, 0, 0, this .w ** exponent);
28155
28167
 
28156
28168
  const
28157
28169
  l = this .magnitude (),
28158
28170
  theta = Math .acos (this .w / l),
28159
28171
  li = this .imag .magnitude (),
28160
- ltoe = Math .pow (l, exponent),
28172
+ ltoe = l ** exponent,
28161
28173
  et = exponent * theta,
28162
28174
  scale = ltoe / li * Math .sin (et);
28163
28175
 
@@ -34391,7 +34403,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34391
34403
  x_ite_Namespace .add ("X3DBaseNode", "x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34392
34404
  /* harmony default export */ const Base_X3DBaseNode = (X3DBaseNode_default_);
34393
34405
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Legacy.js
34394
- /* provided dependency */ var $ = __webpack_require__(757);
34406
+ /* provided dependency */ var $ = __webpack_require__(464);
34395
34407
  /*******************************************************************************
34396
34408
  *
34397
34409
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34528,7 +34540,7 @@ x_ite_Namespace .add ("Legacy", "x_ite/Browser/Legacy", Legacy_default_);
34528
34540
  *
34529
34541
  ******************************************************************************/
34530
34542
 
34531
- const VERSION_default_ = "8.11.17";
34543
+ const VERSION_default_ = "8.12.0";
34532
34544
  ;
34533
34545
 
34534
34546
  x_ite_Namespace .add ("VERSION", "x_ite/Browser/VERSION", VERSION_default_);
@@ -38160,6 +38172,14 @@ Object .assign (X3DUrlObject .prototype,
38160
38172
  }
38161
38173
  }
38162
38174
 
38175
+ const browser = this .getBrowser ();
38176
+
38177
+ if (!browser .getBrowserOption ("LoadUrlObjects") && this .getExecutionContext () !== browser .getPrivateScene () && !this .isExternProto)
38178
+ {
38179
+ resolve ();
38180
+ return;
38181
+ }
38182
+
38163
38183
  if (!this ._load .getValue ())
38164
38184
  {
38165
38185
  reject ();
@@ -38408,7 +38428,7 @@ const X3DProtoDeclarationNode_default_ = X3DProtoDeclarationNode;
38408
38428
  x_ite_Namespace .add ("X3DProtoDeclarationNode", "x_ite/Prototype/X3DProtoDeclarationNode", X3DProtoDeclarationNode_default_);
38409
38429
  /* harmony default export */ const Prototype_X3DProtoDeclarationNode = (X3DProtoDeclarationNode_default_);
38410
38430
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38411
- /* provided dependency */ var X3DParser_$ = __webpack_require__(757);
38431
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(464);
38412
38432
  /*******************************************************************************
38413
38433
  *
38414
38434
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39233,7 +39253,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39233
39253
  x_ite_Namespace .add ("X3DProtoDeclaration", "x_ite/Prototype/X3DProtoDeclaration", X3DProtoDeclaration_default_);
39234
39254
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (X3DProtoDeclaration_default_);
39235
39255
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/VRMLParser.js
39236
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(757);
39256
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(464);
39237
39257
  /*******************************************************************************
39238
39258
  *
39239
39259
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -41779,7 +41799,7 @@ const VRMLParser_default_ = VRMLParser;
41779
41799
  x_ite_Namespace .add ("VRMLParser", "x_ite/Parser/VRMLParser", VRMLParser_default_);
41780
41800
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
41781
41801
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
41782
- /* provided dependency */ var XMLParser_$ = __webpack_require__(757);
41802
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(464);
41783
41803
  /*******************************************************************************
41784
41804
  *
41785
41805
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -43665,10 +43685,20 @@ x_ite_Namespace .add ("X3DOptimizer", "x_ite/Parser/X3DOptimizer", X3DOptimizer_
43665
43685
  *
43666
43686
  ******************************************************************************/
43667
43687
 
43688
+
43689
+
43690
+ const MODULE = false;
43691
+
43668
43692
  const Features =
43669
43693
  {
43670
43694
  get ENVIRONMENT ()
43671
43695
  {
43696
+ if (DEVELOPMENT)
43697
+ return "BROWSER";
43698
+
43699
+ if (MODULE)
43700
+ return "MODULE";
43701
+
43672
43702
  if ((typeof process === "object") && (process .release .name .search (/node|io.js/) !== -1))
43673
43703
  return "NODE";
43674
43704
 
@@ -43733,7 +43763,7 @@ x_ite_Namespace .add ("Features", "x_ite/Features", Features_default_);
43733
43763
 
43734
43764
  const URLs =
43735
43765
  {
43736
- getScriptUrl: (() =>
43766
+ getScriptURL: (() =>
43737
43767
  {
43738
43768
  switch (x_ite_Features .ENVIRONMENT)
43739
43769
  {
@@ -43747,6 +43777,11 @@ const URLs =
43747
43777
  var src = document .currentScript ?.src ?? document .location .href;
43748
43778
  break;
43749
43779
  }
43780
+ case "MODULE":
43781
+ {
43782
+ // var src = import .meta .url;
43783
+ break;
43784
+ }
43750
43785
  }
43751
43786
 
43752
43787
  return function ()
@@ -43758,29 +43793,29 @@ const URLs =
43758
43793
  {
43759
43794
  if (component)
43760
43795
  {
43761
- if (this .getScriptUrl () .match (/\.min\.js$/))
43796
+ if (this .getScriptURL () .match (/\.min\.js$/))
43762
43797
  component += ".min";
43763
43798
 
43764
- return new URL ("assets/components/" + component + ".js", this .getScriptUrl ()) .href;
43799
+ return new URL ("assets/components/" + component + ".js", this .getScriptURL ()) .href;
43765
43800
  }
43766
43801
 
43767
43802
  return "https://create3000.github.io/x_ite/";
43768
43803
  },
43769
- getFontsUrl (file)
43804
+ getFontsURL (file)
43770
43805
  {
43771
- return new URL ("assets/fonts/" + file, this .getScriptUrl ()) .href;
43806
+ return new URL ("assets/fonts/" + file, this .getScriptURL ()) .href;
43772
43807
  },
43773
- getLinetypeUrl ()
43808
+ getLinetypeURL ()
43774
43809
  {
43775
- return new URL ("assets/linetype/linetypes.png", this .getScriptUrl ()) .href;
43810
+ return new URL ("assets/linetype/linetypes.png", this .getScriptURL ()) .href;
43776
43811
  },
43777
- getHatchingUrl (index)
43812
+ getHatchingURL (index)
43778
43813
  {
43779
- return new URL ("assets/hatching/" + index + ".png", this .getScriptUrl ()) .href;
43814
+ return new URL ("assets/hatching/" + index + ".png", this .getScriptURL ()) .href;
43780
43815
  },
43781
- getLibUrl (file)
43816
+ getLibraryURL (file)
43782
43817
  {
43783
- return new URL ("assets/lib/" + file, this .getScriptUrl ()) .href;
43818
+ return new URL ("assets/lib/" + file, this .getScriptURL ()) .href;
43784
43819
  },
43785
43820
  };
43786
43821
 
@@ -43790,7 +43825,7 @@ const URLs_default_ = URLs;
43790
43825
  x_ite_Namespace .add ("URLs", "x_ite/Browser/Networking/URLs", URLs_default_);
43791
43826
  /* harmony default export */ const Networking_URLs = (URLs_default_);
43792
43827
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
43793
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(757);
43828
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(464);
43794
43829
  /*******************************************************************************
43795
43830
  *
43796
43831
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45112,7 +45147,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45112
45147
  else
45113
45148
  {
45114
45149
  const
45115
- response = await fetch (Networking_URLs .getLibUrl ("draco_decoder_gltf.js")),
45150
+ response = await fetch (Networking_URLs .getLibraryURL ("draco_decoder_gltf.js")),
45116
45151
  text = await response .text (),
45117
45152
  draco = await new Function (text) () ();
45118
45153
 
@@ -46853,7 +46888,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
46853
46888
  x_ite_Namespace .add ("GLTF2Parser", "x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
46854
46889
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
46855
46890
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
46856
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(757);
46891
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(464);
46857
46892
  /*******************************************************************************
46858
46893
  *
46859
46894
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47005,7 +47040,7 @@ const GLB2Parser_default_ = GLB2Parser;
47005
47040
  x_ite_Namespace .add ("GLB2Parser", "x_ite/Parser/GLB2Parser", GLB2Parser_default_);
47006
47041
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
47007
47042
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
47008
- /* provided dependency */ var OBJParser_$ = __webpack_require__(757);
47043
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(464);
47009
47044
  /*******************************************************************************
47010
47045
  *
47011
47046
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50360,8 +50395,8 @@ const MatrixStack_default_ = MatrixStack;
50360
50395
  x_ite_Namespace .add ("MatrixStack", "standard/Math/Utility/MatrixStack", MatrixStack_default_);
50361
50396
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
50362
50397
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
50363
- /* provided dependency */ var SVGParser_$ = __webpack_require__(757);
50364
- /* provided dependency */ var libtess = __webpack_require__(986);
50398
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(464);
50399
+ /* provided dependency */ var libtess = __webpack_require__(602);
50365
50400
  /*******************************************************************************
50366
50401
  *
50367
50402
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53129,7 +53164,7 @@ const SVGParser_default_ = SVGParser;
53129
53164
  x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_);
53130
53165
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
53131
53166
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
53132
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(757);
53167
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(464);
53133
53168
  /*******************************************************************************
53134
53169
  *
53135
53170
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53466,7 +53501,7 @@ const Plane3_default_ = Plane3;
53466
53501
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53467
53502
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53468
53503
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53469
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(986);
53504
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(602);
53470
53505
  /*******************************************************************************
53471
53506
  *
53472
53507
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -60851,7 +60886,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
60851
60886
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
60852
60887
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
60853
60888
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
60854
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(757);
60889
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(464);
60855
60890
  /*******************************************************************************
60856
60891
  *
60857
60892
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -61920,10 +61955,6 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
61920
61955
 
61921
61956
  this ._initialized = this .getBrowser () .getCurrentTime ();
61922
61957
  },
61923
- getDisabled ()
61924
- {
61925
- return this .disabled;
61926
- },
61927
61958
  getLiveState ()
61928
61959
  {
61929
61960
  /// Determines the live state of this node.
@@ -64380,6 +64411,8 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
64380
64411
  this .maybePickableSensorNodes .push (childNode);
64381
64412
  break;
64382
64413
  }
64414
+ case Base_X3DConstants .Sound:
64415
+ case Base_X3DConstants .SpatialSound:
64383
64416
  case Base_X3DConstants .X3DBackgroundNode:
64384
64417
  case Base_X3DConstants .X3DChildNode:
64385
64418
  {
@@ -64410,6 +64443,7 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
64410
64443
  case Base_X3DConstants .X3DLayoutNode:
64411
64444
  case Base_X3DConstants .X3DScriptNode:
64412
64445
  case Base_X3DConstants .X3DSequencerNode:
64446
+ case Base_X3DConstants .X3DSoundNode:
64413
64447
  case Base_X3DConstants .X3DTriggerNode:
64414
64448
  break;
64415
64449
  default:
@@ -64520,6 +64554,8 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
64520
64554
 
64521
64555
  break;
64522
64556
  }
64557
+ case Base_X3DConstants .Sound:
64558
+ case Base_X3DConstants .SpatialSound:
64523
64559
  case Base_X3DConstants .X3DBackgroundNode:
64524
64560
  case Base_X3DConstants .X3DChildNode:
64525
64561
  {
@@ -64558,6 +64594,7 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
64558
64594
  case Base_X3DConstants .X3DLayoutNode:
64559
64595
  case Base_X3DConstants .X3DScriptNode:
64560
64596
  case Base_X3DConstants .X3DSequencerNode:
64597
+ case Base_X3DConstants .X3DSoundNode:
64561
64598
  case Base_X3DConstants .X3DTriggerNode:
64562
64599
  break;
64563
64600
  default:
@@ -65451,7 +65488,7 @@ const X3DWorld_default_ = X3DWorld;
65451
65488
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
65452
65489
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
65453
65490
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
65454
- /* provided dependency */ var FileLoader_$ = __webpack_require__(757);
65491
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(464);
65455
65492
  /*******************************************************************************
65456
65493
  *
65457
65494
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -69773,11 +69810,10 @@ Object .assign (Object .setPrototypeOf (ProximitySensor .prototype, Environmenta
69773
69810
  update: (() =>
69774
69811
  {
69775
69812
  const
69776
- invModelMatrix = new Numbers_Matrix4 (),
69777
- centerOfRotationMatrix = new Numbers_Matrix4 (),
69778
69813
  position = new Numbers_Vector3 (0, 0, 0),
69779
69814
  orientation = new Numbers_Rotation4 (),
69780
- centerOfRotation = new Numbers_Vector3 (0, 0, 0);
69815
+ centerOfRotation = new Numbers_Vector3 (0, 0, 0),
69816
+ centerOfRotationMatrix = new Numbers_Matrix4 ();
69781
69817
 
69782
69818
  return function ()
69783
69819
  {
@@ -69786,22 +69822,18 @@ Object .assign (Object .setPrototypeOf (ProximitySensor .prototype, Environmenta
69786
69822
  if (this .layerNode)
69787
69823
  {
69788
69824
  const
69789
- viewpointNode = this .layerNode .getViewpoint (),
69790
- modelMatrix = this .modelMatrix;
69791
-
69792
- centerOfRotationMatrix .assign (viewpointNode .getModelMatrix ());
69793
- centerOfRotationMatrix .translate (viewpointNode .getUserCenterOfRotation ());
69794
- centerOfRotationMatrix .multRight (invModelMatrix .assign (modelMatrix) .inverse ());
69795
-
69796
- modelMatrix .multRight (viewpointNode .getViewMatrix ());
69797
- modelMatrix .get (null, orientation);
69798
- modelMatrix .inverse ();
69825
+ viewpointNode = this .layerNode .getViewpoint (),
69826
+ invModelMatrix = this .modelMatrix .inverse ()
69799
69827
 
69800
- position .set (modelMatrix [12], modelMatrix [13], modelMatrix [14]);
69828
+ centerOfRotationMatrix
69829
+ .assign (viewpointNode .getModelMatrix ())
69830
+ .translate (viewpointNode .getUserCenterOfRotation ())
69831
+ .multRight (invModelMatrix)
69832
+ .get (centerOfRotation);
69801
69833
 
69802
- orientation .inverse ();
69803
-
69804
- centerOfRotation .set (centerOfRotationMatrix [12], centerOfRotationMatrix [13], centerOfRotationMatrix [14]);
69834
+ invModelMatrix
69835
+ .multLeft (viewpointNode .getCameraSpaceMatrix ())
69836
+ .get (position, orientation);
69805
69837
 
69806
69838
  if (this ._isActive .getValue ())
69807
69839
  {
@@ -78018,7 +78050,7 @@ Object .assign (CatmullRomSplineInterpolator .prototype,
78018
78050
 
78019
78051
  return function (index0, index1, weight, keyValue)
78020
78052
  {
78021
- S .set (Math .pow (weight, 3), Math .pow (weight, 2), weight, 1);
78053
+ S .set (weight ** 3, weight ** 2, weight, 1);
78022
78054
 
78023
78055
  // Taking dot product from SH and C;
78024
78056
 
@@ -88965,7 +88997,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
88965
88997
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
88966
88998
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
88967
88999
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
88968
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(757);
89000
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(464);
88969
89001
  /*******************************************************************************
88970
89002
  *
88971
89003
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -94352,7 +94384,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
94352
94384
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
94353
94385
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
94354
94386
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
94355
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(757);
94387
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(464);
94356
94388
  /*******************************************************************************
94357
94389
  *
94358
94390
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95009,7 +95041,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
95009
95041
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
95010
95042
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
95011
95043
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
95012
- /* provided dependency */ var Appearance_$ = __webpack_require__(757);
95044
+ /* provided dependency */ var Appearance_$ = __webpack_require__(464);
95013
95045
  /*******************************************************************************
95014
95046
  *
95015
95047
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -98286,6 +98318,7 @@ const Components_Shape_default_ = {
98286
98318
  x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_default_);
98287
98319
  /* harmony default export */ const Components_Shape = (Components_Shape_default_);
98288
98320
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundProcessingNode.js
98321
+ /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(464);
98289
98322
  /*******************************************************************************
98290
98323
  *
98291
98324
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -98338,6 +98371,7 @@ x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_defaul
98338
98371
 
98339
98372
 
98340
98373
 
98374
+
98341
98375
  function X3DSoundProcessingNode (executionContext)
98342
98376
  {
98343
98377
  Core_X3DChildNode .call (this, executionContext);
@@ -98345,7 +98379,13 @@ function X3DSoundProcessingNode (executionContext)
98345
98379
 
98346
98380
  this .addType (Base_X3DConstants .X3DSoundProcessingNode);
98347
98381
 
98348
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ());
98382
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (true),
98383
+ Base_X3DConstants .inputOutput, "active", new x_ite_Fields .SFBool ());
98384
+
98385
+ const audioContext = this .getBrowser () .getAudioContext ();
98386
+
98387
+ this .childNodes = [ ];
98388
+ this .gainNode = new GainNode (audioContext);
98349
98389
  }
98350
98390
 
98351
98391
  Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_X3DChildNode .prototype),
@@ -98355,6 +98395,139 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_
98355
98395
  {
98356
98396
  Core_X3DChildNode .prototype .initialize .call (this);
98357
98397
  Time_X3DTimeDependentNode .prototype .initialize .call (this);
98398
+
98399
+ this ._active .addInterest ("set_gain__", this);
98400
+ this ._gain .addInterest ("set_gain__", this);
98401
+ this ._channelCount .addInterest ("set_channelCount__", this);
98402
+ this ._channelCountMode .addInterest ("set_channelCountMode__", this);
98403
+ this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
98404
+ this ._children .addInterest ("set_children__", this);
98405
+ this ._active .addInterest ("set_active__", this);
98406
+
98407
+ this .set_gain__ ();
98408
+ this .set_channelCount__ ();
98409
+ this .set_channelCountMode__ ();
98410
+ this .set_channelInterpretation__ ();
98411
+ this .set_children__ ();
98412
+ },
98413
+ getAudioSource ()
98414
+ {
98415
+ return this .gainNode;
98416
+ },
98417
+ getSoundProcessor ()
98418
+ {
98419
+ return this .gainNode;
98420
+ },
98421
+ set_gain__ ()
98422
+ {
98423
+ this .gainNode .gain .value = this ._active .getValue () ? this ._gain .getValue () : 1;
98424
+ },
98425
+ set_channelCount__ ()
98426
+ {
98427
+ this .getSoundProcessor () .channelCount = Math .max (this ._channelCount .getValue (), 1);
98428
+ },
98429
+ set_channelCountMode__: (function ()
98430
+ {
98431
+ const channelCountModes = new Set (["max", "clamped-max", "explicit"]);
98432
+
98433
+ return function ()
98434
+ {
98435
+ const channelCountMode = this ._channelCountMode .getValue () .toLowerCase () .replaceAll ("_", "-");
98436
+
98437
+ this .getSoundProcessor () .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
98438
+ };
98439
+ })(),
98440
+ set_channelInterpretation__: (function ()
98441
+ {
98442
+ const channelInterpretations = new Set (["speakers", "discrete"]);
98443
+
98444
+ return function ()
98445
+ {
98446
+ const channelInterpretation = this ._channelInterpretation .getValue () .toLowerCase ();
98447
+
98448
+ this .getSoundProcessor () .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
98449
+ };
98450
+ })(),
98451
+ set_children__ ()
98452
+ {
98453
+ this .set_disconnect__ ();
98454
+
98455
+ this .childNodes .length = 0;
98456
+
98457
+ for (const child of this ._children)
98458
+ {
98459
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
98460
+
98461
+ if (!childNode)
98462
+ continue;
98463
+
98464
+ const type = childNode .getType ();
98465
+
98466
+ for (let t = type .length - 1; t >= 0; -- t)
98467
+ {
98468
+ switch (type [t])
98469
+ {
98470
+ case Base_X3DConstants .X3DSoundChannelNode:
98471
+ case Base_X3DConstants .X3DSoundProcessingNode:
98472
+ case Base_X3DConstants .X3DSoundSourceNode:
98473
+ this .childNodes .push (childNode);
98474
+ break;
98475
+ default:
98476
+ continue;
98477
+ }
98478
+
98479
+ break;
98480
+ }
98481
+ }
98482
+
98483
+ this .set_active__ ();
98484
+ },
98485
+ set_disconnect__ ()
98486
+ {
98487
+ for (const childNode of this .childNodes)
98488
+ X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .disconnect (this .gainNode));
98489
+
98490
+ for (const childNode of this .childNodes)
98491
+ X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .disconnect (this .getSoundProcessor ()));
98492
+ },
98493
+ set_active__ ()
98494
+ {
98495
+ this .set_disconnect__ ();
98496
+
98497
+ if (this ._active .getValue ())
98498
+ {
98499
+ for (const childNode of this .childNodes)
98500
+ X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .connect (this .getSoundProcessor ()), true);
98501
+ }
98502
+ else
98503
+ {
98504
+ for (const childNode of this .childNodes)
98505
+ X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .connect (this .gainNode), true);
98506
+ }
98507
+ },
98508
+ set_start ()
98509
+ {
98510
+ if (!this ._active .getValue ())
98511
+ this ._active = true;
98512
+ },
98513
+ set_pause ()
98514
+ {
98515
+ if (this ._active .getValue ())
98516
+ this ._active = false;
98517
+ },
98518
+ set_resume ()
98519
+ {
98520
+ if (!this ._active .getValue ())
98521
+ this ._active = true;
98522
+ },
98523
+ set_stop ()
98524
+ {
98525
+ if (this ._active .getValue ())
98526
+ this ._active = false;
98527
+ },
98528
+ set_time ()
98529
+ {
98530
+ this ._elapsedTime = this .getElapsedTime ();
98358
98531
  },
98359
98532
  dispose ()
98360
98533
  {
@@ -98436,14 +98609,94 @@ x_ite_Namespace .add ("X3DSoundProcessingNode", "x_ite/Components/Sound/X3DSound
98436
98609
 
98437
98610
 
98438
98611
 
98612
+
98439
98613
  function Analyser (executionContext)
98440
98614
  {
98441
98615
  Sound_X3DSoundProcessingNode .call (this, executionContext);
98442
98616
 
98443
98617
  this .addType (Base_X3DConstants .Analyser);
98618
+
98619
+ const audioContext = this .getBrowser () .getAudioContext ();
98620
+
98621
+ this .analyzerNode = new AnalyserNode (audioContext);
98622
+ this .byteFrequencyData = new Uint8Array (this .analyzerNode .frequencyBinCount);
98623
+ this .byteTimeDomainData = new Uint8Array (this .analyzerNode .frequencyBinCount);
98624
+
98625
+ this .analyzerNode .connect (this .getAudioSource ());
98444
98626
  }
98445
98627
 
98446
- Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProcessingNode .prototype);
98628
+ Object .assign (Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProcessingNode .prototype),
98629
+ {
98630
+ initialize ()
98631
+ {
98632
+ Sound_X3DSoundProcessingNode .prototype .initialize .call (this);
98633
+
98634
+ this ._fftSize .addInterest ("set_fftSize__", this);
98635
+ this ._minDecibels .addInterest ("set_decibels__", this);
98636
+ this ._maxDecibels .addInterest ("set_decibels__", this);
98637
+ this ._smoothingTimeConstant .addInterest ("set_smoothingTimeConstant__", this);
98638
+
98639
+ this .set_fftSize__ ();
98640
+ this .set_decibels__ ();
98641
+ this .set_smoothingTimeConstant__ ();
98642
+ },
98643
+ getSoundProcessor ()
98644
+ {
98645
+ return this .analyzerNode;
98646
+ },
98647
+ set_fftSize__ ()
98648
+ {
98649
+ this .analyzerNode .fftSize = Math_Algorithm .clamp (Math_Algorithm .nextPowerOfTwo (this ._fftSize .getValue ()), 32, 32768);
98650
+
98651
+ this ._frequencyBinCount = this .analyzerNode .frequencyBinCount;
98652
+ },
98653
+ set_decibels__ ()
98654
+ {
98655
+ const
98656
+ minDecibels = Math .min (this ._minDecibels .getValue (), 0),
98657
+ maxDecibels = Math .min (this ._maxDecibels .getValue (), 0);
98658
+
98659
+ this .analyzerNode .minDecibels = Math .min (minDecibels, maxDecibels);
98660
+ this .analyzerNode .maxDecibels = Math .max (minDecibels, maxDecibels);
98661
+ },
98662
+ set_smoothingTimeConstant__ ()
98663
+ {
98664
+ this .analyzerNode .smoothingTimeConstant = Math_Algorithm .clamp (this ._smoothingTimeConstant .getValue (), 0, 1);
98665
+ },
98666
+ set_time ()
98667
+ {
98668
+ Sound_X3DSoundProcessingNode .prototype .set_time .call (this);
98669
+
98670
+ const
98671
+ analyzerNode = this .analyzerNode,
98672
+ frequencyBinCount = analyzerNode .frequencyBinCount;
98673
+
98674
+ if (this .byteFrequencyData .length !== frequencyBinCount)
98675
+ {
98676
+ this .byteFrequencyData = new Uint8Array (frequencyBinCount);
98677
+ this .byteTimeDomainData = new Uint8Array (frequencyBinCount);
98678
+ }
98679
+
98680
+ this ._byteFrequencyData .length = frequencyBinCount;
98681
+ this ._byteTimeDomainData .length = frequencyBinCount;
98682
+ this ._floatFrequencyData .length = frequencyBinCount;
98683
+ this ._floatTimeDomainData .length = frequencyBinCount;
98684
+
98685
+ analyzerNode .getByteFrequencyData (this .byteFrequencyData);
98686
+ analyzerNode .getByteTimeDomainData (this .byteTimeDomainData);
98687
+
98688
+ this ._byteFrequencyData .getValue () .set (this .byteFrequencyData);
98689
+ this ._byteTimeDomainData .getValue () .set (this .byteTimeDomainData);
98690
+
98691
+ analyzerNode .getFloatFrequencyData (this ._floatFrequencyData .shrinkToFit ());
98692
+ analyzerNode .getFloatTimeDomainData (this ._floatTimeDomainData .shrinkToFit ());
98693
+
98694
+ this ._byteFrequencyData .addEvent ();
98695
+ this ._byteTimeDomainData .addEvent ();
98696
+ this ._floatFrequencyData .addEvent ();
98697
+ this ._floatTimeDomainData .addEvent ();
98698
+ },
98699
+ });
98447
98700
 
98448
98701
  Object .defineProperties (Analyser,
98449
98702
  {
@@ -98476,13 +98729,17 @@ Object .defineProperties (Analyser,
98476
98729
 
98477
98730
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
98478
98731
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "fftSize", new x_ite_Fields .SFInt32 (2048)),
98479
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "frequencyBinCount", new x_ite_Fields .SFInt32 (1024)),
98480
98732
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "minDecibels", new x_ite_Fields .SFFloat (-100)),
98481
98733
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "maxDecibels", new x_ite_Fields .SFFloat (-30)),
98482
98734
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "smoothingTimeConstant", new x_ite_Fields .SFFloat (0.8)),
98483
98735
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
98736
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "frequencyBinCount", new x_ite_Fields .SFInt32 ()),
98737
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "byteFrequencyData", new x_ite_Fields .MFInt32 ()),
98738
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "byteTimeDomainData", new x_ite_Fields .MFInt32 ()),
98739
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "floatFrequencyData", new x_ite_Fields .MFFloat ()),
98740
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "floatTimeDomainData", new x_ite_Fields .MFFloat ()),
98484
98741
 
98485
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
98742
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
98486
98743
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
98487
98744
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
98488
98745
 
@@ -98557,7 +98814,6 @@ x_ite_Namespace .add ("Analyser", "x_ite/Components/Sound/Analyser", Analyser_de
98557
98814
 
98558
98815
 
98559
98816
 
98560
-
98561
98817
  function X3DSoundSourceNode (executionContext)
98562
98818
  {
98563
98819
  Core_X3DChildNode .call (this, executionContext);
@@ -98565,8 +98821,10 @@ function X3DSoundSourceNode (executionContext)
98565
98821
 
98566
98822
  this .addType (Base_X3DConstants .X3DSoundSourceNode);
98567
98823
 
98568
- this .volume = 0;
98569
- this .media = null;
98824
+ const audioContext = this .getBrowser () .getAudioContext ();
98825
+
98826
+ this .gainNode = new GainNode (audioContext);
98827
+ this .mediaElement = null;
98570
98828
  }
98571
98829
 
98572
98830
  Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DChildNode .prototype),
@@ -98576,42 +98834,30 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DC
98576
98834
  {
98577
98835
  Core_X3DChildNode .prototype .initialize .call (this);
98578
98836
  Time_X3DTimeDependentNode .prototype .initialize .call (this);
98579
- },
98580
- set_live__ ()
98581
- {
98582
- Time_X3DTimeDependentNode .prototype .set_live__ .call (this);
98583
98837
 
98584
- if (this .getDisabled ())
98585
- {
98586
- this .getBrowser () ._volume .removeInterest ("set_volume__", this);
98587
- this .getBrowser () ._mute .removeInterest ("set_volume__", this);
98588
- }
98589
- else
98590
- {
98591
- this .getBrowser () ._volume .addInterest ("set_volume__", this);
98592
- this .getBrowser () ._mute .addInterest ("set_volume__", this);
98838
+ this ._gain .addInterest ("set_gain__", this);
98593
98839
 
98594
- this .set_volume__ ();
98595
- }
98840
+ this .set_gain__ ();
98596
98841
  },
98597
- setMedia (value)
98842
+ getAudioSource ()
98598
98843
  {
98599
- if (this .media)
98600
- {
98601
- this .media .muted = true;
98602
- this .media .pause ();
98603
- }
98844
+ return this .gainNode;
98845
+ },
98846
+ setMediaElement (value)
98847
+ {
98848
+ this .mediaElement ?.pause ();
98604
98849
 
98605
- this .media = value;
98850
+ this .mediaElement = value;
98606
98851
 
98607
98852
  if (value)
98608
98853
  {
98609
- this .media .muted = true;
98610
- this .media .volume = 0;
98611
- this .media .loop = this ._loop .getValue ();
98854
+ // Init mediaElement.
98612
98855
 
98613
- this .setVolume (0);
98614
- this ._duration_changed = this .media .duration;
98856
+ this .set_loop ();
98857
+
98858
+ // Handle events.
98859
+
98860
+ this ._duration_changed = this .mediaElement .duration;
98615
98861
 
98616
98862
  this .resetElapsedTime ();
98617
98863
 
@@ -98635,62 +98881,36 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DC
98635
98881
  }
98636
98882
  }
98637
98883
  },
98638
- setVolume (volume)
98884
+ set_gain__ ()
98639
98885
  {
98640
- this .volume = Math_Algorithm .clamp (volume, 0, 1);
98641
-
98642
- this .set_volume__ ();
98886
+ this .gainNode .gain .value = this ._gain .getValue ();
98643
98887
  },
98888
+ set_pitch ()
98889
+ { },
98644
98890
  set_loop ()
98645
98891
  {
98646
- if (this .media)
98647
- this .media .loop = this ._loop .getValue ();
98892
+ if (this .mediaElement)
98893
+ this .mediaElement .loop = this ._loop .getValue ();
98648
98894
  },
98649
- set_volume__ ()
98650
- {
98651
- if (! this .media)
98652
- return;
98653
-
98654
- const
98655
- mute = this .getBrowser () ._mute .getValue (),
98656
- intensity = Math_Algorithm .clamp (this .getBrowser () ._volume .getValue (), 0, 1),
98657
- volume = (! mute) * intensity * this .volume;
98658
-
98659
- this .media .muted = volume === 0;
98660
- this .media .volume = volume;
98661
- },
98662
- set_speed ()
98663
- { },
98664
- set_pitch ()
98665
- { },
98666
98895
  set_start ()
98667
98896
  {
98668
- if (this .media)
98897
+ if (this .mediaElement)
98669
98898
  {
98670
- if (this ._speed .getValue ())
98671
- {
98672
- this .media .currentTime = 0;
98673
- this .media .play () .catch (Function .prototype);
98674
- }
98899
+ this .mediaElement .currentTime = 0;
98900
+ this .mediaElement .play () .catch (() => this .getBrowser () .startAudioElement (this .mediaElement));
98675
98901
  }
98676
98902
  },
98677
98903
  set_pause ()
98678
98904
  {
98679
- if (this .media)
98680
- this .media .pause ();
98905
+ this .mediaElement ?.pause ();
98681
98906
  },
98682
98907
  set_resume ()
98683
98908
  {
98684
- if (this .media)
98685
- {
98686
- if (this ._speed .getValue ())
98687
- this .media .play () .catch (Function .prototype);
98688
- }
98909
+ this .mediaElement ?.play () .catch (Function .prototype);
98689
98910
  },
98690
98911
  set_stop ()
98691
98912
  {
98692
- if (this .media)
98693
- this .media .pause ();
98913
+ this .mediaElement ?.pause ();
98694
98914
  },
98695
98915
  set_end ()
98696
98916
  {
@@ -98701,12 +98921,12 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DC
98701
98921
  },
98702
98922
  set_time ()
98703
98923
  {
98704
- if (! this .media)
98705
- return;
98706
-
98707
98924
  this ._elapsedTime = this .getElapsedTime ();
98708
98925
 
98709
- if (this .media .currentTime < this .media .duration)
98926
+ if (!this .mediaElement)
98927
+ return;
98928
+
98929
+ if (this .mediaElement .currentTime < this .mediaElement .duration)
98710
98930
  return;
98711
98931
 
98712
98932
  this .set_end ();
@@ -98738,7 +98958,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
98738
98958
  x_ite_Namespace .add ("X3DSoundSourceNode", "x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
98739
98959
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
98740
98960
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
98741
- /* provided dependency */ var AudioClip_$ = __webpack_require__(757);
98961
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(464);
98742
98962
  /*******************************************************************************
98743
98963
  *
98744
98964
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -98801,10 +99021,13 @@ function AudioClip (executionContext)
98801
99021
 
98802
99022
  this .addType (Base_X3DConstants .AudioClip);
98803
99023
 
98804
- this .addChildObjects (Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
99024
+ const audioContext = this .getBrowser () .getAudioContext ();
98805
99025
 
98806
- this .audio = AudioClip_$("<audio></audio>");
98807
- this .urlStack = new x_ite_Fields .MFString ();
99026
+ this .urlStack = new x_ite_Fields .MFString ();
99027
+ this .audio = AudioClip_$("<audio></audio>");
99028
+ this .sourceNode = audioContext .createMediaElementSource (this .audio [0]);
99029
+
99030
+ this .sourceNode .connect (this .getAudioSource ());
98808
99031
  }
98809
99032
 
98810
99033
  Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSourceNode .prototype),
@@ -98815,19 +99038,14 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
98815
99038
  Sound_X3DSoundSourceNode .prototype .initialize .call (this);
98816
99039
  Networking_X3DUrlObject .prototype .initialize .call (this);
98817
99040
 
98818
- this .audio .on ("abort error", this .setError .bind (this));
98819
- this .audio .on ("suspend stalled", this .setTimeout .bind (this));
98820
-
98821
- this .audio .prop ("crossOrigin", "Anonymous");
98822
- this .audio .prop ("preload", "auto");
98823
- this .audio .prop ("muted", true);
99041
+ this .audio
99042
+ .on ("abort error", this .setError .bind (this))
99043
+ .on ("suspend stalled", this .setTimeout .bind (this))
99044
+ .prop ("crossOrigin", "Anonymous")
99045
+ .prop ("preload", "auto");
98824
99046
 
98825
99047
  this .requestImmediateLoad () .catch (Function .prototype);
98826
99048
  },
98827
- getElement ()
98828
- {
98829
- return this .audio [0];
98830
- },
98831
99049
  set_live__ ()
98832
99050
  {
98833
99051
  Sound_X3DSoundSourceNode .prototype .set_live__ .call (this);
@@ -98835,11 +99053,11 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
98835
99053
  },
98836
99054
  unloadData ()
98837
99055
  {
98838
- this .setMedia (null);
99056
+ this .setMediaElement (null);
98839
99057
  },
98840
99058
  loadData ()
98841
99059
  {
98842
- this .setMedia (null);
99060
+ this .setMediaElement (null);
98843
99061
  this .urlStack .setValue (this ._url);
98844
99062
  this .audio .on ("canplaythrough", this .setAudio .bind (this));
98845
99063
  this .loadNext ();
@@ -98885,15 +99103,22 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
98885
99103
  },
98886
99104
  setAudio ()
98887
99105
  {
98888
- if (DEVELOPMENT)
99106
+ try
98889
99107
  {
98890
- if (this .URL .protocol !== "data:")
98891
- console .info (`Done loading audio '${decodeURI (this .URL .href)}'`);
98892
- }
99108
+ if (DEVELOPMENT)
99109
+ {
99110
+ if (this .URL .protocol !== "data:")
99111
+ console .info (`Done loading audio '${decodeURI (this .URL .href)}'`);
99112
+ }
98893
99113
 
98894
- this .audio .unbind ("canplaythrough");
98895
- this .setMedia (this .audio [0]);
98896
- this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
99114
+ this .audio .unbind ("canplaythrough");
99115
+ this .setMediaElement (this .audio [0]);
99116
+ this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
99117
+ }
99118
+ catch (error)
99119
+ {
99120
+ this .setError ({ type: error .message });
99121
+ }
98897
99122
  },
98898
99123
  dispose ()
98899
99124
  {
@@ -99035,6 +99260,7 @@ const X3DSoundNode_default_ = X3DSoundNode;
99035
99260
  x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3DSoundNode_default_);
99036
99261
  /* harmony default export */ const Sound_X3DSoundNode = (X3DSoundNode_default_);
99037
99262
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundDestinationNode.js
99263
+ /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(464);
99038
99264
  /*******************************************************************************
99039
99265
  *
99040
99266
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99085,14 +99311,131 @@ x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3D
99085
99311
 
99086
99312
 
99087
99313
 
99314
+
99088
99315
  function X3DSoundDestinationNode (executionContext)
99089
99316
  {
99090
99317
  Sound_X3DSoundNode .call (this, executionContext);
99091
99318
 
99092
99319
  this .addType (Base_X3DConstants .X3DSoundDestinationNode);
99320
+
99321
+ const audioContext = this .getBrowser () .getAudioContext ();
99322
+
99323
+ this .childNodes = [ ];
99324
+ this .gainNode = new GainNode (audioContext);
99093
99325
  }
99094
99326
 
99095
- Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype);
99327
+ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype),
99328
+ {
99329
+ initialize ()
99330
+ {
99331
+ Sound_X3DSoundNode .prototype .initialize .call (this);
99332
+
99333
+ this .getLive () .addInterest ("set_enabled__", this);
99334
+
99335
+ this ._enabled .addInterest ("set_enabled__", this);
99336
+ this ._gain .addInterest ("set_gain__", this);
99337
+ this ._children .addInterest ("set_children__", this);
99338
+
99339
+ this .set_enabled__ ();
99340
+ this .set_gain__ ();
99341
+ this .set_children__ ();
99342
+ },
99343
+ getAudioSource ()
99344
+ {
99345
+ return this .gainNode;
99346
+ },
99347
+ set_enabled__ ()
99348
+ {
99349
+ if (this ._enabled .getValue () && this .getLive () .getValue ())
99350
+ {
99351
+ this ._channelCount .addInterest ("set_channelCount__", this);
99352
+ this ._channelCountMode .addInterest ("set_channelCountMode__", this);
99353
+ this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
99354
+
99355
+ this .gainNode .connect (this .getSoundDestination ());
99356
+
99357
+ this .set_channelCount__ ();
99358
+ this .set_channelCountMode__ ();
99359
+ this .set_channelInterpretation__ ();
99360
+ }
99361
+ else
99362
+ {
99363
+ this ._channelCount .removeInterest ("set_channelCount__", this);
99364
+ this ._channelCountMode .removeInterest ("set_channelCountMode__", this);
99365
+ this ._channelInterpretation .removeInterest ("set_channelInterpretation__", this);
99366
+
99367
+ this .gainNode .disconnect ();
99368
+ }
99369
+
99370
+ this ._isActive = this ._enabled;
99371
+ },
99372
+ set_gain__ ()
99373
+ {
99374
+ this .gainNode .gain .value = this ._gain .getValue ();
99375
+ },
99376
+ set_channelCount__ ()
99377
+ {
99378
+ this .getSoundDestination () .channelCount = Math .max (this ._channelCount .getValue (), 1);
99379
+ },
99380
+ set_channelCountMode__: (function ()
99381
+ {
99382
+ const channelCountModes = new Set (["max", "clamped-max", "explicit"]);
99383
+
99384
+ return function ()
99385
+ {
99386
+ const channelCountMode = this ._channelCountMode .getValue () .toLowerCase () .replaceAll ("_", "-");
99387
+
99388
+ this .getSoundDestination () .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
99389
+ };
99390
+ })(),
99391
+ set_channelInterpretation__: (function ()
99392
+ {
99393
+ const channelInterpretations = new Set (["speakers", "discrete"]);
99394
+
99395
+ return function ()
99396
+ {
99397
+ const channelInterpretation = this ._channelInterpretation .getValue () .toLowerCase ();
99398
+
99399
+ this .getSoundDestination () .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
99400
+ };
99401
+ })(),
99402
+ set_children__ ()
99403
+ {
99404
+ for (const childNode of this .childNodes)
99405
+ X3DSoundDestinationNode_$.try (() => childNode .getAudioSource () .disconnect (this .gainNode));
99406
+
99407
+ this .childNodes .length = 0;
99408
+
99409
+ for (const child of this ._children)
99410
+ {
99411
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
99412
+
99413
+ if (!childNode)
99414
+ continue;
99415
+
99416
+ const type = childNode .getType ();
99417
+
99418
+ for (let t = type .length - 1; t >= 0; -- t)
99419
+ {
99420
+ switch (type [t])
99421
+ {
99422
+ case Base_X3DConstants .X3DSoundChannelNode:
99423
+ case Base_X3DConstants .X3DSoundProcessingNode:
99424
+ case Base_X3DConstants .X3DSoundSourceNode:
99425
+ this .childNodes .push (childNode);
99426
+ break;
99427
+ default:
99428
+ continue;
99429
+ }
99430
+
99431
+ break;
99432
+ }
99433
+ }
99434
+
99435
+ for (const childNode of this .childNodes)
99436
+ X3DSoundDestinationNode_$.try (() => childNode .getAudioSource () .connect (this .gainNode), true);
99437
+ },
99438
+ });
99096
99439
 
99097
99440
  Object .defineProperties (X3DSoundDestinationNode,
99098
99441
  {
@@ -99172,9 +99515,73 @@ function AudioDestination (executionContext)
99172
99515
  Sound_X3DSoundDestinationNode .call (this, executionContext);
99173
99516
 
99174
99517
  this .addType (Base_X3DConstants .AudioDestination);
99518
+
99519
+ this .audioElement = new Audio ();
99175
99520
  }
99176
99521
 
99177
- Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype);
99522
+ Object .assign (Object .setPrototypeOf (AudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
99523
+ {
99524
+ initialize ()
99525
+ {
99526
+ Sound_X3DSoundDestinationNode .prototype .initialize .call (this);
99527
+
99528
+ const audioContext = this .getBrowser () .getAudioContext ();
99529
+
99530
+ this ._mediaDeviceID .addInterest ("set_mediaDeviceID__", this);
99531
+
99532
+ this ._maxChannelCount = audioContext .destination .maxChannelCount;
99533
+
99534
+ this .set_mediaDeviceID__ ();
99535
+ },
99536
+ getSoundDestination ()
99537
+ {
99538
+ return this .mediaStreamDestination;
99539
+ },
99540
+ set_enabled__ ()
99541
+ {
99542
+ const active = this ._enabled .getValue () && this .getLive () .getValue ();
99543
+
99544
+ if (!!this .mediaStreamDestination === active)
99545
+ return;
99546
+
99547
+ if (active)
99548
+ {
99549
+ const audioContext = this .getBrowser () .getAudioContext ();
99550
+
99551
+ this .mediaStreamDestination = audioContext .createMediaStreamDestination ();
99552
+ this .audioElement .srcObject = this .mediaStreamDestination .stream;
99553
+
99554
+ this .audioElement .play () .catch (() => this .getBrowser () .startAudioElement (this .audioElement));
99555
+ }
99556
+ else
99557
+ {
99558
+ this .audioElement .pause ();
99559
+
99560
+ for (const track of this .mediaStreamDestination .stream .getAudioTracks ())
99561
+ track .stop ();
99562
+
99563
+ for (const track of this .mediaStreamDestination .stream .getVideoTracks ())
99564
+ track .stop ();
99565
+
99566
+ this .mediaStreamDestination = null;
99567
+ }
99568
+
99569
+ Sound_X3DSoundDestinationNode .prototype .set_enabled__ .call (this);
99570
+ },
99571
+ set_mediaDeviceID__ ()
99572
+ {
99573
+ // Safari has no support yet, as of Aug 2023.
99574
+ if (!this .audioElement .setSinkId)
99575
+ return;
99576
+
99577
+ this .audioElement .setSinkId (this ._mediaDeviceID .getValue ()) .catch (error =>
99578
+ {
99579
+ console .error (error .message);
99580
+
99581
+ this .audioElement .setSinkId ("default") .catch (Function .prototype);
99582
+ });
99583
+ },
99584
+ });
99178
99585
 
99179
99586
  Object .defineProperties (AudioDestination,
99180
99587
  {
@@ -99201,19 +99608,19 @@ Object .defineProperties (AudioDestination,
99201
99608
  fieldDefinitions:
99202
99609
  {
99203
99610
  value: new Base_FieldDefinitionArray ([
99204
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
99205
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
99206
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
99611
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
99612
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
99613
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
99207
99614
 
99208
99615
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99209
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "maxChannelCount", new x_ite_Fields .SFInt32 (2)),
99616
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "mediaDeviceID", new x_ite_Fields .SFString ()),
99210
99617
 
99211
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
99618
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99212
99619
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99213
99620
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99214
99621
 
99215
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "mediaDeviceID", new x_ite_Fields .SFString ()),
99216
99622
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
99623
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "maxChannelCount", new x_ite_Fields .SFInt32 ()),
99217
99624
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "children", new x_ite_Fields .MFNode ()),
99218
99625
  ]),
99219
99626
  enumerable: true,
@@ -99317,14 +99724,14 @@ Object .defineProperties (BiquadFilter,
99317
99724
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
99318
99725
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
99319
99726
 
99320
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat (0)),
99321
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "frequency", new x_ite_Fields .SFFloat (350)),
99322
99727
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99728
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "frequency", new x_ite_Fields .SFFloat (350)),
99729
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat (0)),
99730
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "type", new x_ite_Fields .SFString ("LOWPASS")),
99323
99731
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "qualityFactor", new x_ite_Fields .SFFloat (1)),
99324
99732
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
99325
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "type", new x_ite_Fields .SFString ("LOWPASS")),
99326
99733
 
99327
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
99734
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99328
99735
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99329
99736
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99330
99737
 
@@ -99408,8 +99815,6 @@ function BufferAudioSource (executionContext)
99408
99815
  Networking_X3DUrlObject .call (this, executionContext);
99409
99816
 
99410
99817
  this .addType (Base_X3DConstants .BufferAudioSource);
99411
-
99412
- this .addChildObjects (Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
99413
99818
  }
99414
99819
 
99415
99820
  Object .assign (Object .setPrototypeOf (BufferAudioSource .prototype, Sound_X3DSoundSourceNode .prototype),
@@ -99452,38 +99857,38 @@ Object .defineProperties (BufferAudioSource,
99452
99857
  fieldDefinitions:
99453
99858
  {
99454
99859
  value: new Base_FieldDefinitionArray ([
99455
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
99456
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
99457
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
99860
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
99861
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
99862
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
99458
99863
 
99459
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "load", new x_ite_Fields .SFBool (true)),
99460
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "url", new x_ite_Fields .MFString ()),
99461
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "autoRefresh", new x_ite_Fields .SFTime ()),
99462
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "autoRefreshTimeLimit", new x_ite_Fields .SFTime (3600)),
99864
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "load", new x_ite_Fields .SFBool (true)),
99865
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "url", new x_ite_Fields .MFString ()),
99866
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "autoRefresh", new x_ite_Fields .SFTime ()),
99867
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "autoRefreshTimeLimit", new x_ite_Fields .SFTime (3600)),
99463
99868
 
99464
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99465
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "buffer", new x_ite_Fields .MFFloat ()),
99466
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat (0)),
99467
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "bufferDuration", new x_ite_Fields .SFTime ()),
99468
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime ()),
99469
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime ()),
99470
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "numberOfChannels", new x_ite_Fields .SFInt32 ()),
99471
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "playbackRate", new x_ite_Fields .SFFloat (1)),
99472
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "sampleRate", new x_ite_Fields .SFFloat (0)),
99473
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "bufferLength", new x_ite_Fields .SFInt32 ()),
99474
-
99475
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
99869
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99870
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat (0)),
99871
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "buffer", new x_ite_Fields .MFFloat ()),
99872
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "bufferDuration", new x_ite_Fields .SFTime ()),
99873
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "bufferLength", new x_ite_Fields .SFInt32 ()),
99874
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "numberOfChannels", new x_ite_Fields .SFInt32 ()),
99875
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "sampleRate", new x_ite_Fields .SFFloat (0)),
99876
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "playbackRate", new x_ite_Fields .SFFloat (1)),
99877
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime ()),
99878
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime ()),
99879
+
99880
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99476
99881
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99477
99882
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99478
99883
 
99479
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
99480
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime ()),
99481
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime ()),
99482
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime ()),
99483
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime ()),
99484
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
99485
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
99486
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
99884
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
99885
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime ()),
99886
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime ()),
99887
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime ()),
99888
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime ()),
99889
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
99890
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
99891
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
99487
99892
  ]),
99488
99893
  enumerable: true,
99489
99894
  },
@@ -99667,7 +100072,7 @@ Object .defineProperties (ChannelMerger,
99667
100072
 
99668
100073
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99669
100074
 
99670
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100075
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99671
100076
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99672
100077
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99673
100078
 
@@ -99777,7 +100182,7 @@ Object .defineProperties (ChannelSelector,
99777
100182
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99778
100183
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelSelection", new x_ite_Fields .SFInt32 (0)),
99779
100184
 
99780
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100185
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99781
100186
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99782
100187
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99783
100188
 
@@ -99886,7 +100291,7 @@ Object .defineProperties (ChannelSplitter,
99886
100291
 
99887
100292
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
99888
100293
 
99889
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100294
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
99890
100295
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
99891
100296
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
99892
100297
 
@@ -99999,7 +100404,7 @@ Object .defineProperties (Convolver,
99999
100404
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "normalize", new x_ite_Fields .SFBool ()),
100000
100405
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
100001
100406
 
100002
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100407
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
100003
100408
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
100004
100409
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
100005
100410
 
@@ -100119,7 +100524,7 @@ Object .defineProperties (Delay,
100119
100524
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "maxDelayTime", new x_ite_Fields .SFTime (1)),
100120
100525
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
100121
100526
 
100122
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100527
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
100123
100528
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
100124
100529
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
100125
100530
 
@@ -100243,7 +100648,7 @@ Object .defineProperties (DynamicsCompressor,
100243
100648
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "threshold", new x_ite_Fields .SFFloat (-24)),
100244
100649
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
100245
100650
 
100246
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100651
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
100247
100652
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
100248
100653
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
100249
100654
 
@@ -100361,7 +100766,7 @@ Object .defineProperties (Gain,
100361
100766
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
100362
100767
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
100363
100768
 
100364
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
100769
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
100365
100770
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
100366
100771
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
100367
100772
 
@@ -100444,8 +100849,7 @@ function ListenerPointSource (executionContext)
100444
100849
 
100445
100850
  this .addType (Base_X3DConstants .ListenerPointSource);
100446
100851
 
100447
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (),
100448
- Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
100852
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ());
100449
100853
 
100450
100854
  this ._position .setUnit ("length");
100451
100855
  }
@@ -100506,6 +100910,7 @@ const ListenerPointSource_default_ = ListenerPointSource;
100506
100910
  x_ite_Namespace .add ("ListenerPointSource", "x_ite/Components/Sound/ListenerPointSource", ListenerPointSource_default_);
100507
100911
  /* harmony default export */ const Sound_ListenerPointSource = (ListenerPointSource_default_);
100508
100912
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/MicrophoneSource.js
100913
+ /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(464);
100509
100914
  /*******************************************************************************
100510
100915
  *
100511
100916
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100565,11 +100970,113 @@ function MicrophoneSource (executionContext)
100565
100970
 
100566
100971
  this .addType (Base_X3DConstants .MicrophoneSource);
100567
100972
 
100568
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (),
100569
- Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
100973
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (true));
100570
100974
  }
100571
100975
 
100572
- Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSoundSourceNode .prototype);
100976
+ Object .assign (Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSoundSourceNode .prototype),
100977
+ {
100978
+ initialize ()
100979
+ {
100980
+ Sound_X3DSoundSourceNode .prototype .initialize .call (this);
100981
+
100982
+ this ._mediaDeviceID .addInterest ("set_mediaDeviceID__", this);
100983
+ },
100984
+ set_mediaDeviceID__ ()
100985
+ {
100986
+ this .set_stop ();
100987
+
100988
+ if (this ._isActive .getValue ())
100989
+ this .set_start ();
100990
+ },
100991
+ set_start ()
100992
+ {
100993
+ if (!navigator .mediaDevices)
100994
+ return;
100995
+
100996
+ this .restore = false;
100997
+
100998
+ navigator .mediaDevices .getUserMedia ({
100999
+ audio:
101000
+ {
101001
+ deviceId: this ._mediaDeviceID .getValue (),
101002
+ },
101003
+ })
101004
+ .then (stream =>
101005
+ {
101006
+ const audioContext = this .getBrowser () .getAudioContext ();
101007
+
101008
+ this .mediaStreamSource = audioContext .createMediaStreamSource (stream);
101009
+
101010
+ if (this ._isActive .getValue ())
101011
+ {
101012
+ if (this ._isPaused .getValue () || !this .getLive () .getValue ())
101013
+ this .set_pause ();
101014
+ else
101015
+ this .set_resume ();
101016
+ }
101017
+ else
101018
+ {
101019
+ this .set_stop ();
101020
+ }
101021
+ })
101022
+ .catch (error =>
101023
+ {
101024
+ console .error (error .message);
101025
+ });
101026
+ },
101027
+ set_pause ()
101028
+ {
101029
+ if (!this .mediaStreamSource)
101030
+ return;
101031
+
101032
+ if (this .getLive () .getValue ())
101033
+ {
101034
+ MicrophoneSource_$.try (() => this .mediaStreamSource .disconnect (this .getAudioSource ()));
101035
+
101036
+ for (const track of this .mediaStreamSource .mediaStream .getAudioTracks ())
101037
+ track .enabled = false;
101038
+
101039
+ for (const track of this .mediaStreamSource .mediaStream .getVideoTracks ())
101040
+ track .enabled = false;
101041
+ }
101042
+ else
101043
+ {
101044
+ this .set_stop (true);
101045
+ }
101046
+ },
101047
+ set_resume ()
101048
+ {
101049
+ if (this .restore)
101050
+ return this .set_start ();
101051
+
101052
+ if (!this .mediaStreamSource)
101053
+ return;
101054
+
101055
+ this .mediaStreamSource .connect (this .getAudioSource ());
101056
+
101057
+ for (const track of this .mediaStreamSource .mediaStream .getAudioTracks ())
101058
+ track .enabled = true;
101059
+
101060
+ for (const track of this .mediaStreamSource .mediaStream .getVideoTracks ())
101061
+ track .enabled = true;
101062
+ },
101063
+ set_stop (restore = false)
101064
+ {
101065
+ if (!this .mediaStreamSource)
101066
+ return;
101067
+
101068
+ MicrophoneSource_$.try (() => this .mediaStreamSource .disconnect (this .getAudioSource ()));
101069
+
101070
+ for (const track of this .mediaStreamSource .mediaStream .getAudioTracks ())
101071
+ track .stop ();
101072
+
101073
+ for (const track of this .mediaStreamSource .mediaStream .getVideoTracks ())
101074
+ track .stop ();
101075
+
101076
+ this .mediaStreamSource = null;
101077
+ this .restore = restore;
101078
+ },
101079
+ });
100573
101080
 
100574
101081
  Object .defineProperties (MicrophoneSource,
100575
101082
  {
@@ -100674,132 +101181,254 @@ x_ite_Namespace .add ("MicrophoneSource", "x_ite/Components/Sound/MicrophoneSour
100674
101181
 
100675
101182
 
100676
101183
 
100677
- function OscillatorSource (executionContext)
101184
+
101185
+ function OscillatorSource (executionContext)
101186
+ {
101187
+ Sound_X3DSoundSourceNode .call (this, executionContext);
101188
+
101189
+ this .addType (Base_X3DConstants .OscillatorSource);
101190
+
101191
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ());
101192
+
101193
+ const audioContext = this .getBrowser () .getAudioContext ();
101194
+
101195
+ this .oscillatorNode = new OscillatorNode (audioContext);
101196
+ this .mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 });
101197
+ }
101198
+
101199
+ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSoundSourceNode .prototype),
101200
+ {
101201
+ initialize ()
101202
+ {
101203
+ Sound_X3DSoundSourceNode .prototype .initialize .call (this);
101204
+
101205
+ this ._detune .addInterest ("set_detune__", this);
101206
+ this ._frequency .addInterest ("set_frequency__", this);
101207
+ this ._periodicWave .addInterest ("set_periodicWave__", this);
101208
+
101209
+ this .set_periodicWave__ ();
101210
+ },
101211
+ set_type__: (function ()
101212
+ {
101213
+ const types = new Set ([
101214
+ "sine",
101215
+ "square",
101216
+ "sawtooth",
101217
+ "triangle",
101218
+ ]);
101219
+
101220
+ return function ()
101221
+ {
101222
+ this .periodicWaveNode ._optionsReal .removeInterest ("set_periodicWaveOptions__", this);
101223
+ this .periodicWaveNode ._optionsImag .removeInterest ("set_periodicWaveOptions__", this);
101224
+
101225
+ const type = this .periodicWaveNode ._type .getValue () .toLowerCase ();
101226
+
101227
+ if (type === "custom")
101228
+ {
101229
+ this .periodicWaveNode ._optionsReal .addInterest ("set_periodicWaveOptions__", this);
101230
+ this .periodicWaveNode ._optionsImag .addInterest ("set_periodicWaveOptions__", this);
101231
+
101232
+ this .set_periodicWaveOptions__ ();
101233
+ }
101234
+ else
101235
+ {
101236
+ this .oscillatorNode .type = types .has (type) ? type : "square";
101237
+ }
101238
+ };
101239
+ })(),
101240
+ set_frequency__ ()
101241
+ {
101242
+ this .oscillatorNode .frequency .value = this ._frequency .getValue ();
101243
+ },
101244
+ set_detune__ ()
101245
+ {
101246
+ this .oscillatorNode .detune .value = this ._detune .getValue ();
101247
+ },
101248
+ set_periodicWave__ ()
101249
+ {
101250
+ this .periodicWaveNode ?._type .removeInterest ("set_type__", this);
101251
+
101252
+ this .periodicWaveNode = Base_X3DCast (Base_X3DConstants .PeriodicWave, this ._periodicWave)
101253
+ ?? this .getBrowser () .getDefaultPeriodicWave ();
101254
+
101255
+ this .periodicWaveNode ._type .addInterest ("set_type__", this);
101256
+
101257
+ this .set_type__ ();
101258
+ },
101259
+ set_periodicWaveOptions__ ()
101260
+ {
101261
+ this .oscillatorNode .setPeriodicWave (this .periodicWaveNode .createPeriodicWave ());
101262
+ },
101263
+ set_start ()
101264
+ {
101265
+ const audioContext = this .getBrowser () .getAudioContext ();
101266
+
101267
+ this .oscillatorNode = new OscillatorNode (audioContext);
101268
+
101269
+ this .set_type__ ();
101270
+ this .set_frequency__ ();
101271
+ this .set_detune__ ();
101272
+
101273
+ this .oscillatorNode .connect (this .mergerNode, 0, 0);
101274
+ this .oscillatorNode .connect (this .mergerNode, 0, 1);
101275
+ this .mergerNode .connect (this .getAudioSource ());
101276
+
101277
+ this .oscillatorNode .start ();
101278
+ },
101279
+ set_pause ()
101280
+ {
101281
+ this .mergerNode .disconnect ();
101282
+ },
101283
+ set_resume ()
101284
+ {
101285
+ this .mergerNode .connect (this .getAudioSource ());
101286
+ },
101287
+ set_stop ()
101288
+ {
101289
+ this .oscillatorNode .stop ();
101290
+ this .oscillatorNode .disconnect ();
101291
+ },
101292
+ });
101293
+
101294
+ Object .defineProperties (OscillatorSource,
101295
+ {
101296
+ typeName:
101297
+ {
101298
+ value: "OscillatorSource",
101299
+ enumerable: true,
101300
+ },
101301
+ componentName:
101302
+ {
101303
+ value: "Sound",
101304
+ enumerable: true,
101305
+ },
101306
+ containerField:
101307
+ {
101308
+ value: "children",
101309
+ enumerable: true,
101310
+ },
101311
+ specificationRange:
101312
+ {
101313
+ value: Object .freeze (["4.0", "Infinity"]),
101314
+ enumerable: true,
101315
+ },
101316
+ fieldDefinitions:
101317
+ {
101318
+ value: new Base_FieldDefinitionArray ([
101319
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
101320
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
101321
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101322
+
101323
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
101324
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "frequency", new x_ite_Fields .SFFloat ()),
101325
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat ()),
101326
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "periodicWave", new x_ite_Fields .SFNode ()),
101327
+
101328
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime ()),
101329
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime ()),
101330
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime ()),
101331
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime ()),
101332
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
101333
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
101334
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
101335
+ ]),
101336
+ enumerable: true,
101337
+ },
101338
+ });
101339
+
101340
+ const OscillatorSource_default_ = OscillatorSource;
101341
+ ;
101342
+
101343
+ x_ite_Namespace .add ("OscillatorSource", "x_ite/Components/Sound/OscillatorSource", OscillatorSource_default_);
101344
+ /* harmony default export */ const Sound_OscillatorSource = (OscillatorSource_default_);
101345
+ ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/PeriodicWave.js
101346
+ /*******************************************************************************
101347
+ *
101348
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
101349
+ *
101350
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
101351
+ *
101352
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
101353
+ *
101354
+ * The copyright notice above does not evidence any actual of intended
101355
+ * publication of such source code, and is an unpublished work by create3000.
101356
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
101357
+ * create3000.
101358
+ *
101359
+ * No permission is granted to copy, distribute, or create derivative works from
101360
+ * the contents of this software, in whole or in part, without the prior written
101361
+ * permission of create3000.
101362
+ *
101363
+ * NON-MILITARY USE ONLY
101364
+ *
101365
+ * All create3000 software are effectively free software with a non-military use
101366
+ * restriction. It is free. Well commented source is provided. You may reuse the
101367
+ * source in any way you please with the exception anything that uses it must be
101368
+ * marked to indicate is contains 'non-military use only' components.
101369
+ *
101370
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
101371
+ *
101372
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
101373
+ *
101374
+ * This file is part of the X_ITE Project.
101375
+ *
101376
+ * X_ITE is free software: you can redistribute it and/or modify it under the
101377
+ * terms of the GNU General Public License version 3 only, as published by the
101378
+ * Free Software Foundation.
101379
+ *
101380
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
101381
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
101382
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
101383
+ * details (a copy is included in the LICENSE file that accompanied this code).
101384
+ *
101385
+ * You should have received a copy of the GNU General Public License version 3
101386
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
101387
+ * copy of the GPLv3 License.
101388
+ *
101389
+ * For Silvio, Joy and Adi.
101390
+ *
101391
+ ******************************************************************************/
101392
+
101393
+
101394
+
101395
+
101396
+
101397
+
101398
+
101399
+ function PeriodicWave (executionContext)
100678
101400
  {
100679
- Sound_X3DSoundSourceNode .call (this, executionContext);
101401
+ Sound_X3DSoundNode .call (this, executionContext);
100680
101402
 
100681
- this .addType (Base_X3DConstants .OscillatorSource);
101403
+ this .addType (Base_X3DConstants .PeriodicWave);
100682
101404
 
100683
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (),
100684
- Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
101405
+ this .real = new Float32Array (2);
101406
+ this .imag = new Float32Array (2);
100685
101407
  }
100686
101408
 
100687
- Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSoundSourceNode .prototype);
100688
-
100689
- Object .defineProperties (OscillatorSource,
101409
+ Object .assign (Object .setPrototypeOf (PeriodicWave .prototype, Sound_X3DSoundNode .prototype),
100690
101410
  {
100691
- typeName:
100692
- {
100693
- value: "OscillatorSource",
100694
- enumerable: true,
100695
- },
100696
- componentName:
100697
- {
100698
- value: "Sound",
100699
- enumerable: true,
100700
- },
100701
- containerField:
101411
+ createPeriodicWave ()
100702
101412
  {
100703
- value: "children",
100704
- enumerable: true,
100705
- },
100706
- specificationRange:
100707
- {
100708
- value: Object .freeze (["4.0", "Infinity"]),
100709
- enumerable: true,
100710
- },
100711
- fieldDefinitions:
100712
- {
100713
- value: new Base_FieldDefinitionArray ([
100714
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
100715
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
100716
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101413
+ const
101414
+ audioContext = this .getBrowser () .getAudioContext (),
101415
+ optionsReal = this ._optionsReal .shrinkToFit (),
101416
+ optionsImag = this ._optionsImag .shrinkToFit (),
101417
+ length = Math .max (optionsReal .length, optionsImag .length, 2);
100717
101418
 
100718
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
100719
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat ()),
100720
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "frequency", new x_ite_Fields .SFFloat ()),
100721
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "periodicWave", new x_ite_Fields .SFNode ()),
101419
+ if (this .real .length !== length)
101420
+ {
101421
+ this .real = new Float32Array (length);
101422
+ this .imag = new Float32Array (length);
101423
+ }
100722
101424
 
100723
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime ()),
100724
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime ()),
100725
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime ()),
100726
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime ()),
100727
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
100728
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
100729
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
100730
- ]),
100731
- enumerable: true,
101425
+ this .real .set (optionsReal);
101426
+ this .imag .set (optionsImag);
101427
+
101428
+ return audioContext .createPeriodicWave (this .real, this .imag);
100732
101429
  },
100733
101430
  });
100734
101431
 
100735
- const OscillatorSource_default_ = OscillatorSource;
100736
- ;
100737
-
100738
- x_ite_Namespace .add ("OscillatorSource", "x_ite/Components/Sound/OscillatorSource", OscillatorSource_default_);
100739
- /* harmony default export */ const Sound_OscillatorSource = (OscillatorSource_default_);
100740
- ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/PeriodicWave.js
100741
- /*******************************************************************************
100742
- *
100743
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
100744
- *
100745
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
100746
- *
100747
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
100748
- *
100749
- * The copyright notice above does not evidence any actual of intended
100750
- * publication of such source code, and is an unpublished work by create3000.
100751
- * This material contains CONFIDENTIAL INFORMATION that is the property of
100752
- * create3000.
100753
- *
100754
- * No permission is granted to copy, distribute, or create derivative works from
100755
- * the contents of this software, in whole or in part, without the prior written
100756
- * permission of create3000.
100757
- *
100758
- * NON-MILITARY USE ONLY
100759
- *
100760
- * All create3000 software are effectively free software with a non-military use
100761
- * restriction. It is free. Well commented source is provided. You may reuse the
100762
- * source in any way you please with the exception anything that uses it must be
100763
- * marked to indicate is contains 'non-military use only' components.
100764
- *
100765
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
100766
- *
100767
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
100768
- *
100769
- * This file is part of the X_ITE Project.
100770
- *
100771
- * X_ITE is free software: you can redistribute it and/or modify it under the
100772
- * terms of the GNU General Public License version 3 only, as published by the
100773
- * Free Software Foundation.
100774
- *
100775
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
100776
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
100777
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
100778
- * details (a copy is included in the LICENSE file that accompanied this code).
100779
- *
100780
- * You should have received a copy of the GNU General Public License version 3
100781
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
100782
- * copy of the GPLv3 License.
100783
- *
100784
- * For Silvio, Joy and Adi.
100785
- *
100786
- ******************************************************************************/
100787
-
100788
-
100789
-
100790
-
100791
-
100792
-
100793
-
100794
- function PeriodicWave (executionContext)
100795
- {
100796
- Sound_X3DSoundNode .call (this, executionContext);
100797
-
100798
- this .addType (Base_X3DConstants .PeriodicWave);
100799
- }
100800
-
100801
- Object .setPrototypeOf (PeriodicWave .prototype, Sound_X3DSoundNode .prototype);
100802
-
100803
101432
  Object .defineProperties (PeriodicWave,
100804
101433
  {
100805
101434
  typeName:
@@ -100917,6 +101546,7 @@ function Sound (executionContext)
100917
101546
  this ._maxBack .setUnit ("length");
100918
101547
  this ._maxFront .setUnit ("length");
100919
101548
 
101549
+ this .childNodes = [ ];
100920
101550
  this .currentTraversed = true;
100921
101551
  }
100922
101552
 
@@ -100926,13 +101556,31 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
100926
101556
  {
100927
101557
  Sound_X3DSoundNode .prototype .initialize .call (this);
100928
101558
 
101559
+ const
101560
+ audioContext = this .getBrowser () .getAudioContext (),
101561
+ splitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs: 2 }),
101562
+ mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
101563
+ gainLeftNode = new GainNode (audioContext, { gain: 0 }),
101564
+ gainRightNode = new GainNode (audioContext, { gain: 0 });
101565
+
101566
+ splitterNode .connect (gainLeftNode, 0);
101567
+ splitterNode .connect (gainRightNode, 1);
101568
+ gainLeftNode .connect (mergerNode, 0, 0);
101569
+ gainRightNode .connect (mergerNode, 0, 1);
101570
+ mergerNode .connect (audioContext .destination);
101571
+
101572
+ this .splitterNode = splitterNode;
101573
+ this .gainLeftNode = gainLeftNode;
101574
+ this .gainRightNode = gainRightNode;
101575
+
100929
101576
  this .getLive () .addInterest ("set_live__", this);
100930
101577
  this ._traversed .addInterest ("set_live__", this);
100931
101578
 
100932
- this ._source .addInterest ("set_source__", this);
101579
+ this ._source .addInterest ("set_children__", this);
101580
+ this ._children .addInterest ("set_children__", this);
100933
101581
 
100934
101582
  this .set_live__ ();
100935
- this .set_source__ ();
101583
+ this .set_children__ ();
100936
101584
  },
100937
101585
  setTraversed (value)
100938
101586
  {
@@ -100953,6 +101601,11 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
100953
101601
  {
100954
101602
  return this .currentTraversed;
100955
101603
  },
101604
+ setVolume (volume, pan = 0.5)
101605
+ {
101606
+ this .gainLeftNode .gain .value = volume * (1 - pan ** 2);
101607
+ this .gainRightNode .gain .value = volume * (1 - (1 - pan) ** 2);
101608
+ },
100956
101609
  set_live__ ()
100957
101610
  {
100958
101611
  if (this .getLive () .getValue () && this ._traversed .getValue ())
@@ -100962,22 +101615,54 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
100962
101615
  else
100963
101616
  {
100964
101617
  this .getBrowser () .sensorEvents () .removeInterest ("update", this);
101618
+ this .setVolume (0);
100965
101619
  }
100966
101620
  },
100967
- set_source__ ()
101621
+ set_children__ ()
100968
101622
  {
100969
- if (this .sourceNode)
100970
- this .sourceNode .setVolume (0);
101623
+ for (const childNode of this .childNodes)
101624
+ childNode .getAudioSource () .disconnect (this .splitterNode);
101625
+
101626
+ this .childNodes .length = 0;
100971
101627
 
100972
- this .sourceNode = Base_X3DCast (Base_X3DConstants .X3DSoundSourceNode, this ._source);
101628
+ const sourceNode = Base_X3DCast (Base_X3DConstants .X3DSoundSourceNode, this ._source);
101629
+
101630
+ if (sourceNode)
101631
+ this .childNodes .push (sourceNode);
101632
+
101633
+ for (const child of this ._children)
101634
+ {
101635
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
101636
+
101637
+ if (!childNode)
101638
+ continue;
101639
+
101640
+ const type = childNode .getType ();
101641
+
101642
+ for (let t = type .length - 1; t >= 0; -- t)
101643
+ {
101644
+ switch (type [t])
101645
+ {
101646
+ case Base_X3DConstants .X3DSoundChannelNode:
101647
+ case Base_X3DConstants .X3DSoundProcessingNode:
101648
+ case Base_X3DConstants .X3DSoundSourceNode:
101649
+ this .childNodes .push (childNode);
101650
+ break;
101651
+ default:
101652
+ continue;
101653
+ }
101654
+
101655
+ break;
101656
+ }
101657
+ }
101658
+
101659
+ for (const childNode of this .childNodes)
101660
+ childNode .getAudioSource () .connect (this .splitterNode);
100973
101661
  },
100974
101662
  update ()
100975
101663
  {
100976
- if (! this .getTraversed ())
100977
- {
100978
- if (this .sourceNode)
100979
- this .sourceNode .setVolume (0);
100980
- }
101664
+ if (!this .getTraversed ())
101665
+ this .setVolume (0);
100981
101666
 
100982
101667
  this .setTraversed (false);
100983
101668
  },
@@ -100992,31 +101677,33 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
100992
101677
  if (type !== Rendering_TraverseType .DISPLAY)
100993
101678
  return;
100994
101679
 
100995
- if (! this .sourceNode)
101680
+ if (!this .childNodes .length)
100996
101681
  return;
100997
101682
 
100998
- if (! this .sourceNode ._isActive .getValue () || this .sourceNode ._isPaused .getValue ())
100999
- return;
101683
+ // if (!this .sourceNode ._isActive .getValue () || this .sourceNode ._isPaused .getValue ())
101684
+ // return;
101000
101685
 
101001
101686
  this .setTraversed (true);
101002
101687
 
101003
101688
  const modelViewMatrix = renderObject .getModelViewMatrix () .get ();
101004
101689
 
101005
101690
  this .getEllipsoidParameter (modelViewMatrix,
101006
- Math .max (this ._maxBack .getValue (), 0),
101007
- Math .max (this ._maxFront .getValue (), 0),
101008
- max);
101691
+ Math .max (this ._maxBack .getValue (), 0),
101692
+ Math .max (this ._maxFront .getValue (), 0),
101693
+ max);
101009
101694
 
101010
- if (max .distance < 1) // Sphere radius is 1
101695
+ if (max .distance < 1) // Radius of normalized sphere is 1.
101011
101696
  {
101012
101697
  this .getEllipsoidParameter (modelViewMatrix,
101013
- Math .max (this ._minBack .getValue (), 0),
101014
- Math .max (this ._minFront .getValue (), 0),
101015
- min);
101698
+ Math .max (this ._minBack .getValue (), 0),
101699
+ Math .max (this ._minFront .getValue (), 0),
101700
+ min);
101701
+
101702
+ const pan = this .getPan (modelViewMatrix);
101016
101703
 
101017
- if (min .distance < 1) // Sphere radius is 1
101704
+ if (min .distance < 1) // Radius of normalized sphere is 1.
101018
101705
  {
101019
- this .sourceNode .setVolume (this ._intensity .getValue ());
101706
+ this .setVolume (Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1), pan);
101020
101707
  }
101021
101708
  else
101022
101709
  {
@@ -101027,12 +101714,12 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
101027
101714
  intensity = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1),
101028
101715
  volume = intensity * d;
101029
101716
 
101030
- this .sourceNode .setVolume (volume);
101717
+ this .setVolume (volume, pan);
101031
101718
  }
101032
101719
  }
101033
101720
  else
101034
101721
  {
101035
- this .sourceNode .setVolume (0);
101722
+ this .setVolume (0);
101036
101723
  }
101037
101724
  };
101038
101725
  })(),
@@ -101097,6 +101784,22 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
101097
101784
  value .distance = viewer .magnitude ();
101098
101785
  };
101099
101786
  })(),
101787
+ getPan: (function ()
101788
+ {
101789
+ const location = new Numbers_Vector3 (0, 0, 0);
101790
+
101791
+ return function (modelViewMatrix)
101792
+ {
101793
+ if (!this ._spatialize .getValue ())
101794
+ return 0.5;
101795
+
101796
+ const
101797
+ direction = modelViewMatrix .multVecMatrix (location .assign (this ._location .getValue ())) .normalize (),
101798
+ pan = Math .acos (Math_Algorithm .clamp (-direction .dot (Numbers_Vector3 .xAxis), -1, 1)) / Math .PI;
101799
+
101800
+ return pan;
101801
+ };
101802
+ })(),
101100
101803
  });
101101
101804
 
101102
101805
  Object .defineProperties (Sound,
@@ -101328,9 +102031,25 @@ function StreamAudioDestination (executionContext)
101328
102031
  Sound_X3DSoundDestinationNode .call (this, executionContext);
101329
102032
 
101330
102033
  this .addType (Base_X3DConstants .StreamAudioDestination);
102034
+
102035
+ const audioContext = this .getBrowser () .getAudioContext ();
102036
+
102037
+ this .mediaStreamDestination = audioContext .createMediaStreamDestination ();
101331
102038
  }
101332
102039
 
101333
- Object .setPrototypeOf (StreamAudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype);
102040
+ Object .assign (Object .setPrototypeOf (StreamAudioDestination .prototype, Sound_X3DSoundDestinationNode .prototype),
102041
+ {
102042
+ initialize ()
102043
+ {
102044
+ Sound_X3DSoundDestinationNode .prototype .initialize .call (this);
102045
+
102046
+ this ._streamIdentifier [0] = this .mediaStreamDestination .stream .id;
102047
+ },
102048
+ getSoundDestination ()
102049
+ {
102050
+ return this .mediaStreamDestination;
102051
+ },
102052
+ });
101334
102053
 
101335
102054
  Object .defineProperties (StreamAudioDestination,
101336
102055
  {
@@ -101362,14 +102081,14 @@ Object .defineProperties (StreamAudioDestination,
101362
102081
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101363
102082
 
101364
102083
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
101365
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "streamIdentifier", new x_ite_Fields .MFString ()),
102084
+ // new X3DFieldDefinition (X3DConstants .inputOutput, "mediaDeviceID", new Fields .SFString ()),
101366
102085
 
101367
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
102086
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
101368
102087
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
101369
102088
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
101370
102089
 
101371
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "mediaDeviceID", new x_ite_Fields .SFString ()),
101372
102090
  new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
102091
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "streamIdentifier", new x_ite_Fields .MFString ()),
101373
102092
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "children", new x_ite_Fields .MFNode ()),
101374
102093
  ]),
101375
102094
  enumerable: true,
@@ -101441,8 +102160,7 @@ function StreamAudioSource (executionContext)
101441
102160
 
101442
102161
  this .addType (Base_X3DConstants .StreamAudioSource);
101443
102162
 
101444
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (),
101445
- Base_X3DConstants .inputOutput, "speed", new x_ite_Fields .SFFloat (1));
102163
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ());
101446
102164
  }
101447
102165
 
101448
102166
  Object .setPrototypeOf (StreamAudioSource .prototype, Sound_X3DSoundSourceNode .prototype);
@@ -101593,7 +102311,7 @@ Object .defineProperties (WaveShaper,
101593
102311
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "oversample", new x_ite_Fields .SFString ("NONE")),
101594
102312
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "tailTime", new x_ite_Fields .SFTime ()),
101595
102313
 
101596
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "channelCount", new x_ite_Fields .SFInt32 ()),
102314
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()),
101597
102315
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
101598
102316
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
101599
102317
 
@@ -101781,8 +102499,9 @@ x_ite_Namespace .add ("Sound", "x_ite/Components/Sound", Components_Sound_defaul
101781
102499
  function GifMedia (gif, movieTexture)
101782
102500
  {
101783
102501
  let
101784
- cycle = 0,
101785
- loop = false;
102502
+ playbackRate = 1,
102503
+ cycle = 0,
102504
+ loop = false;
101786
102505
 
101787
102506
  Object .defineProperties (gif,
101788
102507
  {
@@ -101793,7 +102512,7 @@ function GifMedia (gif, movieTexture)
101793
102512
  if (!loop && cycle < this .cycle)
101794
102513
  return this .duration;
101795
102514
 
101796
- return movieTexture ._elapsedTime % this .duration;
102515
+ return (movieTexture ._elapsedTime * playbackRate) % this .duration;
101797
102516
  },
101798
102517
  set: Function .prototype,
101799
102518
  },
@@ -101840,6 +102559,17 @@ function GifMedia (gif, movieTexture)
101840
102559
  return Promise .resolve ();
101841
102560
  },
101842
102561
  },
102562
+ playbackRate:
102563
+ {
102564
+ get ()
102565
+ {
102566
+ return playbackRate;
102567
+ },
102568
+ set (value)
102569
+ {
102570
+ playbackRate = value;
102571
+ },
102572
+ },
101843
102573
  });
101844
102574
  }
101845
102575
 
@@ -101849,8 +102579,8 @@ const GIFMedia_default_ = GifMedia;
101849
102579
  x_ite_Namespace .add ("GIFMedia", "x_ite/Browser/Texturing/GIFMedia", GIFMedia_default_);
101850
102580
  /* harmony default export */ const GIFMedia = (GIFMedia_default_);
101851
102581
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
101852
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(757);
101853
- /* provided dependency */ var SuperGif = __webpack_require__(33);
102582
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(464);
102583
+ /* provided dependency */ var SuperGif = __webpack_require__(49);
101854
102584
  /*******************************************************************************
101855
102585
  *
101856
102586
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -101917,8 +102647,13 @@ function MovieTexture (executionContext)
101917
102647
 
101918
102648
  this .addType (Base_X3DConstants .MovieTexture);
101919
102649
 
101920
- this .video = MovieTexture_$("<video></video>");
101921
- this .urlStack = new x_ite_Fields .MFString ();
102650
+ const audioContext = this .getBrowser () .getAudioContext ();
102651
+
102652
+ this .urlStack = new x_ite_Fields .MFString ();
102653
+ this .video = MovieTexture_$("<video></video>");
102654
+ this .sourceNode = audioContext .createMediaElementSource (this .video [0]);
102655
+
102656
+ this .sourceNode .connect (this .getAudioSource ());
101922
102657
  }
101923
102658
 
101924
102659
  Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTexture2DNode .prototype),
@@ -101931,19 +102666,16 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
101931
102666
  Sound_X3DSoundSourceNode .prototype .initialize .call (this);
101932
102667
  Networking_X3DUrlObject .prototype .initialize .call (this);
101933
102668
 
101934
- this .video .on ("abort error", this .setError .bind (this));
101935
- this .video .on ("suspend stalled", this .setTimeout .bind (this));
102669
+ this ._speed .addInterest ("set_speed__", this);
101936
102670
 
101937
- this .video .prop ("crossOrigin", "Anonymous");
101938
- this .video .prop ("preload", "auto");
101939
- this .video .prop ("muted", true);
102671
+ this .video
102672
+ .on ("abort error", this .setError .bind (this))
102673
+ .on ("suspend stalled", this .setTimeout .bind (this))
102674
+ .prop ("crossOrigin", "Anonymous")
102675
+ .prop ("preload", "auto");
101940
102676
 
101941
102677
  this .requestImmediateLoad () .catch (Function .prototype);
101942
102678
  },
101943
- getElement ()
101944
- {
101945
- return this .video [0];
101946
- },
101947
102679
  set_live__ ()
101948
102680
  {
101949
102681
  Sound_X3DSoundSourceNode .prototype .set_live__ .call (this);
@@ -101956,7 +102688,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
101956
102688
  loadData ()
101957
102689
  {
101958
102690
  delete this .gif;
101959
- this .setMedia (null);
102691
+ this .setMediaElement (null);
101960
102692
  this .urlStack .setValue (this ._url);
101961
102693
  this .video .on ("canplaythrough", this .setVideo .bind (this));
101962
102694
  this .loadNext ();
@@ -102016,14 +102748,14 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
102016
102748
  },
102017
102749
  setVideo ()
102018
102750
  {
102019
- if (DEVELOPMENT)
102020
- {
102021
- if (this .URL .protocol !== "data:")
102022
- console .info (`Done loading movie '${decodeURI (this .URL .href)}'`);
102023
- }
102024
-
102025
102751
  try
102026
102752
  {
102753
+ if (DEVELOPMENT)
102754
+ {
102755
+ if (this .URL .protocol !== "data:")
102756
+ console .info (`Done loading movie '${decodeURI (this .URL .href)}'`);
102757
+ }
102758
+
102027
102759
  this .video .unbind ("canplaythrough");
102028
102760
 
102029
102761
  const
@@ -102031,12 +102763,14 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
102031
102763
  width = video .videoWidth,
102032
102764
  height = video .videoHeight;
102033
102765
 
102034
- if (! Math_Algorithm .isPowerOfTwo (width) || ! Math_Algorithm .isPowerOfTwo (height))
102766
+ if (!Math_Algorithm .isPowerOfTwo (width) || !Math_Algorithm .isPowerOfTwo (height))
102035
102767
  throw new Error ("The movie texture is a non power-of-two texture.");
102036
102768
 
102037
- this .setMedia (this .video [0]);
102769
+ this .setMediaElement (this .video [0]);
102038
102770
  this .setTexture (width, height, false, video, true);
102039
102771
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
102772
+
102773
+ this .set_speed__ ();
102040
102774
  }
102041
102775
  catch (error)
102042
102776
  {
@@ -102054,9 +102788,11 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
102054
102788
 
102055
102789
  gif .pause ();
102056
102790
 
102057
- this .setMedia (gif);
102791
+ this .setMediaElement (gif);
102058
102792
  this .setTexture (gif .get_canvas () .width, gif .get_canvas () .height, false, gif .get_frames () [0] .data, true);
102059
102793
  this .setLoadState (Base_X3DConstants .COMPLETE_STATE);
102794
+
102795
+ this .set_speed__ ();
102060
102796
  }
102061
102797
  catch (error)
102062
102798
  {
@@ -102064,6 +102800,13 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
102064
102800
  this .setError ({ type: error .message });
102065
102801
  }
102066
102802
  },
102803
+ set_speed__ ()
102804
+ {
102805
+ if (this .gif)
102806
+ this .gif .playbackRate = this ._speed .getValue ();
102807
+
102808
+ this .video [0] .playbackRate = this ._speed .getValue ();
102809
+ },
102067
102810
  set_time ()
102068
102811
  {
102069
102812
  Sound_X3DSoundSourceNode .prototype .set_time .call (this);
@@ -103008,7 +103751,7 @@ const MultiTextureTransform_default_ = MultiTextureTransform;
103008
103751
  x_ite_Namespace .add ("MultiTextureTransform", "x_ite/Components/Texturing/MultiTextureTransform", MultiTextureTransform_default_);
103009
103752
  /* harmony default export */ const Texturing_MultiTextureTransform = (MultiTextureTransform_default_);
103010
103753
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/PixelTexture.js
103011
- /* provided dependency */ var PixelTexture_$ = __webpack_require__(757);
103754
+ /* provided dependency */ var PixelTexture_$ = __webpack_require__(464);
103012
103755
  /*******************************************************************************
103013
103756
  *
103014
103757
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105162,7 +105905,7 @@ const gettext_default_ = gettext;
105162
105905
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
105163
105906
  /* harmony default export */ const locale_gettext = (gettext_default_);
105164
105907
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
105165
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(757);
105908
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(464);
105166
105909
  /*******************************************************************************
105167
105910
  *
105168
105911
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105592,7 +106335,7 @@ const TextureQuality_default_ = TextureQuality;
105592
106335
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
105593
106336
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
105594
106337
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
105595
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(757);
106338
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(464);
105596
106339
  /*******************************************************************************
105597
106340
  *
105598
106341
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105969,6 +106712,7 @@ Object .defineProperties (BrowserOptions,
105969
106712
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "ContextMenu", new x_ite_Fields .SFBool (true)),
105970
106713
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Debug", new x_ite_Fields .SFBool ()),
105971
106714
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Gravity", new x_ite_Fields .SFDouble (9.80665)),
106715
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "LoadUrlObjects", new x_ite_Fields .SFBool (true)),
105972
106716
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "LogarithmicDepthBuffer", new x_ite_Fields .SFBool ()),
105973
106717
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Notifications", new x_ite_Fields .SFBool (true)),
105974
106718
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Multisampling", new x_ite_Fields .SFInt32 (4)),
@@ -106184,7 +106928,7 @@ const RenderingProperties_default_ = RenderingProperties;
106184
106928
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
106185
106929
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
106186
106930
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
106187
- /* provided dependency */ var Notification_$ = __webpack_require__(757);
106931
+ /* provided dependency */ var Notification_$ = __webpack_require__(464);
106188
106932
  /*******************************************************************************
106189
106933
  *
106190
106934
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -106307,8 +107051,8 @@ const Notification_default_ = Notification;
106307
107051
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
106308
107052
  /* harmony default export */ const Core_Notification = (Notification_default_);
106309
107053
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
106310
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(32);
106311
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(757);
107054
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(734);
107055
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(464);
106312
107056
  /*******************************************************************************
106313
107057
  *
106314
107058
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108022,11 +108766,11 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
108022
108766
  case "angularRate":
108023
108767
  return value * this .getUnits () .get ("angle") .conversionFactor;
108024
108768
  case "area":
108025
- return value * Math .pow (this .getUnits () .get ("length") .conversionFactor, 2);
108769
+ return value * this .getUnits () .get ("length") .conversionFactor ** 2;
108026
108770
  case "speed":
108027
108771
  return value * this .getUnits () .get ("length") .conversionFactor;
108028
108772
  case "volume":
108029
- return value * Math .pow (this .getUnits () .get ("length") .conversionFactor, 3);
108773
+ return value * this .getUnits () .get ("length") .conversionFactor ** 3;
108030
108774
  }
108031
108775
 
108032
108776
  return value;
@@ -108050,11 +108794,11 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
108050
108794
  case "angularRate":
108051
108795
  return value / this .getUnits () .get ("angle") .conversionFactor;
108052
108796
  case "area":
108053
- return value / Math .pow (this .getUnits () .get ("length") .conversionFactor, 2);
108797
+ return value / this .getUnits () .get ("length") .conversionFactor ** 2;
108054
108798
  case "speed":
108055
108799
  return value / this .getUnits () .get ("length") .conversionFactor;
108056
108800
  case "volume":
108057
- return value / Math .pow (this .getUnits () .get ("length") .conversionFactor, 3);
108801
+ return value / this .getUnits () .get ("length") .conversionFactor ** 3;
108058
108802
  }
108059
108803
 
108060
108804
  return value;
@@ -109060,7 +109804,7 @@ const DataStorage_default_ = DataStorage;
109060
109804
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
109061
109805
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
109062
109806
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
109063
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(757);
109807
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(464);
109064
109808
  /*******************************************************************************
109065
109809
  *
109066
109810
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -109169,7 +109913,7 @@ function X3DCoreContext (element)
109169
109913
  .on ("load", () => browser .show ())
109170
109914
  .attr ("rel", "stylesheet")
109171
109915
  .attr ("type", "text/css")
109172
- .attr ("href", new URL ("x_ite.css", Networking_URLs .getScriptUrl ()) .href);
109916
+ .attr ("href", new URL ("x_ite.css", Networking_URLs .getScriptURL ()) .href);
109173
109917
 
109174
109918
  this [_shadow] = shadow
109175
109919
  .append (link)
@@ -111093,8 +111837,8 @@ const X3DViewer_default_ = X3DViewer;
111093
111837
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
111094
111838
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
111095
111839
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
111096
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(716);
111097
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(757);
111840
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(520);
111841
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(464);
111098
111842
  /*******************************************************************************
111099
111843
  *
111100
111844
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111966,8 +112710,8 @@ const ExamineViewer_default_ = ExamineViewer;
111966
112710
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
111967
112711
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
111968
112712
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
111969
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(716);
111970
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(757);
112713
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(520);
112714
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(464);
111971
112715
  /*******************************************************************************
111972
112716
  *
111973
112717
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -112424,7 +113168,7 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
112424
113168
 
112425
113169
  // Determine weight for rubberBandRotation.
112426
113170
 
112427
- const weight = ROTATION_SPEED_FACTOR * dt * Math .pow (rubberBandLength / (rubberBandLength + ROTATION_LIMIT), 2);
113171
+ const weight = ROTATION_SPEED_FACTOR * dt * (rubberBandLength / (rubberBandLength + ROTATION_LIMIT)) ** 2;
112428
113172
 
112429
113173
  // Determine userOrientation.
112430
113174
 
@@ -112971,8 +113715,8 @@ const FlyViewer_default_ = FlyViewer;
112971
113715
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
112972
113716
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
112973
113717
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
112974
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(716);
112975
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(757);
113718
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(520);
113719
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(464);
112976
113720
  /*******************************************************************************
112977
113721
  *
112978
113722
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -113303,8 +114047,8 @@ const NoneViewer_default_ = NoneViewer;
113303
114047
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
113304
114048
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
113305
114049
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
113306
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(716);
113307
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(757);
114050
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(520);
114051
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(464);
113308
114052
  /*******************************************************************************
113309
114053
  *
113310
114054
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114127,13 +114871,13 @@ x_ite_Namespace .add ("X3DNavigationContext", "x_ite/Browser/Navigation/X3DNavig
114127
114871
 
114128
114872
 
114129
114873
  const
114874
+ _baseURL = Symbol (),
114130
114875
  _loadingDisplay = Symbol (),
114131
114876
  _loadingTotal = Symbol (),
114132
114877
  X3DNetworkingContext_loadingObjects = Symbol (),
114133
114878
  _loading = Symbol (),
114134
- _baseURL = Symbol (),
114135
- _defaultScene = Symbol (),
114136
- _set_loadCount = Symbol ();
114879
+ _set_loadCount = Symbol (),
114880
+ _defaultScene = Symbol ();
114137
114881
 
114138
114882
  function getBaseURI (element)
114139
114883
  {
@@ -114150,11 +114894,11 @@ function X3DNetworkingContext ()
114150
114894
  {
114151
114895
  this .addChildObjects (Base_X3DConstants .outputOnly, "loadCount", new x_ite_Fields .SFInt32 ());
114152
114896
 
114897
+ this [_baseURL] = getBaseURI (this .getElement ());
114153
114898
  this [_loadingDisplay] = 0;
114154
114899
  this [_loadingTotal] = 0;
114155
114900
  this [X3DNetworkingContext_loadingObjects] = new Set ();
114156
114901
  this [_loading] = false;
114157
- this [_baseURL] = getBaseURI (this .getElement ());
114158
114902
  }
114159
114903
 
114160
114904
  Object .assign (X3DNetworkingContext .prototype,
@@ -114179,19 +114923,6 @@ Object .assign (X3DNetworkingContext .prototype,
114179
114923
 
114180
114924
  this [_baseURL] = url .protocol .match (/^(?:data|blob):$/) ? base : url .href;
114181
114925
  },
114182
- getDefaultScene ()
114183
- {
114184
- // Inline node's empty scene.
114185
-
114186
- this [_defaultScene] = this .createScene ();
114187
- this [_defaultScene] .setLive (true);
114188
-
114189
- this .getDefaultScene = function () { return this [_defaultScene]; };
114190
-
114191
- Object .defineProperty (this, "getDefaultScene", { enumerable: false });
114192
-
114193
- return this [_defaultScene];
114194
- },
114195
114926
  getBrowserLoading ()
114196
114927
  {
114197
114928
  return this [_loading];
@@ -114298,6 +115029,19 @@ Object .assign (X3DNetworkingContext .prototype,
114298
115029
 
114299
115030
  this [_loadingDisplay] = loadingDisplay;
114300
115031
  },
115032
+ getDefaultScene ()
115033
+ {
115034
+ // Inline node's empty scene.
115035
+
115036
+ this [_defaultScene] = this .createScene ();
115037
+ this [_defaultScene] .setLive (true);
115038
+
115039
+ this .getDefaultScene = function () { return this [_defaultScene]; };
115040
+
115041
+ Object .defineProperty (this, "getDefaultScene", { enumerable: false });
115042
+
115043
+ return this [_defaultScene];
115044
+ },
114301
115045
  });
114302
115046
 
114303
115047
  const X3DNetworkingContext_default_ = X3DNetworkingContext;
@@ -114443,8 +115187,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
114443
115187
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
114444
115188
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
114445
115189
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
114446
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(716);
114447
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(757);
115190
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(520);
115191
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(464);
114448
115192
  /*******************************************************************************
114449
115193
  *
114450
115194
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115722,8 +116466,8 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
115722
116466
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
115723
116467
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
115724
116468
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
115725
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(757);
115726
- /* provided dependency */ var ResizeSensor = __webpack_require__(833);
116469
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(464);
116470
+ /* provided dependency */ var ResizeSensor = __webpack_require__(153);
115727
116471
  /*******************************************************************************
115728
116472
  *
115729
116473
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116395,7 +117139,7 @@ Object .assign (X3DShapeContext .prototype,
116395
117139
  getLinetypeTexture ()
116396
117140
  {
116397
117141
  this [_linetypeTextures] = new Texturing_ImageTexture (this .getPrivateScene ());
116398
- this [_linetypeTextures] ._url [0] = Networking_URLs .getLinetypeUrl ();
117142
+ this [_linetypeTextures] ._url [0] = Networking_URLs .getLinetypeURL ();
116399
117143
  this [_linetypeTextures] ._textureProperties = this .getLineFillTextureProperties ();
116400
117144
  this [_linetypeTextures] .setPrivate (true);
116401
117145
  this [_linetypeTextures] .setup ();
@@ -116415,7 +117159,7 @@ Object .assign (X3DShapeContext .prototype,
116415
117159
 
116416
117160
  hatchStyleTexture = this [_hatchStyleTextures] [index] = new Texturing_ImageTexture (this .getPrivateScene ());
116417
117161
 
116418
- hatchStyleTexture ._url [0] = Networking_URLs .getHatchingUrl (index);
117162
+ hatchStyleTexture ._url [0] = Networking_URLs .getHatchingURL (index);
116419
117163
  hatchStyleTexture ._textureProperties = this .getLineFillTextureProperties ();
116420
117164
  hatchStyleTexture .setPrivate (true);
116421
117165
  hatchStyleTexture .setup ();
@@ -116530,12 +117274,65 @@ x_ite_Namespace .add ("X3DShapeContext", "x_ite/Browser/Shape/X3DShapeContext",
116530
117274
 
116531
117275
 
116532
117276
 
117277
+ const
117278
+ _audioContext = Symbol (),
117279
+ _defaultPeriodicWave = Symbol ();
117280
+
116533
117281
  function X3DSoundContext ()
116534
117282
  {
116535
- this .addChildObjects (Base_X3DConstants .outputOnly, "volume", new x_ite_Fields .SFFloat (1),
116536
- Base_X3DConstants .outputOnly, "mute", new x_ite_Fields .SFBool ());
117283
+ this [_audioContext] = new AudioContext ();
116537
117284
  }
116538
117285
 
117286
+ Object .assign (X3DSoundContext .prototype,
117287
+ {
117288
+ initialize ()
117289
+ {
117290
+ this .startAudioElement (this [_audioContext], "resume");
117291
+ },
117292
+ getAudioContext ()
117293
+ {
117294
+ return this [_audioContext];
117295
+ },
117296
+ getDefaultPeriodicWave ()
117297
+ {
117298
+ this [_defaultPeriodicWave] = new Sound_PeriodicWave (this .getPrivateScene ());
117299
+ this [_defaultPeriodicWave] .setPrivate (true);
117300
+ this [_defaultPeriodicWave] .setup ();
117301
+
117302
+ this .getDefaultPeriodicWave = function () { return this [_defaultPeriodicWave]; };
117303
+
117304
+ Object .defineProperty (this, "getDefaultPeriodicWave", { enumerable: false });
117305
+
117306
+ return this [_defaultPeriodicWave];
117307
+ },
117308
+ startAudioElement (audioElement, functionName = "play")
117309
+ {
117310
+ const id = `X3DSoundContext-${Base_X3DObject .getId (audioElement)}`;
117311
+
117312
+ const events = [
117313
+ "blur",
117314
+ "click",
117315
+ "contextmenu",
117316
+ "dblclick",
117317
+ "focus",
117318
+ "keydown",
117319
+ "keyup",
117320
+ "mousedown",
117321
+ "mouseup",
117322
+ "pointerup",
117323
+ "touchend",
117324
+ ]
117325
+ .map (event => `${event}.${id}`);
117326
+
117327
+ this .getElement () .on (events .join (" "), event =>
117328
+ {
117329
+ audioElement [functionName] ()
117330
+ .then (() => this .getElement () .off (`.${id}`))
117331
+ .catch (Function .prototype);
117332
+ });
117333
+ },
117334
+ });
117335
+
116539
117336
  const X3DSoundContext_default_ = X3DSoundContext;
116540
117337
  ;
116541
117338
 
@@ -117951,7 +118748,7 @@ const Components_default_ = Components;
117951
118748
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
117952
118749
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
117953
118750
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
117954
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(757);
118751
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(464);
117955
118752
  /*******************************************************************************
117956
118753
  * MIT License
117957
118754
  *
@@ -119089,7 +119886,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
119089
119886
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
119090
119887
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
119091
119888
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
119092
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(757);
119889
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(464);
119093
119890
  /*******************************************************************************
119094
119891
  *
119095
119892
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119376,6 +120173,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
119376
120173
  break;
119377
120174
  }
119378
120175
  case "BROWSER":
120176
+ case "MODULE":
119379
120177
  {
119380
120178
  await import (/* webpackIgnore: true */ providerURL);
119381
120179
  break;
@@ -120169,7 +120967,7 @@ const X3DBrowser_default_ = X3DBrowser;
120169
120967
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
120170
120968
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
120171
120969
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
120172
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(757);
120970
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(464);
120173
120971
  /*******************************************************************************
120174
120972
  *
120175
120973
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120301,8 +121099,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
120301
121099
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
120302
121100
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
120303
121101
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
120304
- /* provided dependency */ var jquery_$ = __webpack_require__(757);
120305
- /* provided dependency */ var pako = __webpack_require__(308);
121102
+ /* provided dependency */ var jquery_$ = __webpack_require__(464);
121103
+ /* provided dependency */ var pako = __webpack_require__(644);
120306
121104
  Object .assign (jquery_$,
120307
121105
  {
120308
121106
  decodeText (input)
@@ -120327,9 +121125,17 @@ Object .assign (jquery_$,
120327
121125
  {
120328
121126
  return string [0] .toLowerCase () + string .slice (1);
120329
121127
  },
120330
- try (callback)
121128
+ try (callback, logError = false)
120331
121129
  {
120332
- try { return callback () } catch { }
121130
+ try
121131
+ {
121132
+ return callback ();
121133
+ }
121134
+ catch (error)
121135
+ {
121136
+ if (logError)
121137
+ console .error (error .message);
121138
+ }
120333
121139
  },
120334
121140
  enum (object, property, defaultValue)
120335
121141
  {
@@ -120341,9 +121147,13 @@ Object .assign (jquery_$,
120341
121147
  // function iife (target, key, descriptor)
120342
121148
  // {
120343
121149
  // descriptor .value = descriptor .value ();
120344
-
121150
+ //
120345
121151
  // return descriptor;
120346
121152
  // }
121153
+ //
121154
+ // class C {
121155
+ // @iffe fn (... args) { return function () { }; }
121156
+ // }
120347
121157
 
120348
121158
  Object .assign (jquery_$.fn,
120349
121159
  {
@@ -120367,14 +121177,14 @@ const jquery_default_ = jquery_$;
120367
121177
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
120368
121178
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
120369
121179
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
120370
- /* provided dependency */ var libtess_libtess = __webpack_require__(986);
121180
+ /* provided dependency */ var libtess_libtess = __webpack_require__(602);
120371
121181
  const libtess_default_ = libtess_libtess;
120372
121182
  ;
120373
121183
 
120374
121184
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
120375
121185
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
120376
121186
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
120377
- /* provided dependency */ var X3D_$ = __webpack_require__(757);
121187
+ /* provided dependency */ var X3D_$ = __webpack_require__(464);
120378
121188
  /*******************************************************************************
120379
121189
  *
120380
121190
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120768,7 +121578,7 @@ x_ite_Namespace .add ("shim", "shim", shim_default_);
120768
121578
 
120769
121579
  // Assign X3D to global namespace.
120770
121580
 
120771
- window [Symbol .for ("X_ITE.X3D-8.11.17")] = x_ite_X3D;
121581
+ window [Symbol .for ("X_ITE.X3D-8.12.0")] = x_ite_X3D;
120772
121582
 
120773
121583
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
120774
121584