x_ite 9.6.0 → 9.6.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 (49) hide show
  1. package/README.md +7 -4
  2. package/dist/assets/components/Annotation.js +13 -13
  3. package/dist/assets/components/Annotation.min.js +1 -1
  4. package/dist/assets/components/CADGeometry.js +14 -14
  5. package/dist/assets/components/CADGeometry.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturing.js +25 -25
  7. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  8. package/dist/assets/components/DIS.js +13 -13
  9. package/dist/assets/components/DIS.min.js +1 -1
  10. package/dist/assets/components/EventUtilities.js +9 -9
  11. package/dist/assets/components/EventUtilities.min.js +1 -1
  12. package/dist/assets/components/Geometry2D.js +18 -18
  13. package/dist/assets/components/Geometry2D.min.js +1 -1
  14. package/dist/assets/components/Geospatial.js +33 -33
  15. package/dist/assets/components/Geospatial.min.js +1 -1
  16. package/dist/assets/components/HAnim.js +23 -23
  17. package/dist/assets/components/HAnim.min.js +1 -1
  18. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  19. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  20. package/dist/assets/components/Layout.js +27 -27
  21. package/dist/assets/components/Layout.min.js +1 -1
  22. package/dist/assets/components/NURBS.js +23 -23
  23. package/dist/assets/components/NURBS.min.js +1 -1
  24. package/dist/assets/components/ParticleSystems.js +26 -26
  25. package/dist/assets/components/ParticleSystems.min.js +1 -1
  26. package/dist/assets/components/Picking.js +18 -18
  27. package/dist/assets/components/Picking.min.js +1 -1
  28. package/dist/assets/components/RigidBodyPhysics.js +17 -17
  29. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  30. package/dist/assets/components/Scripting.js +43 -43
  31. package/dist/assets/components/Scripting.min.js +1 -1
  32. package/dist/assets/components/Text.js +24 -24
  33. package/dist/assets/components/Text.min.js +1 -1
  34. package/dist/assets/components/TextureProjection.js +15 -15
  35. package/dist/assets/components/TextureProjection.min.js +1 -1
  36. package/dist/assets/components/Texturing3D.js +27 -27
  37. package/dist/assets/components/Texturing3D.min.js +1 -1
  38. package/dist/assets/components/VolumeRendering.js +19 -19
  39. package/dist/assets/components/VolumeRendering.min.js +1 -1
  40. package/dist/assets/components/X_ITE.js +14 -14
  41. package/dist/assets/components/X_ITE.min.js +1 -1
  42. package/dist/x_ite.css +1 -1
  43. package/dist/x_ite.d.ts +7 -0
  44. package/dist/x_ite.js +1074 -1058
  45. package/dist/x_ite.min.js +1 -1
  46. package/dist/x_ite.min.mjs +1 -1
  47. package/dist/x_ite.mjs +1074 -1058
  48. package/dist/x_ite.zip +0 -0
  49. package/package.json +121 -115
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v9.6.0 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v9.6.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
- /***/ 600:
14
+ /***/ 195:
15
15
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
16
16
 
17
- /* provided dependency */ var jQuery = __webpack_require__(268);
17
+ /* provided dependency */ var jQuery = __webpack_require__(631);
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
- /***/ 482:
213
+ /***/ 711:
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__(268)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
227
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(631)], __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
- /***/ 268:
438
+ /***/ 631:
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
- /***/ 937:
11162
+ /***/ 580:
11163
11163
  /***/ ((module) => {
11164
11164
 
11165
11165
  /**
@@ -15938,7 +15938,7 @@ if (true) {
15938
15938
 
15939
15939
  /***/ }),
15940
15940
 
15941
- /***/ 752:
15941
+ /***/ 511:
15942
15942
  /***/ (function(__unused_webpack_module, exports) {
15943
15943
 
15944
15944
 
@@ -19183,7 +19183,7 @@ if (true) {
19183
19183
 
19184
19184
  /***/ }),
19185
19185
 
19186
- /***/ 719:
19186
+ /***/ 936:
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.6.0")];
20314
+ const X3D = window [Symbol .for ("X_ITE.X3D-9.6.2")];
20315
20315
 
20316
20316
  if (X3D)
20317
20317
  X3D [name] = module;
@@ -21447,6 +21447,151 @@ const DEVELOPMENT_default_ = false;
21447
21447
 
21448
21448
  x_ite_Namespace .add ("DEVELOPMENT", "x_ite/DEVELOPMENT", DEVELOPMENT_default_);
21449
21449
  /* harmony default export */ const DEVELOPMENT = (DEVELOPMENT_default_);
21450
+ ;// CONCATENATED MODULE: ./src/x_ite/Features.js
21451
+ /*******************************************************************************
21452
+ *
21453
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21454
+ *
21455
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
21456
+ *
21457
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
21458
+ *
21459
+ * The copyright notice above does not evidence any actual of intended
21460
+ * publication of such source code, and is an unpublished work by create3000.
21461
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
21462
+ * create3000.
21463
+ *
21464
+ * No permission is granted to copy, distribute, or create derivative works from
21465
+ * the contents of this software, in whole or in part, without the prior written
21466
+ * permission of create3000.
21467
+ *
21468
+ * NON-MILITARY USE ONLY
21469
+ *
21470
+ * All create3000 software are effectively free software with a non-military use
21471
+ * restriction. It is free. Well commented source is provided. You may reuse the
21472
+ * source in any way you please with the exception anything that uses it must be
21473
+ * marked to indicate is contains 'non-military use only' components.
21474
+ *
21475
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21476
+ *
21477
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
21478
+ *
21479
+ * This file is part of the X_ITE Project.
21480
+ *
21481
+ * X_ITE is free software: you can redistribute it and/or modify it under the
21482
+ * terms of the GNU General Public License version 3 only, as published by the
21483
+ * Free Software Foundation.
21484
+ *
21485
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
21486
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
21487
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
21488
+ * details (a copy is included in the LICENSE file that accompanied this code).
21489
+ *
21490
+ * You should have received a copy of the GNU General Public License version 3
21491
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
21492
+ * copy of the GPLv3 License.
21493
+ *
21494
+ * For Silvio, Joy and Adi.
21495
+ *
21496
+ ******************************************************************************/
21497
+
21498
+
21499
+
21500
+ const MODULE = false;
21501
+
21502
+ const Features =
21503
+ {
21504
+ get ENVIRONMENT ()
21505
+ {
21506
+ if (DEVELOPMENT)
21507
+ return "BROWSER";
21508
+
21509
+ if (MODULE)
21510
+ return "MODULE";
21511
+
21512
+ if ((typeof process === "object") && (process .release .name .search (/node|io.js/) !== -1))
21513
+ return "NODE";
21514
+
21515
+ return "BROWSER";
21516
+ },
21517
+ WEAK_REF: typeof WeakRef !== "undefined",
21518
+ FINALIZATION_REGISTRY: typeof FinalizationRegistry !== "undefined",
21519
+ };
21520
+
21521
+ (() =>
21522
+ {
21523
+ // Added at February 2022
21524
+ // https://github.com/tc39/proposal-relative-indexing-method#polyfill
21525
+
21526
+ function at (n)
21527
+ {
21528
+ // ToInteger() abstract op
21529
+ n = Math.trunc(n) || 0;
21530
+ // Allow negative indexing from the end
21531
+ if (n < 0) n += this.length;
21532
+ // OOB access is guaranteed to return undefined
21533
+ if (n < 0 || n >= this.length) return undefined;
21534
+ // Otherwise, this is just normal property access
21535
+ return this[n];
21536
+ }
21537
+
21538
+ const TypedArray = Reflect .getPrototypeOf (Int8Array);
21539
+ for (const C of [Array, String, TypedArray])
21540
+ {
21541
+ if (C .prototype .at === undefined)
21542
+ {
21543
+ Object .defineProperty (C .prototype, "at",
21544
+ {
21545
+ value: at,
21546
+ writable: true,
21547
+ enumerable: false,
21548
+ configurable: true,
21549
+ });
21550
+ }
21551
+ }
21552
+ })();
21553
+
21554
+ (() =>
21555
+ {
21556
+ if (!Features .WEAK_REF)
21557
+ {
21558
+ if (DEVELOPMENT)
21559
+ console .info ("Added shim for WeakRef.");
21560
+
21561
+ window .WeakRef = class WeakRef
21562
+ {
21563
+ #object;
21564
+
21565
+ constructor (object)
21566
+ {
21567
+ this .#object = object;
21568
+ }
21569
+
21570
+ deref ()
21571
+ {
21572
+ return this .#object;
21573
+ }
21574
+ };
21575
+ }
21576
+
21577
+ if (!Features .FINALIZATION_REGISTRY)
21578
+ {
21579
+ if (DEVELOPMENT)
21580
+ console .info ("Added shim for FinalizationRegistry.");
21581
+
21582
+ window .FinalizationRegistry = class FinalizationRegistry
21583
+ {
21584
+ register () { }
21585
+ unregister () { }
21586
+ };
21587
+ }
21588
+ })();
21589
+
21590
+ const Features_default_ = Features;
21591
+ ;
21592
+
21593
+ x_ite_Namespace .add ("Features", "x_ite/Features", Features_default_);
21594
+ /* harmony default export */ const x_ite_Features = (Features_default_);
21450
21595
  ;// CONCATENATED MODULE: ./src/x_ite/Base/X3DObject.js
21451
21596
  /*******************************************************************************
21452
21597
  *
@@ -21501,6 +21646,7 @@ x_ite_Namespace .add ("DEVELOPMENT", "x_ite/DEVELOPMENT", DEVELOPMENT_default_);
21501
21646
  const
21502
21647
  _name = Symbol (),
21503
21648
  _interests = Symbol (),
21649
+ _registry = Symbol (),
21504
21650
  _userData = Symbol ();
21505
21651
 
21506
21652
  function X3DObject () { }
@@ -21509,6 +21655,7 @@ Object .assign (X3DObject .prototype,
21509
21655
  {
21510
21656
  [_name]: "",
21511
21657
  [_interests]: new Map (),
21658
+ [_registry]: new FinalizationRegistry (Function .prototype),
21512
21659
  [_userData]: new Map (),
21513
21660
  getId ()
21514
21661
  {
@@ -21540,15 +21687,24 @@ Object .assign (X3DObject .prototype,
21540
21687
  interestId = X3DObject .getInterestId (callbackName, object),
21541
21688
  callback = object [callbackName];
21542
21689
 
21690
+ if (this [_registry] === X3DObject .prototype [_registry])
21691
+ this [_registry] = new FinalizationRegistry (interestId => this [_interests] .delete (interestId));
21692
+
21693
+ const weakRef = new WeakRef (object);
21694
+
21695
+ // Copy interests in case of this function is called during a `processInterests` call.
21543
21696
  this [_interests] = new Map (this [_interests]);
21544
21697
 
21545
- this [_interests] .set (interestId, callback .bind (object, ... args, this));
21698
+ this [_interests] .set (interestId, { callback, weakRef, args });
21699
+ this [_registry] .register (object, interestId, object);
21546
21700
  },
21547
21701
  removeInterest (callbackName, object)
21548
21702
  {
21703
+ // Copy interests in case of this function is called during a `processInterests` call.
21549
21704
  this [_interests] = new Map (this [_interests]);
21550
21705
 
21551
21706
  this [_interests] .delete (X3DObject .getInterestId (callbackName, object));
21707
+ this [_registry] .unregister (object);
21552
21708
  },
21553
21709
  getInterests ()
21554
21710
  {
@@ -21556,8 +21712,13 @@ Object .assign (X3DObject .prototype,
21556
21712
  },
21557
21713
  processInterests ()
21558
21714
  {
21559
- for (const interest of this [_interests] .values ())
21560
- interest ();
21715
+ for (const { callback, weakRef, args } of this [_interests] .values ())
21716
+ {
21717
+ const object = weakRef .deref ();
21718
+
21719
+ if (object)
21720
+ callback .call (object, ... args, this);
21721
+ }
21561
21722
  },
21562
21723
  getUserData (key)
21563
21724
  {
@@ -21656,7 +21817,7 @@ Object .defineProperties (X3DObject .prototype,
21656
21817
 
21657
21818
  Object .assign (X3DObject,
21658
21819
  {
21659
- getId: DEVELOPMENT ? (() =>
21820
+ getId: x_ite_Features .FINALIZATION_REGISTRY ? (() =>
21660
21821
  {
21661
21822
  const
21662
21823
  map = new WeakMap (),
@@ -21712,7 +21873,7 @@ const X3DObject_default_ = X3DObject;
21712
21873
 
21713
21874
  x_ite_Namespace .add ("X3DObject", "x_ite/Base/X3DObject", X3DObject_default_);
21714
21875
  /* harmony default export */ const Base_X3DObject = (X3DObject_default_);
21715
- ;// CONCATENATED MODULE: ./src/x_ite/Base/X3DChildObject.js
21876
+ ;// CONCATENATED MODULE: ./src/x_ite/Base/IterableWeakSet.js
21716
21877
  /*******************************************************************************
21717
21878
  *
21718
21879
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -21762,243 +21923,259 @@ x_ite_Namespace .add ("X3DObject", "x_ite/Base/X3DObject", X3DObject_default_);
21762
21923
 
21763
21924
 
21764
21925
 
21765
-
21766
- const
21767
- _modificationTime = Symbol (),
21768
- _tainted = Symbol (),
21769
- _parents = Symbol (),
21770
- _private = Symbol (),
21771
- _registry = Symbol ();
21772
-
21773
- function X3DChildObject ()
21926
+ const IterableWeakSet_default_ = x_ite_Features .WEAK_REF && x_ite_Features .FINALIZATION_REGISTRY ?
21927
+ /**
21928
+ * IterableWeakSet is a writable set-like class.
21929
+ */
21930
+ class IterableWeakSet
21774
21931
  {
21775
- Base_X3DObject .call (this);
21776
- }
21932
+ #callback = undefined;
21933
+ #map = new Map ();
21934
+ #registry = new FinalizationRegistry (id =>
21935
+ {
21936
+ this .#map .delete (id);
21937
+ this .#callback ?.();
21938
+ });
21777
21939
 
