x_ite 16.4.1 → 16.4.3

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 (57) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +1 -1
  3. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  4. package/dist/assets/components/CADGeometryComponent.js +1 -1
  5. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturingComponent.js +1 -1
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +1 -1
  8. package/dist/assets/components/DISComponent.js +1 -1
  9. package/dist/assets/components/DISComponent.min.js +1 -1
  10. package/dist/assets/components/EventUtilitiesComponent.js +1 -1
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
  12. package/dist/assets/components/GaussianSplatsComponent.js +1 -1
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +1 -1
  19. package/dist/assets/components/GeospatialComponent.min.js +1 -1
  20. package/dist/assets/components/HAnimComponent.js +1 -1
  21. package/dist/assets/components/HAnimComponent.min.js +1 -1
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +7 -39
  25. package/dist/assets/components/LayoutComponent.min.js +2 -2
  26. package/dist/assets/components/NURBSComponent.js +1 -1
  27. package/dist/assets/components/NURBSComponent.min.js +1 -1
  28. package/dist/assets/components/ParticleSystemsComponent.js +1 -1
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +1 -1
  30. package/dist/assets/components/PickingComponent.js +8 -12
  31. package/dist/assets/components/PickingComponent.min.js +2 -2
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +1 -1
  34. package/dist/assets/components/ScriptingComponent.js +3 -3
  35. package/dist/assets/components/ScriptingComponent.min.js +2 -2
  36. package/dist/assets/components/TextComponent.js +17 -21
  37. package/dist/assets/components/TextComponent.min.js +2 -2
  38. package/dist/assets/components/TextureProjectionComponent.js +1 -1
  39. package/dist/assets/components/TextureProjectionComponent.min.js +1 -1
  40. package/dist/assets/components/Texturing3DComponent.js +9 -9
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +1 -1
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +1 -1
  44. package/dist/assets/components/WebXRComponent.js +3 -3
  45. package/dist/assets/components/WebXRComponent.min.js +2 -2
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/assets/lib/meshopt_decoder.js +1 -1
  49. package/dist/example.html +1 -1
  50. package/dist/x_ite.css +1 -1
  51. package/dist/x_ite.d.ts +8 -4
  52. package/dist/x_ite.js +250 -236
  53. package/dist/x_ite.min.js +2 -2
  54. package/dist/x_ite.min.mjs +2 -2
  55. package/dist/x_ite.mjs +250 -236
  56. package/dist/x_ite.zip +0 -0
  57. package/package.json +6 -6
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.4.1 */
1
+ /* X_ITE v16.4.3 */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory();
@@ -12,7 +12,7 @@
12
12
  return /******/ (() => { // webpackBootstrap
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 16
15
+ /***/ 802
16
16
  (module, exports) {
17
17
 
18
18
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1017,7 +1017,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1017
1017
 
1018
1018
  /***/ },
1019
1019
 
1020
- /***/ 698
1020
+ /***/ 528
1021
1021
  (module) {
1022
1022
 
1023
1023
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2013,7 +2013,7 @@ return /******/ (function(modules) { // webpackBootstrap
2013
2013
 
2014
2014
  /***/ },
2015
2015
 
2016
- /***/ 402
2016
+ /***/ 628
2017
2017
  (module) {
2018
2018
 
2019
2019
  /**
@@ -8869,7 +8869,7 @@ const
8869
8869
 
8870
8870
  const handler =
8871
8871
  {
8872
- get (target, key, receiver)
8872
+ get (target, key)
8873
8873
  {
8874
8874
  if (typeof key === "string")
8875
8875
  {
@@ -8879,9 +8879,9 @@ const handler =
8879
8879
  return target [_array] [index];
8880
8880
  }
8881
8881
 
8882
- return Reflect .get (target, key, receiver);
8882
+ return Reflect .get (target, key);
8883
8883
  },
8884
- set (target, key, value, receiver)
8884
+ set (target, key, value)
8885
8885
  {
8886
8886
  if (typeof key === "string")
8887
8887
  {
@@ -8891,7 +8891,7 @@ const handler =
8891
8891
  return false;
8892
8892
  }
8893
8893
 
8894
- return Reflect .set (target, key, value, receiver);
8894
+ return Reflect .set (target, key, value);
8895
8895
  },
8896
8896
  has (target, key)
8897
8897
  {
@@ -14359,7 +14359,7 @@ const
14359
14359
 
14360
14360
  const SFNode_handler =
14361
14361
  {
14362
- get (target, key, receiver)
14362
+ get (target, key)
14363
14363
  {
14364
14364
  if (typeof key === "string")
14365
14365
  {
@@ -14378,9 +14378,9 @@ const SFNode_handler =
14378
14378
  }
14379
14379
  }
14380
14380
 
14381
- return Reflect .get (target, key, receiver);
14381
+ return Reflect .get (target, key);
14382
14382
  },
14383
- set (target, key, value, receiver)
14383
+ set (target, key, value)
14384
14384
  {
14385
14385
  if (typeof key === "string")
14386
14386
  {
@@ -14398,7 +14398,7 @@ const SFNode_handler =
14398
14398
  }
14399
14399
  }
14400
14400
 
14401
- return Reflect .set (target, key, value, receiver);
14401
+ return Reflect .set (target, key, value);
14402
14402
  },
14403
14403
  has (target, key)
14404
14404
  {
@@ -15759,7 +15759,7 @@ const
15759
15759
 
15760
15760
  const X3DObjectArrayField_handler =
15761
15761
  {
15762
- get (target, key, receiver)
15762
+ get (target, key)
15763
15763
  {
15764
15764
  if (typeof key === "string")
15765
15765
  {
@@ -15776,9 +15776,9 @@ const X3DObjectArrayField_handler =
15776
15776
  }
15777
15777
  }
15778
15778
 
15779
- return Reflect .get (target, key, receiver);
15779
+ return Reflect .get (target, key);
15780
15780
  },
15781
- set (target, key, value, receiver)
15781
+ set (target, key, value)
15782
15782
  {
15783
15783
  if (typeof key === "string")
15784
15784
  {
@@ -15797,7 +15797,7 @@ const X3DObjectArrayField_handler =
15797
15797
  }
15798
15798
  }
15799
15799
 
15800
- return Reflect .set (target, key, value, receiver);
15800
+ return Reflect .set (target, key, value);
15801
15801
  },
15802
15802
  has (target, key)
15803
15803
  {
@@ -16284,7 +16284,7 @@ const
16284
16284
 
16285
16285
  const X3DTypedArrayField_handler =
16286
16286
  {
16287
- get (target, key, receiver)
16287
+ get (target, key)
16288
16288
  {
16289
16289
  if (typeof key === "string")
16290
16290
  {
@@ -16314,9 +16314,9 @@ const X3DTypedArrayField_handler =
16314
16314
  }
16315
16315
  }
16316
16316
 
16317
- return Reflect .get (target, key, receiver);
16317
+ return Reflect .get (target, key);
16318
16318
  },
16319
- set (target, key, value, receiver)
16319
+ set (target, key, value)
16320
16320
  {
16321
16321
  if (typeof key === "string")
16322
16322
  {
@@ -16351,7 +16351,7 @@ const X3DTypedArrayField_handler =
16351
16351
  }
16352
16352
  }
16353
16353
 
16354
- return Reflect .set (target, key, value, receiver);
16354
+ return Reflect .set (target, key, value);
16355
16355
  },
16356
16356
  has (target, key)
16357
16357
  {
@@ -18232,12 +18232,6 @@ function X3DBaseNode (executionContext, browser = executionContext .getBrowser (
18232
18232
 
18233
18233
  for (const fieldDefinition of this [_fieldDefinitions])
18234
18234
  this .addPredefinedField (fieldDefinition);
18235
-
18236
- // Create events.
18237
-
18238
- this .addChildObjects (Base_X3DConstants .outputOnly, "name_changed", new x_ite_Fields .SFTime (),
18239
- Base_X3DConstants .outputOnly, "typeName_changed", new x_ite_Fields .SFTime (),
18240
- Base_X3DConstants .outputOnly, "parents_changed", new x_ite_Fields .SFTime ());
18241
18235
  }
18242
18236
 
18243
18237
  Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObject .prototype),
@@ -18247,7 +18241,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18247
18241
  {
18248
18242
  Base_X3DChildObject .prototype .setName .call (this, value);
18249
18243
 
18250
- this ._name_changed = Date .now () / 1000;
18244
+ this ._name_changed ?.setValue (Date .now () / 1000);
18251
18245
  },
18252
18246
  getBrowser ()
18253
18247
  {
@@ -18338,37 +18332,30 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18338
18332
  /// Sets the own live state of this node. Setting the live state to false
18339
18333
  /// temporarily disables this node completely.
18340
18334
 
18341
- this [_live] = !!value .valueOf ();
18335
+ value = !! value .valueOf ();
18336
+
18337
+ if (this [_live] === value)
18338
+ return;
18339
+
18340
+ this [_live] = value;
18342
18341
 
18343
18342
  this [_set_live__] ();
18344
18343
  },
18345
- getLive: (() =>
18344
+ getLive ()
18346
18345
  {
18347
- function getLive ()
18348
- {
18349
- return this ._live;
18350
- }
18346
+ /// Returns the live event of this node.
18351
18347
 
18352
- return function ()
18348
+ if (!this ._live)
18353
18349
  {
18354
- /// Returns the live event of this node.
18355
-
18356
- // Change function.
18357
-
18358
- Object .defineProperty (this, "getLive",
18359
- {
18360
- value: getLive,
18361
- configurable: true,
18362
- });
18363
-
18364
18350
  // Add isLive event.
18365
18351
 
18366
- this .addChildObjects (Base_X3DConstants .outputOnly, "live", new x_ite_Fields .SFBool (this .checkLiveState ()));
18352
+ this .addChildObject (Base_X3DConstants .outputOnly, "live", new x_ite_Fields .SFBool (this .checkLiveState ()));
18367
18353
 
18368
18354
  // Event processing is done manually and immediately, so:
18355
+
18369
18356
  this ._live .removeParent (this);
18370
18357
 
18371
- // Connect to execution context.
18358
+ // Connect interests.
18372
18359
 
18373
18360
  if (this .getOuterNode ?.())
18374
18361
  this .getOuterNode () .getLive () .addInterest (_set_live__, this);
@@ -18378,12 +18365,12 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18378
18365
 
18379
18366
  else if (!this [_executionContext] && this !== this [_browser])
18380
18367
  this [_browser] .getLive () .addInterest (_set_live__, this);
18368
+ }
18381
18369
 
18382
- // Return field.
18370
+ // Return field.
18383
18371
 
18384
- return this ._live;
18385
- };
18386
- })(),
18372
+ return this ._live;
18373
+ },
18387
18374
  checkLiveState ()
18388
18375
  {
18389
18376
  /// Determines the live state of this node.
@@ -18399,29 +18386,22 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18399
18386
 
18400
18387
  return this [_live];
18401
18388
  },
18402
- [_set_live__] ()
18389
+ [_set_live__] (event)
18403
18390
  {
18404
18391
  const live = this ._live;
18405
18392
 
18406
18393
  if (!live)
18407
18394
  return;
18408
18395
 
18409
- if (this .checkLiveState ())
18410
- {
18411
- if (live .getValue ())
18412
- return;
18396
+ const state = this .checkLiveState ();
18413
18397
 
18414
- live .set (true);
18415
- live .processEvent ();
18416
- }
18417
- else
18418
- {
18419
- if (live .getValue ())
18420
- {
18421
- live .set (false);
18422
- live .processEvent ();
18423
- }
18424
- }
18398
+ if (event && live .equals (state))
18399
+ return;
18400
+
18401
+ // Get informed when `isLive ()` and `getLive().getValue()` change.
18402
+
18403
+ live .set (state);
18404
+ live .processEvent ();
18425
18405
  },
18426
18406
  addChildObjects (... args /* accessType, name, field, ... */)
18427
18407
  {
@@ -18435,17 +18415,21 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18435
18415
  this [_childObjects] .push (field);
18436
18416
 
18437
18417
  field .setPrivate (true);
18438
- field .setTainted (true);
18418
+ field .setTainted (!this [_initialized]);
18439
18419
  field .addParent (this);
18440
18420
  field .setName (name);
18441
18421
  field .setAccessType (accessType);
18442
18422
 
18443
- Object .defineProperty (this, `_${name}`,
18423
+ const propertyName = `_${name}`;
18424
+
18425
+ Object .defineProperty (this, propertyName,
18444
18426
  {
18445
18427
  get () { return field; },
18446
18428
  set (value) { field .setValue (value); },
18447
18429
  configurable: true,
18448
18430
  });
18431
+
18432
+ return this [propertyName];
18449
18433
  },
18450
18434
  getFieldDefinition (name)
18451
18435
  {
@@ -18734,7 +18718,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18734
18718
  this [_executionContext] ._bbox_changed = time;
18735
18719
  }
18736
18720
 
18737
- this ._parents_changed = time;
18721
+ this ._parents_changed ?.setValue (time);
18738
18722
  },
18739
18723
  dispose ()
18740
18724
  {
@@ -18801,15 +18785,27 @@ Object .defineProperties (X3DBaseNode .prototype,
18801
18785
  {
18802
18786
  name_changed:
18803
18787
  {
18804
- get () { return this ._name_changed; },
18788
+ get ()
18789
+ {
18790
+ return this ._name_changed
18791
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "name_changed", new x_ite_Fields .SFTime ());
18792
+ },
18805
18793
  },
18806
18794
  typeName_changed:
18807
18795
  {
18808
- get () { return this ._typeName_changed; },
18796
+ get ()
18797
+ {
18798
+ return this ._typeName_changed
18799
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "typeName_changed", new x_ite_Fields .SFTime ());
18800
+ },
18809
18801
  },
18810
18802
  parents_changed:
18811
18803
  {
18812
- get () { return this ._parents_changed; },
18804
+ get ()
18805
+ {
18806
+ return this ._parents_changed
18807
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "parents_changed", new x_ite_Fields .SFTime ());
18808
+ },
18813
18809
  },
18814
18810
  });
18815
18811
 
@@ -18889,7 +18885,7 @@ const Legacy_default_ = Legacy;
18889
18885
 
18890
18886
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18891
18887
  ;// ./src/x_ite/BROWSER_VERSION.js
18892
- const BROWSER_VERSION_default_ = "16.4.1";
18888
+ const BROWSER_VERSION_default_ = "16.4.3";
18893
18889
  ;
18894
18890
 
18895
18891
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -23971,16 +23967,16 @@ const
23971
23967
 
23972
23968
  const X3DImportedNodeProxy_handler =
23973
23969
  {
23974
- get (target, key, receiver)
23970
+ get (target, key)
23975
23971
  {
23976
23972
  if (Reflect .has (target, key))
23977
- return Reflect .get (target, key, receiver);
23973
+ return Reflect .get (target, key);
23978
23974
 
23979
23975
  const node = target .getSharedNode ();
23980
23976
 
23981
23977
  if (node)
23982
23978
  {
23983
- const property = Reflect .get (node, key, receiver);
23979
+ const property = Reflect .get (node, key);
23984
23980
 
23985
23981
  if (typeof property === "function")
23986
23982
  {
@@ -23997,18 +23993,18 @@ const X3DImportedNodeProxy_handler =
23997
23993
  return property;
23998
23994
  }
23999
23995
  },
24000
- set (target, key, value, receiver)
23996
+ set (target, key, value)
24001
23997
  {
24002
23998
  if (Reflect .has (target, key))
24003
23999
  {
24004
- return Reflect .set (target, key, value, receiver);
24000
+ return Reflect .set (target, key, value);
24005
24001
  }
24006
24002
  else
24007
24003
  {
24008
24004
  const node = target .getSharedNode ();
24009
24005
 
24010
24006
  if (node)
24011
- return Reflect .set (node, key, value, receiver);
24007
+ return Reflect .set (node, key, value);
24012
24008
 
24013
24009
  return false;
24014
24010
  }
@@ -24083,7 +24079,7 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24083
24079
  {
24084
24080
  this [_importedName] = value;
24085
24081
 
24086
- this ._name_changed = Date .now () / 1000;
24082
+ this ._name_changed ?.setValue (Date .now () / 1000);
24087
24083
  },
24088
24084
  ... Object .fromEntries ([
24089
24085
  ["getComponentInfo", "componentInfo"],
@@ -24128,9 +24124,15 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24128
24124
  set_loadState__ ()
24129
24125
  {
24130
24126
  if (this [_importedNode] ?.getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
24131
- this [X3DImportedNodeProxy_type] = this .getSharedNode () ?.constructor ?? this [X3DImportedNodeProxy_type];
24127
+ {
24128
+ const sharedNode = this .getSharedNode ();
24129
+
24130
+ this [X3DImportedNodeProxy_type] = sharedNode ?.constructor ?? this [X3DImportedNodeProxy_type];
24131
+
24132
+ sharedNode ?.addInterest ("addNodeEvent", this);
24133
+ }
24132
24134
 
24133
- this ._typeName_changed = Date .now () / 1000;
24135
+ this ._typeName_changed ?.setValue (Date .now () / 1000);
24134
24136
 
24135
24137
  Base_X3DChildObject .prototype .addEvent .call (this);
24136
24138
  },
@@ -24984,7 +24986,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
24984
24986
 
24985
24987
  const oldProtoNode = this [_protoNode];
24986
24988
 
24987
- oldProtoNode ._name_changed .removeFieldInterest (this ._typeName_changed);
24989
+ oldProtoNode .name_changed .removeFieldInterest (this .typeName_changed);
24988
24990
  oldProtoNode ._updateInstances .removeInterest ("construct", this);
24989
24991
  oldProtoNode ._updateInstances .removeInterest ("update", this);
24990
24992
 
@@ -24994,7 +24996,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
24994
24996
  this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
24995
24997
  this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
24996
24998
 
24997
- protoNode ._name_changed .addFieldInterest (this ._typeName_changed);
24999
+ protoNode .name_changed .addFieldInterest (this .typeName_changed);
24998
25000
 
24999
25001
  construct ? this .construct () : this .update ();
25000
25002
  },
@@ -25421,7 +25423,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
25421
25423
  {
25422
25424
  const protoNode = this [_protoNode];
25423
25425
 
25424
- protoNode ._name_changed .removeFieldInterest (this ._typeName_changed);
25426
+ protoNode .name_changed .removeFieldInterest (this .typeName_changed);
25425
25427
  protoNode ._updateInstances .removeInterest ("construct", this);
25426
25428
  protoNode ._updateInstances .removeInterest ("update", this);
25427
25429
 
@@ -31190,7 +31192,7 @@ const Plane3_default_ = Plane3;
31190
31192
 
31191
31193
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31192
31194
  ;// ./src/standard/Math/Geometry/Triangle3.js
31193
- /* provided dependency */ var libtess = __webpack_require__(402);
31195
+ /* provided dependency */ var libtess = __webpack_require__(628);
31194
31196
 
31195
31197
 
31196
31198
  const Triangle3 =
@@ -35545,22 +35547,6 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35545
35547
  // With screen matrix applied.
35546
35548
  return this .bbox;
35547
35549
  },
35548
- setBBox (bbox)
35549
- {
35550
- if (bbox .equals (this .bbox))
35551
- return;
35552
-
35553
- const { min, max } = this;
35554
-
35555
- bbox .getExtents (min, max);
35556
-
35557
- this .bbox .assign (bbox);
35558
- this .planes .forEach ((plane, i) => plane .set (i % 2 ? min : max, boxNormals [i]));
35559
-
35560
- this ._bbox_changed .addEvent ();
35561
-
35562
- this .getExecutionContext () ._bbox_changed = Date .now () / 1000;
35563
- },
35564
35550
  getMin ()
35565
35551
  {
35566
35552
  // With screen matrix applied.
@@ -35571,10 +35557,6 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35571
35557
  // With screen matrix applied.
35572
35558
  return this .max;
35573
35559
  },
35574
- getMatrix ()
35575
- {
35576
- return Numbers_Matrix4 .IDENTITY;
35577
- },
35578
35560
  isSolid ()
35579
35561
  {
35580
35562
  return this .solid;
@@ -35933,16 +35915,16 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35933
35915
  vertices = this .vertices .getValue (),
35934
35916
  { min, max } = this;
35935
35917
 
35936
- if (vertices .length)
35918
+ if (min .x === Number .POSITIVE_INFINITY)
35937
35919
  {
35938
- if (min .x === Number .POSITIVE_INFINITY)
35920
+ if (vertices .length)
35939
35921
  this .bbox .setArray (vertices, 4) .getExtents (min, max);
35940
35922
  else
35941
- this .bbox .setExtents (min, max);
35923
+ this .bbox .setExtents (min .set (0), max .set (0));
35942
35924
  }
35943
35925
  else
35944
35926
  {
35945
- this .bbox .setExtents (min .set (0), max .set (0));
35927
+ this .bbox .setExtents (min, max);
35946
35928
  }
35947
35929
 
35948
35930
  for (let i = 0; i < 5; ++ i)
@@ -36530,7 +36512,6 @@ const AlphaMode_default_ = Object .assign (new Map (Object .entries (AlphaMode))
36530
36512
 
36531
36513
 
36532
36514
 
36533
-
36534
36515
  function GeometryContext (options = { })
36535
36516
  {
36536
36517
  Object .assign (this,
@@ -36553,10 +36534,6 @@ function GeometryContext (options = { })
36553
36534
 
36554
36535
  Object .assign (GeometryContext .prototype,
36555
36536
  {
36556
- getMatrix ()
36557
- {
36558
- return Numbers_Matrix4 .IDENTITY;
36559
- },
36560
36537
  getTextureCoordinateMapping ()
36561
36538
  {
36562
36539
  return this .textureCoordinateMapping;
@@ -47937,7 +47914,7 @@ const Bezier_default_ = Bezier;
47937
47914
 
47938
47915
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47939
47916
  ;// ./src/x_ite/Parser/SVGParser.js
47940
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(402);
47917
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(628);
47941
47918
 
47942
47919
 
47943
47920
 
@@ -51116,35 +51093,18 @@ const X3DWorld_default_ = X3DWorld;
51116
51093
 
51117
51094
 
51118
51095
 
51096
+ const MAX_CACHED_SCENES = 64;
51119
51097
 
51120
- const foreignMimeType = new Set ([
51098
+ const FOREIGN_MIME_TYPES = new Set ([
51121
51099
  "text/html",
51122
51100
  "application/xhtml+xml",
51123
51101
  ]);
51124
51102
 
51125
51103
  const FileLoader_cache = Symbol .for ("X_ITE.cache");
51126
51104
 
51127
- function FileLoader (node, { cacheScene = false, dataAsString = true } = { })
51128
- {
51129
- Base_X3DObject .call (this);
51130
-
51131
- this .node = node;
51132
- this .cacheScene = cacheScene;
51133
- this .dataAsString = dataAsString;
51134
- this .browser = node .getBrowser ();
51135
- this .executionContext = node .getExecutionContext ();
51136
- this .target = "";
51137
- this .url = [ ];
51138
- this .controller = new AbortController ();
51139
- this .candidateURL = "";
51140
- this .resolvedURL = null;
51141
- this .attempts = [ ];
51142
- }
51143
-
51144
- Object .assign (FileLoader,
51105
+ class FileLoader
51145
51106
  {
51146
- sceneCache: new Map (),
51147
- loadDocument (node, url, options)
51107
+ static loadDocument (node, url, options)
51148
51108
  {
51149
51109
  return new Promise ((resolve, reject) => new FileLoader (node, options) .loadDocument (url, (data, fileURL) =>
51150
51110
  {
@@ -51153,29 +51113,67 @@ Object .assign (FileLoader,
51153
51113
 
51154
51114
  reject ();
51155
51115
  }));
51156
- },
51157
- });
51116
+ }
51117
+
51118
+ static #sceneCache = new Map ();
51119
+
51120
+ static addScene (url, promise)
51121
+ {
51122
+ // Delete last used scene.
51123
+ if (this .#sceneCache .size >= MAX_CACHED_SCENES)
51124
+ this .#sceneCache .delete (this .#sceneCache .keys () .next () .value);
51125
+
51126
+ // Add new scene.
51127
+ this .#sceneCache .set (url, promise);
51128
+ }
51129
+
51130
+ static getScene (url)
51131
+ {
51132
+ const promise = this .#sceneCache .get (url);
51133
+
51134
+ // Move scene to the end of the list.
51135
+ this .#sceneCache .delete (url);
51136
+ this .#sceneCache .set (url, promise);
51137
+
51138
+ return promise;
51139
+ }
51140
+
51141
+ constructor (node, { cacheScene = false, dataAsString = true } = { })
51142
+ {
51143
+ this .node = node;
51144
+ this .cacheScene = cacheScene;
51145
+ this .dataAsString = dataAsString;
51146
+ this .browser = node .getBrowser ();
51147
+ this .executionContext = node .getExecutionContext ();
51148
+ this .target = "";
51149
+ this .url = [ ];
51150
+ this .controller = new AbortController ();
51151
+ this .candidateURL = "";
51152
+ this .resolvedURL = null;
51153
+ this .attempts = [ ];
51154
+ }
51158
51155
 
51159
- Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .prototype),
51160
- {
51161
51156
  isPrivate ()
51162
51157
  {
51163
51158
  // Don't count for loading objects.
51164
51159
  return true;
51165
- },
51160
+ }
51161
+
51166
51162
  abort ()
51167
51163
  {
51168
51164
  this .url .length = 0;
51169
51165
 
51170
51166
  this .controller .abort ();
51171
- },
51167
+ }
51168
+
51172
51169
  getBaseURL ()
51173
51170
  {
51174
51171
  if (this .node instanceof Execution_X3DWorld)
51175
51172
  return this .browser .getBaseURL ();
51176
51173
 
51177
51174
  return this .executionContext .getBaseURL ();
51178
- },
51175
+ }
51176
+
51179
51177
  getTarget (parameters)
51180
51178
  {
51181
51179
  for (const parameter of parameters)
@@ -51190,7 +51188,8 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51190
51188
  }
51191
51189
 
51192
51190
  return "";
51193
- },
51191
+ }
51192
+
51194
51193
  createX3DFromString (worldURL, string = "", resolve, reject)
51195
51194
  {
51196
51195
  try
@@ -51216,12 +51215,14 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51216
51215
  else
51217
51216
  throw error;
51218
51217
  }
51219
- },
51218
+ }
51219
+
51220
51220
  setScene (scene, resolve, reject)
51221
51221
  {
51222
51222
  scene ._loadCount .addInterest ("set_loadCount__", this, scene, resolve, reject);
51223
51223
  scene ._loadCount .addEvent ();
51224
- },
51224
+ }
51225
+
51225
51226
  async set_loadCount__ (scene, resolve, reject)
51226
51227
  {
51227
51228
  try
@@ -51238,7 +51239,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51238
51239
  if (this .cacheScene)
51239
51240
  scene [FileLoader_cache] = true;
51240
51241
 
51241
- this .resolve ?.(scene);
51242
+ this .cacheResolve ?.(scene);
51242
51243
  resolve (scene);
51243
51244
  }
51244
51245
  catch (error)
@@ -51251,10 +51252,11 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51251
51252
 
51252
51253
  if (DEVELOPMENT)
51253
51254
  {
51254
- if (this .resolvedURL .protocol !== "data:")
51255
- console .info (`Done loading scene '${decodeURI (this .resolvedURL)}'.`);
51255
+ if (this .resolvedURL ?.protocol !== "data:")
51256
+ console .info (`Done loading scene '${decodeURI (this .resolvedURL ?? "<inline scene>")}'.`);
51256
51257
  }
51257
- },
51258
+ }
51259
+
51258
51260
  createX3DFromURL (url, parameter, callback, bindViewpoint, foreign)
51259
51261
  {
51260
51262
  this .sceneCallback = callback;
@@ -51263,18 +51265,20 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51263
51265
  this .target = this .getTarget (parameter || new x_ite_Fields .MFString ());
51264
51266
 
51265
51267
  return this .loadDocument (url, this .createX3DFromURLAsync .bind (this, callback));
51266
- },
51268
+ }
51269
+
51267
51270
  createX3DFromURLAsync (callback, data)
51268
51271
  {
51269
51272
  if (data === null)
51270
51273
  callback (null);
51271
51274
  else
51272
51275
  this .createX3DFromString (this .resolvedURL, data, callback, this .loadDocumentError .bind (this));
51273
- },
51276
+ }
51277
+
51274
51278
  loadDocument (url, callback)
51275
51279
  {
51276
- this .url = url .slice ();
51277
- this .callback = callback;
51280
+ this .url = url .slice ();
51281
+ this .dataCallback = callback;
51278
51282
 
51279
51283
  this .attempts .length = 0;
51280
51284
 
@@ -51283,7 +51287,8 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51283
51287
 
51284
51288
  this .loadDocumentAsync (String (this .url .shift ()))
51285
51289
  .catch (this .loadDocumentError .bind (this));
51286
- },
51290
+ }
51291
+
51287
51292
  async loadDocumentAsync (url)
51288
51293
  {
51289
51294
  // Not every candidate reaches URL resolution, so resolvedURL stays null until it
@@ -51301,7 +51306,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51301
51306
  const result = url .match (/^\s*(?:ecmascript|javascript|vrmlscript):/s);
51302
51307
 
51303
51308
  if (result)
51304
- return await this .callback (url .substring (result [0] .length));
51309
+ return await this .dataCallback (url .substring (result [0] .length));
51305
51310
  }
51306
51311
 
51307
51312
  this .resolvedURL = new URL (url, this .getBaseURL ());
@@ -51320,7 +51325,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51320
51325
  data = helper.try (() => decodeURIComponent (data)) ?? data; // Decode data.
51321
51326
  data = data .replace (/^/, ""); // Remove BOM.
51322
51327
 
51323
- return await this .callback (data);
51328
+ return await this .dataCallback (data);
51324
51329
  }
51325
51330
  }
51326
51331
 
@@ -51363,13 +51368,13 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51363
51368
 
51364
51369
  cacheURL .hash = "";
51365
51370
 
51366
- const promise = FileLoader .sceneCache .get (cacheURL .href);
51371
+ const promise = FileLoader .getScene (cacheURL .href);
51367
51372
 
51368
51373
  if (promise)
51369
51374
  {
51370
51375
  const scene = await promise;
51371
51376
 
51372
- scene .setWorldURL (this .resolvedURL .href);
51377
+ scene .setWorldURL (this .resolvedURL);
51373
51378
 
51374
51379
  return this .sceneCallback (scene);
51375
51380
  }
@@ -51377,9 +51382,9 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51377
51382
  {
51378
51383
  const { promise, resolve } = Promise .withResolvers ();
51379
51384
 
51380
- this .resolve = resolve;
51385
+ this .cacheResolve = resolve;
51381
51386
 
51382
- FileLoader .sceneCache .set (cacheURL .href, promise);
51387
+ FileLoader .addScene (cacheURL .href, promise);
51383
51388
  }
51384
51389
  }
51385
51390
 
@@ -51394,12 +51399,13 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51394
51399
  {
51395
51400
  // console .log (mimeType);
51396
51401
 
51397
- if (foreignMimeType .has (mimeType))
51402
+ if (FOREIGN_MIME_TYPES .has (mimeType))
51398
51403
  return this .foreign (this .resolvedURL .href, this .target);
51399
51404
  }
51400
51405
 
51401
- await this .callback (await helper.gunzip (await this .getBlob (response)), this .resolvedURL);
51402
- },
51406
+ await this .dataCallback (await helper.gunzip (await this .getBlob (response)), this .resolvedURL);
51407
+ }
51408
+
51403
51409
  async getBlob (response)
