x_ite 9.3.0 → 9.3.2

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 (50) hide show
  1. package/dist/assets/components/Annotation.js +13 -13
  2. package/dist/assets/components/Annotation.min.js +1 -1
  3. package/dist/assets/components/CADGeometry.js +16 -16
  4. package/dist/assets/components/CADGeometry.min.js +1 -1
  5. package/dist/assets/components/CubeMapTexturing.js +25 -25
  6. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  7. package/dist/assets/components/DIS.js +13 -13
  8. package/dist/assets/components/DIS.min.js +1 -1
  9. package/dist/assets/components/EventUtilities.js +9 -9
  10. package/dist/assets/components/EventUtilities.min.js +1 -1
  11. package/dist/assets/components/Geometry2D.js +31 -23
  12. package/dist/assets/components/Geometry2D.min.js +1 -1
  13. package/dist/assets/components/Geospatial.js +36 -36
  14. package/dist/assets/components/Geospatial.min.js +1 -1
  15. package/dist/assets/components/HAnim.js +23 -23
  16. package/dist/assets/components/HAnim.min.js +1 -1
  17. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  18. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  19. package/dist/assets/components/Layout.js +27 -27
  20. package/dist/assets/components/Layout.min.js +1 -1
  21. package/dist/assets/components/NURBS.js +23 -23
  22. package/dist/assets/components/NURBS.min.js +1 -1
  23. package/dist/assets/components/ParticleSystems.js +31 -28
  24. package/dist/assets/components/ParticleSystems.min.js +1 -1
  25. package/dist/assets/components/Picking.js +19 -19
  26. package/dist/assets/components/Picking.min.js +1 -1
  27. package/dist/assets/components/RigidBodyPhysics.js +20 -20
  28. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  29. package/dist/assets/components/Scripting.js +38 -38
  30. package/dist/assets/components/Scripting.min.js +1 -1
  31. package/dist/assets/components/Text.js +28 -26
  32. package/dist/assets/components/Text.min.js +1 -1
  33. package/dist/assets/components/TextureProjection.js +15 -15
  34. package/dist/assets/components/TextureProjection.min.js +1 -1
  35. package/dist/assets/components/Texturing3D.js +30 -30
  36. package/dist/assets/components/Texturing3D.min.js +1 -1
  37. package/dist/assets/components/VolumeRendering.js +36 -28
  38. package/dist/assets/components/VolumeRendering.min.js +1 -1
  39. package/dist/assets/components/X_ITE.js +8 -8
  40. package/dist/assets/components/X_ITE.min.js +1 -1
  41. package/dist/assets/lib/draco_decoder_gltf.js +1 -1
  42. package/dist/assets/lib/libktx.js +1 -1
  43. package/dist/x_ite.css +1 -1
  44. package/dist/x_ite.d.ts +4 -0
  45. package/dist/x_ite.js +1580 -807
  46. package/dist/x_ite.min.js +1 -1
  47. package/dist/x_ite.min.mjs +1 -1
  48. package/dist/x_ite.mjs +1580 -807
  49. package/dist/x_ite.zip +0 -0
  50. package/package.json +2 -2
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v9.3.0 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v9.3.2 */(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,10 +11,10 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 944:
14
+ /***/ 403:
15
15
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
16
16
 
17
- /* provided dependency */ var jQuery = __webpack_require__(52);
17
+ /* provided dependency */ var jQuery = __webpack_require__(183);
18
18
  /**
19
19
  * @preserve jquery.fullscreen 1.1.5
20
20
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -210,7 +210,7 @@ installFullScreenHandlers();
210
210
 
211
211
  /***/ }),
212
212
 