21778
- if (DEVELOPMENT)
21779
- {
21780
- Object .assign (Object .setPrototypeOf (X3DChildObject .prototype, Base_X3DObject .prototype),
21940
+ constructor (callback)
21781
21941
  {
21782
- [_modificationTime]: 0,
21783
- [_tainted]: false,
21784
- [_parents]: new Map (),
21785
- [_private]: false,
21786
- [_registry]: new FinalizationRegistry (Function .prototype),
21787
- isInitializable ()
21788
- {
21789
- return true;
21790
- },
21791
- isInput ()
21792
- {
21793
- return false;
21794
- },
21795
- isOutput ()
21796
- {
21797
- return false;
21798
- },
21799
- setModificationTime (value)
21800
- {
21801
- this [_modificationTime] = value;
21802
- },
21803
- getModificationTime ()
21804
- {
21805
- return this [_modificationTime];
21806
- },
21807
- setTainted (value)
21808
- {
21809
- this [_tainted] = value;
21810
- },
21811
- isTainted ()
21812
- {
21813
- return this [_tainted];
21814
- },
21815
- addEvent ()
21816
- {
21817
- for (const parent of this [_parents] .values ())
21818
- parent .deref () ?.addEvent (this);
21819
- },
21820
- addEventObject (field, event)
21821
- {
21822
- for (const parent of this [_parents] .values ())
21823
- parent .deref () ?.addEventObject (this, event);
21824
- },
21825
- processEvent ()
21826
- {
21827
- this .setTainted (false);
21828
- this .processInterests ();
21829
- },
21830
- isPrivate ()
21831
- {
21832
- return this [_private];
21833
- },
21834
- setPrivate (value)
21835
- {
21836
- this [_private] = value;
21837
- },
21838
- collectCloneCount ()
21839
- {
21840
- let cloneCount = 0;
21942
+ this .#callback = callback;
21943
+ }
21841
21944
 
21842
- for (const weakRef of this [_parents] .values ())
21843
- {
21844
- const parent = weakRef .deref ();
21945
+ *[Symbol .iterator] ()
21946
+ {
21947
+ yield* this .values ();
21948
+ }
21845
21949
 
21846
- if (!parent)
21847
- continue;
21950
+ get size ()
21951
+ {
21952
+ return this .#map .size;
21953
+ }
21848
21954
 
21849
- if (parent [_private])
21850
- continue;
21955
+ add (object)
21956
+ {
21957
+ this .#map .set (object .getId (), new WeakRef (object));
21958
+ this .#registry .register (object, object .getId (), object);
21959
+ this .#callback ?.();
21960
+ }
21851
21961
 
21852
- cloneCount += parent .collectCloneCount ();
21853
- }
21962
+ clear ()
21963
+ {
21964
+ for (const object of this .values ())
21965
+ this .#registry .unregister (object);
21854
21966
 
21855
- return cloneCount;
21856
- },
21857
- addParent (parent)
21858
- {
21859
- if (this [_parents] === X3DChildObject .prototype [_parents])
21860
- {
21861
- this [_parents] = new Map ();
21862
- this [_registry] = new FinalizationRegistry (id =>
21863
- {
21864
- this [_parents] .delete (id);
21865
- this .parentsChanged ();
21866
- });
21867
- }
21967
+ this .#map .clear ();
21968
+ this .#callback ?.();
21969
+ }
21868
21970
 
21869
- this [_parents] .set (parent .getId (), new WeakRef (parent));
21870
- this [_registry] .register (parent, parent .getId (), parent);
21971
+ delete (object)
21972
+ {
21973
+ this .#map .delete (object .getId ());
21974
+ this .#registry .unregister (object);
21975
+ this .#callback ?.();
21976
+ }
21871
21977
 
21872
- this .parentsChanged ();
21873
- },
21874
- removeParent (parent)
21875
- {
21876
- this [_parents] .delete (parent .getId ());
21877
- this [_registry] .unregister (parent);
21978
+ forEach (callbackFn, thisArg)
21979
+ {
21980
+ for (const object of this .values ())
21981
+ callbackFn .call (thisArg, object, object, this);
21982
+ }
21878
21983
 
21879
- this .parentsChanged ();
21880
- },
21881
- getParents ()
21882
- {
21883
- const parents = new Set ();
21984
+ has (object)
21985
+ {
21986
+ return this .#map .has (object .getId ());
21987
+ }
21884
21988
 
21885
- for (const weakRef of this [_parents] .values ())
21886
- parents .add (weakRef .deref ())
21989
+ *entries ()
21990
+ {
21991
+ for (const object of this .values ())
21992
+ yield [object, object];
21993
+ }
21887
21994
 
21888
- parents .delete (undefined);
21995
+ *keys ()
21996
+ {
21997
+ yield *this .values ();
21998
+ }
21889
21999
 
21890
- return parents;
21891
- },
21892
- parentsChanged () { },
21893
- dispose ()
22000
+ *values ()
22001
+ {
22002
+ for (const weakRef of this .#map .values ())
21894
22003
  {
21895
- this [_parents] .clear ();
22004
+ const object = weakRef .deref ();
21896
22005
 
21897
- Base_X3DObject .prototype .dispose .call (this);
21898
- },
21899
- });
22006
+ if (object)
22007
+ yield object;
22008
+ }
22009
+ }
21900
22010
  }
21901
- else
22011
+ :
22012
+ class IterableWeakSet extends Set
21902
22013
  {
21903
- Object .assign (Object .setPrototypeOf (X3DChildObject .prototype, Base_X3DObject .prototype),
22014
+ constructor ()
21904
22015
  {
21905
- [_modificationTime]: 0,
21906
- [_tainted]: false,
21907
- [_parents]: new Set (),
21908
- [_private]: false,
21909
- isInitializable ()
21910
- {
21911
- return true;
21912
- },
21913
- isInput ()
21914
- {
21915
- return false;
21916
- },
21917
- isOutput ()
21918
- {
21919
- return false;
21920
- },
21921
- setModificationTime (value)
21922
- {
21923
- this [_modificationTime] = value;
21924
- },
21925
- getModificationTime ()
21926
- {
21927
- return this [_modificationTime];
21928
- },
21929
- setTainted (value)
21930
- {
21931
- this [_tainted] = value;
21932
- },
21933
- isTainted ()
21934
- {
21935
- return this [_tainted];
21936
- },
21937
- addEvent ()
21938
- {
21939
- for (const parent of this [_parents])
21940
- parent .addEvent (this);
21941
- },
21942
- addEventObject (field, event)
21943
- {
21944
- for (const parent of this [_parents])
21945
- parent .addEventObject (this, event);
21946
- },
21947
- processEvent ()
21948
- {
21949
- this .setTainted (false);
21950
- this .processInterests ();
21951
- },
21952
- isPrivate ()
21953
- {
21954
- return this [_private];
21955
- },
21956
- setPrivate (value)
21957
- {
21958
- this [_private] = value;
21959
- },
21960
- collectCloneCount ()
21961
- {
21962
- let cloneCount = 0;
22016
+ super ();
22017
+ }
22018
+ };
22019
+ ;
21963
22020
 
21964
- for (const parent of this [_parents])
21965
- {
21966
- if (parent [_private])
21967
- continue;
22021
+ x_ite_Namespace .add ("IterableWeakSet", "x_ite/Base/IterableWeakSet", IterableWeakSet_default_);
22022
+ /* harmony default export */ const IterableWeakSet = (IterableWeakSet_default_);
22023
+ ;// CONCATENATED MODULE: ./src/x_ite/Base/X3DChildObject.js
22024
+ /*******************************************************************************
22025
+ *
22026
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
22027
+ *
22028
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
22029
+ *
22030
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
22031
+ *
22032
+ * The copyright notice above does not evidence any actual of intended
22033
+ * publication of such source code, and is an unpublished work by create3000.
22034
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
22035
+ * create3000.
22036
+ *
22037
+ * No permission is granted to copy, distribute, or create derivative works from
22038
+ * the contents of this software, in whole or in part, without the prior written
22039
+ * permission of create3000.
22040
+ *
22041
+ * NON-MILITARY USE ONLY
22042
+ *
22043
+ * All create3000 software are effectively free software with a non-military use
22044
+ * restriction. It is free. Well commented source is provided. You may reuse the
22045
+ * source in any way you please with the exception anything that uses it must be
22046
+ * marked to indicate is contains 'non-military use only' components.
22047
+ *
22048
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
22049
+ *
22050
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
22051
+ *
22052
+ * This file is part of the X_ITE Project.
22053
+ *
22054
+ * X_ITE is free software: you can redistribute it and/or modify it under the
22055
+ * terms of the GNU General Public License version 3 only, as published by the
22056
+ * Free Software Foundation.
22057
+ *
22058
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
22059
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
22060
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
22061
+ * details (a copy is included in the LICENSE file that accompanied this code).
22062
+ *
22063
+ * You should have received a copy of the GNU General Public License version 3
22064
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
22065
+ * copy of the GPLv3 License.
22066
+ *
22067
+ * For Silvio, Joy and Adi.
22068
+ *
22069
+ ******************************************************************************/
21968
22070
 
21969
- cloneCount += parent .collectCloneCount ();
21970
- }
21971
22071
 
21972
- return cloneCount;
21973
- },
21974
- addParent (parent)
21975
- {
21976
- if (this [_parents] === X3DChildObject .prototype [_parents])
21977
- this [_parents] = new Set ();
21978
22072
 
21979
- this [_parents] .add (parent);
21980
22073
 
21981
- this .parentsChanged ();
21982
- },
21983
- removeParent (parent)
21984
- {
21985
- this [_parents] .delete (parent);
22074
+ const
22075
+ _modificationTime = Symbol (),
22076
+ _tainted = Symbol (),
22077
+ _parents = Symbol (),
22078
+ _private = Symbol ();
21986
22079
 
21987
- this .parentsChanged ();
21988
- },
21989
- getParents ()
21990
- {
21991
- return this [_parents];
21992
- },
21993
- parentsChanged () { },
21994
- dispose ()
22080
+ function X3DChildObject ()
22081
+ {
22082
+ Base_X3DObject .call (this);
22083
+ }
22084
+
22085
+ Object .assign (Object .setPrototypeOf (X3DChildObject .prototype, Base_X3DObject .prototype),
22086
+ {
22087
+ [_modificationTime]: 0,
22088
+ [_tainted]: false,
22089
+ [_parents]: new IterableWeakSet (),
22090
+ [_private]: false,
22091
+ isInitializable ()
22092
+ {
22093
+ return true;
22094
+ },
22095
+ isInput ()
22096
+ {
22097
+ return false;
22098
+ },
22099
+ isOutput ()
22100
+ {
22101
+ return false;
22102
+ },
22103
+ setModificationTime (value)
22104
+ {
22105
+ this [_modificationTime] = value;
22106
+ },
22107
+ getModificationTime ()
22108
+ {
22109
+ return this [_modificationTime];
22110
+ },
22111
+ setTainted (value)
22112
+ {
22113
+ this [_tainted] = value;
22114
+ },
22115
+ isTainted ()
22116
+ {
22117
+ return this [_tainted];
22118
+ },
22119
+ addEvent ()
22120
+ {
22121
+ for (const parent of this [_parents])
22122
+ parent .addEvent (this);
22123
+ },
22124
+ addEventObject (field, event)
22125
+ {
22126
+ for (const parent of this [_parents])
22127
+ parent .addEventObject (this, event);
22128
+ },
22129
+ processEvent ()
22130
+ {
22131
+ this .setTainted (false);
22132
+ this .processInterests ();
22133
+ },
22134
+ isPrivate ()
22135
+ {
22136
+ return this [_private];
22137
+ },
22138
+ setPrivate (value)
22139
+ {
22140
+ this [_private] = value;
22141
+ },
22142
+ collectCloneCount ()
22143
+ {
22144
+ let cloneCount = 0;
22145
+
22146
+ for (const parent of this [_parents])
21995
22147
  {
21996
- this [_parents] .clear ();
22148
+ if (parent [_private])
22149
+ continue;
21997
22150
 
21998
- Base_X3DObject .prototype .dispose .call (this);
21999
- },
22000
- });
22001
- }
22151
+ cloneCount += parent .collectCloneCount ();
22152
+ }
22153
+
22154
+ return cloneCount;
22155
+ },
22156
+ addParent (parent)
22157
+ {
22158
+ if (this [_parents] === X3DChildObject .prototype [_parents])
22159
+ this [_parents] = new IterableWeakSet (() => this .parentsChanged ());
22160
+
22161
+ this [_parents] .add (parent);
22162
+ },
22163
+ removeParent (parent)
22164
+ {
22165
+ this [_parents] .delete (parent);
22166
+ },
22167
+ getParents ()
22168
+ {
22169
+ return this [_parents];
22170
+ },
22171
+ parentsChanged () { },
22172
+ dispose ()
22173
+ {
22174
+ this [_parents] .clear ();
22175
+
22176
+ Base_X3DObject .prototype .dispose .call (this);
22177
+ },
22178
+ });
22002
22179
 
22003
22180
  for (const key of Object .keys (X3DChildObject .prototype))
22004
22181
  Object .defineProperty (X3DChildObject .prototype, key, { enumerable: false });
