x_ite 9.6.0 → 9.6.1

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 +2 -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 +1004 -1006
  45. package/dist/x_ite.min.js +1 -1
  46. package/dist/x_ite.min.mjs +1 -1
  47. package/dist/x_ite.mjs +1004 -1006
  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.1 */(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
+ /***/ 226:
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__(250);
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
+ /***/ 496:
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__(250)], __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
+ /***/ 250:
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
+ /***/ 979:
11163
11163
  /***/ ((module) => {
11164
11164
 
11165
11165
  /**
@@ -15938,7 +15938,7 @@ if (true) {
15938
15938
 
15939
15939
  /***/ }),
15940
15940
 
15941
- /***/ 752:
15941
+ /***/ 82:
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
+ /***/ 389:
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.1")];
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__(250);
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.1";
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__(250);
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__(250);
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__(250);
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__(250);
44025
44011
  /*******************************************************************************
44026
44012
  *
44027
44013
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -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__(250);
47327
47313
  /*******************************************************************************
47328
47314
  *
47329
47315
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -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__(250);
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
@@ -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
@@ -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__(250);
50823
+ /* provided dependency */ var libtess = __webpack_require__(979);
50838
50824
  /*******************************************************************************
50839
50825
  *
50840
50826
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -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__(250);
53606
53592
  /*******************************************************************************
53607
53593
  *
53608
53594
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53952,7 +53938,7 @@ const Plane3_default_ = Plane3;
53952
53938
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53953
53939
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53954
53940
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53955
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(937);
53941
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(979);
53956
53942
  /*******************************************************************************
53957
53943
  *
53958
53944
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -57723,7 +57709,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57723
57709
  node = this .nodes [i],
57724
57710
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57725
57711
 
57726
- if (!enableInlineBindables && !scene .isMainScene ())
57712
+ if (!enableInlineBindables && scene .getExecutionContext ())
57727
57713
  continue;
57728
57714
 
57729
57715
  if (node .getName () == name)
@@ -57739,7 +57725,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57739
57725
  node = this .nodes [i],
57740
57726
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57741
57727
 
57742
- if (!enableInlineBindables && !scene .isMainScene ())
57728
+ if (!enableInlineBindables && scene .getExecutionContext ())
57743
57729
  continue;
57744
57730
 
57745
57731
  if (node ._isBound .getValue ())
@@ -57754,7 +57740,7 @@ Object .assign (Object .setPrototypeOf (BindableList .prototype, Base_X3DBaseNod
57754
57740
  node = this .nodes [i],
57755
57741
  scene = node .getExecutionContext () .getOuterNode () ?.getScene () ?? node .getScene ();
57756
57742
 
57757
- if (!enableInlineBindables && !scene .isMainScene ())
57743
+ if (!enableInlineBindables && scene .getExecutionContext ())
57758
57744
  continue;
57759
57745
 
57760
57746
  return node;
@@ -62481,7 +62467,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62481
62467
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
62482
62468
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
62483
62469
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
62484
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(268);
62470
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(250);
62485
62471
  /*******************************************************************************
62486
62472
  *
62487
62473
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66065,7 +66051,7 @@ const X3DWorld_default_ = X3DWorld;
66065
66051
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
66066
66052
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
66067
66053
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
66068
- /* provided dependency */ var FileLoader_$ = __webpack_require__(268);
66054
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(250);
66069
66055
  /*******************************************************************************
66070
66056
  *
66071
66057
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66484,11 +66470,8 @@ Object .assign (Object .setPrototypeOf (X3DExternProtoDeclaration .prototype, Pr
66484
66470
 
66485
66471
  if (proto)
66486
66472
  {
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);
66473
+ this .getFieldDefinitions () .assign (proto .getFieldDefinitions ());
66474
+ this .getUserDefinedFields () .assign (proto .getUserDefinedFields ());
66492
66475
  }
66493
66476
 
66494
66477
  this .updateInstances ();
@@ -66517,8 +66500,8 @@ Object .assign (Object .setPrototypeOf (X3DExternProtoDeclaration .prototype, Pr
66517
66500
  },
66518
66501
  setInternalScene (value)
66519
66502
  {
66520
- this [_scene] ?.setExecutionContext (this [_scene]);
66521
- this [_scene] ?.setLive (false);
66503
+ if (this [_scene] !== this .getBrowser () .getPrivateScene ())
66504
+ this [_scene] ?.dispose ();
66522
66505
 
66523
66506
  this [_scene] = value;
66524
66507
 
@@ -67002,7 +66985,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
67002
66985
  x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclarationArray", ProtoDeclarationArray_default_);
67003
66986
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (ProtoDeclarationArray_default_);
67004
66987
  ;// CONCATENATED MODULE: ./src/x_ite/Routing/X3DRoute.js
67005
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(268);
66988
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(250);
67006
66989
  /*******************************************************************************
67007
66990
  *
67008
66991
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67391,8 +67374,8 @@ Object .defineProperties (X3DRoute .prototype,
67391
67374
  {
67392
67375
  if (this [_sourceNode] instanceof Core_X3DNode)
67393
67376
  return Fields_SFNodeCache .get (this [_sourceNode]);
67394
- else
67395
- return this [_sourceNode];
67377
+
67378
+ return this [_sourceNode];
67396
67379
  },
67397
67380
  enumerable: true,
67398
67381
  },
@@ -67407,8 +67390,8 @@ Object .defineProperties (X3DRoute .prototype,
67407
67390
  {
67408
67391
  if (this [_destinationNode] instanceof Core_X3DNode)
67409
67392
  return Fields_SFNodeCache .get (this [_destinationNode]);
67410
- else
67411
- return this [_destinationNode];
67393
+
67394
+ return this [_destinationNode];
67412
67395
  },
67413
67396
  enumerable: true,
67414
67397
  },
@@ -67626,7 +67609,7 @@ function X3DExecutionContext (executionContext, outerNode = null, browser = exec
67626
67609
  this ._rootNodes .setPrivate (false);
67627
67610
  this ._rootNodes .collectCloneCount = () => 1;
67628
67611
 
67629
- if (executionContext !== this)
67612
+ if (executionContext)
67630
67613
  {
67631
67614
  this ._countPrimitives .addReference (executionContext ._countPrimitives);
67632
67615
  this ._sceneGraph_changed .addFieldInterest (executionContext ._sceneGraph_changed);
@@ -67650,12 +67633,15 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67650
67633
  {
67651
67634
  setExecutionContext (executionContext)
67652
67635
  {
67653
- this ._countPrimitives .removeReference (this .getExecutionContext () ._countPrimitives);
67654
- this ._sceneGraph_changed .removeFieldInterest (this .getExecutionContext () ._sceneGraph_changed);
67636
+ if (this .getExecutionContext ())
67637
+ {
67638
+ this ._countPrimitives .removeReference (this .getExecutionContext () ._countPrimitives);
67639
+ this ._sceneGraph_changed .removeFieldInterest (this .getExecutionContext () ._sceneGraph_changed);
67640
+ }
67655
67641
 
67656
67642
  Base_X3DBaseNode .prototype .setExecutionContext .call (this, executionContext);
67657
67643
 
67658
- if (executionContext !== this)
67644
+ if (executionContext)
67659
67645
  {
67660
67646
  this ._countPrimitives .addReference (executionContext ._countPrimitives);
67661
67647
  this ._sceneGraph_changed .addFieldInterest (executionContext ._sceneGraph_changed);
@@ -67676,7 +67662,7 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67676
67662
  },
67677
67663
  setCountPrimitives (value)
67678
67664
  {
67679
- this ._countPrimitives = this .getExecutionContext () .getCountPrimitives () && value;
67665
+ this ._countPrimitives = (this .getExecutionContext () ?.getCountPrimitives () ?? true) && value;
67680
67666
  },
67681
67667
  getSpecificationVersion ()
67682
67668
  {
@@ -68430,10 +68416,12 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
68430
68416
  for (const route of Array .from (this [X3DExecutionContext_routes]))
68431
68417
  this .deleteRoute (route);
68432
68418
 
68433
- this .externprotos .clear ();
68434
- this .protos .clear ();
68435
- this .importedNodes .clear ();
68436
- this .routes .clear ();
68419
+ this [_outerNode] = null;
68420
+ this [_namedNodes] .clear ();
68421
+ this [_importedNodes] .clear ();
68422
+ this [_protos] .clear ();
68423
+ this [_externprotos] .clear ();
68424
+ this [X3DExecutionContext_routes] .clear ();
68437
68425
 
68438
68426
  Base_X3DBaseNode .prototype .dispose .call (this);
68439
68427
  },
@@ -68581,7 +68569,6 @@ x_ite_Namespace .add ("X3DExecutionContext", "x_ite/Execution/X3DExecutionContex
68581
68569
 
68582
68570
 
68583
68571
 
68584
-
68585
68572
  const
68586
68573
  X3DPrototypeInstance_fieldDefinitions = Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions"),
68587
68574
  _protoNode = Symbol (),
@@ -68591,12 +68578,14 @@ const
68591
68578
  function X3DPrototypeInstance (executionContext, protoNode)
68592
68579
  {
68593
68580
  this [_protoNode] = protoNode;
68594
- this [X3DPrototypeInstance_fieldDefinitions] = new Base_FieldDefinitionArray (protoNode .getFieldDefinitions ());
68581
+ this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
68595
68582
  this [X3DPrototypeInstance_body] = null;
68596
68583
 
68597
68584
  Core_X3DNode .call (this, executionContext);
68598
68585
 
68599
68586
  this .addType (Base_X3DConstants .X3DPrototypeInstance);
68587
+
68588
+ this .setProtoNode (protoNode, true);
68600
68589
  }
68601
68590
 
68602
68591
  Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3DNode .prototype),
@@ -68613,7 +68602,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68613
68602
  {
68614
68603
  Core_X3DNode .prototype .initialize .call (this);
68615
68604
 
68616
- this .setProtoNode (this [_protoNode]);
68605
+ this .realize ();
68617
68606
  },
68618
68607
  construct ()
68619
68608
  {
@@ -68625,8 +68614,6 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68625
68614
 
68626
68615
  this [X3DPrototypeInstance_body] ?.dispose ();
68627
68616
 
68628
- this [X3DPrototypeInstance_fieldDefinitions] .assign (protoNode .getFieldDefinitions ());
68629
-
68630
68617
  // If there is a proto, the externproto is completely loaded.
68631
68618
 
68632
68619
  if (protoNode .isExternProto)
@@ -68650,11 +68637,11 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68650
68637
  {
68651
68638
  const field = this .getField (protoField .getName ());
68652
68639
 
68653
- // Continue if something is wrong.
68640
+ // Continue if different.
68654
68641
  if (field .getAccessType () !== protoField .getAccessType ())
68655
68642
  continue;
68656
68643
 
68657
- // Continue if something is wrong.
68644
+ // Continue if different.
68658
68645
  if (field .getType () !== protoField .getType ())
68659
68646
  continue;
68660
68647
 
@@ -68667,7 +68654,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68667
68654
  continue;
68668
68655
 
68669
68656
  // Has IS references.
68670
- if (field .hasReferences ())
68657
+ if (field .getReferences () .size)
68671
68658
  continue;
68672
68659
 
68673
68660
  // Default value of protoField is different from field.
@@ -68685,6 +68672,21 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68685
68672
  }
68686
68673
  }
68687
68674
 
68675
+ if (this .isInitialized ())
68676
+ this .realize ();
68677
+
68678
+ protoNode ._updateInstances .removeInterest ("construct", this);
68679
+ protoNode ._updateInstances .addInterest ("update", this);
68680
+ },
68681
+ realize ()
68682
+ {
68683
+ const
68684
+ protoNode = this [_protoNode],
68685
+ proto = protoNode .getProtoDeclaration ();
68686
+
68687
+ if (protoNode .isExternProto && protoNode .checkLoadState () !== Base_X3DConstants .COMPLETE_STATE)
68688
+ return;
68689
+
68688
68690
  // Create execution context.
68689
68691
 
68690
68692
  this [X3DPrototypeInstance_body] = new Execution_X3DExecutionContext (proto .getExecutionContext (), this);
@@ -68699,11 +68701,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68699
68701
 
68700
68702
  this [X3DPrototypeInstance_body] .setup ();
68701
68703
 
68702
- if (this .isInitialized ())
68703
- Base_X3DChildObject .prototype .addEvent .call (this);
68704
-
68705
- protoNode ._updateInstances .removeInterest ("construct", this);
68706
- protoNode ._updateInstances .addInterest ("update", this);
68704
+ Base_X3DChildObject .prototype .addEvent .call (this);
68707
68705
  },
68708
68706
  update ()
68709
68707
  {
@@ -68823,7 +68821,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68823
68821
  {
68824
68822
  return this [_protoNode];
68825
68823
  },
68826
- setProtoNode (protoNode)
68824
+ setProtoNode (protoNode, construct = false)
68827
68825
  {
68828
68826
  // Disconnect old proto node.
68829
68827
 
@@ -68835,12 +68833,13 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68835
68833
 
68836
68834
  // Get fields from new proto node.
68837
68835
 
68838
- this [_protoNode] = protoNode;
68839
- this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
68836
+ this [_protoNode] = protoNode;
68837
+ this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
68838
+ this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
68840
68839
 
68841
68840
  protoNode ._name_changed .addFieldInterest (this ._typeName_changed);
68842
68841
 
68843
- protoNode === oldProtoNode ? this .construct () : this .update ();
68842
+ construct ? this .construct () : this .update ();
68844
68843
  },
68845
68844
  getBody ()
68846
68845
  {
@@ -83906,18 +83905,24 @@ Object .assign (Object .setPrototypeOf (Inline .prototype, Core_X3DChildNode .pr
83906
83905
  },
83907
83906
  setInternalScene (scene)
83908
83907
  {
83909
- this .scene .setExecutionContext (this .scene);
83910
- this .scene .setLive (false);
83911
- this .scene .rootNodes .removeFieldInterest (this .groupNode ._children);
83908
+ if (this .scene !== this .getBrowser () .getDefaultScene ())
83909
+ this .scene .dispose ();
83912
83910
 
83913
83911
  // Set new scene.
83914
83912
 
83915
83913
  this .scene = scene;
83916
83914
 
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;
83915
+ if (this .scene !== this .getBrowser () .getDefaultScene ())
83916
+ {
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;
83921
+ }
83922
+ else
83923
+ {
83924
+ this .groupNode ._children .length = 0;
83925
+ }
83921
83926
 
83922
83927
  this .getBrowser () .addBrowserEvent ();
83923
83928
  },
@@ -90131,7 +90136,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
90131
90136
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
90132
90137
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
90133
90138
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
90134
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(268);
90139
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(250);
90135
90140
  /*******************************************************************************
90136
90141
  *
90137
90142
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95839,7 +95844,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
95839
95844
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
95840
95845
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
95841
95846
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
95842
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(268);
95847
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(250);
95843
95848
  /*******************************************************************************
95844
95849
  *
95845
95850
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -96496,7 +96501,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
96496
96501
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
96497
96502
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
96498
96503
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
96499
- /* provided dependency */ var Appearance_$ = __webpack_require__(268);
96504
+ /* provided dependency */ var Appearance_$ = __webpack_require__(250);
96500
96505
  /*******************************************************************************
96501
96506
  *
96502
96507
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105448,8 +105453,8 @@ const GifMedia_default_ = GifMedia;
105448
105453
  x_ite_Namespace .add ("GifMedia", "x_ite/Browser/Texturing/GifMedia", GifMedia_default_);
105449
105454
  /* harmony default export */ const Texturing_GifMedia = (GifMedia_default_);
