x_ite 8.6.7 → 8.6.9

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 (110) hide show
  1. package/.vscode/tasks.json +1 -1
  2. package/dist/assets/components/Annotation.js +13 -13
  3. package/dist/assets/components/Annotation.min.js +1 -1
  4. package/dist/assets/components/CADGeometry.js +13 -13
  5. package/dist/assets/components/CADGeometry.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturing.js +26 -26
  7. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  8. package/dist/assets/components/DIS.js +13 -13
  9. package/dist/assets/components/DIS.min.js +1 -1
  10. package/dist/assets/components/EventUtilities.js +9 -9
  11. package/dist/assets/components/EventUtilities.min.js +1 -1
  12. package/dist/assets/components/Geometry2D.js +19 -19
  13. package/dist/assets/components/Geometry2D.min.js +1 -1
  14. package/dist/assets/components/Geospatial.js +33 -33
  15. package/dist/assets/components/Geospatial.min.js +1 -1
  16. package/dist/assets/components/HAnim.js +18 -18
  17. package/dist/assets/components/HAnim.min.js +1 -1
  18. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  19. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  20. package/dist/assets/components/Layout.js +27 -27
  21. package/dist/assets/components/Layout.min.js +1 -1
  22. package/dist/assets/components/NURBS.js +24 -24
  23. package/dist/assets/components/NURBS.min.js +1 -1
  24. package/dist/assets/components/ParticleSystems.js +25 -27
  25. package/dist/assets/components/ParticleSystems.min.js +1 -1
  26. package/dist/assets/components/Picking.js +19 -19
  27. package/dist/assets/components/Picking.min.js +1 -1
  28. package/dist/assets/components/RigidBodyPhysics.js +18 -18
  29. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  30. package/dist/assets/components/Scripting.js +28 -28
  31. package/dist/assets/components/Scripting.min.js +1 -1
  32. package/dist/assets/components/Text.js +24 -24
  33. package/dist/assets/components/Text.min.js +1 -1
  34. package/dist/assets/components/TextureProjector.js +14 -14
  35. package/dist/assets/components/TextureProjector.min.js +1 -1
  36. package/dist/assets/components/Texturing3D.js +33 -33
  37. package/dist/assets/components/Texturing3D.min.js +1 -1
  38. package/dist/assets/components/VolumeRendering.js +19 -19
  39. package/dist/assets/components/VolumeRendering.min.js +1 -1
  40. package/dist/assets/components/X_ITE.js +9 -9
  41. package/dist/assets/components/X_ITE.min.js +1 -1
  42. package/dist/x_ite.css +1 -1
  43. package/dist/x_ite.js +907 -689
  44. package/dist/x_ite.min.js +1 -1
  45. package/dist/x_ite.zip +0 -0
  46. package/docs/_config.yml +2 -2
  47. package/docs/laboratory/gltf-sample-viewer.html +4 -4
  48. package/package.json +1 -1
  49. package/src/assets/shaders/webgl1/Pointing.fs.js +1 -1
  50. package/src/assets/shaders/webgl1/include/Fragment.glsl.js +17 -1
  51. package/src/assets/shaders/webgl1/include/Point.glsl.js +10 -2
  52. package/src/assets/shaders/webgl1/include/Texture.glsl.js +31 -1
  53. package/src/assets/shaders/webgl1/include/Vertex.glsl.js +26 -3
  54. package/src/assets/shaders/webgl2/Pointing.fs.js +1 -1
  55. package/src/assets/shaders/webgl2/include/Fragment.glsl.js +18 -0
  56. package/src/assets/shaders/webgl2/include/Particle.glsl.js +9 -23
  57. package/src/assets/shaders/webgl2/include/Point.glsl.js +12 -4
  58. package/src/assets/shaders/webgl2/include/Texture.glsl.js +17 -20
  59. package/src/assets/shaders/webgl2/include/Vertex.glsl.js +24 -0
  60. package/src/bookmarks.js +1 -1
  61. package/src/standard/Math/Numbers/Color3.js +2 -2
  62. package/src/standard/Math/Numbers/Color4.js +1 -1
  63. package/src/tests.js +1 -0
  64. package/src/x_ite/Browser/Core/BrowserOptions.js +3 -0
  65. package/src/x_ite/Browser/Core/BrowserTimings.js +12 -11
  66. package/src/x_ite/Browser/Core/Context.js +64 -64
  67. package/src/x_ite/Browser/Core/ContextMenu.js +0 -9
  68. package/src/x_ite/Browser/Navigation/ExamineViewer.js +1 -1
  69. package/src/x_ite/Browser/Shaders/Shaders.js +0 -2
  70. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +8 -0
  71. package/src/x_ite/Browser/VERSION.js +1 -1
  72. package/src/x_ite/Browser/X3DBrowser.js +1 -1
  73. package/src/x_ite/Components/Core/X3DBindableNode.js +0 -2
  74. package/src/x_ite/Components/Core/X3DNode.js +3 -8
  75. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +1 -1
  76. package/src/x_ite/Components/Layering/X3DLayerNode.js +6 -2
  77. package/src/x_ite/Components/Navigation/NavigationInfo.js +1 -0
  78. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +34 -21
  79. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +2 -4
  80. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +5 -19
  81. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +6 -12
  82. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +4 -8
  83. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +28 -27
  84. package/src/x_ite/Components/Shape/Material.js +28 -23
  85. package/src/x_ite/Components/Shape/PhysicalMaterial.js +5 -0
  86. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +1 -0
  87. package/src/x_ite/Components/Shape/UnlitMaterial.js +1 -0
  88. package/src/x_ite/Components/Shape/X3DMaterialNode.js +21 -19
  89. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +16 -10
  90. package/src/x_ite/Components/Texturing/ImageTexture.js +86 -44
  91. package/src/x_ite/Components/Texturing/MovieTexture.js +5 -4
  92. package/src/x_ite/Components/Texturing/MultiTexture.js +7 -4
  93. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +19 -16
  94. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +16 -32
  95. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +1 -1
  96. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +2 -8
  97. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +2 -8
  98. package/src/x_ite/Execution/NamedNodesHandling.js +84 -0
  99. package/src/x_ite/Execution/X3DExecutionContext.js +7 -37
  100. package/src/x_ite/Execution/X3DScene.js +5 -0
  101. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  102. package/src/x_ite/InputOutput/Generator.js +32 -81
  103. package/src/x_ite/Parser/GLTF2Parser.js +112 -52
  104. package/src/x_ite/Parser/OBJParser.js +48 -39
  105. package/src/x_ite/Parser/STLAParser.js +3 -0
  106. package/src/x_ite/Parser/SVGParser.js +4 -0
  107. package/src/x_ite/Rendering/X3DRenderObject.js +2 -0
  108. package/src/x_ite.html +52 -46
  109. package/x_ite.min.html +52 -46
  110. package/src/assets/shaders/webgl1/include/Particle.glsl.js +0 -7
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.6.7 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v8.6.9 */(function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if(typeof define === 'function' && define.amd)
@@ -11,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 364:
14
+ /***/ 599:
15
15
  /***/ (function(module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
- /* provided dependency */ var jQuery = __webpack_require__(996);
18
+ /* provided dependency */ var jQuery = __webpack_require__(998);
19
19
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
20
20
 
21
21
  /**
@@ -387,10 +387,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
387
387
 
388
388
  /***/ }),
389
389
 
390
- /***/ 674:
390
+ /***/ 774:
391
391
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
392
392
 
393
- /* provided dependency */ var jQuery = __webpack_require__(996);
393
+ /* provided dependency */ var jQuery = __webpack_require__(998);
394
394
  /**
395
395
  * @preserve jquery.fullscreen 1.1.5
396
396
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -586,7 +586,7 @@ installFullScreenHandlers();
586
586
 
587
587
  /***/ }),
588
588
 