213
- /***/ 82:
213
+ /***/ 287:
214
214
  /***/ ((module, exports, __webpack_require__) => {
215
215
 
216
216
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -224,7 +224,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
224
224
  (function (factory) {
225
225
  if ( true ) {
226
226
  // AMD. Register as an anonymous module.
227
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(52)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
227
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(183)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
228
228
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
229
229
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
230
230
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -435,7 +435,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
435
435
 
436
436
  /***/ }),
437
437
 
438
- /***/ 52:
438
+ /***/ 183:
439
439
  /***/ (function(module, exports) {
440
440
 
441
441
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11159,7 +11159,7 @@ return jQuery;
11159
11159
 
11160
11160
  /***/ }),
11161
11161
 
11162
- /***/ 177:
11162
+ /***/ 972:
11163
11163
  /***/ ((module) => {
11164
11164
 
11165
11165
  /**
@@ -15938,7 +15938,7 @@ if (true) {
15938
15938
 
15939
15939
  /***/ }),
15940
15940
 
15941
- /***/ 776:
15941
+ /***/ 935:
15942
15942
  /***/ (function(__unused_webpack_module, exports) {
15943
15943
 
15944
15944
 
@@ -19183,7 +19183,7 @@ if (true) {
19183
19183
 
19184
19184
  /***/ }),
19185
19185
 
19186
- /***/ 247:
19186
+ /***/ 432:
19187
19187
  /***/ (function(module, exports) {
19188
19188
 
19189
19189
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20311,7 +20311,7 @@ Object .defineProperty (Namespace, "add",
20311
20311
  }
20312
20312
  else
20313
20313
  {
20314
- const X3D = window [Symbol .for ("X_ITE.X3D-9.3.0")];
20314
+ const X3D = window [Symbol .for ("X_ITE.X3D-9.3.2")];
20315
20315
 
20316
20316
  if (X3D)
20317
20317
  X3D [name] = module;
@@ -20541,10 +20541,12 @@ const Algorithm =
20541
20541
  {
20542
20542
  radians (value)
20543
20543
  {
20544
+ // Convert degrees to radians.
20544
20545
  return value * (Math .PI / 180);
20545
20546
  },
20546
20547
  degrees (value)
20547
20548
  {
20549
+ // Convert radians to degrees.
20548
20550
  return value * (180 / Math .PI);
20549
20551
  },
20550
20552
  random (min, max)
@@ -22998,8 +23000,8 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22998
23000
 
22999
23001
  for (const field of this [_fieldInterests])
23000
23002
  {
23001
- if (event .has (field))
23002
- continue;
23003
+ if (event .has (field))
23004
+ continue;
23003
23005
 
23004
23006
  if (first)
23005
23007
  {
@@ -29189,13 +29191,12 @@ const SFNode_handler =
29189
29191
  return value;
29190
29192
 
29191
29193
  const
29192
- node = target .getValue (),
29193
- field = node .getField (key),
29194
- accessType = field .getAccessType ();
29194
+ node = target .getValue (),
29195
+ field = node .getField (key);
29195
29196
 
29196
29197
  // Specification conform would be: accessType & X3DConstants .outputOnly.
29197
29198
  // But we allow read access to plain fields, too.
29198
- if (accessType === Base_X3DConstants .inputOnly)
29199
+ if (field .getAccessType () === Base_X3DConstants .inputOnly)
29199
29200
  return undefined;
29200
29201
 
29201
29202
  return field .valueOf ();
@@ -29395,6 +29396,15 @@ Object .assign (Object .setPrototypeOf (SFNode .prototype, Base_X3DField .protot
29395
29396
 
29396
29397
  throw new Error ("SFNode.getNodeType: node is null.");
29397
29398
  },
29399
+ getFieldDefinition (name)
29400
+ {
29401
+ const fieldDefinition = this .getFieldDefinitions () .get (name);
29402
+
29403
+ if (fieldDefinition)
29404
+ return fieldDefinition;
29405
+
29406
+ throw new Error (`Unknown field '${name}' in node class ${this .getNodeTypeName ()}.`);
29407
+ },
29398
29408
  getFieldDefinitions ()
29399
29409
  {
29400
29410
  const
@@ -31098,7 +31108,7 @@ function X3DObjectArrayField (values)
31098
31108
  this [X3DObjectArrayField_proxy] = proxy;
31099
31109
 
31100
31110
  for (const value of values)
31101
- this .push (value);
31111
+ this .push (value);
31102
31112
 
31103
31113
  return proxy;
31104
31114
  }
@@ -31677,7 +31687,7 @@ function X3DTypedArrayField (values)
31677
31687
  }
31678
31688
 
31679
31689
  for (const value of values)
31680
- this .push (value);
31690
+ this .push (value);
31681
31691
 
31682
31692
  return proxy;
31683
31693
  }
@@ -32477,8 +32487,19 @@ function createValue (target, index, components, valueType)
32477
32487
  internalValue = value .getValue (),
32478
32488
  i = index * components;
32479
32489
 
32480
- value .addEvent = addEvent .bind (target, i, components, internalValue);
32481
- value .getValue = getValue .bind (target, i, components, internalValue);
32490
+ Object .defineProperties (value,
32491
+ {
32492
+ addEvent:
32493
+ {
32494
+ value: addEvent .bind (target, i, components, internalValue),
32495
+ configurable: true,
32496
+ },
32497
+ getValue:
32498
+ {
32499
+ value: getValue .bind (target, i, components, internalValue),
32500
+ configurable: true,
32501
+ },
32502
+ });
32482
32503
 
32483
32504
  return value;
32484
32505
  }
@@ -32818,8 +32839,8 @@ Object .assign (Object .setPrototypeOf (MFNode .prototype, Base_X3DObjectArrayFi
32818
32839
  else
32819
32840
  {
32820
32841
  generator .string += '[';
32821
- generator .string += generator .TidySpace ();
32822
- generator .string += ']';
32842
+ generator .string += generator .TidySpace ();
32843
+ generator .string += ']';
32823
32844
  }
32824
32845
  },
32825
32846
  dispose ()
@@ -33171,10 +33192,10 @@ Object .assign (Object .setPrototypeOf (SFImage .prototype, Base_X3DField .proto
33171
33192
  },
33172
33193
  *[Symbol .iterator] ()
33173
33194
  {
33174
- yield this .width;
33175
- yield this .height;
33176
- yield this .comp;
33177
- yield this .array;
33195
+ yield this .width;
33196
+ yield this .height;
33197
+ yield this .comp;
33198
+ yield* this .array;
33178
33199
  },
33179
33200
  copy ()
33180
33201
  {
@@ -33783,7 +33804,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33783
33804
  /// Sets the own live state of this node. Setting the live state to false
33784
33805
  /// temporarily disables this node completely.
33785
33806
 
33786
- this [_live] = value .valueOf ();
33807
+ this [_live] = !!value .valueOf ();
33787
33808
 
33788
33809
  this [_set_live__] ();
33789
33810
  },
@@ -33912,7 +33933,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33912
33933
  {
33913
33934
  get () { return field; },
33914
33935
  set (value) { field .setValue (value); },
33915
- configurable: true,
33936
+ configurable: true,
33916
33937
  });
33917
33938
  },
33918
33939
  addAlias (alias, field)
@@ -34225,7 +34246,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34225
34246
  x_ite_Namespace .add ("X3DBaseNode", "x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34226
34247
  /* harmony default export */ const Base_X3DBaseNode = (X3DBaseNode_default_);
34227
34248
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Legacy.js
34228
- /* provided dependency */ var $ = __webpack_require__(52);
34249
+ /* provided dependency */ var $ = __webpack_require__(183);
34229
34250
  /*******************************************************************************
34230
34251
  *
34231
34252
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34362,7 +34383,7 @@ x_ite_Namespace .add ("Legacy", "x_ite/Browser/Legacy", Legacy_default_);
34362
34383
  *
34363
34384
  ******************************************************************************/
34364
34385
 
34365
- const BROWSER_VERSION_default_ = "9.3.0";
34386
+ const BROWSER_VERSION_default_ = "9.3.2";
34366
34387
  ;
34367
34388
 
34368
34389
  x_ite_Namespace .add ("BROWSER_VERSION", "x_ite/BROWSER_VERSION", BROWSER_VERSION_default_);
@@ -34419,6 +34440,9 @@ x_ite_Namespace .add ("BROWSER_VERSION", "x_ite/BROWSER_VERSION", BROWSER_VERSIO
34419
34440
 
34420
34441
 
34421
34442
 
34443
+
34444
+ const _metaDataCallbacks = Symbol ();
34445
+
34422
34446
  function X3DNode (executionContext)
34423
34447
  {
34424
34448
  Base_X3DBaseNode .call (this, executionContext);
@@ -34601,6 +34625,350 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34601
34625
  return null;
34602
34626
  },
34603
34627
  traverse () { },
34628
+ hasMetaData (path)
34629
+ {
34630
+ const names = path .split ("/");
34631
+
34632
+ if (names .length < 2)
34633
+ return false;
34634
+
34635
+ const
34636
+ last = names .pop (),
34637
+ metadataSet = this .getMetadataSet (names),
34638
+ metadataObject = metadataSet ?.getValue () .getMetaValue (last);
34639
+
34640
+ return !!metadataObject;
34641
+ },
34642
+ getMetaData (path, field)
34643
+ {
34644
+ const names = path .split ("/");
34645
+
34646
+ if (names .length < 2)
34647
+ return;
34648
+
34649
+ const
34650
+ last = names .pop (),
34651
+ metadataSet = this .getMetadataSet (names),
34652
+ metadataObject = metadataSet ?.getValue () .getMetaValue (last);
34653
+
34654
+ if (field instanceof Base_X3DField)
34655
+ {
34656
+ if (!metadataObject)
34657
+ return field;
34658
+
34659
+ switch (field .getType ())
34660
+ {
34661
+ case Base_X3DConstants .SFBool:
34662
+ case Base_X3DConstants .SFDouble:
34663
+ case Base_X3DConstants .SFFloat:
34664
+ case Base_X3DConstants .SFInt32:
34665
+ case Base_X3DConstants .SFString:
34666
+ case Base_X3DConstants .SFTime:
34667
+ {
34668
+ field .setValue (metadataObject .value [0]);
34669
+ break;
34670
+ }
34671
+ case Base_X3DConstants .SFColor:
34672
+ case Base_X3DConstants .SFColorRGBA:
34673
+ case Base_X3DConstants .SFMatrix3d:
34674
+ case Base_X3DConstants .SFMatrix3f:
34675
+ case Base_X3DConstants .SFMatrix4d:
34676
+ case Base_X3DConstants .SFMatrix4f:
34677
+ case Base_X3DConstants .SFRotation:
34678
+ case Base_X3DConstants .SFVec2d:
34679
+ case Base_X3DConstants .SFVec2f:
34680
+ case Base_X3DConstants .SFVec3d:
34681
+ case Base_X3DConstants .SFVec3f:
34682
+ case Base_X3DConstants .SFVec4d:
34683
+ case Base_X3DConstants .SFVec4f:
34684
+ {
34685
+ const value = metadataObject .value;
34686
+
34687
+ let i = 0;
34688
+
34689
+ for (const key in field)
34690
+ field [key] = value [i ++];
34691
+
34692
+ break;
34693
+ }
34694
+ case Base_X3DConstants .SFImage:
34695
+ {
34696
+ const
34697
+ value = metadataObject .value,
34698
+ array = field .array;
34699
+
34700
+ field .width = value [0];
34701
+ field .height = value [1];
34702
+ field .comp = value [2];
34703
+
34704
+ const l = array .length;
34705
+
34706
+ for (let i = 0; i < l; ++ i)
34707
+ array [i] = value [3 + i];
34708
+
34709
+ break;
34710
+ }
34711
+ case Base_X3DConstants .SFNode:
34712
+ case Base_X3DConstants .MFNode:
34713
+ {
34714
+ throw new Error ("SFNode and MFNode are not supported as metadata value.");
34715
+ }
34716
+ case Base_X3DConstants .MFBool:
34717
+ case Base_X3DConstants .MFDouble:
34718
+ case Base_X3DConstants .MFFloat:
34719
+ case Base_X3DConstants .MFInt32:
34720
+ case Base_X3DConstants .MFString:
34721
+ case Base_X3DConstants .MFTime:
34722
+ {
34723
+ field .length = 0;
34724
+
34725
+ for (const v of metadataObject .value)
34726
+ field .push (v);
34727
+
34728
+ break;
34729
+ }
34730
+ case Base_X3DConstants .MFColor:
34731
+ case Base_X3DConstants .MFColorRGBA:
34732
+ case Base_X3DConstants .MFMatrix3d:
34733
+ case Base_X3DConstants .MFMatrix3f:
34734
+ case Base_X3DConstants .MFMatrix4d:
34735
+ case Base_X3DConstants .MFMatrix4f:
34736
+ case Base_X3DConstants .MFRotation:
34737
+ case Base_X3DConstants .MFVec2d:
34738
+ case Base_X3DConstants .MFVec2f:
34739
+ case Base_X3DConstants .MFVec3d:
34740
+ case Base_X3DConstants .MFVec3f:
34741
+ case Base_X3DConstants .MFVec4d:
34742
+ case Base_X3DConstants .MFVec4f:
34743
+ {
34744
+ const
34745
+ value = metadataObject .value,
34746
+ length = value .length;
34747
+
34748
+ field .length = 0;
34749
+
34750
+ for (let i = 0; i < length;)
34751
+ {
34752
+ const f = field [field .length];
34753
+
34754
+ for (const key in f)
34755
+ f [key] = value [i ++];
34756
+ }
34757
+
34758
+ break;
34759
+ }
34760
+ case Base_X3DConstants .MFImage:
34761
+ {
34762
+ const
34763
+ value = metadataObject .value,
34764
+ length = value .length;
34765
+
34766
+ field .length = 0;
34767
+
34768
+ for (let i = 0; i < length;)
34769
+ {
34770
+ const
34771
+ f = field [field .length],
34772
+ a = f .array;
34773
+
34774
+ f .width = value [i ++];
34775
+ f .height = value [i ++];
34776
+ f .comp = value [i ++];
34777
+
34778
+ const l = a .length;
34779
+
34780
+ for (let k = 0; k < l; ++ k)
34781
+ a [k] = value [i ++];
34782
+ }
34783
+
34784
+ break;
34785
+ }
34786
+ }
34787
+
34788
+ return field;
34789
+ }
34790
+
34791
+ return metadataObject ? Array .from (metadataObject .value) : [ ];
34792
+ },
34793
+ setMetaData (path, value)
34794
+ {
34795
+ const names = path .split ("/");
34796
+
34797
+ if (names .length < 2)
34798
+ return;
34799
+
34800
+ const
34801
+ last = names .pop (),
34802
+ metadataSet = this .getMetadataSet (names, true);
34803
+
34804
+ if (value instanceof Base_X3DField)
34805
+ {
34806
+ const field = value;
34807
+
34808
+ switch (value .getType ())
34809
+ {
34810
+ case Base_X3DConstants .SFBool:
34811
+ case Base_X3DConstants .SFDouble:
34812
+ case Base_X3DConstants .SFFloat:
34813
+ case Base_X3DConstants .SFInt32:
34814
+ case Base_X3DConstants .SFString:
34815
+ case Base_X3DConstants .SFTime:
34816
+ {
34817
+ value = [field .valueOf ()];
34818
+ break;
34819
+ }
34820
+ case Base_X3DConstants .SFNode:
34821
+ case Base_X3DConstants .MFNode:
34822
+ throw new Error ("SFNode and MFNode are not supported as metadata value.");
34823
+ default:
34824
+ {
34825
+ value = Array .from (field, f => f instanceof Base_X3DField ? Array .from (f) : f) .flat ();
34826
+ break;
34827
+ }
34828
+ }
34829
+
34830
+ switch (field .getType ())
34831
+ {
34832
+ case Base_X3DConstants .SFBool:
34833
+ case Base_X3DConstants .MFBool:
34834
+ value .type = "boolean";
34835
+ break;
34836
+ case Base_X3DConstants .SFDouble:
34837
+ case Base_X3DConstants .SFMatrix3d:
34838
+ case Base_X3DConstants .SFMatrix4d:
34839
+ case Base_X3DConstants .SFRotation:
34840
+ case Base_X3DConstants .SFTime:
34841
+ case Base_X3DConstants .SFVec2d:
34842
+ case Base_X3DConstants .SFVec3d:
34843
+ case Base_X3DConstants .SFVec4d:
34844
+ case Base_X3DConstants .MFDouble:
34845
+ case Base_X3DConstants .MFMatrix3d:
34846
+ case Base_X3DConstants .MFMatrix4d:
34847
+ case Base_X3DConstants .MFRotation:
34848
+ case Base_X3DConstants .MFTime:
34849
+ case Base_X3DConstants .MFVec2d:
34850
+ case Base_X3DConstants .MFVec3d:
34851
+ case Base_X3DConstants .MFVec4d:
34852
+ value .type = "double";
34853
+ break;
34854
+ case Base_X3DConstants .SFColor:
34855
+ case Base_X3DConstants .SFColorRGBA:
34856
+ case Base_X3DConstants .SFFloat:
34857
+ case Base_X3DConstants .SFMatrix3f:
34858
+ case Base_X3DConstants .SFMatrix4f:
34859
+ case Base_X3DConstants .SFVec2f:
34860
+ case Base_X3DConstants .SFVec3f:
34861
+ case Base_X3DConstants .SFVec4f:
34862
+ case Base_X3DConstants .MFColor:
34863
+ case Base_X3DConstants .MFColorRGBA:
34864
+ case Base_X3DConstants .MFFloat:
34865
+ case Base_X3DConstants .MFMatrix3f:
34866
+ case Base_X3DConstants .MFMatrix4f:
34867
+ case Base_X3DConstants .MFVec2f:
34868
+ case Base_X3DConstants .MFVec3f:
34869
+ case Base_X3DConstants .MFVec4f:
34870
+ value .type = "float";
34871
+ break;
34872
+ case Base_X3DConstants .SFInt32:
34873
+ case Base_X3DConstants .SFImage:
34874
+ case Base_X3DConstants .MFInt32:
34875
+ case Base_X3DConstants .MFImage:
34876
+ value .type = "integer";
34877
+ break;
34878
+ case Base_X3DConstants .SFString:
34879
+ case Base_X3DConstants .MFString:
34880
+ value .type = "string";
34881
+ break;
34882
+ }
34883
+ }
34884
+
34885
+ metadataSet .getValue () .setMetaValue (last, value);
34886
+
34887
+ this .processMetaDataCallback (path);
34888
+ },
34889
+ removeMetaData (path)
34890
+ {
34891
+ const names = path .split ("/");
34892
+
34893
+ if (names .length < 2)
34894
+ return;
34895
+
34896
+ function removeMetaData (metadataSet, names)
34897
+ {
34898
+ if (!metadataSet)
34899
+ return false;
34900
+
34901
+ const name = names .shift ();
34902
+
34903
+ if (!names .length || removeMetaData (metadataSet .getValue () .getMetadataObject ("MetadataSet", name), names))
34904
+ {
34905
+ metadataSet .getValue () .removeMetaValue (name);
34906
+ }
34907
+
34908
+ return !metadataSet .value .length;
34909
+ }
34910
+
34911
+ if (removeMetaData (this .getMetadataSet ([names .shift ()]), names))
34912
+ this ._metadata = null;
34913
+ },
34914
+ getMetadataSet (names, create = false)
34915
+ {
34916
+ const name = names .shift ();
34917
+
34918
+ let metadataSet = this ._metadata .valueOf ();
34919
+
34920
+ if (metadataSet ?.getNodeTypeName () !== "MetadataSet" || metadataSet ?.name !== name)
34921
+ {
34922
+ if (!create)
34923
+ return null;
34924
+
34925
+ this ._metadata = this .getExecutionContext () .createNode ("MetadataSet");
34926
+ metadataSet = this ._metadata .valueOf ();
34927
+
34928
+ metadataSet .reference = this .getBrowser () .getBrowserOption ("MetadataReference");
34929
+ metadataSet .name = name;
34930
+ }
34931
+
34932
+ for (const name of names)
34933
+ metadataSet = metadataSet .getValue () .getMetadataObject ("MetadataSet", name, create);
34934
+
34935
+ return metadataSet;
34936
+ },
34937
+ [_metaDataCallbacks]: new Map (),
34938
+ addMetaDataCallback (key, path, callback)
34939
+ {
34940
+ if (!this .hasOwnProperty (_metaDataCallbacks))
34941
+ this [_metaDataCallbacks] = new Map ();
34942
+
34943
+ let map = this [_metaDataCallbacks] .get (path);
34944
+
34945
+ if (!map)
34946
+ this [_metaDataCallbacks] .set (path, map = new Map ());
34947
+
34948
+ map .set (key, callback);
34949
+ },
34950
+ removeMetaDataCallback (key, path)
34951
+ {
34952
+ const map = this [_metaDataCallbacks] .get (path);
34953
+
34954
+ if (!map)
34955
+ return;
34956
+
34957
+ map .delete (key);
34958
+
34959
+ if (map .size === 0)
34960
+ this [_metaDataCallbacks] .delete (path);
34961
+ },
34962
+ processMetaDataCallback (path)
34963
+ {
34964
+ const map = this [_metaDataCallbacks] .get (path);
34965
+
34966
+ if (!map)
34967
+ return;
34968
+
34969
+ for (const callback of map .values ())
34970
+ callback ();
34971
+ },
34604
34972
  toStream (generator)
34605
34973
  {
34606
34974
  generator .string += this .getTypeName () + " { }";
@@ -36467,6 +36835,84 @@ Object .assign (Object .setPrototypeOf (MetadataSet .prototype, Core_X3DNode .pr
36467
36835
 
36468
36836
  return Core_X3DNode .prototype .getContainerField .call (this);
36469
36837
  },
36838
+ getMetaValue (name)
36839
+ {
36840
+ return this ._value .find (node => node .name === name);
36841
+ },
36842
+ setMetaValue (name, value)
36843
+ {
36844
+ if (!Array .isArray (value))
36845
+ value = [value];
36846
+
36847
+ switch (value .type ?? (typeof value [0]))
36848
+ {
36849
+ case "boolean":
36850
+ {
36851
+ this .getMetadataObject ("MetadataBoolean", name, true) .value = value;
36852
+ return;
36853
+ }
36854
+ case "number":
36855
+ {
36856
+ if (value .every (v => Number .isInteger (v)))
36857
+ this .getMetadataObject ("MetadataInteger", name, true) .value = value;
36858
+ else
36859
+ this .getMetadataObject ("MetadataDouble", name, true) .value = value;
36860
+
36861
+ return;
36862
+ }
36863
+ case "double":
36864
+ {
36865
+ this .getMetadataObject ("MetadataDouble", name, true) .value = value;
36866
+ break;
36867
+ }
36868
+ case "float":
36869
+ {
36870
+ this .getMetadataObject ("MetadataFloat", name, true) .value = value;
36871
+ break;
36872
+ }
36873
+ case "integer":
36874
+ {
36875
+ this .getMetadataObject ("MetadataInteger", name, true) .value = value;
36876
+ break;
36877
+ }
36878
+ case "string":
36879
+ {
36880
+ this .getMetadataObject ("MetadataString", name, true) .value = value;
36881
+ return;
36882
+ }
36883
+ }
36884
+ },
36885
+ removeMetaValue (name)
36886
+ {
36887
+ const index = this ._value .findIndex (node => node .name === name);
36888
+
36889
+ if (index < 0)
36890
+ return;
36891
+
36892
+ this ._value .splice (index, 1);
36893
+ },
36894
+ getMetadataObject (typeName, name, create = false)
36895
+ {
36896
+ let metadata = this .getMetaValue (name);
36897
+
36898
+ if (metadata ?.getNodeTypeName () === typeName)
36899
+ return metadata;
36900
+
36901
+ if (!create)
36902
+ return null;
36903
+
36904
+ if (metadata)
36905
+ this .removeMetaValue (name);
36906
+
36907
+ metadata = this .getExecutionContext () .createNode (typeName);
36908
+
36909
+ metadata .reference = "";
36910
+ metadata .name = name;
36911
+
36912
+ this ._value .push (metadata);
36913
+
36914
+ return metadata;
36915
+ },
36470
36916
  dispose ()
36471
36917
  {
36472
36918
  Core_X3DMetadataObject .prototype .dispose .call (this);
@@ -36707,7 +37153,7 @@ Object .assign (Object .setPrototypeOf (X3DChildNode .prototype, Core_X3DNode .p
36707
37153
  {
36708
37154
  setCameraObject (value)
36709
37155
  {
36710
- if (value !== this ._isCameraObject .getValue ())
37156
+ if (!!value !== this ._isCameraObject .getValue ())
36711
37157
  this ._isCameraObject = value;
36712
37158
  },
36713
37159
  isCameraObject ()
@@ -36716,16 +37162,21 @@ Object .assign (Object .setPrototypeOf (X3DChildNode .prototype, Core_X3DNode .p
36716
37162
  },
36717
37163
  setPickableObject (value)
36718
37164
  {
36719
- if (value !== this ._isPickableObject .getValue ())
37165
+ if (!!value !== this ._isPickableObject .getValue ())
36720
37166
  this ._isPickableObject = value;
36721
37167
  },
36722
37168
  isPickableObject ()
36723
37169
  {
36724
37170
  return this ._isPickableObject .getValue ();
36725
37171
  },
36726
- getMustDisplay ()
37172
+ /**
37173
+ * You will normally overload this function in your derived classes.
37174
+ * @returns {boolean} A boolean value indicating, whether this node
37175
+ * can be visually displayed and therefor should render.
37176
+ */
37177
+ isRenderingRequired ()
36727
37178
  {
36728
- return false
37179
+ return false;
36729
37180
  },
36730
37181
  });
36731
37182
 
@@ -36894,13 +37345,20 @@ Object .assign (Object .setPrototypeOf (WorldInfo .prototype, Core_X3DInfoNode .
36894
37345
  {
36895
37346
  Core_X3DInfoNode .prototype .initialize .call (this);
36896
37347
 
36897
- this .getExecutionContext () .addWorldInfo (this);
37348
+ if (this .isLive ())
37349
+ this .getExecutionContext () .addWorldInfo (this);
36898
37350
  },
36899
- dispose ()
37351
+ setLive (value)
36900
37352
  {
36901
- this .getExecutionContext () .removeWorldInfo (this);
37353
+ if (!!value .valueOf () === this .isLive ())
37354
+ return;
36902
37355
 
36903
- Core_X3DInfoNode .prototype .dispose .call (this);
37356
+ Core_X3DInfoNode .prototype .setLive .call (this, value);
37357
+
37358
+ if (this .isLive ())
37359
+ this .getExecutionContext () .addWorldInfo (this);
37360
+ else
37361
+ this .getExecutionContext () .removeWorldInfo (this);
36904
37362
  },
36905
37363
  });
36906
37364
 
@@ -38506,7 +38964,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
38506
38964
  x_ite_Namespace .add ("X3DProtoDeclaration", "x_ite/Prototype/X3DProtoDeclaration", X3DProtoDeclaration_default_);
38507
38965
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (X3DProtoDeclaration_default_);
38508
38966
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38509
- /* provided dependency */ var X3DParser_$ = __webpack_require__(52);
38967
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(183);
38510
38968
  /*******************************************************************************
38511
38969
  *
38512
38970
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -38768,7 +39226,7 @@ const Expressions_default_ = Expressions;
38768
39226
  x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
38769
39227
  /* harmony default export */ const Parser_Expressions = (Expressions_default_);
38770
39228
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/VRMLParser.js
38771
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(52);
39229
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(183);
38772
39230
  /*******************************************************************************
38773
39231
  *
38774
39232
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -38845,7 +39303,7 @@ const Grammar = Parser_Expressions ({
38845
39303
  Break: /\r?\n/g,
38846
39304
 
38847
39305
  // Header
38848
- Header: /^#(VRML|X3D) V(.*?) (utf8)(?:[ \t]+(.*?))?[ \t]*[\n\r]/gy,
39306
+ Header: /^#(VRML|X3D) V(.*?) (utf8)(?:[ \t]+(.*?))?[ \t]*[\n\r]/gy,
38849
39307
 
38850
39308
  // Keywords
38851
39309
  AS: /AS/gy,
@@ -41454,7 +41912,7 @@ const VRMLParser_default_ = VRMLParser;
41454
41912
  x_ite_Namespace .add ("VRMLParser", "x_ite/Parser/VRMLParser", VRMLParser_default_);
41455
41913
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
41456
41914
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
41457
- /* provided dependency */ var XMLParser_$ = __webpack_require__(52);
41915
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(183);
41458
41916
  /*******************************************************************************
41459
41917
  *
41460
41918
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42230,21 +42688,21 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42230
42688
  }
42231
42689
  },
42232
42690
  scriptElement (element)
42233
- {
42234
- const
42235
- domParser = new DOMParser (),
42236
- scriptDocument = domParser .parseFromString (element .outerHTML, "application/xml"),
42237
- childNodes = scriptDocument .children [0] .childNodes;
42691
+ {
42692
+ const
42693
+ domParser = new DOMParser (),
42694
+ scriptDocument = domParser .parseFromString (element .outerHTML, "application/xml"),
42695
+ childNodes = scriptDocument .children [0] .childNodes;
42238
42696
 
42239
42697
  element .textContent = "// Content moved into childNodes.";
42240
42698
 
42241
- for (const childNode of childNodes)
42242
- {
42699
+ for (const childNode of childNodes)
42700
+ {
42243
42701
  // Add elements and cdata.
42244
- if (childNode .nodeType === 1 || childNode .nodeType === 4)
42702
+ if (childNode .nodeType === 1 || childNode .nodeType === 4)
42245
42703
  element .appendChild (childNode);
42246
- }
42247
- },
42704
+ }
42705
+ },
42248
42706
  routeElement (xmlElement)
42249
42707
  {
42250
42708
  try
@@ -43563,7 +44021,7 @@ const URLs_default_ = URLs;
43563
44021
  x_ite_Namespace .add ("URLs", "x_ite/Browser/Networking/URLs", URLs_default_);
43564
44022
  /* harmony default export */ const Networking_URLs = (URLs_default_);
43565
44023
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
43566
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(52);
44024
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(183);
43567
44025
  /*******************************************************************************
43568
44026
  *
43569
44027
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -44302,7 +44760,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
44302
44760
  [9729, "AVG_PIXEL"],
44303
44761
  ]);
44304
44762
 
44305
- const BoundaryModes = new Map ([
44763
+ const BoundaryModes = new Map ([
44306
44764
  [33071, "CLAMP_TO_EDGE"],
44307
44765
  [33648, "MIRRORED_REPEAT"],
44308
44766
  [10497, "REPEAT"],
@@ -46864,7 +47322,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
46864
47322
  x_ite_Namespace .add ("GLTF2Parser", "x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
46865
47323
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
46866
47324
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
46867
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(52);
47325
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(183);
46868
47326
  /*******************************************************************************
46869
47327
  *
46870
47328
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47016,7 +47474,7 @@ const GLB2Parser_default_ = GLB2Parser;
47016
47474
  x_ite_Namespace .add ("GLB2Parser", "x_ite/Parser/GLB2Parser", GLB2Parser_default_);
47017
47475
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
47018
47476
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
47019
- /* provided dependency */ var OBJParser_$ = __webpack_require__(52);
47477
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(183);
47020
47478
  /*******************************************************************************
47021
47479
  *
47022
47480
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47802,7 +48260,7 @@ Object .assign (MaterialParser .prototype,
47802
48260
  statements ()
47803
48261
  {
47804
48262
  while (this .statement ())
47805
- ;
48263
+ ;
47806
48264
  },
47807
48265
  statement ()
47808
48266
  {
@@ -50371,8 +50829,8 @@ const MatrixStack_default_ = MatrixStack;
50371
50829
  x_ite_Namespace .add ("MatrixStack", "standard/Math/Utility/MatrixStack", MatrixStack_default_);
50372
50830
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
50373
50831
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
50374
- /* provided dependency */ var SVGParser_$ = __webpack_require__(52);
50375
- /* provided dependency */ var libtess = __webpack_require__(177);
50832
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(183);
50833
+ /* provided dependency */ var libtess = __webpack_require__(972);
50376
50834
  /*******************************************************************************
50377
50835
  *
50378
50836
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50738,7 +51196,7 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
50738
51196
  elements (xmlElement)
50739
51197
  {
50740
51198
  for (const childNode of xmlElement .childNodes)
50741
- this .element (childNode);
51199
+ this .element (childNode);
50742
51200
  },
50743
51201
  element (xmlElement)
50744
51202
  {
@@ -51483,7 +51941,7 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
51483
51941
  gradientChild (xmlElement, gradient)
51484
51942
  {
51485
51943
  if (xmlElement .nodeName === "stop")
51486
- return this .stopElement (xmlElement, gradient);
51944
+ return this .stopElement (xmlElement, gradient);
51487
51945
  },
51488
51946
  stopElement (xmlElement, gradient)
51489
51947
  {
@@ -51588,8 +52046,8 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
51588
52046
 
51589
52047
  if (name)
51590
52048
  {
51591
- scene .addNamedNode (scene .getUniqueName (name), node);
51592
- scene .addExportedNode (scene .getUniqueExportName (name), node);
52049
+ scene .addNamedNode (scene .getUniqueName (name), node);
52050
+ scene .addExportedNode (scene .getUniqueExportName (name), node);
51593
52051
  }
51594
52052
  },
51595
52053
  viewBoxAttribute (attribute, defaultValue)
@@ -52274,7 +52732,7 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
52274
52732
  }
52275
52733
 
52276
52734
  if (points .length > 2)
52277
- contours .push (Object .assign (points, { closed: false }));
52735
+ contours .push (Object .assign (points, { closed: false }));
52278
52736
 
52279
52737
  return !! contours .length;
52280
52738
  },
@@ -53140,7 +53598,7 @@ const SVGParser_default_ = SVGParser;
53140
53598
  x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_);
53141
53599
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
53142
53600
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
53143
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(52);
53601
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(183);
53144
53602
  /*******************************************************************************
53145
53603
  *
53146
53604
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53490,7 +53948,7 @@ const Plane3_default_ = Plane3;
53490
53948
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53491
53949
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53492
53950
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53493
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(177);
53951
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(972);
53494
53952
  /*******************************************************************************
53495
53953
  *
53496
53954
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -56772,15 +57230,15 @@ Object .assign (X3DRenderObject .prototype,
56772
57230
 
56773
57231
  //if (getBrowser () -> getBrowserOptions () -> animateStairWalks ())
56774
57232
  //{
56775
- // float step = getBrowser () -> getCurrentSpeed () / getBrowser () -> getCurrentFrameRate ();
56776
- // step = abs (getViewMatrix () .mult_matrix_dir (Vector3f (0, step, 0) * up));
57233
+ // float step = getBrowser () -> getCurrentSpeed () / getBrowser () -> getCurrentFrameRate ();
57234
+ // step = abs (getViewMatrix () .mult_matrix_dir (Vector3f (0, step, 0) * up));
56777
57235
  //
56778
- // Vector3f offset = Vector3f (0, step, 0) * up;
57236
+ // Vector3f offset = Vector3f (0, step, 0) * up;
56779
57237
  //
56780
- // if (math::abs (offset) > math::abs (translation) or getBrowser () -> getCurrentSpeed () == 0)
56781
- // offset = translation;
57238
+ // if (math::abs (offset) > math::abs (translation) or getBrowser () -> getCurrentSpeed () == 0)
57239
+ // offset = translation;
56782
57240
  //
56783
- // getViewpoint () -> positionOffset () += offset;
57241
+ // getViewpoint () -> positionOffset () += offset;
56784
57242
  //}
56785
57243
  //else
56786
57244
  viewpoint ._positionOffset = translation .add (viewpoint ._positionOffset .getValue ());
@@ -57705,19 +58163,18 @@ function X3DGroupingNode (executionContext)
57705
58163
  this .addType (Base_X3DConstants .X3DGroupingNode);
57706
58164
 
57707
58165
  this .allowedTypes = new Set ();
57708
- this .clipPlaneNodes = [ ];
57709
- this .localFogNodes = [ ];
57710
- this .lightNodes = [ ];
57711
- this .pointingDeviceSensorNodes = [ ];
57712
- this .maybeCameraObjects = [ ];
57713
- this .cameraObjects = [ ];
57714
- this .maybePickableSensorNodes = [ ];
57715
- this .pickableSensorNodes = [ ];
57716
- this .pickableObjects = [ ];
57717
- this .childNodes = [ ];
57718
- this .displayNodes = [ ];
57719
- this .visibleNodes = [ ];
57720
- this .boundedObjects = [ ];
58166
+ this .children = new Set ();
58167
+ this .pointingDeviceSensorNodes = new Set ();
58168
+ this .clipPlaneNodes = new Set ();
58169
+ this .displayNodes = new Set ();
58170
+ this .maybeCameraObjects = new Set ();
58171
+ this .cameraObjects = new Set ();
58172
+ this .maybePickableSensorNodes = new Set ();
58173
+ this .pickableSensorNodes = new Set ();
58174
+ this .pickableObjects = new Set ();
58175
+ this .childNodes = new Set ();
58176
+ this .visibleNodes = new Set ();
58177
+ this .boundedObjects = new Set ();
57721
58178
  this .sensors = [ ];
57722
58179
  }
57723
58180
 
@@ -57750,12 +58207,10 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57750
58207
  },
57751
58208
  setAllowedTypes (/* type, ... */)
57752
58209
  {
57753
- const allowedTypes = this .allowedTypes;
57754
-
57755
- allowedTypes .clear ();
58210
+ this .allowedTypes .clear ();
57756
58211
 
57757
58212
  for (const type of arguments)
57758
- allowedTypes .add (type);
58213
+ this .allowedTypes .add (type);
57759
58214
  },
57760
58215
  set_addChildren__ ()
57761
58216
  {
@@ -57763,7 +58218,13 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57763
58218
  return;
57764
58219
 
57765
58220
  this ._addChildren .setTainted (true);
57766
- this ._addChildren .assign (filter (this ._addChildren, this ._children));
58221
+
58222
+ const addChildren = new Set (this ._addChildren);
58223
+
58224
+ for (const node of this .children)
58225
+ addChildren .delete (node);
58226
+
58227
+ this .add (addChildren);
57767
58228
 
57768
58229
  if (!this ._children .isTainted ())
57769
58230
  {
@@ -57771,8 +58232,8 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57771
58232
  this ._children .addInterest ("connectChildren", this);
57772
58233
  }
57773
58234
 
57774
- this ._children .splice (this ._children .length, 0, ... this ._addChildren);
57775
- this .add (this ._addChildren);
58235
+ for (const child of addChildren)
58236
+ this ._children .push (child);
57776
58237
 
57777
58238
  this ._addChildren .length = 0;
57778
58239
  this ._addChildren .setTainted (false);
@@ -57786,14 +58247,15 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57786
58247
 
57787
58248
  if (this ._children .length > 0)
57788
58249
  {
58250
+ this .remove (this ._removeChildren);
58251
+
57789
58252
  if (!this ._children .isTainted ())
57790
58253
  {
57791
58254
  this ._children .removeInterest ("set_children__", this);
57792
58255
  this ._children .addInterest ("connectChildren", this);
57793
58256
  }
57794
58257
 
57795
- this ._children .assign (filter (this ._children, this ._removeChildren));
57796
- this .remove (this ._removeChildren);
58258
+ this ._children = Array .from (this ._children) .filter (child => this .children .has (child));
57797
58259
  }
57798
58260
 
57799
58261
  this ._removeChildren .length = 0;
@@ -57821,23 +58283,30 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57821
58283
 
57822
58284
  if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
57823
58285
  {
57824
- childNode ._display .removeInterest ("set_displays_", this);
58286
+ childNode ._display .removeInterest ("set_displays__", this);
57825
58287
  childNode ._bboxDisplay .removeInterest ("set_bboxDisplays__", this);
57826
58288
  }
57827
58289
  }
57828
58290
 
57829
- this .clipPlaneNodes .length = 0;
57830
- this .localFogNodes .length = 0;
57831
- this .lightNodes .length = 0;
57832
- this .pointingDeviceSensorNodes .length = 0;
57833
- this .maybeCameraObjects .length = 0;
57834
- this .maybePickableSensorNodes .length = 0;
57835
- this .childNodes .length = 0;
58291
+ this .children .clear ();
58292
+ this .pointingDeviceSensorNodes .clear ();
58293
+ this .clipPlaneNodes .clear ();
58294
+ this .displayNodes .clear ();
58295
+ this .maybeCameraObjects .clear ();
58296
+ this .cameraObjects .clear ();
58297
+ this .maybePickableSensorNodes .clear ();
58298
+ this .pickableSensorNodes .clear ();
58299
+ this .pickableObjects .clear ();
58300
+ this .childNodes .clear ();
58301
+ this .visibleNodes .clear ();
58302
+ this .boundedObjects .clear ();
57836
58303
  },
57837
58304
  add (children)
57838
58305
  {
57839
58306
  for (const child of children)
57840
58307
  {
58308
+ this .children .add (child);
58309
+
57841
58310
  const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
57842
58311
 
57843
58312
  if (!childNode)
@@ -57857,27 +58326,30 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57857
58326
  {
57858
58327
  case Base_X3DConstants .X3DPointingDeviceSensorNode:
57859
58328
  {
57860
- this .pointingDeviceSensorNodes .push (childNode);
58329
+ this .pointingDeviceSensorNodes .add (childNode);
57861
58330
  break;
57862
58331
  }
57863
58332
  case Base_X3DConstants .ClipPlane:
57864
58333
  {
57865
- this .clipPlaneNodes .push (childNode);
58334
+ this .clipPlaneNodes .add (childNode);
58335
+ this .displayNodes .add (childNode);
57866
58336
  break;
57867
58337
  }
57868
58338
  case Base_X3DConstants .LocalFog:
57869
58339
  {
57870
- this .localFogNodes .push (childNode);
58340
+ this .displayNodes .add (childNode);
57871
58341
  break;
57872
58342
  }
57873
58343
  case Base_X3DConstants .X3DLightNode:
57874
58344
  {
57875
- this .lightNodes .push (childNode);
58345
+ this .displayNodes .add (childNode);
57876
58346
  break;
57877
58347
  }
57878
58348
  case Base_X3DConstants .X3DBindableNode:
57879
58349
  {
57880
- this .maybeCameraObjects .push (childNode);
58350
+ this .maybeCameraObjects .add (childNode);
58351
+
58352
+ this .addCameraObject (childNode);
57881
58353
  break;
57882
58354
  }
57883
58355
  case Base_X3DConstants .TransformSensor:
@@ -57885,7 +58357,9 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57885
58357
  {
57886
58358
  childNode ._isPickableObject .addInterest ("set_pickableObjects__", this);
57887
58359
 
57888
- this .maybePickableSensorNodes .push (childNode);
58360
+ this .maybePickableSensorNodes .add (childNode);
58361
+
58362
+ this .addPickableSensorNode (childNode);
57889
58363
  break;
57890
58364
  }
57891
58365
  case Base_X3DConstants .Sound:
@@ -57898,12 +58372,17 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57898
58372
 
57899
58373
  if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
57900
58374
  {
57901
- childNode ._display .addInterest ("set_displays_", this);
58375
+ childNode ._display .addInterest ("set_displays__", this);
57902
58376
  childNode ._bboxDisplay .addInterest ("set_bboxDisplays__", this);
57903
58377
  }
57904
58378
 
57905
- this .maybeCameraObjects .push (childNode);
57906
- this .childNodes .push (childNode);
58379
+ this .maybeCameraObjects .add (childNode);
58380
+ this .childNodes .add (childNode);
58381
+
58382
+ this .addCameraObject (childNode);
58383
+ this .addPickableObject (childNode);
58384
+ this .addVisibleNode (childNode);
58385
+ this .addBoundedObject (childNode);
57907
58386
  break;
57908
58387
  }
57909
58388
  case Base_X3DConstants .BooleanFilter:
@@ -57929,38 +58408,27 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57929
58408
  continue;
57930
58409
  }
57931
58410
 
57932
- break;
57933
- }
58411
+ if (childNode .isRenderingRequired ())
58412
+ continue;
57934
58413
 
57935
- if (childNode .getMustDisplay ())
57936
- {
57937
- if (!this .childNodes .includes (childNode))
57938
- this .childNodes .push (childNode);
58414
+ break;
57939
58415
  }
57940
58416
  }
57941
58417
 
57942
- this .set_pickableObjects__ ()
57943
- this .set_displayNodes__ ()
57944
- this .set_displays_ ()
57945
- this .set_bboxDisplays__ ();
58418
+ this .setCameraObject (this .cameraObjects .size);
58419
+ this .set_transformSensors__ ();
57946
58420
  },
57947
58421
  remove (children)
57948
58422
  {
57949
58423
  for (const child of children)
57950
58424
  {
58425
+ this .children .delete (child);
58426
+
57951
58427
  const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
57952
58428
 
57953
58429
  if (!childNode)
57954
58430
  continue;
57955
58431
 
57956
- if (childNode .getMustDisplay ())
57957
- {
57958
- const index = this .childNodes .indexOf (childNode);
57959
-
57960
- if (index >= 0)
57961
- this .childNodes .splice (index, 1);
57962
- }
57963
-
57964
58432
  const type = childNode .getType ();
57965
58433
 
57966
58434
  for (let t = type .length - 1; t >= 0; -- t)
@@ -57969,47 +58437,29 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
57969
58437
  {
57970
58438
  case Base_X3DConstants .X3DPointingDeviceSensorNode:
57971
58439
  {
57972
- const index = this .pointingDeviceSensorNodes .indexOf (childNode);
57973
-
57974
- if (index >= 0)
57975
- this .pointingDeviceSensorNodes .splice (index, 1);
57976
-
58440
+ this .pointingDeviceSensorNodes .delete (childNode);
57977
58441
  break;
57978
58442
  }
57979
58443
  case Base_X3DConstants .ClipPlane:
57980
58444
  {
57981
- const index = this .clipPlaneNodes .indexOf (childNode);
57982
-
57983
- if (index >= 0)
57984
- this .clipPlaneNodes .splice (index, 1);
57985
-
58445
+ this .clipPlaneNodes .delete (childNode);
58446
+ this .displayNodes .delete (childNode);
57986
58447
  break;
57987
58448
  }
57988
58449
  case Base_X3DConstants .LocalFog:
57989
58450
  {
57990
- const index = this .localFogNodes .indexOf (childNode);
57991
-
57992
- if (index >= 0)
57993
- this .localFogNodes .splice (index, 1);
57994
-
58451
+ this .displayNodes .delete (childNode);
57995
58452
  break;
57996
58453
  }
57997
58454
  case Base_X3DConstants .X3DLightNode:
57998
58455
  {
57999
- const index = this .lightNodes .indexOf (childNode);
58000
-
58001
- if (index >= 0)
58002
- this .lightNodes .splice (index, 1);
58003
-
58456
+ this .displayNodes .delete (childNode);
58004
58457
  break;
58005
58458
  }
58006
58459
  case Base_X3DConstants .X3DBindableNode:
58007
58460
  {
58008
- const index = this .maybeCameraObjects .indexOf (childNode);
58009
-
58010
- if (index >= 0)
58011
- this .maybeCameraObjects .splice (index, 1);
58012
-
58461
+ this .maybeCameraObjects .delete (childNode);
58462
+ this .cameraObjects .delete (childNode);
58013
58463
  break;
58014
58464
  }
58015
58465
  case Base_X3DConstants .TransformSensor:
@@ -58017,11 +58467,8 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
58017
58467
  {
58018
58468
  childNode ._isPickableObject .removeInterest ("set_pickableObjects__", this);
58019
58469
 
58020
- const index = this .maybePickableSensorNodes .indexOf (childNode);
58021
-
58022
- if (index >= 0)
58023
- this .maybePickableSensorNodes .splice (index, 1);
58024
-
58470
+ this .maybePickableSensorNodes .delete (childNode);
58471
+ this .pickableSensorNodes .delete (childNode);
58025
58472
  break;
58026
58473
  }
58027
58474
  case Base_X3DConstants .Sound:
@@ -58034,20 +58481,16 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
58034
58481
 
58035
58482
  if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58036
58483
  {
58037
- childNode ._display .removeInterest ("set_displays_", this);
58484
+ childNode ._display .removeInterest ("set_displays__", this);
58038
58485
  childNode ._bboxDisplay .removeInterest ("set_bboxDisplays__", this);
58039
58486
  }
58040
58487
 
58041
- var index = this .maybeCameraObjects .indexOf (childNode);
58042
-
58043
- if (index >= 0)
58044
- this .maybeCameraObjects .splice (index, 1);
58045
-
58046
- var index = this .childNodes .indexOf (childNode);
58047
-
58048
- if (index >= 0)
58049
- this .childNodes .splice (index, 1);
58050
-
58488
+ this .maybeCameraObjects .delete (childNode);
58489
+ this .cameraObjects .delete (childNode);
58490
+ this .pickableObjects .delete (childNode);
58491
+ this .childNodes .delete (childNode);
58492
+ this .visibleNodes .delete (childNode);
58493
+ this .boundedObjects .delete (childNode);
58051
58494
  break;
58052
58495
  }
58053
58496
  case Base_X3DConstants .BooleanFilter:
@@ -58073,117 +58516,115 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
58073
58516
  continue;
58074
58517
  }
58075
58518
 
58519
+ if (childNode .isRenderingRequired ())
58520
+ continue;
58521
+
58076
58522
  break;
58077
58523
  }
58078
58524
  }
58079
58525
 
58080
- this .set_displayNodes__ ();
58081
- this .set_displays_ ();
58082
- this .set_bboxDisplays__ ();
58526
+ this .setCameraObject (this .cameraObjects .size);
58527
+ this .set_transformSensors__ ();
58528
+ },
58529
+ set_displays__ ()
58530
+ {
58531
+ this .set_cameraObjects__ ();
58532
+ this .set_pickableObjects__ ();
58533
+ this .set_visibleNodes__ ();
58083
58534
  },
58084
58535
  set_cameraObjects__ ()
58085
58536
  {
58086
- const cameraObjects = this .cameraObjects;
58087
-
58088
- cameraObjects .length = 0;
58537
+ this .cameraObjects .clear ();
58089
58538
 
58090
58539
  for (const childNode of this .maybeCameraObjects)
58091
- {
58092
- if (!childNode .isCameraObject ())
58093
- continue;
58540
+ this .addCameraObject (childNode);
58094
58541
 
58095
- if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58096
- {
58097
- if (childNode ._display .getValue ())
58098
- cameraObjects .push (childNode);
58099
- }
58100
- else
58101
- {
58102
- cameraObjects .push (childNode);
58103
- }
58104
- }
58105
-
58106
- this .setCameraObject (!!(cameraObjects .length));
58542
+ this .setCameraObject (this .cameraObjects .size);
58107
58543
  },
58108
- set_pickableObjects__ ()
58544
+ addCameraObject (childNode)
58109
58545
  {
58110
- const
58111
- pickableSensorNodes = this .pickableSensorNodes,
58112
- pickableObjects = this .pickableObjects;
58113
-
58114
- pickableSensorNodes .length = 0;
58115
- pickableObjects .length = 0;
58546
+ if (!childNode .isCameraObject ())
58547
+ return;
58116
58548
 
58117
- for (const sensorNode of this .maybePickableSensorNodes)
58549
+ if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58118
58550
  {
58119
- if (sensorNode .isPickableObject ())
58120
- pickableSensorNodes .push (sensorNode);
58551
+ if (childNode ._display .getValue ())
58552
+ this .cameraObjects .add (childNode);
58121
58553
  }
58122
-
58123
- for (const childNode of this .visibleNodes)
58554
+ else
58124
58555
  {
58125
- if (childNode .isPickableObject ())
58126
- pickableObjects .push (childNode);
58556
+ this .cameraObjects .add (childNode);
58127
58557
  }
58558
+ },
58559
+ set_pickableObjects__ ()
58560
+ {
58561
+ this .pickableSensorNodes .clear ();
58562
+ this .pickableObjects .clear ();
58563
+
58564
+ for (const childNode of this .maybePickableSensorNodes)
58565
+ this .addPickableSensorNode (childNode);
58128
58566
 
58129
- this .set_transformSensors__ ()
58567
+ for (const childNode of this .childNodes)
58568
+ this .addPickableObject (childNode);
58569
+
58570
+ this .set_transformSensors__ ();
58130
58571
  },
58131
58572
  set_transformSensors__ ()
58132
58573
  {
58133
- this .setPickableObject (!!(this .getTransformSensors () .size || this .pickableSensorNodes .length || this .pickableObjects .length));
58574
+ this .setPickableObject (this .getTransformSensors () .size || this .pickableSensorNodes .size || this .pickableObjects .size);
58134
58575
  },
58135
- set_displayNodes__ ()
58576
+ addPickableSensorNode (childNode)
58136
58577
  {
58137
- const displayNodes = this .displayNodes;
58138
-
58139
- displayNodes .length = 0;
58140
-
58141
- for (const node of this .clipPlaneNodes)
58142
- displayNodes .push (node);
58143
-
58144
- for (const node of this .localFogNodes)
58145
- displayNodes .push (node);
58146
-
58147
- for (const node of this .lightNodes)
58148
- displayNodes .push (node);
58578
+ if (childNode .isPickableObject ())
58579
+ this .pickableSensorNodes .add (childNode);
58149
58580
  },
58150
- set_displays_ ()
58581
+ addPickableObject (childNode)
58151
58582
  {
58152
- const visibleNodes = this .visibleNodes;
58583
+ if (!childNode .isPickableObject ())
58584
+ return;
58153
58585
 
58154
- visibleNodes .length = 0;
58586
+ if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58587
+ {
58588
+ if (childNode ._display .getValue ())
58589
+ this .pickableObjects .add (childNode);
58590
+ }
58591
+ else
58592
+ {
58593
+ this .pickableObjects .add (childNode);
58594
+ }
58595
+ },
58596
+ set_visibleNodes__ ()
58597
+ {
58598
+ this .visibleNodes .clear ();
58155
58599
 
58156
58600
  for (const childNode of this .childNodes)
58601
+ this .addVisibleNode (childNode);
58602
+ },
58603
+ addVisibleNode (childNode)
58604
+ {
58605
+ if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58157
58606
  {
58158
- if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58159
- {
58160
- if (childNode ._display .getValue ())
58161
- visibleNodes .push (childNode);
58162
- }
58163
- else
58164
- {
58165
- visibleNodes .push (childNode);
58166
- }
58607
+ if (childNode ._display .getValue ())
58608
+ this .visibleNodes .add (childNode);
58609
+ }
58610
+ else
58611
+ {
58612
+ this .visibleNodes .add (childNode);
58167
58613
  }
58168
-
58169
- this .set_cameraObjects__ ();
58170
- this .set_pickableObjects__ ();
58171
58614
  },
58172
58615
  set_bboxDisplays__ ()
58173
58616
  {
58174
- const boundedObjects = this .boundedObjects;
58175
-
58176
- boundedObjects .length = 0;
58617
+ this .boundedObjects .clear ();
58177
58618
 
58178
58619
  for (const childNode of this .childNodes)
58620
+ this .addBoundedObject (childNode);
58621
+ },
58622
+ addBoundedObject (childNode)
58623
+ {
58624
+ if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58179
58625
  {
58180
- if (Base_X3DCast (Base_X3DConstants .X3DBoundedObject, childNode))
58181
- {
58182
- if (childNode ._bboxDisplay .getValue ())
58183
- {
58184
- boundedObjects .push (childNode);
58185
- }
58186
- }
58626
+ if (childNode ._bboxDisplay .getValue ())
58627
+ this .boundedObjects .add (childNode);
58187
58628
  }
58188
58629
  },
58189
58630
  traverse (type, renderObject)
@@ -58199,7 +58640,7 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
58199
58640
 
58200
58641
  sensors .length = 0;
58201
58642
 
58202
- if (pointingDeviceSensorNodes .length)
58643
+ if (pointingDeviceSensorNodes .size)
58203
58644
  {
58204
58645
  for (const pointingDeviceSensorNode of pointingDeviceSensorNodes)
58205
58646
  pointingDeviceSensorNode .push (renderObject, sensors);
@@ -58321,13 +58762,6 @@ Object .assign (Object .setPrototypeOf (X3DGroupingNode .prototype, Core_X3DChil
58321
58762
  },
58322
58763
  });
58323
58764
 
58324
- function filter (array, remove)
58325
- {
58326
- const set = new Set (remove);
58327
-
58328
- return array .filter (value => !set .has (value));
58329
- }
58330
-
58331
58765
  Object .defineProperties (X3DGroupingNode,
58332
58766
  {
58333
58767
  typeName:
@@ -59565,7 +59999,7 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
59565
59999
  },
59566
60000
  setTransparent (value)
59567
60001
  {
59568
- if (value !== this ._transparent .getValue ())
60002
+ if (!!value !== this ._transparent .getValue ())
59569
60003
  this ._transparent = value;
59570
60004
  },
59571
60005
  isTransparent ()
@@ -60061,7 +60495,9 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
60061
60495
  })(),
60062
60496
  set_live__ ()
60063
60497
  {
60064
- if (this .getLive () .getValue ())
60498
+ const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
60499
+
60500
+ if (this .getLive () .getValue () || alwaysUpdate)
60065
60501
  this .getBrowser () .getBrowserOptions () ._Shading .addInterest ("set_shading__", this);
60066
60502
  else
60067
60503
  this .getBrowser () .getBrowserOptions () ._Shading .removeInterest ("set_shading__", this);
@@ -60970,7 +61406,7 @@ Object .assign (Object .setPrototypeOf (X3DBackgroundNode .prototype, Core_X3DBi
60970
61406
  vAngle .push (Math .PI);
60971
61407
 
60972
61408
  if (vAngle .length === 2)
60973
- vAngle .splice (1, 0, (vAngle [0] + vAngle [1]) / 2)
61409
+ vAngle .splice (1, 0, (vAngle [0] + vAngle [1]) / 2)
60974
61410
 
60975
61411
  this .buildSphere (RADIUS, vAngle, this ._skyAngle, this ._skyColor, false);
60976
61412
  }
@@ -61538,7 +61974,7 @@ Object .assign (Object .setPrototypeOf (X3DTextureNode .prototype, Shape_X3DAppe
61538
61974
  {
61539
61975
  setTransparent (value)
61540
61976
  {
61541
- if (value !== this ._transparent .getValue ())
61977
+ if (!!value !== this ._transparent .getValue ())
61542
61978
  this ._transparent = value;
61543
61979
  },
61544
61980
  isTransparent ()
@@ -62003,7 +62439,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62003
62439
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
62004
62440
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
62005
62441
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
62006
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(52);
62442
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(183);
62007
62443
  /*******************************************************************************
62008
62444
  *
62009
62445
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -65313,16 +65749,16 @@ Object .assign (Object .setPrototypeOf (LayerSet .prototype, Core_X3DNode .proto
65313
65749
  {
65314
65750
  return this .activeLayerNode;
65315
65751
  },
65752
+ getLayer0 ()
65753
+ {
65754
+ return this .layerNode0;
65755
+ },
65316
65756
  setLayer0 (value)
65317
65757
  {
65318
65758
  this .layerNode0 = value;
65319
65759
 
65320
65760
  this .set_layers__ ();
65321
65761
  },
65322
- getLayer0 ()
65323
- {
65324
- return this .layerNode0;
65325
- },
65326
65762
  getLayers ()
65327
65763
  {
65328
65764
  return this .layerNodes;
@@ -65604,7 +66040,7 @@ const X3DWorld_default_ = X3DWorld;
65604
66040
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
65605
66041
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
65606
66042
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
65607
- /* provided dependency */ var FileLoader_$ = __webpack_require__(52);
66043
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(183);
65608
66044
  /*******************************************************************************
65609
66045
  *
65610
66046
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66531,7 +66967,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
66531
66967
  x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclarationArray", ProtoDeclarationArray_default_);
66532
66968
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (ProtoDeclarationArray_default_);
66533
66969
  ;// CONCATENATED MODULE: ./src/x_ite/Routing/X3DRoute.js
66534
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(52);
66970
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(183);
66535
66971
  /*******************************************************************************
66536
66972
  *
66537
66973
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67135,12 +67571,12 @@ x_ite_Namespace .add ("RouteArray", "x_ite/Routing/RouteArray", RouteArray_defau
67135
67571
 
67136
67572
 
67137
67573
  const
67138
- _namedNodes = Symbol (),
67139
- _importedNodes = Symbol (),
67140
- _protos = Symbol (),
67141
- _externprotos = Symbol (),
67142
- X3DExecutionContext_routes = Symbol (),
67143
- _outerNode = Symbol ();
67574
+ _outerNode = Symbol (),
67575
+ _namedNodes = Symbol (),
67576
+ _importedNodes = Symbol (),
67577
+ _protos = Symbol (),
67578
+ _externprotos = Symbol (),
67579
+ X3DExecutionContext_routes = Symbol ();
67144
67580
 
67145
67581
  function X3DExecutionContext (executionContext, outerNode = null, browser = executionContext .getBrowser ())
67146
67582
  {
@@ -67774,10 +68210,13 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67774
68210
  },
67775
68211
  removeWorldInfo (worldInfoNode)
67776
68212
  {
67777
- for (let i = this ._worldInfos .length - 1; i >= 0; -- i)
68213
+ for (const [i, worldInfo] of this ._worldInfos .entries ())
67778
68214
  {
67779
- if (this ._worldInfos [i] .getValue () === worldInfoNode)
67780
- this ._worldInfos .splice (i, 1);
68215
+ if (worldInfo .getValue () !== worldInfoNode)
68216
+ continue;
68217
+
68218
+ this ._worldInfos .splice (i, 1);
68219
+ break;
67781
68220
  }
67782
68221
  },
67783
68222
  toVRMLStream (generator)
@@ -68251,7 +68690,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68251
68690
  if (oldField .getModificationTime () === 0)
68252
68691
  {
68253
68692
  oldField .assign (newField);
68254
- oldField .setModificationTime (0);
68693
+ oldField .setModificationTime (0);
68255
68694
  }
68256
68695
  }
68257
68696
 
@@ -73734,7 +74173,9 @@ Object .assign (Object .setPrototypeOf (Cone .prototype, Rendering_X3DGeometryNo
73734
74173
  {
73735
74174
  Rendering_X3DGeometryNode .prototype .set_live__ .call (this);
73736
74175
 
73737
- if (this .getLive () .getValue ())
74176
+ const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
74177
+
74178
+ if (this .getLive () .getValue () || alwaysUpdate)
73738
74179
  this .getBrowser () .getConeOptions () .addInterest ("requestRebuild", this);
73739
74180
  else
73740
74181
  this .getBrowser () .getConeOptions () .removeInterest ("requestRebuild", this);
@@ -73945,7 +74386,9 @@ Object .assign (Object .setPrototypeOf (Cylinder .prototype, Rendering_X3DGeomet
73945
74386
  {
73946
74387
  Rendering_X3DGeometryNode .prototype .set_live__ .call (this);
73947
74388
 
73948
- if (this .getLive () .getValue ())
74389
+ const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
74390
+
74391
+ if (this .getLive () .getValue () || alwaysUpdate)
73949
74392
  this .getBrowser () .getCylinderOptions () .addInterest ("requestRebuild", this);
73950
74393
  else
73951
74394
  this .getBrowser () .getCylinderOptions () .removeInterest ("requestRebuild", this);
@@ -74243,7 +74686,7 @@ Object .assign (Object .setPrototypeOf (ElevationGrid .prototype, Rendering_X3DG
74243
74686
 
74244
74687
  this .colorNode ?.addInterest ("requestRebuild", this);
74245
74688
 
74246
- this .setTransparent (this .colorNode ?.isTransparent () ?? false);
74689
+ this .setTransparent (this .colorNode ?.isTransparent ());
74247
74690
  },
74248
74691
  set_texCoord__ ()
74249
74692
  {
@@ -75432,7 +75875,7 @@ Object .assign (Object .setPrototypeOf (X3DComposedGeometryNode .prototype, Rend
75432
75875
 
75433
75876
  this .colorNode ?.addInterest ("requestRebuild", this);
75434
75877
 
75435
- this .setTransparent (this .colorNode ?.isTransparent () ?? false);
75878
+ this .setTransparent (this .colorNode ?.isTransparent ());
75436
75879
  },
75437
75880
  set_texCoord__ ()
75438
75881
  {
@@ -76187,7 +76630,9 @@ Object .assign (Object .setPrototypeOf (Sphere .prototype, Rendering_X3DGeometry
76187
76630
  {
76188
76631
  Rendering_X3DGeometryNode .prototype .set_live__ .call (this);
76189
76632
 
76190
- if (this .getLive () .getValue ())
76633
+ const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
76634
+
76635
+ if (this .getLive () .getValue () || alwaysUpdate)
76191
76636
  this .getBrowser () .getSphereOptions () .addInterest ("requestRebuild", this);
76192
76637
  else
76193
76638
  this .getBrowser () .getSphereOptions () .removeInterest ("requestRebuild", this);
@@ -76739,11 +77184,11 @@ Object .assign (Object .setPrototypeOf (Switch .prototype, Grouping_X3DGroupingN
76739
77184
  },
76740
77185
  set_cameraObject__ ()
76741
77186
  {
76742
- this .setCameraObject (!!this .visibleNode ?.isCameraObject ());
77187
+ this .setCameraObject (this .visibleNode ?.isCameraObject ());
76743
77188
  },
76744
77189
  set_transformSensors__ ()
76745
77190
  {
76746
- this .setPickableObject (!!(this .getTransformSensors () .size || this .visibleNode ?.isPickableObject ()));
77191
+ this .setPickableObject (this .getTransformSensors () .size || this .visibleNode ?.isPickableObject ());
76747
77192
  },
76748
77193
  set_display__ ()
76749
77194
  {
@@ -80499,8 +80944,8 @@ x_ite_Namespace .add ("EnvironmentLight", "x_ite/Components/Lighting/Environment
80499
80944
  // Shadow map layout
80500
80945
  // Compact layout:
80501
80946
  //
80502
- // xzXZ Char: Axis
80503
- // yyYY Case: Sign
80947
+ // xzXZ Char: Axis
80948
+ // yyYY Case: Sign
80504
80949
 
80505
80950
  const orientationMatrices = [
80506
80951
  new Numbers_Matrix4 () .setRotation (new Numbers_Rotation4 (new Numbers_Vector3 ( 1, 0, 0), Numbers_Vector3 .zAxis)), // left
@@ -81755,11 +82200,11 @@ Object .assign (Object .setPrototypeOf (LOD .prototype, Grouping_X3DGroupingNode
81755
82200
  },
81756
82201
  set_cameraObject__ ()
81757
82202
  {
81758
- this .setCameraObject (!!this .visibleNode ?.isCameraObject ());
82203
+ this .setCameraObject (this .visibleNode ?.isCameraObject ());
81759
82204
  },
81760
82205
  set_transformSensors__ ()
81761
82206
  {
81762
- this .setPickableObject (!!(this .getTransformSensors () .size || this .visibleNode ?.isPickableObject ()));
82207
+ this .setPickableObject (this .getTransformSensors () .size || this .visibleNode ?.isPickableObject ());
81763
82208
  },
81764
82209
  set_display__ ()
81765
82210
  {
@@ -85841,7 +86286,7 @@ Object .assign (Object .setPrototypeOf (X3DColorNode .prototype, Rendering_X3DGe
85841
86286
  {
85842
86287
  setTransparent (value)
85843
86288
  {
85844
- if (value !== this ._transparent .getValue ())
86289
+ if (!!value !== this ._transparent .getValue ())
85845
86290
  this ._transparent = value;
85846
86291
  },
85847
86292
  isTransparent ()
@@ -87209,7 +87654,7 @@ Object .assign (Object .setPrototypeOf (IndexedLineSet .prototype, Rendering_X3D
87209
87654
 
87210
87655
  this .colorNode ?.addInterest ("requestRebuild", this);
87211
87656
 
87212
- this .setTransparent (this .colorNode ?.isTransparent () ?? false);
87657
+ this .setTransparent (this .colorNode ?.isTransparent ());
87213
87658
  },
87214
87659
  set_normal__ ()
87215
87660
  {
@@ -87994,7 +88439,7 @@ Object .assign (Object .setPrototypeOf (LineSet .prototype, Rendering_X3DLineGeo
87994
88439
 
87995
88440
  this .colorNode ?.addInterest ("requestRebuild", this);
87996
88441
 
87997
- this .setTransparent (this .colorNode ?.isTransparent () ?? false);
88442
+ this .setTransparent (this .colorNode ?.isTransparent ());
87998
88443
  },
87999
88444
  set_normal__ ()
88000
88445
  {
@@ -89408,7 +89853,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
89408
89853
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
89409
89854
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
89410
89855
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
89411
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(52);
89856
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(183);
89412
89857
  /*******************************************************************************
89413
89858
  *
89414
89859
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -92295,26 +92740,26 @@ const ShaderSource =
92295
92740
  {
92296
92741
  getSource (gl, browser, source, options)
92297
92742
  {
92298
- const
92299
- COMMENTS = "\\s+|/\\*[\\s\\S]*?\\*/|//.*?\\n",
92300
- LINE = "#line\\s+.*?\\n",
92301
- IF = "#if\\s+.*?\\n",
92302
- ELIF = "#elif\\s+.*?\\n",
92303
- IFDEF = "#ifdef\\s+.*?\\n",
92304
- IFNDEF = "#ifndef\\s+.*?\\n",
92305
- ELSE = "#else.*?\\n",
92306
- ENDIF = "#endif.*?\\n",
92307
- DEFINE = "#define\\s+(?:[^\\n\\\\]|\\\\[^\\r\\n]|\\\\\\r?\\n)*\\n",
92308
- UNDEF = "#undef\\s+.*?\\n",
92309
- PRAGMA = "#pragma\\s+.*?\\n",
92310
- PREPROCESSOR = LINE + "|" + IF + "|" + ELIF + "|" + IFDEF + "|" + IFNDEF + "|" + ELSE + "|" + ENDIF + "|" + DEFINE + "|" + UNDEF + "|" + PRAGMA,
92311
- VERSION = "#version\\s+.*?\\n",
92312
- EXTENSION = "#extension\\s+.*?\\n",
92313
- ANY = ".*";
92314
-
92315
- const
92316
- GLSL = new RegExp ("^((?:" + COMMENTS + "|" + PREPROCESSOR + ")*(?:" + VERSION + ")?(?:" + COMMENTS + "|" + PREPROCESSOR + "|" + EXTENSION + ")*)(" + ANY + ")$", "s"),
92317
- match = source .match (GLSL);
92743
+ const
92744
+ COMMENTS = "\\s+|/\\*[\\s\\S]*?\\*/|//.*?\\n",
92745
+ LINE = "#line\\s+.*?\\n",
92746
+ IF = "#if\\s+.*?\\n",
92747
+ ELIF = "#elif\\s+.*?\\n",
92748
+ IFDEF = "#ifdef\\s+.*?\\n",
92749
+ IFNDEF = "#ifndef\\s+.*?\\n",
92750
+ ELSE = "#else.*?\\n",
92751
+ ENDIF = "#endif.*?\\n",
92752
+ DEFINE = "#define\\s+(?:[^\\n\\\\]|\\\\[^\\r\\n]|\\\\\\r?\\n)*\\n",
92753
+ UNDEF = "#undef\\s+.*?\\n",
92754
+ PRAGMA = "#pragma\\s+.*?\\n",
92755
+ PREPROCESSOR = LINE + "|" + IF + "|" + ELIF + "|" + IFDEF + "|" + IFNDEF + "|" + ELSE + "|" + ENDIF + "|" + DEFINE + "|" + UNDEF + "|" + PRAGMA,
92756
+ VERSION = "#version\\s+.*?\\n",
92757
+ EXTENSION = "#extension\\s+.*?\\n",
92758
+ ANY = ".*";
92759
+
92760
+ const
92761
+ GLSL = new RegExp ("^((?:" + COMMENTS + "|" + PREPROCESSOR + ")*(?:" + VERSION + ")?(?:" + COMMENTS + "|" + PREPROCESSOR + "|" + EXTENSION + ")*)(" + ANY + ")$", "s"),
92762
+ match = source .match (GLSL);
92318
92763
 
92319
92764
  // const
92320
92765
  // COMMENTS = "\\s+|/\\*.*?\\*/|//.*?\\n",
@@ -95049,7 +95494,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
95049
95494
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
95050
95495
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
95051
95496
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
95052
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(52);
95497
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(183);
95053
95498
  /*******************************************************************************
95054
95499
  *
95055
95500
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95677,7 +96122,7 @@ Object .assign (Object .setPrototypeOf (X3DAppearanceNode .prototype, Core_X3DNo
95677
96122
  {
95678
96123
  setTransparent (value)
95679
96124
  {
95680
- if (value !== this ._transparent .getValue ())
96125
+ if (!!value !== this ._transparent .getValue ())
95681
96126
  this ._transparent = value;
95682
96127
  },
95683
96128
  isTransparent ()
@@ -95706,7 +96151,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
95706
96151
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
95707
96152
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
95708
96153
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
95709
- /* provided dependency */ var Appearance_$ = __webpack_require__(52);
96154
+ /* provided dependency */ var Appearance_$ = __webpack_require__(183);
95710
96155
  /*******************************************************************************
95711
96156
  *
95712
96157
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95786,8 +96231,8 @@ Object .assign (Object .setPrototypeOf (Appearance .prototype, Shape_X3DAppearan
95786
96231
 
95787
96232
  browser .getRenderingProperties () ._ContentScale .addInterest ("set_contentScale__", this);
95788
96233
 
95789
- this ._alphaMode .addInterest ("set_alphaMode__", this);
95790
- this ._alphaCutoff .addInterest ("set_alphaCutoff__", this);
96234
+ this ._alphaMode .addInterest ("set_alphaMode__", this);
96235
+ this ._alphaCutoff .addInterest ("set_alphaCutoff__", this);
95791
96236
  this ._pointProperties .addInterest ("set_pointProperties__", this);
95792
96237
  this ._lineProperties .addInterest ("set_lineProperties__", this);
95793
96238
  this ._fillProperties .addInterest ("set_fillProperties__", this);
@@ -96101,11 +96546,11 @@ Object .assign (Object .setPrototypeOf (Appearance .prototype, Shape_X3DAppearan
96101
96546
  },
96102
96547
  set_transparent__ ()
96103
96548
  {
96104
- this .setTransparent (!!(this .stylePropertiesNode [3] ?.isTransparent () ||
96105
- this .materialNode ?.isTransparent () ||
96106
- this .backMaterialNode ?.isTransparent () ||
96107
- this .textureNode ?.isTransparent () ||
96108
- this .blendModeNode));
96549
+ this .setTransparent (this .stylePropertiesNode [3] ?.isTransparent () ||
96550
+ this .materialNode ?.isTransparent () ||
96551
+ this .backMaterialNode ?.isTransparent () ||
96552
+ this .textureNode ?.isTransparent () ||
96553
+ this .blendModeNode);
96109
96554
  },
96110
96555
  traverse (type, renderObject)
96111
96556
  {
@@ -96254,7 +96699,7 @@ Object .assign (Object .setPrototypeOf (FillProperties .prototype, Shape_X3DAppe
96254
96699
  {
96255
96700
  this .filled = this ._filled .getValue ();
96256
96701
 
96257
- this .setTransparent (! this .filled);
96702
+ this .setTransparent (!this .filled);
96258
96703
  },
96259
96704
  set_hatched__ ()
96260
96705
  {
@@ -96277,7 +96722,7 @@ Object .assign (Object .setPrototypeOf (FillProperties .prototype, Shape_X3DAppe
96277
96722
  },
96278
96723
  setTransparent (value)
96279
96724
  {
96280
- if (value !== this ._transparent .getValue ())
96725
+ if (!!value !== this ._transparent .getValue ())
96281
96726
  this ._transparent = value;
96282
96727
  },
96283
96728
  isTransparent ()
@@ -96607,7 +97052,7 @@ Object .assign (Object .setPrototypeOf (X3DMaterialNode .prototype, Shape_X3DApp
96607
97052
  {
96608
97053
  setTransparent (value)
96609
97054
  {
96610
- if (value !== this ._transparent .getValue ())
97055
+ if (!!value !== this ._transparent .getValue ())
96611
97056
  this ._transparent = value;
96612
97057
  },
96613
97058
  isTransparent ()
@@ -97027,7 +97472,7 @@ Object .assign (Object .setPrototypeOf (X3DOneSidedMaterialNode .prototype, Shap
97027
97472
  },
97028
97473
  set_transparent__ ()
97029
97474
  {
97030
- this .setTransparent (!! this .transparency);
97475
+ this .setTransparent (this .transparency);
97031
97476
  },
97032
97477
  getBaseTexture ()
97033
97478
  {
@@ -97355,7 +97800,7 @@ Object .assign (Object .setPrototypeOf (Material .prototype, Shape_X3DOneSidedMa
97355
97800
  },
97356
97801
  set_transparent__ ()
97357
97802
  {
97358
- this .setTransparent (!!(this .getTransparency () || this .diffuseTextureNode ?.isTransparent ()));
97803
+ this .setTransparent (this .getTransparency () || this .diffuseTextureNode ?.isTransparent ());
97359
97804
  },
97360
97805
  createShader (key, geometryContext, renderContext)
97361
97806
  {
@@ -97777,7 +98222,7 @@ Object .assign (Object .setPrototypeOf (PhysicalMaterial .prototype, Shape_X3DOn
97777
98222
  },
97778
98223
  set_transparent__ ()
97779
98224
  {
97780
- this .setTransparent (!!(this .getTransparency () || this .baseTextureNode ?.isTransparent ()));
98225
+ this .setTransparent (this .getTransparency () || this .baseTextureNode ?.isTransparent ());
97781
98226
  },
97782
98227
  createShader (key, geometryContext, renderContext)
97783
98228
  {
@@ -98235,7 +98680,7 @@ Object .assign (Object .setPrototypeOf (X3DShapeNode .prototype, Core_X3DChildNo
98235
98680
  },
98236
98681
  setTransparent (value)
98237
98682
  {
98238
- this .transparent = value;
98683
+ this .transparent = !!value;
98239
98684
  },
98240
98685
  getAlphaMode ()
98241
98686
  {
@@ -98457,7 +98902,9 @@ Object .assign (Object .setPrototypeOf (Shape .prototype, Shape_X3DShapeNode .pr
98457
98902
  {
98458
98903
  case Rendering_TraverseType .POINTER:
98459
98904
  {
98460
- renderObject .addPointingShape (this);
98905
+ if (this ._pointerEvents .getValue ())
98906
+ renderObject .addPointingShape (this);
98907
+
98461
98908
  break;
98462
98909
  }
98463
98910
  case Rendering_TraverseType .PICKING:
@@ -98547,14 +98994,15 @@ Object .defineProperties (Shape,
98547
98994
  fieldDefinitions:
98548
98995
  {
98549
98996
  value: new Base_FieldDefinitionArray ([
98550
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
98551
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "castShadow", new x_ite_Fields .SFBool (true)),
98552
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "visible", new x_ite_Fields .SFBool (true)),
98553
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "bboxDisplay", new x_ite_Fields .SFBool ()),
98554
- new Base_X3DFieldDefinition (Base_X3DConstants .initializeOnly, "bboxSize", new x_ite_Fields .SFVec3f (-1, -1, -1)),
98555
- new Base_X3DFieldDefinition (Base_X3DConstants .initializeOnly, "bboxCenter", new x_ite_Fields .SFVec3f ()),
98556
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "appearance", new x_ite_Fields .SFNode ()),
98557
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "geometry", new x_ite_Fields .SFNode ()),
98997
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
98998
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pointerEvents", new x_ite_Fields .SFBool (true)), // skip test
98999
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "castShadow", new x_ite_Fields .SFBool (true)),
99000
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "visible", new x_ite_Fields .SFBool (true)),
99001
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "bboxDisplay", new x_ite_Fields .SFBool ()),
99002
+ new Base_X3DFieldDefinition (Base_X3DConstants .initializeOnly, "bboxSize", new x_ite_Fields .SFVec3f (-1, -1, -1)),
99003
+ new Base_X3DFieldDefinition (Base_X3DConstants .initializeOnly, "bboxCenter", new x_ite_Fields .SFVec3f ()),
99004
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "appearance", new x_ite_Fields .SFNode ()),
99005
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "geometry", new x_ite_Fields .SFNode ()),
98558
99006
  ]),
98559
99007
  enumerable: true,
98560
99008
  },
@@ -98785,7 +99233,7 @@ Object .assign (Object .setPrototypeOf (TwoSidedMaterial .prototype, Shape_X3DMa
98785
99233
  },
98786
99234
  set_transparent__ ()
98787
99235
  {
98788
- this .setTransparent (!!(this ._transparency .getValue () || (this ._separateBackColor .getValue () && this ._backTransparency .getValue ())));
99236
+ this .setTransparent (this ._transparency .getValue () || (this ._separateBackColor .getValue () && this ._backTransparency .getValue ()));
98789
99237
  },
98790
99238
  getMaterialKey: Shape_Material .prototype .getMaterialKey,
98791
99239
  getBaseTexture: Shape_Material .prototype .getBaseTexture,
@@ -98961,8 +99409,7 @@ Object .assign (Object .setPrototypeOf (UnlitMaterial .prototype, Shape_X3DOneSi
98961
99409
  },
98962
99410
  set_transparent__ ()
98963
99411
  {
98964
- this .setTransparent (!!(this .getTransparency () ||
98965
- this .getEmissiveTexture () ?.isTransparent ()));
99412
+ this .setTransparent (this .getTransparency () || this .getEmissiveTexture () ?.isTransparent ());
98966
99413
  },
98967
99414
  createShader (key, geometryContext, renderContext)
98968
99415
  {
@@ -99124,7 +99571,6 @@ const Components_Shape_default_ = {
99124
99571
  x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_default_);
99125
99572
  /* harmony default export */ const Components_Shape = (Components_Shape_default_);
99126
99573
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundProcessingNode.js
99127
- /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(52);
99128
99574
  /*******************************************************************************
99129
99575
  *
99130
99576
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99178,6 +99624,7 @@ x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_defaul
99178
99624
 
99179
99625
 
99180
99626
 
99627
+
99181
99628
  function X3DSoundProcessingNode (executionContext)
99182
99629
  {
99183
99630
  Core_X3DChildNode .call (this, executionContext);
@@ -99185,13 +99632,13 @@ function X3DSoundProcessingNode (executionContext)
99185
99632
 
99186
99633
  this .addType (Base_X3DConstants .X3DSoundProcessingNode);
99187
99634
 
99188
- this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (true),
99189
- Base_X3DConstants .inputOutput, "active", new x_ite_Fields .SFBool ());
99635
+ this .addChildObjects (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool (true));
99190
99636
 
99191
99637
  const audioContext = this .getBrowser () .getAudioContext ();
99192
99638
 
99193
- this .childNodes = [ ];
99194
- this .gainNode = new GainNode (audioContext);
99639
+ this .childNodes = [ ];
99640
+ this .audioDestination = new GainNode (audioContext, { gain: 0 });
99641
+ this .audioSource = new GainNode (audioContext, { gain: 1 });
99195
99642
  }
99196
99643
 
99197
99644
  Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_X3DChildNode .prototype),
@@ -99202,35 +99649,63 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_
99202
99649
  Core_X3DChildNode .prototype .initialize .call (this);
99203
99650
  Time_X3DTimeDependentNode .prototype .initialize .call (this);
99204
99651
 
99205
- this ._active .addInterest ("set_gain__", this);
99652
+ this ._enabled .addInterest ("set_enabled__", this);
99206
99653
  this ._gain .addInterest ("set_gain__", this);
99207
99654
  this ._channelCount .addInterest ("set_channelCount__", this);
99208
99655
  this ._channelCountMode .addInterest ("set_channelCountMode__", this);
99209
99656
  this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
99210
99657
  this ._children .addInterest ("set_children__", this);
99211
- this ._active .addInterest ("set_active__", this);
99212
99658
 
99659
+ this .set_enabled__ ();
99213
99660
  this .set_gain__ ();
99214
99661
  this .set_channelCount__ ();
99215
99662
  this .set_channelCountMode__ ();
99216
99663
  this .set_channelInterpretation__ ();
99217
99664
  this .set_children__ ();
99218
99665
  },
99666
+ getAudioDestination ()
99667
+ {
99668
+ return this .audioDestination;
99669
+ },
99219
99670
  getAudioSource ()
99220
99671
  {
99221
- return this .gainNode;
99672
+ return this .audioSource;
99222
99673
  },
99223
99674
  getSoundProcessor ()
99224
99675
  {
99225
- return this .gainNode;
99676
+ return this .audioSource;
99677
+ },
99678
+ set_enabled__ ()
99679
+ {
99680
+ this .audioDestination .disconnect ();
99681
+
99682
+ if (this ._enabled .getValue ())
99683
+ {
99684
+ this .set_gain__ ();
99685
+ this .set_channelCountMode__ ();
99686
+ this .set_channelInterpretation__ ();
99687
+
99688
+ this .audioDestination .connect (this .getSoundProcessor ());
99689
+ }
99690
+ else
99691
+ {
99692
+ this .audioDestination .gain .value = 1;
99693
+ this .audioDestination .channelCountMode = "max";
99694
+ this .audioDestination .channelInterpretation = "speakers";
99695
+
99696
+ this .audioDestination .connect (this .audioSource);
99697
+ }
99226
99698
  },
99227
99699
  set_gain__ ()
99228
99700
  {
99229
- this .gainNode .gain .value = this ._active .getValue () ? this ._gain .getValue () : 1;
99701
+ if (!this ._enabled .getValue ())
99702
+ return;
99703
+
99704
+ this .audioDestination .gain .value = this ._gain .getValue ();
99230
99705
  },
99231
99706
  set_channelCount__ ()
99232
99707
  {
99233
- this .getSoundProcessor () .channelCount = Math .max (this ._channelCount .getValue (), 1);
99708
+ this .audioDestination .channelCount = Math_Algorithm .clamp (this ._channelCount .getValue (), 1, 32);
99234
99709
  },
99235
99710
  set_channelCountMode__: (function ()
99236
99711
  {
@@ -99238,9 +99713,12 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_
99238
99713
 
99239
99714
  return function ()
99240
99715
  {
99716
+ if (!this ._enabled .getValue ())
99717
+ return;
99718
+
99241
99719
  const channelCountMode = this ._channelCountMode .getValue () .toLowerCase () .replaceAll ("_", "-");
99242
99720
 
99243
- this .getSoundProcessor () .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
99721
+ this .audioDestination .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
99244
99722
  };
99245
99723
  })(),
99246
99724
  set_channelInterpretation__: (function ()
@@ -99249,14 +99727,18 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_
99249
99727
 
99250
99728
  return function ()
99251
99729
  {
99730
+ if (!this ._enabled .getValue ())
99731
+ return;
99732
+
99252
99733
  const channelInterpretation = this ._channelInterpretation .getValue () .toLowerCase ();
99253
99734
 
99254
- this .getSoundProcessor () .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
99735
+ this .audioDestination .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
99255
99736
  };
99256
99737
  })(),
99257
99738
  set_children__ ()
99258
99739
  {
99259
- this .set_disconnect__ ();
99740
+ for (const childNode of this .childNodes)
99741
+ childNode .getAudioSource () .disconnect (this .audioDestination);
99260
99742
 
99261
99743
  this .childNodes .length = 0;
99262
99744
 
@@ -99286,50 +99768,8 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Core_
99286
99768
  }
99287
99769
  }
99288
99770
 
99289
- this .set_active__ ();
99290
- },
99291
- set_disconnect__ ()
99292
- {
99293
- for (const childNode of this .childNodes)
99294
- X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .disconnect (this .gainNode));
99295
-
99296
99771
  for (const childNode of this .childNodes)
99297
- X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .disconnect (this .getSoundProcessor ()));
99298
- },
99299
- set_active__ ()
99300
- {
99301
- this .set_disconnect__ ();
99302
-
99303
- if (this ._active .getValue ())
99304
- {
99305
- for (const childNode of this .childNodes)
99306
- X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .connect (this .getSoundProcessor ()), true);
99307
- }
99308
- else
99309
- {
99310
- for (const childNode of this .childNodes)
99311
- X3DSoundProcessingNode_$.try (() => childNode .getAudioSource () .connect (this .gainNode), true);
99312
- }
99313
- },
99314
- set_start ()
99315
- {
99316
- if (!this ._active .getValue ())
99317
- this ._active = true;
99318
- },
99319
- set_pause ()
99320
- {
99321
- if (this ._active .getValue ())
99322
- this ._active = false;
99323
- },
99324
- set_resume ()
99325
- {
99326
- if (!this ._active .getValue ())
99327
- this ._active = true;
99328
- },
99329
- set_stop ()
99330
- {
99331
- if (this ._active .getValue ())
99332
- this ._active = false;
99772
+ childNode .getAudioSource () .connect (this .audioDestination);
99333
99773
  },
99334
99774
  set_time ()
99335
99775
  {
@@ -99424,11 +99864,12 @@ function Analyser (executionContext)
99424
99864
 
99425
99865
  const audioContext = this .getBrowser () .getAudioContext ();
99426
99866
 
99427
- this .analyzerNode = new AnalyserNode (audioContext);
99428
- this .byteFrequencyData = new Uint8Array (this .analyzerNode .frequencyBinCount);
99429
- this .byteTimeDomainData = new Uint8Array (this .analyzerNode .frequencyBinCount);
99867
+ this .analyserNode = new AnalyserNode (audioContext);
99868
+ this .byteFrequencyData = new Uint8Array (this .analyserNode .frequencyBinCount);
99869
+ this .byteTimeDomainData = new Uint8Array (this .analyserNode .frequencyBinCount);
99430
99870
 
99431
- this .analyzerNode .connect (this .getAudioSource ());
99871
+ this .getAudioDestination () .connect (this .analyserNode);
99872
+ this .analyserNode .connect (this .getAudioSource ());
99432
99873
  }
99433
99874
 
99434
99875
  Object .assign (Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProcessingNode .prototype),
@@ -99448,13 +99889,13 @@ Object .assign (Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProce
99448
99889
  },
99449
99890
  getSoundProcessor ()
99450
99891
  {
99451
- return this .analyzerNode;
99892
+ return this .analyserNode;
99452
99893
  },
99453
99894
  set_fftSize__ ()
99454
99895
  {
99455
- this .analyzerNode .fftSize = Math_Algorithm .clamp (Math_Algorithm .nextPowerOfTwo (this ._fftSize .getValue ()), 32, 32768);
99896
+ this .analyserNode .fftSize = Math_Algorithm .clamp (Math_Algorithm .nextPowerOfTwo (this ._fftSize .getValue ()), 32, 32768);
99456
99897
 
99457
- this ._frequencyBinCount = this .analyzerNode .frequencyBinCount;
99898
+ this ._frequencyBinCount = this .analyserNode .frequencyBinCount;
99458
99899
  },
99459
99900
  set_decibels__ ()
99460
99901
  {
@@ -99462,20 +99903,20 @@ Object .assign (Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProce
99462
99903
  minDecibels = Math .min (this ._minDecibels .getValue (), 0),
99463
99904
  maxDecibels = Math .min (this ._maxDecibels .getValue (), 0);
99464
99905
 
99465
- this .analyzerNode .minDecibels = Math .min (minDecibels, maxDecibels);
99466
- this .analyzerNode .maxDecibels = Math .max (minDecibels, maxDecibels);
99906
+ this .analyserNode .minDecibels = Math .min (minDecibels, maxDecibels);
99907
+ this .analyserNode .maxDecibels = Math .max (minDecibels, maxDecibels);
99467
99908
  },
99468
99909
  set_smoothingTimeConstant__ ()
99469
99910
  {
99470
- this .analyzerNode .smoothingTimeConstant = Math_Algorithm .clamp (this ._smoothingTimeConstant .getValue (), 0, 1);
99911
+ this .analyserNode .smoothingTimeConstant = Math_Algorithm .clamp (this ._smoothingTimeConstant .getValue (), 0, 1);
99471
99912
  },
99472
99913
  set_time ()
99473
99914
  {
99474
99915
  Sound_X3DSoundProcessingNode .prototype .set_time .call (this);
99475
99916
 
99476
99917
  const
99477
- analyzerNode = this .analyzerNode,
99478
- frequencyBinCount = analyzerNode .frequencyBinCount;
99918
+ analyserNode = this .analyserNode,
99919
+ frequencyBinCount = analyserNode .frequencyBinCount;
99479
99920
 
99480
99921
  if (this .byteFrequencyData .length !== frequencyBinCount)
99481
99922
  {
@@ -99488,14 +99929,14 @@ Object .assign (Object .setPrototypeOf (Analyser .prototype, Sound_X3DSoundProce
99488
99929
  this ._floatFrequencyData .length = frequencyBinCount;
99489
99930
  this ._floatTimeDomainData .length = frequencyBinCount;
99490
99931
 
99491
- analyzerNode .getByteFrequencyData (this .byteFrequencyData);
99492
- analyzerNode .getByteTimeDomainData (this .byteTimeDomainData);
99932
+ analyserNode .getByteFrequencyData (this .byteFrequencyData);
99933
+ analyserNode .getByteTimeDomainData (this .byteTimeDomainData);
99493
99934
 
99494
99935
  this ._byteFrequencyData .getValue () .set (this .byteFrequencyData);
99495
99936
  this ._byteTimeDomainData .getValue () .set (this .byteTimeDomainData);
99496
99937
 
99497
- analyzerNode .getFloatFrequencyData (this ._floatFrequencyData .shrinkToFit ());
99498
- analyzerNode .getFloatTimeDomainData (this ._floatTimeDomainData .shrinkToFit ());
99938
+ analyserNode .getFloatFrequencyData (this ._floatFrequencyData .shrinkToFit ());
99939
+ analyserNode .getFloatTimeDomainData (this ._floatTimeDomainData .shrinkToFit ());
99499
99940
 
99500
99941
  this ._byteFrequencyData .addEvent ();
99501
99942
  this ._byteTimeDomainData .addEvent ();
@@ -99629,7 +100070,7 @@ function X3DSoundSourceNode (executionContext)
99629
100070
 
99630
100071
  const audioContext = this .getBrowser () .getAudioContext ();
99631
100072
 
99632
- this .gainNode = new GainNode (audioContext);
100073
+ this .audioSource = new GainNode (audioContext, { gain: 0 });
99633
100074
  this .mediaElement = null;
99634
100075
  }
99635
100076
 
@@ -99647,7 +100088,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DC
99647
100088
  },
99648
100089
  getAudioSource ()
99649
100090
  {
99650
- return this .gainNode;
100091
+ return this .audioSource;
99651
100092
  },
99652
100093
  setMediaElement (value)
99653
100094
  {
@@ -99689,7 +100130,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Core_X3DC
99689
100130
  },
99690
100131
  set_gain__ ()
99691
100132
  {
99692
- this .gainNode .gain .value = this ._gain .getValue ();
100133
+ this .audioSource .gain .value = this ._gain .getValue ();
99693
100134
  },
99694
100135
  set_pitch ()
99695
100136
  { },
@@ -99764,7 +100205,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
99764
100205
  x_ite_Namespace .add ("X3DSoundSourceNode", "x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
99765
100206
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
99766
100207
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
99767
- /* provided dependency */ var AudioClip_$ = __webpack_require__(52);
100208
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(183);
99768
100209
  /*******************************************************************************
99769
100210
  *
99770
100211
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100066,7 +100507,6 @@ const X3DSoundNode_default_ = X3DSoundNode;
100066
100507
  x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3DSoundNode_default_);
100067
100508
  /* harmony default export */ const Sound_X3DSoundNode = (X3DSoundNode_default_);
100068
100509
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundDestinationNode.js
100069
- /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(52);
100070
100510
  /*******************************************************************************
100071
100511
  *
100072
100512
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100118,6 +100558,7 @@ x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3D
100118
100558
 
100119
100559
 
100120
100560
 
100561
+
100121
100562
  function X3DSoundDestinationNode (executionContext)
100122
100563
  {
100123
100564
  Sound_X3DSoundNode .call (this, executionContext);
@@ -100126,8 +100567,8 @@ function X3DSoundDestinationNode (executionContext)
100126
100567
 
100127
100568
  const audioContext = this .getBrowser () .getAudioContext ();
100128
100569
 
100129
- this .childNodes = [ ];
100130
- this .gainNode = new GainNode (audioContext);
100570
+ this .childNodes = [ ];
100571
+ this .audioDestination = new GainNode (audioContext, { gain: 0 });
100131
100572
  }
100132
100573
 
100133
100574
  Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Sound_X3DSoundNode .prototype),
@@ -100138,50 +100579,40 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
100138
100579
 
100139
100580
  this .getLive () .addInterest ("set_enabled__", this);
100140
100581
 
100141
- this ._enabled .addInterest ("set_enabled__", this);
100142
- this ._gain .addInterest ("set_gain__", this);
100143
- this ._children .addInterest ("set_children__", this);
100582
+ this ._enabled .addInterest ("set_enabled__", this);
100583
+ this ._gain .addInterest ("set_gain__", this);
100584
+ this ._channelCount .addInterest ("set_channelCount__", this);
100585
+ this ._channelCountMode .addInterest ("set_channelCountMode__", this);
100586
+ this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
100587
+ this ._children .addInterest ("set_children__", this);
100144
100588
 
100145
100589
  this .set_enabled__ ();
100146
100590
  this .set_gain__ ();
100591
+ this .set_channelCount__ ();
100592
+ this .set_channelCountMode__ ();
100593
+ this .set_channelInterpretation__ ();
100147
100594
  this .set_children__ ();
100148
100595
  },
100149
- getAudioSource ()
100596
+ getAudioDestination ()
100150
100597
  {
100151
- return this .gainNode;
100598
+ return this .audioDestination;
100152
100599
  },
100153
100600
  set_enabled__ ()
100154
100601
  {
100155
100602
  if (this ._enabled .getValue () && this .getLive () .getValue ())
100156
- {
100157
- this ._channelCount .addInterest ("set_channelCount__", this);
100158
- this ._channelCountMode .addInterest ("set_channelCountMode__", this);
100159
- this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
100160
-
100161
- this .gainNode .connect (this .getSoundDestination ());
100162
-
100163
- this .set_channelCount__ ();
100164
- this .set_channelCountMode__ ();
100165
- this .set_channelInterpretation__ ();
100166
- }
100603
+ this .audioDestination .connect (this .getSoundDestination ());
100167
100604
  else
100168
- {
100169
- this ._channelCount .removeInterest ("set_channelCount__", this);
100170
- this ._channelCountMode .removeInterest ("set_channelCountMode__", this);
100171
- this ._channelInterpretation .removeInterest ("set_channelInterpretation__", this);
100172
-
100173
- this .gainNode .disconnect ();
100174
- }
100605
+ this .audioDestination .disconnect ();
100175
100606
 
100176
100607
  this ._isActive = this ._enabled;
100177
100608
  },
100178
100609
  set_gain__ ()
100179
100610
  {
100180
- this .gainNode .gain .value = this ._gain .getValue ();
100611
+ this .audioDestination .gain .value = this ._gain .getValue ();
100181
100612
  },
100182
100613
  set_channelCount__ ()
100183
100614
  {
100184
- this .getSoundDestination () .channelCount = Math .max (this ._channelCount .getValue (), 1);
100615
+ this .audioDestination .channelCount = Math_Algorithm .clamp (this ._channelCount .getValue (), 1, 32);
100185
100616
  },
100186
100617
  set_channelCountMode__: (function ()
100187
100618
  {
@@ -100191,7 +100622,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
100191
100622
  {
100192
100623
  const channelCountMode = this ._channelCountMode .getValue () .toLowerCase () .replaceAll ("_", "-");
100193
100624
 
100194
- this .getSoundDestination () .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
100625
+ this .audioDestination .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
100195
100626
  };
100196
100627
  })(),
100197
100628
  set_channelInterpretation__: (function ()
@@ -100202,13 +100633,13 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
100202
100633
  {
100203
100634
  const channelInterpretation = this ._channelInterpretation .getValue () .toLowerCase ();
100204
100635
 
100205
- this .getSoundDestination () .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
100636
+ this .audioDestination .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
100206
100637
  };
100207
100638
  })(),
100208
100639
  set_children__ ()
100209
100640
  {
100210
100641
  for (const childNode of this .childNodes)
100211
- X3DSoundDestinationNode_$.try (() => childNode .getAudioSource () .disconnect (this .gainNode));
100642
+ childNode .getAudioSource () .disconnect (this .audioDestination);
100212
100643
 
100213
100644
  this .childNodes .length = 0;
100214
100645
 
@@ -100239,7 +100670,7 @@ Object .assign (Object .setPrototypeOf (X3DSoundDestinationNode .prototype, Soun
100239
100670
  }
100240
100671
 
100241
100672
  for (const childNode of this .childNodes)
100242
- X3DSoundDestinationNode_$.try (() => childNode .getAudioSource () .connect (this .gainNode), true);
100673
+ childNode .getAudioSource () .connect (this .audioDestination);
100243
100674
  },
100244
100675
  });
100245
100676
 
@@ -100756,14 +101187,162 @@ x_ite_Namespace .add ("BufferAudioSource", "x_ite/Components/Sound/BufferAudioSo
100756
101187
 
100757
101188
 
100758
101189
 
101190
+
101191
+
100759
101192
  function X3DSoundChannelNode (executionContext)
100760
101193
  {
100761
101194
  Sound_X3DSoundNode .call (this, executionContext);
100762
101195
 
100763
101196
  this .addType (Base_X3DConstants .X3DSoundChannelNode);
101197
+
101198
+ const audioContext = this .getBrowser () .getAudioContext ();
101199
+
101200
+ this .childNodes = [ ];
101201
+ this .audioDestination = new GainNode (audioContext, { gain: 0 });
101202
+ this .audioSource = new GainNode (audioContext, { gain: 1 });
100764
101203
  }
100765
101204
 
100766
- Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3DSoundNode .prototype);
101205
+ Object .assign (Object .setPrototypeOf (X3DSoundChannelNode .prototype, Sound_X3DSoundNode .prototype),
101206
+ {
101207
+ initialize ()
101208
+ {
101209
+ Sound_X3DSoundNode .prototype .initialize .call (this);
101210
+
101211
+ this ._enabled .addInterest ("set_enabled__", this);
101212
+ this ._gain .addInterest ("set_gain__", this);
101213
+ this ._channelCount .addInterest ("set_channelCount__", this);
101214
+ this ._channelCountMode .addInterest ("set_channelCountMode__", this);
101215
+ this ._channelInterpretation .addInterest ("set_channelInterpretation__", this);
101216
+ this ._children .addInterest ("set_children__", this);
101217
+
101218
+ this .set_enabled__ ();
101219
+ this .set_gain__ ();
101220
+ this .set_channelCount__ ();
101221
+ this .set_channelCountMode__ ();
101222
+ this .set_channelInterpretation__ ();
101223
+ this .set_children__ ();
101224
+ },
101225
+ getAudioDestination ()
101226
+ {
101227
+ return this .audioDestination;
101228
+ },
101229
+ getAudioSource ()
101230
+ {
101231
+ return this .audioSource;
101232
+ },
101233
+ getSoundProcessor ()
101234
+ {
101235
+ return this .audioSource;
101236
+ },
101237
+ set_enabled__ ()
101238
+ {
101239
+ this .audioDestination .disconnect ();
101240
+
101241
+ if (this ._enabled .getValue ())
101242
+ {
101243
+ this .set_gain__ ();
101244
+ this .set_channelCountMode__ ();
101245
+ this .set_channelInterpretation__ ();
101246
+
101247
+ this .audioDestination .connect (this .getSoundProcessor ());
101248
+ }
101249
+ else
101250
+ {
101251
+ this .audioDestination .gain .value = 1;
101252
+ this .audioDestination .channelCountMode = "max";
101253
+ this .audioDestination .channelInterpretation = "speakers";
101254
+
101255
+ this .audioDestination .connect (this .audioSource);
101256
+ }
101257
+ },
101258
+ set_gain__ ()
101259
+ {
101260
+ if (!this ._enabled .getValue ())
101261
+ return;
101262
+
101263
+ this .audioDestination .gain .value = this ._gain .getValue ();
101264
+ },
101265
+ set_channelCount__ ()
101266
+ {
101267
+ this .audioDestination .channelCount = Math_Algorithm .clamp (this ._channelCount .getValue (), 1, 32);
101268
+ },
101269
+ set_channelCountMode__: (function ()
101270
+ {
101271
+ const channelCountModes = new Set (["max", "clamped-max", "explicit"]);
101272
+
101273
+ return function ()
101274
+ {
101275
+ if (!this ._enabled .getValue ())
101276
+ return;
101277
+
101278
+ const channelCountMode = this ._channelCountMode .getValue () .toLowerCase () .replaceAll ("_", "-");
101279
+
101280
+ this .audioDestination .channelCountMode = channelCountModes .has (channelCountMode) ? channelCountMode : "max";
101281
+ };
101282
+ })(),
101283
+ set_channelInterpretation__: (function ()
101284
+ {
101285
+ const channelInterpretations = new Set (["speakers", "discrete"]);
101286
+
101287
+ return function ()
101288
+ {
101289
+ if (!this ._enabled .getValue ())
101290
+ return;
101291
+
101292
+ const channelInterpretation = this ._channelInterpretation .getValue () .toLowerCase ();
101293
+
101294
+ this .audioDestination .channelInterpretation = channelInterpretations .has (channelInterpretation) ? channelInterpretation : "speakers";
101295
+ };
101296
+ })(),
101297
+ set_children__ ()
101298
+ {
101299
+ for (const [i, childNode] of this .childNodes .entries ())
101300
+ this .disconnectChildNode (i, childNode);
101301
+
101302
+ this .childNodes .length = 0;
101303
+
101304
+ for (const child of this ._children)
101305
+ {
101306
+ const childNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
101307
+
101308
+ if (!childNode)
101309
+ continue;
101310
+
101311
+ const type = childNode .getType ();
101312
+
101313
+ for (let t = type .length - 1; t >= 0; -- t)
101314
+ {
101315
+ switch (type [t])
101316
+ {
101317
+ case Base_X3DConstants .X3DSoundChannelNode:
101318
+ case Base_X3DConstants .X3DSoundProcessingNode:
101319
+ case Base_X3DConstants .X3DSoundSourceNode:
101320
+ this .childNodes .push (childNode);
101321
+ break;
101322
+ default:
101323
+ continue;
101324
+ }
101325
+
101326
+ break;
101327
+ }
101328
+ }
101329
+
101330
+ this .setChildNodes (this .childNodes);
101331
+
101332
+ for (const [i, childNode] of this .childNodes .entries ())
101333
+ this .connectChildNode (i, childNode);
101334
+ },
101335
+ setChildNodes (childNodes)
101336
+ { },
101337
+ connectChildNode (i, childNode)
101338
+ {
101339
+ childNode .getAudioSource () .connect (this .audioDestination);
101340
+ },
101341
+ disconnectChildNode (i, childNode)
101342
+ {
101343
+ childNode .getAudioSource () .disconnect (this .audioDestination);
101344
+ },
101345
+ });
100767
101346
 
100768
101347
  Object .defineProperties (X3DSoundChannelNode,
100769
101348
  {
@@ -100838,6 +101417,7 @@ x_ite_Namespace .add ("X3DSoundChannelNode", "x_ite/Components/Sound/X3DSoundCha
100838
101417
 
100839
101418
 
100840
101419
 
101420
+
100841
101421
  function ChannelMerger (executionContext)
100842
101422
  {
100843
101423
  Sound_X3DSoundChannelNode .call (this, executionContext);
@@ -100845,7 +101425,59 @@ function ChannelMerger (executionContext)
100845
101425
  this .addType (Base_X3DConstants .ChannelMerger);
100846
101426
  }
100847
101427
 
100848
- Object .setPrototypeOf (ChannelMerger .prototype, Sound_X3DSoundChannelNode .prototype);
101428
+ Object .assign (Object .setPrototypeOf (ChannelMerger .prototype, Sound_X3DSoundChannelNode .prototype),
101429
+ {
101430
+ initialize ()
101431
+ {
101432
+ Sound_X3DSoundChannelNode .prototype .initialize .call (this);
101433
+
101434
+ this ._enabled .addInterest ("set_children__", this);
101435
+ },
101436
+ setChildNodes (childNodes)
101437
+ {
101438
+ this .channelMergerNode ?.disconnect ();
101439
+
101440
+ if (this ._enabled .getValue ())
101441
+ {
101442
+ const
101443
+ audioContext = this .getBrowser () .getAudioContext (),
101444
+ numberOfInputs = Math_Algorithm .clamp (childNodes .length, 1, 32);
101445
+
101446
+ if (this .channelMergerNode ?.numberOfInputs !== numberOfInputs)
101447
+ this .channelMergerNode = new ChannelMergerNode (audioContext, { numberOfInputs });
101448
+
101449
+ this .channelMergerNode .connect (this .getAudioDestination ());
101450
+ }
101451
+ else
101452
+ {
101453
+ this .channelMergerNode = null;
101454
+ }
101455
+ },
101456
+ connectChildNode (i, childNode)
101457
+ {
101458
+ if (this .channelMergerNode)
101459
+ {
101460
+ if (i < 32)
101461
+ childNode .getAudioSource () .connect (this .channelMergerNode, 0, i);
101462
+ }
101463
+ else
101464
+ {
101465
+ childNode .getAudioSource () .connect (this .getAudioDestination ());
101466
+ }
101467
+ },
101468
+ disconnectChildNode (i, childNode)
101469
+ {
101470
+ if (this .channelMergerNode)
101471
+ {
101472
+ if (i < 32)
101473
+ childNode .getAudioSource () .disconnect (this .channelMergerNode, 0, i);
101474
+ }
101475
+ else
101476
+ {
101477
+ childNode .getAudioSource () .disconnect (this .getAudioDestination ());
101478
+ }
101479
+ },
101480
+ });
100849
101481
 
100850
101482
  Object .defineProperties (ChannelMerger,
100851
101483
  {
@@ -100872,9 +101504,9 @@ Object .defineProperties (ChannelMerger,
100872
101504
  fieldDefinitions:
100873
101505
  {
100874
101506
  value: new Base_FieldDefinitionArray ([
100875
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
100876
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
100877
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101507
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
101508
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
101509
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
100878
101510
 
100879
101511
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
100880
101512
 
@@ -100947,14 +101579,49 @@ x_ite_Namespace .add ("ChannelMerger", "x_ite/Components/Sound/ChannelMerger", C
100947
101579
 
100948
101580
 
100949
101581
 
101582
+
100950
101583
  function ChannelSelector (executionContext)
100951
101584
  {
100952
101585
  Sound_X3DSoundChannelNode .call (this, executionContext);
100953
101586
 
100954
101587
  this .addType (Base_X3DConstants .ChannelSelector);
101588
+
101589
+ const audioContext = this .getBrowser () .getAudioContext ();
101590
+
101591
+ this .channelSplitterNode = new ChannelSplitterNode (audioContext);
100955
101592
  }
100956
101593
 
100957
- Object .setPrototypeOf (ChannelSelector .prototype, Sound_X3DSoundChannelNode .prototype);
101594
+ Object .assign (Object .setPrototypeOf (ChannelSelector .prototype, Sound_X3DSoundChannelNode .prototype),
101595
+ {
101596
+ initialize ()
101597
+ {
101598
+ Sound_X3DSoundChannelNode .prototype .initialize .call (this);
101599
+
101600
+ this ._channelSelection .addInterest ("set_channelSelection__", this);
101601
+
101602
+ this .set_channelSelection__ ();
101603
+ },
101604
+ getSoundProcessor ()
101605
+ {
101606
+ return this .channelSplitterNode;
101607
+ },
101608
+ set_channelSelection__ ()
101609
+ {
101610
+ const
101611
+ audioContext = this .getBrowser () .getAudioContext (),
101612
+ channelSelection = Math_Algorithm .clamp (this ._channelSelection .getValue (), 0, 31),
101613
+ numberOfOutputs = channelSelection + 1;
101614
+
101615
+ this .channelSplitterNode .disconnect ();
101616
+
101617
+ if (this .channelSplitterNode .numberOfOutputs !== numberOfOutputs)
101618
+ this .channelSplitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs });
101619
+
101620
+ this .channelSplitterNode .connect (this .getAudioSource (), channelSelection);
101621
+
101622
+ this .set_enabled__ ();
101623
+ },
101624
+ });
100958
101625
 
100959
101626
  Object .defineProperties (ChannelSelector,
100960
101627
  {
@@ -100981,9 +101648,9 @@ Object .defineProperties (ChannelSelector,
100981
101648
  fieldDefinitions:
100982
101649
  {
100983
101650
  value: new Base_FieldDefinitionArray ([
100984
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
100985
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
100986
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101651
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
101652
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
101653
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
100987
101654
 
100988
101655
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
100989
101656
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelSelection", new x_ite_Fields .SFInt32 (0)),
@@ -101057,14 +101724,101 @@ x_ite_Namespace .add ("ChannelSelector", "x_ite/Components/Sound/ChannelSelector
101057
101724
 
101058
101725
 
101059
101726
 
101727
+
101728
+
101060
101729
  function ChannelSplitter (executionContext)
101061
101730
  {
101062
101731
  Sound_X3DSoundChannelNode .call (this, executionContext);
101063
101732
 
101064
101733
  this .addType (Base_X3DConstants .ChannelSplitter);
101734
+
101735
+ this .outputNodes = [ ];
101065
101736
  }
101066
101737
 
101067
- Object .setPrototypeOf (ChannelSplitter .prototype, Sound_X3DSoundChannelNode .prototype);
101738
+ Object .assign (Object .setPrototypeOf (ChannelSplitter .prototype, Sound_X3DSoundChannelNode .prototype),
101739
+ {
101740
+ initialize ()
101741
+ {
101742
+ Sound_X3DSoundChannelNode .prototype .initialize .call (this);
101743
+
101744
+ this ._enabled .addInterest ("set_outputs__", this);
101745
+ this ._outputs .addInterest ("set_outputs__", this);
101746
+
101747
+ this .set_outputs__ ();
101748
+ },
101749
+ set_outputs__ ()
101750
+ {
101751
+ if (this .channelSplitterNode)
101752
+ {
101753
+ this .channelSplitterNode .disconnect ();
101754
+ }
101755
+ else
101756
+ {
101757
+ for (const outputNode of this .outputNodes)
101758
+ this .getAudioSource () .disconnect (outputNode .getAudioDestination ());
101759
+ }
101760
+
101761
+ this .outputNodes .length = 0;
101762
+
101763
+ for (const child of this ._outputs)
101764
+ {
101765
+ const outputNode = Base_X3DCast (Base_X3DConstants .X3DChildNode, child);
101766
+
101767
+ if (!outputNode)
101768
+ continue;
101769
+
101770
+ const type = outputNode .getType ();
101771
+
101772
+ for (let t = type .length - 1; t >= 0; -- t)
101773
+ {
101774
+ switch (type [t])
101775
+ {
101776
+ case Base_X3DConstants .X3DSoundChannelNode:
101777
+ case Base_X3DConstants .X3DSoundDestinationNode:
101778
+ case Base_X3DConstants .X3DSoundProcessingNode:
101779
+ this .outputNodes .push (outputNode);
101780
+ break;
101781
+ default:
101782
+ continue;
101783
+ }
101784
+
101785
+ break;
101786
+ }
101787
+ }
101788
+
101789
+ if (this .channelSplitterNode)
101790
+ this .getAudioSource () .disconnect (this .channelSplitterNode);
101791
+
101792
+ if (this ._enabled .getValue ())
101793
+ {
101794
+ const
101795
+ audioContext = this .getBrowser () .getAudioContext (),
101796
+ numberOfOutputs = Math_Algorithm .clamp (this .outputNodes .length, 1, 32);
101797
+
101798
+ if (this .channelSplitterNode ?.numberOfOutputs !== numberOfOutputs)
101799
+ this .channelSplitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs });
101800
+
101801
+ this .getAudioSource () .connect (this .channelSplitterNode);
101802
+ }
101803
+ else
101804
+ {
101805
+ this .channelSplitterNode = null;
101806
+ }
101807
+
101808
+ if (this .channelSplitterNode)
101809
+ {
101810
+ const length = Math .min (this .outputNodes .length, 32);
101811
+
101812
+ for (let i = 0; i < length; ++ i)
101813
+ this .channelSplitterNode .connect (this .outputNodes [i] .getAudioDestination (), i);
101814
+ }
101815
+ else
101816
+ {
101817
+ for (const outputNode of this .outputNodes)
101818
+ this .getAudioSource () .connect (outputNode .getAudioDestination ());
101819
+ }
101820
+ },
101821
+ });
101068
101822
 
101069
101823
  Object .defineProperties (ChannelSplitter,
101070
101824
  {
@@ -101091,9 +101845,9 @@ Object .defineProperties (ChannelSplitter,
101091
101845
  fieldDefinitions:
101092
101846
  {
101093
101847
  value: new Base_FieldDefinitionArray ([
101094
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
101095
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
101096
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101848
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
101849
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
101850
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
101097
101851
 
101098
101852
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
101099
101853
 
@@ -101716,7 +102470,7 @@ const ListenerPointSource_default_ = ListenerPointSource;
101716
102470
  x_ite_Namespace .add ("ListenerPointSource", "x_ite/Components/Sound/ListenerPointSource", ListenerPointSource_default_);
101717
102471
  /* harmony default export */ const Sound_ListenerPointSource = (ListenerPointSource_default_);
101718
102472
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/MicrophoneSource.js
101719
- /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(52);
102473
+ /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(183);
101720
102474
  /*******************************************************************************
101721
102475
  *
101722
102476
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -101999,7 +102753,6 @@ function OscillatorSource (executionContext)
101999
102753
  const audioContext = this .getBrowser () .getAudioContext ();
102000
102754
 
102001
102755
  this .oscillatorNode = new OscillatorNode (audioContext);
102002
- this .mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 });
102003
102756
  }
102004
102757
 
102005
102758
  Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSoundSourceNode .prototype),
@@ -102045,11 +102798,11 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
102045
102798
  })(),
102046
102799
  set_frequency__ ()
102047
102800
  {
102048
- this .oscillatorNode .frequency .value = this ._frequency .getValue ();
102801
+ this .oscillatorNode .frequency .value = Math .max (this ._frequency .getValue (), 0);
102049
102802
  },
102050
102803
  set_detune__ ()
102051
102804
  {
102052
- this .oscillatorNode .detune .value = this ._detune .getValue ();
102805
+ this .oscillatorNode .detune .value = Math .max (this ._detune .getValue (), 0);
102053
102806
  },
102054
102807
  set_periodicWave__ ()
102055
102808
  {
@@ -102076,19 +102829,16 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
102076
102829
  this .set_frequency__ ();
102077
102830
  this .set_detune__ ();
102078
102831
 
102079
- this .oscillatorNode .connect (this .mergerNode, 0, 0);
102080
- this .oscillatorNode .connect (this .mergerNode, 0, 1);
102081
- this .mergerNode .connect (this .getAudioSource ());
102082
-
102832
+ this .oscillatorNode .connect (this .getAudioSource ());
102083
102833
  this .oscillatorNode .start ();
102084
102834
  },
102085
102835
  set_pause ()
102086
102836
  {
102087
- this .mergerNode .disconnect ();
102837
+ this .oscillatorNode .disconnect ();
102088
102838
  },
102089
102839
  set_resume ()
102090
102840
  {
102091
- this .mergerNode .connect (this .getAudioSource ());
102841
+ this .oscillatorNode .connect (this .getAudioSource ());
102092
102842
  },
102093
102843
  set_stop ()
102094
102844
  {
@@ -102364,28 +103114,37 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
102364
103114
 
102365
103115
  const
102366
103116
  audioContext = this .getBrowser () .getAudioContext (),
103117
+ gainNode = new GainNode (audioContext, { gain: 0 }),
102367
103118
  splitterNode = new ChannelSplitterNode (audioContext, { numberOfOutputs: 2 }),
102368
103119
  mergerNode = new ChannelMergerNode (audioContext, { numberOfInputs: 2 }),
102369
103120
  gainLeftNode = new GainNode (audioContext, { gain: 0 }),
102370
103121
  gainRightNode = new GainNode (audioContext, { gain: 0 });
102371
103122
 
102372
- splitterNode .connect (gainLeftNode, 0);
103123
+ gainNode .channelCount = 2;
103124
+ gainNode .channelCountMode = "explicit";
103125
+ gainNode .channelInterpretation = "speakers";
103126
+
103127
+ gainNode .connect (splitterNode);
103128
+ splitterNode .connect (gainLeftNode, 0);
102373
103129
  splitterNode .connect (gainRightNode, 1);
102374
103130
  gainLeftNode .connect (mergerNode, 0, 0);
102375
103131
  gainRightNode .connect (mergerNode, 0, 1);
102376
103132
  mergerNode .connect (audioContext .destination);
102377
103133
 
103134
+ this .gainNode = gainNode;
102378
103135
  this .splitterNode = splitterNode;
102379
103136
  this .gainLeftNode = gainLeftNode;
102380
103137
  this .gainRightNode = gainRightNode;
102381
103138
 
102382
- this .getLive () .addInterest ("set_live__", this);
103139
+ this .getLive () .addInterest ("set_live__", this);
102383
103140
  this ._traversed .addInterest ("set_live__", this);
102384
103141
 
102385
- this ._source .addInterest ("set_children__", this);
102386
- this ._children .addInterest ("set_children__", this);
103142
+ this ._intensity .addInterest ("set_intensity__", this);
103143
+ this ._source .addInterest ("set_children__", this);
103144
+ this ._children .addInterest ("set_children__", this);
102387
103145
 
102388
103146
  this .set_live__ ();
103147
+ this .set_intensity__ ();
102389
103148
  this .set_children__ ();
102390
103149
  },
102391
103150
  setTraversed (value)
@@ -102407,10 +103166,10 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
102407
103166
  {
102408
103167
  return this .currentTraversed;
102409
103168
  },
102410
- setVolume (volume, pan = 0.5)
103169
+ setGain (gain, pan = 0.5)
102411
103170
  {
102412
- this .gainLeftNode .gain .value = volume * (1 - pan ** 2);
102413
- this .gainRightNode .gain .value = volume * (1 - (1 - pan) ** 2);
103171
+ this .gainLeftNode .gain .value = gain * (1 - pan ** 2);
103172
+ this .gainRightNode .gain .value = gain * (1 - (1 - pan) ** 2);
102414
103173
  },
102415
103174
  set_live__ ()
102416
103175
  {
@@ -102421,13 +103180,17 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
102421
103180
  else
102422
103181
  {
102423
103182
  this .getBrowser () .sensorEvents () .removeInterest ("update", this);
102424
- this .setVolume (0);
103183
+ this .setGain (0);
102425
103184
  }
102426
103185
  },
103186
+ set_intensity__ ()
103187
+ {
103188
+ this .gainNode .gain .value = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1);
103189
+ },
102427
103190
  set_children__ ()
102428
103191
  {
102429
103192
  for (const childNode of this .childNodes)
102430
- childNode .getAudioSource () .disconnect (this .splitterNode);
103193
+ childNode .getAudioSource () .disconnect (this .gainNode);
102431
103194
 
102432
103195
  this .childNodes .length = 0;
102433
103196
 
@@ -102463,12 +103226,12 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
102463
103226
  }
102464
103227
 
102465
103228
  for (const childNode of this .childNodes)
102466
- childNode .getAudioSource () .connect (this .splitterNode);
103229
+ childNode .getAudioSource () .connect (this .gainNode);
102467
103230
  },
102468
103231
  update ()
102469
103232
  {
102470
103233
  if (!this .getTraversed ())
102471
- this .setVolume (0);
103234
+ this .setGain (0);
102472
103235
 
102473
103236
  this .setTraversed (false);
102474
103237
  },
@@ -102509,23 +103272,21 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
102509
103272
 
102510
103273
  if (min .distance < 1) // Radius of normalized sphere is 1.
102511
103274
  {
102512
- this .setVolume (Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1), pan);
103275
+ this .setGain (1, pan);
102513
103276
  }
102514
103277
  else
102515
103278
  {
102516
103279
  const
102517
- d1 = max .intersection .magnitude (), // Viewer is here at (0, 0, 0)
102518
- d2 = max .intersection .distance (min .intersection),
102519
- d = Math .min (d1 / d2, 1),
102520
- intensity = Math_Algorithm .clamp (this ._intensity .getValue (), 0, 1),
102521
- volume = intensity * d;
103280
+ d1 = max .intersection .magnitude (), // Viewer is here at (0, 0, 0)
103281
+ d2 = max .intersection .distance (min .intersection),
103282
+ d = Math .min (d1 / d2, 1);
102522
103283
 
102523
- this .setVolume (volume, pan);
103284
+ this .setGain (d, pan);
102524
103285
  }
102525
103286
  }
102526
103287
  else
102527
103288
  {
102528
- this .setVolume (0);
103289
+ this .setGain (0);
102529
103290
  }
102530
103291
  };
102531
103292
  })(),
@@ -103385,8 +104146,8 @@ const GifMedia_default_ = GifMedia;
103385
104146
  x_ite_Namespace .add ("GifMedia", "x_ite/Browser/Texturing/GifMedia", GifMedia_default_);
103386
104147
  /* harmony default export */ const Texturing_GifMedia = (GifMedia_default_);
103387
104148
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
103388
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(52);
103389
- /* provided dependency */ var SuperGif = __webpack_require__(247);
104149
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(183);
104150
+ /* provided dependency */ var SuperGif = __webpack_require__(432);
103390
104151
  /*******************************************************************************
103391
104152
  *
103392
104153
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -106665,7 +107426,7 @@ const gettext_default_ = gettext;
106665
107426
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
106666
107427
  /* harmony default export */ const locale_gettext = (gettext_default_);
106667
107428
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
106668
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(52);
107429
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(183);
106669
107430
  /*******************************************************************************
106670
107431
  *
106671
107432
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107095,7 +107856,7 @@ const TextureQuality_default_ = TextureQuality;
107095
107856
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
107096
107857
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
107097
107858
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
107098
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(52);
107859
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(183);
107099
107860
  /*******************************************************************************
107100
107861
  *
107101
107862
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107463,6 +108224,8 @@ Object .defineProperties (BrowserOptions,
107463
108224
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "QualityWhenMoving", new x_ite_Fields .SFString ("SAME")),
107464
108225
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Shading", new x_ite_Fields .SFString ("GOURAUD")),
107465
108226
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "MotionBlur", new x_ite_Fields .SFBool ()),
108227
+ // Always update geometries, even if browser is not live.
108228
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "AlwaysUpdateGeometries", new x_ite_Fields .SFBool ()),
107466
108229
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "AutoUpdate", new x_ite_Fields .SFBool ()),
107467
108230
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Cache", new x_ite_Fields .SFBool (true)),
107468
108231
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "ContentScale", new x_ite_Fields .SFDouble (1)),
@@ -107471,8 +108234,10 @@ Object .defineProperties (BrowserOptions,
107471
108234
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Gravity", new x_ite_Fields .SFDouble (9.80665)),
107472
108235
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "LoadUrlObjects", new x_ite_Fields .SFBool (true)),
107473
108236
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "LogarithmicDepthBuffer", new x_ite_Fields .SFBool ()),
107474
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Notifications", new x_ite_Fields .SFBool (true)),
108237
+ // A string, which is set to the *reference* field of metadata nodes, when they are created.
108238
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "MetadataReference", new x_ite_Fields .SFString ()),
107475
108239
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Multisampling", new x_ite_Fields .SFInt32 (4)),
108240
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Notifications", new x_ite_Fields .SFBool (true)),
107476
108241
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "OrderIndependentTransparency", new x_ite_Fields .SFBool ()),
107477
108242
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "StraightenHorizon", new x_ite_Fields .SFBool (true)),
107478
108243
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "Timings", new x_ite_Fields .SFBool ()),
@@ -107685,7 +108450,7 @@ const RenderingProperties_default_ = RenderingProperties;
107685
108450
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
107686
108451
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
107687
108452
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
107688
- /* provided dependency */ var Notification_$ = __webpack_require__(52);
108453
+ /* provided dependency */ var Notification_$ = __webpack_require__(183);
107689
108454
  /*******************************************************************************
107690
108455
  *
107691
108456
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107808,8 +108573,8 @@ const Notification_default_ = Notification;
107808
108573
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
107809
108574
  /* harmony default export */ const Core_Notification = (Notification_default_);
107810
108575
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
107811
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(944);
107812
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(52);
108576
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(403);
108577
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(183);
107813
108578
  /*******************************************************************************
107814
108579
  *
107815
108580
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108380,7 +109145,7 @@ Object .assign (Object .setPrototypeOf (ContextMenu .prototype, Base_X3DBaseNode
108380
109145
 
108381
109146
  // Reposition menu if to right or to low.
108382
109147
 
108383
- ul .offset ({ "left": event .pageX, "top": event .pageY }); // Do it again!
109148
+ ul .offset ({ "left": event .pageX, "top": event .pageY }); // Do it again!
108384
109149
 
108385
109150
  if (ul .offset () .left - ContextMenu_$(document) .scrollLeft () + ul .outerWidth () > ContextMenu_$(window) .width ())
108386
109151
  ul .offset ({ "left": ContextMenu_$(document) .scrollLeft () + Math .max (0, ContextMenu_$(window) .width () - ul .outerWidth ()) });
@@ -109612,13 +110377,18 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
109612
110377
  const values = this [_metadata] .get (name);
109613
110378
 
109614
110379
  if (values)
109615
- return Array .from (values);
110380
+ return values .slice ();
109616
110381
 
109617
110382
  return undefined;
109618
110383
  },
109619
110384
  getMetaDatas ()
109620
110385
  {
109621
- return new Map (this [_metadata]);
110386
+ const metadata = new Map ();
110387
+
110388
+ for (const [key, values] of this [_metadata])
110389
+ metadata .set (key, values .slice ());
110390
+
110391
+ return metadata;
109622
110392
  },
109623
110393
  addExportedNode (exportedName, node)
109624
110394
  {
@@ -109643,7 +110413,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
109643
110413
  throw new Error ("Couldn't update exported node: node must be of type X3DNode.");
109644
110414
 
109645
110415
  //if (node .getExecutionContext () !== this)
109646
- // throw new Error ("Couldn't update exported node: node does not belong to this execution context.");
110416
+ // throw new Error ("Couldn't update exported node: node does not belong to this execution context.");
109647
110417
 
109648
110418
  const exportedNode = new Execution_X3DExportedNode (this, exportedName, node);
109649
110419
 
@@ -110485,14 +111255,12 @@ const DataStorage_handler =
110485
111255
  if (property !== undefined)
110486
111256
  return property;
110487
111257
 
110488
- const string = target .getStorage () [target .getNameSpace () + key];
111258
+ const value = target .getStorage () [target .getNameSpace () + key];
110489
111259
 
110490
- if (string === undefined || string === "undefined" || string === null)
111260
+ if (String (value) .match (/^(?:undefined|null)$/))
110491
111261
  return target .getDefaultValue (key);
110492
111262
 
110493
- const value = JSON .parse (string);
110494
-
110495
- return value;
111263
+ return JSON .parse (value);
110496
111264
  },
110497
111265
  set (target, key, value)
110498
111266
  {
@@ -110561,7 +111329,7 @@ const DataStorage_default_ = DataStorage;
110561
111329
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
110562
111330
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
110563
111331
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
110564
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(52);
111332
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(183);
110565
111333
  /*******************************************************************************
110566
111334
  *
110567
111335
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -113084,8 +113852,8 @@ const X3DViewer_default_ = X3DViewer;
113084
113852
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
113085
113853
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
113086
113854
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
113087
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(82);
113088
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(52);
113855
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(287);
113856
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(183);
113089
113857
  /*******************************************************************************
113090
113858
  *
113091
113859
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -113957,8 +114725,8 @@ const ExamineViewer_default_ = ExamineViewer;
113957
114725
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
113958
114726
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
113959
114727
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
113960
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(82);
113961
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(52);
114728
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(287);
114729
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(183);
113962
114730
  /*******************************************************************************
113963
114731
  *
113964
114732
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114967,8 +115735,8 @@ const FlyViewer_default_ = FlyViewer;
114967
115735
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
114968
115736
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
114969
115737
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
114970
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(82);
114971
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(52);
115738
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(287);
115739
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(183);
114972
115740
  /*******************************************************************************
114973
115741
  *
114974
115742
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115299,8 +116067,8 @@ const NoneViewer_default_ = NoneViewer;
115299
116067
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
115300
116068
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
115301
116069
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
115302
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(82);
115303
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(52);
116070
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(287);
116071
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(183);
115304
116072
  /*******************************************************************************
115305
116073
  *
115306
116074
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116439,8 +117207,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
116439
117207
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
116440
117208
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
116441
117209
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
116442
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(82);
116443
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(52);
117210
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(287);
117211
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(183);
116444
117212
  /*******************************************************************************
116445
117213
  *
116446
117214
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117099,11 +117867,11 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
117099
117867
  {
117100
117868
  return this [_hit];
117101
117869
  },
117102
- addPointingShape (pickingContext)
117870
+ addPointingShape (pointingContext)
117103
117871
  {
117104
117872
  const id = ++ this [_id];
117105
117873
 
117106
- this [_pointingContexts] [id] = pickingContext;
117874
+ this [_pointingContexts] [id] = pointingContext;
117107
117875
 
117108
117876
  return id;
117109
117877
  },
@@ -117180,18 +117948,18 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
117180
117948
  if (Number .isInteger (hit .id) && hit .id > 0 && hit .id <= this [_id])
117181
117949
  {
117182
117950
  const
117183
- pickingContext = this [_pointingContexts] [hit .id],
117184
- shapeNode = pickingContext .shapeNode,
117951
+ pointingContext = this [_pointingContexts] [hit .id],
117952
+ shapeNode = pointingContext .shapeNode,
117185
117953
  appearanceNode = shapeNode .getAppearance (),
117186
117954
  geometryContext = shapeNode .getGeometryContext ();
117187
117955
 
117188
- hit .hitRay = pickingContext .renderObject .getHitRay ();
117189
- hit .sensors = pickingContext .sensors .slice ();
117190
- hit .layerNode = pickingContext .renderObject;
117956
+ hit .hitRay = pointingContext .renderObject .getHitRay ();
117957
+ hit .sensors = pointingContext .sensors .slice ();
117958
+ hit .layerNode = pointingContext .renderObject;
117191
117959
  hit .shapeNode = shapeNode;
117192
117960
 
117193
- hit .viewMatrix .assign (pickingContext .renderObject .getViewpoint () .getViewMatrix ());
117194
- hit .modelViewMatrix .assign (pickingContext .modelViewMatrix);
117961
+ hit .viewMatrix .assign (pointingContext .renderObject .getViewpoint () .getViewMatrix ());
117962
+ hit .modelViewMatrix .assign (pointingContext .modelViewMatrix);
117195
117963
 
117196
117964
  // A ParticleSystem has only a geometry context.
117197
117965
 
@@ -117588,10 +118356,12 @@ Object .assign (MultiSampleFrameBuffer .prototype,
117588
118356
  },
117589
118357
  clear ()
117590
118358
  {
117591
- const { context: gl, frameBuffer } = this;
118359
+ const { context: gl, frameBuffer, width, height } = this;
117592
118360
 
117593
118361
  gl .bindFramebuffer (gl .FRAMEBUFFER, frameBuffer);
117594
118362
 
118363
+ gl .viewport (0, 0, width, height);
118364
+ gl .scissor (0, 0, width, height);
117595
118365
  gl .clearColor (0, 0, 0, 0);
117596
118366
  gl .clear (gl .COLOR_BUFFER_BIT);
117597
118367
  },
@@ -117710,8 +118480,10 @@ Object .assign (Fallback .prototype,
117710
118480
  },
117711
118481
  clear ()
117712
118482
  {
117713
- const { context: gl } = this;
118483
+ const { context: gl, width, height } = this;
117714
118484
 
118485
+ gl .viewport (0, 0, width, height);
118486
+ gl .scissor (0, 0, width, height);
117715
118487
  gl .clearColor (0, 0, 0, 1);
117716
118488
  gl .clear (gl .COLOR_BUFFER_BIT);
117717
118489
  gl .blendFuncSeparate (gl .ONE, gl .ONE, gl .ZERO, gl .ONE_MINUS_SRC_ALPHA);
@@ -117727,7 +118499,7 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
117727
118499
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
117728
118500
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
117729
118501
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
117730
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(52);
118502
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(183);
117731
118503
  /*******************************************************************************
117732
118504
  *
117733
118505
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118629,7 +119401,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
118629
119401
  x_ite_Namespace .add ("X3DSoundContext", "x_ite/Browser/Sound/X3DSoundContext", X3DSoundContext_default_);
118630
119402
  /* harmony default export */ const Sound_X3DSoundContext = (X3DSoundContext_default_);
118631
119403
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing/KTXDecoder.js
118632
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(52);
119404
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(183);
118633
119405
  const KTXDecoder_default_ = class KTXDecoder
118634
119406
  {
118635
119407
  constructor (gl, externalKtxlib, scriptDir)
@@ -120182,7 +120954,7 @@ const Components_default_ = Components;
120182
120954
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
120183
120955
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
120184
120956
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
120185
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(52);
120957
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(183);
120186
120958
  /*******************************************************************************
120187
120959
  * MIT License
120188
120960
  *
@@ -120214,355 +120986,355 @@ x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
120214
120986
 
120215
120987
  class DOMIntegration
120216
120988
  {
120217
- constructor (browser)
120218
- {
120219
- this .browser = browser;
120220
- this .rootElement = undefined;
120221
- this .canvasObserver = new MutationObserver (() => this .processCanvasMutation (browser));
120989
+ constructor (browser)
120990
+ {
120991
+ this .browser = browser;
120992
+ this .rootElement = undefined;
120993
+ this .canvasObserver = new MutationObserver (() => this .processCanvasMutation (browser));
120222
120994
 
120223
- this .canvasObserver .observe (browser .getElement () [0], {
120224
- childList: true,
120225
- });
120995
+ this .canvasObserver .observe (browser .getElement () [0], {
120996
+ childList: true,
120997
+ });
120226
120998
 
120227
- this .processCanvasMutation (browser)
120228
- }
120999
+ this .processCanvasMutation (browser)
121000
+ }
120229
121001
 
120230
- processCanvasMutation (browser)
120231
- {
120232
- this .processRootElement (browser, browser .getElement () .children ("X3D") .get (-1));
120233
- }
121002
+ processCanvasMutation (browser)
121003
+ {
121004
+ this .processRootElement (browser, browser .getElement () .children ("X3D") .get (-1));
121005
+ }
120234
121006
 
120235
- async processRootElement (browser, rootElement)
120236
- {
120237
- try
120238
- {
120239
- if (rootElement === this .rootElement)
120240
- return;
121007
+ async processRootElement (browser, rootElement)
121008
+ {
121009
+ try
121010
+ {
121011
+ if (rootElement === this .rootElement)
121012
+ return;
120241
121013
 
120242
- this .rootElement = rootElement;
121014
+ this .rootElement = rootElement;
120243
121015
 
120244
- if (rootElement)
120245
- {
120246
- // Display splash screen.
121016
+ if (rootElement)
121017
+ {
121018
+ // Display splash screen.
120247
121019
 
120248
- browser .setBrowserLoading (true);
120249
- browser .addLoadingObject (this);
121020
+ browser .setBrowserLoading (true);
121021
+ browser .addLoadingObject (this);
120250
121022
 
120251
- // Now also attached node property to each node element.
121023
+ // Now also attached node property to each node element.
120252
121024
 
120253
- const scene = browser .createScene ();
121025
+ const scene = browser .createScene ();
120254
121026
 
120255
- this .parser = new Parser_XMLParser (scene);
121027
+ this .parser = new Parser_XMLParser (scene);
120256
121028
 
120257
- this .parser .setInput (rootElement);
121029
+ this .parser .setInput (rootElement);
120258
121030
 
120259
- await new Promise (this .parser .parseIntoScene .bind (this .parser));
121031
+ await new Promise (this .parser .parseIntoScene .bind (this .parser));
120260
121032
 
120261
- browser .replaceWorld (scene);
121033
+ browser .replaceWorld (scene);
120262
121034
 
120263
- // Create an observer instance.
121035
+ // Create an observer instance.
120264
121036
 
120265
- this .observer = new MutationObserver (mutations =>
120266
- {
120267
- for (const mutation of mutations)
120268
- this .processMutation (mutation);
120269
- });
121037
+ this .observer = new MutationObserver (mutations =>
121038
+ {
121039
+ for (const mutation of mutations)
121040
+ this .processMutation (mutation);
121041
+ });
120270
121042
 
120271
- // Start observing, also catches inlined Inline elements.
121043
+ // Start observing, also catches inlined Inline elements.
120272
121044
 
120273
- this .observer .observe (rootElement, {
120274
- attributes: true,
120275
- childList: true,
120276
- characterData: false,
120277
- subtree: true,
120278
- attributeOldValue: true,
120279
- });
121045
+ this .observer .observe (rootElement, {
121046
+ attributes: true,
121047
+ childList: true,
121048
+ characterData: false,
121049
+ subtree: true,
121050
+ attributeOldValue: true,
121051
+ });
120280
121052
 
120281
- // Add Inline elements from initial scene, and connect to node events.
121053
+ // Add Inline elements from initial scene, and connect to node events.
120282
121054
 
120283
- this .processInlineElements (rootElement);
120284
- this .addEventDispatchersAll (rootElement);
121055
+ this .processInlineElements (rootElement);
121056
+ this .addEventDispatchersAll (rootElement);
120285
121057
 
120286
- browser .removeLoadingObject (this);
120287
- }
120288
- else
120289
- {
120290
- browser .replaceWorld (null);
120291
- }
120292
- }
120293
- catch (error)
120294
- {
120295
- console .error ("Error importing document:", error);
120296
- }
120297
- }
121058
+ browser .removeLoadingObject (this);
121059
+ }
121060
+ else
121061
+ {
121062
+ browser .replaceWorld (null);
121063
+ }
121064
+ }
121065
+ catch (error)
121066
+ {
121067
+ console .error ("Error importing document:", error);
121068
+ }
121069
+ }
120298
121070
 
120299
- processMutation (mutation)
120300
- {
120301
- switch (mutation .type)
120302
- {
120303
- case "attributes":
120304
- {
120305
- this .processAttribute (mutation, mutation .target);
120306
- break;
120307
- }
120308
- case "childList":
120309
- {
120310
- for (const node of mutation .addedNodes)
120311
- this .processAddedNode (node);
121071
+ processMutation (mutation)
121072
+ {
121073
+ switch (mutation .type)
121074
+ {
121075
+ case "attributes":
121076
+ {
121077
+ this .processAttribute (mutation, mutation .target);
121078
+ break;
121079
+ }
121080
+ case "childList":
121081
+ {
121082
+ for (const node of mutation .addedNodes)
121083
+ this .processAddedNode (node);
120312
121084
 
120313
- for (const node of mutation .removedNodes)
120314
- this .processRemovedNode (node);
121085
+ for (const node of mutation .removedNodes)
121086
+ this .processRemovedNode (node);
120315
121087
 
120316
- break;
120317
- }
120318
- }
120319
- }
121088
+ break;
121089
+ }
121090
+ }
121091
+ }
120320
121092
 
120321
- processAttribute (mutation, element)
120322
- {
120323
- const
120324
- parser = this .parser,
120325
- node = DOMIntegration_$.data (element, "node");
121093
+ processAttribute (mutation, element)
121094
+ {
121095
+ const
121096
+ parser = this .parser,
121097
+ node = DOMIntegration_$.data (element, "node");
120326
121098
 
120327
- if (node)
120328
- {
120329
- const
120330
- attributeName = mutation .attributeName,
120331
- attribute = element .attributes .getNamedItem (attributeName);
121099
+ if (node)
121100
+ {
121101
+ const
121102
+ attributeName = mutation .attributeName,
121103
+ attribute = element .attributes .getNamedItem (attributeName);
120332
121104
 
120333
- parser .nodeAttribute (attribute, node);
120334
- }
120335
- else
120336
- {
120337
- // Is an attribute of non-node child such as fieldValue (or ROUTE).
121105
+ parser .nodeAttribute (attribute, node);
121106
+ }
121107
+ else
121108
+ {
121109
+ // Is an attribute of non-node child such as fieldValue (or ROUTE).
120338
121110
 
120339
- const
120340
- parentNode = element .parentNode,
120341
- node = DOMIntegration_$.data (parentNode, "node");
121111
+ const
121112
+ parentNode = element .parentNode,
121113
+ node = DOMIntegration_$.data (parentNode, "node");
120342
121114
 
120343
- if (node)
120344
- {
120345
- parser .pushExecutionContext (node .getExecutionContext ());
120346
- parser .pushParent (node);
120347
- parser .childElement (element);
120348
- parser .popParent ();
120349
- parser .popExecutionContext ();
120350
- }
120351
- }
120352
- }
121115
+ if (node)
121116
+ {
121117
+ parser .pushExecutionContext (node .getExecutionContext ());
121118
+ parser .pushParent (node);
121119
+ parser .childElement (element);
121120
+ parser .popParent ();
121121
+ parser .popExecutionContext ();
121122
+ }
121123
+ }
121124
+ }
120353
121125
 
120354
- processAddedNode (element)
120355
- {
120356
- // Only process element nodes.
121126
+ processAddedNode (element)
121127
+ {
121128
+ // Only process element nodes.
120357
121129
 
120358
- if (element .nodeType !== Node .ELEMENT_NODE)
120359
- return;
121130
+ if (element .nodeType !== Node .ELEMENT_NODE)
121131
+ return;
120360
121132
 
120361
- if (element .nodeName === "X3D")
120362
- return;
121133
+ if (element .nodeName === "X3D")
121134
+ return;
120363
121135
 
120364
- if (DOMIntegration_$.data (element, "node"))
120365
- return;
121136
+ if (DOMIntegration_$.data (element, "node"))
121137
+ return;
120366
121138
 
120367
- const
120368
- parentNode = element .parentNode,
120369
- parser = this .parser;
121139
+ const
121140
+ parentNode = element .parentNode,
121141
+ parser = this .parser;
120370
121142
 
120371
- if (parentNode .nodeName .match (/^(?:Scene|SCENE)$/))
120372
- {
120373
- // Root scene or Inline scene.
121143
+ if (parentNode .nodeName .match (/^(?:Scene|SCENE)$/))
121144
+ {
121145
+ // Root scene or Inline scene.
120374
121146
 
120375
- const scene = DOMIntegration_$.data (parentNode, "node");
121147
+ const scene = DOMIntegration_$.data (parentNode, "node");
120376
121148
 
120377
- parser .pushExecutionContext (scene);
120378
- parser .childElement (element);
120379
- parser .popExecutionContext ();
120380
- }
120381
- else if (DOMIntegration_$.data (parentNode, "node"))
120382
- {
120383
- // Use parent's scene if non-root, works for Inline.
120384
-
120385
- const
120386
- node = DOMIntegration_$.data (parentNode, "node"),
120387
- executionContext = node .getExecutionContext ();
120388
-
120389
- parser .pushExecutionContext (executionContext);
120390
- parser .pushParent (node);
120391
- parser .childElement (element);
120392
- parser .popParent ();
120393
- parser .popExecutionContext ();
120394
- }
120395
- else
120396
- {
120397
- const scene = this .browser .currentScene;
121149
+ parser .pushExecutionContext (scene);
121150
+ parser .childElement (element);
121151
+ parser .popExecutionContext ();
121152
+ }
121153
+ else if (DOMIntegration_$.data (parentNode, "node"))
121154
+ {
121155
+ // Use parent's scene if non-root, works for Inline.
120398
121156
 
120399
- parser .pushExecutionContext (scene);
120400
- parser .childElement (element);
120401
- parser .popExecutionContext ();
120402
- }
121157
+ const
121158
+ node = DOMIntegration_$.data (parentNode, "node"),
121159
+ executionContext = node .getExecutionContext ();
120403
121160
 
120404
- // Now after creating nodes need to look again for Inline elements.
121161
+ parser .pushExecutionContext (executionContext);
121162
+ parser .pushParent (node);
121163
+ parser .childElement (element);
121164
+ parser .popParent ();
121165
+ parser .popExecutionContext ();
121166
+ }
121167
+ else
121168
+ {
121169
+ const scene = this .browser .currentScene;
120405
121170
 
120406
- this .processInlineElements (element);
121171
+ parser .pushExecutionContext (scene);
121172
+ parser .childElement (element);
121173
+ parser .popExecutionContext ();
121174
+ }
120407
121175
 
120408
- // Then attach event dispatchers.
121176
+ // Now after creating nodes need to look again for Inline elements.
120409
121177
 
120410
- this .addEventDispatchers (element);
120411
- this .addEventDispatchersAll (element);
120412
- }
121178
+ this .processInlineElements (element);
120413
121179
 
120414
- processRemovedNode (element)
120415
- {
120416
- // Works also for root nodes, as it has to be, since scene .rootNodes is effectively a MFNode in x-ite.
120417
- // Also removes ROUTE elements.
121180
+ // Then attach event dispatchers.
120418
121181
 
120419
- const node = DOMIntegration_$.data (element, "node");
121182
+ this .addEventDispatchers (element);
121183
+ this .addEventDispatchersAll (element);
121184
+ }
120420
121185
 
120421
- if (!node)
120422
- return;
121186
+ processRemovedNode (element)
121187
+ {
121188
+ // Works also for root nodes, as it has to be, since scene .rootNodes is effectively a MFNode in x-ite.
121189
+ // Also removes ROUTE elements.
120423
121190
 
120424
- node .dispose ();
121191
+ const node = DOMIntegration_$.data (element, "node");
120425
121192
 
120426
- DOMIntegration_$.data (element, "node", null);
120427
- }
121193
+ if (!node)
121194
+ return;
120428
121195
 
120429
- processInlineElements (element)
120430
- {
120431
- if (element .nodeName .match (/^(?:Inline|INLINE)$/))
120432
- this .processInlineElement (element);
121196
+ node .dispose ();
120433
121197
 
120434
- for (const inlineElement of element .querySelectorAll ("Inline"))
120435
- this .processInlineElement (inlineElement);
120436
- }
121198
+ DOMIntegration_$.data (element, "node", null);
121199
+ }
120437
121200
 
120438
- processInlineElement (element)
120439
- {
120440
- const node = DOMIntegration_$.data (element, "node");
121201
+ processInlineElements (element)
121202
+ {
121203
+ if (element .nodeName .match (/^(?:Inline|INLINE)$/))
121204
+ this .processInlineElement (element);
120441
121205
 
120442
- if (!node)
120443
- return;
121206
+ for (const inlineElement of element .querySelectorAll ("Inline"))
121207
+ this .processInlineElement (inlineElement);
121208
+ }
120444
121209
 
120445
- node ._loadState .addInterest ("appendInlineChildElement", this, element);
121210
+ processInlineElement (element)
121211
+ {
121212
+ const node = DOMIntegration_$.data (element, "node");
120446
121213
 
120447
- this .appendInlineChildElement (element);
120448
- }
121214
+ if (!node)
121215
+ return;
120449
121216
 
120450
- appendInlineChildElement (element)
120451
- {
120452
- const node = DOMIntegration_$.data (element, "node");
121217
+ node ._loadState .addInterest ("appendInlineChildElement", this, element);
120453
121218
 
120454
- switch (node .checkLoadState ())
120455
- {
120456
- case Base_X3DConstants .NOT_STARTED_STATE:
120457
- case Base_X3DConstants .FAILED_STATE:
120458
- {
120459
- // Remove all child nodes.
121219
+ this .appendInlineChildElement (element);
121220
+ }
120460
121221
 
120461
- while (element .firstChild)
120462
- element .removeChild (element .lastChild);
121222
+ appendInlineChildElement (element)
121223
+ {
121224
+ const node = DOMIntegration_$.data (element, "node");
120463
121225
 
120464
- break;
120465
- }
120466
- case Base_X3DConstants .COMPLETE_STATE:
120467
- {
120468
- // Remove all child nodes.
121226
+ switch (node .checkLoadState ())
121227
+ {
121228
+ case Base_X3DConstants .NOT_STARTED_STATE:
121229
+ case Base_X3DConstants .FAILED_STATE:
121230
+ {
121231
+ // Remove all child nodes.
120469
121232
 
120470
- while (element .firstChild)
120471
- element .removeChild (element .lastChild);
121233
+ while (element .firstChild)
121234
+ element .removeChild (element .lastChild);
120472
121235
 
120473
- // Add scene as child node of Inline element.
121236
+ break;
121237
+ }
121238
+ case Base_X3DConstants .COMPLETE_STATE:
121239
+ {
121240
+ // Remove all child nodes.
120474
121241
 
120475
- const X3DElement = DOMIntegration_$.data (node .getInternalScene (), "X3D");
121242
+ while (element .firstChild)
121243
+ element .removeChild (element .lastChild);
120476
121244
 
120477
- if (X3DElement)
120478
- element .appendChild (X3DElement);
121245
+ // Add scene as child node of Inline element.
120479
121246
 
120480
- // Add Inline elements, and connect to node events.
121247
+ const X3DElement = DOMIntegration_$.data (node .getInternalScene (), "X3D");
120481
121248
 
120482
- this .processInlineElements (X3DElement);
120483
- this .addEventDispatchersAll (X3DElement);
121249
+ if (X3DElement)
121250
+ element .appendChild (X3DElement);
120484
121251
 
120485
- break;
120486
- }
120487
- }
121252
+ // Add Inline elements, and connect to node events.
120488
121253
 
120489
- switch (node .checkLoadState ())
120490
- {
120491
- case Base_X3DConstants .COMPLETE_STATE:
120492
- {
120493
- const event = new CustomEvent ("load",
120494
- {
120495
- detail: { node: Fields_SFNodeCache .get (node) },
120496
- });
121254
+ this .processInlineElements (X3DElement);
121255
+ this .addEventDispatchersAll (X3DElement);
120497
121256
 
120498
- element .dispatchEvent (event);
120499
- break;
120500
- }
120501
- case Base_X3DConstants .FAILED_STATE:
120502
- {
120503
- const event = new CustomEvent ("error",
120504
- {
120505
- detail: { node: Fields_SFNodeCache .get (node) },
120506
- });
121257
+ break;
121258
+ }
121259
+ }
120507
121260
 
120508
- element .dispatchEvent (event);
120509
- break;
120510
- }
120511
- }
120512
- }
121261
+ switch (node .checkLoadState ())
121262
+ {
121263
+ case Base_X3DConstants .COMPLETE_STATE:
121264
+ {
121265
+ const event = new CustomEvent ("load",
121266
+ {
121267
+ detail: { node: Fields_SFNodeCache .get (node) },
121268
+ });
120513
121269
 
120514
- addEventDispatchersAll (element)
120515
- {
120516
- const childElements = element .querySelectorAll ("*");
121270
+ element .dispatchEvent (event);
121271
+ break;
121272
+ }
121273
+ case Base_X3DConstants .FAILED_STATE:
121274
+ {
121275
+ const event = new CustomEvent ("error",
121276
+ {
121277
+ detail: { node: Fields_SFNodeCache .get (node) },
121278
+ });
120517
121279
 
120518
- for (const childElement of childElements)
120519
- this .addEventDispatchers (childElement);
120520
- }
121280
+ element .dispatchEvent (event);
121281
+ break;
121282
+ }
121283
+ }
121284
+ }
120521
121285
 
120522
- addEventDispatchers (element)
120523
- {
120524
- // Check for USE nodes; they do not emit events.
121286
+ addEventDispatchersAll (element)
121287
+ {
121288
+ const childElements = element .querySelectorAll ("*");
120525
121289
 
120526
- if (element .nodeName === "ROUTE")
120527
- return;
121290
+ for (const childElement of childElements)
121291
+ this .addEventDispatchers (childElement);
121292
+ }
120528
121293
 
120529
- const node = DOMIntegration_$.data (element, "node");
121294
+ addEventDispatchers (element)
121295
+ {
121296
+ // Check for USE nodes; they do not emit events.
120530
121297
 
120531
- if (!node)
120532
- return;
121298
+ if (element .nodeName === "ROUTE")
121299
+ return;
120533
121300
 
120534
- for (const field of node .getPredefinedFields ())
120535
- this .bindFieldCallback (field, element);
121301
+ const node = DOMIntegration_$.data (element, "node");
120536
121302
 
120537
- for (const field of node .getUserDefinedFields ())
120538
- this .bindFieldCallback (field, element);
120539
- }
121303
+ if (!node)
121304
+ return;
120540
121305
 
120541
- bindFieldCallback (field, element)
120542
- {
120543
- if (!field .isOutput ())
120544
- return;
121306
+ for (const field of node .getPredefinedFields ())
121307
+ this .bindFieldCallback (field, element);
120545
121308
 
120546
- field .addInterest ("fieldCallback", this, element);
120547
- }
121309
+ for (const field of node .getUserDefinedFields ())
121310
+ this .bindFieldCallback (field, element);
121311
+ }
120548
121312
 
120549
- fieldCallback (element, field)
120550
- {
120551
- const node = DOMIntegration_$.data (element, "node");
121313
+ bindFieldCallback (field, element)
121314
+ {
121315
+ if (!field .isOutput ())
121316
+ return;
120552
121317
 
120553
- if (!node)
120554
- return;
121318
+ field .addInterest ("fieldCallback", this, element);
121319
+ }
120555
121320
 
120556
- const event = new CustomEvent (field .getName (),
120557
- {
120558
- detail: {
120559
- node: Fields_SFNodeCache .get (node),
120560
- value: field .valueOf (),
120561
- },
120562
- });
121321
+ fieldCallback (element, field)
121322
+ {
121323
+ const node = DOMIntegration_$.data (element, "node");
120563
121324
 
120564
- element .dispatchEvent (event);
120565
- }
121325
+ if (!node)
121326
+ return;
121327
+
121328
+ const event = new CustomEvent (field .getName (),
121329
+ {
121330
+ detail: {
121331
+ node: Fields_SFNodeCache .get (node),
121332
+ value: field .valueOf (),
121333
+ },
121334
+ });
121335
+
121336
+ element .dispatchEvent (event);
121337
+ }
120566
121338
  };
120567
121339
 
120568
121340
  const DOMIntegration_default_ = DOMIntegration;
@@ -121313,7 +122085,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
121313
122085
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
121314
122086
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
121315
122087
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
121316
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(52);
122088
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(183);
121317
122089
  /*******************************************************************************
121318
122090
  *
121319
122091
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -121766,6 +122538,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
121766
122538
  return;
121767
122539
 
121768
122540
  loadCount .removeInterest ("checkLoadCount", this);
122541
+ this .touch (0, 0);
121769
122542
  this .setBrowserLoading (false);
121770
122543
  this .initialized () .set (this .getCurrentTime ());
121771
122544
  this .initialized () .processInterests ();
@@ -122404,7 +123177,7 @@ const X3DBrowser_default_ = X3DBrowser;
122404
123177
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
122405
123178
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
122406
123179
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
122407
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(52);
123180
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(183);
122408
123181
  /*******************************************************************************
122409
123182
  *
122410
123183
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122541,8 +123314,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
122541
123314
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
122542
123315
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
122543
123316
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
122544
- /* provided dependency */ var jquery_$ = __webpack_require__(52);
122545
- /* provided dependency */ var pako = __webpack_require__(776);
123317
+ /* provided dependency */ var jquery_$ = __webpack_require__(183);
123318
+ /* provided dependency */ var pako = __webpack_require__(935);
122546
123319
  Object .assign (jquery_$,
122547
123320
  {
122548
123321
  decodeText (input)
@@ -122619,14 +123392,14 @@ const jquery_default_ = jquery_$;
122619
123392
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
122620
123393
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
122621
123394
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
122622
- /* provided dependency */ var libtess_libtess = __webpack_require__(177);
123395
+ /* provided dependency */ var libtess_libtess = __webpack_require__(972);
122623
123396
  const libtess_default_ = libtess_libtess;
122624
123397
  ;
122625
123398
 
122626
123399
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
122627
123400
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
122628
123401
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
122629
- /* provided dependency */ var X3D_$ = __webpack_require__(52);
123402
+ /* provided dependency */ var X3D_$ = __webpack_require__(183);
122630
123403
  /*******************************************************************************
122631
123404
  *
122632
123405
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122934,7 +123707,7 @@ Object .assign (X3D,
122934
123707
 
122935
123708
  // Assign X3D to global namespace.
122936
123709
 
122937
- window [Symbol .for ("X_ITE.X3D-9.3.0")] = x_ite_X3D;
123710
+ window [Symbol .for ("X_ITE.X3D-9.3.2")] = x_ite_X3D;
122938
123711
 
122939
123712
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
122940
123713