105450
105455
  ;// 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);
105456
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(250);
105457
+ /* provided dependency */ var SuperGif = __webpack_require__(389);
105453
105458
  /*******************************************************************************
105454
105459
  *
105455
105460
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108857,7 +108862,7 @@ const gettext_default_ = (string) => locale .get (string) || string;
108857
108862
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
108858
108863
  /* harmony default export */ const gettext = (gettext_default_);
108859
108864
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
108860
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(268);
108865
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(250);
108861
108866
  /*******************************************************************************
108862
108867
  *
108863
108868
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -109430,7 +109435,7 @@ const TextureQuality_default_ = TextureQuality;
109430
109435
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
109431
109436
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
109432
109437
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
109433
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(268);
109438
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(250);
109434
109439
  /*******************************************************************************
109435
109440
  *
109436
109441
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110024,7 +110029,7 @@ const RenderingProperties_default_ = RenderingProperties;
110024
110029
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
110025
110030
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
110026
110031
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
110027
- /* provided dependency */ var Notification_$ = __webpack_require__(268);
110032
+ /* provided dependency */ var Notification_$ = __webpack_require__(250);
110028
110033
  /*******************************************************************************
110029
110034
  *
110030
110035
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110147,8 +110152,8 @@ const Notification_default_ = Notification;
110147
110152
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
110148
110153
  /* harmony default export */ const Core_Notification = (Notification_default_);
