x_ite 16.3.0 → 16.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) 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 +4 -2
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  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 +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  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 +1 -1
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  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 +1 -1
  37. package/dist/assets/components/TextComponent.min.js +1 -1
  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 +1 -1
  45. package/dist/assets/components/WebXRComponent.min.js +1 -1
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/example.html +1 -1
  49. package/dist/x_ite.css +1 -1
  50. package/dist/x_ite.js +230 -166
  51. package/dist/x_ite.min.js +2 -2
  52. package/dist/x_ite.min.mjs +2 -2
  53. package/dist/x_ite.mjs +230 -166
  54. package/dist/x_ite.zip +0 -0
  55. package/package.json +3 -2
package/dist/x_ite.mjs CHANGED
@@ -1,7 +1,7 @@
1
- /* X_ITE v16.3.0 */
1
+ /* X_ITE v16.3.1 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 133
4
+ /***/ 617
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
- /***/ 991
1009
+ /***/ 851
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
- /***/ 643
2005
+ /***/ 775
2006
2006
  (module) {
2007
2007
 
2008
2008
  /**
@@ -14552,12 +14552,11 @@ Object .assign (Object .setPrototypeOf (SFNode .prototype, Base_X3DField .protot
14552
14552
  },
14553
14553
  getFieldDefinition (name)
14554
14554
  {
14555
- const fieldDefinition = this .getFieldDefinitions () .get (name);
14556
-
14557
- if (fieldDefinition)
14558
- return fieldDefinition;
14555
+ const
14556
+ target = this [_target],
14557
+ node = target .getValue ();
14559
14558
 
14560
- throw new Error (`Unknown field '${name}' in node class ${this .getNodeTypeName ()}.`);
14559
+ return node .getFieldDefinition (name);
14561
14560
  },
14562
14561
  getFieldDefinitions ()
14563
14562
  {
@@ -14587,7 +14586,7 @@ Object .assign (Object .setPrototypeOf (SFNode .prototype, Base_X3DField .protot
14587
14586
 
14588
14587
  Error .captureStackTrace (target, this .getField);
14589
14588
 
14590
- console .warn ("The use of sfnode.getField(name) is deprecated. Future versions of X_ITE may remove this feature. Instead, use the sfnode.{fieldName} syntax or sfnode.addFieldCallback(key, fieldName, callback).", target .stack);
14589
+ console .warn ("The use of sfnode.getField(name) is deprecated. Future versions of X_ITE may remove this feature. Instead, use the sfnode.{fieldName} property syntax or sfnode.addFieldCallback(key, fieldName, callback).", target .stack);
14591
14590
  }
14592
14591
 
14593
14592
  const
@@ -18430,7 +18429,12 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
18430
18429
  },
18431
18430
  getFieldDefinition (name)
18432
18431
  {
18433
- return this [_fieldDefinitions] .get (name);
18432
+ const fieldDefinition = this [_fieldDefinitions] .get (name);
18433
+
18434
+ if (fieldDefinition)
18435
+ return fieldDefinition;
18436
+
18437
+ throw new Error (`Unknown field '${name}' in node class ${this .getTypeName ()}.`);
18434
18438
  },
18435
18439
  getFieldDefinitions ()
18436
18440
  {
@@ -18865,7 +18869,7 @@ const Legacy_default_ = Legacy;
18865
18869
 
18866
18870
  /* harmony default export */ const Browser_Legacy = (x_ite_Namespace .add ("Legacy", Legacy_default_));
18867
18871
  ;// ./src/x_ite/BROWSER_VERSION.js
18868
- const BROWSER_VERSION_default_ = "16.3.0";
18872
+ const BROWSER_VERSION_default_ = "16.3.1";
18869
18873
  ;
18870
18874
 
18871
18875
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -27447,9 +27451,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27447
27451
  {
27448
27452
  if (this .nodeNameId ())
27449
27453
  {
27450
- const
27451
- fromNodeId = this .result [0],
27452
- fromNode = this .getExecutionContext () .getLocalNode (fromNodeId);
27454
+ const fromNodeId = this .result [0];
27453
27455
 
27454
27456
  this .comments ();
27455
27457
 
@@ -27465,9 +27467,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27465
27467
  {
27466
27468
  if (this .nodeNameId ())
27467
27469
  {
27468
- const
27469
- toNodeId = this .result [0],
27470
- toNode = this .getExecutionContext () .getLocalNode (toNodeId);
27470
+ const toNodeId = this .result [0];
27471
27471
 
27472
27472
  this .comments ();
27473
27473
 
@@ -27477,7 +27477,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
27477
27477
  {
27478
27478
  try
27479
27479
  {
27480
- const eventInId = this .result [0];
27480
+ const
27481
+ eventInId = this .result [0],
27482
+ fromNode = this .getExecutionContext () .getLocalNode (fromNodeId),
27483
+ toNode = this .getExecutionContext () .getLocalNode (toNodeId);
27481
27484
 
27482
27485
  this .getExecutionContext () .addRoute (fromNode, eventOutId, toNode, eventInId);
27483
27486
  return true;
@@ -29762,16 +29765,16 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
29762
29765
  destinationField = xmlElement .getAttribute ("toField");
29763
29766
 
29764
29767
  if (sourceNodeName === null)
29765
- throw new Error ("Bad ROUTE statement: Expected fromNode attribute.");
29768
+ throw new Error ("Bad ROUTE specification: Expected fromNode attribute.");
29766
29769
 
29767
29770
  if (sourceField === null)
29768
- throw new Error ("Bad ROUTE statement: Expected fromField attribute.");
29771
+ throw new Error ("Bad ROUTE specification: Expected fromField attribute.");
29769
29772
 
29770
29773
  if (destinationNodeName === null)
29771
- throw new Error ("Bad ROUTE statement: Expected toNode attribute.");
29774
+ throw new Error ("Bad ROUTE specification: Expected toNode attribute.");
29772
29775
 
29773
29776
  if (destinationField === null)
29774
- throw new Error ("Bad ROUTE statement: Expected toField attribute.");
29777
+ throw new Error ("Bad ROUTE specification: Expected toField attribute.");
29775
29778
 
29776
29779
  const
29777
29780
  executionContext = this .getExecutionContext (),
@@ -31192,7 +31195,7 @@ const Plane3_default_ = Plane3;
31192
31195
 
31193
31196
  /* harmony default export */ const Geometry_Plane3 = (x_ite_Namespace .add ("Plane3", Plane3_default_));
31194
31197
  ;// ./src/standard/Math/Geometry/Triangle3.js
31195
- /* provided dependency */ var libtess = __webpack_require__(643);
31198
+ /* provided dependency */ var libtess = __webpack_require__(775);
31196
31199
 
31197
31200
 
31198
31201
  const Triangle3 =
@@ -38661,7 +38664,7 @@ const X3DSensorNode_default_ = X3DSensorNode;
38661
38664
 
38662
38665
 
38663
38666
 
38664
- function X3DTimeDependentNode (executionContext)
38667
+ function X3DTimeDependentNode (/* executionContext */)
38665
38668
  {
38666
38669
  this .addType (Base_X3DConstants .X3DTimeDependentNode);
38667
38670
 
@@ -38713,8 +38716,10 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38713
38716
  },
38714
38717
  resetElapsedTime ()
38715
38718
  {
38716
- this .start = this .getBrowser () .getCurrentTime ();
38717
- this .pause = this .getBrowser () .getCurrentTime ();
38719
+ const time = this .getBrowser () .getCurrentTime ();
38720
+
38721
+ this .start = time;
38722
+ this .pause = time;
38718
38723
  this .pauseInterval = 0;
38719
38724
  },
38720
38725
  set_live__ ()
@@ -38840,14 +38845,14 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38840
38845
 
38841
38846
  // The event order below is very important.
38842
38847
 
38843
- this ._isActive = true;
38844
- this ._elapsedTime = 0;
38848
+ this ._isActive = true;
38845
38849
 
38846
38850
  this .set_start ();
38847
38851
 
38848
38852
  if (this .getLive () .getValue ())
38849
38853
  {
38850
- this .getBrowser () .timeEvents () .addInterest ("set_time" ,this);
38854
+ this .getBrowser () .timeEvents () .addInterest ("set_time", this);
38855
+ this .getBrowser () .addBrowserEvent ();
38851
38856
  }
38852
38857
  else
38853
38858
  {
@@ -38872,7 +38877,7 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38872
38877
 
38873
38878
  this .set_pause ();
38874
38879
 
38875
- this .getBrowser () .timeEvents () .removeInterest ("set_time" ,this);
38880
+ this .getBrowser () .timeEvents () .removeInterest ("set_time", this);
38876
38881
  },
38877
38882
  do_resume ()
38878
38883
  {
@@ -38907,14 +38912,12 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38907
38912
 
38908
38913
  this .set_stop ();
38909
38914
 
38910
- this ._elapsedTime = this .getElapsedTime ();
38911
-
38912
38915
  if (this ._isPaused .getValue ())
38913
38916
  this ._isPaused = false;
38914
38917
 
38915
38918
  this ._isActive = false;
38916
38919
 
38917
- this .getBrowser () .timeEvents () .removeInterest ("set_time" ,this);
38920
+ this .getBrowser () .timeEvents () .removeInterest ("set_time", this);
38918
38921
  }
38919
38922
  },
38920
38923
  addTimeout (name, callback, startTime)
@@ -38936,19 +38939,16 @@ Object .assign (Object .setPrototypeOf (X3DTimeDependentNode .prototype, Core_X3
38936
38939
  if (!this ._enabled .getValue ())
38937
38940
  return;
38938
38941
 
38939
- if (!(this .getLive () .getValue ()))
38940
- return;
38941
-
38942
38942
  this .getBrowser () .advanceOnlyTime ();
38943
38943
 
38944
38944
  this [callback] ();
38945
38945
  },
38946
- set_loop: Function .prototype,
38947
- set_start: Function .prototype,
38948
- set_pause: Function .prototype,
38949
- set_resume: Function .prototype,
38950
- set_stop: Function .prototype,
38951
- set_time: Function .prototype,
38946
+ set_loop () { },
38947
+ set_start () { },
38948
+ set_pause () { },
38949
+ set_resume () { },
38950
+ set_stop () { },
38951
+ set_time () { },
38952
38952
  dispose ()
38953
38953
  {
38954
38954
  for (const name of [... this .timeouts .keys ()])
@@ -38979,7 +38979,9 @@ function TimeSensor (executionContext)
38979
38979
 
38980
38980
  this .addType (Base_X3DConstants .TimeSensor);
38981
38981
 
38982
- this .addChildObjects (Base_X3DConstants .inputOutput, "range", new x_ite_Fields .MFFloat (0, 0, 1)); // current, first, last (in fractions) - play range starting at current
38982
+ // Special non-public field:
38983
+ // rangeFraction, rangeStart, rangeEnd (in fractions) - play range starting at rangeFraction
38984
+ this .addChildObjects (Base_X3DConstants .inputOutput, "range", new x_ite_Fields .MFFloat (0, 0, 1));
38983
38985
 
38984
38986
  this .cycle = 0;
38985
38987
  this .interval = 0;
@@ -39015,6 +39017,10 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39015
39017
  this .fraction = Math_Algorithm .fract (fraction + this .offset);
39016
39018
  this .cycle = currentTime - (this .fraction - this .first) * cycleInterval;
39017
39019
  },
39020
+ getFraction (time)
39021
+ {
39022
+ return this .first + (this .interval ? Math_Algorithm .fract ((time - this .cycle) / this .interval) : 0) * this .scale;
39023
+ },
39018
39024
  set_cycleInterval__ ()
39019
39025
  {
39020
39026
  if (!this ._isActive .getValue ())
@@ -39032,28 +39038,56 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39032
39038
  if (this ._isPaused .getValue ())
39033
39039
  return;
39034
39040
 
39035
- this .set_fraction (this .getBrowser () .getCurrentTime ());
39041
+ this ._fraction_changed = this .fraction = this .getFraction (this .getBrowser () .getCurrentTime ());
39036
39042
  },
39037
39043
  set_start ()
39038
39044
  {
39045
+ const browser = this .getBrowser ();
39046
+
39047
+ browser .timePrepareEvents () .addInterest ("set_prepare", this);
39048
+ browser .addBrowserEvent ();
39049
+
39039
39050
  this .setRange (this ._range [0], this ._range [1], this ._range [2], true);
39040
39051
 
39041
- const time = this .getBrowser () .getCurrentTime ();
39052
+ const time = browser .getCurrentTime ();
39042
39053
 
39043
39054
  this ._time = time;
39055
+ this ._elapsedTime = 0;
39044
39056
  this ._cycleTime = time;
39045
39057
  this ._fraction_changed = this .fraction;
39058
+ this ._cycleCount = 0;
39059
+ },
39060
+ set_pause ()
39061
+ {
39062
+ this .getBrowser () .timePrepareEvents () .removeInterest ("set_prepare", this);
39046
39063
  },
39047
39064
  set_resume (/* pauseInterval */)
39048
39065
  {
39066
+ const browser = this .getBrowser ();
39067
+
39068
+ browser .timePrepareEvents () .addInterest ("set_prepare", this);
39069
+ browser .addBrowserEvent ();
39070
+
39049
39071
  this .setRange (this .fraction, this ._range [1], this ._range [2], false);
39050
39072
  },
39051
- set_fraction (time)
39073
+ set_stop ()
39074
+ {
39075
+ this .getBrowser () .timePrepareEvents () .removeInterest ("set_prepare", this);
39076
+ },
39077
+ set_prepare ()
39052
39078
  {
39053
- const fraction = this .first + (this .interval ? Math_Algorithm .fract ((time - this .cycle) / this .interval) : 0) * this .scale;
39079
+ const time = this .getBrowser () .getCurrentTime ();
39080
+
39081
+ this ._time = time;
39082
+ this ._elapsedTime = this .getElapsedTime ();
39054
39083
 
39055
- this .fraction = fraction;
39056
- this ._fraction_changed = fraction;
39084
+ if (time - this .cycle < this .interval)
39085
+ return;
39086
+
39087
+ this ._fraction_changed = this .last;
39088
+ this ._cycleCount = this ._cycleCount .getValue () + 1;
39089
+ this ._cycleComplete = true;
39090
+ this ._cycleCompleteTime = time;
39057
39091
  },
39058
39092
  set_time ()
39059
39093
  {
@@ -39061,8 +39095,6 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39061
39095
 
39062
39096
  const time = this .getBrowser () .getCurrentTime ();
39063
39097
 
39064
- this ._time = time;
39065
-
39066
39098
  if (time - this .cycle >= this .interval)
39067
39099
  {
39068
39100
  if (this ._loop .getValue ())
@@ -39071,27 +39103,18 @@ Object .assign (Object .setPrototypeOf (TimeSensor .prototype, Core_X3DSensorNod
39071
39103
  {
39072
39104
  this .cycle += this .interval * Math .floor ((time - this .cycle) / this .interval);
39073
39105
 
39074
- this ._elapsedTime = this .getElapsedTime ();
39075
- this ._cycleComplete = time;
39076
- this ._cycleTime = time;
39077
-
39078
- this .set_fraction (time);
39106
+ this ._cycleTime = time;
39107
+ this ._fraction_changed = this .fraction = this .getFraction (time);
39079
39108
  }
39080
39109
  }
39081
39110
  else
39082
39111
  {
39083
- this ._elapsedTime = this .getElapsedTime ();
39084
- this ._cycleComplete = time;
39085
- this ._fraction_changed = this .fraction = this .last;
39086
-
39087
39112
  this .stop ();
39088
39113
  }
39089
39114
  }
39090
39115
  else
39091
39116
  {
39092
- this ._elapsedTime = this .getElapsedTime ();
39093
-
39094
- this .set_fraction (time);
39117
+ this ._fraction_changed = this .fraction = this .getFraction (time);
39095
39118
  }
39096
39119
  },
39097
39120
  dispose ()
@@ -39107,22 +39130,24 @@ Object .defineProperties (TimeSensor,
39107
39130
  fieldDefinitions:
39108
39131
  {
39109
39132
  value: new Base_FieldDefinitionArray ([
39110
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
39111
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
39112
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
39113
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "cycleInterval", new x_ite_Fields .SFTime (1)),
39114
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
39115
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
39116
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
39117
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime (0)),
39118
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime (0)),
39119
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39120
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39121
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39122
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFTime ()),
39123
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39124
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39125
- new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
39133
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "metadata", new x_ite_Fields .SFNode ()),
39134
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "description", new x_ite_Fields .SFString ()),
39135
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "enabled", new x_ite_Fields .SFBool (true)),
39136
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "cycleInterval", new x_ite_Fields .SFTime (1)),
39137
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
39138
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
39139
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
39140
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "pauseTime", new x_ite_Fields .SFTime (0)),
39141
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "stopTime", new x_ite_Fields .SFTime (0)),
39142
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isPaused", new x_ite_Fields .SFBool ()),
39143
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "isActive", new x_ite_Fields .SFBool ()),
39144
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleTime", new x_ite_Fields .SFTime ()),
39145
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleComplete", new x_ite_Fields .SFBool ()), // experimental
39146
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleCompleteTime", new x_ite_Fields .SFTime ()), // experimental
39147
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "cycleCount", new x_ite_Fields .SFInt32 ()), // experimental
39148
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "fraction_changed", new x_ite_Fields .SFFloat ()),
39149
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "elapsedTime", new x_ite_Fields .SFTime ()),
39150
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "time", new x_ite_Fields .SFTime ()),
39126
39151
  ]),
