x_ite 16.4.1 → 16.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  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 +199 -199
  53. package/dist/x_ite.min.js +2 -2
  54. package/dist/x_ite.min.mjs +2 -2
  55. package/dist/x_ite.mjs +199 -199
  56. package/dist/x_ite.zip +0 -0
  57. package/package.json +6 -6
package/dist/x_ite.mjs CHANGED
@@ -1,7 +1,7 @@
1
- /* X_ITE v16.4.1 */
1
+ /* X_ITE v16.4.2 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 16
4
+ /***/ 8
5
5
  (module, exports) {
6
6
 
7
7
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -1006,7 +1006,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
1006
1006
 
1007
1007
  /***/ },
1008
1008
 
1009
- /***/ 698
1009
+ /***/ 618
1010
1010
  (module) {
1011
1011
 
1012
1012
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -2002,7 +2002,7 @@ return /******/ (function(modules) { // webpackBootstrap
2002
2002
 
2003
2003
  /***/ },
2004
2004
 
2005
- /***/ 402
2005
+ /***/ 981
2006
2006
  (module) {
2007
2007
 
2008
2008
  /**
@@ -18212,12 +18212,6 @@ function X3DBaseNode (executionContext, browser = executionContext .getBrowser (
18212
18212
 
18213
18213
  for (const fieldDefinition of this [_fieldDefinitions])
18214
18214
  this .addPredefinedField (fieldDefinition);
18215
-
18216
- // Create events.
18217
-
18218
- this .addChildObjects (Base_X3DConstants .outputOnly, "name_changed", new x_ite_Fields .SFTime (),
18219
- Base_X3DConstants .outputOnly, "typeName_changed", new x_ite_Fields .SFTime (),
18220
- Base_X3DConstants .outputOnly, "parents_changed", new x_ite_Fields .SFTime ());
18221
18215
  }
18222
18216
 
18223
18217
  Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObject .prototype),
@@ -18227,7 +18221,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18227
18221
  {
18228
18222
  Base_X3DChildObject .prototype .setName .call (this, value);
18229
18223
 
18230
- this ._name_changed = Date .now () / 1000;
18224
+ this ._name_changed ?.setValue (Date .now () / 1000);
18231
18225
  },
18232
18226
  getBrowser ()
18233
18227
  {
@@ -18318,37 +18312,30 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18318
18312
  /// Sets the own live state of this node. Setting the live state to false
18319
18313
  /// temporarily disables this node completely.
18320
18314
 
18321
- this [_live] = !!value .valueOf ();
18315
+ value = !! value .valueOf ();
18316
+
18317
+ if (this [_live] === value)
18318
+ return;
18319
+
18320
+ this [_live] = value;
18322
18321
 
18323
18322
  this [_set_live__] ();
18324
18323
  },
18325
- getLive: (() =>
18324
+ getLive ()
18326
18325
  {
18327
- function getLive ()
18328
- {
18329
- return this ._live;
18330
- }
18326
+ /// Returns the live event of this node.
18331
18327
 
18332
- return function ()
18328
+ if (!this ._live)
18333
18329
  {
18334
- /// Returns the live event of this node.
18335
-
18336
- // Change function.
18337
-
18338
- Object .defineProperty (this, "getLive",
18339
- {
18340
- value: getLive,
18341
- configurable: true,
18342
- });
18343
-
18344
18330
  // Add isLive event.
18345
18331
 
18346
- this .addChildObjects (Base_X3DConstants .outputOnly, "live", new x_ite_Fields .SFBool (this .checkLiveState ()));
18332
+ this .addChildObject (Base_X3DConstants .outputOnly, "live", new x_ite_Fields .SFBool (this .checkLiveState ()));
18347
18333
 
18348
18334
  // Event processing is done manually and immediately, so:
18335
+
18349
18336
  this ._live .removeParent (this);
18350
18337
 
18351
- // Connect to execution context.
18338
+ // Connect interests.
18352
18339
 
18353
18340
  if (this .getOuterNode ?.())
18354
18341
  this .getOuterNode () .getLive () .addInterest (_set_live__, this);
@@ -18358,12 +18345,12 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18358
18345
 
18359
18346
  else if (!this [_executionContext] && this !== this [_browser])
18360
18347
  this [_browser] .getLive () .addInterest (_set_live__, this);
18348
+ }
18361
18349
 
18362
- // Return field.
18350
+ // Return field.
18363
18351
 
18364
- return this ._live;
18365
- };
18366
- })(),
18352
+ return this ._live;
18353
+ },
18367
18354
  checkLiveState ()
18368
18355
  {
18369
18356
  /// Determines the live state of this node.
@@ -18379,29 +18366,22 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18379
18366
 
18380
18367
  return this [_live];
18381
18368
  },
18382
- [_set_live__] ()
18369
+ [_set_live__] (event)
18383
18370
  {
18384
18371
  const live = this ._live;
18385
18372
 
18386
18373
  if (!live)
18387
18374
  return;
18388
18375
 
18389
- if (this .checkLiveState ())
18390
- {
18391
- if (live .getValue ())
18392
- return;
18376
+ const state = this .checkLiveState ();
18393
18377
 
18394
- live .set (true);
18395
- live .processEvent ();
18396
- }
18397
- else
18398
- {
18399
- if (live .getValue ())
18400
- {
18401
- live .set (false);
18402
- live .processEvent ();
18403
- }
18404
- }
18378
+ if (event && live .equals (state))
18379
+ return;
18380
+
18381
+ // Get informed when `isLive ()` and `getLive().getValue()` change.
18382
+
18383
+ live .set (state);
18384
+ live .processEvent ();
18405
18385
  },
18406
18386
  addChildObjects (... args /* accessType, name, field, ... */)
18407
18387
  {
@@ -18415,17 +18395,21 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18415
18395
  this [_childObjects] .push (field);
18416
18396
 
18417
18397
  field .setPrivate (true);
18418
- field .setTainted (true);
18398
+ field .setTainted (!this [_initialized]);
18419
18399
  field .addParent (this);
18420
18400
  field .setName (name);
18421
18401
  field .setAccessType (accessType);
18422
18402
 
18423
- Object .defineProperty (this, `_${name}`,
18403
+ const propertyName = `_${name}`;
18404
+
18405
+ Object .defineProperty (this, propertyName,
18424
18406
  {
18425
18407
  get () { return field; },
18426
18408
  set (value) { field .setValue (value); },
18427
18409
  configurable: true,
18428
18410
  });
18411
+
18412
+ return this [propertyName];
18429
18413
  },
18430
18414
  getFieldDefinition (name)
18431
18415
  {
@@ -18714,7 +18698,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18714
18698
  this [_executionContext] ._bbox_changed = time;
18715
18699
  }
18716
18700
 
18717
- this ._parents_changed = time;
18701
+ this ._parents_changed ?.setValue (time);
18718
18702
  },
18719
18703
  dispose ()
18720
18704
  {
@@ -18781,15 +18765,27 @@ Object .defineProperties (X3DBaseNode .prototype,
18781
18765
  {
18782
18766
  name_changed:
18783
18767
  {
18784
- get () { return this ._name_changed; },
18768
+ get ()
18769
+ {
18770
+ return this ._name_changed
18771
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "name_changed", new x_ite_Fields .SFTime ());
18772
+ },
18785
18773
  },
18786
18774
  typeName_changed:
18787
18775
  {
18788
- get () { return this ._typeName_changed; },
18776
+ get ()
18777
+ {
18778
+ return this ._typeName_changed
18779
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "typeName_changed", new x_ite_Fields .SFTime ());
18780
+ },
18789
18781
  },
18790
18782
  parents_changed:
18791
18783
  {
18792
- get () { return this ._parents_changed; },
18784
+ get ()
18785
+ {
18786
+ return this ._parents_changed
18787
+ ?? this .addChildObject (Base_X3DConstants .outputOnly, "parents_changed", new x_ite_Fields .SFTime ());
18788
+ },
18793
18789
  },
18794
18790
  });
18795
18791
 
@@ -18869,7 +18865,7 @@ const Legacy_default_ = Legacy;
18869
18865
 
18870
18866
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18871
18867
  ;// ./src/x_ite/BROWSER_VERSION.js
18872
- const BROWSER_VERSION_default_ = "16.4.1";
18868
+ const BROWSER_VERSION_default_ = "16.4.2";
18873
18869
  ;
18874
18870
 
18875
18871
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -24063,7 +24059,7 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24063
24059
  {
24064
24060
  this [_importedName] = value;
24065
24061
 
24066
- this ._name_changed = Date .now () / 1000;
24062
+ this ._name_changed ?.setValue (Date .now () / 1000);
24067
24063
  },
24068
24064
  ... Object .fromEntries ([
24069
24065
  ["getComponentInfo", "componentInfo"],
@@ -24110,7 +24106,7 @@ Object .assign (Object .setPrototypeOf (X3DImportedNodeProxy .prototype, Core_X3
24110
24106
  if (this [_importedNode] ?.getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
24111
24107
  this [X3DImportedNodeProxy_type] = this .getSharedNode () ?.constructor ?? this [X3DImportedNodeProxy_type];
24112
24108
 
24113
- this ._typeName_changed = Date .now () / 1000;
24109
+ this ._typeName_changed ?.setValue (Date .now () / 1000);
24114
24110
 
24115
24111
  Base_X3DChildObject .prototype .addEvent .call (this);
24116
24112
  },
@@ -24964,7 +24960,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
24964
24960
 
24965
24961
  const oldProtoNode = this [_protoNode];
24966
24962
 
24967
- oldProtoNode ._name_changed .removeFieldInterest (this ._typeName_changed);
24963
+ oldProtoNode .name_changed .removeFieldInterest (this .typeName_changed);
24968
24964
  oldProtoNode ._updateInstances .removeInterest ("construct", this);
24969
24965
  oldProtoNode ._updateInstances .removeInterest ("update", this);
24970
24966
 
@@ -24974,7 +24970,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
24974
24970
  this [X3DPrototypeInstance_fieldDefinitions] = protoNode .getFieldDefinitions ();
24975
24971
  this [_protoFields] = Array .from (protoNode .getUserDefinedFields ());
24976
24972
 
24977
- protoNode ._name_changed .addFieldInterest (this ._typeName_changed);
24973
+ protoNode .name_changed .addFieldInterest (this .typeName_changed);
24978
24974
 
24979
24975
  construct ? this .construct () : this .update ();
24980
24976
  },
@@ -25401,7 +25397,7 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
25401
25397
  {
25402
25398
  const protoNode = this [_protoNode];
25403
25399
 
25404
- protoNode ._name_changed .removeFieldInterest (this ._typeName_changed);
25400
+ protoNode .name_changed .removeFieldInterest (this .typeName_changed);
25405
25401
  protoNode ._updateInstances .removeInterest ("construct", this);
25406
25402
  protoNode ._updateInstances .removeInterest ("update", this);
25407
25403
 
@@ -31170,7 +31166,7 @@ const Plane3_default_ = Plane3;
31170
31166
 
31171
31167
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31172
31168
  ;// ./src/standard/Math/Geometry/Triangle3.js
31173
- /* provided dependency */ var libtess = __webpack_require__(402);
31169
+ /* provided dependency */ var libtess = __webpack_require__(981);
31174
31170
 
31175
31171
 
31176
31172
  const Triangle3 =
@@ -35525,22 +35521,6 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35525
35521
  // With screen matrix applied.
35526
35522
  return this .bbox;
35527
35523
  },
35528
- setBBox (bbox)
35529
- {
35530
- if (bbox .equals (this .bbox))
35531
- return;
35532
-
35533
- const { min, max } = this;
35534
-
35535
- bbox .getExtents (min, max);
35536
-
35537
- this .bbox .assign (bbox);
35538
- this .planes .forEach ((plane, i) => plane .set (i % 2 ? min : max, boxNormals [i]));
35539
-
35540
- this ._bbox_changed .addEvent ();
35541
-
35542
- this .getExecutionContext () ._bbox_changed = Date .now () / 1000;
35543
- },
35544
35524
  getMin ()
35545
35525
  {
35546
35526
  // With screen matrix applied.
@@ -35551,10 +35531,6 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35551
35531
  // With screen matrix applied.
35552
35532
  return this .max;
35553
35533
  },
35554
- getMatrix ()
35555
- {
35556
- return Numbers_Matrix4 .IDENTITY;
35557
- },
35558
35534
  isSolid ()
35559
35535
  {
35560
35536
  return this .solid;
@@ -35913,16 +35889,16 @@ Object .assign (Object .setPrototypeOf (X3DGeometryNode .prototype, Core_X3DNode
35913
35889
  vertices = this .vertices .getValue (),
35914
35890
  { min, max } = this;
35915
35891
 
35916
- if (vertices .length)
35892
+ if (min .x === Number .POSITIVE_INFINITY)
35917
35893
  {
35918
- if (min .x === Number .POSITIVE_INFINITY)
35894
+ if (vertices .length)
35919
35895
  this .bbox .setArray (vertices, 4) .getExtents (min, max);
35920
35896
  else
35921
- this .bbox .setExtents (min, max);
35897
+ this .bbox .setExtents (min .set (0), max .set (0));
35922
35898
  }
35923
35899
  else
35924
35900
  {
35925
- this .bbox .setExtents (min .set (0), max .set (0));
35901
+ this .bbox .setExtents (min, max);
35926
35902
  }
35927
35903
 
35928
35904
  for (let i = 0; i < 5; ++ i)
@@ -36510,7 +36486,6 @@ const AlphaMode_default_ = Object .assign (new Map (Object .entries (AlphaMode))
36510
36486
 
36511
36487
 
36512
36488
 
36513
-
36514
36489
  function GeometryContext (options = { })
36515
36490
  {
36516
36491
  Object .assign (this,
@@ -36533,10 +36508,6 @@ function GeometryContext (options = { })
36533
36508
 
36534
36509
  Object .assign (GeometryContext .prototype,
36535
36510
  {
36536
- getMatrix ()
36537
- {
36538
- return Numbers_Matrix4 .IDENTITY;
36539
- },
36540
36511
  getTextureCoordinateMapping ()
36541
36512
  {
36542
36513
  return this .textureCoordinateMapping;
@@ -47917,7 +47888,7 @@ const Bezier_default_ = Bezier;
47917
47888
 
47918
47889
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47919
47890
  ;// ./src/x_ite/Parser/SVGParser.js
47920
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(402);
47891
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(981);
47921
47892
 
47922
47893
 
47923
47894
 
@@ -51096,35 +51067,18 @@ const X3DWorld_default_ = X3DWorld;
51096
51067
 
51097
51068
 
51098
51069
 
51070
+ const MAX_CACHED_SCENES = 64;
51099
51071
 
51100
- const foreignMimeType = new Set ([
51072
+ const FOREIGN_MIME_TYPES = new Set ([
51101
51073
  "text/html",
51102
51074
  "application/xhtml+xml",
51103
51075
  ]);
51104
51076
 
51105
51077
  const FileLoader_cache = Symbol .for ("X_ITE.cache");
51106
51078
 
51107
- function FileLoader (node, { cacheScene = false, dataAsString = true } = { })
51108
- {
51109
- Base_X3DObject .call (this);
51110
-
51111
- this .node = node;
51112
- this .cacheScene = cacheScene;
51113
- this .dataAsString = dataAsString;
51114
- this .browser = node .getBrowser ();
51115
- this .executionContext = node .getExecutionContext ();
51116
- this .target = "";
51117
- this .url = [ ];
51118
- this .controller = new AbortController ();
51119
- this .candidateURL = "";
51120
- this .resolvedURL = null;
51121
- this .attempts = [ ];
51122
- }
51123
-
51124
- Object .assign (FileLoader,
51079
+ class FileLoader
51125
51080
  {
51126
- sceneCache: new Map (),
51127
- loadDocument (node, url, options)
51081
+ static loadDocument (node, url, options)
51128
51082
  {
51129
51083
  return new Promise ((resolve, reject) => new FileLoader (node, options) .loadDocument (url, (data, fileURL) =>
51130
51084
  {
@@ -51133,29 +51087,67 @@ Object .assign (FileLoader,
51133
51087
 
51134
51088
  reject ();
51135
51089
  }));
51136
- },
51137
- });
51090
+ }
51091
+
51092
+ static #sceneCache = new Map ();
51093
+
51094
+ static addScene (url, promise)
51095
+ {
51096
+ // Delete last used scene.
51097
+ if (this .#sceneCache .size >= MAX_CACHED_SCENES)
51098
+ this .#sceneCache .delete (this .#sceneCache .keys () .next () .value);
51099
+
51100
+ // Add new scene.
51101
+ this .#sceneCache .set (url, promise);
51102
+ }
51103
+
51104
+ static getScene (url)
51105
+ {
51106
+ const promise = this .#sceneCache .get (url);
51107
+
51108
+ // Move scene to the end of the list.
51109
+ this .#sceneCache .delete (url);
51110
+ this .#sceneCache .set (url, promise);
51111
+
51112
+ return promise;
51113
+ }
51114
+
51115
+ constructor (node, { cacheScene = false, dataAsString = true } = { })
51116
+ {
51117
+ this .node = node;
51118
+ this .cacheScene = cacheScene;
51119
+ this .dataAsString = dataAsString;
51120
+ this .browser = node .getBrowser ();
51121
+ this .executionContext = node .getExecutionContext ();
51122
+ this .target = "";
51123
+ this .url = [ ];
51124
+ this .controller = new AbortController ();
51125
+ this .candidateURL = "";
51126
+ this .resolvedURL = null;
51127
+ this .attempts = [ ];
51128
+ }
51138
51129
 
51139
- Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .prototype),
51140
- {
51141
51130
  isPrivate ()
51142
51131
  {
51143
51132
  // Don't count for loading objects.
51144
51133
  return true;
51145
- },
51134
+ }
51135
+
51146
51136
  abort ()
51147
51137
  {
51148
51138
  this .url .length = 0;
51149
51139
 
51150
51140
  this .controller .abort ();
51151
- },
51141
+ }
51142
+
51152
51143
  getBaseURL ()
51153
51144
  {
51154
51145
  if (this .node instanceof Execution_X3DWorld)
51155
51146
  return this .browser .getBaseURL ();
51156
51147
 
51157
51148
  return this .executionContext .getBaseURL ();
51158
- },
51149
+ }
51150
+
51159
51151
  getTarget (parameters)
51160
51152
  {
51161
51153
  for (const parameter of parameters)
@@ -51170,7 +51162,8 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51170
51162
  }
51171
51163
 
51172
51164
  return "";
51173
- },
51165
+ }
51166
+
51174
51167
  createX3DFromString (worldURL, string = "", resolve, reject)
51175
51168
  {
51176
51169
  try
@@ -51196,12 +51189,14 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51196
51189
  else
51197
51190
  throw error;
51198
51191
  }
51199
- },
51192
+ }
51193
+
51200
51194
  setScene (scene, resolve, reject)
51201
51195
  {
51202
51196
  scene ._loadCount .addInterest ("set_loadCount__", this, scene, resolve, reject);
51203
51197
  scene ._loadCount .addEvent ();
51204
- },
51198
+ }
51199
+
51205
51200
  async set_loadCount__ (scene, resolve, reject)
51206
51201
  {
51207
51202
  try
@@ -51218,7 +51213,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51218
51213
  if (this .cacheScene)
51219
51214
  scene [FileLoader_cache] = true;
51220
51215
 
51221
- this .resolve ?.(scene);
51216
+ this .cacheResolve ?.(scene);
51222
51217
  resolve (scene);
51223
51218
  }
51224
51219
  catch (error)
@@ -51231,10 +51226,11 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51231
51226
 
51232
51227
  if (DEVELOPMENT)
51233
51228
  {
51234
- if (this .resolvedURL .protocol !== "data:")
51235
- console .info (`Done loading scene '${decodeURI (this .resolvedURL)}'.`);
51229
+ if (this .resolvedURL ?.protocol !== "data:")
51230
+ console .info (`Done loading scene '${decodeURI (this .resolvedURL ?? "<inline scene>")}'.`);
51236
51231
  }
51237
- },
51232
+ }
51233
+
51238
51234
  createX3DFromURL (url, parameter, callback, bindViewpoint, foreign)
51239
51235
  {
51240
51236
  this .sceneCallback = callback;
@@ -51243,18 +51239,20 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51243
51239
  this .target = this .getTarget (parameter || new x_ite_Fields .MFString ());
51244
51240
 
51245
51241
  return this .loadDocument (url, this .createX3DFromURLAsync .bind (this, callback));
51246
- },
51242
+ }
51243
+
51247
51244
  createX3DFromURLAsync (callback, data)
51248
51245
  {
51249
51246
  if (data === null)
51250
51247
  callback (null);
51251
51248
  else
51252
51249
  this .createX3DFromString (this .resolvedURL, data, callback, this .loadDocumentError .bind (this));
51253
- },
51250
+ }
51251
+
51254
51252
  loadDocument (url, callback)
51255
51253
  {
51256
- this .url = url .slice ();
51257
- this .callback = callback;
51254
+ this .url = url .slice ();
51255
+ this .dataCallback = callback;
51258
51256
 
51259
51257
  this .attempts .length = 0;
51260
51258
 
@@ -51263,7 +51261,8 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51263
51261
 
51264
51262
  this .loadDocumentAsync (String (this .url .shift ()))
51265
51263
  .catch (this .loadDocumentError .bind (this));
51266
- },
51264
+ }
51265
+
51267
51266
  async loadDocumentAsync (url)
51268
51267
  {
51269
51268
  // Not every candidate reaches URL resolution, so resolvedURL stays null until it
@@ -51281,7 +51280,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51281
51280
  const result = url .match (/^\s*(?:ecmascript|javascript|vrmlscript):/s);
51282
51281
 
51283
51282
  if (result)
51284
- return await this .callback (url .substring (result [0] .length));
51283
+ return await this .dataCallback (url .substring (result [0] .length));
51285
51284
  }
51286
51285
 
51287
51286
  this .resolvedURL = new URL (url, this .getBaseURL ());
@@ -51300,7 +51299,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51300
51299
  data = helper.try (() => decodeURIComponent (data)) ?? data; // Decode data.
51301
51300
  data = data .replace (/^/, ""); // Remove BOM.
51302
51301
 
51303
- return await this .callback (data);
51302
+ return await this .dataCallback (data);
51304
51303
  }
51305
51304
  }
51306
51305
 
@@ -51343,13 +51342,13 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51343
51342
 
51344
51343
  cacheURL .hash = "";
51345
51344
 
51346
- const promise = FileLoader .sceneCache .get (cacheURL .href);
51345
+ const promise = FileLoader .getScene (cacheURL .href);
51347
51346
 
51348
51347
  if (promise)
51349
51348
  {
51350
51349
  const scene = await promise;
51351
51350
 
51352
- scene .setWorldURL (this .resolvedURL .href);
51351
+ scene .setWorldURL (this .resolvedURL);
51353
51352
 
51354
51353
  return this .sceneCallback (scene);
51355
51354
  }
@@ -51357,9 +51356,9 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51357
51356
  {
51358
51357
  const { promise, resolve } = Promise .withResolvers ();
51359
51358
 
51360
- this .resolve = resolve;
51359
+ this .cacheResolve = resolve;
51361
51360
 
51362
- FileLoader .sceneCache .set (cacheURL .href, promise);
51361
+ FileLoader .addScene (cacheURL .href, promise);
51363
51362
  }
51364
51363
  }