51404
51410
  {
51405
51411
  const contentLength = parseInt (response .headers .get ("x-file-size"))
@@ -51432,14 +51438,16 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51432
51438
  }
51433
51439
 
51434
51440
  return await new Blob (values);
51435
- },
51441
+ }
51442
+
51436
51443
  checkResponse (response)
51437
51444
  {
51438
51445
  if (response .ok)
51439
51446
  return response;
51440
51447
 
51441
51448
  throw new Error (response .statusText || response .status);
51442
- },
51449
+ }
51450
+
51443
51451
  loadDocumentError (error)
51444
51452
  {
51445
51453
  // Output error.
@@ -51455,10 +51463,11 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51455
51463
  }
51456
51464
  else
51457
51465
  {
51458
- this .resolve ?.(null);
51459
- this .callback (null);
51466
+ this .cacheResolve ?.(null);
51467
+ this .dataCallback (null);
51460
51468
  }
51461
- },
51469
+ }
51470
+
51462
51471
  printError (error)
51463
51472
  {
51464
51473
  if (!error)
@@ -51468,7 +51477,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51468
51477
  // script URL — have no resolved URL, and are reported by their authored value.
51469
51478
 
51470
51479
  const
51471
- typeName = this .node instanceof Execution_X3DWorld ? "" : ` for ${this .node .getTypeName ()}`,
51480
+ typeName = this .node instanceof Execution_X3DWorld ? "" : `${this .node .getTypeName ()}: `,
51472
51481
  dataURL = this .resolvedURL ?.protocol === "data:",
51473
51482
  resolved = this .resolvedURL && !dataURL ? `${helper.try (() => decodeURI (this .resolvedURL)) ?? this .resolvedURL}` : "",
51474
51483
  subject = !this .candidateURL .length ? "empty URL"
@@ -51482,39 +51491,38 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51482
51491
  // failed only once every candidate has been tried.
51483
51492
 
51484
51493
  if (this .url .length)
51485
- return console .warn (`Couldn't load ${subject}${typeName}, trying URL ${this .attempts .length + 1} of ${this .attempts .length + this .url .length}.`, error);
51494
+ return console .warn (`${typeName}Couldn't load ${subject}, trying URL ${this .attempts .length + 1} of ${this .attempts .length + this .url .length}.`, error);
51486
51495
 
51487
51496
  if (this .attempts .length === 1)
51488
- return console .error (`Couldn't load ${subject}${typeName}.`, error);
51497
+ return console .error (`${typeName}Couldn't load ${subject}.`, error);
51489
51498
 
51490
51499
  // Pass the errors themselves along with the summary, so their stacks and context
51491
51500
  // stay inspectable.
51492
51501
 
51493
- console .error (`Couldn't load any of the ${this .attempts .length} URLs${typeName}, tried in this order:\n`
51502
+ console .error (`${typeName}Couldn't load any of the ${this .attempts .length} URLs, tried in this order:\n`
51494
51503
  + this .attempts
51495
51504
  .map (({ url, resolved, error }, i) =>
51496
51505
  ` ${i + 1}. '${this .truncate (url)}'${resolved && resolved !== url ? ` → ${this .truncate (resolved)}` : ""}: ${this .describe (error)}`)
51497
51506
  .join ("\n") + "\n",
51498
51507
  ... this .attempts .map (({ error }) => error));
51499
- },
51508
+ }
51509
+
51500
51510
  /**
51501
51511
  * Keep diagnostics readable when a candidate is a long data URL.
51502
51512
  */