589
- /***/ 549:
589
+ /***/ 136:
590
590
  /***/ ((module, exports, __webpack_require__) => {
591
591
 
592
592
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -600,7 +600,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
600
600
  (function (factory) {
601
601
  if ( true ) {
602
602
  // AMD. Register as an anonymous module.
603
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(996)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
603
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(998)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
604
604
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
605
605
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
606
606
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -811,7 +811,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
811
811
 
812
812
  /***/ }),
813
813
 
814
- /***/ 996:
814
+ /***/ 998:
815
815
  /***/ (function(module, exports) {
816
816
 
817
817
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11812,7 +11812,7 @@ return jQuery;
11812
11812
 
11813
11813
  /***/ }),
11814
11814
 
11815
- /***/ 519:
11815
+ /***/ 422:
11816
11816
  /***/ ((module) => {
11817
11817
 
11818
11818
  /**
@@ -16591,7 +16591,7 @@ if (true) {
16591
16591
 
16592
16592
  /***/ }),
16593
16593
 
16594
- /***/ 986:
16594
+ /***/ 978:
16595
16595
  /***/ (function(__unused_webpack_module, exports) {
16596
16596
 
16597
16597
 
@@ -19836,7 +19836,7 @@ if (true) {
19836
19836
 
19837
19837
  /***/ }),
19838
19838
 
19839
- /***/ 750:
19839
+ /***/ 921:
19840
19840
  /***/ (function(module, exports) {
19841
19841
 
19842
19842
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -21094,6 +21094,92 @@ const __default__ = X3DConstants;
21094
21094
 
21095
21095
  x_ite_Namespace.set ("x_ite/Base/X3DConstants", __default__);
21096
21096
  /* harmony default export */ const Base_X3DConstants = (__default__);
21097
+ ;// CONCATENATED MODULE: ./src/x_ite/Execution/NamedNodesHandling.js
21098
+ /*******************************************************************************
21099
+ *
21100
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21101
+ *
21102
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
21103
+ *
21104
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
21105
+ *
21106
+ * The copyright notice above does not evidence any actual of intended
21107
+ * publication of such source code, and is an unpublished work by create3000.
21108
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
21109
+ * create3000.
21110
+ *
21111
+ * No permission is granted to copy, distribute, or create derivative works from
21112
+ * the contents of this software, in whole or in part, without the prior written
21113
+ * permission of create3000.
21114
+ *
21115
+ * NON-MILITARY USE ONLY
21116
+ *
21117
+ * All create3000 software are effectively free software with a non-military use
21118
+ * restriction. It is free. Well commented source is provided. You may reuse the
21119
+ * source in any way you please with the exception anything that uses it must be
21120
+ * marked to indicate is contains 'non-military use only' components.
21121
+ *
21122
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21123
+ *
21124
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
21125
+ *
21126
+ * This file is part of the X_ITE Project.
21127
+ *
21128
+ * X_ITE is free software: you can redistribute it and/or modify it under the
21129
+ * terms of the GNU General Public License version 3 only, as published by the
21130
+ * Free Software Foundation.
21131
+ *
21132
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
21133
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
21134
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
21135
+ * details (a copy is included in the LICENSE file that accompanied this code).
21136
+ *
21137
+ * You should have received a copy of the GNU General Public License version 3
21138
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
21139
+ * copy of the GPLv3 License.
21140
+ *
21141
+ * For Silvio, Joy and Adi.
21142
+ *
21143
+ ******************************************************************************/
21144
+
21145
+ const getUniqueName = function (array, name = "", number = false)
21146
+ {
21147
+ name = String (name) .replace (/_\d+$/, "");
21148
+
21149
+ let
21150
+ newName = number ? `${name}_1` : name,
21151
+ lo = 1,
21152
+ hi = 1;
21153
+
21154
+ while (array .has (newName) || newName .length === 0)
21155
+ {
21156
+ lo = hi;
21157
+ hi <<= 1;
21158
+
21159
+ newName = `${name}_${lo}`;
21160
+ }
21161
+
21162
+ lo >>>= 1;
21163
+ hi >>>= 1;
21164
+
21165
+ if (lo && hi)
21166
+ {
21167
+ while (lo < hi)
21168
+ {
21169
+ const m = (lo + hi) >>> 1;
21170
+
21171
+ if (array .has (`${name}_${m}`))
21172
+ lo = m + 1;
21173
+ else
21174
+ hi = m;
21175
+ }
21176
+
21177
+ newName = `${name}_${lo}`;
21178
+ }
21179
+
21180
+ return newName;
21181
+ };
21182
+
21097
21183
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/Generator.js
21098
21184
  /*******************************************************************************
21099
21185
  *
@@ -21144,6 +21230,7 @@ x_ite_Namespace.set ("x_ite/Base/X3DConstants", __default__);
21144
21230
 
21145
21231
 
21146
21232
 
21233
+
21147
21234
  function Generator ({ style = "TIDY", precision = 7, doublePrecision = 15 })
21148
21235
  {
21149
21236
  this .Style (style);
@@ -21164,12 +21251,11 @@ function Generator ({ style = "TIDY", precision = 7, doublePrecision = 15 })
21164
21251
  this .importedNames = new Map ();
21165
21252
  this .routeNodes = new Set ();
21166
21253
  this .level = 0;
21167
- this .newName = 0;
21168
21254
  this .containerFields = [ ];
21169
21255
  this .units = true;
21170
21256
  this .unitCategories = [ ];
21171
21257
 
21172
- this .names .set (null, new Map ());
21258
+ this .names .set (null, new Set ());
21173
21259
  }
21174
21260
 
21175
21261
  Generator .prototype =
@@ -21309,7 +21395,7 @@ Generator .prototype =
21309
21395
  this .executionContextStack .push (executionContext);
21310
21396
 
21311
21397
  if (! this .names .has (executionContext))
21312
- this .names .set (executionContext, new Map ());
21398
+ this .names .set (executionContext, Object .assign (new Set (), { index: 0 }));
21313
21399
 
21314
21400
  if (! this .importedNodesIndex .has (executionContext))
21315
21401
  this .importedNodesIndex .set (executionContext, new Set ());
@@ -21333,9 +21419,6 @@ Generator .prototype =
21333
21419
  },
21334
21420
  EnterScope: function ()
21335
21421
  {
21336
- if (this .level === 0)
21337
- this .newName = 0;
21338
-
21339
21422
  ++ this .level;
21340
21423
  },
21341
21424
  LeaveScope: function ()
@@ -21403,79 +21486,47 @@ Generator .prototype =
21403
21486
  {
21404
21487
  return this .nodes .has (baseNode);
21405
21488
  },
21406
- Name: (function ()
21489
+ Name: function (baseNode)
21407
21490
  {
21408
- const _TrailingNumbers = /_\d+$/;
21491
+ // Is the node already in index.
21409
21492
 
21410
- return function (baseNode)
21411
- {
21412
- // Is the node already in index
21493
+ const name = this .namesByNode .get (baseNode);
21413
21494
 
21414
- const name = this .namesByNode .get (baseNode);
21495
+ if (name !== undefined)
21496
+ {
21497
+ return name;
21498
+ }
21499
+ else
21500
+ {
21501
+ const
21502
+ name = baseNode .getName (),
21503
+ match = name .match (/^(.*?)(_\d+)?$/),
21504
+ names = this .names .get (this .ExecutionContext ());
21415
21505
 
21416
- if (name !== undefined)
21506
+ if (match [1])
21417
21507
  {
21418
- return name;
21508
+ // The node has a name.
21509
+
21510
+ var newName = getUniqueName (names, name, !! match [2]);
21419
21511
  }
21420
21512
  else
21421
21513
  {
21422
- const names = this .names .get (this .ExecutionContext ());
21423
-
21424
- // The node has no name
21425
-
21426
- if (baseNode .getName () .length === 0)
21427
- {
21428
- if (this .NeedsName (baseNode))
21429
- {
21430
- const name = this .UniqueName ();
21431
-
21432
- names .set (name, baseNode);
21433
- this .namesByNode .set (baseNode, name);
21434
-
21435
- return name;
21436
- }
21437
-
21438
- // The node doesn't need a name
21439
-
21440
- return baseNode .getName ();
21441
- }
21514
+ // The node has no name.
21442
21515
 
21443
- // The node has a name
21444
-
21445
- let name = baseNode .getName ();
21446
- const hasNumber = name .match (_TrailingNumbers) !== null;
21447
-
21448
- name = name .replace (_TrailingNumbers, "");
21449
-
21450
- if (name .length === 0)
21451
- {
21452
- if (this .NeedsName (baseNode))
21453
- name = this .UniqueName ();
21454
-
21455
- else
21456
- return "";
21457
- }
21458
- else
21459
- {
21460
- let
21461
- i = 0,
21462
- newName = hasNumber ? name + '_' + (++ i) : name;
21516
+ if (!this .NeedsName (baseNode))
21517
+ return "";
21463
21518
 
21464
- while (names .has (newName))
21465
- {
21466
- newName = name + '_' + (++ i);
21467
- }
21519
+ var newName = `_${++ names .index}`;
21520
+ }
21468
21521
 
21469
- name = newName;
21470
- }
21522
+ // Add to indices.
21471
21523
 
21472
- names .set (name, baseNode);
21473
- this .namesByNode .set (baseNode, name);
21524
+ names .add (newName);
21525
+ this .namesByNode .set (baseNode, newName);
21474
21526
 
21475
- return name;
21476
- }
21477
- };
21478
- })(),
21527
+ return newName;
21528
+ }
21529
+ },
21479
21530
  NeedsName: function (baseNode)
21480
21531
  {
21481
21532
  if (baseNode .getCloneCount () > 1)
@@ -21506,20 +21557,6 @@ Generator .prototype =
21506
21557
  return false;
21507
21558
  }
21508
21559
  },
21509
- UniqueName: function ()
21510
- {
21511
- const names = this .names .get (this .ExecutionContext ());
21512
-
21513
- for (; ;)
21514
- {
21515
- const name = '_' + (++ this .newName);
21516
-
21517
- if (names .has (name))
21518
- continue;
21519
-
21520
- return name;
21521
- }
21522
- },
21523
21560
  LocalName: function (baseNode)
21524
21561
  {
21525
21562
  const importedName = this .importedNames .get (baseNode);
@@ -23707,7 +23744,7 @@ x_ite_Namespace.set ("standard/Math/Algorithm", Algorithm_default_);
23707
23744
 
23708
23745
 
23709
23746
 
23710
- const clamp = Algorithm.clamp;
23747
+ const { clamp, interval, degrees } = Algorithm;
23711
23748
 
23712
23749
  const
23713
23750
  _r = Symbol .for ("X_ITE.Color3.r"),
@@ -23817,7 +23854,7 @@ Color3 .prototype =
23817
23854
  }
23818
23855
  else
23819
23856
  {
23820
- const w = Algorithm.degrees (Algorithm.interval (h, 0, Math .PI * 2)) / 60; // sector 0 to 5
23857
+ const w = degrees (interval (h, 0, Math .PI * 2)) / 60; // sector 0 to 5
23821
23858
 
23822
23859
  const i = Math .floor (w);
23823
23860
  const f = w - i; // factorial part of h
@@ -24229,7 +24266,7 @@ x_ite_Namespace.set ("x_ite/Fields/SFColor", SFColor_default_);
24229
24266
 
24230
24267
 
24231
24268
 
24232
- const Color4_clamp = Algorithm.clamp;
24269
+ const { clamp: Color4_clamp } = Algorithm;
24233
24270
 
24234
24271
  const
24235
24272
  Color4_r = Symbol .for ("X_ITE.Color3.r"),
@@ -34912,7 +34949,7 @@ x_ite_Namespace.set ("x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34912
34949
  *
34913
34950
  ******************************************************************************/
34914
34951
 
34915
- const VERSION_default_ = "8.6.7";
34952
+ const VERSION_default_ = "8.6.9";
34916
34953
  ;
34917
34954
 
34918
34955
  x_ite_Namespace.set ("x_ite/Browser/VERSION", VERSION_default_);
@@ -35167,70 +35204,70 @@ const Context =
35167
35204
 
35168
35205
  // Async functions
35169
35206
 
35170
- // Object .assign (gl, gl .getVersion () === 1
35171
- // ? {
35172
- // readPixelsAsync: gl .readPixels,
35173
- // }
35174
- // : {
35175
- // clientWaitAsync: function (sync, flags, timeout)
35176
- // {
35177
- // return new Promise ((resolve, reject) =>
35178
- // {
35179
- // const check = () =>
35180
- // {
35181
- // const result = this .clientWaitSync (sync, flags, 0);
35182
-
35183
- // switch (result)
35184
- // {
35185
- // case this .WAIT_FAILED:
35186
- // {
35187
- // reject ();
35188
- // return;
35189
- // }
35190
- // case this .TIMEOUT_EXPIRED:
35191
- // {
35192
- // setTimeout (check, timeout);
35193
- // return;
35194
- // }
35195
- // default:
35196
- // {
35197
- // resolve ();
35198
- // return;
35199
- // }
35200
- // }
35201
- // };
35202
-
35203
- // check ();
35204
- // });
35205
- // },
35206
- // getBufferSubDataAsync: async function (target, buffer, srcByteOffset, dstBuffer, /* optional */ dstOffset, /* optional */ length)
35207
- // {
35208
- // const sync = this .fenceSync (this .SYNC_GPU_COMMANDS_COMPLETE, 0);
35207
+ Object .assign (gl, gl .getVersion () === 1
35208
+ ? {
35209
+ readPixelsAsync: gl .readPixels,
35210
+ }
35211
+ : {
35212
+ clientWaitAsync: function (sync, flags, timeout)
35213
+ {
35214
+ return new Promise ((resolve, reject) =>
35215
+ {
35216
+ const check = () =>
35217
+ {
35218
+ const result = this .clientWaitSync (sync, flags, 0);
35209
35219
 
35210
- // this .flush ();
35220
+ switch (result)
35221
+ {
35222
+ case this .WAIT_FAILED:
35223
+ {
35224
+ reject ();
35225
+ return;
35226
+ }
35227
+ case this .TIMEOUT_EXPIRED:
35228
+ {
35229
+ setTimeout (check, timeout);
35230
+ return;
35231
+ }
35232
+ default:
35233
+ {
35234
+ resolve ();
35235
+ return;
35236
+ }
35237
+ }
35238
+ };
35211
35239
 
35212
- // await this .clientWaitAsync (sync, 0, 10);
35240
+ check ();
35241
+ });
35242
+ },
35243
+ getBufferSubDataAsync: async function (target, buffer, srcByteOffset, dstBuffer, /* optional */ dstOffset, /* optional */ length)
35244
+ {
35245
+ const sync = this .fenceSync (this .SYNC_GPU_COMMANDS_COMPLETE, 0);
35213
35246
 
35214
- // this .deleteSync (sync);
35247
+ this .flush ();
35215
35248
 
35216
- // this .bindBuffer (target, buffer);
35217
- // this .getBufferSubData (target, srcByteOffset, dstBuffer, dstOffset, length);
35218
- // this .bindBuffer (target, null);
35219
- // },
35220
- // readPixelsAsync: async function (x, y, w, h, format, type, dest, dstOffset)
35221
- // {
35222
- // const buffer = this .createBuffer ();
35249
+ await this .clientWaitAsync (sync, 0, 10);
35250
+
35251
+ this .deleteSync (sync);
35252
+
35253
+ this .bindBuffer (target, buffer);
35254
+ this .getBufferSubData (target, srcByteOffset, dstBuffer, dstOffset, length);
35255
+ this .bindBuffer (target, null);
35256
+ },
35257
+ readPixelsAsync: async function (x, y, w, h, format, type, dest, dstOffset)
35258
+ {
35259
+ const buffer = this .createBuffer ();
35223
35260
 
35224
- // this .bindBuffer (this .PIXEL_PACK_BUFFER, buffer);
35225
- // this .bufferData (this .PIXEL_PACK_BUFFER, dest .byteLength, this .STREAM_READ);
35226
- // this .readPixels (x, y, w, h, format, type, 0);
35227
- // this .bindBuffer (this .PIXEL_PACK_BUFFER, null);
35261
+ this .bindBuffer (this .PIXEL_PACK_BUFFER, buffer);
35262
+ this .bufferData (this .PIXEL_PACK_BUFFER, dest .byteLength, this .STREAM_READ);
35263
+ this .readPixels (x, y, w, h, format, type, 0);
35264
+ this .bindBuffer (this .PIXEL_PACK_BUFFER, null);
35228
35265
 
35229
- // await this .getBufferSubDataAsync (this .PIXEL_PACK_BUFFER, buffer, 0, dest, dstOffset);
35266
+ await this .getBufferSubDataAsync (this .PIXEL_PACK_BUFFER, buffer, 0, dest, dstOffset);
35230
35267
 
35231
- // this .deleteBuffer (buffer);
35232
- // },
35233
- // });
35268
+ this .deleteBuffer (buffer);
35269
+ },
35270
+ });
35234
35271
 
35235
35272
  // Return context.
35236
35273
 
@@ -35814,7 +35851,7 @@ const gettext_default_ = gettext;
35814
35851
  x_ite_Namespace.set ("locale/gettext", gettext_default_);
35815
35852
  /* harmony default export */ const locale_gettext = (gettext_default_);
35816
35853
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
35817
- /* provided dependency */ var $ = __webpack_require__(996);
35854
+ /* provided dependency */ var $ = __webpack_require__(998);
35818
35855
  /*******************************************************************************
35819
35856
  *
35820
35857
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -35866,8 +35903,6 @@ x_ite_Namespace.set ("locale/gettext", gettext_default_);
35866
35903
 
35867
35904
 
35868
35905
 
35869
- function f2 (n) { return n .toFixed (2); }
35870
-
35871
35906
  function BrowserTimings (executionContext)
35872
35907
  {
35873
35908
  Base_X3DBaseNode.call (this, executionContext);
@@ -35928,6 +35963,7 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
35928
35963
  this .fps .reset ();
35929
35964
  this .getBrowser () .prepareEvents () .addInterest ("update", this);
35930
35965
  this .update ();
35966
+ this .build ();
35931
35967
  }
35932
35968
  else
35933
35969
  {
@@ -35975,7 +36011,7 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
35975
36011
  let r = 0;
35976
36012
 
35977
36013
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Frame rate") + ":")) .append ($("<td></td>") .text (f2(1000 / this .fps .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("fps")));
35978
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Speed") + ":")) .append ($("<td></td>") .text (f2(this .getSpeed (browser .currentSpeed)) .toLocaleString (language, fixed) + " " + this .getSpeedUnit (browser .currentSpeed)));
36014
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Speed") + ":")) .append ($("<td></td>") .text (f2(this .getSpeed (browser .currentSpeed)) .toLocaleString (language, fixed) + " " + this .getSpeedUnit (browser .currentSpeed)));
35979
36015
 
35980
36016
  if (this .localStorage .type === "MORE")
35981
36017
  {
@@ -36000,14 +36036,14 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
36000
36036
 
36001
36037
  rows [1] .addClass ("x_ite-private-more");
36002
36038
 
36003
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Browser") + ":")) .append ($("<td></td>") .text (f2(browser .getSystemTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36004
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("X3D total") + ":")) .append ($("<td></td>") .text (f2(browser .getBrowserTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36005
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Event Processing") + ":")) .append ($("<td></td>") .text (f2(routingTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36006
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Pointer") + ":")) .append ($("<td></td>") .text (f2(browser .getPointingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36007
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Camera") + ":")) .append ($("<td></td>") .text (f2(browser .getCameraTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36008
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Picking") + ":")) .append ($("<td></td>") .text (f2(browser .getPickingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36009
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Collision Detection") + ":")) .append ($("<td></td>") .text (f2(collisionTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36010
- rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Rendering") + ":")) .append ($("<td></td>") .text (f2(browser .getDisplayTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36039
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Browser") + ":")) .append ($("<td></td>") .text (f2(browser .getSystemTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36040
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("X3D total") + ":")) .append ($("<td></td>") .text (f2(browser .getBrowserTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36041
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Event Processing") + ":")) .append ($("<td></td>") .text (f2(routingTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36042
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Pointer") + ":")) .append ($("<td></td>") .text (f2(browser .getPointingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36043
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Camera") + ":")) .append ($("<td></td>") .text (f2(browser .getCameraTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36044
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Picking") + ":")) .append ($("<td></td>") .text (f2(browser .getPickingTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36045
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Collision Detection") + ":")) .append ($("<td></td>") .text (f2(collisionTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36046
+ rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Rendering") + ":")) .append ($("<td></td>") .text (f2(browser .getDisplayTime () .averageTime) .toLocaleString (language, fixed) + " " + locale_gettext("ms")));
36011
36047
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Number of Shapes") + ":")) .append ($("<td></td>") .text (opaqueShapes + " + " + transparentShapes));
36012
36048
  rows [r++] = $("<tr></tr>") .append ($("<td></td>") .text (locale_gettext("Number of Sensors") + ":")) .append ($("<td></td>") .text (prepareEvents + sensors));
36013
36049
 
@@ -36045,6 +36081,8 @@ BrowserTimings .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
36045
36081
  },
36046
36082
  });
36047
36083
 
36084
+ function f2 (n) { return isFinite (n) ? n .toFixed (2) : 0 .toFixed (2); }
36085
+
36048
36086
  const BrowserTimings_default_ = BrowserTimings;
36049
36087
  ;
36050
36088
 
@@ -36506,6 +36544,9 @@ BrowserOptions .prototype = Object .assign (Object .create (Base_X3DBaseNode.pro
36506
36544
  set_straightenHorizon__: function (straightenHorizon)
36507
36545
  {
36508
36546
  this .localStorage .StraightenHorizon = straightenHorizon .getValue ();
36547
+
36548
+ if (straightenHorizon .getValue ())
36549
+ this .getBrowser () .getActiveLayer ()?.straightenView ();
36509
36550
  },
36510
36551
  updateContentScale: function ()
36511
36552
  {
@@ -36772,7 +36813,7 @@ const RenderingProperties_default_ = RenderingProperties;
36772
36813
  x_ite_Namespace.set ("x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
36773
36814
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
36774
36815
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
36775
- /* provided dependency */ var Notification_$ = __webpack_require__(996);
36816
+ /* provided dependency */ var Notification_$ = __webpack_require__(998);
36776
36817
  /*******************************************************************************
36777
36818
  *
36778
36819
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36894,8 +36935,8 @@ const Notification_default_ = Notification;
36894
36935
  x_ite_Namespace.set ("x_ite/Browser/Core/Notification", Notification_default_);
36895
36936
  /* harmony default export */ const Core_Notification = (Notification_default_);
36896
36937
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
36897
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(674);
36898
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(996);
36938
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(774);
36939
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(998);
36899
36940
  /*******************************************************************************
36900
36941
  *
36901
36942
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -37048,18 +37089,9 @@ ContextMenu .prototype = Object .assign (Object .create (Base_X3DBaseNode.protot
37048
37089
  browser .setBrowserOption ("StraightenHorizon", straightenHorizon);
37049
37090
 
37050
37091
  if (straightenHorizon)
37051
- {
37052
37092
  browser .getNotification () ._string = locale_gettext("Straighten Horizon") + ": " + locale_gettext("on");
37053
-
37054
- const activeViewpoint = browser .getActiveViewpoint ();
37055
-
37056
- if (activeViewpoint)
37057
- activeViewpoint .straighten (browser .getActiveLayer (), true);
37058
- }
37059
37093
  else
37060
- {
37061
37094
  browser .getNotification () ._string = locale_gettext("Straighten Horizon") + ": " + locale_gettext("off");
37062
- }
37063
37095
  }
37064
37096
  .bind (this),
37065
37097
  },
@@ -38014,15 +38046,10 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
38014
38046
  return copy;
38015
38047
  }
38016
38048
  },
38017
- getDisplayName: (function ()
38049
+ getDisplayName: function ()
38018
38050
  {
38019
- const _TrailingNumber = /_\d+$/;
38020
-
38021
- return function ()
38022
- {
38023
- return this .getName () .replace (_TrailingNumber, "");
38024
- };
38025
- })(),
38051
+ return this .getName () .replace (/_\d+$/, "");
38052
+ },
38026
38053
  getNeedsName: function ()
38027
38054
  {
38028
38055
  if (this .getName () .length)
@@ -41897,7 +41924,7 @@ const X3DUrlObject_default_ = X3DUrlObject;
41897
41924
  x_ite_Namespace.set ("x_ite/Components/Networking/X3DUrlObject", X3DUrlObject_default_);
41898
41925
  /* harmony default export */ const Networking_X3DUrlObject = (X3DUrlObject_default_);
41899
41926
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
41900
- /* provided dependency */ var X3DParser_$ = __webpack_require__(996);
41927
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(998);
41901
41928
  /*******************************************************************************
41902
41929
  *
41903
41930
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45074,7 +45101,7 @@ const VRMLParser_default_ = VRMLParser;
45074
45101
  x_ite_Namespace.set ("x_ite/Parser/VRMLParser", VRMLParser_default_);
45075
45102
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
45076
45103
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
45077
- /* provided dependency */ var XMLParser_$ = __webpack_require__(996);
45104
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(998);
45078
45105
  /*******************************************************************************
45079
45106
  *
45080
45107
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47117,7 +47144,7 @@ const URLs_default_ = URLs;
47117
47144
  x_ite_Namespace.set ("x_ite/Browser/Networking/URLs", URLs_default_);
47118
47145
  /* harmony default export */ const Networking_URLs = (URLs_default_);
47119
47146
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
47120
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(996);
47147
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(998);
47121
47148
  /*******************************************************************************
47122
47149
  *
47123
47150
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47181,9 +47208,7 @@ x_ite_Namespace.set ("x_ite/Browser/Networking/URLs", URLs_default_);
47181
47208
  // https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
47182
47209
  // https://github.com/KhronosGroup/glTF-Sample-Models
47183
47210
 
47184
- const
47185
- STEP_TIME = 1e-4, // in seconds
47186
- SAMPLES_PER_SECOND = 30; // in 1/s
47211
+ const SAMPLES_PER_SECOND = 30; // in 1/s
47187
47212
 
47188
47213
  function GLTF2Parser (scene)
47189
47214
  {
@@ -47206,7 +47231,7 @@ function GLTF2Parser (scene)
47206
47231
  this .accessors = [ ];
47207
47232
  this .samplers = [ ];
47208
47233
  this .materials = [ ];
47209
- this .textureTransformNodes = new Map ();
47234
+ this .textureTransformNodes = [ ];
47210
47235
  this .cameras = [ ];
47211
47236
  this .viewpoints = 0;
47212
47237
  this .nodes = [ ];
@@ -47440,12 +47465,16 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47440
47465
  if (this .vectorValue (light .color, color))
47441
47466
  lightNode ._color = color;
47442
47467
 
47468
+ lightNode ._global = true;
47443
47469
  lightNode ._intensity = this .numberValue (light .intensity, 1);
47444
47470
 
47445
47471
  lightNode .setup ();
47446
47472
 
47447
47473
  if (name)
47474
+ {
47448
47475
  scene .addNamedNode (scene .getUniqueName (name), lightNode);
47476
+ scene .addExportedNode (scene .getUniqueExportName (name), lightNode);
47477
+ }
47449
47478
 
47450
47479
  return lightNode;
47451
47480
  },
@@ -47591,7 +47620,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47591
47620
  components = Components .get (accessor .type),
47592
47621
  count = accessor .count || 0,
47593
47622
  stride = byteStride ? byteStride / TypedArray .BYTES_PER_ELEMENT : components,
47594
- length = stride * count,
47623
+ length = Math .min (stride * count, (bufferView .byteLength - byteOffset) / TypedArray .BYTES_PER_ELEMENT),
47595
47624
  array = new TypedArray (bufferView .buffer, byteOffset, length);
47596
47625
 
47597
47626
  if (stride === components)
@@ -47716,7 +47745,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47716
47745
  name = this .sanitizeName (sampler .name);
47717
47746
 
47718
47747
  if (name)
47748
+ {
47719
47749
  scene .addNamedNode (scene .getUniqueName (name), texturePropertiesNode);
47750
+ scene .addExportedNode (scene .getUniqueExportName (name), texturePropertiesNode);
47751
+ }
47720
47752
 
47721
47753
  // minFilter
47722
47754
 
@@ -47814,9 +47846,13 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47814
47846
  name = this .sanitizeName (texture .name || image .name);
47815
47847
 
47816
47848
  if (name)
47849
+ {
47817
47850
  scene .addNamedNode (scene .getUniqueName (name), textureNode);
47851
+ scene .addExportedNode (scene .getUniqueExportName (name), textureNode);
47852
+ }
47818
47853
 
47819
- textureNode ._url = [image .uri];
47854
+ textureNode ._url = [image .uri];
47855
+ textureNode ._flipVertically = true;
47820
47856
 
47821
47857
  const sampler = this .samplers [texture .sampler];
47822
47858
 
@@ -47842,13 +47878,18 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47842
47878
  if (material .appearanceNode)
47843
47879
  return material .appearanceNode;
47844
47880
 
47845
- if (!(material .extensions instanceof Object))
47846
- material .extensions = { };
47881
+ const texCoordIndices = this .texCoordIndices ("", material);
47882
+
47883
+ this .texCoordIndex = [... texCoordIndices] .reduce (Math .max, -1);
47884
+
47885
+ this .textureTransformNodes = [ ];
47886
+ this .texCoordMappings = new Map ();
47887
+ material .texCoordMappings = this .texCoordMappings;
47847
47888
 
47848
47889
  const
47849
47890
  scene = this .getExecutionContext (),
47850
47891
  appearanceNode = scene .createNode ("Appearance", false),
47851
- materialNode = this .materialObjectMaterial (material),
47892
+ materialNode = this .createMaterial (material),
47852
47893
  name = this .sanitizeName (material .name);
47853
47894
 
47854
47895
  const emissiveFactor = new Numbers_Color3 (0, 0, 0);
@@ -47856,8 +47897,8 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47856
47897
  if (this .vectorValue (material .emissiveFactor, emissiveFactor))
47857
47898
  materialNode ._emissiveColor = emissiveFactor;
47858
47899
 
47859
- materialNode ._emissiveTextureMapping = this .textureMapping (material .emissiveTexture);
47860
47900
  materialNode ._emissiveTexture = this .textureInfo (material .emissiveTexture);
47901
+ materialNode ._emissiveTextureMapping = this .textureMapping (material .emissiveTexture);
47861
47902
 
47862
47903
  this .occlusionTextureInfo (material .occlusionTexture, materialNode);
47863
47904
  this .normalTextureInfo (material .normalTexture, materialNode);
@@ -47865,8 +47906,28 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47865
47906
 
47866
47907
  materialNode .setup ();
47867
47908
 
47909
+ for (const i of texCoordIndices)
47910
+ {
47911
+ const mapping = `TEXCOORD_${i}`;
47912
+
47913
+ if (this .textureTransformNodes .length)
47914
+ {
47915
+ const textureTransformNode = scene .createNode ("TextureTransform", false);
47916
+
47917
+ textureTransformNode ._mapping = mapping;
47918
+ textureTransformNode .setup ();
47919
+
47920
+ this .textureTransformNodes .push (textureTransformNode);
47921
+ }
47922
+
47923
+ this .texCoordMappings .set (mapping, i);
47924
+ }
47925
+
47868
47926
  if (name)
47927
+ {
47869
47928
  scene .addNamedNode (scene .getUniqueName (name), appearanceNode);
47929
+ scene .addExportedNode (scene .getUniqueExportName (name), appearanceNode);
47930
+ }
47870
47931
 
47871
47932
  appearanceNode ._alphaMode = this .stringValue (material .alphaMode, "OPAQUE");
47872
47933
  appearanceNode ._alphaCutoff = this .numberValue (material .alphaCutoff, 0.5);
@@ -47877,11 +47938,24 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47877
47938
 
47878
47939
  return material .appearanceNode = appearanceNode;
47879
47940
  },
47880
- materialObjectMaterial: function (material)
47941
+ texCoordIndices: function (key, object, indices = new Set ())
47942
+ {
47943
+ if (!(object instanceof Object))
47944
+ return indices;
47945
+
47946
+ if (key .endsWith ("Texture") && !object?.extensions?.KHR_texture_transform)
47947
+ indices .add (object .texCoord || 0);
47948
+
47949
+ for (const [key, value] of Object .entries (object))
47950
+ this .texCoordIndices (key, value, indices);
47951
+
47952
+ return indices;
47953
+ },
47954
+ createMaterial: function (material)
47881
47955
  {
47882
47956
  const materials = [
47883
47957
  this .pbrMetallicRoughnessObject .bind (this, material .pbrMetallicRoughness),
47884
- this .pbrSpecularGlossinessObject .bind (this, material .extensions .KHR_materials_pbrSpecularGlossiness),
47958
+ this .pbrSpecularGlossinessObject .bind (this, material .extensions?.KHR_materials_pbrSpecularGlossiness),
47885
47959
  this .pbrMetallicRoughnessObject .bind (this, { }),
47886
47960
  ];
47887
47961
 
@@ -47915,10 +47989,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47915
47989
  materialNode ._metallic = this .numberValue (pbrMetallicRoughness .metallicFactor, 1);
47916
47990
  materialNode ._roughness = this .numberValue (pbrMetallicRoughness .roughnessFactor, 1);
47917
47991
 
47918
- materialNode ._baseTextureMapping = this .textureMapping (pbrMetallicRoughness .baseColorTexture);
47919
47992
  materialNode ._baseTexture = this .textureInfo (pbrMetallicRoughness .baseColorTexture);
47920
- materialNode ._metallicRoughnessTextureMapping = this .textureMapping (pbrMetallicRoughness .metallicRoughnessTexture);
47993
+ materialNode ._baseTextureMapping = this .textureMapping (pbrMetallicRoughness .baseColorTexture);
47921
47994
  materialNode ._metallicRoughnessTexture = this .textureInfo (pbrMetallicRoughness .metallicRoughnessTexture);
47995
+ materialNode ._metallicRoughnessTextureMapping = this .textureMapping (pbrMetallicRoughness .metallicRoughnessTexture);
47922
47996
 
47923
47997
  return materialNode;
47924
47998
  },
@@ -47953,30 +48027,23 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47953
48027
 
47954
48028
  materialNode ._shininess = this .numberValue (pbrSpecularGlossiness .glossinessFactor, 1);
47955
48029
 
47956
- materialNode ._diffuseTextureMapping = this .textureMapping (pbrSpecularGlossiness .diffuseTexture);
47957
48030
  materialNode ._diffuseTexture = this .textureInfo (pbrSpecularGlossiness .diffuseTexture);
47958
- materialNode ._specularTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
48031
+ materialNode ._diffuseTextureMapping = this .textureMapping (pbrSpecularGlossiness .diffuseTexture);
47959
48032
  materialNode ._specularTexture = this .textureInfo (pbrSpecularGlossiness .specularGlossinessTexture);
47960
- materialNode ._shininessTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
48033
+ materialNode ._specularTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
47961
48034
  materialNode ._shininessTexture = this .textureInfo (pbrSpecularGlossiness .specularGlossinessTexture);
48035
+ materialNode ._shininessTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
47962
48036
 
47963
48037
  return materialNode;
47964
48038
  },
47965
- textureMapping: function (texture)
47966
- {
47967
- if (!(texture instanceof Object))
47968
- return "";
47969
-
47970
- return "TEXCOORD_" + (texture .texCoord || 0);
47971
- },
47972
48039
  occlusionTextureInfo: function (occlusionTexture, materialNode)
47973
48040
  {
47974
48041
  if (!(occlusionTexture instanceof Object))
47975
48042
  return null;
47976
48043
 
47977
48044
  materialNode ._occlusionStrength = this .numberValue (occlusionTexture .strength, 1);
47978
- materialNode ._occlusionTextureMapping = this .textureMapping (occlusionTexture);
47979
48045
  materialNode ._occlusionTexture = this .textureInfo (occlusionTexture);
48046
+ materialNode ._occlusionTextureMapping = this .textureMapping (occlusionTexture);
47980
48047
  },
47981
48048
  normalTextureInfo: function (normalTexture, materialNode)
47982
48049
  {
@@ -47984,8 +48051,8 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47984
48051
  return null;
47985
48052
 
47986
48053
  materialNode ._normalScale = this .numberValue (normalTexture .scale, 1);
47987
- materialNode ._normalTextureMapping = this .textureMapping (normalTexture);
47988
48054
  materialNode ._normalTexture = this .textureInfo (normalTexture);
48055
+ materialNode ._normalTextureMapping = this .textureMapping (normalTexture);
47989
48056
  },
47990
48057
  textureInfo: function (texture)
47991
48058
  {
@@ -47993,10 +48060,19 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
47993
48060
  return null;
47994
48061
 
47995
48062
  if (texture .extensions instanceof Object)
47996
- this .textureTransformObject (texture .extensions .KHR_texture_transform, this .textureMapping (texture));
48063
+ texture .mapping = this .textureTransformObject (texture .extensions .KHR_texture_transform, texture .texCoord || 0);
48064
+ else
48065
+ texture .mapping = `TEXCOORD_${texture .texCoord || 0}`;
47997
48066
 
47998
48067
  return this .textureObject (this .textures [texture .index]);
47999
48068
  },
48069
+ textureMapping: function (texture)
48070
+ {
48071
+ if (!(texture instanceof Object))
48072
+ return "";
48073
+
48074
+ return texture .mapping;
48075
+ },
48000
48076
  materialExtensions: function (extensions, materialNode)
48001
48077
  {
48002
48078
  if (!(extensions instanceof Object))
@@ -48046,16 +48122,9 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48046
48122
  if (!(KHR_materials_emissive_strength instanceof Object))
48047
48123
  return;
48048
48124
 
48049
- const emissiveStrength = this .numberValue (KHR_materials_emissive_strength .emissiveStrength, 1);
48050
-
48051
- // Will not always get the desired result, because colors are clamped values,
48052
- // especially if there is an emissiveTexture.
48053
-
48054
- materialNode ._emissiveColor .r *= emissiveStrength;
48055
- materialNode ._emissiveColor .g *= emissiveStrength;
48056
- materialNode ._emissiveColor .b *= emissiveStrength;
48125
+ materialNode ._emissiveStrength = this .numberValue (KHR_materials_emissive_strength .emissiveStrength, 1);
48057
48126
  },
48058
- textureTransformObject: function (KHR_texture_transform, mapping)
48127
+ textureTransformObject: function (KHR_texture_transform, texCoord)
48059
48128
  {
48060
48129
  if (!(KHR_texture_transform instanceof Object))
48061
48130
  return;
@@ -48065,7 +48134,8 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48065
48134
 
48066
48135
  const
48067
48136
  scene = this .getExecutionContext (),
48068
- textureTransformNode = scene .createNode ("TextureTransformMatrix3D", false);
48137
+ textureTransformNode = scene .createNode ("TextureTransformMatrix3D", false),
48138
+ mapping = `TEXCOORD_${this .texCoordIndex + this .textureTransformNodes .length + 1}`;
48069
48139
 
48070
48140
  const
48071
48141
  translation = new Numbers_Vector2 (0, 0),
@@ -48085,7 +48155,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48085
48155
 
48086
48156
  textureTransformNode .setup ();
48087
48157
 
48088
- this .textureTransformNodes .set (mapping, textureTransformNode);
48158
+ this .textureTransformNodes .push (textureTransformNode);
48159
+ this .texCoordMappings .set (mapping, KHR_texture_transform .texCoord ?? texCoord);
48160
+
48161
+ return mapping;
48089
48162
  },
48090
48163
  meshesArray: function (meshes)
48091
48164
  {
@@ -48113,7 +48186,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48113
48186
  if (name)
48114
48187
  {
48115
48188
  for (const shapeNode of shapeNodes)
48189
+ {
48116
48190
  scene .addNamedNode (scene .getUniqueName (name), shapeNode);
48191
+ scene .addExportedNode (scene .getUniqueExportName (name), shapeNode);
48192
+ }
48117
48193
  }
48118
48194
 
48119
48195
  return mesh .shapeNodes = shapeNodes;
@@ -48347,7 +48423,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48347
48423
  // Name
48348
48424
 
48349
48425
  if (name)
48426
+ {
48350
48427
  scene .addNamedNode (scene .getUniqueName (name), viewpointNode);
48428
+ scene .addExportedNode (scene .getUniqueExportName (name), viewpointNode);
48429
+ }
48351
48430
 
48352
48431
  if (camera .name)
48353
48432
  viewpointNode ._description = camera .name;
@@ -48443,7 +48522,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48443
48522
  // Name
48444
48523
 
48445
48524
  if (name)
48525
+ {
48446
48526
  scene .addNamedNode (scene .getUniqueName (name), transformNode);
48527
+ scene .addExportedNode (scene .getUniqueExportName (name), transformNode);
48528
+ }
48447
48529
 
48448
48530
  // Set transformation matrix.
48449
48531
 
@@ -48575,6 +48657,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48575
48657
  const switchNode = scene .createNode ("Switch", false);
48576
48658
 
48577
48659
  scene .addNamedNode (scene .getUniqueName ("Scenes"), switchNode);
48660
+ scene .addExportedNode (scene .getUniqueExportName ("Scenes"), switchNode);
48578
48661
 
48579
48662
  // Scenes.
48580
48663
 
@@ -48613,7 +48696,10 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48613
48696
  name = this .sanitizeName (sceneObject .name);
48614
48697
 
48615
48698
  if (name)
48699
+ {
48616
48700
  scene .addNamedNode (scene .getUniqueName (name), groupNode);
48701
+ scene .addExportedNode (scene .getUniqueExportName (name), groupNode);
48702
+ }
48617
48703
 
48618
48704
  groupNode ._children = nodes;
48619
48705
 
@@ -48644,7 +48730,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48644
48730
  groupNode = scene .createNode ("Group", false);
48645
48731
 
48646
48732
  scene .addNamedNode (scene .getUniqueName ("Animations"), groupNode);
48647
- scene .addExportedNode ("Animations", groupNode);
48733
+ scene .addExportedNode (scene .getUniqueExportName ("Animations"), groupNode);
48648
48734
 
48649
48735
  groupNode ._children = animationNodes;
48650
48736
 
@@ -48673,6 +48759,8 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48673
48759
 
48674
48760
  scene .addNamedNode (scene .getUniqueName (name || `Animation${this .animations}`), groupNode);
48675
48761
  scene .addNamedNode (scene .getUniqueName (`Timer${this .animations}`), timeSensorNode);
48762
+ scene .addExportedNode (scene .getUniqueExportName (name || `Animation${this .animations}`), groupNode);
48763
+ scene .addExportedNode (scene .getUniqueExportName (`Timer${this .animations}`), timeSensorNode);
48676
48764
 
48677
48765
  timeSensorNode ._description = animation .name || `Animation ${this .animations}`;
48678
48766
  groupNode ._children .push (timeSensorNode, ... channelNodes);
@@ -48807,11 +48895,9 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
48807
48895
  if (!+materialNode .getTextureBits ())
48808
48896
  return null;
48809
48897
 
48810
- const textureTransformNodes = [... this .textureTransformNodes .values ()]
48898
+ const textureTransformNodes = this .textureTransformNodes
48811
48899
  .sort ((a, b) => Algorithm.cmp (a ._mapping .getValue (), b ._mapping .getValue ()));
48812
48900
 
48813
- this .textureTransformNodes .clear ();
48814
-
48815
48901
  switch (textureTransformNodes .length)
48816
48902
  {
48817
48903
  case 0:
@@ -49148,7 +49234,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
49148
49234
  if (texCoords .textureCoordinateNode)
49149
49235
  return texCoords .textureCoordinateNode;
49150
49236
 
49151
- switch (texCoords .length)
49237
+ switch (material .texCoordMappings .size)
49152
49238
  {
49153
49239
  case 0:
49154
49240
  {
@@ -49156,12 +49242,13 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
49156
49242
  }
49157
49243
  case 1:
49158
49244
  {
49159
- return texCoords .textureCoordinateNode = this .createTextureCoordinate (texCoords [0], 0);
49245
+ return texCoords .textureCoordinateNode = [... material .texCoordMappings .entries ()]
49246
+ .map (([mapping, i]) => this .createTextureCoordinate (texCoords [i], mapping)) [0];
49160
49247
  }
49161
49248
  default:
49162
49249
  {
49163
- const textureCoordinateNodes = texCoords
49164
- .map ((texCoord, i) => this .createTextureCoordinate (texCoord, i))
49250
+ const textureCoordinateNodes = [... material .texCoordMappings .entries ()]
49251
+ .map (([mapping, i]) => this .createTextureCoordinate (texCoords [i], mapping))
49165
49252
  .filter (node => node)
49166
49253
  .sort ((a, b) => Algorithm.cmp (a ._mapping .getValue (), b ._mapping .getValue ()));
49167
49254
 
@@ -49188,19 +49275,19 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
49188
49275
  if (texCoord .type !== "VEC2")
49189
49276
  return null;
49190
49277
 
49191
- if (texCoord .textureCoordinateNode)
49192
- return texCoord .textureCoordinateNode;
49278
+ if (texCoord [mapping])
49279
+ return texCoord [mapping];
49193
49280
 
49194
49281
  const
49195
49282
  scene = this .getExecutionContext (),
49196
49283
  textureCoordinateNode = scene .createNode ("TextureCoordinate", false);
49197
49284
 
49198
- textureCoordinateNode ._mapping = "TEXCOORD_" + mapping;
49285
+ textureCoordinateNode ._mapping = mapping;
49199
49286
  textureCoordinateNode ._point = texCoord .array;
49200
49287
 
49201
49288
  textureCoordinateNode .setup ();
49202
49289
 
49203
- return texCoord .textureCoordinateNode = textureCoordinateNode;
49290
+ return texCoord [mapping] = textureCoordinateNode;
49204
49291
  },
49205
49292
  createNormal: function (normal)
49206
49293
  {
@@ -49296,7 +49383,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
49296
49383
  interpolatorNode ._key .push (times [0] / cycleInterval);
49297
49384
 
49298
49385
  for (let i = 1, length = times .length; i < length; ++ i)
49299
- interpolatorNode ._key .push ((times [i] - STEP_TIME) / cycleInterval, times [i] / cycleInterval);
49386
+ interpolatorNode ._key .push (times [i] / cycleInterval, times [i] / cycleInterval);
49300
49387
 
49301
49388
  // KeyValue
49302
49389
 
@@ -49370,7 +49457,7 @@ GLTF2Parser .prototype = Object .assign (Object .create (Parser_X3DParser.protot
49370
49457
  interpolatorNode ._key .push (times [0] / cycleInterval);
49371
49458
 
49372
49459
  for (let i = 1, length = times .length; i < length; ++ i)
49373
- interpolatorNode ._key .push ((times [i] - STEP_TIME) / cycleInterval, times [i] / cycleInterval);
49460
+ interpolatorNode ._key .push (times [i] / cycleInterval, times [i] / cycleInterval);
49374
49461
 
49375
49462
  // KeyValue
49376
49463
 
@@ -49502,7 +49589,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
49502
49589
  x_ite_Namespace.set ("x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
49503
49590
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
49504
49591
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
49505
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(996);
49592
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(998);
49506
49593
  /*******************************************************************************
49507
49594
  *
49508
49595
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -49655,7 +49742,7 @@ const GLB2Parser_default_ = GLB2Parser;
49655
49742
  x_ite_Namespace.set ("x_ite/Parser/GLB2Parser", GLB2Parser_default_);
49656
49743
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
49657
49744
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
49658
- /* provided dependency */ var OBJParser_$ = __webpack_require__(996);
49745
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(998);
49659
49746
  /*******************************************************************************
49660
49747
  *
49661
49748
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -49933,36 +50020,39 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
49933
50020
  try
49934
50021
  {
49935
50022
  const
49936
- scene = this .getExecutionContext (),
49937
- url = new URL (path, scene .getWorldURL ());
49938
-
49939
- const input = await fetch (url)
49940
- .then (response => response .arrayBuffer ())
49941
- .then (arrayBuffer => OBJParser_$.decodeText (OBJParser_$.ungzip (arrayBuffer)))
49942
- .catch (Function .prototype);
49943
-
49944
- const parser = new MaterialParser (scene, input);
50023
+ scene = this .getExecutionContext (),
50024
+ url = new URL (path, scene .getWorldURL ()),
50025
+ response = await fetch (url),
50026
+ arrayBuffer = await response .arrayBuffer (),
50027
+ input = OBJParser_$.decodeText (OBJParser_$.ungzip (arrayBuffer)),
50028
+ parser = new MaterialParser (scene, input);
49945
50029
 
49946
50030
  parser .parse ();
49947
50031
 
49948
- for (const [name, material] of parser .materials)
50032
+ for (const [id, material] of parser .materials)
49949
50033
  {
49950
- const nodeName = this .sanitizeName (name);
50034
+ const name = this .sanitizeName (id);
49951
50035
 
49952
- if (nodeName)
49953
- scene .addNamedNode (scene .getUniqueName (nodeName), material);
50036
+ if (name)
50037
+ {
50038
+ scene .addNamedNode (scene .getUniqueName (name), material);
50039
+ scene .addExportedNode (scene .getUniqueExportName (name), material);
50040
+ }
49954
50041
 
49955
- this .materials .set (name, material);
50042
+ this .materials .set (id, material);
49956
50043
  }
49957
50044
 
49958
- for (const [name, texture] of parser .textures)
50045
+ for (const [id, texture] of parser .textures)
49959
50046
  {
49960
- const nodeName = this .sanitizeName (name);
50047
+ const name = this .sanitizeName (id);
49961
50048
 
49962
- if (nodeName)
49963
- scene .addNamedNode (scene .getUniqueName (nodeName), texture);
50049
+ if (name)
50050
+ {
50051
+ scene .addNamedNode (scene .getUniqueName (name), texture);
50052
+ scene .addExportedNode (scene .getUniqueExportName (name), texture);
50053
+ }
49964
50054
 
49965
- this .textures .set (name, texture);
50055
+ this .textures .set (id, texture);
49966
50056
  }
49967
50057
  }
49968
50058
  catch (error)
@@ -49980,10 +50070,10 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
49980
50070
 
49981
50071
  if (OBJParser_Grammar .untilEndOfLine .parse (this))
49982
50072
  {
49983
- const name = this .result [1];
50073
+ const id = this .result [1];
49984
50074
 
49985
- this .material = this .materials .get (name) || this .defaultMaterial;
49986
- this .texture = this .textures .get (name);
50075
+ this .material = this .materials .get (id) || this .defaultMaterial;
50076
+ this .texture = this .textures .get (id);
49987
50077
 
49988
50078
  const smoothingGroup = this .smoothingGroups .get (this .group .getNodeName ());
49989
50079
 
@@ -50007,8 +50097,8 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
50007
50097
  if (OBJParser_Grammar .untilEndOfLine .parse (this))
50008
50098
  {
50009
50099
  const
50010
- scene = this .getExecutionContext (),
50011
- nodeName = this .sanitizeName (this .result [1]);
50100
+ scene = this .getExecutionContext (),
50101
+ name = this .sanitizeName (this .result [1]);
50012
50102
 
50013
50103
  if (this .group .children .length)
50014
50104
  {
@@ -50019,8 +50109,11 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
50019
50109
  scene .getRootNodes () .push (this .object);
50020
50110
  }
50021
50111
 
50022
- if (nodeName)
50023
- scene .addNamedNode (scene .getUniqueName (nodeName), this .object);
50112
+ if (name)
50113
+ {
50114
+ scene .addNamedNode (scene .getUniqueName (name), this .object);
50115
+ scene .addExportedNode (scene .getUniqueExportName (name), this .object);
50116
+ }
50024
50117
  }
50025
50118
 
50026
50119
  return true;
@@ -50039,10 +50132,10 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
50039
50132
  if (OBJParser_Grammar .untilEndOfLine .parse (this))
50040
50133
  {
50041
50134
  const
50042
- scene = this .getExecutionContext (),
50043
- name = this .result [1],
50044
- nodeName = this .sanitizeName (name),
50045
- group = this .groups .get (name);
50135
+ scene = this .getExecutionContext (),
50136
+ id = this .result [1],
50137
+ name = this .sanitizeName (id),
50138
+ group = this .groups .get (id);
50046
50139
 
50047
50140
  if (group)
50048
50141
  {
@@ -50058,10 +50151,13 @@ OBJParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
50058
50151
  }
50059
50152
  }
50060
50153
 
50061
- this .groups .set (name, this .group);
50154
+ this .groups .set (id, this .group);
50062
50155
 
50063
- if (nodeName)
50064
- scene .addNamedNode (scene .getUniqueName (nodeName), this .group);
50156
+ if (name)
50157
+ {
50158
+ scene .addNamedNode (scene .getUniqueName (name), this .group);
50159
+ scene .addExportedNode (scene .getUniqueExportName (name), this .group);
50160
+ }
50065
50161
 
50066
50162
  this .smoothingGroup = 0;
50067
50163
  }
@@ -50386,7 +50482,7 @@ function MaterialParser (scene, input)
50386
50482
  this .materials = new Map ();
50387
50483
  this .textures = new Map ();
50388
50484
  this .color3 = new Numbers_Color3 ();
50389
- this .name = "";
50485
+ this .id = "";
50390
50486
  }
50391
50487
 
50392
50488
  MaterialParser .prototype =
@@ -50479,15 +50575,15 @@ MaterialParser .prototype =
50479
50575
  {
50480
50576
  this .whitespacesNoLineTerminator ();
50481
50577
 
50482
- this .name = "";
50578
+ this .id = "";
50483
50579
 
50484
50580
  if (OBJParser_Grammar .untilEndOfLine .parse (this))
50485
50581
  {
50486
- this .name = this .result [1];
50582
+ this .id = this .result [1];
50487
50583
 
50488
50584
  this .material = this .executionContext .createNode ("Material");
50489
50585
 
50490
- this .materials .set (this .name, this .material);
50586
+ this .materials .set (this .id, this .material);
50491
50587
 
50492
50588
  return true;
50493
50589
  }
@@ -50652,7 +50748,7 @@ MaterialParser .prototype =
50652
50748
  {
50653
50749
  const string = this .result [1];
50654
50750
 
50655
- if (string .length && this .name .length)
50751
+ if (string .length && this .id .length)
50656
50752
  {
50657
50753
  const paths = string .trim () .split (/\s+/);
50658
50754
 
@@ -50665,7 +50761,7 @@ MaterialParser .prototype =
50665
50761
 
50666
50762
  texture .url = [path];
50667
50763
 
50668
- this .textures .set (this .name, texture);
50764
+ this .textures .set (this .id, texture);
50669
50765
  }
50670
50766
  }
50671
50767
 
@@ -50954,7 +51050,10 @@ STLAParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototy
50954
51050
  coordinate .point = this .point;
50955
51051
 
50956
51052
  if (name)
51053
+ {
50957
51054
  scene .addNamedNode (scene .getUniqueName (name), shape);
51055
+ scene .addExportedNode (scene .getUniqueExportName (name), shape);
51056
+ }
50958
51057
 
50959
51058
  scene .getRootNodes () .push (shape);
50960
51059
 
@@ -51794,7 +51893,7 @@ x_ite_Namespace.set ("standard/Math/Geometry/Box2", Box2_default_);
51794
51893
 
51795
51894
 
51796
51895
 
51797
- const { interval } = Algorithm;
51896
+ const { interval: Bezier_interval } = Algorithm;
51798
51897
 
51799
51898
  // https://pomax.github.io/bezierinfo/
51800
51899
 
@@ -51871,7 +51970,7 @@ const Bezier =
51871
51970
 
51872
51971
  // In accordance to: http://www.w3.org/TR/SVG/implnote.html#ArcOutOfRangeParameters
51873
51972
 
51874
- xAxisRotation = interval (xAxisRotation, 0, 2 * Math .PI);
51973
+ xAxisRotation = Bezier_interval (xAxisRotation, 0, 2 * Math .PI);
51875
51974
 
51876
51975
  const
51877
51976
  sinRotation = Math .sin (xAxisRotation),
@@ -52096,8 +52195,8 @@ const MatrixStack_default_ = MatrixStack;
52096
52195
  x_ite_Namespace.set ("standard/Math/Utility/MatrixStack", MatrixStack_default_);
52097
52196
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
52098
52197
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
52099
- /* provided dependency */ var SVGParser_$ = __webpack_require__(996);
52100
- /* provided dependency */ var libtess = __webpack_require__(519);
52198
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(998);
52199
+ /* provided dependency */ var libtess = __webpack_require__(422);
52101
52200
  /*******************************************************************************
52102
52201
  *
52103
52202
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -52454,6 +52553,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52454
52553
  // Add root Transform node.
52455
52554
 
52456
52555
  scene .addNamedNode (scene .getUniqueName ("ViewBox"), this .rootTransform);
52556
+ scene .addExportedNode (scene .getUniqueExportName ("ViewBox"), this .rootTransform);
52457
52557
  scene .getRootNodes () .push (this .rootTransform);
52458
52558
 
52459
52559
  // Optimize scene graph.
@@ -53312,7 +53412,10 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53312
53412
  name = this .sanitizeName (attribute);
53313
53413
 
53314
53414
  if (name)
53415
+ {
53315
53416
  scene .addNamedNode (scene .getUniqueName (name), node);
53417
+ scene .addExportedNode (scene .getUniqueExportName (name), node);
53418
+ }
53316
53419
  },
53317
53420
  viewBoxAttribute: function (attribute, defaultValue)
53318
53421
  {
@@ -54862,7 +54965,7 @@ const SVGParser_default_ = SVGParser;
54862
54965
  x_ite_Namespace.set ("x_ite/Parser/SVGParser", SVGParser_default_);
54863
54966
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
54864
54967
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
54865
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(996);
54968
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(998);
54866
54969
  /*******************************************************************************
54867
54970
  *
54868
54971
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -55191,7 +55294,7 @@ const Plane3_default_ = Plane3;
55191
55294
  x_ite_Namespace.set ("standard/Math/Geometry/Plane3", Plane3_default_);
55192
55295
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
55193
55296
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
55194
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(519);
55297
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(422);
55195
55298
  /*******************************************************************************
55196
55299
  *
55197
55300
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -58368,6 +58471,7 @@ X3DRenderObject .prototype =
58368
58471
  gl .depthMask (true);
58369
58472
  gl .enable (gl .DEPTH_TEST);
58370
58473
  gl .disable (gl .BLEND);
58474
+ gl .colorMask (true, true, true, false);
58371
58475
 
58372
58476
  const opaqueShapes = this .opaqueShapes;
58373
58477
 
@@ -58389,6 +58493,7 @@ X3DRenderObject .prototype =
58389
58493
 
58390
58494
  gl .depthMask (false);
58391
58495
  gl .enable (gl .BLEND);
58496
+ gl .colorMask (true, true, true, true);
58392
58497
 
58393
58498
  const transparentShapes = this .transparentShapes;
58394
58499
 
@@ -58978,8 +59083,6 @@ function X3DBindableNode (executionContext)
58978
59083
  Core_X3DChildNode.call (this, executionContext);
58979
59084
 
58980
59085
  this .addType (Base_X3DConstants.X3DBindableNode);
58981
-
58982
- this .addChildObjects ("transitionActive", new x_ite_Fields.SFBool ());
58983
59086
  }
58984
59087
 
58985
59088
  X3DBindableNode .prototype = Object .assign (Object .create (Core_X3DChildNode.prototype),
@@ -59067,6 +59170,7 @@ function NavigationInfo (executionContext)
59067
59170
  this .addType (Base_X3DConstants.NavigationInfo);
59068
59171
 
59069
59172
  this .addChildObjects ("transitionStart", new x_ite_Fields.SFBool (),
59173
+ "transitionActive", new x_ite_Fields.SFBool (),
59070
59174
  "availableViewers", new x_ite_Fields.MFString (),
59071
59175
  "viewer", new x_ite_Fields.SFString ("EXAMINE"));
59072
59176
 
@@ -59980,7 +60084,7 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
59980
60084
  this .backFace = new Map ([[gl .CCW, gl .CW], [gl .CW, gl .CCW]]);
59981
60085
  this .attribBuffers = [ ];
59982
60086
  this .textureCoordinateNode = browser .getDefaultTextureCoordinate ();
59983
- this .texCoordBuffers = Array .from ({length: browser .getMaxTextures ()}, () => gl .createBuffer ());
60087
+ this .texCoordBuffers = Array .from ({length: browser .getMaxTexCoords ()}, () => gl .createBuffer ());
59984
60088
  this .fogDepthBuffer = gl .createBuffer ();
59985
60089
  this .colorBuffer = gl .createBuffer ();
59986
60090
  this .normalBuffer = gl .createBuffer ();
@@ -60632,16 +60736,6 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
60632
60736
  if (this .multiTexCoords .length === 0)
60633
60737
  this .buildTexCoords ();
60634
60738
 
60635
- if (this .multiTexCoords .length)
60636
- {
60637
- const maxTextures = this .getBrowser () .getMaxTextures ();
60638
-
60639
- for (let i = this .multiTexCoords .length; i < maxTextures; ++ i)
60640
- this .multiTexCoords [i] = this .multiTexCoords .at (-1);
60641
-
60642
- this .multiTexCoords .length = maxTextures;
60643
- }
60644
-
60645
60739
  // Transfer arrays and update.
60646
60740
 
60647
60741
  this .transfer ();
@@ -60821,8 +60915,7 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
60821
60915
  attribBuffers = this .attribBuffers,
60822
60916
  primitiveMode = browser .getPrimitiveMode (this .primitiveMode);
60823
60917
 
60824
- if (blendModeNode)
60825
- blendModeNode .enable (gl);
60918
+ blendModeNode?.enable (gl);
60826
60919
 
60827
60920
  shaderNode .enable (gl);
60828
60921
  shaderNode .setUniforms (gl, this, renderContext, front);
@@ -60893,8 +60986,7 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
60893
60986
  }
60894
60987
  }
60895
60988
 
60896
- if (blendModeNode)
60897
- blendModeNode .disable (gl);
60989
+ blendModeNode?.disable (gl);
60898
60990
  },
60899
60991
  displaySimpleParticles: function (gl, shaderNode, particleSystem)
60900
60992
  {
@@ -60942,8 +61034,7 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
60942
61034
  attribBuffers = this .attribBuffers,
60943
61035
  primitiveMode = browser .getPrimitiveMode (this .primitiveMode);
60944
61036
 
60945
- if (blendModeNode)
60946
- blendModeNode .enable (gl);
61037
+ blendModeNode?.enable (gl);
60947
61038
 
60948
61039
  // Setup shader.
60949
61040
 
@@ -61013,8 +61104,7 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
61013
61104
  gl .drawArraysInstanced (primitiveMode, 0, this .vertexCount, particleSystem .numParticles);
61014
61105
  }
61015
61106
 
61016
- if (blendModeNode)
61017
- blendModeNode .disable (gl);
61107
+ blendModeNode?.disable (gl);
61018
61108
  },
61019
61109
  });
61020
61110
 
@@ -62432,7 +62522,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62432
62522
  x_ite_Namespace.set ("x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
62433
62523
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
62434
62524
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
62435
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(996);
62525
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(998);
62436
62526
  /*******************************************************************************
62437
62527
  *
62438
62528
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -62497,7 +62587,6 @@ function ImageTexture (executionContext)
62497
62587
  this .addType (Base_X3DConstants.ImageTexture);
62498
62588
 
62499
62589
  this .image = ImageTexture_$("<img></img>");
62500
- this .canvas = ImageTexture_$("<canvas></canvas>");
62501
62590
  this .urlStack = new x_ite_Fields.MFString ();
62502
62591
  }
62503
62592
 
@@ -62512,6 +62601,7 @@ ImageTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
62512
62601
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "url", new x_ite_Fields.MFString ()),
62513
62602
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "autoRefresh", new x_ite_Fields.SFTime ()),
62514
62603
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "autoRefreshTimeLimit", new x_ite_Fields.SFTime (3600)),
62604
+ new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "flipVertically", new x_ite_Fields.SFBool ()),
62515
62605
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "repeatS", new x_ite_Fields.SFBool (true)),
62516
62606
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "repeatT", new x_ite_Fields.SFBool (true)),
62517
62607
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "textureProperties", new x_ite_Fields.SFNode ()),
@@ -62533,6 +62623,8 @@ ImageTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
62533
62623
  Texturing_X3DTexture2DNode.prototype.initialize.call (this);
62534
62624
  Networking_X3DUrlObject.prototype.initialize.call (this);
62535
62625
 
62626
+ this ._flipVertically .addInterest ("set_url__", this);
62627
+
62536
62628
  this .image .on ("load", this .setImage .bind (this));
62537
62629
  this .image .on ("abort error", this .setError .bind (this));
62538
62630
  this .image .prop ("crossOrigin", "Anonymous");
@@ -62580,7 +62672,7 @@ ImageTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
62580
62672
 
62581
62673
  this .loadNext ();
62582
62674
  },
62583
- setImage: function ()
62675
+ setImage: async function ()
62584
62676
  {
62585
62677
  if (DEBUG)
62586
62678
  {
@@ -62591,69 +62683,61 @@ ImageTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
62591
62683
  try
62592
62684
  {
62593
62685
  const
62594
- gl = this .getBrowser () .getContext (),
62595
- image = this .image [0],
62596
- canvas = this .canvas [0],
62597
- cx = canvas .getContext ("2d", { willReadFrequently: true });
62598
-
62599
- let
62600
- width = image .width,
62601
- height = image .height;
62686
+ gl = this .getBrowser () .getContext (),
62687
+ image = this .image [0];
62602
62688
 
62603
62689
  // https://developer.mozilla.org/en-US/docs/Web/API/createImageBitmap
62604
62690
  // createImageBitmap
62605
62691
 
62606
- // Scale image if needed and flip vertically.
62607
-
62608
- if (gl .getVersion () >= 2 || (Algorithm.isPowerOfTwo (width) && Algorithm.isPowerOfTwo (height)))
62692
+ if (gl .getVersion () === 1 && !(Algorithm.isPowerOfTwo (image .width) && Algorithm.isPowerOfTwo (image .height)))
62609
62693
  {
62610
- // Flip Y
62694
+ const
62695
+ canvas = document .createElement ("canvas"),
62696
+ cx = canvas .getContext ("2d", { willReadFrequently: true }),
62697
+ width = Algorithm.nextPowerOfTwo (image .width),
62698
+ height = Algorithm.nextPowerOfTwo (image .height);
62699
+
62700
+ // Flip Y and scale image to next power of two if needed.
62611
62701
 
62612
62702
  canvas .width = width;
62613
62703
  canvas .height = height;
62614
62704
 
62615
62705
  cx .clearRect (0, 0, width, height);
62616
62706
  cx .save ();
62617
- cx .translate (0, height);
62618
- cx .scale (1, -1);
62619
- cx .drawImage (image, 0, 0);
62620
- cx .restore ();
62621
- }
62622
- else
62623
- {
62624
- // Flip Y and scale image to next power of two.
62625
62707
 
62626
- width = Algorithm.nextPowerOfTwo (width);
62627
- height = Algorithm.nextPowerOfTwo (height);
62628
-
62629
- canvas .width = width;
62630
- canvas .height = height;
62708
+ if (!this ._flipVertically .getValue ())
62709
+ {
62710
+ cx .translate (0, height);
62711
+ cx .scale (1, -1);
62712
+ }
62631
62713
 
62632
- cx .clearRect (0, 0, width, height);
62633
- cx .save ();
62634
- cx .translate (0, height);
62635
- cx .scale (1, -1);
62636
62714
  cx .drawImage (image, 0, 0, image .width, image .height, 0, 0, width, height);
62637
62715
  cx .restore ();
62638
- }
62639
62716
 
62640
- // Determine image alpha.
62717
+ // Determine image alpha.
62641
62718
 
62642
- const data = cx .getImageData (0, 0, width, height) .data;
62719
+ const
62720
+ data = cx .getImageData (0, 0, width, height, { premultipliedAlpha: false }) .data,
62721
+ transparent = this .isImageTransparent (data);
62643
62722
 
62644
- let transparent = false;
62723
+ // Upload image to GPU.
62645
62724
 
62646
- for (let i = 3, length = data .length; i < length; i += 4)
62647
- {
62648
- if (data [i] !== 255)
62649
- {
62650
- transparent = true;
62651
- break;
62652
- }
62725
+ this .setTexture (width, height, transparent, data, false);
62726
+ this .setLoadState (Base_X3DConstants.COMPLETE_STATE);
62653
62727
  }
62728
+ else
62729
+ {
62730
+ const
62731
+ data = await this .getImageData (image),
62732
+ transparent = this .isImageTransparent (data),
62733
+ width = image .width,
62734
+ height = image .height;
62654
62735
 
62655
- this .setTexture (width, height, transparent, data, false);
62656
- this .setLoadState (Base_X3DConstants.COMPLETE_STATE);
62736
+ // Upload image to GPU.
62737
+
62738
+ this .setTexture (width, height, transparent, data, !this ._flipVertically .getValue ());
62739
+ this .setLoadState (Base_X3DConstants.COMPLETE_STATE);
62740
+ }
62657
62741
  }
62658
62742
  catch (error)
62659
62743
  {
@@ -62661,6 +62745,54 @@ ImageTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
62661
62745
  this .setError ({ type: error .message });
62662
62746
  }
62663
62747
  },
62748
+ getImageData: async function (image)
62749
+ {
62750
+ const
62751
+ gl = this .getBrowser () .getContext (),
62752
+ framebuffer = gl .createFramebuffer (),
62753
+ texture = gl .createTexture (),
62754
+ data = new Uint8Array (image .width * image .height * 4);
62755
+
62756
+ gl .bindFramebuffer (gl.FRAMEBUFFER, framebuffer);
62757
+ gl .bindTexture (gl.TEXTURE_2D, texture);
62758
+ gl .framebufferTexture2D (gl.FRAMEBUFFER, gl .COLOR_ATTACHMENT0, gl .TEXTURE_2D, texture, 0);
62759
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
62760
+ await gl .readPixelsAsync (0, 0, image .width, image .height, gl.RGBA, gl.UNSIGNED_BYTE, data);
62761
+ gl .deleteFramebuffer (framebuffer);
62762
+ gl .deleteTexture (texture);
62763
+
62764
+ return data;
62765
+ },
62766
+ isImageTransparent: function (data)
62767
+ {
62768
+ for (let i = 3, length = data .length; i < length; i += 4)
62769
+ {
62770
+ if (data [i] !== 255)
62771
+ return true;
62772
+ }
62773
+
62774
+ return false;
62775
+ },
62776
+ flipImage (data, width, height, components)
62777
+ {
62778
+ const
62779
+ height1_2 = height >> 1,
62780
+ bytesPerRow = width * components,
62781
+ tmp = new Uint8Array (bytesPerRow);
62782
+
62783
+ for (let y = 0; y < height1_2; ++ y)
62784
+ {
62785
+ const
62786
+ top = y * bytesPerRow,
62787
+ bottom = (height - y - 1) * bytesPerRow;
62788
+
62789
+ tmp .set (data .subarray (top, top + bytesPerRow));
62790
+ data .copyWithin (top, bottom, bottom + bytesPerRow);
62791
+ data .set (tmp, bottom);
62792
+ }
62793
+
62794
+ return data;
62795
+ },
62664
62796
  dispose: function ()
62665
62797
  {
62666
62798
  Networking_X3DUrlObject.prototype.dispose.call (this);
@@ -63046,13 +63178,17 @@ X3DLayerNode .prototype = Object .assign (Object .create (Core_X3DNode.prototype
63046
63178
  {
63047
63179
  return this .collisionTime;
63048
63180
  },
63049
- lookAt: function (factor = 1, straighten = false)
63181
+ viewAll: function (factor = 1, straighten = false)
63050
63182
  {
63051
63183
  const
63052
63184
  viewpointNode = this .getViewpoint (),
63053
63185
  bbox = this .getBBox (new Geometry_Box3 ()) .multRight (Numbers_Matrix4.inverse (viewpointNode .getModelMatrix ()));
63054
63186
 
63055
- viewpointNode .lookAt (this, bbox .center, viewpointNode .getLookAtDistance (bbox), factor, straighten);
63187
+ viewpointNode .lookAt (this, bbox .center, viewpointNode .getLookAtDistance (bbox), factor, straighten);
63188
+ },
63189
+ straightenView: function ()
63190
+ {
63191
+ this .getViewpoint () .straightenView (this);
63056
63192
  },
63057
63193
  set_viewport__: function ()
63058
63194
  {
@@ -64599,7 +64735,6 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64599
64735
  this .scaleOrientationInterpolator .setup ();
64600
64736
  this .fieldOfViewScaleInterpolator .setup ();
64601
64737
 
64602
- this .timeSensor ._isActive .addFieldInterest (this ._transitionActive);
64603
64738
  this .timeSensor ._fraction_changed .addFieldInterest (this .easeInEaseOut ._set_fraction);
64604
64739
 
64605
64740
  this .easeInEaseOut ._modifiedFraction_changed .addFieldInterest (this .positionInterpolator ._set_fraction);
@@ -64667,10 +64802,18 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64667
64802
  },
64668
64803
  set_active__: function (navigationInfoNode, active)
64669
64804
  {
64670
- if (this ._isBound .getValue () && ! active .getValue () && this .timeSensor ._fraction_changed .getValue () === 1)
64671
- {
64672
- navigationInfoNode ._transitionComplete = true;
64673
- }
64805
+ if (active .getValue ())
64806
+ return;
64807
+
64808
+ this .timeSensor ._isActive .removeInterest ("set_active__", this);
64809
+
64810
+ if (!this ._isBound .getValue ())
64811
+ return;
64812
+
64813
+ if (this .timeSensor ._fraction_changed .getValue () !== 1)
64814
+ return;
64815
+
64816
+ navigationInfoNode ._transitionComplete = true;
64674
64817
  },
64675
64818
  setInterpolators: function () { },
64676
64819
  getPosition: function ()
@@ -64753,6 +64896,11 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64753
64896
  if (this ._viewAll .getValue ())
64754
64897
  this .viewAll (layerNode .getBBox (new Geometry_Box3 ()));
64755
64898
 
64899
+ if (this .getBrowser () .getBrowserOption ("StraightenHorizon"))
64900
+ {
64901
+ this ._orientationOffset = this .straightenHorizon (this .getUserOrientation ()) .multLeft (this .getOrientation () .copy () .inverse ());
64902
+ }
64903
+
64756
64904
  // Handle NavigationInfo.
64757
64905
 
64758
64906
  const
@@ -64801,7 +64949,7 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64801
64949
  }
64802
64950
  }
64803
64951
 
64804
- layerNode .getNavigationInfo () ._transitionStart = true;
64952
+ navigationInfoNode ._transitionStart = true;
64805
64953
 
64806
64954
  this .timeSensor ._cycleInterval = transitionTime;
64807
64955
  this .timeSensor ._stopTime = this .getBrowser () .getCurrentTime ();
@@ -64820,11 +64968,13 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64820
64968
  this ._scaleOrientationOffset = relative .scaleOrientation;
64821
64969
 
64822
64970
  this .setInterpolators (fromViewpointNode, relative);
64823
-
64824
- this ._transitionActive = true;
64825
64971
  }
64826
64972
  else
64827
64973
  {
64974
+ const navigationInfoNode = layerNode .getNavigationInfo ();
64975
+
64976
+ navigationInfoNode ._transitionComplete = true;
64977
+
64828
64978
  const relative = this .getRelativeTransformation (fromViewpointNode);
64829
64979
 
64830
64980
  this ._positionOffset = relative .position;
@@ -64849,6 +64999,11 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64849
64999
  this ._centerOfRotationOffset = Numbers_Vector3.Zero;
64850
65000
  this ._fieldOfViewScale = 1;
64851
65001
 
65002
+ if (this .getBrowser () .getBrowserOption ("StraightenHorizon"))
65003
+ {
65004
+ this ._orientationOffset = this .straightenHorizon (this .getUserOrientation ()) .multLeft (this .getOrientation () .copy () .inverse ());
65005
+ }
65006
+
64852
65007
  this .set_nearDistance__ ();
64853
65008
  this .set_farDistance__ ();
64854
65009
  },
@@ -64894,7 +65049,7 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64894
65049
  x .assign (up) .cross (z) .normalize ();
64895
65050
  y .assign (z) .cross (x) .normalize ();
64896
65051
 
64897
- m .set (x.x, x.y, x.z, y.x, y.y, y.z, z.x, z.y, z.z);
65052
+ m .set (... x, ... y, ... z);
64898
65053
  r .setMatrix (m);
64899
65054
 
64900
65055
  return r;
@@ -64923,14 +65078,10 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64923
65078
  const
64924
65079
  offset = point .copy () .add (this .getUserOrientation () .multVecRot (new Numbers_Vector3 (0, 0, distance))) .subtract (this .getPosition ());
64925
65080
 
64926
- layerNode .getNavigationInfo () ._transitionStart = true;
64927
-
64928
- this .timeSensor ._cycleInterval = 0.2;
65081
+ this .timeSensor ._cycleInterval = 1;
64929
65082
  this .timeSensor ._stopTime = this .getBrowser () .getCurrentTime ();
64930
65083
  this .timeSensor ._startTime = this .getBrowser () .getCurrentTime ();
64931
65084
 
64932
- this .timeSensor ._isActive .addInterest ("set_active__", this, layerNode .getNavigationInfo ());
64933
-
64934
65085
  this .easeInEaseOut ._easeInEaseOut = new x_ite_Fields.MFVec2f (new x_ite_Fields.SFVec2f (0, 1), new x_ite_Fields.SFVec2f (1, 0));
64935
65086
 
64936
65087
  const
@@ -64953,19 +65104,17 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64953
65104
 
64954
65105
  this ._fieldOfViewScale = 1;
64955
65106
  this ._centerOfRotationOffset = Numbers_Vector3.subtract (point, this .getCenterOfRotation ());
65107
+ this .nearDistance = Math .min (distance / 2, 0.125);
65108
+ this .farDistance = this .nearDistance * this .getMaxFarValue () / 0.125;
64956
65109
 
64957
65110
  this .setInterpolators (this, relative);
64958
65111
  },
64959
- straighten: function (layerNode, horizon)
65112
+ straightenView: function (layerNode)
64960
65113
  {
64961
- layerNode .getNavigationInfo () ._transitionStart = true;
64962
-
64963
- this .timeSensor ._cycleInterval = 0.4;
65114
+ this .timeSensor ._cycleInterval = 1;
64964
65115
  this .timeSensor ._stopTime = this .getBrowser () .getCurrentTime ();
64965
65116
  this .timeSensor ._startTime = this .getBrowser () .getCurrentTime ();
64966
65117
 
64967
- this .timeSensor ._isActive .addInterest ("set_active__", this, layerNode .getNavigationInfo ());
64968
-
64969
65118
  this .easeInEaseOut ._easeInEaseOut = new x_ite_Fields.MFVec2f (new x_ite_Fields.SFVec2f (0, 1), new x_ite_Fields.SFVec2f (1, 0));
64970
65119
 
64971
65120
  const rotation = Numbers_Rotation4.multRight (Numbers_Rotation4.inverse (this .getOrientation ()), this .straightenHorizon (this .getUserOrientation ()));
@@ -64988,7 +65137,7 @@ X3DViewpointNode .prototype = Object .assign (Object .create (Core_X3DBindableNo
64988
65137
  localZAxis = new Numbers_Vector3 (0, 0, 0),
64989
65138
  rotation = new Numbers_Rotation4 (0, 0, 1, 0);
64990
65139
 
64991
- return function (orientation, upVector = this .getUpVector ())
65140
+ return function (orientation, upVector = this .getUpVector (true))
64992
65141
  {
64993
65142
  orientation .multVecRot (localXAxis .assign (Numbers_Vector3.xAxis) .negate ());
64994
65143
  orientation .multVecRot (localZAxis .assign (Numbers_Vector3.zAxis));
@@ -66674,7 +66823,7 @@ const X3DWorld_default_ = X3DWorld;
66674
66823
  x_ite_Namespace.set ("x_ite/Execution/X3DWorld", X3DWorld_default_);
66675
66824
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
66676
66825
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
66677
- /* provided dependency */ var FileLoader_$ = __webpack_require__(996);
66826
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(998);
66678
66827
  /*******************************************************************************
66679
66828
  *
66680
66829
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66809,7 +66958,7 @@ FileLoader .prototype = Object .assign (Object .create (Base_X3DObject.prototype
66809
66958
  else
66810
66959
  scene .setExecutionContext (this .executionContext);
66811
66960
 
66812
- scene .setWorldURL (decodeURI (new URL (worldURL, this .getReferer ()) .href));
66961
+ scene .setWorldURL (new URL (worldURL, this .getReferer ()) .href);
66813
66962
 
66814
66963
  if (success)
66815
66964
  success = this .setScene .bind (this, scene, success, error);
@@ -68132,9 +68281,9 @@ X3DExecutionContext .prototype = Object .assign (Object .create (Base_X3DBaseNod
68132
68281
  {
68133
68282
  return this [_namedNodes];
68134
68283
  },
68135
- getUniqueName: function (name = "")
68284
+ getUniqueName: function (name)
68136
68285
  {
68137
- return getUniqueName .call (this, _namedNodes, name);
68286
+ return getUniqueName (this [_namedNodes], name);
68138
68287
  },
68139
68288
  addImportedNode: function (inlineNode, exportedName, importedName)
68140
68289
  {
@@ -68315,9 +68464,9 @@ X3DExecutionContext .prototype = Object .assign (Object .create (Base_X3DBaseNod
68315
68464
  {
68316
68465
  return this [_protos];
68317
68466
  },
68318
- getUniqueProtoName: function (name = "")
68467
+ getUniqueProtoName: function (name)
68319
68468
  {
68320
- return getUniqueName .call (this, _protos, name);
68469
+ return getUniqueName (this [_protos], name);
68321
68470
  },
68322
68471
  getExternProtoDeclaration: function (name)
68323
68472
  {
@@ -68379,9 +68528,9 @@ X3DExecutionContext .prototype = Object .assign (Object .create (Base_X3DBaseNod
68379
68528
  {
68380
68529
  return this [_externprotos];
68381
68530
  },
68382
- getUniqueExternProtoName: function (name = "")
68531
+ getUniqueExternProtoName: function (name)
68383
68532
  {
68384
- return getUniqueName .call (this, _externprotos, name);
68533
+ return getUniqueName (this [_externprotos], name);
68385
68534
  },
68386
68535
  addRoute: function (sourceNode, sourceField, destinationNode, destinationField)
68387
68536
  {
@@ -68768,36 +68917,6 @@ X3DExecutionContext .prototype = Object .assign (Object .create (Base_X3DBaseNod
68768
68917
  },
68769
68918
  });
68770
68919
 
68771
- const getUniqueName = (function ()
68772
- {
68773
- const _TrailingNumbers = /_\d+$/;
68774
-
68775
- return function (array, name = "")
68776
- {
68777
- name = String (name) .replace (_TrailingNumbers, "");
68778
-
68779
- let
68780
- newName = name,
68781
- i = 64;
68782
-
68783
- for (; i;)
68784
- {
68785
- if (! (this [array] .has (newName) || newName .length === 0))
68786
- break;
68787
-
68788
- const
68789
- min = i,
68790
- max = i <<= 1;
68791
-
68792
- newName = name;
68793
- newName += '_';
68794
- newName += Math .round (Algorithm.random (min, max));
68795
- }
68796
-
68797
- return newName;
68798
- };
68799
- })();
68800
-
68801
68920
  for (const key of Reflect .ownKeys (X3DExecutionContext .prototype))
68802
68921
  Object .defineProperty (X3DExecutionContext .prototype, key, { enumerable: false });
68803
68922
 
@@ -68878,7 +68997,7 @@ const X3DExecutionContext_default_ = X3DExecutionContext;
68878
68997
  x_ite_Namespace.set ("x_ite/Execution/X3DExecutionContext", X3DExecutionContext_default_);
68879
68998
  /* harmony default export */ const Execution_X3DExecutionContext = (X3DExecutionContext_default_);
68880
68999
  ;// CONCATENATED MODULE: ./src/x_ite/Configuration/ComponentInfo.js
68881
- /* provided dependency */ var ComponentInfo_$ = __webpack_require__(996);
69000
+ /* provided dependency */ var ComponentInfo_$ = __webpack_require__(998);
68882
69001
  /*******************************************************************************
68883
69002
  *
68884
69003
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -69653,6 +69772,7 @@ x_ite_Namespace.set ("x_ite/Execution/ExportedNodesArray", ExportedNodesArray_de
69653
69772
 
69654
69773
 
69655
69774
 
69775
+
69656
69776
  Configuration_SupportedNodes.addAbstractType ("X3DScene", X3DScene);
69657
69777
 
69658
69778
  const
@@ -69953,6 +70073,10 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
69953
70073
  {
69954
70074
  return this [_exportedNodes];
69955
70075
  },
70076
+ getUniqueExportName: function (name)
70077
+ {
70078
+ return getUniqueName (this [_exportedNodes], name);
70079
+ },
69956
70080
  addRootNode: function (node)
69957
70081
  {
69958
70082
  node = Fields_SFNodeCache.get (Base_X3DCast (Base_X3DConstants.X3DNode, node, false));
@@ -70844,7 +70968,7 @@ const DataStorage_default_ = DataStorage;
70844
70968
  x_ite_Namespace.set ("standard/Utility/DataStorage", DataStorage_default_);
70845
70969
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
70846
70970
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
70847
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(996);
70971
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(998);
70848
70972
  /*******************************************************************************
70849
70973
  *
70850
70974
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -73143,15 +73267,9 @@ X3DSingleTextureCoordinateNode .prototype = Object .assign (Object .create (Text
73143
73267
  },
73144
73268
  getTextureCoordinateMapping: function (textureCoordinateMapping, channel = 0)
73145
73269
  {
73146
- if (this ._mapping .getValue ())
73147
- textureCoordinateMapping .set (this ._mapping .getValue (), channel);
73148
- },
73149
- setShaderUniforms: function (gl, shaderObject)
73150
- {
73151
- for (let i = 0, length = shaderObject .x3d_MaxTextures; i < length; ++ i)
73152
- this .setShaderUniformsToChannel (gl, shaderObject, i);
73270
+ textureCoordinateMapping .set (this ._mapping .getValue () || channel, channel);
73153
73271
  },
73154
- setShaderUniformsToChannel: function (gl, shaderObject, channel = 0)
73272
+ setShaderUniforms: function (gl, shaderObject, channel = 0)
73155
73273
  {
73156
73274
  gl .uniform1i (shaderObject .x3d_TextureCoordinateGeneratorMode [channel], 0);
73157
73275
  },
@@ -74938,8 +75056,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
74938
75056
 
74939
75057
  // Render triangles.
74940
75058
 
74941
- if (blendModeNode)
74942
- blendModeNode .enable (gl);
75059
+ blendModeNode?.enable (gl);
74943
75060
 
74944
75061
  // Setup shader.
74945
75062
 
@@ -74981,8 +75098,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
74981
75098
  gl .enable (gl .CULL_FACE);
74982
75099
  gl .drawArrays (primitiveMode, 0, this .vertexCount * 3);
74983
75100
 
74984
- if (blendModeNode)
74985
- blendModeNode .disable (gl);
75101
+ blendModeNode?.disable (gl);
74986
75102
 
74987
75103
  return;
74988
75104
  }
@@ -74990,8 +75106,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
74990
75106
 
74991
75107
  const primitiveMode = browser .getPrimitiveMode (this .getPrimitiveMode ());
74992
75108
 
74993
- if (blendModeNode)
74994
- blendModeNode .enable (gl);
75109
+ blendModeNode?.enable (gl);
74995
75110
 
74996
75111
  // Setup shader.
74997
75112
 
@@ -75021,8 +75136,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
75021
75136
 
75022
75137
  gl .drawArrays (primitiveMode, 0, this .vertexCount);
75023
75138
 
75024
- if (blendModeNode)
75025
- blendModeNode .disable (gl);
75139
+ blendModeNode?.disable (gl);
75026
75140
 
75027
75141
  gl .lineWidth (1);
75028
75142
  };
@@ -75038,8 +75152,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
75038
75152
  attribBuffers = this .getAttribBuffers (),
75039
75153
  primitiveMode = browser .getPrimitiveMode (this .getPrimitiveMode ());
75040
75154
 
75041
- if (blendModeNode)
75042
- blendModeNode .enable (gl);
75155
+ blendModeNode?.enable (gl);
75043
75156
 
75044
75157
  // Setup shader.
75045
75158
 
@@ -75078,8 +75191,7 @@ X3DLineGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DGe
75078
75191
 
75079
75192
  gl .drawArraysInstanced (primitiveMode, 0, this .vertexCount, particleSystem .numParticles);
75080
75193
 
75081
- if (blendModeNode)
75082
- blendModeNode .disable (gl);
75194
+ blendModeNode?.disable (gl);
75083
75195
 
75084
75196
  gl .lineWidth (1);
75085
75197
  },
@@ -77334,8 +77446,8 @@ const OrientationChaser_default_ = OrientationChaser;
77334
77446
  x_ite_Namespace.set ("x_ite/Components/Followers/OrientationChaser", OrientationChaser_default_);
77335
77447
  /* harmony default export */ const Followers_OrientationChaser = (OrientationChaser_default_);
77336
77448
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
77337
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(549);
77338
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(996);
77449
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(136);
77450
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(998);
77339
77451
  /*******************************************************************************
77340
77452
  *
77341
77453
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -78127,7 +78239,7 @@ ExamineViewer .prototype = Object .assign (Object .create (Navigation_X3DViewer.
78127
78239
  .multRight (orientationOffsetBefore);
78128
78240
 
78129
78241
  if (straightenHorizon)
78130
- viewpoint .straightenHorizon (userOrientation, viewpoint .getUpVector (true));
78242
+ viewpoint .straightenHorizon (userOrientation);
78131
78243
 
78132
78244
  const orientationOffsetAfter = orientationOffset
78133
78245
  .assign (viewpoint .getOrientation ())
@@ -78199,8 +78311,8 @@ const ExamineViewer_default_ = ExamineViewer;
78199
78311
  x_ite_Namespace.set ("x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
78200
78312
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
78201
78313
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
78202
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(549);
78203
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(996);
78314
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(136);
78315
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(998);
78204
78316
  /*******************************************************************************
78205
78317
  *
78206
78318
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79150,8 +79262,8 @@ const FlyViewer_default_ = FlyViewer;
79150
79262
  x_ite_Namespace.set ("x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
79151
79263
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
79152
79264
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
79153
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(549);
79154
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(996);
79265
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(136);
79266
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(998);
79155
79267
  /*******************************************************************************
79156
79268
  *
79157
79269
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79460,8 +79572,8 @@ const NoneViewer_default_ = NoneViewer;
79460
79572
  x_ite_Namespace.set ("x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
79461
79573
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
79462
79574
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
79463
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(549);
79464
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(996);
79575
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(136);
79576
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(998);
79465
79577
  /*******************************************************************************
79466
79578
  *
79467
79579
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -81064,8 +81176,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
81064
81176
  x_ite_Namespace.set ("x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
81065
81177
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
81066
81178
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
81067
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(549);
81068
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(996);
81179
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(136);
81180
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(998);
81069
81181
  /*******************************************************************************
81070
81182
  *
81071
81183
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -82087,8 +82199,8 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
82087
82199
  x_ite_Namespace.set ("x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
82088
82200
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
82089
82201
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
82090
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(996);
82091
- /* provided dependency */ var ResizeSensor = __webpack_require__(364);
82202
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(998);
82203
+ /* provided dependency */ var ResizeSensor = __webpack_require__(599);
82092
82204
  /*******************************************************************************
82093
82205
  *
82094
82206
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -82551,6 +82663,14 @@ uniform float x3d_AlphaCutoff;
82551
82663
  #if X3D_NUM_TEXTURE_COORDINATES > 1
82552
82664
  varying vec4 texCoord1;
82553
82665
  #endif
82666
+
82667
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
82668
+ varying vec4 texCoord2;
82669
+ #endif
82670
+
82671
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
82672
+ varying vec4 texCoord3;
82673
+ #endif
82554
82674
  #endif
82555
82675
  #else
82556
82676
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
@@ -82561,6 +82681,14 @@ uniform float x3d_AlphaCutoff;
82561
82681
  #if X3D_NUM_TEXTURE_COORDINATES > 1
82562
82682
  vec4 texCoord1 = vec4 (0.0, 0.0, 0.0, 1.0);
82563
82683
  #endif
82684
+
82685
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
82686
+ vec4 texCoord2 = vec4 (0.0, 0.0, 0.0, 1.0);
82687
+ #endif
82688
+
82689
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
82690
+ vec4 texCoord3 = vec4 (0.0, 0.0, 0.0, 1.0);
82691
+ #endif
82564
82692
  #endif
82565
82693
  #endif
82566
82694
 
@@ -82606,7 +82734,7 @@ fragment_main ()
82606
82734
  #endif
82607
82735
 
82608
82736
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
82609
- setTexCoords ();
82737
+ setPointTexCoords ();
82610
82738
  #endif
82611
82739
 
82612
82740
  vec4 finalColor = getMaterialColor ();
@@ -82783,18 +82911,6 @@ getNormalVector (const in float normalScale)
82783
82911
 
82784
82912
  x_ite_Namespace.set ("assets/shaders/webgl1/include/Normal.glsl", Normal_glsl_default_);
82785
82913
  /* harmony default export */ const Normal_glsl = (Normal_glsl_default_);
82786
- ;// CONCATENATED MODULE: ./src/assets/shaders/webgl1/include/Particle.glsl.js
82787
- const Particle_glsl_default_ = /* glsl */ `
82788
- #if defined (X3D_PHYSICAL_MATERIAL)
82789
- #define getTexCoord(texCoord) vec4(texCoord .x, 1.0 - texCoord .y, texCoord .z, texCoord .w);
82790
- #else
82791
- #define getTexCoord(texCoord) (texCoord)
82792
- #endif
82793
- `;
82794
- ;
82795
-
82796
- x_ite_Namespace.set ("assets/shaders/webgl1/include/Particle.glsl", Particle_glsl_default_);
82797
- /* harmony default export */ const Particle_glsl = (Particle_glsl_default_);
82798
82914
  ;// CONCATENATED MODULE: ./src/assets/shaders/webgl1/include/Perlin.glsl.js
82799
82915
  const Perlin_glsl_default_ = /* glsl */ `
82800
82916
  //https://gist.github.com/patriciogonzalezvivo/670c22f3966e662d2f83
@@ -82846,7 +82962,7 @@ const Point_glsl_default_ = /* glsl */ `
82846
82962
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
82847
82963
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
82848
82964
  void
82849
- setTexCoords ()
82965
+ setPointTexCoords ()
82850
82966
  {
82851
82967
  vec4 texCoord = vec4 (gl_PointCoord .x, 1.0 - gl_PointCoord .y, 0.0, 1.0);
82852
82968
 
@@ -82857,13 +82973,21 @@ setTexCoords ()
82857
82973
  #if X3D_NUM_TEXTURE_COORDINATES > 1
82858
82974
  texCoord1 = texCoord;
82859
82975
  #endif
82976
+
82977
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
82978
+ texCoord2 = texCoord;
82979
+ #endif
82980
+
82981
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
82982
+ texCoord3 = texCoord;
82983
+ #endif
82860
82984
  }
82861
82985
 
82862
82986
  #define getPointColor(color) (color)
82863
82987
 
82864
82988
  #else
82865
82989
 
82866
- #define setTexCoords()
82990
+ #define setPointTexCoords()
82867
82991
 
82868
82992
  varying float pointSize;
82869
82993
 
@@ -83278,6 +83402,16 @@ getTextureMatrix (const in int i)
83278
83402
  textureMatrix = x3d_TextureMatrix [1];
83279
83403
  #endif
83280
83404
 
83405
+ #if X3D_NUM_TEXTURE_TRANSFORMS > 2
83406
+ else if (i == 2)
83407
+ textureMatrix = x3d_TextureMatrix [2];
83408
+ #endif
83409
+
83410
+ #if X3D_NUM_TEXTURE_TRANSFORMS > 3
83411
+ else if (i == 3)
83412
+ textureMatrix = x3d_TextureMatrix [3];
83413
+ #endif
83414
+
83281
83415
  return textureMatrix;
83282
83416
  #else
83283
83417
  return x3d_TextureMatrix [0];
@@ -83300,6 +83434,16 @@ getTexCoord (const in int i)
83300
83434
  texCoord = texCoord1;
83301
83435
  #endif
83302
83436
 
83437
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
83438
+ else if (i == 2)
83439
+ texCoord = texCoord2;
83440
+ #endif
83441
+
83442
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
83443
+ else if (i == 3)
83444
+ texCoord = texCoord3;
83445
+ #endif
83446
+
83303
83447
  return texCoord;
83304
83448
  #else
83305
83449
  return texCoord0;
@@ -83401,6 +83545,16 @@ getTexCoord (const in int textureTransformMapping, const in int textureCoordinat
83401
83545
  texCoord = getTexCoord (x3d_TextureCoordinateGenerator [1], textureTransformMapping, textureCoordinateMapping);
83402
83546
  #endif
83403
83547
 
83548
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
83549
+ else if (textureCoordinateMapping == 2)
83550
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [2], textureTransformMapping, textureCoordinateMapping);
83551
+ #endif
83552
+
83553
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
83554
+ else if (textureCoordinateMapping == 3)
83555
+ texCoord = getTexCoord (x3d_TextureCoordinateGenerator [3], textureTransformMapping, textureCoordinateMapping);
83556
+ #endif
83557
+
83404
83558
  texCoord .stp /= texCoord .q;
83405
83559
 
83406
83560
  #if defined (X3D_GEOMETRY_2D)
@@ -83465,7 +83619,7 @@ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
83465
83619
  {
83466
83620
  // Get texture color.
83467
83621
 
83468
- vec3 texCoord = getTexCoord (i, i);
83622
+ vec3 texCoord = getTexCoord (min (i, X3D_NUM_TEXTURE_TRANSFORMS - 1), min (i, X3D_NUM_TEXTURE_COORDINATES - 1));
83469
83623
  vec4 textureColor = getTexture (i, texCoord);
83470
83624
 
83471
83625
  // Multi texturing
@@ -83781,6 +83935,14 @@ uniform mat4 x3d_ModelViewMatrix;
83781
83935
  #if X3D_NUM_TEXTURE_COORDINATES > 1
83782
83936
  attribute vec4 x3d_TexCoord1;
83783
83937
  #endif
83938
+
83939
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
83940
+ attribute vec4 x3d_TexCoord2;
83941
+ #endif
83942
+
83943
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
83944
+ attribute vec4 x3d_TexCoord3;
83945
+ #endif
83784
83946
  #endif
83785
83947
  #endif
83786
83948
 
@@ -83805,6 +83967,14 @@ attribute vec4 x3d_Vertex;
83805
83967
  #if X3D_NUM_TEXTURE_COORDINATES > 1
83806
83968
  varying vec4 texCoord1;
83807
83969
  #endif
83970
+
83971
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
83972
+ varying vec4 texCoord2;
83973
+ #endif
83974
+
83975
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
83976
+ varying vec4 texCoord3;
83977
+ #endif
83808
83978
  #endif
83809
83979
  #endif
83810
83980
 
@@ -83830,7 +84000,6 @@ varying vec3 vertex;
83830
84000
 
83831
84001
  // Main
83832
84002
 
83833
- #pragma X3D include "Particle.glsl"
83834
84003
  #pragma X3D include "PointSize.glsl"
83835
84004
 
83836
84005
  void
@@ -83859,11 +84028,19 @@ vertex_main ()
83859
84028
  #if ! defined (X3D_GEOMETRY_0D) && ! defined (X3D_GEOMETRY_1D)
83860
84029
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
83861
84030
  #if X3D_NUM_TEXTURE_COORDINATES > 0
83862
- texCoord0 = getTexCoord (x3d_TexCoord0);
84031
+ texCoord0 = x3d_TexCoord0;
83863
84032
  #endif
83864
84033
 
83865
84034
  #if X3D_NUM_TEXTURE_COORDINATES > 1
83866
- texCoord1 = getTexCoord (x3d_TexCoord1);
84035
+ texCoord1 = x3d_TexCoord1;
84036
+ #endif
84037
+
84038
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
84039
+ texCoord2 = x3d_TexCoord2;
84040
+ #endif
84041
+
84042
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
84043
+ texCoord3 = x3d_TexCoord3;
83867
84044
  #endif
83868
84045
  #endif
83869
84046
  #endif
@@ -84003,6 +84180,14 @@ uniform float x3d_AlphaCutoff;
84003
84180
  #if X3D_NUM_TEXTURE_COORDINATES > 1
84004
84181
  in vec4 texCoord1;
84005
84182
  #endif
84183
+
84184
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
84185
+ in vec4 texCoord2;
84186
+ #endif
84187
+
84188
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
84189
+ in vec4 texCoord3;
84190
+ #endif
84006
84191
  #endif
84007
84192
  #else
84008
84193
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
@@ -84013,6 +84198,14 @@ uniform float x3d_AlphaCutoff;
84013
84198
  #if X3D_NUM_TEXTURE_COORDINATES > 1
84014
84199
  vec4 texCoord1 = vec4 (0.0, 0.0, 0.0, 1.0);
84015
84200
  #endif
84201
+
84202
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
84203
+ vec4 texCoord2 = vec4 (0.0, 0.0, 0.0, 1.0);
84204
+ #endif
84205
+
84206
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
84207
+ vec4 texCoord3 = vec4 (0.0, 0.0, 0.0, 1.0);
84208
+ #endif
84016
84209
  #endif
84017
84210
  #endif
84018
84211
 
@@ -84065,6 +84258,8 @@ fragment_main ()
84065
84258
  #endif
84066
84259
 
84067
84260
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
84261
+ setPointTexCoords ();
84262
+ #elif defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
84068
84263
  setTexCoords ();
84069
84264
  #endif
84070
84265
 
@@ -84272,11 +84467,13 @@ getNormalVector (const in float normalScale)
84272
84467
  x_ite_Namespace.set ("assets/shaders/webgl2/include/Normal.glsl", include_Normal_glsl_default_);
84273
84468
  /* harmony default export */ const include_Normal_glsl = (include_Normal_glsl_default_);
84274
84469
  ;// CONCATENATED MODULE: ./src/assets/shaders/webgl2/include/Particle.glsl.js
84275
- const include_Particle_glsl_default_ = /* glsl */ `
84470
+ const Particle_glsl_default_ = /* glsl */ `
84276
84471
  #if defined (X3D_PARTICLE_SYSTEM)
84472
+ #if defined (X3D_TEX_COORD_RAMP)
84473
+
84474
+ uniform sampler2D x3d_TexCoordRamp;
84277
84475
 
84278
84476
  in vec4 x3d_Particle;
84279
- in mat4 x3d_ParticleMatrix;
84280
84477
 
84281
84478
  vec4
84282
84479
  texelFetch (const in sampler2D sampler, const in int index, const in int lod)
@@ -84288,12 +84485,8 @@ texelFetch (const in sampler2D sampler, const in int index, const in int lod)
84288
84485
  return t;
84289
84486
  }
84290
84487
 
84291
- #if defined (X3D_TEX_COORD_RAMP)
84292
-
84293
- uniform sampler2D x3d_TexCoordRamp;
84294
-
84295
84488
  vec4
84296
- getParticleTexCoord (const in vec4 texCoord)
84489
+ getTexCoord (const in vec4 texCoord)
84297
84490
  {
84298
84491
  const int map [6] = int [6] (0, 1, 2, 0, 2, 3);
84299
84492
 
@@ -84302,9 +84495,11 @@ getParticleTexCoord (const in vec4 texCoord)
84302
84495
  return texelFetch (x3d_TexCoordRamp, index0 + map [gl_VertexID % 6], 0);
84303
84496
  }
84304
84497
  #else
84305
- #define getParticleTexCoord(texCoord) (texCoord)
84498
+ #define getTexCoord(texCoord) (texCoord)
84306
84499
  #endif
84307
84500
 
84501
+ in mat4 x3d_ParticleMatrix;
84502
+
84308
84503
  vec4
84309
84504
  getVertex (const in vec4 vertex)
84310
84505
  {
@@ -84312,28 +84507,14 @@ getVertex (const in vec4 vertex)
84312
84507
  }
84313
84508
 
84314
84509
  #else
84315
-
84316
- #define getVertex(vertex) (vertex)
84317
- #define getParticleTexCoord(texCoord) (texCoord)
84318
-
84319
- #endif
84320
-
84321
- #if defined (X3D_PHYSICAL_MATERIAL)
84322
- vec4
84323
- getTexCoord (const in vec4 texCoord)
84324
- {
84325
- vec4 t = getParticleTexCoord (texCoord);
84326
-
84327
- return vec4 (t .x, 1.0 - t .y, t .z, t .w);
84328
- }
84329
- #else
84330
- #define getTexCoord(texCoord) getParticleTexCoord(texCoord)
84510
+ #define getVertex(vertex) (vertex)
84511
+ #define getTexCoord(texCoord) (texCoord)
84331
84512
  #endif
84332
84513
  `;
84333
84514
  ;
84334
84515
 
84335
- x_ite_Namespace.set ("assets/shaders/webgl2/include/Particle.glsl", include_Particle_glsl_default_);
84336
- /* harmony default export */ const include_Particle_glsl = (include_Particle_glsl_default_);
84516
+ x_ite_Namespace.set ("assets/shaders/webgl2/include/Particle.glsl", Particle_glsl_default_);
84517
+ /* harmony default export */ const Particle_glsl = (Particle_glsl_default_);
84337
84518
  ;// CONCATENATED MODULE: ./src/assets/shaders/webgl2/include/Perlin.glsl.js
84338
84519
  const include_Perlin_glsl_default_ = /* glsl */ `
84339
84520
  //https://gist.github.com/patriciogonzalezvivo/670c22f3966e662d2f83
@@ -84385,16 +84566,24 @@ const include_Point_glsl_default_ = /* glsl */ `
84385
84566
  #if defined (X3D_GEOMETRY_0D) && defined (X3D_STYLE_PROPERTIES)
84386
84567
  #if defined (X3D_TEXTURE) || defined (X3D_MATERIAL_TEXTURES)
84387
84568
  void
84388
- setTexCoords ()
84569
+ setPointTexCoords ()
84389
84570
  {
84390
84571
  vec4 texCoord = vec4 (gl_PointCoord .x, 1.0 - gl_PointCoord .y, 0.0, 1.0);
84391
84572
 
84392
84573
  #if X3D_NUM_TEXTURE_COORDINATES > 0
84393
- texCoord0 = texCoord;
84574
+ texCoords [0] = texCoord;
84394
84575
  #endif
84395
84576
 
84396
84577
  #if X3D_NUM_TEXTURE_COORDINATES > 1
84397
- texCoord1 = texCoord;
84578
+ texCoords [1] = texCoord;
84579
+ #endif
84580
+
84581
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
84582
+ texCoords [2] = texCoord;
84583
+ #endif
84584
+
84585
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
84586
+ texCoords [3] = texCoord;
84398
84587
  #endif
84399
84588
  }
84400
84589
 
@@ -84402,7 +84591,7 @@ setTexCoords ()
84402
84591
 
84403
84592
  #else
84404
84593
 
84405
- #define setTexCoords()
84594
+ #define setPointTexCoords()
84406
84595
 
84407
84596
  in float pointSize;
84408
84597
 
@@ -84859,25 +85048,22 @@ const include_Texture_glsl_default_ = /* glsl */ `
84859
85048
 
84860
85049
  #pragma X3D include "Perlin.glsl"
84861
85050
 
84862
- vec4
84863
- getTexCoord (const in int i)
85051
+ vec4 texCoords [X3D_NUM_TEXTURE_COORDINATES];
85052
+
85053
+ void
85054
+ setTexCoords ()
84864
85055
  {
85056
+ #if X3D_NUM_TEXTURE_COORDINATES > 0
85057
+ texCoords [0] = texCoord0;
85058
+ #endif
84865
85059
  #if X3D_NUM_TEXTURE_COORDINATES > 1
84866
- switch (i)
84867
- {
84868
- #if X3D_NUM_TEXTURE_COORDINATES > 0
84869
- case 0:
84870
- return texCoord0;
84871
- #endif
84872
- #if X3D_NUM_TEXTURE_COORDINATES > 1
84873
- case 1:
84874
- return texCoord1;
84875
- #endif
84876
- }
84877
-
84878
- return vec4 (0.0);
84879
- #else
84880
- return texCoord0;
85060
+ texCoords [1] = texCoord1;
85061
+ #endif
85062
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
85063
+ texCoords [2] = texCoord2;
85064
+ #endif
85065
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
85066
+ texCoords [3] = texCoord3;
84881
85067
  #endif
84882
85068
  }
84883
85069
 
@@ -84892,7 +85078,7 @@ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinate
84892
85078
  {
84893
85079
  case x3d_None:
84894
85080
  {
84895
- return x3d_TextureMatrix [textureTransformMapping] * getTexCoord (textureCoordinateMapping);
85081
+ return x3d_TextureMatrix [textureTransformMapping] * texCoords [textureCoordinateMapping];
84896
85082
  }
84897
85083
  case x3d_Sphere:
84898
85084
  {
@@ -84961,7 +85147,7 @@ getTexCoord (const in x3d_TextureCoordinateGeneratorParameters textureCoordinate
84961
85147
  }
84962
85148
  default:
84963
85149
  {
84964
- return x3d_TextureMatrix [textureTransformMapping] * getTexCoord (textureCoordinateMapping);
85150
+ return x3d_TextureMatrix [textureTransformMapping] * texCoords [textureCoordinateMapping];
84965
85151
  }
84966
85152
  }
84967
85153
  }
@@ -85039,7 +85225,7 @@ getTextureColor (const in vec4 diffuseColor, const in vec4 specularColor)
85039
85225
  {
85040
85226
  // Get texture color.
85041
85227
 
85042
- vec3 texCoord = getTexCoord (i, i);
85228
+ vec3 texCoord = getTexCoord (min (i, X3D_NUM_TEXTURE_TRANSFORMS - 1), min (i, X3D_NUM_TEXTURE_COORDINATES - 1));
85043
85229
  vec4 textureColor = getTexture (i, texCoord);
85044
85230
 
85045
85231
  // Multi texturing
@@ -85418,6 +85604,14 @@ uniform mat4 x3d_ModelViewMatrix;
85418
85604
  #if X3D_NUM_TEXTURE_COORDINATES > 1
85419
85605
  in vec4 x3d_TexCoord1;
85420
85606
  #endif
85607
+
85608
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
85609
+ in vec4 x3d_TexCoord2;
85610
+ #endif
85611
+
85612
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
85613
+ in vec4 x3d_TexCoord3;
85614
+ #endif
85421
85615
  #endif
85422
85616
  #endif
85423
85617
 
@@ -85442,6 +85636,14 @@ in vec4 x3d_Vertex;
85442
85636
  #if X3D_NUM_TEXTURE_COORDINATES > 1
85443
85637
  out vec4 texCoord1;
85444
85638
  #endif
85639
+
85640
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
85641
+ out vec4 texCoord2;
85642
+ #endif
85643
+
85644
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
85645
+ out vec4 texCoord3;
85646
+ #endif
85445
85647
  #endif
85446
85648
  #endif
85447
85649
 
@@ -85514,6 +85716,14 @@ vertex_main ()
85514
85716
  #if X3D_NUM_TEXTURE_COORDINATES > 1
85515
85717
  texCoord1 = getTexCoord (x3d_TexCoord1);
85516
85718
  #endif
85719
+
85720
+ #if X3D_NUM_TEXTURE_COORDINATES > 2
85721
+ texCoord2 = getTexCoord (x3d_TexCoord2);
85722
+ #endif
85723
+
85724
+ #if X3D_NUM_TEXTURE_COORDINATES > 3
85725
+ texCoord3 = getTexCoord (x3d_TexCoord3);
85726
+ #endif
85517
85727
  #endif
85518
85728
  #endif
85519
85729
 
@@ -85742,7 +85952,7 @@ main ()
85742
85952
  if (getPointColor (vec4 (1.0)) .a < 0.5)
85743
85953
  discard;
85744
85954
 
85745
- setTexCoords ();
85955
+ setPointTexCoords ();
85746
85956
  #endif
85747
85957
 
85748
85958
  gl_FragData [0] = vec4 (vertex, x3d_Id);
@@ -86792,7 +87002,7 @@ main ()
86792
87002
  if (getPointColor (vec4 (1.0)) .a < 0.5)
86793
87003
  discard;
86794
87004
 
86795
- setTexCoords ();
87005
+ setPointTexCoords ();
86796
87006
  #endif
86797
87007
 
86798
87008
  #if defined (X3D_GEOMETRY_1D) && defined (X3D_STYLE_PROPERTIES)
@@ -87637,7 +87847,6 @@ x_ite_Namespace.set ("assets/shaders/webgl2/Unlit.fs", webgl2_Unlit_fs_default_)
87637
87847
 
87638
87848
 
87639
87849
 
87640
-
87641
87850
  /* WebGL 2 */
87642
87851
 
87643
87852
 
@@ -87693,7 +87902,6 @@ const Shaders = {
87693
87902
  Hatch: Hatch_glsl,
87694
87903
  Material: Material_glsl,
87695
87904
  Normal: Normal_glsl,
87696
- Particle: Particle_glsl,
87697
87905
  Perlin: Perlin_glsl,
87698
87906
  Point: Point_glsl,
87699
87907
  PointSize: PointSize_glsl,
@@ -87711,7 +87919,7 @@ const Shaders = {
87711
87919
  Line2: Line2_glsl,
87712
87920
  Material: include_Material_glsl,
87713
87921
  Normal: include_Normal_glsl,
87714
- Particle: include_Particle_glsl,
87922
+ Particle: Particle_glsl,
87715
87923
  Perlin: include_Perlin_glsl,
87716
87924
  Point: include_Point_glsl,
87717
87925
  PointSize: include_PointSize_glsl,
@@ -87973,9 +88181,6 @@ X3DProgrammableShaderObject .prototype =
87973
88181
 
87974
88182
  browser .getRenderingProperties () ._LogarithmicDepthBuffer .addInterest ("set_logarithmicDepthBuffer__", this);
87975
88183
 
87976
- // Use by multi texture nodes.
87977
- this .x3d_MaxTextures = browser .getMaxTextures ();
87978
-
87979
88184
  this .set_logarithmicDepthBuffer__ ();
87980
88185
  },
87981
88186
  set_logarithmicDepthBuffer__: function ()
@@ -87999,12 +88204,14 @@ X3DProgrammableShaderObject .prototype =
87999
88204
  // Get uniforms and attributes.
88000
88205
 
88001
88206
  const
88002
- program = this .getProgram (),
88003
- browser = this .getBrowser (),
88004
- gl = browser .getContext (),
88005
- maxClipPlanes = browser .getMaxClipPlanes (),
88006
- maxLights = browser .getMaxLights (),
88007
- maxTextures = browser .getMaxTextures ();
88207
+ program = this .getProgram (),
88208
+ browser = this .getBrowser (),
88209
+ gl = browser .getContext (),
88210
+ maxClipPlanes = browser .getMaxClipPlanes (),
88211
+ maxLights = browser .getMaxLights (),
88212
+ maxTextures = browser .getMaxTextures (),
88213
+ maxTextureTransforms = browser .getMaxTextureTransforms (),
88214
+ maxTexCoords = browser .getMaxTexCoords ();
88008
88215
 
88009
88216
  gl .useProgram (program);
88010
88217
 
@@ -88105,17 +88312,6 @@ X3DProgrammableShaderObject .prototype =
88105
88312
 
88106
88313
  for (let i = 0; i < maxTextures; ++ i)
88107
88314
  {
88108
- // Attributes
88109
-
88110
- const x3d_TexCoord = this .getAttribLocation (gl, program, "x3d_TexCoord" + i, i ? "" : "x3d_TexCoord");
88111
-
88112
- if (x3d_TexCoord !== -1)
88113
- this .x3d_TexCoord .push ([i, x3d_TexCoord]);
88114
-
88115
- // Uniforms
88116
-
88117
- this .x3d_TextureMatrix [i] = gl .getUniformLocation (program, "x3d_TextureMatrix[" + i + "]");
88118
-
88119
88315
  this .x3d_TextureCoordinateGeneratorMode [i] = gl .getUniformLocation (program, "x3d_TextureCoordinateGenerator[" + i + "].mode");
88120
88316
  this .x3d_TextureCoordinateGeneratorParameter [i] = gl .getUniformLocation (program, "x3d_TextureCoordinateGenerator[" + i + "].parameter");
88121
88317
 
@@ -88135,6 +88331,22 @@ X3DProgrammableShaderObject .prototype =
88135
88331
  this .x3d_ProjectiveTextureLocation [i] = gl .getUniformLocation (program, "x3d_ProjectiveTextureLocation[" + i + "]");
88136
88332
  }
88137
88333
 
88334
+ for (let i = 0; i < maxTextureTransforms; ++ i)
88335
+ {
88336
+ const uniform = gl .getUniformLocation (program, "x3d_TextureMatrix[" + i + "]");
88337
+
88338
+ if (uniform !== null)
88339
+ this .x3d_TextureMatrix [i] = uniform;
88340
+ }
88341
+
88342
+ for (let i = 0; i < maxTexCoords; ++ i)
88343
+ {
88344
+ const x3d_TexCoord = this .getAttribLocation (gl, program, "x3d_TexCoord" + i, i ? "" : "x3d_TexCoord");
88345
+
88346
+ if (x3d_TexCoord !== -1)
88347
+ this .x3d_TexCoord .push ([i, x3d_TexCoord]);
88348
+ }
88349
+
88138
88350
  this .x3d_TexCoordRamp = gl .getUniformLocation (program, "x3d_TexCoordRamp");
88139
88351
 
88140
88352
  this .x3d_Viewport = gl .getUniformLocation (program, "x3d_Viewport");
@@ -88218,7 +88430,7 @@ X3DProgrammableShaderObject .prototype =
88218
88430
  for (const uniform of this .x3d_ProjectiveTexture)
88219
88431
  gl .uniform1i (uniform, browser .getDefaultTexture2DUnit ());
88220
88432
 
88221
- gl .uniform1i (this .x3d_TexCoordRamp, browser .getDefaultTexture2DUnit ());
88433
+ gl .uniform1i (this .x3d_TexCoordRamp, browser .getDefaultTexture2DUnit ());
88222
88434
  },
88223
88435
  getUniformLocation: function (gl, program, name, depreciated)
88224
88436
  {
@@ -88904,8 +89116,7 @@ X3DProgrammableShaderObject .prototype =
88904
89116
 
88905
89117
  // Fog
88906
89118
 
88907
- if (fogNode)
88908
- fogNode .setShaderUniforms (gl, this);
89119
+ fogNode?.setShaderUniforms (gl, this);
88909
89120
 
88910
89121
  // Clip planes and local lights
88911
89122
 
@@ -88922,8 +89133,7 @@ X3DProgrammableShaderObject .prototype =
88922
89133
 
88923
89134
  // Style Properties
88924
89135
 
88925
- if (stylePropertiesNode)
88926
- stylePropertiesNode .setShaderUniforms (gl, this);
89136
+ stylePropertiesNode?.setShaderUniforms (gl, this);
88927
89137
 
88928
89138
  // Material
88929
89139
 
@@ -88931,8 +89141,7 @@ X3DProgrammableShaderObject .prototype =
88931
89141
 
88932
89142
  // Texture
88933
89143
 
88934
- if (textureNode)
88935
- textureNode .setShaderUniforms (gl, this, renderObject);
89144
+ textureNode?.setShaderUniforms (gl, this, renderObject);
88936
89145
 
88937
89146
  appearanceNode .getTextureTransform () .setShaderUniforms (gl, this);
88938
89147
  geometryContext .getTextureCoordinate () .setShaderUniforms (gl, this);
@@ -90642,7 +90851,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
90642
90851
  x_ite_Namespace.set ("x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
90643
90852
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
90644
90853
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
90645
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(996);
90854
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(998);
90646
90855
  /*******************************************************************************
90647
90856
  *
90648
90857
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -92010,6 +92219,10 @@ X3DMaterialNode .prototype = Object .assign (Object .create (Shape_X3DAppearance
92010
92219
  {
92011
92220
  return this ._transparent .getValue ();
92012
92221
  },
92222
+ getBaseTexture: function ()
92223
+ {
92224
+ return null;
92225
+ },
92013
92226
  setTexture: function (index, textureNode)
92014
92227
  {
92015
92228
  const textureType = textureNode ? textureNode .getTextureType () - 1 : 0;
@@ -92134,37 +92347,35 @@ X3DMaterialNode .prototype = Object .assign (Object .create (Shape_X3DAppearance
92134
92347
  options .push ("X3D_STYLE_PROPERTIES");
92135
92348
 
92136
92349
  if (+this .textureBits)
92137
- {
92138
92350
  options .push ("X3D_MATERIAL_TEXTURES");
92139
- options .push ("X3D_NUM_TEXTURE_TRANSFORMS " + (appearanceNode .getTextureTransformMapping () .size || 1));
92140
- options .push ("X3D_NUM_TEXTURE_COORDINATES " + (geometryContext .getTextureCoordinateMapping () .size || 1));
92351
+
92352
+ if (renderContext .textureNode)
92353
+ {
92354
+ // ScreenText
92355
+
92356
+ options .push ("X3D_TEXTURE",
92357
+ "X3D_NUM_TEXTURES 1",
92358
+ "X3D_NUM_TEXTURE_TRANSFORMS 1",
92359
+ "X3D_NUM_TEXTURE_COORDINATES 1",
92360
+ "X3D_TEXTURE0_2D");
92141
92361
  }
92142
92362
  else
92143
92363
  {
92144
- if (renderContext .textureNode)
92145
- {
92146
- // ScreenText
92147
-
92148
- options .push ("X3D_TEXTURE",
92149
- "X3D_NUM_TEXTURES 1",
92150
- "X3D_NUM_TEXTURE_TRANSFORMS 1",
92151
- "X3D_NUM_TEXTURE_COORDINATES 1",
92152
- "X3D_TEXTURE0_2D");
92153
- }
92154
- else if (+appearanceNode .getTextureBits ())
92364
+ if (+appearanceNode .getTextureBits () && !this .getBaseTexture ())
92155
92365
  {
92156
92366
  const textureNode = appearanceNode .getTexture ();
92157
92367
 
92158
92368
  options .push ("X3D_TEXTURE");
92159
- options .push ("X3D_NUM_TEXTURES " + textureNode .getCount ());
92160
- options .push ("X3D_NUM_TEXTURE_TRANSFORMS " + textureNode .getCount ());
92161
- options .push ("X3D_NUM_TEXTURE_COORDINATES " + textureNode .getCount ());
92162
-
92163
- textureNode .getShaderOptions (options);
92369
+ options .push ("X3D_NUM_TEXTURES " + textureNode .getCount ());
92164
92370
 
92165
92371
  if (textureNode .getType () .includes (Base_X3DConstants.MultiTexture))
92166
92372
  options .push ("X3D_MULTI_TEXTURING");
92373
+
92374
+ textureNode .getShaderOptions (options);
92167
92375
  }
92376
+
92377
+ options .push ("X3D_NUM_TEXTURE_TRANSFORMS " + (appearanceNode .getTextureTransformMapping () .size || 1));
92378
+ options .push ("X3D_NUM_TEXTURE_COORDINATES " + (geometryContext .textureCoordinateMapping .size || 1));
92168
92379
  }
92169
92380
 
92170
92381
  switch (shapeNode .getShapeKey ())
@@ -92295,11 +92506,12 @@ X3DOneSidedMaterialNode .prototype = Object .assign (Object .create (Shape_X3DMa
92295
92506
  {
92296
92507
  Shape_X3DMaterialNode.prototype.initialize.call (this);
92297
92508
 
92298
- this ._emissiveColor .addInterest ("set_emissiveColor__", this);
92299
- this ._emissiveTexture .addInterest ("set_emissiveTexture__", this);
92300
- this ._normalTexture .addInterest ("set_normalTexture__", this);
92301
- this ._transparency .addInterest ("set_transparency__", this);
92302
- this ._transparency .addInterest ("set_transparent__", this);
92509
+ this ._emissiveColor .addInterest ("set_emissiveColor__", this);
92510
+ this ._emissiveStrength .addInterest ("set_emissiveColor__", this);
92511
+ this ._emissiveTexture .addInterest ("set_emissiveTexture__", this);
92512
+ this ._normalTexture .addInterest ("set_normalTexture__", this);
92513
+ this ._transparency .addInterest ("set_transparency__", this);
92514
+ this ._transparency .addInterest ("set_transparent__", this);
92303
92515
 
92304
92516
  this .set_emissiveColor__ ();
92305
92517
  this .set_emissiveTexture__ ();
@@ -92312,12 +92524,13 @@ X3DOneSidedMaterialNode .prototype = Object .assign (Object .create (Shape_X3DMa
92312
92524
  //this .emissiveColor .set (this ._emissiveColor .getValue ());
92313
92525
 
92314
92526
  const
92315
- emissiveColor = this .emissiveColor,
92316
- emissiveColor_ = this ._emissiveColor .getValue ();
92527
+ emissiveColor = this .emissiveColor,
92528
+ emissiveColor_ = this ._emissiveColor .getValue (),
92529
+ emissiveStrength = this ._emissiveStrength .getValue ();
92317
92530
 
92318
- emissiveColor [0] = emissiveColor_ .r;
92319
- emissiveColor [1] = emissiveColor_ .g;
92320
- emissiveColor [2] = emissiveColor_ .b;
92531
+ emissiveColor [0] = emissiveColor_ .r * emissiveStrength;
92532
+ emissiveColor [1] = emissiveColor_ .g * emissiveStrength;
92533
+ emissiveColor [2] = emissiveColor_ .b * emissiveStrength;
92321
92534
  },
92322
92535
  set_emissiveTexture__: function ()
92323
92536
  {
@@ -92339,6 +92552,10 @@ X3DOneSidedMaterialNode .prototype = Object .assign (Object .create (Shape_X3DMa
92339
92552
  {
92340
92553
  this .setTransparent (Boolean (this .transparency));
92341
92554
  },
92555
+ getBaseTexture: function ()
92556
+ {
92557
+ return this .getEmissiveTexture ();
92558
+ },
92342
92559
  getEmissiveTexture: function ()
92343
92560
  {
92344
92561
  return this .emissiveTextureNode;
@@ -92492,6 +92709,7 @@ UnlitMaterial .prototype = Object .assign (Object .create (Shape_X3DOneSidedMate
92492
92709
  [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new Base_FieldDefinitionArray ([
92493
92710
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "metadata", new x_ite_Fields.SFNode ()),
92494
92711
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveColor", new x_ite_Fields.SFColor (1, 1, 1)),
92712
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveStrength", new x_ite_Fields.SFFloat (1)),
92495
92713
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTextureMapping", new x_ite_Fields.SFString ()),
92496
92714
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTexture", new x_ite_Fields.SFNode ()),
92497
92715
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalScale", new x_ite_Fields.SFFloat (1)),
@@ -92981,15 +93199,9 @@ X3DSingleTextureTransformNode .prototype = Object .assign (Object .create (Textu
92981
93199
  },
92982
93200
  getTextureTransformMapping: function (textureTransformMapping, channel = 0)
92983
93201
  {
92984
- if (this ._mapping .getValue ())
92985
- textureTransformMapping .set (this ._mapping .getValue (), channel);
93202
+ textureTransformMapping .set (this ._mapping .getValue () || channel, channel);
92986
93203
  },
92987
- setShaderUniforms: function (gl, shaderObject)
92988
- {
92989
- for (let i = 0, length = shaderObject .x3d_MaxTextures; i < length; ++ i)
92990
- this .setShaderUniformsToChannel (gl, shaderObject, i);
92991
- },
92992
- setShaderUniformsToChannel: function (gl, shaderObject, channel = 0)
93204
+ setShaderUniforms: function (gl, shaderObject, channel = 0)
92993
93205
  {
92994
93206
  gl .uniformMatrix4fv (shaderObject .x3d_TextureMatrix [channel], false, this .matrixArray);
92995
93207
  },
@@ -93305,6 +93517,14 @@ X3DTexturingContext .prototype =
93305
93517
  {
93306
93518
  return this [_maxTextures];
93307
93519
  },
93520
+ getMaxTextureTransforms: function ()
93521
+ {
93522
+ return 4;
93523
+ },
93524
+ getMaxTexCoords: function ()
93525
+ {
93526
+ return 4;
93527
+ },
93308
93528
  getMinTextureSize: function ()
93309
93529
  {
93310
93530
  return 16;
@@ -109057,8 +109277,7 @@ X3DPointGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DG
109057
109277
  attribNodes = this .getAttrib (),
109058
109278
  attribBuffers = this .getAttribBuffers ();
109059
109279
 
109060
- if (blendModeNode)
109061
- blendModeNode .enable (gl);
109280
+ blendModeNode?.enable (gl);
109062
109281
 
109063
109282
  // Setup shader.
109064
109283
 
@@ -109086,8 +109305,7 @@ X3DPointGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DG
109086
109305
 
109087
109306
  gl .drawArrays (this .primitiveMode, 0, this .vertexCount);
109088
109307
 
109089
- if (blendModeNode)
109090
- blendModeNode .disable (gl);
109308
+ blendModeNode?.disable (gl);
109091
109309
  },
109092
109310
  displayParticles: function (gl, renderContext, particleSystem)
109093
109311
  {
@@ -109098,8 +109316,7 @@ X3DPointGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DG
109098
109316
  attribNodes = this .getAttrib (),
109099
109317
  attribBuffers = this .getAttribBuffers ();
109100
109318
 
109101
- if (blendModeNode)
109102
- blendModeNode .enable (gl);
109319
+ blendModeNode?.enable (gl);
109103
109320
 
109104
109321
  // Setup shader.
109105
109322
 
@@ -109138,8 +109355,7 @@ X3DPointGeometryNode .prototype = Object .assign (Object .create (Rendering_X3DG
109138
109355
 
109139
109356
  gl .drawArraysInstanced (this .primitiveMode, 0, this .vertexCount, particleSystem .numParticles);
109140
109357
 
109141
- if (blendModeNode)
109142
- blendModeNode .disable (gl);
109358
+ blendModeNode?.disable (gl);
109143
109359
  },
109144
109360
  });
109145
109361
 
@@ -111106,29 +111322,30 @@ Material .prototype = Object .assign (Object .create (Shape_X3DOneSidedMaterialN
111106
111322
  {
111107
111323
  constructor: Material,
111108
111324
  [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new Base_FieldDefinitionArray ([
111109
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "metadata", new x_ite_Fields.SFNode ()),
111110
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientIntensity", new x_ite_Fields.SFFloat (0.2)),
111111
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientTextureMapping", new x_ite_Fields.SFString ()),
111112
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientTexture", new x_ite_Fields.SFNode ()),
111113
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseColor", new x_ite_Fields.SFColor (0.8, 0.8, 0.8)),
111114
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseTextureMapping", new x_ite_Fields.SFString ()),
111115
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseTexture", new x_ite_Fields.SFNode ()),
111116
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularColor", new x_ite_Fields.SFColor ()),
111117
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularTextureMapping", new x_ite_Fields.SFString ()),
111118
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularTexture", new x_ite_Fields.SFNode ()),
111119
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveColor", new x_ite_Fields.SFColor ()),
111120
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTextureMapping", new x_ite_Fields.SFString ()),
111121
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTexture", new x_ite_Fields.SFNode ()),
111122
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininess", new x_ite_Fields.SFFloat (0.2)),
111123
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininessTextureMapping", new x_ite_Fields.SFString ()),
111124
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininessTexture", new x_ite_Fields.SFNode ()),
111125
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionStrength", new x_ite_Fields.SFFloat (1)),
111126
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionTextureMapping", new x_ite_Fields.SFString ()),
111127
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionTexture", new x_ite_Fields.SFNode ()),
111128
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalScale", new x_ite_Fields.SFFloat (1)),
111129
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalTextureMapping", new x_ite_Fields.SFString ()),
111130
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalTexture", new x_ite_Fields.SFNode ()),
111131
- new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "transparency", new x_ite_Fields.SFFloat ()),
111325
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "metadata", new x_ite_Fields.SFNode ()),
111326
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientIntensity", new x_ite_Fields.SFFloat (0.2)),
111327
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientTextureMapping", new x_ite_Fields.SFString ()),
111328
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "ambientTexture", new x_ite_Fields.SFNode ()),
111329
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseColor", new x_ite_Fields.SFColor (0.8, 0.8, 0.8)),
111330
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseTextureMapping", new x_ite_Fields.SFString ()),
111331
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "diffuseTexture", new x_ite_Fields.SFNode ()),
111332
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularColor", new x_ite_Fields.SFColor ()),
111333
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularTextureMapping", new x_ite_Fields.SFString ()),
111334
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "specularTexture", new x_ite_Fields.SFNode ()),
111335
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveColor", new x_ite_Fields.SFColor ()),
111336
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveStrength", new x_ite_Fields.SFFloat (1)),
111337
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTextureMapping", new x_ite_Fields.SFString ()),
111338
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTexture", new x_ite_Fields.SFNode ()),
111339
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininess", new x_ite_Fields.SFFloat (0.2)),
111340
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininessTextureMapping", new x_ite_Fields.SFString ()),
111341
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "shininessTexture", new x_ite_Fields.SFNode ()),
111342
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionStrength", new x_ite_Fields.SFFloat (1)),
111343
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionTextureMapping", new x_ite_Fields.SFString ()),
111344
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "occlusionTexture", new x_ite_Fields.SFNode ()),
111345
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalScale", new x_ite_Fields.SFFloat (1)),
111346
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalTextureMapping", new x_ite_Fields.SFString ()),
111347
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "normalTexture", new x_ite_Fields.SFNode ()),
111348
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "transparency", new x_ite_Fields.SFFloat ()),
111132
111349
  ]),
111133
111350
  getTypeName: function ()
111134
111351
  {
@@ -111248,6 +111465,10 @@ Material .prototype = Object .assign (Object .create (Shape_X3DOneSidedMaterialN
111248
111465
  this .setTransparent (!!(this .getTransparency () ||
111249
111466
  (this .diffuseTextureNode && this .diffuseTextureNode .isTransparent ())));
111250
111467
  },
111468
+ getBaseTexture: function ()
111469
+ {
111470
+ return this .diffuseTexture;
111471
+ },
111251
111472
  getTextureIndices: (function ()
111252
111473
  {
111253
111474
  let i = 0;
@@ -111505,6 +111726,7 @@ PhysicalMaterial .prototype = Object .assign (Object .create (Shape_X3DOneSidedM
111505
111726
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "baseTextureMapping", new x_ite_Fields.SFString ()),
111506
111727
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "baseTexture", new x_ite_Fields.SFNode ()),
111507
111728
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveColor", new x_ite_Fields.SFColor (0, 0, 0)),
111729
+ new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveStrength", new x_ite_Fields.SFFloat (1)),
111508
111730
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTextureMapping", new x_ite_Fields.SFString ()),
111509
111731
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "emissiveTexture", new x_ite_Fields.SFNode ()),
111510
111732
  new Base_X3DFieldDefinition (Base_X3DConstants.inputOutput, "metallic", new x_ite_Fields.SFFloat (1)),
@@ -111606,6 +111828,10 @@ PhysicalMaterial .prototype = Object .assign (Object .create (Shape_X3DOneSidedM
111606
111828
  this .setTransparent (!!(this .getTransparency () ||
111607
111829
  (this .baseTextureNode && this .baseTextureNode .isTransparent ())));
111608
111830
  },
111831
+ getBaseTexture: function ()
111832
+ {
111833
+ return this .baseTextureNode;
111834
+ },
111609
111835
  getTextureIndices: (function ()
111610
111836
  {
111611
111837
  let i = 0;
@@ -111977,6 +112203,7 @@ TwoSidedMaterial .prototype = Object .assign (Object .create (Shape_X3DMaterialN
111977
112203
  {
111978
112204
  this .setTransparent (Boolean (this ._transparency .getValue () || (this ._separateBackColor .getValue () && this ._backTransparency .getValue ())));
111979
112205
  },
112206
+ getBaseTexture: Shape_Material.prototype.getBaseTexture,
111980
112207
  getMaterialKey: Shape_Material.prototype.getMaterialKey,
111981
112208
  createShader: Shape_Material.prototype.createShader,
111982
112209
  setShaderUniforms: function (gl, shaderObject, renderObject, textureTransformMapping, textureCoordinateMapping, front)
@@ -112517,7 +112744,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
112517
112744
  x_ite_Namespace.set ("x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
112518
112745
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
112519
112746
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
112520
- /* provided dependency */ var AudioClip_$ = __webpack_require__(996);
112747
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(998);
112521
112748
  /*******************************************************************************
112522
112749
  *
112523
112750
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115332,8 +115559,8 @@ const GIFMedia_default_ = GifMedia;
115332
115559
  x_ite_Namespace.set ("x_ite/Browser/Texturing/GIFMedia", GIFMedia_default_);
115333
115560
  /* harmony default export */ const GIFMedia = (GIFMedia_default_);
115334
115561
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
115335
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(996);
115336
- /* provided dependency */ var SuperGif = __webpack_require__(750);
115562
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(998);
115563
+ /* provided dependency */ var SuperGif = __webpack_require__(921);
115337
115564
  /*******************************************************************************
115338
115565
  *
115339
115566
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115429,6 +115656,7 @@ MovieTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
115429
115656
  new Base_X3DFieldDefinition (Base_X3DConstants.outputOnly, "isActive", new x_ite_Fields.SFBool ()),
115430
115657
  new Base_X3DFieldDefinition (Base_X3DConstants.outputOnly, "elapsedTime", new x_ite_Fields.SFTime ()),
115431
115658
  new Base_X3DFieldDefinition (Base_X3DConstants.outputOnly, "duration_changed", new x_ite_Fields.SFTime (-1)),
115659
+ new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "flipVertically", new x_ite_Fields.SFBool ()),
115432
115660
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "repeatS", new x_ite_Fields.SFBool (true)),
115433
115661
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "repeatT", new x_ite_Fields.SFBool (true)),
115434
115662
  new Base_X3DFieldDefinition (Base_X3DConstants.initializeOnly, "textureProperties", new x_ite_Fields.SFNode ()),
@@ -115555,7 +115783,7 @@ MovieTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
115555
115783
  throw new Error ("The movie texture is a non power-of-two texture.");
115556
115784
 
115557
115785
  this .setMedia (this .video [0]);
115558
- this .setTexture (width, height, false, video, true);
115786
+ this .setTexture (width, height, false, video, !this ._flipVertically .getValue ());
115559
115787
  this .setLoadState (Base_X3DConstants.COMPLETE_STATE);
115560
115788
  }
115561
115789
  catch (error)
@@ -115575,7 +115803,7 @@ MovieTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
115575
115803
  gif .pause ();
115576
115804
 
115577
115805
  this .setMedia (gif);
115578
- this .setTexture (gif .get_canvas () .width, gif .get_canvas () .height, false, gif .get_frames () [0] .data, true);
115806
+ this .setTexture (gif .get_canvas () .width, gif .get_canvas () .height, false, gif .get_frames () [0] .data, !this ._flipVertically .getValue ());
115579
115807
  this .setLoadState (Base_X3DConstants.COMPLETE_STATE);
115580
115808
  }
115581
115809
  catch (error)
@@ -115592,9 +115820,9 @@ MovieTexture .prototype = Object .assign (Object .create (Texturing_X3DTexture2D
115592
115820
  return;
115593
115821
 
115594
115822
  if (this .gif)
115595
- this .updateTexture (this .gif .currentFrame .data, true);
115823
+ this .updateTexture (this .gif .currentFrame .data, !this ._flipVertically .getValue ());
115596
115824
  else
115597
- this .updateTexture (this .video [0], true);
115825
+ this .updateTexture (this .video [0], !this ._flipVertically .getValue ());
115598
115826
  },
115599
115827
  traverse: Texturing_X3DTexture2DNode.prototype.traverse,
115600
115828
  dispose: function ()
@@ -115676,6 +115904,9 @@ function MultiTexture (executionContext)
115676
115904
 
115677
115905
  this .addChildObjects ("loadState", new x_ite_Fields.SFInt32 (Base_X3DConstants.NOT_STARTED_STATE));
115678
115906
 
115907
+ const browser = this .getBrowser ();
115908
+
115909
+ this .maxTextures = browser .getMaxTextures ()
115679
115910
  this .color = new Float32Array (4);
115680
115911
  this .modes = [ ];
115681
115912
  this .alphaModes = [ ];
@@ -115731,7 +115962,7 @@ MultiTexture .prototype = Object .assign (Object .create (Texturing_X3DTextureNo
115731
115962
  },
115732
115963
  getCount: function ()
115733
115964
  {
115734
- return Math .min (this .getBrowser () .getMaxTextures (), this .textureNodes .length);
115965
+ return Math .min (this .maxTextures, this .textureNodes .length);
115735
115966
  },
115736
115967
  getMode: function (index)
115737
115968
  {
@@ -115894,7 +116125,7 @@ MultiTexture .prototype = Object .assign (Object .create (Texturing_X3DTextureNo
115894
116125
  updateTextureBits: function (textureBits)
115895
116126
  {
115896
116127
  const
115897
- maxTextures = this .getBrowser () .getMaxTextures (),
116128
+ maxTextures = this .maxTextures,
115898
116129
  textureNodes = this .textureNodes,
115899
116130
  channels = Math .min (maxTextures, textureNodes .length);
115900
116131
 
@@ -115907,7 +116138,7 @@ MultiTexture .prototype = Object .assign (Object .create (Texturing_X3DTextureNo
115907
116138
  {
115908
116139
  const
115909
116140
  textureNodes = this .textureNodes,
115910
- channels = Math .min (this .getBrowser () .getMaxTextures (), textureNodes .length);
116141
+ channels = Math .min (this .maxTextures, textureNodes .length);
115911
116142
 
115912
116143
  for (let i = 0; i < channels; ++ i)
115913
116144
  textureNodes [i] .getShaderOptions (options, i);
@@ -115921,7 +116152,7 @@ MultiTexture .prototype = Object .assign (Object .create (Texturing_X3DTextureNo
115921
116152
  {
115922
116153
  const
115923
116154
  textureNodes = this .textureNodes,
115924
- channels = Math .min (this .getBrowser () .getMaxTextures (), textureNodes .length);
116155
+ channels = Math .min (this .maxTextures, textureNodes .length);
115925
116156
 
115926
116157
  gl .uniform4fv (shaderObject .x3d_MultiTextureColor, this .color);
115927
116158
 
@@ -116003,6 +116234,9 @@ function MultiTextureCoordinate (executionContext)
116003
116234
 
116004
116235
  this .addType (Base_X3DConstants.MultiTextureCoordinate);
116005
116236
 
116237
+ const browser = this .getBrowser ();
116238
+
116239
+ this .maxTexCoords = browser .getMaxTexCoords ();
116006
116240
  this .textureCoordinateNodes = [ ];
116007
116241
  }
116008
116242
 
@@ -116055,7 +116289,7 @@ MultiTextureCoordinate .prototype = Object .assign (Object .create (Texturing_X3
116055
116289
  },
116056
116290
  getCount: function ()
116057
116291
  {
116058
- return Math .min (this .getBrowser () .getMaxTextures (), this .textureCoordinateNodes .length);
116292
+ return Math .min (this .maxTexCoords, this .textureCoordinateNodes .length);
116059
116293
  },
116060
116294
  isEmpty: function ()
116061
116295
  {
@@ -116081,21 +116315,27 @@ MultiTextureCoordinate .prototype = Object .assign (Object .create (Texturing_X3
116081
116315
  },
116082
116316
  init: function (multiArray)
116083
116317
  {
116084
- for (const textureCoordinateNode of this .textureCoordinateNodes)
116085
- textureCoordinateNode .init (multiArray);
116318
+ const
116319
+ textureCoordinateNodes = this .textureCoordinateNodes,
116320
+ length = Math .min (this .maxTexCoords, textureCoordinateNodes .length);
116321
+
116322
+ for (let i = 0; i < length; ++ i)
116323
+ textureCoordinateNodes [i] .init (multiArray);
116086
116324
  },
116087
116325
  addPoint: function (index, multiArray)
116088
116326
  {
116089
- const textureCoordinateNodes = this .textureCoordinateNodes;
116327
+ const
116328
+ textureCoordinateNodes = this .textureCoordinateNodes,
116329
+ length = Math .min (this .maxTexCoords, textureCoordinateNodes .length);
116090
116330
 
116091
- for (let i = 0, length = textureCoordinateNodes .length; i < length; ++ i)
116331
+ for (let i = 0; i < length; ++ i)
116092
116332
  textureCoordinateNodes [i] .addPointToChannel (index, multiArray [i]);
116093
116333
  },
116094
116334
  getTextureCoordinateMapping: function (textureCoordinateMapping)
116095
116335
  {
116096
116336
  const
116097
116337
  textureCoordinateNodes = this .textureCoordinateNodes,
116098
- length = Math .min (this .getBrowser () .getMaxTextures (), textureCoordinateNodes .length);
116338
+ length = Math .min (this .maxTexCoords, textureCoordinateNodes .length);
116099
116339
 
116100
116340
  for (let i = 0; i < length; ++ i)
116101
116341
  textureCoordinateNodes [i] .getTextureCoordinateMapping (textureCoordinateMapping, i);
@@ -116104,22 +116344,16 @@ MultiTextureCoordinate .prototype = Object .assign (Object .create (Texturing_X3
116104
116344
  {
116105
116345
  const
116106
116346
  textureCoordinateNodes = this .textureCoordinateNodes,
116107
- length = Math .min (shaderObject .x3d_MaxTextures, textureCoordinateNodes .length);
116108
-
116109
- for (let i = 0; i < length; ++ i)
116110
- textureCoordinateNodes [i] .setShaderUniformsToChannel (gl, shaderObject, i);
116347
+ length = Math .min (this .maxTexCoords, textureCoordinateNodes .length);
116111
116348
 
116112
116349
  if (length)
116113
116350
  {
116114
- const last = textureCoordinateNodes .at (-1);
116115
-
116116
- for (let i = length, l = shaderObject .x3d_MaxTextures; i < l; ++ i)
116117
- last .setShaderUniformsToChannel (gl, shaderObject, i);
116351
+ for (let i = 0; i < length; ++ i)
116352
+ textureCoordinateNodes [i] .setShaderUniforms (gl, shaderObject, i);
116118
116353
  }
116119
116354
  else
116120
116355
  {
116121
- for (let i = length, l = shaderObject .x3d_MaxTextures; i < l; ++ i)
116122
- gl .uniform1i (shaderObject .x3d_TextureCoordinateGeneratorMode [i], 0);
116356
+ this .getBrowser () .getDefaultTextureCoordinate () .setShaderUniforms (gl, shaderObject, 0);
116123
116357
  }
116124
116358
  },
116125
116359
  });
@@ -116184,13 +116418,15 @@ x_ite_Namespace.set ("x_ite/Components/Texturing/MultiTextureCoordinate", MultiT
116184
116418
 
116185
116419
 
116186
116420
 
116187
-
116188
116421
  function MultiTextureTransform (executionContext)
116189
116422
  {
116190
116423
  Texturing_X3DTextureTransformNode.call (this, executionContext);
116191
116424
 
116192
116425
  this .addType (Base_X3DConstants.MultiTextureTransform);
116193
116426
 
116427
+ const browser = this .getBrowser ();
116428
+
116429
+ this .maxTextureTransforms = browser .getMaxTextureTransforms ();
116194
116430
  this .textureTransformNodes = [ ];
116195
116431
  }
116196
116432
 
@@ -116234,53 +116470,35 @@ MultiTextureTransform .prototype = Object .assign (Object .create (Texturing_X3D
116234
116470
  if (textureTransformNode)
116235
116471
  textureTransformNodes .push (textureTransformNode);
116236
116472
  }
116473
+
116474
+ if (!textureTransformNodes .length)
116475
+ textureTransformNodes .push (this .getBrowser () .getDefaultTextureTransform ());
116237
116476
  },
116238
116477
  getCount: function ()
116239
116478
  {
116240
- return Math .min (this .getBrowser () .getMaxTextures (), this .textureTransformNodes .length);
116479
+ return Math .min (this .maxTextureTransforms, this .textureTransformNodes .length);
116241
116480
  },
116242
116481
  getTextureTransformMapping: function (textureTransformMapping)
116243
116482
  {
116244
116483
  const
116245
116484
  textureTransformNodes = this .textureTransformNodes,
116246
- length = Math .min (this .getBrowser () .getMaxTextures (), textureTransformNodes .length);
116485
+ length = Math .min (this .maxTextureTransforms, textureTransformNodes .length);
116247
116486
 
116248
116487
  for (let i = 0; i < length; ++ i)
116249
116488
  textureTransformNodes [i] .getTextureTransformMapping (textureTransformMapping, i);
116250
116489
  },
116251
- setShaderUniforms: (function ()
116490
+ setShaderUniforms: function (gl, shaderObject)
116252
116491
  {
116253
- const matrixArray = new Float32Array (Numbers_Matrix4.Identity);
116254
-
116255
- return function (gl, shaderObject)
116256
- {
116257
- const
116258
- textureTransformNodes = this .textureTransformNodes,
116259
- length = Math .min (shaderObject .x3d_MaxTextures, textureTransformNodes .length);
116260
-
116261
- for (let i = 0; i < length; ++ i)
116262
- textureTransformNodes [i] .setShaderUniformsToChannel (gl, shaderObject, i);
116263
-
116264
- if (length)
116265
- {
116266
- const last = textureTransformNodes .at (-1);
116492
+ const
116493
+ textureTransformNodes = this .textureTransformNodes,
116494
+ length = Math .min (this .maxTextureTransforms, textureTransformNodes .length);
116267
116495
 
116268
- for (let i = length, l = shaderObject .x3d_MaxTextures; i < l; ++ i)
116269
- last .setShaderUniformsToChannel (gl, shaderObject, i);
116270
- }
116271
- else
116272
- {
116273
- for (let i = length, l = shaderObject .x3d_MaxTextures; i < l; ++ i)
116274
- gl .uniformMatrix4fv (shaderObject .x3d_TextureMatrix [i], false, matrixArray);
116275
- }
116276
- };
116277
- })(),
116496
+ for (let i = 0; i < length; ++ i)
116497
+ textureTransformNodes [i] .setShaderUniforms (gl, shaderObject, i);
116498
+ },
116278
116499
  transformPoint: function (texCoord)
116279
116500
  {
116280
- if (this .textureTransformNodes .length)
116281
- return this .textureTransformNodes [0] .transformPoint (texCoord);
116282
-
116283
- return texCoord;
116501
+ return this .textureTransformNodes [0] .transformPoint (texCoord);
116284
116502
  },
116285
116503
  });
116286
116504
 
@@ -116290,7 +116508,7 @@ const MultiTextureTransform_default_ = MultiTextureTransform;
116290
116508
  x_ite_Namespace.set ("x_ite/Components/Texturing/MultiTextureTransform", MultiTextureTransform_default_);
116291
116509
  /* harmony default export */ const Texturing_MultiTextureTransform = (MultiTextureTransform_default_);
116292
116510
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/PixelTexture.js
116293
- /* provided dependency */ var PixelTexture_$ = __webpack_require__(996);
116511
+ /* provided dependency */ var PixelTexture_$ = __webpack_require__(998);
116294
116512
  /*******************************************************************************
116295
116513
  *
116296
116514
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116705,7 +116923,7 @@ TextureCoordinateGenerator .prototype = Object .assign (Object .create (Texturin
116705
116923
  {
116706
116924
  array .push (0, 0, 0, 1);
116707
116925
  },
116708
- setShaderUniformsToChannel: function (gl, shaderObject, channel = 0)
116926
+ setShaderUniforms: function (gl, shaderObject, channel = 0)
116709
116927
  {
116710
116928
  gl .uniform1i (shaderObject .x3d_TextureCoordinateGeneratorMode [channel], this .mode);
116711
116929
  gl .uniform1fv (shaderObject .x3d_TextureCoordinateGeneratorParameter [channel], this .parameter);
@@ -116993,7 +117211,7 @@ const Components_default_ = Components;
116993
117211
  x_ite_Namespace.set ("x_ite/Components", Components_default_);
116994
117212
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
116995
117213
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
116996
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(996);
117214
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(998);
116997
117215
  /*******************************************************************************
116998
117216
  * MIT License
116999
117217
  *
@@ -118230,7 +118448,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
118230
118448
  x_ite_Namespace.set ("x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
118231
118449
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
118232
118450
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
118233
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(996);
118451
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(998);
118234
118452
  /*******************************************************************************
118235
118453
  *
118236
118454
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118889,7 +119107,7 @@ X3DBrowser .prototype = Object .assign (Object .create (Browser_X3DBrowserContex
118889
119107
  if (!layerNode)
118890
119108
  return;
118891
119109
 
118892
- layerNode .getViewpoint () ._viewAll = true;
119110
+ layerNode .viewAll (1, this .getBrowserOption ("StraightenHorizon"));
118893
119111
  },
118894
119112
  firstViewpoint: function (layerNode)
118895
119113
  {
@@ -119175,7 +119393,7 @@ const X3DBrowser_default_ = X3DBrowser;
119175
119393
  x_ite_Namespace.set ("x_ite/Browser/X3DBrowser", X3DBrowser_default_);
119176
119394
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
119177
119395
  ;// CONCATENATED MODULE: ./src/x_ite/Fallback.js
119178
- /* provided dependency */ var Fallback_$ = __webpack_require__(996);
119396
+ /* provided dependency */ var Fallback_$ = __webpack_require__(998);
119179
119397
  /*******************************************************************************
119180
119398
  *
119181
119399
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119354,8 +119572,8 @@ const MicroTime_default_ = undefined;
119354
119572
  x_ite_Namespace.set ("standard/Time/MicroTime", MicroTime_default_);
119355
119573
  /* harmony default export */ const MicroTime = ((/* unused pure expression or super */ null && (MicroTime_default_)));
119356
119574
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
119357
- /* provided dependency */ var jquery_$ = __webpack_require__(996);
119358
- /* provided dependency */ var pako = __webpack_require__(986);
119575
+ /* provided dependency */ var jquery_$ = __webpack_require__(998);
119576
+ /* provided dependency */ var pako = __webpack_require__(978);
119359
119577
  jquery_$.decodeText = function (input)
119360
119578
  {
119361
119579
  if (typeof input === "string")
@@ -119382,14 +119600,14 @@ const jquery_default_ = jquery_$;
119382
119600
  x_ite_Namespace.set ("lib/jquery", jquery_default_);
119383
119601
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
119384
119602
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
119385
- /* provided dependency */ var libtess_libtess = __webpack_require__(519);
119603
+ /* provided dependency */ var libtess_libtess = __webpack_require__(422);
119386
119604
  const libtess_default_ = libtess_libtess;
119387
119605
  ;
119388
119606
 
119389
119607
  x_ite_Namespace.set ("lib/libtess", libtess_default_);
119390
119608
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
119391
119609
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
119392
- /* provided dependency */ var X3D_$ = __webpack_require__(996);
119610
+ /* provided dependency */ var X3D_$ = __webpack_require__(998);
119393
119611
  /*******************************************************************************
119394
119612
  *
119395
119613
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119645,7 +119863,7 @@ const X3D_default_ = X3D;
119645
119863
  x_ite_Namespace.set ("x_ite/X3D", X3D_default_);
119646
119864
  /* harmony default export */ const x_ite_X3D = (X3D_default_);
119647
119865
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvas.js
119648
- /* provided dependency */ var X3DCanvas_$ = __webpack_require__(996);
119866
+ /* provided dependency */ var X3DCanvas_$ = __webpack_require__(998);
119649
119867
  /*******************************************************************************
119650
119868
  *
119651
119869
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119905,7 +120123,7 @@ x_ite_Namespace.set ("shim", shim_default_);
119905
120123
 
119906
120124
  // Assign X3D to global namespace.
119907
120125
 
119908
- window [Symbol .for ("X_ITE.X3D-8.6.7")] = x_ite_X3D;
120126
+ window [Symbol .for ("X_ITE.X3D-8.6.9")] = x_ite_X3D;
119909
120127
 
119910
120128
  x_ite_X3DCanvas.define ();
119911
120129