51365
51364
 
@@ -51374,12 +51373,13 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51374
51373
  {
51375
51374
  // console .log (mimeType);
51376
51375
 
51377
- if (foreignMimeType .has (mimeType))
51376
+ if (FOREIGN_MIME_TYPES .has (mimeType))
51378
51377
  return this .foreign (this .resolvedURL .href, this .target);
51379
51378
  }
51380
51379
 
51381
- await this .callback (await helper.gunzip (await this .getBlob (response)), this .resolvedURL);
51382
- },
51380
+ await this .dataCallback (await helper.gunzip (await this .getBlob (response)), this .resolvedURL);
51381
+ }
51382
+
51383
51383
  async getBlob (response)
51384
51384
  {
51385
51385
  const contentLength = parseInt (response .headers .get ("x-file-size"))
@@ -51412,14 +51412,16 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51412
51412
  }
51413
51413
 
51414
51414
  return await new Blob (values);
51415
- },
51415
+ }
51416
+
51416
51417
  checkResponse (response)
51417
51418
  {
51418
51419
  if (response .ok)
51419
51420
  return response;
51420
51421
 
51421
51422
  throw new Error (response .statusText || response .status);
51422
- },
51423
+ }
51424
+
51423
51425
  loadDocumentError (error)
51424
51426
  {
51425
51427
  // Output error.
@@ -51435,10 +51437,11 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51435
51437
  }