51503
51513
  truncate (string, length = 120)
51504
51514
  {
51505
51515
  return string .length > length ? `${string .substring (0, length)}…` : string;
51506
- },
51516
+ }
51517
+
51507
51518
  /**
51508
51519
  * Not every thrown value is an Error, so don't summarize one as [object Object].
51509
51520
  */
51510
51521
  describe (error)
51511
51522
  {
51512
51523
  return error ?.message ?? (typeof error === "object" ? helper.try (() => JSON .stringify (error)) : null) ?? String (error);
51513
- },
51514
- });
51515
-
51516
- for (const key of Object .keys (FileLoader .prototype))
51517
- Object .defineProperty (FileLoader .prototype, key, { enumerable: false });
51524
+ }
51525
+ }
51518
51526
 
51519
51527
  const FileLoader_default_ = FileLoader;
51520
51528
  ;
@@ -54679,7 +54687,7 @@ function X3DCoreContext (element)
54679
54687
  {
54680
54688
  const link = document .createElement ("link");
54681
54689
 
54682
- link .integrity = "sha384-ghtkTig2bXHd5VgQPGzWUh9HuPE5g2Mb4S3c3Yap2DRcv41187XE74CWLQUKkwO2";
54690
+ link .integrity = "sha384-r+Z33c1QviLoOgodJzYHRhRIxsvRFnZVj3GbeoohZ//iR51ZK8cK/Jq4mcMi8WV6";
54683
54691
  link .rel = "stylesheet";
54684
54692
  link .crossOrigin = "anonymous";
54685
54693
  link .onload = resolve;
@@ -61913,7 +61921,7 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
61913
61921
  this .addFly ();
61914
61922
 
61915
61923
  if (browser .getBrowserOption ("Rubberband"))
61916
- browser .finishedEvents () .addInterest ("display", this, MOVE);
61924
+ browser .displayFinishEvents () .addInterest ("display", this, MOVE);
61917
61925
  }