@@ -22694,6 +22871,7 @@ x_ite_Namespace .add ("FieldDefinitionArray", "x_ite/Base/FieldDefinitionArray",
22694
22871
 
22695
22872
 
22696
22873
 
22874
+
22697
22875
  const
22698
22876
  _value = Symbol (),
22699
22877
  _accessType = Symbol (),
@@ -22719,12 +22897,12 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22719
22897
  [_value]: null,
22720
22898
  [_accessType]: Base_X3DConstants .initializeOnly,
22721
22899
  [_unit]: null,
22722
- [_references]: new Set (),
22900
+ [_references]: new IterableWeakSet (),
22723
22901
  [_referencesCallbacks]: new Map (),
22724
- [_fieldInterests]: new Set (),
22902
+ [_fieldInterests]: new IterableWeakSet (),
22725
22903
  [_fieldCallbacks]: new Map (),
22726
- [_inputRoutes]: new Set (),
22727
- [_outputRoutes]: new Set (),
22904
+ [_inputRoutes]: new IterableWeakSet (),
22905
+ [_outputRoutes]: new IterableWeakSet (),
22728
22906
  [_routeCallbacks]: new Map (),
22729
22907
  [_uniformLocation]: null,
22730
22908
  create ()
@@ -22796,22 +22974,19 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22796
22974
  {
22797
22975
  return this [_unit];
22798
22976
  },
22799
- hasReferences ()
22800
- {
22801
- return this [_references] .size !== 0;
22802
- },
22803
22977
  isReference (accessType)
22804
22978
  {
22805
22979
  return accessType === this [_accessType] || accessType === Base_X3DConstants .inputOutput;
22806
22980
  },
22807
22981
  addReference (reference)
22808
22982
  {
22809
- const references = this .getReferences ();
22983
+ if (this [_references] === X3DField .prototype [_references])
22984
+ this [_references] = new IterableWeakSet ();
22810
22985
 
22811
- if (references .has (reference))
22986
+ if (this [_references] .has (reference))
22812
22987
  return;
22813
22988
 
22814
- references .add (reference);
22989
+ this [_references] .add (reference);
22815
22990
 
22816
22991
  // Create IS relationship
22817
22992
 
@@ -22863,9 +23038,6 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22863
23038
  },
22864
23039
  getReferences ()
22865
23040
  {
22866
- if (this [_references] === X3DField .prototype [_references])
22867
- this [_references] = new Set ();
22868
-
22869
23041
  return this [_references];
22870
23042
  },
22871
23043
  addReferencesCallback (key, object)
@@ -22892,7 +23064,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22892
23064
  addFieldInterest (field)
22893
23065
  {
22894
23066
  if (this [_fieldInterests] === X3DField .prototype [_fieldInterests])
22895
- this [_fieldInterests] = new Set ();
23067
+ this [_fieldInterests] = new IterableWeakSet ();
22896
23068
 
22897
23069
  this [_fieldInterests] .add (field);
22898
23070
  },
@@ -22923,7 +23095,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22923
23095
  addInputRoute (route)
22924
23096
  {
22925
23097
  if (this [_inputRoutes] === X3DField .prototype [_inputRoutes])
22926
- this [_inputRoutes] = new Set ();
23098
+ this [_inputRoutes] = new IterableWeakSet ();
22927
23099
 
22928
23100
  this [_inputRoutes] .add (route);
22929
23101
 
@@ -22942,7 +23114,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22942
23114
  addOutputRoute (route)
22943
23115
  {
22944
23116
  if (this [_outputRoutes] === X3DField .prototype [_outputRoutes])
22945
- this [_outputRoutes] = new Set ();
23117
+ this [_outputRoutes] = new IterableWeakSet ();
22946
23118
 
22947
23119
  this [_outputRoutes] .add (route);
22948
23120
 
@@ -25861,14 +26033,14 @@ Object .assign (Matrix3 .prototype,
25861
26033
  {
25862
26034
  case 1:
25863
26035
  {
25864
- if (translation)
26036
+ if (translation && !translation .equals (Numbers_Vector2 .Zero))
25865
26037
  this .translate (translation);
25866
26038
 
25867
26039
  break;
25868
26040
  }
25869
26041
  case 2:
25870
26042
  {
25871
- if (translation)
26043
+ if (translation && !translation .equals (Numbers_Vector2 .Zero))
25872
26044
  this .translate (translation);
25873
26045
 
25874
26046
  if (rotation)
@@ -25878,7 +26050,7 @@ Object .assign (Matrix3 .prototype,
25878
26050
  }
25879
26051
  case 3:
25880
26052
  {
25881
- if (translation)
26053
+ if (translation && !translation .equals (Numbers_Vector2 .Zero))
25882
26054
  this .translate (translation);
25883
26055
 
25884
26056
  if (rotation)
@@ -25891,7 +26063,7 @@ Object .assign (Matrix3 .prototype,
25891
26063
  }
25892
26064
  case 4:
25893
26065
  {
25894
- if (translation)
26066
+ if (translation && !translation .equals (Numbers_Vector2 .Zero))
25895
26067
  this .translate (translation);
25896
26068
 
25897
26069
  if (rotation)
@@ -25916,7 +26088,7 @@ Object .assign (Matrix3 .prototype,
25916
26088
  case 5:
25917
26089
  {
25918
26090
  // P' = T * C * R * SR * S * -SR * -C * P
25919
- if (translation)
26091
+ if (translation && !translation .equals (Numbers_Vector2 .Zero))
25920
26092
  this .translate (translation);
25921
26093
 
25922
26094
  const hasCenter = center && !center .equals (Numbers_Vector2 .Zero);
@@ -28184,14 +28356,14 @@ Object .assign (Matrix4_Matrix4 .prototype,
28184
28356
  {
28185
28357
  case 1:
28186
28358
  {
28187
- if (translation)
28359
+ if (translation && !translation .equals (Numbers_Vector3 .Zero))
28188
28360
  this .translate (translation);
28189
28361
 
28190
28362
  break;
28191
28363
  }
28192
28364
  case 2:
28193
28365
  {
28194
- if (translation)
28366
+ if (translation && !translation .equals (Numbers_Vector3 .Zero))
28195
28367
  this .translate (translation);
28196
28368
 
28197
28369
  if (rotation && !rotation .equals (Numbers_Rotation4 .Identity))
@@ -28201,7 +28373,7 @@ Object .assign (Matrix4_Matrix4 .prototype,
28201
28373
  }
28202
28374
  case 3:
28203
28375
  {
28204
- if (translation)
28376
+ if (translation && !translation .equals (Numbers_Vector3 .Zero))
28205
28377
  this .translate (translation);
28206
28378
 
28207
28379
  if (rotation && !rotation .equals (Numbers_Rotation4 .Identity))
@@ -28214,7 +28386,7 @@ Object .assign (Matrix4_Matrix4 .prototype,
28214
28386
  }
28215
28387
  case 4:
28216
28388
  {
28217
- if (translation)
28389
+ if (translation && !translation .equals (Numbers_Vector3 .Zero))
28218
28390
  this .translate (translation);
28219
28391
 
28220
28392
  if (rotation && !rotation .equals (Numbers_Rotation4 .Identity))
@@ -28239,7 +28411,7 @@ Object .assign (Matrix4_Matrix4 .prototype,
28239
28411
  case 5:
28240
28412
  {
28241
28413
  // P' = T * C * R * SR * S * -SR * -C * P
28242
- if (translation)
28414
+ if (translation && !translation .equals (Numbers_Vector3 .Zero))
28243
28415
  this .translate (translation);
28244
28416
 
28245
28417
  const hasCenter = center && !center .equals (Numbers_Vector3 .Zero);
@@ -29008,39 +29180,12 @@ x_ite_Namespace .add ("SFMatrix4", "x_ite/Fields/SFMatrix4", SFMatrix4_default_)
29008
29180
 
29009
29181
 
29010
29182
 
29011
-
29012
29183
  const cache = new WeakMap ();
29013
29184
 
29014
- const SFNodeCache = DEVELOPMENT ?
29015
- {
29016
- get (baseNode)
29017
- {
29018
- const node = cache .get (baseNode) ?.deref ();
29019
-
29020
- if (node)
29021
- {
29022
- return node;
29023
- }
29024
- else
29025
- {
29026
- const node = new Fields_SFNode (baseNode);
29027
-
29028
- node .dispose = dispose;
29185
+ // const r = new FinalizationRegistry (t => console .error (`object deleted ${--i} ${t}`));
29186
+ // let i = 0;
29029
29187
 
29030
- cache .set (baseNode, new WeakRef (node));
29031
-
29032
- return node;
29033
- }
29034
- },
29035
- add (baseNode, node)
29036
- {
29037
- cache .set (baseNode, new WeakRef (node));
29038
- },
29039
- delete (baseNode)
29040
- {
29041
- cache .delete (baseNode);
29042
- },
29043
- } :
29188
+ const SFNodeCache =
29044
29189
  {
29045
29190
  get (baseNode)
29046
29191
  {
@@ -29054,15 +29199,23 @@ const SFNodeCache = DEVELOPMENT ?
29054
29199
  {
29055
29200
  const node = new Fields_SFNode (baseNode);
29056
29201
 
29057
- node .dispose = dispose;
29202
+ this .set (baseNode, node);
29058
29203
 
29059
- cache .set (baseNode, node);
29204
+ // i += 2;
29205
+ // console .warn (`baseNode ${i} ${baseNode .getTypeName ()}`);
29206
+ // r .register (baseNode, `baseNode ${baseNode .getTypeName ()}`);
29207
+ // r .register (node, `node ${baseNode .getTypeName ()}`);
29060
29208
 
29061
29209
  return node;
29062
29210
  }
29063
29211
  },
29064
- add (baseNode, node)
29212
+ set (baseNode, node)
29065
29213
  {
29214
+ node .dispose = dispose;
29215
+
29216
+ // WeakMap allows associating data to objects in a way that doesn't prevent
29217
+ // the key objects from being collected, even if the values reference the keys.
29218
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
29066
29219
  cache .set (baseNode, node);
29067
29220
  },
29068
29221
  delete (baseNode)
@@ -29079,7 +29232,7 @@ function dispose ()
29079
29232
 
29080
29233
  Fields_SFNode .prototype .dispose .call (this);
29081
29234
 
29082
- cache .delete (value);
29235
+ SFNodeCache .delete (value);
29083
29236
  }
29084
29237
 
29085
29238
  const SFNodeCache_default_ = SFNodeCache;
@@ -30532,181 +30685,28 @@ function SFVec2Template (TypeName, double)
30532
30685
  },
30533
30686
  };
30534
30687
 
30535
- Object .defineProperties (SFVec2 .prototype,
30536
- {
30537
- 0: x,
30538
- 1: y,
30539
- x: Object .assign ({ enumerable: true }, x),
30540
- y: Object .assign ({ enumerable: true }, y),
30541
- });
30542
-
30543
- return SFVec2;
30544
- }
30545
-
30546
- const SFVec2 = {
30547
- SFVec2d: SFVec2Template ("SFVec2d", true),
30548
- SFVec2f: SFVec2Template ("SFVec2f", false),
30549
- };
30550
-
30551
- const SFVec2_default_ = SFVec2;
30552
- ;
30553
-
30554
- x_ite_Namespace .add ("SFVec2", "x_ite/Fields/SFVec2", SFVec2_default_);
30555
- /* harmony default export */ const Fields_SFVec2 = (SFVec2_default_);
30556
- ;// CONCATENATED MODULE: ./src/x_ite/Fields/SFVec4.js
30557
- /*******************************************************************************
30558
- *
30559
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
30560
- *
30561
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
30562
- *
30563
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
30564
- *
30565
- * The copyright notice above does not evidence any actual of intended
30566
- * publication of such source code, and is an unpublished work by create3000.
30567
- * This material contains CONFIDENTIAL INFORMATION that is the property of
30568
- * create3000.
30569
- *
30570
- * No permission is granted to copy, distribute, or create derivative works from
30571
- * the contents of this software, in whole or in part, without the prior written
30572
- * permission of create3000.
30573
- *
30574
- * NON-MILITARY USE ONLY
30575
- *
30576
- * All create3000 software are effectively free software with a non-military use
30577
- * restriction. It is free. Well commented source is provided. You may reuse the
30578
- * source in any way you please with the exception anything that uses it must be
30579
- * marked to indicate is contains 'non-military use only' components.
30580
- *
30581
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
30582
- *
30583
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
30584
- *
30585
- * This file is part of the X_ITE Project.
30586
- *
30587
- * X_ITE is free software: you can redistribute it and/or modify it under the
30588
- * terms of the GNU General Public License version 3 only, as published by the
30589
- * Free Software Foundation.
30590
- *
30591
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
30592
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
30593
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
30594
- * details (a copy is included in the LICENSE file that accompanied this code).
30595
- *
30596
- * You should have received a copy of the GNU General Public License version 3
30597
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
30598
- * copy of the GPLv3 License.
30599
- *
30600
- * For Silvio, Joy and Adi.
30601
- *
30602
- ******************************************************************************/
30603
-
30604
-
30605
-
30606
-
30607
-
30608
- function SFVec4Template (TypeName, double)
30609
- {
30610
- function SFVec4 (x, y, z, w)
30611
- {
30612
- switch (arguments .length)
30613
- {
30614
- case 0:
30615
- Base_X3DField .call (this, new Numbers_Vector4 ());
30616
- break;
30617
-
30618
- case 1:
30619
- Base_X3DField .call (this, arguments [0]);
30620
- break;
30621
-
30622
- case 4:
30623
- Base_X3DField .call (this, new Numbers_Vector4 (+x, +y, +z, +w));
30624
- break;
30625
-
30626
- default:
30627
- throw new Error ("Invalid arguments.");
30628
- }
30629
- }
30630
-
30631
- Fields_SFVecPrototypeTemplate (SFVec4, TypeName, Numbers_Vector4, double);
30632
-
30633
- for (const key of Object .keys (SFVec4 .prototype))
30634
- Object .defineProperty (SFVec4 .prototype, key, { enumerable: false });
30635
-
30636
- const x = {
30637
- get ()
30638
- {
30639
- return this .getValue () .x;
30640
- },
30641
- set (value)
30642
- {
30643
- this .getValue () .x = +value;
30644
- this .addEvent ();
30645
- },
30646
- };
30647
-
30648
- const y = {
30649
- get ()
30650
- {
30651
- return this .getValue () .y;
30652
- },
30653
- set (value)
30654
- {
30655
- this .getValue () .y = +value;
30656
- this .addEvent ();
30657
- },
30658
- };
30659
-
30660
- const z = {
30661
- get ()
30662
- {
30663
- return this .getValue () .z;
30664
- },
30665
- set (value)
30666
- {
30667
- this .getValue () .z = +value;
30668
- this .addEvent ();
30669
- },
30670
- };
30671
-
30672
- const w = {
30673
- get ()
30674
- {
30675
- return this .getValue () .w;
30676
- },
30677
- set (value)
30678
- {
30679
- this .getValue () .w = +value;
30680
- this .addEvent ();
30681
- },
30682
- };
30683
-
30684
- Object .defineProperties (SFVec4 .prototype,
30688
+ Object .defineProperties (SFVec2 .prototype,
30685
30689
  {
30686
30690
  0: x,
30687
30691
  1: y,
30688
- 2: z,
30689
- 3: w,
30690
30692
  x: Object .assign ({ enumerable: true }, x),
30691
30693
  y: Object .assign ({ enumerable: true }, y),
30692
- z: Object .assign ({ enumerable: true }, z),
30693
- w: Object .assign ({ enumerable: true }, w),
30694
30694
  });
30695
30695
 
30696
- return SFVec4;
30696
+ return SFVec2;
30697
30697
  }
30698
30698
 
30699
- const SFVec4 = {
30700
- SFVec4d: SFVec4Template ("SFVec4d", true),
30701
- SFVec4f: SFVec4Template ("SFVec4f", false),
30699
+ const SFVec2 = {
30700
+ SFVec2d: SFVec2Template ("SFVec2d", true),
30701
+ SFVec2f: SFVec2Template ("SFVec2f", false),
30702
30702
  };
30703
30703
 
30704
- const SFVec4_default_ = SFVec4;
30704
+ const SFVec2_default_ = SFVec2;
30705
30705
  ;
30706
30706
 
30707
- x_ite_Namespace .add ("SFVec4", "x_ite/Fields/SFVec4", SFVec4_default_);
30708
- /* harmony default export */ const Fields_SFVec4 = (SFVec4_default_);
30709
- ;// CONCATENATED MODULE: ./src/shim.js
30707
+ x_ite_Namespace .add ("SFVec2", "x_ite/Fields/SFVec2", SFVec2_default_);
30708
+ /* harmony default export */ const Fields_SFVec2 = (SFVec2_default_);
30709
+ ;// CONCATENATED MODULE: ./src/x_ite/Fields/SFVec4.js
30710
30710
  /*******************************************************************************
30711
30711
  *
30712
30712
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -30754,44 +30754,111 @@ x_ite_Namespace .add ("SFVec4", "x_ite/Fields/SFVec4", SFVec4_default_);
30754
30754
  *
30755
30755
  ******************************************************************************/
30756
30756
 
30757
- (() =>
30758
- {
30759
- // Added at February 2022
30760
- // https://github.com/tc39/proposal-relative-indexing-method#polyfill
30761
30757
 
30762
- function at (n)
30763
- {
30764
- // ToInteger() abstract op
30765
- n = Math.trunc(n) || 0;
30766
- // Allow negative indexing from the end
30767
- if (n < 0) n += this.length;
30768
- // OOB access is guaranteed to return undefined
30769
- if (n < 0 || n >= this.length) return undefined;
30770
- // Otherwise, this is just normal property access
30771
- return this[n];
30772
- }
30773
30758
 
30774
- const TypedArray = Reflect .getPrototypeOf (Int8Array);
30775
- for (const C of [Array, String, TypedArray])
30759
+
30760
+
30761
+ function SFVec4Template (TypeName, double)
30762
+ {
30763
+ function SFVec4 (x, y, z, w)
30776
30764
  {
30777
- if (C .prototype .at === undefined)
30765
+ switch (arguments .length)
30778
30766
  {
30779
- Object .defineProperty (C .prototype, "at",
30780
- {
30781
- value: at,
30782
- writable: true,
30783
- enumerable: false,
30784
- configurable: true,
30785
- });
30767
+ case 0:
30768
+ Base_X3DField .call (this, new Numbers_Vector4 ());
30769
+ break;
30770
+
30771
+ case 1:
30772
+ Base_X3DField .call (this, arguments [0]);
30773
+ break;
30774
+
30775
+ case 4:
30776
+ Base_X3DField .call (this, new Numbers_Vector4 (+x, +y, +z, +w));
30777
+ break;
30778
+
30779
+ default:
30780
+ throw new Error ("Invalid arguments.");
30786
30781
  }
30787
30782
  }
30788
- })();
30789
30783
 
30790
- const shim_default_ = undefined;
30784
+ Fields_SFVecPrototypeTemplate (SFVec4, TypeName, Numbers_Vector4, double);
30785
+
30786
+ for (const key of Object .keys (SFVec4 .prototype))
30787
+ Object .defineProperty (SFVec4 .prototype, key, { enumerable: false });
30788
+
30789
+ const x = {
30790
+ get ()
30791
+ {
30792
+ return this .getValue () .x;
30793
+ },
30794
+ set (value)
30795
+ {
30796
+ this .getValue () .x = +value;
30797
+ this .addEvent ();
30798
+ },
30799
+ };
30800
+
30801
+ const y = {
30802
+ get ()
30803
+ {
30804
+ return this .getValue () .y;
30805
+ },
30806
+ set (value)
30807
+ {
30808
+ this .getValue () .y = +value;
30809
+ this .addEvent ();
30810
+ },
30811
+ };
30812
+
30813
+ const z = {
30814
+ get ()
30815
+ {
30816
+ return this .getValue () .z;
30817
+ },
30818
+ set (value)
30819
+ {
30820
+ this .getValue () .z = +value;
30821
+ this .addEvent ();
30822
+ },
30823
+ };
30824
+
30825
+ const w = {
30826
+ get ()
30827
+ {
30828
+ return this .getValue () .w;
30829
+ },
30830
+ set (value)
30831
+ {
30832
+ this .getValue () .w = +value;
30833
+ this .addEvent ();
30834
+ },
30835
+ };
30836
+
30837
+ Object .defineProperties (SFVec4 .prototype,
30838
+ {
30839
+ 0: x,
30840
+ 1: y,
30841
+ 2: z,
30842
+ 3: w,
30843
+ x: Object .assign ({ enumerable: true }, x),
30844
+ y: Object .assign ({ enumerable: true }, y),
30845
+ z: Object .assign ({ enumerable: true }, z),
30846
+ w: Object .assign ({ enumerable: true }, w),
30847
+ });
30848
+
30849
+ return SFVec4;
30850
+ }
30851
+
30852
+ const SFVec4 = {
30853
+ SFVec4d: SFVec4Template ("SFVec4d", true),
30854
+ SFVec4f: SFVec4Template ("SFVec4f", false),
30855
+ };
30856
+
30857
+ const SFVec4_default_ = SFVec4;
30791
30858
  ;
30792
30859
 
30793
- x_ite_Namespace .add ("shim", "shim", shim_default_);
30794
- /* harmony default export */ const shim = ((/* unused pure expression or super */ null && (shim_default_)));
30860
+ x_ite_Namespace .add ("SFVec4", "x_ite/Fields/SFVec4", SFVec4_default_);
30861
+ /* harmony default export */ const Fields_SFVec4 = (SFVec4_default_);
30795
30862
  ;// CONCATENATED MODULE: ./src/x_ite/Base/X3DArrayField.js
30796
30863
  /*******************************************************************************
30797
30864
  *
@@ -31279,26 +31346,29 @@ Object .assign (Object .setPrototypeOf (X3DObjectArrayField .prototype, Base_X3D
31279
31346
 
31280
31347
  return result;
31281
31348
  },
31282
- resize (size, value, silently)
31349
+ resize (newLength, value, silently)
31283
31350
  {
31284
31351
  const
31285
31352
  target = this [X3DObjectArrayField_target],
31286
31353
  array = target .getValue (),
31287
31354
  length = array .length;
31288
31355
 
31289
- if (size < length)
31356
+ if (newLength < 0)
31357
+ throw new RangeError ("Invalid array length");
31358
+
31359
+ if (newLength < length)
31290
31360
  {
31291
- for (let i = size; i < length; ++ i)
31361
+ for (let i = newLength; i < length; ++ i)
31292
31362
  target .removeChildObject (array [i]);
31293
31363
 
31294
- array .length = size;
31364
+ array .length = newLength;
31295
31365
 
31296
31366
  if (!silently)
31297
31367
  target .addEvent ();
31298
31368
  }
31299
- else if (size > length)
31369
+ else if (newLength > length)
31300
31370
  {
31301
- for (let i = length; i < size; ++ i)
31371
+ for (let i = length; i < newLength; ++ i)
31302
31372
  {
31303
31373
  const field = new (target .getSingleType ()) ();
31304
31374
 
@@ -31319,7 +31389,6 @@ Object .assign (Object .setPrototypeOf (X3DObjectArrayField .prototype, Base_X3D
31319
31389
  },
31320
31390
  removeChildObject (value)
31321
31391
  {
31322
- value .removeParent (this [X3DObjectArrayField_proxy]);
31323
31392
  value .dispose ();
31324
31393
  },
31325
31394
  reverse ()
@@ -32040,6 +32109,9 @@ Object .assign (Object .setPrototypeOf (X3DTypedArrayField .prototype, Base_X3DA
32040
32109
  length = target [_length],
32041
32110
  components = target .getComponents ();
32042
32111
 
32112
+ if (newLength < 0)
32113
+ throw new RangeError ("Invalid array length");
32114
+
32043
32115
  let array = target .getValue ();
32044
32116
 
32045
32117
  if (newLength < length)
@@ -33646,19 +33718,13 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33646
33718
  {
33647
33719
  return this [_browser];
33648
33720
  },
33649
- getMainScene ()
33650
- {
33651
- let scene = this [_executionContext] .getScene ();
33652
-
33653
- while (!scene .isMainScene ())
33654
- scene = scene .getScene ();
33655
-
33656
- return scene;
33657
- },
33658
33721
  getScene ()
33659
33722
  {
33660
33723
  let executionContext = this [_executionContext];
33661
33724
 
33725
+ if (!executionContext)
33726
+ return null;
33727
+
33662
33728
  while (!executionContext .isScene ())
33663
33729
  executionContext = executionContext .getExecutionContext ();
33664
33730
 
@@ -33670,10 +33736,13 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33670
33736
  },
33671
33737
  setExecutionContext (executionContext)
33672
33738
  {
33739
+ if (!this [_type] .includes (Base_X3DConstants .X3DScene))
33740
+ throw new Error (`${this .getTypeName ()}.setExecutionContext is not supported.`);
33741
+
33673
33742
  // Disconnect interests.
33674
33743
 
33675
- this .getOuterNode ?.() ?.getLive () .removeInterest (_set_live__, this);
33676
- this [_executionContext] .getLive () .removeInterest (_set_live__, this);
33744
+ this .getOuterNode ?.() ?.getLive () .removeInterest (_set_live__, this);
33745
+ this [_executionContext] ?.getLive () .removeInterest (_set_live__, this);
33677
33746
 
33678
33747
  // Currently only useful for Scene.
33679
33748
  this [_executionContext] = executionContext;
@@ -33683,8 +33752,8 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33683
33752
  if (this .getOuterNode ?.())
33684
33753
  this .getOuterNode () .getLive () .addInterest (_set_live__, this);
33685
33754
 
33686
- else if (this [_executionContext] !== this)
33687
- this [_executionContext] .getLive () .addInterest (_set_live__, this);
33755
+ else
33756
+ this [_executionContext] ?.getLive () .addInterest (_set_live__, this);
33688
33757
 
33689
33758
  this [_set_live__] ();
33690
33759
  },
@@ -33696,37 +33765,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33696
33765
  {
33697
33766
  return this [_type];
33698
33767
  },
33699
- create (executionContext = this [_executionContext])
33700
- {
33701
- return new (this .constructor) (executionContext);
33702
- },
33703
- copy (executionContext)
33704
- {
33705
- const copy = this .create (executionContext);
33706
-
33707
- for (const field of this [_predefinedFields])
33708
- copy .getPredefinedFields () .get (field .getName ()) .assign (field);
33709
-
33710
- if (this .canUserDefinedFields ())
33711
- {
33712
- for (const field of this [_userDefinedFields])
33713
- copy .addUserDefinedField (field .getAccessType (), field .getName (), field .copy ());
33714
- }
33715
-
33716
- copy .setup ();
33717
-
33718
- return copy;
33719
- },
33720
- // replaceWith (replacement, cache = false)
33721
- // {
33722
- // cache = cache && SFNodeCache .get (this);
33723
-
33724
- // for (const parent of new Set (this .getParents ()))
33725
- // {
33726
- // if (parent instanceof Fields .SFNode && parent !== cache)
33727
- // parent .setValue (replacement)
33728
- // }
33729
- // },
33730
33768
  setup ()
33731
33769
  {
33732
33770
  Object .freeze (this [_type]);
@@ -33800,8 +33838,8 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33800
33838
  if (this .getOuterNode ?.())
33801
33839
  this .getOuterNode () .getLive () .addInterest (_set_live__, this);
33802
33840
 
33803
- else if (this [_executionContext] !== this)
33804
- this [_executionContext] .getLive () .addInterest (_set_live__, this);
33841
+ else if (this !== this [_browser])
33842
+ this [_executionContext] ?.getLive () .addInterest (_set_live__, this);
33805
33843
 
33806
33844
  // Return field.
33807
33845
 
@@ -33815,7 +33853,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
33815
33853
  if (this .getOuterNode ?.())
33816
33854
  return this [_live] && this .getOuterNode () .getLive () .getValue ();
33817
33855
 
33818
- else if (this !== this [_executionContext])
33856
+ else if (this [_executionContext] && this !== this [_browser])
33819
33857
  return this [_live] && this [_executionContext] .getLive () .getValue ();
33820
33858
 
33821
33859
  return this [_live];
@@ -34038,30 +34076,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
34038
34076
 
34039
34077
  return !field .getModificationTime ();
34040
34078
  },
34041
- hasRoutes ()
34042
- {
34043
- /// Returns true if there are any routes from or to fields of this node, otherwise false.
34044
-
34045
- for (const field of this [_predefinedFields])
34046
- {
34047
- if (field .getInputRoutes () .size || field .getOutputRoutes () .size)
34048
- return true;
34049
- }
34050
-
34051
- for (const field of this [_userDefinedFields])
34052
- {
34053
- if (field .getInputRoutes () .size || field .getOutputRoutes () .size)
34054
- return true;
34055
- }
34056
-
34057
- for (const route of this [_executionContext] .getRoutes ())
34058
- {
34059
- if (route .getSourceNode () === this || route .getDestinationNode () === this)
34060
- return true;
34061
- }
34062
-
34063
- return false;
34064
- },
34065
34079
  getExtendedEventHandling ()
34066
34080
  {
34067
34081
  // Whether initializeOnly field are treated like inputOnly and inputOutput fields.
@@ -34126,11 +34140,16 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
34126
34140
  {
34127
34141
  const time = this [_browser] .getCurrentTime ();
34128
34142
 
34129
- this [_executionContext] ._sceneGraph_changed = time;
34130
- this ._parents_changed = time;
34143
+ if (this [_executionContext])
34144
+ this [_executionContext] ._sceneGraph_changed = time;
34145
+
34146
+ this ._parents_changed = time;
34131
34147
  },
34132
34148
  dispose ()
34133
34149
  {
34150
+ this .getOuterNode ?.() ?.getLive () .removeInterest (_set_live__, this);
34151
+ this [_executionContext] ?.getLive () .removeInterest (_set_live__, this);
34152
+
34134
34153
  this .setLive (false);
34135
34154
 
34136
34155
  for (const field of this [_childObjects])
@@ -34211,7 +34230,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34211
34230
  x_ite_Namespace .add ("X3DBaseNode", "x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34212
34231
  /* harmony default export */ const Base_X3DBaseNode = (X3DBaseNode_default_);
34213
34232
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Legacy.js
34214
- /* provided dependency */ var $ = __webpack_require__(268);
34233
+ /* provided dependency */ var $ = __webpack_require__(631);
34215
34234
  /*******************************************************************************
34216
34235
  *
34217
34236
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34348,7 +34367,7 @@ x_ite_Namespace .add ("Legacy", "x_ite/Browser/Legacy", Legacy_default_);
34348
34367
  *
34349
34368
  ******************************************************************************/
34350
34369
 
34351
- const BROWSER_VERSION_default_ = "9.6.0";
34370
+ const BROWSER_VERSION_default_ = "9.6.2";
34352
34371
  ;
34353
34372
 
34354
34373
  x_ite_Namespace .add ("BROWSER_VERSION", "x_ite/BROWSER_VERSION", BROWSER_VERSION_default_);
@@ -34429,11 +34448,28 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34429
34448
  {
34430
34449
  return this .constructor .specificationRange;
34431
34450
  },
34451
+ create (executionContext = this .getExecutionContext ())
34452
+ {
34453
+ return new (this .constructor) (executionContext);
34454
+ },
34432
34455
  copy (instance)
34433
34456
  {
34434
- if (!instance || instance .getType () .includes (Base_X3DConstants .X3DExecutionContext))
34457
+ if (instance ?.getType () .includes (Base_X3DConstants .X3DExecutionContext) ?? true)
34435
34458
  {
34436
- return Base_X3DBaseNode .prototype .copy .call (this, instance);
34459
+ const copy = this .create (instance);
34460
+
34461
+ for (const field of this .getPredefinedFields ())
34462
+ copy .getPredefinedFields () .get (field .getName ()) .assign (field);
34463
+
34464
+ if (this .canUserDefinedFields ())
34465
+ {
34466
+ for (const field of this .getUserDefinedFields ())
34467
+ copy .addUserDefinedField (field .getAccessType (), field .getName (), field .copy ());
34468
+ }
34469
+
34470
+ copy .setup ();
34471
+
34472
+ return copy;
34437
34473
  }
34438
34474
  else
34439
34475
  {
@@ -34467,7 +34503,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34467
34503
  {
34468
34504
  const destinationField = copy .getPredefinedField (sourceField .getName ());
34469
34505
 
34470
- if (sourceField .hasReferences ())
34506
+ if (sourceField .getReferences () .size)
34471
34507
  {
34472
34508
  // IS relationship
34473
34509
 
@@ -34518,7 +34554,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34518
34554
  sourceField .getName (),
34519
34555
  destinationField);
34520
34556
 
34521
- if (sourceField .hasReferences ())
34557
+ if (sourceField .getReferences () .size)
34522
34558
  {
34523
34559
  // IS relationship
34524
34560
 
@@ -34577,6 +34613,30 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34577
34613
 
34578
34614
  return false;
34579
34615
  },
34616
+ hasRoutes ()
34617
+ {
34618
+ /// Returns true if there are any routes from or to fields of this node, otherwise false.
34619
+
34620
+ for (const field of this .getPredefinedFields ())
34621
+ {
34622
+ if (field .getInputRoutes () .size || field .getOutputRoutes () .size)
34623
+ return true;
34624
+ }
34625
+
34626
+ for (const field of this .getUserDefinedFields ())
34627
+ {
34628
+ if (field .getInputRoutes () .size || field .getOutputRoutes () .size)
34629
+ return true;
34630
+ }
34631
+
34632
+ for (const route of this .getExecutionContext () .getRoutes ())
34633
+ {
34634
+ if (route .getSourceNode () === this || route .getDestinationNode () === this)
34635
+ return true;
34636
+ }
34637
+
34638
+ return false;
34639
+ },
34580
34640
  getCloneCount ()
34581
34641
  {
34582
34642
  return Base_X3DBaseNode .prototype .collectCloneCount .call (this);
@@ -34865,7 +34925,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
34865
34925
  else if (!Array .isArray (value) && value .valueOf () instanceof Object)
34866
34926
  {
34867
34927
  // Support for Numbers (Vector234, Color34, ...).
34868
-
34928
+
34869
34929
  value = Array .from (value);
34870
34930
  value .type = "double";
34871
34931
  }
@@ -35308,7 +35368,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35308
35368
  {
35309
35369
  if (field .getAccessType () === Base_X3DConstants .inputOutput && field .getReferences () .size !== 0)
35310
35370
  {
35311
- if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
35371
+ if (!Array .from (field .getReferences ()) .some (reference => reference .isInitializable ()))
35312
35372
  mustOutputValue = !this .isDefaultValue (field);
35313
35373
  }
35314
35374
  }
@@ -35406,7 +35466,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35406
35466
  {
35407
35467
  if (field .getAccessType () === Base_X3DConstants .inputOutput && field .getReferences () .size !== 0)
35408
35468
  {
35409
- if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
35469
+ if (!Array .from (field .getReferences ()) .some (reference => reference .isInitializable ()))
35410
35470
  mustOutputValue = true;
35411
35471
  }
35412
35472
  }
@@ -35665,7 +35725,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35665
35725
  {
35666
35726
  if (field .getAccessType () === Base_X3DConstants .inputOutput && field .getReferences () .size !== 0)
35667
35727
  {
35668
- if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
35728
+ if (!Array .from (field .getReferences ()) .some (reference => reference .isInitializable ()))
35669
35729
  mustOutputValue = !this .isDefaultValue (field);
35670
35730
  }
35671
35731
  }
@@ -35794,7 +35854,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35794
35854
  {
35795
35855
  if (field .getAccessType () === Base_X3DConstants .inputOutput && field .getReferences () .size !== 0)
35796
35856
  {
35797
- if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
35857
+ if (!Array .from (field .getReferences ()) .some (reference => reference .isInitializable ()))
35798
35858
  mustOutputValue = true;
35799
35859
  }
35800
35860
  }
@@ -35949,7 +36009,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35949
36009
 
35950
36010
  for (const field of references)
35951
36011
  {
35952
- const protoFields = [... field .getReferences ()];
36012
+ const protoFields = Array .from (field .getReferences ());
35953
36013
 
35954
36014
  for (const protoField of protoFields)
35955
36015
  {
@@ -36033,11 +36093,11 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
36033
36093
  {
36034
36094
  // Remove imported node if any.
36035
36095
 
36036
- if (!executionContext .isMainScene ())
36037
- {
36038
- const parentContext = executionContext .getExecutionContext ();
36096
+ const parentContext = executionContext .getExecutionContext ();
36039
36097
 
36040
- for (const importedNode of [... parentContext .getImportedNodes ()])
36098
+ if (parentContext)
36099
+ {
36100
+ for (const importedNode of Array .from (parentContext .getImportedNodes ()))
36041
36101
  {
36042
36102
  try
36043
36103
  {
@@ -36053,7 +36113,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
36053
36113
 
36054
36114
  // Remove exported node if any.
36055
36115
 
36056
- for (const exportedNode of [... executionContext .getExportedNodes ()])
36116
+ for (const exportedNode of Array .from (executionContext .getExportedNodes ()))
36057
36117
  {
36058
36118
  if (exportedNode .getLocalNode () === this)
36059
36119
  executionContext .removeExportedNode (exportedNode .getExportedName ());
@@ -36072,7 +36132,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
36072
36132
  if (!(secondParent instanceof x_ite_Fields .MFNode))
36073
36133
  continue;
36074
36134
 
36075
- secondParent .setValue ([... secondParent] .filter (node => node ?.getValue () !== this))
36135
+ secondParent .setValue (Array .from (secondParent) .filter (node => node ?.getValue () !== this))
36076
36136
  }
36077
36137
  }
36078
36138
 
@@ -38953,7 +39013,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
38953
39013
  x_ite_Namespace .add ("X3DProtoDeclaration", "x_ite/Prototype/X3DProtoDeclaration", X3DProtoDeclaration_default_);
38954
39014
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (X3DProtoDeclaration_default_);
38955
39015
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38956
- /* provided dependency */ var X3DParser_$ = __webpack_require__(268);
39016
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(631);
38957
39017
  /*******************************************************************************
38958
39018
  *
38959
39019
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39215,7 +39275,7 @@ const Expressions_default_ = Expressions;
39215
39275
  x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
39216
39276
  /* harmony default export */ const Parser_Expressions = (Expressions_default_);
39217
39277
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/VRMLParser.js
39218
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(268);
39278
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(631);
39219
39279
  /*******************************************************************************
39220
39280
  *
39221
39281
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39288,7 +39348,7 @@ x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_def
39288
39348
  const Grammar = Parser_Expressions ({
39289
39349
  // General
39290
39350
  Whitespaces: /[\x20\n,\t\r]+/gy,
39291
- Comment: /#.*?(?=[\n\r])/gy,
39351
+ Comment: /#.*?(?=[\n\r]|$)/gy,
39292
39352
  Break: /\r?\n/g,
39293
39353
 
39294
39354
  // Header
@@ -40458,7 +40518,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40458
40518
  {
40459
40519
  ++ this .unknownLevel;
40460
40520
 
40461
- this .nodeBody (this .getExecutionContext () .createNode ("WorldInfo", false));
40521
+ this .nodeBody (this .getExecutionContext () .createNode ("MetadataBoolean", false));
40462
40522
 
40463
40523
  -- this .unknownLevel;
40464
40524
 
@@ -41915,7 +41975,7 @@ const VRMLParser_default_ = VRMLParser;
41915
41975
  x_ite_Namespace .add ("VRMLParser", "x_ite/Parser/VRMLParser", VRMLParser_default_);
41916
41976
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
41917
41977
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
41918
- /* provided dependency */ var XMLParser_$ = __webpack_require__(268);
41978
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(631);
41919
41979
  /*******************************************************************************
41920
41980
  *
41921
41981
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -43593,320 +43653,246 @@ x_ite_Namespace .add ("JSONParser", "x_ite/Parser/JSONParser", JSONParser_defaul
43593
43653
 
43594
43654
 
43595
43655
 
43596
-
43597
-
43598
- function X3DOptimizer () { }
43599
-
43600
- Object .assign (X3DOptimizer .prototype,
43601
- {
43602
- removeGroups: false,
43603
- removeEmptyGroups: false,
43604
- combineGroupingNodes: false,
43605
- optimizeInterpolators: false,
43606
- optimizeSceneGraph (nodes)
43607
- {
43608
- const removedNodes = [ ];
43609
-
43610
- nodes .setValue (this .optimizeNodes (nodes, true, removedNodes));
43611
-
43612
- removedNodes .forEach (node => node .dispose ());
43613
- },
43614
- optimizeNodes (nodes, combine, removedNodes)
43615
- {
43616
- return [... nodes] .flatMap (node => this .optimizeNode (node, combine, removedNodes));
43617
- },
43618
- optimizeNode (node, combine, removedNodes)
43619
- {
43620
- if (!node)
43621
- return [ ];
43622
-
43623
- if (this .optimizeInterpolators)
43624
- this .removeInterpolatorsWithOnlyOneValue (node, removedNodes);
43625
-
43626
- switch (node .getNodeTypeName ())
43627
- {
43628
- case "Transform":
43629
- {
43630
- node .children = this .optimizeNodes (node .children, true, removedNodes);
43631
- break;
43632
- }
43633
- case "Anchor":
43634
- case "Group":
43635
- {
43636
- node .children = this .optimizeNodes (node .children, true, removedNodes);
43637
-
43638
- if (this .removeEmptyGroups)
43639
- {
43640
- if (node .children .length === 0)
43641
- return [ ];
43642
- }
43643
-
43644
- if (this .removeGroups)
43645
- break;
43646
-
43647
- return node;
43648
- }
43649
- case "Collision":
43650
- case "LOD":
43651
- case "Switch":
43652
- {
43653
- this .optimizeNodes (node .children, false, removedNodes);
43654
- return node;
43655
- }
43656
- case "HAnimJoint":
43657
- case "HAnimSegment":
43658
- case "HAnimSite":
43659
- {
43660
- node .children = this .optimizeNodes (node .children, true, removedNodes);
43661
- return node;
43662
- }
43663
- case "HAnimHumanoid":
43664
- {
43665
- node .skeleton = this .optimizeNodes (node .skeleton, true, removedNodes);
43666
- node .skin = this .optimizeNodes (node .skin, true, removedNodes);
43667
- return node;
43668
- }
43669
- default:
43670
- {
43671
- return node;
43672
- }
43673
- }
43674
-
43675
- if (!combine)
43676
- return node;
43677
-
43678
- if (this .removeEmptyGroups)
43679
- {
43680
- if (node .children .length === 0)
43681
- return [ ];
43682
- }
43683
-
43684
- if (!this .combineGroupingNodes)
43685
- return node;
43686
-
43687
- if (node .getValue () .hasRoutes ())
43688
- return node;
43689
-
43690
- if (node .getNodeTypeName () === "Transform")
43691
- {
43692
- node = this .combineSingleChild (node, removedNodes);
43693
-
43694
- if (!node .translation ?.getValue () .equals (Numbers_Vector3 .Zero))
43695
- return node;
43696
-
43697
- if (!node .rotation ?.getValue () .equals (Numbers_Rotation4 .Identity))
43698
- return node;
43699
-
43700
- if (!node .scale ?.getValue () .equals (Numbers_Vector3 .One))
43701
- return node;
43702
- }
43703
-
43704
- if (node .children)
43705
- {
43706
- removedNodes .push (node);
43707
-
43708
- return [... node .children];
43709
- }
43710
-
43711
- return node;
43712
- },
43713
- removeInterpolatorsWithOnlyOneValue (node, removedNodes)
43714
- {
43715
- for (const field of node .getValue () .getFields ())
43716
- {
43717
- if (field .getInputRoutes () .size !== 1)
43718
- continue;
43719
-
43720
- const
43721
- route = Array .from (field .getInputRoutes ()) [0],
43722
- sourceNode = route .sourceNode;
43723
-
43724
- if (!sourceNode .getNodeType () .includes (Base_X3DConstants .X3DInterpolatorNode))
43725
- continue;
43726
-
43727
- if (sourceNode .key .length !== 1)
43728
- continue;
43729
-
43730
- node [route .destinationField] = sourceNode .keyValue [0];
43731
-
43732
- removedNodes .push (sourceNode);
43733
-
43734
- route .dispose ();
43735
- }
43736
- },
43737
- combineSingleChild (node, removedNodes)
43738
- {
43739
- if (node .children .length !== 1)
43740
- return node;
43741
-
43742
- const child = node .children [0];
43743
-
43744
- if (child .getValue () .getCloneCount () > 1)
43745
- return node;
43746
-
43747
- if (child .getValue () .hasRoutes ())
43748
- return node;
43749
-
43750
- switch (child .getNodeTypeName ())
43751
- {
43752
- case "Transform":
43753
- case "HAnimHumanoid":
43754
- return this .combineTransform (node, child, removedNodes);
43755
- case "DirectionalLight":
43756
- case "PointLight":
43757
- case "SpotLight":
43758
- return this .combineLight (node, child, removedNodes);
43759
- default:
43760
- return node;
43761
- }
43762
- },
43763
- combineTransform (node, child, removedNodes)
43764
- {
43765
- // Combine single Transform nodes.
43766
-
43767
- const
43768
- translation = new Numbers_Vector3 (),
43769
- rotation = new Numbers_Rotation4 (),
43770
- scale = new Numbers_Vector3 (1, 1, 1),
43771
- scaleOrientation = new Numbers_Rotation4 (),
43772
- nodeMatrix = new Numbers_Matrix4 (),
43773
- childMatrix = new Numbers_Matrix4 ();
43774
-
43775
- nodeMatrix .set (node .translation .getValue (),
43776
- node .rotation .getValue (),
43777
- node .scale .getValue (),
43778
- node .scaleOrientation .getValue (),
43779
- node .center .getValue ());
43780
-
43781
- childMatrix .set (child .translation .getValue (),
43782
- child .rotation .getValue (),
43783
- child .scale .getValue (),
43784
- child .scaleOrientation .getValue (),
43785
- child .center .getValue ());
43786
-
43787
- nodeMatrix .multLeft (childMatrix);
43788
-
43789
- nodeMatrix .get (translation, rotation, scale, scaleOrientation, child .center .getValue ());
43790
-
43791
- child .translation = translation;
43792
- child .rotation = rotation;
43793
- child .scale = scale;
43794
- child .scaleOrientation = scaleOrientation;
43795
-
43796
- if (!child .getNodeTypeName () && node .getNodeTypeName ())
43797
- {
43798
- const executionContext = child .getExecutionContext ();
43799
-
43800
- executionContext .addNamedNode (executionContext .getUniqueName (node .getNodeTypeName ()), child);
43801
- }
43802
-
43803
- removedNodes .push (node);
43804
-
43805
- return child;
43806
- },
43807
- combineLight (node, child, removedNodes)
43808
- {
43809
- // Combine single light nodes.
43810
-
43811
- const nodeMatrix = new Numbers_Matrix4 ();
43812
-
43813
- nodeMatrix .set (node .translation .getValue (),
43814
- node .rotation .getValue (),
43815
- node .scale .getValue (),
43816
- node .scaleOrientation .getValue (),
43817
- node .center .getValue ());
43818
-
43819
- if (child .location)
43820
- child .location = nodeMatrix .multVecMatrix (child .location .getValue ());
43821
-
43822
- if (child .direction)
43823
- child .direction = nodeMatrix .multDirMatrix (child .direction .getValue ()) .normalize ();
43824
-
43825
- removedNodes .push (node);
43826
-
43827
- return child;
43828
- },
43829
- });
43830
-
43831
- const X3DOptimizer_default_ = X3DOptimizer;
43832
- ;
43833
-
43834
- x_ite_Namespace .add ("X3DOptimizer", "x_ite/Parser/X3DOptimizer", X3DOptimizer_default_);
43835
- /* harmony default export */ const Parser_X3DOptimizer = (X3DOptimizer_default_);
43836
- ;// CONCATENATED MODULE: ./src/x_ite/Features.js
43837
- /*******************************************************************************
43838
- *
43839
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
43840
- *
43841
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
43842
- *
43843
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
43844
- *
43845
- * The copyright notice above does not evidence any actual of intended
43846
- * publication of such source code, and is an unpublished work by create3000.
43847
- * This material contains CONFIDENTIAL INFORMATION that is the property of
43848
- * create3000.
43849
- *
43850
- * No permission is granted to copy, distribute, or create derivative works from
43851
- * the contents of this software, in whole or in part, without the prior written
43852
- * permission of create3000.
43853
- *
43854
- * NON-MILITARY USE ONLY
43855
- *
43856
- * All create3000 software are effectively free software with a non-military use
43857
- * restriction. It is free. Well commented source is provided. You may reuse the
43858
- * source in any way you please with the exception anything that uses it must be
43859
- * marked to indicate is contains 'non-military use only' components.
43860
- *
43861
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
43862
- *
43863
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
43864
- *
43865
- * This file is part of the X_ITE Project.
43866
- *
43867
- * X_ITE is free software: you can redistribute it and/or modify it under the
43868
- * terms of the GNU General Public License version 3 only, as published by the
43869
- * Free Software Foundation.
43870
- *
43871
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
43872
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
43873
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
43874
- * details (a copy is included in the LICENSE file that accompanied this code).
43875
- *
43876
- * You should have received a copy of the GNU General Public License version 3
43877
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
43878
- * copy of the GPLv3 License.
43879
- *
43880
- * For Silvio, Joy and Adi.
43881
- *
43882
- ******************************************************************************/
43883
-
43884
-
43885
-
43886
- const MODULE = false;
43887
-
43888
- const Features =
43656
+
43657
+
43658
+ function X3DOptimizer () { }
43659
+
43660
+ Object .assign (X3DOptimizer .prototype,
43889
43661
  {
43890
- get ENVIRONMENT ()
43662
+ removeGroups: false,
43663
+ removeEmptyGroups: false,
43664
+ combineGroupingNodes: false,
43665
+ optimizeInterpolators: false,
43666
+ optimizeSceneGraph (nodes)
43891
43667
  {
43892
- if (DEVELOPMENT)
43893
- return "BROWSER";
43668
+ const removedNodes = [ ];
43894
43669
 
43895
- if (MODULE)
43896
- return "MODULE";
43670
+ nodes .setValue (this .optimizeNodes (nodes, true, removedNodes));
43897
43671
 
43898
- if ((typeof process === "object") && (process .release .name .search (/node|io.js/) !== -1))
43899
- return "NODE";
43672
+ removedNodes .forEach (node => node .dispose ());
43673
+ },
43674
+ optimizeNodes (nodes, combine, removedNodes)
43675
+ {
43676
+ return [... nodes] .flatMap (node => this .optimizeNode (node, combine, removedNodes));
43677
+ },
43678
+ optimizeNode (node, combine, removedNodes)
43679
+ {
43680
+ if (!node)
43681
+ return [ ];
43900
43682
 
43901
- return "BROWSER";
43683
+ if (this .optimizeInterpolators)
43684
+ this .removeInterpolatorsWithOnlyOneValue (node, removedNodes);
43685
+
43686
+ switch (node .getNodeTypeName ())
43687
+ {
43688
+ case "Transform":
43689
+ {
43690
+ node .children = this .optimizeNodes (node .children, true, removedNodes);
43691
+ break;
43692
+ }
43693
+ case "Anchor":
43694
+ case "Group":
43695
+ {
43696
+ node .children = this .optimizeNodes (node .children, true, removedNodes);
43697
+
43698
+ if (this .removeEmptyGroups)
43699
+ {
43700
+ if (node .children .length === 0)
43701
+ return [ ];
43702
+ }
43703
+
43704
+ if (this .removeGroups)
43705
+ break;
43706
+
43707
+ return node;
43708
+ }
43709
+ case "Collision":
43710
+ case "LOD":
43711
+ case "Switch":
43712
+ {
43713
+ this .optimizeNodes (node .children, false, removedNodes);
43714
+ return node;
43715
+ }
43716
+ case "HAnimJoint":
43717
+ case "HAnimSegment":
43718
+ case "HAnimSite":
43719
+ {
43720
+ node .children = this .optimizeNodes (node .children, true, removedNodes);
43721
+ return node;
43722
+ }
43723
+ case "HAnimHumanoid":
43724
+ {
43725
+ node .skeleton = this .optimizeNodes (node .skeleton, true, removedNodes);
43726
+ node .skin = this .optimizeNodes (node .skin, true, removedNodes);
43727
+ return node;
43728
+ }
43729
+ default:
43730
+ {
43731
+ return node;
43732
+ }
43733
+ }
43734
+
43735
+ if (!combine)
43736
+ return node;
43737
+
43738
+ if (this .removeEmptyGroups)
43739
+ {
43740
+ if (node .children .length === 0)
43741
+ return [ ];
43742
+ }
43743
+
43744
+ if (!this .combineGroupingNodes)
43745
+ return node;
43746
+
43747
+ if (node .getValue () .hasRoutes ())
43748
+ return node;
43749
+
43750
+ if (node .getNodeTypeName () === "Transform")
43751
+ {
43752
+ node = this .combineSingleChild (node, removedNodes);
43753
+
43754
+ if (!node .translation ?.getValue () .equals (Numbers_Vector3 .Zero))
43755
+ return node;
43756
+
43757
+ if (!node .rotation ?.getValue () .equals (Numbers_Rotation4 .Identity))
43758
+ return node;
43759
+
43760
+ if (!node .scale ?.getValue () .equals (Numbers_Vector3 .One))
43761
+ return node;
43762
+ }
43763
+
43764
+ if (node .children)
43765
+ {
43766
+ removedNodes .push (node);
43767
+
43768
+ return [... node .children];
43769
+ }
43770
+
43771
+ return node;
43902
43772
  },
43903
- };
43773
+ removeInterpolatorsWithOnlyOneValue (node, removedNodes)
43774
+ {
43775
+ for (const field of node .getValue () .getFields ())
43776
+ {
43777
+ if (field .getInputRoutes () .size !== 1)
43778
+ continue;
43904
43779
 
43905
- const Features_default_ = Features;
43780
+ const
43781
+ route = Array .from (field .getInputRoutes ()) [0],
43782
+ sourceNode = route .sourceNode;
43783
+
43784
+ if (!sourceNode .getNodeType () .includes (Base_X3DConstants .X3DInterpolatorNode))
43785
+ continue;
43786
+
43787
+ if (sourceNode .key .length !== 1)
43788
+ continue;
43789
+
43790
+ node [route .destinationField] = sourceNode .keyValue [0];
43791
+
43792
+ removedNodes .push (sourceNode);
43793
+
43794
+ route .dispose ();
43795
+ }
43796
+ },
43797
+ combineSingleChild (node, removedNodes)
43798
+ {
43799
+ if (node .children .length !== 1)
43800
+ return node;
43801
+
43802
+ const child = node .children [0];
43803
+
43804
+ if (child .getValue () .getCloneCount () > 1)
43805
+ return node;
43806
+
43807
+ if (child .getValue () .hasRoutes ())
43808
+ return node;
43809
+
43810
+ switch (child .getNodeTypeName ())
43811
+ {
43812
+ case "Transform":
43813
+ case "HAnimHumanoid":
43814
+ return this .combineTransform (node, child, removedNodes);
43815
+ case "DirectionalLight":
43816
+ case "PointLight":
43817
+ case "SpotLight":
43818
+ return this .combineLight (node, child, removedNodes);
43819
+ default:
43820
+ return node;
43821
+ }
43822
+ },
43823
+ combineTransform (node, child, removedNodes)
43824
+ {
43825
+ // Combine single Transform nodes.
43826
+
43827
+ const
43828
+ translation = new Numbers_Vector3 (),
43829
+ rotation = new Numbers_Rotation4 (),
43830
+ scale = new Numbers_Vector3 (1, 1, 1),
43831
+ scaleOrientation = new Numbers_Rotation4 (),
43832
+ nodeMatrix = new Numbers_Matrix4 (),
43833
+ childMatrix = new Numbers_Matrix4 ();
43834
+
43835
+ nodeMatrix .set (node .translation .getValue (),
43836
+ node .rotation .getValue (),
43837
+ node .scale .getValue (),
43838
+ node .scaleOrientation .getValue (),
43839
+ node .center .getValue ());
43840
+
43841
+ childMatrix .set (child .translation .getValue (),
43842
+ child .rotation .getValue (),
43843
+ child .scale .getValue (),
43844
+ child .scaleOrientation .getValue (),
43845
+ child .center .getValue ());
43846
+
43847
+ nodeMatrix .multLeft (childMatrix);
43848
+
43849
+ nodeMatrix .get (translation, rotation, scale, scaleOrientation, child .center .getValue ());
43850
+
43851
+ child .translation = translation;
43852
+ child .rotation = rotation;
43853
+ child .scale = scale;
43854
+ child .scaleOrientation = scaleOrientation;
43855
+
43856
+ if (!child .getNodeTypeName () && node .getNodeTypeName ())
43857
+ {
43858
+ const executionContext = child .getExecutionContext ();
43859
+
43860
+ executionContext .addNamedNode (executionContext .getUniqueName (node .getNodeTypeName ()), child);
43861
+ }
43862
+
43863
+ removedNodes .push (node);
43864
+
43865
+ return child;
43866
+ },
43867
+ combineLight (node, child, removedNodes)
43868
+ {
43869
+ // Combine single light nodes.
43870
+
43871
+ const nodeMatrix = new Numbers_Matrix4 ();
43872
+
43873
+ nodeMatrix .set (node .translation .getValue (),
43874
+ node .rotation .getValue (),
43875
+ node .scale .getValue (),
43876
+ node .scaleOrientation .getValue (),
43877
+ node .center .getValue ());
43878
+
43879
+ if (child .location)
43880
+ child .location = nodeMatrix .multVecMatrix (child .location .getValue ());
43881
+
43882
+ if (child .direction)
43883
+ child .direction = nodeMatrix .multDirMatrix (child .direction .getValue ()) .normalize ();
43884
+
43885
+ removedNodes .push (node);
43886
+
43887
+ return child;
43888
+ },
43889
+ });
43890
+
43891
+ const X3DOptimizer_default_ = X3DOptimizer;
43906
43892
  ;
43907
43893
 
43908
- x_ite_Namespace .add ("Features", "x_ite/Features", Features_default_);
43909
- /* harmony default export */ const x_ite_Features = (Features_default_);
43894
+ x_ite_Namespace .add ("X3DOptimizer", "x_ite/Parser/X3DOptimizer", X3DOptimizer_default_);
43895
+ /* harmony default export */ const Parser_X3DOptimizer = (X3DOptimizer_default_);
43910
43896
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Networking/URLs.js
43911
43897
  /*******************************************************************************
43912
43898
  *
@@ -44021,7 +44007,7 @@ const URLs_default_ = URLs;
44021
44007
  x_ite_Namespace .add ("URLs", "x_ite/Browser/Networking/URLs", URLs_default_);
44022
44008
  /* harmony default export */ const Networking_URLs = (URLs_default_);
44023
44009
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
44024
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(268);
44010
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(631);
44025
44011
  /*******************************************************************************
44026
44012
  *
44027
44013
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -44191,7 +44177,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
44191
44177
  .then (resolve)
44192
44178
  .catch (reject);
44193
44179
  },
44194
- rootObject: async function (glTF)
44180
+ async rootObject (glTF)
44195
44181
  {
44196
44182
  if (!(glTF instanceof Object))
44197
44183
  return;
@@ -44531,14 +44517,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
44531
44517
 
44532
44518
  return light .node = lightNode;
44533
44519
  },
44534
- buffersArray: async function (buffers)
44520
+ async buffersArray (buffers)
44535
44521
  {
44536
44522
  if (!(buffers instanceof Array))
44537
44523
  return;
44538
44524
 
44539
44525
  this .buffers = await Promise .all (buffers .map ((buffer, i) => this .bufferObject (buffer, i)));
44540
44526
  },
44541
- bufferObject: async function (buffer, i)
44527
+ async bufferObject (buffer, i)
44542
44528
  {
44543
44529
  if (!(buffer instanceof Object))
44544
44530
  return;
@@ -44820,14 +44806,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
44820
44806
  });
44821
44807
  };
44822
44808
  })(),
44823
- imagesArray: async function (images)
44809
+ async imagesArray (images)
44824
44810
  {
44825
44811
  if (!(images instanceof Array))
44826
44812
  return;
44827
44813
 
44828
44814
  this .images = await Promise .all (images .map (image => this .imageObject (image)));
44829
44815
  },
44830
- imageObject: async function (image)
44816
+ async imageObject (image)
44831
44817
  {
44832
44818
  if (!(image instanceof Object))
44833
44819
  return;
@@ -45490,7 +45476,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45490
45476
  draco .destroy (buffer);
45491
45477
  }
45492
45478
  },
45493
- createDraco: async function ()
45479
+ async createDraco ()
45494
45480
  {
45495
45481
  if (this .constructor .draco)
45496
45482
  {
@@ -47323,7 +47309,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
47323
47309
  x_ite_Namespace .add ("GLTF2Parser", "x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
47324
47310
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
47325
47311
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
47326
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(268);
47312
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(631);
47327
47313
  /*******************************************************************************
47328
47314
  *
47329
47315
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47418,7 +47404,7 @@ Object .assign (Object .setPrototypeOf (GLB2Parser .prototype, Parser_X3DParser
47418
47404
  .then (resolve)
47419
47405
  .catch (reject);
47420
47406
  },
47421
- glb: async function ()
47407
+ async glb ()
47422
47408
  {
47423
47409
  this .chunks ();
47424
47410
 
@@ -47475,7 +47461,7 @@ const GLB2Parser_default_ = GLB2Parser;
47475
47461
  x_ite_Namespace .add ("GLB2Parser", "x_ite/Parser/GLB2Parser", GLB2Parser_default_);
47476
47462
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
47477
47463
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
47478
- /* provided dependency */ var OBJParser_$ = __webpack_require__(268);
47464
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(631);
47479
47465
  /*******************************************************************************
47480
47466
  *
47481
47467
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47543,7 +47529,7 @@ const OBJParser_Grammar = Parser_Expressions ({
47543
47529
  // General
47544
47530
  whitespaces: /[\x20\n\t\r]+/gy,
47545
47531
  whitespacesNoLineTerminator: /[\x20\t]+/gy,
47546
- comment: /#.*?(?=[\n\r])/gy,
47532
+ comment: /#.*?(?=[\n\r]|$)/gy,
47547
47533
  untilEndOfLine: /[^\r\n]+/gy,
47548
47534
 
47549
47535
  // Keywords
@@ -47630,7 +47616,7 @@ Object .assign (Object .setPrototypeOf (OBJParser .prototype, Parser_X3DParser .
47630
47616
  .then (resolve)
47631
47617
  .catch (reject);
47632
47618
  },
47633
- obj: async function ()
47619
+ async obj ()
47634
47620
  {
47635
47621
  // Set profile and components.
47636
47622
 
@@ -47686,12 +47672,12 @@ Object .assign (Object .setPrototypeOf (OBJParser .prototype, Parser_X3DParser .
47686
47672
  {
47687
47673
  OBJParser_Grammar .whitespacesNoLineTerminator .parse (this);
47688
47674
  },
47689
- statements: async function ()
47675
+ async statements ()
47690
47676
  {
47691
47677
  while (await this .statement ())
47692
47678
  ;
47693
47679
  },
47694
- statement: async function ()
47680
+ async statement ()
47695
47681
  {
47696
47682
  if (await this .mtllibs ())
47697
47683
  return true;
@@ -47727,7 +47713,7 @@ Object .assign (Object .setPrototypeOf (OBJParser .prototype, Parser_X3DParser .
47727
47713
 
47728
47714
  return false;
47729
47715
  },
47730
- mtllibs: async function ()
47716
+ async mtllibs ()
47731
47717
  {
47732
47718
  this .comments ();
47733
47719
 
@@ -47747,7 +47733,7 @@ Object .assign (Object .setPrototypeOf (OBJParser .prototype, Parser_X3DParser .
47747
47733
 
47748
47734
  return false;
47749
47735
  },
47750
- mtllib: async function (path)
47736
+ async mtllib (path)
47751
47737
  {
47752
47738
  try
47753
47739
  {
@@ -48635,7 +48621,7 @@ const STLAParser_Grammar = Parser_Expressions ({
48635
48621
  // General
48636
48622
  whitespaces: /[\x20\n\t\r]+/gy,
48637
48623
  whitespacesNoLineTerminator: /[\x20\t]+/gy,
48638
- comment: /;.*?(?=[\n\r])/gy,
48624
+ comment: /;.*?(?=[\n\r]|$)/gy,
48639
48625
  untilEndOfLine: /[^\r\n]+/gy,
48640
48626
 
48641
48627
  // Keywords
@@ -48697,7 +48683,7 @@ Object .assign (Object .setPrototypeOf (STLAParser .prototype, Parser_X3DParser
48697
48683
  .then (resolve)
48698
48684
  .catch (reject);
48699
48685
  },
48700
- stl: async function ()
48686
+ async stl ()
48701
48687
  {
48702
48688
  // Set profile and components.
48703
48689
 
@@ -49047,7 +49033,7 @@ Object .assign (Object .setPrototypeOf (STLBParser .prototype, Parser_X3DParser
49047
49033
  .then (resolve)
49048
49034
  .catch (reject);
49049
49035
  },
49050
- stl: async function ()
49036
+ async stl ()
49051
49037
  {
49052
49038
  // Set profile and components.
49053
49039
 
@@ -49243,7 +49229,7 @@ Object .assign (Object .setPrototypeOf (PLYAParser .prototype, Parser_X3DParser
49243
49229
  .then (resolve)
49244
49230
  .catch (reject);
49245
49231
  },
49246
- ply: async function ()
49232
+ async ply ()
49247
49233
  {
49248
49234
  // Set profile and components.
49249
49235
 
@@ -50833,8 +50819,8 @@ const MatrixStack_default_ = MatrixStack;
50833
50819
  x_ite_Namespace .add ("MatrixStack", "standard/Math/Utility/MatrixStack", MatrixStack_default_);
50834
50820
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
50835
50821
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
50836
- /* provided dependency */ var SVGParser_$ = __webpack_require__(268);
50837
- /* provided dependency */ var libtess = __webpack_require__(937);
50822
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(631);
50823
+ /* provided dependency */ var libtess = __webpack_require__(580);
50838
50824
  /*******************************************************************************
50839
50825
  *
50840
50826
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -51074,7 +51060,7 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
51074
51060
  .then (resolve)
51075
51061
  .catch (reject);
51076
51062
  },
51077
- xmlElement: async function (xmlElement)
51063
+ async xmlElement (xmlElement)
51078
51064
  {
51079
51065
  switch (xmlElement .nodeName)
51080
51066
  {
@@ -51096,7 +51082,7 @@ Object .assign (Object .setPrototypeOf (SVGParser .prototype, Parser_X3DParser .
51096
51082
 
51097
51083
  return this .getScene ();
51098
51084
  },
51099
- svgElement: async function (xmlElement)
51085
+ async svgElement (xmlElement)
51100
51086
  {
51101
51087
  const
51102
51088
  browser = this .getBrowser (),
@@ -53602,7 +53588,7 @@ const SVGParser_default_ = SVGParser;
53602
53588
  x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_);
53603
53589
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
53604
53590
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
53605
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(268);
53591
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(631);
53606
53592
  /*******************************************************************************
53607
53593
  *
53608
53594
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53663,18 +53649,47 @@ x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_)
53663
53649
 
53664
53650
 
53665
53651
 
53666
- function GoldenGate (scene)
53652
+ class GoldenGate extends Parser_X3DParser
53667
53653
  {
53668
- Parser_X3DParser .call (this, scene);
53654
+ #inputs = new Map ();
53669
53655
 
53670
- this .inputs = new Map ();
53671
- }
53656
+ static #parsers = [
53657
+ Parser_SVGParser,
53658
+ Parser_XMLParser,
53659
+ Parser_GLTF2Parser,
53660
+ Parser_GLB2Parser,
53661
+ Parser_JSONParser,
53662
+ Parser_VRMLParser,
53663
+ Parser_OBJParser,
53664
+ Parser_STLAParser,
53665
+ Parser_STLBParser,
53666
+ Parser_PLYAParser,
53667
+ Parser_PLYBParser,
53668
+ ];
53669
+
53670
+ static addParsers (... args)
53671
+ {
53672
+ this .#parsers .push (... args);
53673
+ }
53674
+
53675
+ static removeParsers (... args)
53676
+ {
53677
+ this .#parsers = this .#parsers .filter (parser => !args .includes (parser));
53678
+ }
53679
+
53680
+ static getParsers ()
53681
+ {
53682
+ return this .#parsers .slice ();
53683
+ }
53684
+
53685
+ /**
53686
+ * @deprecated Use `GoldenGate.add/remove/getParsers`.
53687
+ */
53688
+ static get Parser () { return this .#parsers; }
53672
53689
 
53673
- Object .assign (Object .setPrototypeOf (GoldenGate .prototype, Parser_X3DParser .prototype),
53674
- {
53675
53690
  parseIntoScene (x3dSyntax, resolve, reject)
53676
53691
  {
53677
- for (const Parser of GoldenGate .Parser)
53692
+ for (const Parser of GoldenGate .#parsers)
53678
53693
  {
53679
53694
  try
53680
53695
  {
@@ -53709,7 +53724,8 @@ Object .assign (Object .setPrototypeOf (GoldenGate .prototype, Parser_X3DParser
53709
53724
  throw new Error ("Couldn't parse X3D. No suitable file handler found for 'data:' URL.");
53710
53725
  else
53711
53726
  throw new Error (`Couldn't parse X3D. No suitable file handler found for '${this .getScene () .worldURL}'.`);
53712
- },
53727
+ }
53728
+
53713
53729
  getInput (encoding, x3dSyntax)
53714
53730
  {
53715
53731
  if (Array .isArray (encoding))
@@ -53718,16 +53734,17 @@ Object .assign (Object .setPrototypeOf (GoldenGate .prototype, Parser_X3DParser
53718
53734
  }
53719
53735
  else
53720
53736
  {
53721
- if (this .inputs .has (encoding))
53722
- return this .inputs .get (encoding);
53737
+ if (this .#inputs .has (encoding))
53738
+ return this .#inputs .get (encoding);
53723
53739
 
53724
53740
  const input = this .createInput (encoding, x3dSyntax);
53725
53741
 
53726
- this .inputs .set (encoding, input);
53742
+ this .#inputs .set (encoding, input);
53727
53743
 
53728
53744
  return input;
53729
53745
  }
53730
- },
53746
+ }
53747
+
53731
53748
  createInput (encoding, x3dSyntax)
53732
53749
  {
53733
53750
  try
@@ -53748,22 +53765,8 @@ Object .assign (Object .setPrototypeOf (GoldenGate .prototype, Parser_X3DParser
53748
53765
  {
53749
53766
  return undefined;
53750
53767
  }
53751
- },
53752
- });
53753
-
53754
- GoldenGate .Parser = [
53755
- Parser_SVGParser,
53756
- Parser_XMLParser,
53757
- Parser_GLTF2Parser,
53758
- Parser_GLB2Parser,
53759
- Parser_JSONParser,
53760
- Parser_VRMLParser,
53761
- Parser_OBJParser,
53762
- Parser_STLAParser,
53763
- Parser_STLBParser,
53764
- Parser_PLYAParser,
53765
- Parser_PLYBParser,
53766
- ];
53768
+ }
53769
+ }
53767
53770
 
53768
53771
  const GoldenGate_default_ = GoldenGate;
53769
53772
  ;
@@ -53952,7 +53955,7 @@ const Plane3_default_ = Plane3;
53952
53955
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53953
53956
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53954
53957
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53955
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(937);
53958
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(580);
53956
53959
  /*******************************************************************************
53957
53960
  *
53958
53961
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -57723,7 +57726,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57723
57726
  node = this .nodes [i],
57724
57727
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57725
57728
 
57726
- if (!enableInlineBindables && !scene .isMainScene ())
57729
+ if (!enableInlineBindables && scene .getExecutionContext ())
57727
57730
  continue;
57728
57731
 
57729
57732
  if (node .getName () == name)
@@ -57739,7 +57742,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57739
57742
  node = this .nodes [i],
57740
57743
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57741
57744
 
57742
- if (!enableInlineBindables && !scene .isMainScene ())
57745
+ if (!enableInlineBindables && scene .getExecutionContext ())
57743
57746
  continue;
57744
57747
 
57745
57748
  if (node ._isBound .getValue ())
@@ -57754,7 +57757,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57754
57757
  node = this .nodes [i],
57755
57758
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57756
57759
 
57757
- if (!enableInlineBindables && !scene .isMainScene ())
57760
+ if (!enableInlineBindables && scene .getExecutionContext ())
57758
57761
  continue;
57759
57762
 
57760
57763
  return node;
@@ -62481,7 +62484,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62481
62484
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
62482
62485
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
62483
62486
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
62484
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(268);
62487
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(631);
62485
62488
  /*******************************************************************************
62486
62489
  *
62487
62490
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -62672,9 +62675,7 @@ Object .assign (Object .setPrototypeOf (ImageTexture .prototype, Texturing_X3DTe
62672
62675
  canvas = document .createElement ("canvas"),
62673
62676
  cx = canvas .getContext ("2d", { willReadFrequently: true });
62674
62677
 
62675
- let
62676
- width = image .width,
62677
- height = image .height;
62678
+ let { width, height } = image;
62678
62679
 
62679
62680
  if (!(Math_Algorithm .isPowerOfTwo (width) && Math_Algorithm .isPowerOfTwo (height)))
62680
62681
  {
@@ -66065,7 +66066,7 @@ const X3DWorld_default_ = X3DWorld;
66065
66066
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
66066
66067
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
66067
66068
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
66068
- /* provided dependency */ var FileLoader_$ = __webpack_require__(268);
66069
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(631);
66069
66070
  /*******************************************************************************
66070
66071
  *
66071
66072
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66261,7 +66262,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
66261
66262
  this .loadDocumentAsync (this .url .shift ())
66262
66263
  .catch (this .loadDocumentError .bind (this));
66263
66264
  },
66264
- loadDocumentAsync: async function (url)
66265
+ async loadDocumentAsync (url)
66265
66266
  {
66266
66267
  if (url .length === 0)
66267
66268
  {
@@ -66484,11 +66485,8 @@ Object .assign (Object .setPrototypeOf (X3DExternProtoDeclaration .prototype, Pr
66484
66485
 
66485
66486
  if (proto)
66486
66487
  {
66487
- for (const field of [... this .getUserDefinedFields ()])
66488
- this .removeUserDefinedField (field .getName ())
66489
-
66490
- for (const field of proto .getUserDefinedFields ())
66491
- this .addUserDefinedField (field .getAccessType (), field .getName (), field);
66488
+ this .getFieldDefinitions () .assign (proto .getFieldDefinitions ());
66489
+ this .getUserDefinedFields () .assign (proto .getUserDefinedFields ());
66492
66490
  }
66493
66491
 
66494
66492
  this .updateInstances ();
@@ -66517,8 +66515,8 @@ Object .assign (Object .setPrototypeOf (X3DExternProtoDeclaration .prototype, Pr
66517
66515
  },
66518
66516
  setInternalScene (value)
66519
66517
  {
66520
- this [_scene] ?.setExecutionContext (this [_scene]);
66521
- this [_scene] ?.setLive (false);
66518
+ if (this [_scene] !== this .getBrowser () .getPrivateScene ())
66519
+ this [_scene] ?.dispose ();
66522
66520
 
66523
66521
  this [_scene] = value;
66524
66522
 
@@ -67002,7 +67000,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
67002
67000
  x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclarationArray", ProtoDeclarationArray_default_);
67003
67001
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (ProtoDeclarationArray_default_);
67004
67002
  ;// CONCATENATED MODULE: ./src/x_ite/Routing/X3DRoute.js
67005
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(268);
67003
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(631);
67006
67004
  /*******************************************************************************
67007
67005
  *
67008
67006
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67391,8 +67389,8 @@ Object .defineProperties (X3DRoute .prototype,
67391
67389
  {
67392
67390
  if (this [_sourceNode] instanceof Core_X3DNode)
67393
67391
  return Fields_SFNodeCache .get (this [_sourceNode]);
67394
- else
67395
- return this [_sourceNode];
67392
+
67393
+ return this [_sourceNode];
67396
67394
  },
67397
67395
  enumerable: true,
67398
67396
  },
@@ -67407,8 +67405,8 @@ Object .defineProperties (X3DRoute .prototype,
67407
67405
  {
67408
67406
  if (this [_destinationNode] instanceof Core_X3DNode)
67409
67407
  return Fields_SFNodeCache .get (this [_destinationNode]);
67410
- else
67411
- return this [_destinationNode];
67408
+
67409
+ return this [_destinationNode];
67412
67410
  },
67413
67411
  enumerable: true,
67414
67412
  },
@@ -67626,7 +67624,7 @@ function X3DExecutionContext (executionContext, outerNode = null, browser = exec
67626
67624
  this ._rootNodes .setPrivate (false);
67627
67625
  this ._rootNodes .collectCloneCount = () => 1;
67628
67626
 
67629
- if (executionContext !== this)
67627
+ if (executionContext)
67630
67628
  {
67631
67629
  this ._countPrimitives .addReference (executionContext ._countPrimitives);
67632
67630
  this ._sceneGraph_changed .addFieldInterest (executionContext ._sceneGraph_changed);
@@ -67650,12 +67648,15 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67650
67648
  {
67651
67649
  setExecutionContext (executionContext)
67652
67650
  {
67653
- this ._countPrimitives .removeReference (this .getExecutionContext () ._countPrimitives);
67654
- this ._sceneGraph_changed .removeFieldInterest (this .getExecutionContext () ._sceneGraph_changed);
67651
+ if (this .getExecutionContext ())
67652
+ {
67653
+ this ._countPrimitives .removeReference (this .getExecutionContext () ._countPrimitives);
67654
+ this ._sceneGraph_changed .removeFieldInterest (this .getExecutionContext () ._sceneGraph_changed);
67655
+ }
67655
67656
 
67656
67657
  Base_X3DBaseNode .prototype .setExecutionContext .call (this, executionContext);
67657
67658
 
67658
- if (executionContext !== this)
67659
+ if (executionContext)
67659
67660
  {
67660
67661
  this ._countPrimitives .addReference (executionContext ._countPrimitives);
67661
67662
  this ._sceneGraph_changed .addFieldInterest (executionContext ._sceneGraph_changed);
@@ -67676,7 +67677,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67676
67677
  },
67677
67678
  setCountPrimitives (value)
67678
67679
  {
67679
- this ._countPrimitives = this .getExecutionContext () .getCountPrimitives () && value;
67680
+ this ._countPrimitives = (this .getExecutionContext () ?.getCountPrimitives () ?? true) && value;
67680
67681
  },
67681
67682
  getSpecificationVersion ()
67682
67683
  {
@@ -68430,10 +68431,12 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
68430
68431
  for (const route of Array .from (this [X3DExecutionContext_routes]))
68431
68432
  this .deleteRoute (route);
68432
68433
 
68433
- this .externprotos .clear ();
68434
- this .protos .clear ();
68435
- this .importedNodes .clear ();
68436
- this .routes .clear ();
68434
+ this [_outerNode] = null;
68435
+ this [_namedNodes] .clear ();
68436
+ this [_importedNodes] .clear ();
68437
+ this [_protos] .clear ();
68438
+ this [_externprotos] .clear ();
68439
+ this [X3DExecutionContext_routes] .clear ();
68437
68440
 
68438
68441
  Base_X3DBaseNode .prototype .dispose .call (this);
68439
68442
  },
@@ -68581,7 +68584,6 @@ x_ite_Namespace .add ("X3DExecutionContext", "x_ite/Execution/X3DExecutionContex
68581
68584
 
68582
68585
 
68583
68586
 
68584
-
68585
68587
  const
68586
68588
  X3DPrototypeInstance_fieldDefinitions = Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions"),
68587
68589
  _protoNode = Symbol (),
@@ -68591,12 +68593,14 @@ const
68591
68593
  function X3DPrototypeInstance (executionContext, protoNode)
68592
68594
  {
68593
68595
  this [_protoNode] = protoNode;
68594
- this [X3DPrototypeInstance_fieldDefinitions] = new Base_FieldDefinitionArray (protoNode .getFieldDefinitions ());
68596
+ this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
68595
68597
  this [X3DPrototypeInstance_body] = null;
68596
68598
 
68597
68599
  Core_X3DNode .call (this, executionContext);
68598
68600
 
68599
68601
  this .addType (Base_X3DConstants .X3DPrototypeInstance);
68602
+
68603
+ this .setProtoNode (protoNode, true);
68600
68604
  }
68601
68605
 
68602
68606
  Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3DNode .prototype),
@@ -68613,7 +68617,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68613
68617
  {
68614
68618
  Core_X3DNode .prototype .initialize .call (this);
68615
68619
 
68616
- this .setProtoNode (this [_protoNode]);
68620
+ this .realize ();
68617
68621
  },
68618
68622
  construct ()
68619
68623
  {
@@ -68625,8 +68629,6 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68625
68629
 
68626
68630
  this [X3DPrototypeInstance_body] ?.dispose ();
68627
68631
 
68628
- this [X3DPrototypeInstance_fieldDefinitions] .assign (protoNode .getFieldDefinitions ());
68629
-
68630
68632
  // If there is a proto, the externproto is completely loaded.
68631
68633
 
68632
68634
  if (protoNode .isExternProto)
@@ -68650,11 +68652,11 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68650
68652
  {
68651
68653
  const field = this .getField (protoField .getName ());
68652
68654
 
68653
- // Continue if something is wrong.
68655
+ // Continue if different.
68654
68656
  if (field .getAccessType () !== protoField .getAccessType ())
68655
68657
  continue;
68656
68658
 
68657
- // Continue if something is wrong.
68659
+ // Continue if different.
68658
68660
  if (field .getType () !== protoField .getType ())
68659
68661
  continue;
68660
68662
 
@@ -68667,7 +68669,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68667
68669
  continue;
68668
68670
 
68669
68671
  // Has IS references.
68670
- if (field .hasReferences ())
68672
+ if (field .getReferences () .size)
68671
68673
  continue;
68672
68674
 
68673
68675
  // Default value of protoField is different from field.
@@ -68685,6 +68687,21 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68685
68687
  }
68686
68688
  }
68687
68689
 
68690
+ if (this .isInitialized ())
68691
+ this .realize ();
68692
+
68693
+ protoNode ._updateInstances .removeInterest ("construct", this);
68694
+ protoNode ._updateInstances .addInterest ("update", this);
68695
+ },
68696
+ realize ()
68697
+ {
68698
+ const
68699
+ protoNode = this [_protoNode],
68700
+ proto = protoNode .getProtoDeclaration ();
68701
+
68702
+ if (protoNode .isExternProto && protoNode .checkLoadState () !== Base_X3DConstants .COMPLETE_STATE)
68703
+ return;
68704
+
68688
68705
  // Create execution context.
68689
68706
 
68690
68707
  this [X3DPrototypeInstance_body] = new Execution_X3DExecutionContext (proto .getExecutionContext (), this);
@@ -68699,11 +68716,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68699
68716
 
68700
68717
  this [X3DPrototypeInstance_body] .setup ();
68701
68718
 
68702
- if (this .isInitialized ())
68703
- Base_X3DChildObject .prototype .addEvent .call (this);
68704
-
68705
- protoNode ._updateInstances .removeInterest ("construct", this);
68706
- protoNode ._updateInstances .addInterest ("update", this);
68719
+ Base_X3DChildObject .prototype .addEvent .call (this);
68707
68720
  },
68708
68721
  update ()
68709
68722
  {
@@ -68823,7 +68836,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68823
68836
  {
68824
68837
  return this [_protoNode];
68825
68838
  },
68826
- setProtoNode (protoNode)
68839
+ setProtoNode (protoNode, construct = false)
68827
68840
  {
68828
68841
  // Disconnect old proto node.
68829
68842
 
@@ -68835,12 +68848,13 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68835
68848
 
68836
68849
  // Get fields from new proto node.
68837
68850
 
68838
- this [_protoNode] = protoNode;
68839
- this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
68851
+ this [_protoNode] = protoNode;
68852
+ this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
68853
+ this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
68840
68854
 
68841
68855
  protoNode ._name_changed .addFieldInterest (this ._typeName_changed);
68842
68856
 
68843
- protoNode === oldProtoNode ? this .construct () : this .update ();
68857
+ construct ? this .construct () : this .update ();
68844
68858
  },
68845
68859
  getBody ()
68846
68860
  {
@@ -83906,18 +83920,24 @@ Object .assign (Object .setPrototypeOf (Inline .prototype, Core_X3DChildNode .pr
83906
83920
  },
83907
83921
  setInternalScene (scene)
83908
83922
  {
83909
- this .scene .setExecutionContext (this .scene);
83910
- this .scene .setLive (false);
83911
- this .scene .rootNodes .removeFieldInterest (this .groupNode ._children);
83923
+ if (this .scene !== this .getBrowser () .getDefaultScene ())
83924
+ this .scene .dispose ();
83912
83925
 
83913
83926
  // Set new scene.
83914
83927
 
83915
83928
  this .scene = scene;
83916
83929
 
83917
- this .scene .setExecutionContext (this .getExecutionContext ());
83918
- this .scene .setLive (this .getLive () .getValue ());
83919
- this .scene .rootNodes .addFieldInterest (this .groupNode ._children);
83920
- this .groupNode ._children = this .scene .rootNodes;
83930
+ if (this .scene !== this .getBrowser () .getDefaultScene ())
83931
+ {
83932
+ this .scene .setExecutionContext (this .getExecutionContext ());
83933
+ this .scene .setLive (this .getLive () .getValue ());
83934
+ this .scene .rootNodes .addFieldInterest (this .groupNode ._children);
83935
+ this .groupNode ._children = this .scene .rootNodes;
83936
+ }
83937
+ else
83938
+ {
83939
+ this .groupNode ._children .length = 0;
83940
+ }
83921
83941
 
83922
83942
  this .getBrowser () .addBrowserEvent ();
83923
83943
  },
@@ -90131,7 +90151,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
90131
90151
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
90132
90152
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
90133
90153
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
90134
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(268);
90154
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(631);
90135
90155
  /*******************************************************************************
90136
90156
  *
90137
90157
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95839,7 +95859,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
95839
95859
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
95840
95860
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
95841
95861
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
95842
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(268);
95862
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(631);
95843
95863
  /*******************************************************************************
95844
95864
  *
95845
95865
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -96496,7 +96516,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
96496
96516
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
96497
96517
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
96498
96518
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
96499
- /* provided dependency */ var Appearance_$ = __webpack_require__(268);
96519
+ /* provided dependency */ var Appearance_$ = __webpack_require__(631);
96500
96520
  /*******************************************************************************
96501
96521
  *
96502
96522
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105448,8 +105468,8 @@ const GifMedia_default_ = GifMedia;
105448
105468
  x_ite_Namespace .add ("GifMedia", "x_ite/Browser/Texturing/GifMedia", GifMedia_default_);
105449
105469
  /* harmony default export */ const Texturing_GifMedia = (GifMedia_default_);
105450
105470
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
105451
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(268);
105452
- /* provided dependency */ var SuperGif = __webpack_require__(719);
105471
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(631);
105472
+ /* provided dependency */ var SuperGif = __webpack_require__(936);
105453
105473
  /*******************************************************************************
105454
105474
  *
105455
105475
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108218,7 +108238,7 @@ const Context =
108218
108238
  // setTimeout (check);
108219
108239
  // });
108220
108240
  // },
108221
- // getBufferSubDataAsync: async function (target, buffer, srcByteOffset, dstBuffer, /* optional */ dstOffset, /* optional */ length)
108241
+ // async getBufferSubDataAsync (target, buffer, srcByteOffset, dstBuffer, /* optional */ dstOffset, /* optional */ length)
108222
108242
  // {
108223
108243
  // const sync = this .fenceSync (this .SYNC_GPU_COMMANDS_COMPLETE, 0);
108224
108244
 
@@ -108232,7 +108252,7 @@ const Context =
108232
108252
  // this .getBufferSubData (target, srcByteOffset, dstBuffer, dstOffset, length);
108233
108253
  // this .bindBuffer (target, null);
108234
108254
  // },
108235
- // readPixelsAsync: async function (x, y, w, h, format, type, dest, dstOffset)
108255
+ // async readPixelsAsync (x, y, w, h, format, type, dest, dstOffset)
108236
108256
  // {
108237
108257
  // const buffer = this .createBuffer ();
108238
108258
 
@@ -108857,7 +108877,7 @@ const gettext_default_ = (string) => locale .get (string) || string;
108857
108877
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
108858
108878
  /* harmony default export */ const gettext = (gettext_default_);
108859
108879
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
108860
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(268);
108880
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(631);
108861
108881
  /*******************************************************************************
108862
108882
  *
108863
108883
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -109430,7 +109450,7 @@ const TextureQuality_default_ = TextureQuality;
109430
109450
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
109431
109451
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
109432
109452
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
109433
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(268);
109453
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(631);
109434
109454
  /*******************************************************************************
109435
109455
  *
109436
109456
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110024,7 +110044,7 @@ const RenderingProperties_default_ = RenderingProperties;
110024
110044
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
110025
110045
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
110026
110046
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
110027
- /* provided dependency */ var Notification_$ = __webpack_require__(268);
110047
+ /* provided dependency */ var Notification_$ = __webpack_require__(631);
110028
110048
  /*******************************************************************************
110029
110049
  *
110030
110050
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110147,8 +110167,8 @@ const Notification_default_ = Notification;
110147
110167
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
110148
110168
  /* harmony default export */ const Core_Notification = (Notification_default_);
110149
110169
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
110150
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(600);
110151
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(268);
110170
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(195);
110171
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(631);
110152
110172
  /*******************************************************************************
110153
110173
  *
110154
110174
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111702,7 +111722,7 @@ const
111702
111722
 
111703
111723
  function X3DScene (browser)
111704
111724
  {
111705
- Execution_X3DExecutionContext .call (this, this, null, browser);
111725
+ Execution_X3DExecutionContext .call (this, null, null, browser);
111706
111726
 
111707
111727
  this .addType (Base_X3DConstants .X3DScene)
111708
111728
 
@@ -111738,10 +111758,6 @@ function X3DScene (browser)
111738
111758
 
111739
111759
  Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecutionContext .prototype),
111740
111760
  {
111741
- isMainScene ()
111742
- {
111743
- return this === this .getExecutionContext ();
111744
- },
111745
111761
  isScene ()
111746
111762
  {
111747
111763
  return true;
@@ -111774,10 +111790,8 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
111774
111790
  {
111775
111791
  if (this [_worldURL] .match (/^(?:data|blob):/))
111776
111792
  {
111777
- if (this .isMainScene ())
111778
- return this .getBrowser () .getBaseURL ();
111779
-
111780
- return this .getExecutionContext () .getBaseURL ();
111793
+ return this .getExecutionContext () ?.getBaseURL ()
111794
+ ?? this .getBrowser () .getBaseURL ();
111781
111795
  }
111782
111796
 
111783
111797
  return this [_worldURL];
@@ -112624,7 +112638,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112624
112638
  {
112625
112639
  setExecutionContext (executionContext)
112626
112640
  {
112627
- if (!this .isMainScene ())
112641
+ if (this .getExecutionContext ())
112628
112642
  {
112629
112643
  const scene = this .getScene ();
112630
112644
 
@@ -112634,7 +112648,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112634
112648
 
112635
112649
  Execution_X3DExecutionContext .prototype .setExecutionContext .call (this, executionContext);
112636
112650
 
112637
- if (!this .isMainScene ())
112651
+ if (this .getExecutionContext ())
112638
112652
  {
112639
112653
  const scene = this .getScene ();
112640
112654
 
@@ -112663,15 +112677,12 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112663
112677
 
112664
112678
  this ._loadCount = this [_loadingObjects] .size;
112665
112679
 
112666
- const
112667
- browser = this .getBrowser (),
112668
- scene = this .getScene ();
112680
+ const browser = this .getBrowser ();
112669
112681
 
112670
112682
  if (this === browser .getExecutionContext ())
112671
112683
  browser .addLoadingObject (node);
112672
112684
 
112673
- if (!this .isMainScene ())
112674
- scene .addLoadingObject (node);
112685
+ this .getScene () ?.addLoadingObject (node);
112675
112686
  },
112676
112687
  removeLoadingObject (node)
112677
112688
  {
@@ -112682,15 +112693,12 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112682
112693
 
112683
112694
  this ._loadCount = this [_loadingObjects] .size;
112684
112695
 
112685
- const
112686
- browser = this .getBrowser (),
112687
- scene = this .getScene ();
112696
+ const browser = this .getBrowser ();
112688
112697
 
112689
112698
  if (this === browser .getExecutionContext ())
112690
112699
  browser .removeLoadingObject (node);
112691
112700
 
112692
- if (!this .isMainScene ())
112693
- scene .removeLoadingObject (node);
112701
+ this .getScene () ?.removeLoadingObject (node);
112694
112702
  },
112695
112703
  });
112696
112704
 
@@ -112729,6 +112737,11 @@ Object .defineProperties (X3DScene .prototype,
112729
112737
  get: X3DScene .prototype .getWorldURL,
112730
112738
  enumerable: true,
112731
112739
  },
112740
+ baseURL:
112741
+ {
112742
+ get: X3DScene .prototype .getBaseURL,
112743
+ enumerable: true,
112744
+ },
112732
112745
  units:
112733
112746
  {
112734
112747
  get: X3DScene .prototype .getUnits,
@@ -112909,7 +112922,7 @@ const DataStorage_default_ = DataStorage;
112909
112922
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
112910
112923
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
112911
112924
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
112912
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(268);
112925
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(631);
112913
112926
  /*******************************************************************************
112914
112927
  *
112915
112928
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115432,8 +115445,8 @@ const X3DViewer_default_ = X3DViewer;
115432
115445
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
115433
115446
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
115434
115447
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
115435
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(482);
115436
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(268);
115448
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(711);
115449
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(631);
115437
115450
  /*******************************************************************************
115438
115451
  *
115439
115452
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116305,8 +116318,8 @@ const ExamineViewer_default_ = ExamineViewer;
116305
116318
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
116306
116319
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
116307
116320
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
116308
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(482);
116309
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(268);
116321
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(711);
116322
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(631);
116310
116323
  /*******************************************************************************
116311
116324
  *
116312
116325
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117315,8 +117328,8 @@ const FlyViewer_default_ = FlyViewer;
117315
117328
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
117316
117329
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
117317
117330
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
117318
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(482);
117319
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(268);
117331
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(711);
117332
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(631);
117320
117333
  /*******************************************************************************
117321
117334
  *
117322
117335
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117647,8 +117660,8 @@ const NoneViewer_default_ = NoneViewer;
117647
117660
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
117648
117661
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
117649
117662
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
117650
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(482);
117651
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(268);
117663
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(711);
117664
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(631);
117652
117665
  /*******************************************************************************
117653
117666
  *
117654
117667
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118786,8 +118799,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
118786
118799
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
118787
118800
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
118788
118801
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
118789
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(482);
118790
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(268);
118802
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(711);
118803
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(631);
118791
118804
  /*******************************************************************************
118792
118805
  *
118793
118806
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120091,7 +120104,7 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
120091
120104
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
120092
120105
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
120093
120106
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
120094
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(268);
120107
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(631);
120095
120108
  /*******************************************************************************
120096
120109
  *
120097
120110
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -121039,7 +121052,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
121039
121052
  x_ite_Namespace .add ("X3DSoundContext", "x_ite/Browser/Sound/X3DSoundContext", X3DSoundContext_default_);
121040
121053
  /* harmony default export */ const Sound_X3DSoundContext = (X3DSoundContext_default_);
121041
121054
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing/KTXDecoder.js
121042
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(268);
121055
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(631);
121043
121056
  const KTXDecoder_default_ = class KTXDecoder
121044
121057
  {
121045
121058
  constructor (gl, externalKtxlib, scriptDir)
@@ -122593,7 +122606,7 @@ const Components_default_ = Components;
122593
122606
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
122594
122607
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
122595
122608
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
122596
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(268);
122609
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(631);
122597
122610
  /*******************************************************************************
122598
122611
  * MIT License
122599
122612
  *
@@ -123727,7 +123740,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
123727
123740
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
123728
123741
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
123729
123742
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
123730
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(268);
123743
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(631);
123731
123744
  /*******************************************************************************
123732
123745
  *
123733
123746
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124027,7 +124040,10 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
124027
124040
 
124028
124041
  for (const arg of args)
124029
124042
  {
124030
- if (arg instanceof Configuration_ProfileInfo)
124043
+ if (arg instanceof Execution_X3DScene)
124044
+ component .push (... (arg .profile ?.components ?? [ ]), ... arg .components);
124045
+
124046
+ else if (arg instanceof Configuration_ProfileInfo)
124031
124047
  component .push (... arg .components);
124032
124048
 
124033
124049
  else if (arg instanceof Configuration_ComponentInfoArray)
@@ -124159,7 +124175,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
124159
124175
 
124160
124176
  // Detach scene from parent.
124161
124177
 
124162
- scene .setExecutionContext (scene);
124178
+ scene .setExecutionContext (null);
124163
124179
  scene .setLive (this .isLive ());
124164
124180
 
124165
124181
  // Replace.
@@ -124257,18 +124273,18 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
124257
124273
  {
124258
124274
  this .removeLoadingObject (fileLoader);
124259
124275
 
124260
- if (scene)
124261
- {
124262
- // Handle getLive for script scenes here:
124276
+ if (!scene)
124277
+ return;
124263
124278
 
124264
- if (!external)
124265
- scene .setExecutionContext (currentScene);
124279
+ // Handle getLive for script scenes here:
124266
124280
 
124267
- scene .setLive (true);
124281
+ if (!external)
124282
+ scene .setExecutionContext (currentScene);
124268
124283
 
124269
- // Wait until scene is completely loaded, scene ._loadCount must be 0.
124270
- field .setValue (scene .rootNodes);
124271
- }
124284
+ scene .setLive (true);
124285
+
124286
+ // Wait until scene is completely loaded, scene ._loadCount must be 0.
124287
+ field .setValue (scene .rootNodes);
124272
124288
  });
124273
124289
  },
124274
124290
  createX3DFromURL (url, node, event)
@@ -124818,7 +124834,7 @@ const X3DBrowser_default_ = X3DBrowser;
124818
124834
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
124819
124835
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
124820
124836
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
124821
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(268);
124837
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(631);
124822
124838
  /*******************************************************************************
124823
124839
  *
124824
124840
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124955,8 +124971,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
124955
124971
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
124956
124972
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
124957
124973
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
124958
- /* provided dependency */ var jquery_$ = __webpack_require__(268);
124959
- /* provided dependency */ var pako = __webpack_require__(752);
124974
+ /* provided dependency */ var jquery_$ = __webpack_require__(631);
124975
+ /* provided dependency */ var pako = __webpack_require__(511);
124960
124976
  Object .assign (jquery_$,
124961
124977
  {
124962
124978
  decodeText (input)
@@ -125033,14 +125049,14 @@ const jquery_default_ = jquery_$;
125033
125049
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
125034
125050
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
125035
125051
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
125036
- /* provided dependency */ var libtess_libtess = __webpack_require__(937);
125052
+ /* provided dependency */ var libtess_libtess = __webpack_require__(580);
125037
125053
  const libtess_default_ = libtess_libtess;
125038
125054
  ;
125039
125055
 
125040
125056
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
125041
125057
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
125042
125058
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
125043
- /* provided dependency */ var X3D_$ = __webpack_require__(268);
125059
+ /* provided dependency */ var X3D_$ = __webpack_require__(631);
125044
125060
  /*******************************************************************************
125045
125061
  *
125046
125062
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -125348,7 +125364,7 @@ Object .assign (X3D,
125348
125364
 
125349
125365
  // Assign X3D to global namespace.
125350
125366
 
125351
- window [Symbol .for ("X_ITE.X3D-9.6.0")] = x_ite_X3D;
125367
+ window [Symbol .for ("X_ITE.X3D-9.6.2")] = x_ite_X3D;
125352
125368
 
125353
125369
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
125354
125370