110149
110154
  ;// 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);
110155
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(226);
110156
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(250);
110152
110157
  /*******************************************************************************
110153
110158
  *
110154
110159
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111702,7 +111707,7 @@ const
111702
111707
 
111703
111708
  function X3DScene (browser)
111704
111709
  {
111705
- Execution_X3DExecutionContext .call (this, this, null, browser);
111710
+ Execution_X3DExecutionContext .call (this, null, null, browser);
111706
111711
 
111707
111712
  this .addType (Base_X3DConstants .X3DScene)
111708
111713
 
@@ -111738,10 +111743,6 @@ function X3DScene (browser)
111738
111743
 
111739
111744
  Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecutionContext .prototype),
111740
111745
  {
111741
- isMainScene ()
111742
- {
111743
- return this === this .getExecutionContext ();
111744
- },
111745
111746
  isScene ()
111746
111747
  {
111747
111748
  return true;
@@ -111774,10 +111775,8 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
111774
111775
  {
111775
111776
  if (this [_worldURL] .match (/^(?:data|blob):/))
111776
111777
  {
111777
- if (this .isMainScene ())
111778
- return this .getBrowser () .getBaseURL ();
111779
-
111780
- return this .getExecutionContext () .getBaseURL ();
111778
+ return this .getExecutionContext () ?.getBaseURL ()
111779
+ ?? this .getBrowser () .getBaseURL ();
111781
111780
  }
111782
111781
 
111783
111782
  return this [_worldURL];
@@ -112624,7 +112623,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112624
112623
  {
112625
112624
  setExecutionContext (executionContext)
112626
112625
  {
112627
- if (!this .isMainScene ())
112626
+ if (this .getExecutionContext ())
112628
112627
  {
112629
112628
  const scene = this .getScene ();
112630
112629
 
@@ -112634,7 +112633,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112634
112633
 
112635
112634
  Execution_X3DExecutionContext .prototype .setExecutionContext .call (this, executionContext);
112636
112635
 
112637
- if (!this .isMainScene ())
112636
+ if (this .getExecutionContext ())
112638
112637
  {
112639
112638
  const scene = this .getScene ();
112640
112639
 
@@ -112663,15 +112662,12 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112663
112662
 
112664
112663
  this ._loadCount = this [_loadingObjects] .size;
112665
112664
 
112666
- const
112667
- browser = this .getBrowser (),
112668
- scene = this .getScene ();
112665
+ const browser = this .getBrowser ();
112669
112666
 
112670
112667
  if (this === browser .getExecutionContext ())
112671
112668
  browser .addLoadingObject (node);
112672
112669
 
112673
- if (!this .isMainScene ())
112674
- scene .addLoadingObject (node);
112670
+ this .getScene () ?.addLoadingObject (node);
112675
112671
  },
112676
112672
  removeLoadingObject (node)
112677
112673
  {
@@ -112682,15 +112678,12 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
112682
112678
 
112683
112679
  this ._loadCount = this [_loadingObjects] .size;
112684
112680
 
112685
- const
112686
- browser = this .getBrowser (),
112687
- scene = this .getScene ();
112681
+ const browser = this .getBrowser ();
112688
112682
 
112689
112683
  if (this === browser .getExecutionContext ())
112690
112684
  browser .removeLoadingObject (node);
112691
112685
 
112692
- if (!this .isMainScene ())
112693
- scene .removeLoadingObject (node);
112686
+ this .getScene () ?.removeLoadingObject (node);
112694
112687
  },
112695
112688
  });
112696
112689
 
@@ -112729,6 +112722,11 @@ Object .defineProperties (X3DScene .prototype,
112729
112722
  get: X3DScene .prototype .getWorldURL,
112730
112723
  enumerable: true,
112731
112724
  },
112725
+ baseURL:
112726
+ {
112727
+ get: X3DScene .prototype .getBaseURL,
112728
+ enumerable: true,
112729
+ },
112732
112730
  units:
112733
112731
  {
112734
112732
  get: X3DScene .prototype .getUnits,
@@ -112909,7 +112907,7 @@ const DataStorage_default_ = DataStorage;
112909
112907
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
112910
112908
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
112911
112909
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
112912
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(268);
112910
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(250);
112913
112911
  /*******************************************************************************
112914
112912
  *
112915
112913
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115432,8 +115430,8 @@ const X3DViewer_default_ = X3DViewer;
115432
115430
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
115433
115431
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
115434
115432
  ;// 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);
115433
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(496);
115434
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(250);
115437
115435
  /*******************************************************************************
115438
115436
  *
115439
115437
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116305,8 +116303,8 @@ const ExamineViewer_default_ = ExamineViewer;
116305
116303
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
116306
116304
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
116307
116305
  ;// 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);
116306
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(496);
116307
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(250);
116310
116308
  /*******************************************************************************
116311
116309
  *
116312
116310
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117315,8 +117313,8 @@ const FlyViewer_default_ = FlyViewer;
117315
117313
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
117316
117314
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
117317
117315
  ;// 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);
117316
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(496);
117317
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(250);
117320
117318
  /*******************************************************************************
117321
117319
  *
117322
117320
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117647,8 +117645,8 @@ const NoneViewer_default_ = NoneViewer;
117647
117645
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
117648
117646
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
117649
117647
  ;// 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);
117648
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(496);
117649
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(250);
117652
117650
  /*******************************************************************************
117653
117651
  *
117654
117652
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118786,8 +118784,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
118786
118784
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
118787
118785
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
118788
118786
  ;// 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);
118787
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(496);
118788
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(250);
118791
118789
  /*******************************************************************************
118792
118790
  *
118793
118791
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120091,7 +120089,7 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
120091
120089
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
120092
120090
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
120093
120091
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
120094
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(268);
120092
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(250);
120095
120093
  /*******************************************************************************
120096
120094
  *
120097
120095
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -121039,7 +121037,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
121039
121037
  x_ite_Namespace .add ("X3DSoundContext", "x_ite/Browser/Sound/X3DSoundContext", X3DSoundContext_default_);
121040
121038
  /* harmony default export */ const Sound_X3DSoundContext = (X3DSoundContext_default_);