61918
61926
 
61919
61927
  this ._isActive = true;
@@ -61943,7 +61951,7 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
61943
61951
  this .addPan ();
61944
61952
 
61945
61953
  if (browser .getBrowserOption ("Rubberband"))
61946
- browser .finishedEvents () .addInterest ("display", this, PAN);
61954
+ browser .displayFinishEvents () .addInterest ("display", this, PAN);
61947
61955
 
61948
61956
  this ._isActive = true;
61949
61957
  break;
@@ -62409,9 +62417,9 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
62409
62417
 
62410
62418
  browser .addBrowserEvent ();
62411
62419
 
62412
- browser .prepareEvents () .removeInterest ("fly", this);
62413
- browser .prepareEvents () .removeInterest ("pan", this);
62414
- browser .finishedEvents () .removeInterest ("display", this);
62420
+ browser .prepareEvents () .removeInterest ("fly", this);
62421
+ browser .prepareEvents () .removeInterest ("pan", this);
62422
+ browser .displayFinishEvents () .removeInterest ("display", this);
62415
62423
 
62416
62424
  this .orientationChaser ._value_changed .removeInterest ("set_orientationOffset__", this);
62417
62425
 
@@ -65067,7 +65075,7 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
65067
65075
  hit .shapeNode = shapeNode;