51436
51438
  else
51437
51439
  {
51438
- this .resolve ?.(null);
51439
- this .callback (null);
51440
+ this .cacheResolve ?.(null);
51441
+ this .dataCallback (null);
51440
51442
  }
51441
- },
51443
+ }
51444
+
51442
51445
  printError (error)
51443
51446
  {
51444
51447
  if (!error)
@@ -51448,7 +51451,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51448
51451
  // script URL — have no resolved URL, and are reported by their authored value.
51449
51452
 
51450
51453
  const
51451
- typeName = this .node instanceof Execution_X3DWorld ? "" : ` for ${this .node .getTypeName ()}`,
51454
+ typeName = this .node instanceof Execution_X3DWorld ? "" : `${this .node .getTypeName ()}: `,
51452
51455
  dataURL = this .resolvedURL ?.protocol === "data:",
51453
51456
  resolved = this .resolvedURL && !dataURL ? `${helper.try (() => decodeURI (this .resolvedURL)) ?? this .resolvedURL}` : "",
51454
51457
  subject = !this .candidateURL .length ? "empty URL"
@@ -51462,39 +51465,38 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
51462
51465
  // failed only once every candidate has been tried.
51463
51466
 
51464
51467
  if (this .url .length)
51465
- return console .warn (`Couldn't load ${subject}${typeName}, trying URL ${this .attempts .length + 1} of ${this .attempts .length + this .url .length}.`, error);
51468
+ return console .warn (`${typeName}Couldn't load ${subject}, trying URL ${this .attempts .length + 1} of ${this .attempts .length + this .url .length}.`, error);
51466
51469
 
51467
51470
  if (this .attempts .length === 1)
51468
- return console .error (`Couldn't load ${subject}${typeName}.`, error);
51471
+ return console .error (`${typeName}Couldn't load ${subject}.`, error);
51469
51472
 
51470
51473
  // Pass the errors themselves along with the summary, so their stacks and context
51471
51474
  // stay inspectable.
51472
51475
 
51473
- console .error (`Couldn't load any of the ${this .attempts .length} URLs${typeName}, tried in this order:\n`
51476
+ console .error (`${typeName}Couldn't load any of the ${this .attempts .length} URLs, tried in this order:\n`
51474
51477
  + this .attempts
51475
51478
  .map (({ url, resolved, error }, i) =>
51476
51479
  ` ${i + 1}. '${this .truncate (url)}'${resolved && resolved !== url ? ` → ${this .truncate (resolved)}` : ""}: ${this .describe (error)}`)
51477
51480
  .join ("\n") + "\n",
51478
51481
  ... this .attempts .map (({ error }) => error));
51479
- },
51482
+ }
51483
+
51480
51484
  /**
51481
51485
  * Keep diagnostics readable when a candidate is a long data URL.
51482
51486
  */