121041
121039
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing/KTXDecoder.js
121042
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(268);
121040
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(250);
121043
121041
  const KTXDecoder_default_ = class KTXDecoder
121044
121042
  {
121045
121043
  constructor (gl, externalKtxlib, scriptDir)
@@ -122593,7 +122591,7 @@ const Components_default_ = Components;
122593
122591
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
122594
122592
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
122595
122593
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
122596
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(268);
122594
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(250);
122597
122595
  /*******************************************************************************
122598
122596
  * MIT License
122599
122597
  *
@@ -123727,7 +123725,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
123727
123725
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
123728
123726
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
123729
123727
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
123730
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(268);
123728
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(250);
123731
123729
  /*******************************************************************************
123732
123730
  *
123733
123731
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124159,7 +124157,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
124159
124157
 
124160
124158
  // Detach scene from parent.
124161
124159
 
124162
- scene .setExecutionContext (scene);
124160
+ scene .setExecutionContext (null);
124163
124161
  scene .setLive (this .isLive ());
124164
124162
 
124165
124163
  // Replace.
@@ -124257,18 +124255,18 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
124257
124255
  {
124258
124256
  this .removeLoadingObject (fileLoader);
124259
124257
 
124260
- if (scene)
124261
- {
124262
- // Handle getLive for script scenes here:
124258
+ if (!scene)
124259
+ return;
124260
+
124261
+ // Handle getLive for script scenes here:
124263
124262
 
124264
- if (!external)
124265
- scene .setExecutionContext (currentScene);
124263
+ if (!external)
124264
+ scene .setExecutionContext (currentScene);
124266
124265
 
124267
- scene .setLive (true);
124266
+ scene .setLive (true);
124268
124267
 
124269
- // Wait until scene is completely loaded, scene ._loadCount must be 0.
124270
- field .setValue (scene .rootNodes);
124271
- }
124268
+ // Wait until scene is completely loaded, scene ._loadCount must be 0.
124269
+ field .setValue (scene .rootNodes);
124272
124270
  });
124273
124271
  },
124274
124272
  createX3DFromURL (url, node, event)
@@ -124818,7 +124816,7 @@ const X3DBrowser_default_ = X3DBrowser;
124818
124816
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
124819
124817
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
124820
124818
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
124821
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(268);
124819
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(250);
124822
124820
  /*******************************************************************************
124823
124821
  *
124824
124822
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124955,8 +124953,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
124955
124953
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
124956
124954
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
124957
124955
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
124958
- /* provided dependency */ var jquery_$ = __webpack_require__(268);
124959
- /* provided dependency */ var pako = __webpack_require__(752);
124956
+ /* provided dependency */ var jquery_$ = __webpack_require__(250);
124957
+ /* provided dependency */ var pako = __webpack_require__(82);
124960
124958
  Object .assign (jquery_$,
124961
124959
  {
124962
124960
  decodeText (input)
@@ -125033,14 +125031,14 @@ const jquery_default_ = jquery_$;
125033
125031
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
125034
125032
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
125035
125033
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
125036
- /* provided dependency */ var libtess_libtess = __webpack_require__(937);
125034
+ /* provided dependency */ var libtess_libtess = __webpack_require__(979);
125037
125035
  const libtess_default_ = libtess_libtess;
125038
125036
  ;
125039
125037
 
125040
125038
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
125041
125039
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
125042
125040
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
125043
- /* provided dependency */ var X3D_$ = __webpack_require__(268);
125041
+ /* provided dependency */ var X3D_$ = __webpack_require__(250);
125044
125042
  /*******************************************************************************
125045
125043
  *
125046
125044
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -125348,7 +125346,7 @@ Object .assign (X3D,
125348
125346
 
125349
125347
  // Assign X3D to global namespace.
125350
125348
 
125351
- window [Symbol .for ("X_ITE.X3D-9.6.0")] = x_ite_X3D;
125349
+ window [Symbol .for ("X_ITE.X3D-9.6.1")] = x_ite_X3D;
125352
125350
 
125353
125351
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
125354
125352