65068
65076
 
65069
65077
  hit .viewMatrix .assign (renderObject .getViewpoint () .getViewMatrix ());
65070
- hit .modelViewMatrix .assign (geometryContext .getMatrix ()) .inverse () .multRight (modelViewMatrix);
65078
+ hit .modelViewMatrix .assign (modelViewMatrix);
65071
65079
 
65072
65080
  // A ParticleSystem has only a geometry context.
65073
65081
  // Hit normal must be normalized if used.
@@ -67335,7 +67343,7 @@ vec3 color=vec3(0);vec3 v=normalize(-vertex);
67335
67343
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67336
67344
  NormalInfo normalInfo=getNormalInfo(x3d_Material.normalScale);vec3 n=normalInfo.n;float NdotV=clamp(dot(n,v),0.,1.);
67337
67345
  #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67338
- vec3 v_retro=reflect(-v,n);float NdotV_retro=clamp(dot(n,v_retro),0.,1.);
67346
+ vec3 v_retro=normalize(reflect(-v,n));
67339
67347
  #endif
67340
67348
  #endif
67341
67349
  MaterialInfo materialInfo;materialInfo.baseColor=baseColor.rgb;materialInfo.ior=1.5;materialInfo.f0_dielectric=vec3(.04);materialInfo.specularWeight=1.;materialInfo.f90=vec3(1);materialInfo.f90_dielectric=materialInfo.f90;