39127
39152
  enumerable: true,
39128
39153
  },
@@ -46520,7 +46545,7 @@ Object .assign (Object .setPrototypeOf (STLBParser .prototype, Parser_X3DParser
46520
46545
  },
46521
46546
  header ()
46522
46547
  {
46523
- const header = helper.decodeText (this .arrayBuffer .slice (0, 80)) .trim ();
46548
+ const header = helper.decodeText (this .arrayBuffer .slice (0, 80)) .replace (/\u0000.*$/, "") .trim ();
46524
46549
 
46525
46550
  if (!header)
46526
46551
  return;
@@ -46704,7 +46729,8 @@ Object .assign (Object .setPrototypeOf (PLYAParser .prototype, Parser_X3DParser
46704
46729
  {
46705
46730
  const value = this .result [0] .trim ();
46706
46731
 
46707
- this .comments .push (value);
46732
+ if (value)
46733
+ this .comments .push (value);
46708
46734
 
46709
46735
  this .mustRotateAxes ||= !! value .match (/\b(?:Blender|Artec|Polycam)\b/i);
46710
46736
 
@@ -47916,7 +47942,7 @@ const Bezier_default_ = Bezier;
47916
47942
 
47917
47943
  /* harmony default export */ const Algorithms_Bezier = (x_ite_Namespace .add ("Bezier", Bezier_default_));
47918
47944
  ;// ./src/x_ite/Parser/SVGParser.js
47919
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(643);
47945
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(775);
47920
47946
 
47921
47947
 
47922
47948
 
@@ -52038,7 +52064,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52038
52064
  if (this [_disposed])
52039
52065
  return;
52040
52066
 
52041
- let firstError, secondError;
52067
+ const errors = [ ];
52042
52068
 
52043
52069
  try
52044
52070
  {
@@ -52050,7 +52076,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52050
52076
  }
52051
52077
  catch (error)
52052
52078
  {
52053
- firstError = error;
52079
+ errors .push (error);
52054
52080
  }
52055
52081
 
52056
52082
  try
@@ -52063,19 +52089,12 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52063
52089
  }
52064
52090
  catch (error)
52065
52091
  {
52066
- secondError = error;
52092
+ errors .push (error);
52067
52093
  }
52068
52094
 
52069
52095
  if (this [_sourceField] && this [_destinationField])
52070
52096
  {
52071
- if (this [_sourceField] .getType () !== this [_destinationField] .getType ())
52072
- throw new Error (`Bad ROUTE statement: Source field type must match destination field type of fields named "${this [_sourceField] .getName ()}" and "${this [_destinationField] .getName ()}".`);
52073
-
52074
- if (!this [_sourceField] .isOutput ())
52075
- throw new Error (`Bad ROUTE statement: Source field "${this [_sourceField] .getName ()}" must be an output.`);
52076
-
52077
- if (!this [_destinationField] .isInput ())
52078
- throw new Error (`Bad ROUTE statement: Destination field "${this [_destinationField] .getName ()}" must be an input.`);
52097
+ X3DRoute .checkFields (this [_sourceField], this [_destinationField]);
52079
52098
 
52080
52099
  this [_sourceField] .addOutputRoute (this);
52081
52100
  this [_destinationField] .addInputRoute (this);
@@ -52083,7 +52102,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52083
52102
  }
52084
52103
  else
52085
52104
  {
52086
- throw firstError ?? secondError;
52105
+ throw new AggregateError (errors, "Couldn't connect route.");
52087
52106
  }
52088
52107
  },
52089
52108
  disconnect ()
@@ -52091,8 +52110,8 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
52091
52110
  this [_sourceField] ?.removeOutputRoute (this);
52092
52111
  this [_destinationField] ?.removeInputRoute (this);
52093
52112
 
52094
- if (this [_sourceField] && this [_destinationField])
52095
- this [_sourceField] .removeFieldInterest (this [_destinationField]);
52113
+ if (this [_destinationField])
52114
+ this [_sourceField] ?.removeFieldInterest (this [_destinationField]);
52096
52115
 
52097
52116
  this [_sourceField] = null;
52098
52117
  this [_destinationField] = null;
@@ -52253,6 +52272,8 @@ Object .assign (X3DRoute,
52253
52272
  ? destinationNode .getField (destinationFieldName)
52254
52273
  : helper.try (() => destinationNode .getExportedNode () .getField (destinationFieldName));
52255
52274
 
52275
+ X3DRoute .checkFields (sourceField, destinationField);
52276
+
52256
52277
  if (sourceField)
52257
52278
  {
52258
52279
  sourceFieldName = sourceField .getName ();
@@ -52271,6 +52292,26 @@ Object .assign (X3DRoute,
52271
52292
 
52272
52293
  return `${sourceNode .getId ()}.${sourceFieldName}.${destinationNode .getId ()}.${destinationFieldName}`;
52273
52294
  },
52295
+ checkFields (sourceField, destinationField)
52296
+ {
52297
+ if (sourceField && destinationField)
52298
+ {
52299
+ if (sourceField .getType () !== destinationField .getType ())
52300
+ throw new Error (`Bad ROUTE specification: source field type must match destination field type of fields named "${sourceField .getName ()}" and "${destinationField .getName ()}".`);
52301
+ }
52302
+
52303
+ if (sourceField)
52304
+ {
52305
+ if (!sourceField .isOutput ())
52306
+ throw new Error (`Bad ROUTE specification: source field "${sourceField .getName ()}" must be an output.`);
52307
+ }
52308
+
52309
+ if (destinationField)
52310
+ {
52311
+ if (!destinationField .isInput ())
52312
+ throw new Error (`Bad ROUTE specification: destination field "${destinationField .getName ()}" must be an input.`);
52313
+ }
52314
+ },
52274
52315
  });
52275
52316
 
52276
52317
  const X3DRoute_default_ = X3DRoute;
@@ -52919,54 +52960,47 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
52919
52960
  },
52920
52961
  addRoute (sourceNode, sourceField, destinationNode, destinationField)
52921
52962
  {
52922
- try
52923
- {
52924
- // Normalize arguments.
52925
-
52926
- const
52927
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52928
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
52929
-
52930
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
52931
- sourceField = String (sourceField);
52932
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
52933
- destinationField = String (destinationField);
52963
+ // Normalize arguments.
52934
52964
 
52935
- // Check nodes.
52965
+ const
52966
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
52967
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
52936
52968
 
52937
- if (!sourceNode)
52938
- throw new Error ("source node must be of type X3DNode.");
52969
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
52970
+ sourceField = String (sourceField);
52971
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
52972
+ destinationField = String (destinationField);
52939
52973
 
52940
- if (!destinationNode)
52941
- throw new Error ("destination node must be of type X3DNode.");
52974
+ // Check nodes.
52942
52975
 
52943
- // Resolve imported source and destination node.
52976
+ if (!sourceNode)
52977
+ throw new Error ("Bad ROUTE specification: source node must be of type X3DNode.");
52944
52978
 
52945
- sourceNode = this .getLocalizedNode (sourceNode);
52946
- destinationNode = this .getLocalizedNode (destinationNode);
52979
+ if (!destinationNode)
52980
+ throw new Error ("Bad ROUTE specification: destination node must be of type X3DNode.");
52947
52981
 
52948
- // Add route.
52982
+ // Resolve imported source and destination node.
52949
52983
 
52950
- const
52951
- id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
52952
- route = this [_routes] .get (id);
52984
+ sourceNode = this .getLocalizedNode (sourceNode);
52985
+ destinationNode = this .getLocalizedNode (destinationNode);
52953
52986
 
52954
- if (route)
52955
- {
52956
- return route;
52957
- }
52958
- else
52959
- {
52960
- const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
52987
+ // Add route.
52961
52988
 
52962
- this [_routes] .add (id, route);
52989
+ const
52990
+ id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
52991
+ route = this [_routes] .get (id);
52963
52992
 
52964
- return route;
52965
- }
52993
+ if (route)
52994
+ {
52995
+ return route;
52966
52996
  }
52967
- catch (error)
52997
+ else
52968
52998
  {
52969
- throw new Error (`Bad ROUTE specification.`, { cause: error });
52999
+ const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
53000
+
53001
+ this [_routes] .add (id, route);
53002
+
53003
+ return route;
52970
53004
  }
52971
53005
  },
52972
53006
  deleteRoute (route)
@@ -54662,7 +54696,7 @@ function X3DCoreContext (element)
54662
54696
  {
54663
54697
  const link = document .createElement ("link");
54664
54698
 
54665
- link .integrity = "sha384-dhnoOI+clBqqFYGBrUCL7KhjerG/JEhXRHWvaNS1qEwbCU/f0MWYgFRQj2esJwbi";
54699
+ link .integrity = "sha384-x6y/hxdrQVgxMyDh++oW/v2xiaW7k1Rmjai5PMfLQ+DLzcx2odeW89DVDfzQkGs9";
54666
54700
  link .rel = "stylesheet";
54667
54701
  link .crossOrigin = "anonymous";
54668
54702
  link .onload = resolve;
@@ -64396,12 +64430,11 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64396
64430
  {
64397
64431
  const surface = this .getBrowser () .getSurface ();
64398
64432
 
64399
- helper.on (this, surface, "mousedown", event => this .mousedown (event));
64400
- helper.on (this, surface, "mouseup", event => this .mouseup (event));
64401
- helper.on (this, surface, "dblclick", event => this .dblclick (event));
64402
- helper.on (this, surface, "mousemove", event => this .mousemove (event));
64403
- helper.on (this, surface, "mouseenter", event => this .onmouseenter (event));
64404
- helper.on (this, surface, "mouseout", event => this .onmouseout (event));
64433
+ helper.on (this, surface, "mousedown", event => this .mousedown (event));
64434
+ helper.on (this, surface, "mouseup", event => this .mouseup (event));
64435
+ helper.on (this, surface, "dblclick", event => this .dblclick (event));
64436
+ helper.on (this, surface, "mousemove", event => this .mousemove (event));
64437
+ helper.on (this, surface, "mouseout", event => this .onmouseout (event));
64405
64438
 
64406
64439
  helper.on (this, surface, "touchstart", event => this .touchstart (event));
64407
64440
  helper.on (this, surface, "touchend", event => this .touchend (event));
@@ -64412,6 +64445,8 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64412
64445
  browser = this .getBrowser (),
64413
64446
  surface = browser .getSurface ();
64414
64447
 
64448
+ browser .getElement () .focus ({ preventScroll: true });
64449
+
64415
64450
  if (browser .getShiftKey () && (browser .getControlKey () || browser .getCommandKey ()))
64416
64451
  return;
64417
64452
 
@@ -64592,10 +64627,6 @@ Object .assign (Object .setPrototypeOf (PointingDevice .prototype, Base_X3DBaseN
64592
64627
  else
64593
64628
  browser .setCursor (this .grabbing && move ? "GRABBING" : "DEFAULT");
64594
64629
  },
64595
- onmouseenter ()
64596
- {
64597
- this .getBrowser () .getElement () .focus ({ preventScroll: true });
64598
- },
64599
64630
  onmouseout ()
64600
64631
  {
64601
64632
  this .getBrowser () .leaveNotifyEvent ();
@@ -72975,15 +73006,16 @@ function X3DBrowserContext (element)
72975
73006
  for (const browserContext of browserContexts)
72976
73007
  browserContext .call (this, element);
72977
73008
 
72978
- this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
72979
- Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
72980
- Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
72981
- Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
72982
- Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
72983
- Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
72984
- Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
72985
- Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
72986
- Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
73009
+ this .addChildObjects (Base_X3DConstants .outputOnly, "initialized", new x_ite_Fields .SFTime (),
73010
+ Base_X3DConstants .outputOnly, "shutdown", new x_ite_Fields .SFTime (),
73011
+ Base_X3DConstants .outputOnly, "prepareEvents", new x_ite_Fields .SFTime (),
73012
+ Base_X3DConstants .outputOnly, "timePrepareEvents", new x_ite_Fields .SFTime (),
73013
+ Base_X3DConstants .outputOnly, "timeEvents", new x_ite_Fields .SFTime (),
73014
+ Base_X3DConstants .outputOnly, "cameraEvents", new x_ite_Fields .SFTime (),
73015
+ Base_X3DConstants .outputOnly, "sensorEvents", new x_ite_Fields .SFTime (),
73016
+ Base_X3DConstants .outputOnly, "displayEvents", new x_ite_Fields .SFTime (),
73017
+ Base_X3DConstants .outputOnly, "finishedEvents", new x_ite_Fields .SFTime (),
73018
+ Base_X3DConstants .outputOnly, "endEvents", new x_ite_Fields .SFTime ());
72987
73019
 
72988
73020
  this [X3DBrowserContext_tainted] = false;
72989
73021
  this [_previousTime] = 0;
@@ -73017,6 +73049,10 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73017
73049
  {
73018
73050
  return this ._prepareEvents;
73019
73051
  },
73052
+ timePrepareEvents ()
73053
+ {
73054
+ return this ._timePrepareEvents;
73055
+ },
73020
73056
  timeEvents ()
73021
73057
  {
73022
73058
  return this ._timeEvents;
@@ -73120,6 +73156,9 @@ Object .assign (Object .setPrototypeOf (X3DBrowserContext .prototype, Base_X3DBa
73120
73156
  this .addTaintedField (this ._prepareEvents);
73121
73157
  this [X3DBrowserContext_processEvents] ();
73122
73158
 
73159
+ this .addTaintedField (this ._timePrepareEvents);
73160
+ this [X3DBrowserContext_processEvents] ();
73161
+
73123
73162
  this .addTaintedField (this ._timeEvents);
73124
73163
  this [X3DBrowserContext_processEvents] ();
73125
73164
 
@@ -87852,6 +87891,10 @@ Object .assign (Object .setPrototypeOf (X3DSoundProcessingNode .prototype, Sound
87852
87891
  for (const childNode of this .childNodes)
87853
87892
  childNode .getAudioSource () .connect (this .audioDestination);
87854
87893
  },
87894
+ set_start ()
87895
+ {
87896
+ this ._elapsedTime = 0;
87897
+ },
87855
87898
  set_time ()
87856
87899
  {
87857
87900
  this ._elapsedTime = this .getElapsedTime ();
@@ -88105,6 +88148,8 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Sound_X3D
88105
88148
  if (!this .mediaElement)
88106
88149
  return;
88107
88150
 
88151
+ this ._elapsedTime = 0;
88152
+
88108
88153
  this .mediaElement .currentTime = 0;
88109
88154
 
88110
88155
  this .getBrowser () .startAudioElement (this .mediaElement);
@@ -89008,12 +89053,12 @@ Object .defineProperties (BufferAudioSource,
89008
89053
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "gain", new x_ite_Fields .SFFloat (1)),
89009
89054
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "detune", new x_ite_Fields .SFFloat ()),
89010
89055
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "playbackRate", new x_ite_Fields .SFFloat (1)),
89011
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime (0)),
89012
- new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime (0)),
89013
89056
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCount", new x_ite_Fields .SFInt32 ()), // skip test
89014
89057
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelCountMode", new x_ite_Fields .SFString ("MAX")),
89015
89058
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "channelInterpretation", new x_ite_Fields .SFString ("SPEAKERS")),
89016
89059
 
89060
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopStart", new x_ite_Fields .SFTime (0)),
89061
+ new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loopEnd", new x_ite_Fields .SFTime (0)),
89017
89062
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "loop", new x_ite_Fields .SFBool ()),
89018
89063
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "startTime", new x_ite_Fields .SFTime (0)),
89019
89064
  new Base_X3DFieldDefinition (Base_X3DConstants .inputOutput, "resumeTime", new x_ite_Fields .SFTime (0)),
@@ -90051,6 +90096,8 @@ Object .assign (Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSo
90051
90096
 
90052
90097
  this .mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode (audioContext, { mediaStream });
90053
90098
 
90099
+ this ._elapsedTime = 0;
90100
+
90054
90101
  if (this ._isActive .getValue ())
90055
90102
  {
90056
90103
  if (this ._isPaused .getValue () || !this .getLive () .getValue ())
@@ -90122,6 +90169,9 @@ Object .assign (Object .setPrototypeOf (MicrophoneSource .prototype, Sound_X3DSo
90122
90169
  },
90123
90170
  set_time ()
90124
90171
  {
90172
+ if (!this .mediaStreamAudioSourceNode)
90173
+ return;
90174
+
90125
90175
  this ._elapsedTime = this .getElapsedTime ();
90126
90176
  },
90127
90177
  });
@@ -90190,7 +90240,7 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90190
90240
  if (!this .oscillatorNode)
90191
90241
  return;
90192
90242
 
90193
- this .oscillatorNode .detune .value = Math .max (this ._detune .getValue (), 0);
90243
+ this .oscillatorNode .detune .value = this ._detune .getValue ();
90194
90244
  },
90195
90245
  set_frequency__ ()
90196
90246
  {
@@ -90258,12 +90308,15 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90258
90308
 
90259
90309
  this .oscillatorNode = new OscillatorNode (audioContext);
90260
90310
 
90311
+ this .set_gain__ ();
90261
90312
  this .set_detune__ ();
90262
90313
  this .set_frequency__ ();
90263
90314
  this .set_type__ ();
90264
90315
 
90265
90316
  this .oscillatorNode .connect (this .getAudioSource ());
90266
90317
  this .oscillatorNode .start ();
90318
+
90319
+ this ._elapsedTime = 0;
90267
90320
  },
90268
90321
  set_pause ()
90269
90322
  {
@@ -90275,8 +90328,16 @@ Object .assign (Object .setPrototypeOf (OscillatorSource .prototype, Sound_X3DSo
90275
90328
  },
90276
90329
  set_stop ()
90277
90330
  {
90278
- this .oscillatorNode .stop ();
90279
- this .oscillatorNode .disconnect ();
90331
+ const
90332
+ audioContext = this .getBrowser () .getAudioContext (),
90333
+ gainNode = this .getAudioSource (),
90334
+ now = audioContext .currentTime,
90335
+ fadeDuration = 0.03;
90336
+
90337
+ gainNode .gain .setValueAtTime (gainNode .gain .value, now);
90338
+ gainNode .gain .exponentialRampToValueAtTime (1e-3, now + fadeDuration);
90339
+
90340
+ this .oscillatorNode .stop (now + fadeDuration);
90280
90341
  },
90281
90342
  set_time ()
90282
90343
  {
@@ -90437,6 +90498,9 @@ Object .assign (Object .setPrototypeOf (Sound .prototype, Sound_X3DSoundNode .pr
90437
90498
  },
90438
90499
  setGain (gain, pan = 0.5, rotation = 0)
90439
90500
  {
90501
+ // Given a pan value, left and right channel levels can be obtained using the equations from:
90502
+ // https://www.web3d.org/documents/specifications/19775-1/V4.0/index.html
90503
+
90440
90504
  const
90441
90505
  panLeft = 1 - pan ** 2,
90442
90506
  panRight = 1 - (1 - pan) ** 2,
@@ -91315,7 +91379,7 @@ function GifMedia (gif, movieTexture)
91315
91379
  if (!loop && cycle < this .cycle)
91316
91380
  return this .duration;
91317
91381
 
91318
- return (movieTexture ._elapsedTime * playbackRate) % this .duration;
91382
+ return (movieTexture ._elapsedTime .getValue () * playbackRate) % this .duration;
91319
91383
  },
91320
91384
  set: Function .prototype,
91321
91385
  },
@@ -91342,7 +91406,7 @@ function GifMedia (gif, movieTexture)
91342
91406
  {
91343
91407
  get ()
91344
91408
  {
91345
- return Math .floor (movieTexture ._elapsedTime / this .duration);
91409
+ return Math .floor (movieTexture ._elapsedTime .getValue () / this .duration);
91346
91410
  },
91347
91411
  },
91348
91412
  currentFrame:
@@ -91436,7 +91500,7 @@ async function PNGMedia (apng, movieTexture)
91436
91500
  {
91437
91501
  get ()
91438
91502
  {
91439
- return Math .floor (movieTexture ._elapsedTime / this .duration);
91503
+ return Math .floor (movieTexture ._elapsedTime .getValue () / this .duration);
91440
91504
  },
91441
91505
  },
91442
91506
  currentFrame:
@@ -91481,8 +91545,8 @@ const PNGMedia_default_ = PNGMedia;
91481
91545
 
91482
91546
  /* harmony default export */ const Texturing_PNGMedia = (x_ite_Namespace .add ("PNGMedia", PNGMedia_default_));
91483
91547
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
91484
- /* provided dependency */ var SuperGif = __webpack_require__(133);
91485
- /* provided dependency */ var APNG = __webpack_require__(991);
91548
+ /* provided dependency */ var SuperGif = __webpack_require__(617);
91549
+ /* provided dependency */ var APNG = __webpack_require__(851);
91486
91550
 
91487
91551
 
91488
91552
 
@@ -93749,7 +93813,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93749
93813
  },
93750
93814
  print (... args)
93751
93815
  {
93752
- const string = args .map (String) .join (" ");
93816
+ const string = args .join (" ");
93753
93817
 
93754
93818
  console .log (string);
93755
93819
 
@@ -93758,7 +93822,7 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
93758
93822
  },
93759
93823
  println (... args)
93760
93824
  {
93761
- const string = args .map (String) .join (" ");
93825
+ const string = args .join (" ");
93762
93826
 
93763
93827
  console .log (string);
93764
93828
 
@@ -94126,7 +94190,7 @@ const QuickSort_default_ = QuickSort;
94126
94190
 
94127
94191
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
94128
94192
  ;// ./src/lib/libtess.js
94129
- /* provided dependency */ var libtess_libtess = __webpack_require__(643);
94193
+ /* provided dependency */ var libtess_libtess = __webpack_require__(775);
94130
94194
  const libtess_default_ = libtess_libtess;
94131
94195
  ;
94132
94196