51483
51487
  truncate (string, length = 120)
51484
51488
  {
51485
51489
  return string .length > length ? `${string .substring (0, length)}…` : string;
51486
- },
51490
+ }
51491
+
51487
51492
  /**
51488
51493
  * Not every thrown value is an Error, so don't summarize one as [object Object].
51489
51494
  */
51490
51495
  describe (error)
51491
51496
  {
51492
51497
  return error ?.message ?? (typeof error === "object" ? helper.try (() => JSON .stringify (error)) : null) ?? String (error);
51493
- },
51494
- });
51495
-
51496
- for (const key of Object .keys (FileLoader .prototype))
51497
- Object .defineProperty (FileLoader .prototype, key, { enumerable: false });
51498
+ }
51499
+ }
51498
51500
 
51499
51501
  const FileLoader_default_ = FileLoader;
51500
51502
  ;
@@ -54659,7 +54661,7 @@ function X3DCoreContext (element)
54659
54661
  {
54660
54662
  const link = document .createElement ("link");
54661
54663
 
54662
- link .integrity = "sha384-ghtkTig2bXHd5VgQPGzWUh9HuPE5g2Mb4S3c3Yap2DRcv41187XE74CWLQUKkwO2";
54664
+ link .integrity = "sha384-fEzovT4J83tA9kKXGV4bUgl6uLo/jpIuUjb7ogp7mj1miyDlddDqWywNrpuG5Yzv";
54663
54665
  link .rel = "stylesheet";
54664
54666
  link .crossOrigin = "anonymous";
54665
54667
  link .onload = resolve;
@@ -61893,7 +61895,7 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
61893
61895
  this .addFly ();
61894
61896
 
61895
61897
  if (browser .getBrowserOption ("Rubberband"))
61896
- browser .finishedEvents () .addInterest ("display", this, MOVE);
61898
+ browser .displayFinishEvents () .addInterest ("display", this, MOVE);
61897
61899
  }