@@ -67363,6 +67371,9 @@ materialInfo=getVolumeInfo(materialInfo);
67363
67371
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67364
67372
  materialInfo=getIridescenceInfo(materialInfo);
67365
67373
  #endif
67374
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67375
+ materialInfo=getRetroreflectionInfo(materialInfo);
67376
+ #endif
67366
67377
  #if defined(X3D_DIFFUSE_TRANSMISSION_MATERIAL_EXT)
67367
67378
  materialInfo=getDiffuseTransmissionInfo(materialInfo);
67368
67379
  #endif
@@ -67372,17 +67383,10 @@ materialInfo=getVolumeScatterInfo(materialInfo);
67372
67383
  #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67373
67384
  materialInfo=getAnisotropyInfo(materialInfo,normalInfo);
67374
67385
  #endif
67375
- #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67376
- materialInfo=getRetroreflectionInfo(materialInfo);
67377
- #endif
67378
67386
  materialInfo.perceptualRoughness=clamp(materialInfo.perceptualRoughness,0.,1.);materialInfo.metallic=clamp(materialInfo.metallic,0.,1.);materialInfo.alphaRoughness=materialInfo.perceptualRoughness*materialInfo.perceptualRoughness;vec3 f_specular_dielectric=vec3(0);vec3 f_specular_metal=vec3(0);vec3 f_diffuse=vec3(0);vec3 f_dielectric_brdf_ibl=vec3(0);vec3 f_metal_brdf_ibl=vec3(0);vec3 f_emissive=vec3(0);vec3 clearcoat_brdf=vec3(0);vec3 f_sheen=vec3(0);vec3 f_specular_transmission=vec3(0);vec3 f_diffuse_transmission=vec3(0);float clearcoatFactor=0.;vec3 clearcoatFresnel=vec3(0);float albedoSheenScaling=1.;float diffuseTransmissionThickness=1.;vec3 diffuseTransmissionIBL=vec3(0);
67379
67387
  #if defined(X3D_USE_IBL)||defined(X3D_LIGHTING)
67380
67388
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67381
- vec3 iridescenceFresnel_dielectric=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,baseColor.rgb);
67382
- #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67383
- vec3 iridescenceFresnel_dielectric_retro=evalIridescence(1.,materialInfo.iridescenceIor,NdotV_retro,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic_retro=evalIridescence(1.,materialInfo.iridescenceIor,NdotV_retro,materialInfo.iridescenceThickness,baseColor.rgb);
67384
- #endif
67385
- if(materialInfo.iridescenceThickness==0.)materialInfo.iridescenceFactor=0.;
67389
+ vec3 iridescenceFresnel_dielectric=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,materialInfo.f0_dielectric);vec3 iridescenceFresnel_metallic=evalIridescence(1.,materialInfo.iridescenceIor,NdotV,materialInfo.iridescenceThickness,baseColor.rgb);if(materialInfo.iridescenceThickness==0.)materialInfo.iridescenceFactor=0.;
67386
67390
  #endif
67387
67391
  #endif
67388
67392
  #if defined(X3D_DIFFUSE_TRANSMISSION_MATERIAL_EXT)
@@ -67420,6 +67424,18 @@ vec3 f_metal_fresnel_ibl=getIBLGGXFresnel(n,v,materialInfo.perceptualRoughness,b
67420
67424
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67421
67425
  f_metal_brdf_ibl=mix(f_metal_brdf_ibl,f_specular_metal*iridescenceFresnel_metallic,materialInfo.iridescenceFactor);f_dielectric_brdf_ibl=mix(f_dielectric_brdf_ibl,rgb_mix(f_diffuse,f_specular_dielectric,iridescenceFresnel_dielectric),materialInfo.iridescenceFactor);
67422
67426
  #endif
67427
+ #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67428
+ #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67429
+ vec3 f_specular_retro=getIBLRadianceAnisotropy(n,v_retro,materialInfo.perceptualRoughness,materialInfo.anisotropyStrength,materialInfo.anisotropicB);
67430
+ #else
67431
+ vec3 f_specular_retro=getIBLRadianceGGX(n,v_retro,materialInfo.perceptualRoughness);
67432
+ #endif
67433
+ vec3 f_metal_brdf_retro=f_metal_fresnel_ibl*f_specular_retro;vec3 f_dielectric_brdf_retro=mix(f_diffuse,f_specular_retro,f_dielectric_fresnel_ibl);
67434
+ #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67435
+ f_metal_brdf_retro=mix(f_metal_brdf_retro,f_specular_retro*iridescenceFresnel_metallic,materialInfo.iridescenceFactor);f_dielectric_brdf_retro=mix(f_dielectric_brdf_retro,rgb_mix(f_diffuse,f_specular_retro,iridescenceFresnel_dielectric),materialInfo.iridescenceFactor);
67436
+ #endif
67437
+ f_metal_brdf_ibl=mix(f_metal_brdf_ibl,f_metal_brdf_retro,materialInfo.retroreflectionFactor);f_dielectric_brdf_ibl=mix(f_dielectric_brdf_ibl,f_dielectric_brdf_retro,materialInfo.retroreflectionFactor);
67438
+ #endif
67423
67439
  #if defined(X3D_CLEARCOAT_MATERIAL_EXT)
67424
67440
  clearcoat_brdf=getIBLRadianceGGX(materialInfo.clearcoatNormal,v,materialInfo.clearcoatRoughness);
67425
67441
  #endif
@@ -67462,15 +67478,15 @@ l_metal_brdf=metal_fresnel*l_specular_metal;l_dielectric_brdf=mix(l_diffuse,l_sp
67462
67478
  l_metal_brdf=mix(l_metal_brdf,l_specular_metal*iridescenceFresnel_metallic,materialInfo.iridescenceFactor);l_dielectric_brdf=mix(l_dielectric_brdf,rgb_mix(l_diffuse,l_specular_dielectric,iridescenceFresnel_dielectric),materialInfo.iridescenceFactor);
67463
67479
  #endif
67464
67480
  #if defined(X3D_RETROREFLECTION_MATERIAL_EXT)
67465
- vec3 h_retro=normalize(l+v_retro);float NdotH_retro=clamp(dot(n,h_retro),0.,1.);float VdotH_retro=clamp(dot(v_retro,h_retro),0.,1.);vec3 dielectric_fresnel_retro=F_Schlick(materialInfo.f0_dielectric*materialInfo.specularWeight,materialInfo.f90_dielectric,abs(VdotH_retro));vec3 metal_fresnel_retro=F_Schlick(baseColor.rgb,vec3(1),abs(VdotH_retro));vec3 l_specular_metal_retro;
67481
+ vec3 h_retro=normalize(l+v_retro);float NdotH_retro=clamp(dot(n,h_retro),0.,1.);float VdotH_retro=clamp(dot(v_retro,h_retro),0.,1.);vec3 dielectric_fresnel_retro=F_Schlick(materialInfo.f0_dielectric*materialInfo.specularWeight,materialInfo.f90_dielectric,abs(VdotH_retro));vec3 metal_fresnel_retro=F_Schlick(baseColor.rgb,vec3(1),abs(VdotH_retro));
67466
67482
  #if defined(X3D_ANISOTROPY_MATERIAL_EXT)
67467
- l_specular_metal_retro=intensity*NdotL*BRDF_specularGGXAnisotropy(materialInfo.alphaRoughness,materialInfo.anisotropyStrength,n,v_retro,l,h_retro,materialInfo.anisotropicT,materialInfo.anisotropicB);
67483
+ vec3 l_specular_retro=intensity*NdotL*BRDF_specularGGXAnisotropy(materialInfo.alphaRoughness,materialInfo.anisotropyStrength,n,v_retro,l,h_retro,materialInfo.anisotropicT,materialInfo.anisotropicB);
67468
67484
  #else
67469
- l_specular_metal_retro=intensity*NdotL*BRDF_specularGGX(materialInfo.alphaRoughness,NdotL,NdotV_retro,NdotH_retro);
67485
+ vec3 l_specular_retro=intensity*NdotL*BRDF_specularGGX(materialInfo.alphaRoughness,NdotL,NdotV,NdotH_retro);
67470
67486
  #endif
67471
- vec3 l_specular_dielectric_retro=l_specular_metal_retro;vec3 l_metal_brdf_retro=metal_fresnel_retro*l_specular_metal_retro;vec3 l_dielectric_brdf_retro=mix(l_diffuse,l_specular_dielectric_retro,dielectric_fresnel_retro);
67487
+ vec3 l_metal_brdf_retro=metal_fresnel_retro*l_specular_retro;vec3 l_dielectric_brdf_retro=mix(l_diffuse,l_specular_retro,dielectric_fresnel_retro);
67472
67488
  #if defined(X3D_IRIDESCENCE_MATERIAL_EXT)
67473
- l_metal_brdf_retro=mix(l_metal_brdf_retro,l_specular_metal*iridescenceFresnel_metallic_retro,materialInfo.iridescenceFactor);l_dielectric_brdf_retro=mix(l_dielectric_brdf_retro,rgb_mix(l_diffuse,l_specular_dielectric,iridescenceFresnel_dielectric_retro),materialInfo.iridescenceFactor);
67489
+ l_metal_brdf_retro=mix(l_metal_brdf_retro,l_specular_retro*iridescenceFresnel_metallic,materialInfo.iridescenceFactor);l_dielectric_brdf_retro=mix(l_dielectric_brdf_retro,rgb_mix(l_diffuse,l_specular_retro,iridescenceFresnel_dielectric),materialInfo.iridescenceFactor);
67474
67490
  #endif
67475
67491
  l_metal_brdf=mix(l_metal_brdf,l_metal_brdf_retro,materialInfo.retroreflectionFactor);l_dielectric_brdf=mix(l_dielectric_brdf,l_dielectric_brdf_retro,materialInfo.retroreflectionFactor);
67476
67492
  #endif
@@ -72977,16 +72993,16 @@ function X3DBrowserContext (element)
72977
72993
  for (const browserContext of browserContexts)
72978
72994
  browserContext .call (this, element);
72979
72995
 
72980
- this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72981
- Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72982
- Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72983
- Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
72984
- Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72985
- Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72986
- Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72987
- Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72988
- Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
72989
- Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
72996
+ this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72997
+ Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72998
+ Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72999
+ Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
73000
+ Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
73001
+ Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
73002
+ Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
73003
+ Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
73004
+ Base_X3DConstants .outputOnly, "displayFinishEvents", new x_ite_Fields .SFTime (),
73005
+ Base_X3DConstants .outputOnly, "finishEvents", new x_ite_Fields .SFTime ());
72990
73006
 
72991
73007
  this [X3DBrowserContext_tainted] = false;
72992
73008
  this [_previousTime] = 0;
@@ -73040,13 +73056,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73040
73056
  {
73041
73057
  return this ._displayEvents;
73042
73058
  },
73043
- finishedEvents ()
73059
+ displayFinishEvents ()
73044
73060
  {
73045
- return this ._finishedEvents;
73061
+ return this ._displayFinishEvents;
73046
73062
  },
73047
- endEvents ()
73063
+ finishEvents ()
73048
73064
  {
73049
- return this ._endEvents;
73065
+ return this ._finishEvents;
73050
73066
  },
73051
73067
  getBrowser ()
73052
73068
  {
@@ -73092,13 +73108,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73092
73108
  {
73093
73109
  const key = Symbol ();
73094
73110
 
73095
- this .addBrowserEvent ();
73096
-
73097
- this ._endEvents .addFieldCallback (key, () =>
73111
+ this ._finishEvents .addFieldCallback (key, () =>
73098
73112
  {
73099
- this ._endEvents .removeFieldCallback (key);
73113
+ this ._finishEvents .removeFieldCallback (key);
73100
73114
  resolve ();
73101
73115
  });
73116
+
73117
+ this .addBrowserEvent ();
73102
73118
  });
73103
73119
  },
73104
73120
  [_traverse] (now, frame)
@@ -73167,7 +73183,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73167
73183
 
73168
73184
  this [_world] .traverse (Rendering_TraverseType .DISPLAY);
73169
73185
 
73170
- this .addTaintedField (this ._finishedEvents);
73186
+ this .addTaintedField (this ._displayFinishEvents);
73171
73187
  this [X3DBrowserContext_processEvents] ();
73172
73188
 
73173
73189
  for (const frameBuffer of this .getFramebuffers ())
@@ -73175,7 +73191,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73175
73191
 
73176
73192
  this [_displayTime] .stop ();
73177
73193
 
73178
- this .addTaintedField (this ._endEvents);
73194
+ this .addTaintedField (this ._finishEvents);
73179
73195
  this [X3DBrowserContext_processEvents] ();
73180
73196
 
73181
73197
  // Finish
@@ -77103,7 +77119,7 @@ Object .assign (Object .setPrototypeOf (Cone .prototype, Rendering_X3DGeometryNo
77103
77119
  else
77104
77120
  {
77105
77121
  this .getMin () .set (-bottomRadius, y2, -bottomRadius);
77106
- this .getMax () .set ( bottomRadius, y1, bottomRadius);
77122
+ this .getMax () .set ( bottomRadius, y1, bottomRadius);
77107
77123
  }
77108
77124
  },
77109
77125
  });