61898
61900
 
61899
61901
  this ._isActive = true;
@@ -61923,7 +61925,7 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
61923
61925
  this .addPan ();
61924
61926
 
61925
61927
  if (browser .getBrowserOption ("Rubberband"))
61926
- browser .finishedEvents () .addInterest ("display", this, PAN);
61928
+ browser .displayFinishEvents () .addInterest ("display", this, PAN);
61927
61929
 
61928
61930
  this ._isActive = true;
61929
61931
  break;
@@ -62389,9 +62391,9 @@ Object .assign (Object .setPrototypeOf (X3DFlyViewer .prototype, Navigation_X3DV
62389
62391
 
62390
62392
  browser .addBrowserEvent ();
62391
62393
 
62392
- browser .prepareEvents () .removeInterest ("fly", this);
62393
- browser .prepareEvents () .removeInterest ("pan", this);
62394
- browser .finishedEvents () .removeInterest ("display", this);
62394
+ browser .prepareEvents () .removeInterest ("fly", this);
62395
+ browser .prepareEvents () .removeInterest ("pan", this);
62396
+ browser .displayFinishEvents () .removeInterest ("display", this);
62395
62397
 
62396
62398
  this .orientationChaser ._value_changed .removeInterest ("set_orientationOffset__", this);
62397
62399
 
@@ -65047,7 +65049,7 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
65047
65049
  hit .shapeNode = shapeNode;
65048
65050
 
65049
65051
  hit .viewMatrix .assign (renderObject .getViewpoint () .getViewMatrix ());
65050
- hit .modelViewMatrix .assign (geometryContext .getMatrix ()) .inverse () .multRight (modelViewMatrix);
65052
+ hit .modelViewMatrix .assign (modelViewMatrix);
65051
65053
 
65052
65054
  // A ParticleSystem has only a geometry context.
65053
65055
  // Hit normal must be normalized if used.
@@ -72957,16 +72959,16 @@ function X3DBrowserContext (element)
72957
72959
  for (const browserContext of browserContexts)
72958
72960
  browserContext .call (this, element);
72959
72961
 
72960
- this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72961
- Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72962
- Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72963
- Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
72964
- Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72965
- Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72966
- Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72967
- Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72968
- Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
72969
- Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
72962
+ this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72963
+ Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72964
+ Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72965
+ Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
72966
+ Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72967
+ Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72968
+ Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72969
+ Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72970
+ Base_X3DConstants .outputOnly, "displayFinishEvents", new x_ite_Fields .SFTime (),
72971
+ Base_X3DConstants .outputOnly, "finishEvents", new x_ite_Fields .SFTime ());
72970
72972
 
72971
72973
  this [X3DBrowserContext_tainted] = false;
72972
72974
  this [_previousTime] = 0;
@@ -73020,13 +73022,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73020
73022
  {
73021
73023
  return this ._displayEvents;
73022
73024
  },
73023
- finishedEvents ()
73025
+ displayFinishEvents ()
73024
73026
  {
73025
- return this ._finishedEvents;
73027
+ return this ._displayFinishEvents;
73026
73028
  },
73027
- endEvents ()
73029
+ finishEvents ()
73028
73030
  {
73029
- return this ._endEvents;
73031
+ return this ._finishEvents;
73030
73032
  },
73031
73033
  getBrowser ()
73032
73034
  {
@@ -73072,13 +73074,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73072
73074
  {
73073
73075
  const key = Symbol ();
73074
73076
 
73075
- this .addBrowserEvent ();
73076
-
73077
- this ._endEvents .addFieldCallback (key, () =>
73077
+ this ._finishEvents .addFieldCallback (key, () =>
73078
73078
  {
73079
- this ._endEvents .removeFieldCallback (key);
73079
+ this ._finishEvents .removeFieldCallback (key);
73080
73080
  resolve ();
73081
73081
  });
73082
+
73083
+ this .addBrowserEvent ();
73082
73084
  });
73083
73085
  },
73084
73086
  [_traverse] (now, frame)
@@ -73147,7 +73149,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73147
73149
 
73148
73150
  this [_world] .traverse (Rendering_TraverseType .DISPLAY);
73149
73151
 
73150
- this .addTaintedField (this ._finishedEvents);
73152
+ this .addTaintedField (this ._displayFinishEvents);
73151
73153
  this [X3DBrowserContext_processEvents] ();
73152
73154
 
73153
73155
  for (const frameBuffer of this .getFramebuffers ())
@@ -73155,7 +73157,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73155
73157
 
73156
73158
  this [_displayTime] .stop ();
73157
73159
 
73158
- this .addTaintedField (this ._endEvents);
73160
+ this .addTaintedField (this ._finishEvents);
73159
73161
  this [X3DBrowserContext_processEvents] ();
73160
73162
 
73161
73163
  // Finish
@@ -77083,7 +77085,7 @@ Object .assign (Object .setPrototypeOf (Cone .prototype, Rendering_X3DGeometryNo
77083
77085
  else
77084
77086
  {
77085
77087
  this .getMin () .set (-bottomRadius, y2, -bottomRadius);
77086
- this .getMax () .set ( bottomRadius, y1, bottomRadius);
77088
+ this .getMax () .set ( bottomRadius, y1, bottomRadius);
77087
77089
  }
77088
77090
  },
77089
77091
  });