@@ -77255,19 +77271,16 @@ Object .assign (Object .setPrototypeOf (Cylinder .prototype, Rendering_X3DGeomet
77255
77271
  this .getMin () .set (0);
77256
77272
  this .getMax () .set (0);
77257
77273
  }
77258
-
77259
77274
  else if (!this ._top .getValue () && !this ._side .getValue ())
77260
77275
  {
77261
77276
  this .getMin () .set (-radius, y2, -radius);
77262
77277
  this .getMax () .set ( radius, y2, radius);
77263
77278
  }
77264
-
77265
77279
  else if (!this ._bottom .getValue () && !this ._side .getValue ())
77266
77280
  {
77267
77281
  this .getMin () .set (-radius, y1, -radius);
77268
77282
  this .getMax () .set ( radius, y1, radius);
77269
77283
  }
77270
-
77271
77284
  else
77272
77285
  {
77273
77286
  this .getMin () .set (-radius, y2, -radius);
@@ -84095,23 +84108,25 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84095
84108
  geometryNode ._normalPerVertex = smooth;
84096
84109
  }
84097
84110
  },
84098
- unloadData ()
84111
+ unlockGeometry ()
84099
84112
  {
84100
84113
  if (this .geometryNode)
84101
84114
  this .geometryNode [_lock] = false;
84102
-
84115
+ },
84116
+ unloadData ()
84117
+ {
84103
84118
  this .fileLoader ?.abort ();
84119
+ this .unlockGeometry ();
84104
84120
  this .setInternalScene (null);
84105
84121
  },
84106
84122
  loadData ()
84107
84123
  {
84108
84124
  const cache = this .getBrowser () .getBrowserOption ("Cache");
84109
84125
 
84110
- if (this .geometryNode)
84111
- this .geometryNode [_lock] = false;
84112
-
84113
84126
  this .fileLoader ?.abort ();
84114
84127
 
84128
+ this .unlockGeometry ();
84129
+
84115
84130
  this .fileLoader = new InputOutput_FileLoader (this, { cacheScene: cache })
84116
84131
  .createX3DFromURL (this ._url, null, this .setInternalScene .bind (this));
84117
84132
  },
@@ -84234,8 +84249,7 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84234
84249
  { },
84235
84250
  dispose ()
84236
84251
  {
84237
- if (this .geometryNode)
84238
- this .geometryNode [_lock] = false;
84252
+ this .unlockGeometry ();
84239
84253
 
84240
84254
  Networking_X3DUrlObject .prototype .dispose .call (this);
84241
84255
  Rendering_X3DGeometryNode .prototype .dispose .call (this);
@@ -91546,8 +91560,8 @@ const PNGMedia_default_ = PNGMedia;
91546
91560
 
91547
91561
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91548
91562
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91549
- /* provided dependency */ var SuperGif = __webpack_require__(16);
91550
- /* provided dependency */ var APNG = __webpack_require__(698);
91563
+ /* provided dependency */ var SuperGif = __webpack_require__(802);
91564
+ /* provided dependency */ var APNG = __webpack_require__(528);
91551
91565
 
91552
91566
 
91553
91567
 
@@ -94191,7 +94205,7 @@ const QuickSort_default_ = QuickSort;
94191
94205
 
94192
94206
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94193
94207
  ;// ./src/lib/libtess.js
94194
- /* provided dependency */ var libtess_libtess = __webpack_require__(402);
94208
+ /* provided dependency */ var libtess_libtess = __webpack_require__(628);
94195
94209
  const libtess_default_ = libtess_libtess;
94196
94210
  ;
94197
94211