@@ -77235,19 +77237,16 @@ Object .assign (Object .setPrototypeOf (Cylinder .prototype, Rendering_X3DGeomet
77235
77237
  this .getMin () .set (0);
77236
77238
  this .getMax () .set (0);
77237
77239
  }
77238
-
77239
77240
  else if (!this ._top .getValue () && !this ._side .getValue ())
77240
77241
  {
77241
77242
  this .getMin () .set (-radius, y2, -radius);
77242
77243
  this .getMax () .set ( radius, y2, radius);
77243
77244
  }
77244
-
77245
77245
  else if (!this ._bottom .getValue () && !this ._side .getValue ())
77246
77246
  {
77247
77247
  this .getMin () .set (-radius, y1, -radius);
77248
77248
  this .getMax () .set ( radius, y1, radius);
77249
77249
  }
77250
-
77251
77250
  else
77252
77251
  {
77253
77252
  this .getMin () .set (-radius, y2, -radius);
@@ -84075,23 +84074,25 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84075
84074
  geometryNode ._normalPerVertex = smooth;
84076
84075
  }
84077
84076
  },
84078
- unloadData ()
84077
+ unlockGeometry ()
84079
84078
  {
84080
84079
  if (this .geometryNode)
84081
84080
  this .geometryNode [_lock] = false;
84082
-
84081
+ },
84082
+ unloadData ()
84083
+ {
84083
84084
  this .fileLoader ?.abort ();
84085
+ this .unlockGeometry ();
84084
84086
  this .setInternalScene (null);
84085
84087
  },
84086
84088
  loadData ()
84087
84089
  {
84088
84090
  const cache = this .getBrowser () .getBrowserOption ("Cache");
84089
84091
 
84090
- if (this .geometryNode)
84091
- this .geometryNode [_lock] = false;
84092
-
84093
84092
  this .fileLoader ?.abort ();
84094
84093
 
84094
+ this .unlockGeometry ();
84095
+
84095
84096
  this .fileLoader = new InputOutput_FileLoader (this, { cacheScene: cache })
84096
84097
  .createX3DFromURL (this ._url, null, this .setInternalScene .bind (this));
84097
84098
  },
@@ -84214,8 +84215,7 @@ Object .assign (Object .setPrototypeOf (InlineGeometry .prototype, Rendering_X3D
84214
84215
  { },
84215
84216
  dispose ()
84216
84217
  {
84217
- if (this .geometryNode)
84218
- this .geometryNode [_lock] = false;
84218
+ this .unlockGeometry ();
84219
84219
 
84220
84220
  Networking_X3DUrlObject .prototype .dispose .call (this);
84221
84221
  Rendering_X3DGeometryNode .prototype .dispose .call (this);
@@ -91526,8 +91526,8 @@ const PNGMedia_default_ = PNGMedia;
91526
91526
 
91527
91527
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91528
91528
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91529
- /* provided dependency */ var SuperGif = __webpack_require__(16);
91530
- /* provided dependency */ var APNG = __webpack_require__(698);
91529
+ /* provided dependency */ var SuperGif = __webpack_require__(8);
91530
+ /* provided dependency */ var APNG = __webpack_require__(618);
91531
91531
 
91532
91532
 
91533
91533
 
@@ -94171,7 +94171,7 @@ const QuickSort_default_ = QuickSort;
94171
94171
 
94172
94172
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94173
94173
  ;// ./src/lib/libtess.js
94174
- /* provided dependency */ var libtess_libtess = __webpack_require__(402);
94174
+ /* provided dependency */ var libtess_libtess = __webpack_require__(981);
94175
94175
  const libtess_default_ = libtess_libtess;
94176
94176
  ;
94177
94177