x_ite 15.1.1 → 15.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +6 -5
  2. package/dist/LICENSE.md +0 -2
  3. package/dist/X3DUOM.xml +99 -23
  4. package/dist/assets/components/AnnotationComponent.js +1 -1
  5. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  6. package/dist/assets/components/CADGeometryComponent.js +1 -1
  7. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  8. package/dist/assets/components/CubeMapTexturingComponent.js +71 -40
  9. package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
  10. package/dist/assets/components/DISComponent.js +1 -1
  11. package/dist/assets/components/DISComponent.min.js +1 -1
  12. package/dist/assets/components/EventUtilitiesComponent.js +1 -1
  13. package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +1 -1
  19. package/dist/assets/components/GeospatialComponent.min.js +1 -1
  20. package/dist/assets/components/HAnimComponent.js +2 -2
  21. package/dist/assets/components/HAnimComponent.min.js +2 -2
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  26. package/dist/assets/components/NURBSComponent.js +2 -2
  27. package/dist/assets/components/NURBSComponent.min.js +2 -2
  28. package/dist/assets/components/ParticleSystemsComponent.js +15 -12
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +2 -2
  30. package/dist/assets/components/PickingComponent.js +3 -3
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +2 -2
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +2 -2
  34. package/dist/assets/components/ScriptingComponent.js +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  36. package/dist/assets/components/TextComponent.js +37 -28
  37. package/dist/assets/components/TextComponent.min.js +2 -2
  38. package/dist/assets/components/TextureProjectionComponent.js +3 -3
  39. package/dist/assets/components/TextureProjectionComponent.min.js +2 -2
  40. package/dist/assets/components/Texturing3DComponent.js +57 -34
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +17 -59
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +2 -2
  44. package/dist/assets/components/WebXRComponent.js +2 -2
  45. package/dist/assets/components/WebXRComponent.min.js +2 -2
  46. package/dist/assets/components/X_ITEComponent.js +368 -254
  47. package/dist/assets/components/X_ITEComponent.min.js +2 -2
  48. package/dist/assets/lib/README.md +5 -1
  49. package/dist/assets/lib/mkkellogg-sort.worker.js +1 -1
  50. package/dist/example.html +1 -1
  51. package/dist/x_ite.css +1 -1
  52. package/dist/x_ite.d.ts +119 -17
  53. package/dist/x_ite.js +872 -3914
  54. package/dist/x_ite.min.js +2 -2
  55. package/dist/x_ite.min.mjs +2 -2
  56. package/dist/x_ite.mjs +871 -3913
  57. package/dist/x_ite.zip +0 -0
  58. package/package.json +5 -3
package/README.md CHANGED
@@ -24,6 +24,7 @@ X_ITE needs your support. If you become a [Patreon](https://patreon.com/X_ITE),
24
24
  * [DOM Integration](https://create3000.github.io/x_ite/dom-integration)
25
25
  * [Custom Shaders](https://create3000.github.io/x_ite/custom-shaders)
26
26
  * [glTF Sample Viewer](https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/)
27
+ * [X_ITE VRML Viewer](https://create3000.github.io/x_ite/features/#vrml-viewer)
27
28
 
28
29
  ## Using X_ITE with a CDN
29
30
 
@@ -36,10 +37,10 @@ If you are going to use X_ITE in a production environment, you should use a fixe
36
37
  jsDelivr is an open-source content delivery network (CDN) renowned for its no-cost access, swift performance, and reliable service.
37
38
 
38
39
  ```html
39
- <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.1/dist/x_ite.min.js"></script>
40
+ <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
40
41
  <!-- or as ES module for use in scripts -->
41
42
  <script type="module">
42
- import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.1/dist/x_ite.min.mjs";
43
+ import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.mjs";
43
44
  </script>
44
45
  ```
45
46
 
@@ -70,7 +71,7 @@ This script initializes an X3D canvas within an HTML page, configuring it to con
70
71
  You can include an external file:
71
72
 
72
73
  ```html
73
- <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.1/dist/x_ite.min.js"></script>
74
+ <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
74
75
  <x3d-canvas
75
76
  src="box.x3d"
76
77
  contentScale="auto"
@@ -82,7 +83,7 @@ You can include an external file:
82
83
  However, you can also include and manipulate the XML directly:
83
84
 
84
85
  ```html
85
- <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.1/dist/x_ite.min.js"></script>
86
+ <script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
86
87
  <x3d-canvas contentScale="auto" update="auto">
87
88
  <X3D profile='Interchange' version='4.1'>
88
89
  <head>
@@ -121,7 +122,7 @@ The same scene can also be created using pure JavaScript:
121
122
 
122
123
  ```html
123
124
  <script type="module">
124
- import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.1/dist/x_ite.min.mjs";
125
+ import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.mjs";
125
126
 
126
127
  const
127
128
  canvas = document .createElement ("x3d-canvas"), // Or get an already inserted <x3d-canvas> element.
package/dist/LICENSE.md CHANGED
@@ -40,8 +40,6 @@ ADDITIONAL LICENSES
40
40
  * Copyright OpenJS Foundation and other contributors
41
41
  */
42
42
 
43
- /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
44
-
45
43
  /**
46
44
  * @license
47
45
  * Copyright 2000, Silicon Graphics, Inc. All Rights Reserved.
package/dist/X3DUOM.xml CHANGED
@@ -778,35 +778,93 @@
778
778
  <field name="positions"
779
779
  type="MFVec3f"
780
780
  accessType="inputOutput"
781
- description="Input/Output field positions."/>
781
+ description="The mean vector for the Gaussian splat is provided by the positions of the mesh primitive. This defines the center of the Gaussian splat ellipsoid in local space. The effective global mean vector for the Gaussian splat is derived from the positions field value and the global transformation matrix of the X3D node that instantiates the mesh containing the splat primitive as defined in the glTF specification."/>
782
782
  <field name="orientations"
783
783
  type="MFVec4f"
784
784
  accessType="inputOutput"
785
- description="Input/Output field orientations."/>
785
+ description="The orientations field values correspond to the orientation of those axes in local space. Orientation values are stored as unit quaternions in the usual glTF order."/>
786
786
  <field name="scales"
787
787
  type="MFVec3f"
788
788
  accessType="inputOutput"
789
- description="Input/Output field scales."/>
789
+ description="The scales field values correspond to the spread of the Gaussian along its local principal axes. Scale values are linear and MUST NOT be negative."/>
790
790
  <field name="opacities"
791
791
  type="MFFloat"
792
792
  accessType="inputOutput"
793
- description="Input/Output field opacities."/>
794
- <field name="sphericalHarmonics0"
793
+ description="The opacity of a Gaussian splat is defined by the opacities field. It stores a normalized linear value between 0.0 (transparent) and 1.0 (opaque). Out-of-range values are invalid."/>
794
+ <field name="sphericalHarmonicsDegree0Coef0"
795
+ type="MFVec3f"
796
+ accessType="inputOutput"
797
+ description="The sphericalHarmonicsDegree0Coef0 field semantic provides the diffuse component coefficients for the spherical harmonics. The zeroth-order spherical harmonic coefficients are always required."/>
798
+ <field name="sphericalHarmonicsDegree1Coef0"
799
+ type="MFVec3f"
800
+ accessType="inputOutput"
801
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
802
+ <field name="sphericalHarmonicsDegree1Coef1"
803
+ type="MFVec3f"
804
+ accessType="inputOutput"
805
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
806
+ <field name="sphericalHarmonicsDegree1Coef2"
807
+ type="MFVec3f"
808
+ accessType="inputOutput"
809
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
810
+ <field name="sphericalHarmonicsDegree2Coef0"
811
+ type="MFVec3f"
812
+ accessType="inputOutput"
813
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
814
+ <field name="sphericalHarmonicsDegree2Coef1"
815
+ type="MFVec3f"
816
+ accessType="inputOutput"
817
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
818
+ <field name="sphericalHarmonicsDegree2Coef2"
819
+ type="MFVec3f"
820
+ accessType="inputOutput"
821
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
822
+ <field name="sphericalHarmonicsDegree2Coef3"
795
823
  type="MFVec3f"
796
824
  accessType="inputOutput"
797
- description="Input/Output field spherical harmonics coefficients."/>
798
- <field name="sphericalHarmonics1"
825
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
826
+ <field name="sphericalHarmonicsDegree2Coef4"
799
827
  type="MFVec3f"
800
828
  accessType="inputOutput"
801
- description="Input/Output field spherical harmonics coefficients."/>
802
- <field name="sphericalHarmonics2"
829
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
830
+ <field name="sphericalHarmonicsDegree3Coef0"
803
831
  type="MFVec3f"
804
832
  accessType="inputOutput"
805
- description="Input/Output field spherical harmonics coefficients."/>
806
- <field name="sphericalHarmonics3"
833
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
834
+ <field name="sphericalHarmonicsDegree3Coef1"
807
835
  type="MFVec3f"
808
836
  accessType="inputOutput"
809
- description="Input/Output field spherical harmonics coefficients."/>
837
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
838
+ <field name="sphericalHarmonicsDegree3Coef2"
839
+ type="MFVec3f"
840
+ accessType="inputOutput"
841
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
842
+ <field name="sphericalHarmonicsDegree3Coef3"
843
+ type="MFVec3f"
844
+ accessType="inputOutput"
845
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
846
+ <field name="sphericalHarmonicsDegree3Coef4"
847
+ type="MFVec3f"
848
+ accessType="inputOutput"
849
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
850
+ <field name="sphericalHarmonicsDegree3Coef5"
851
+ type="MFVec3f"
852
+ accessType="inputOutput"
853
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
854
+ <field name="sphericalHarmonicsDegree3Coef6"
855
+ type="MFVec3f"
856
+ accessType="inputOutput"
857
+ description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
858
+ <field name="pointerEvents"
859
+ type="SFBool"
860
+ accessType="inputOutput"
861
+ default="TRUE"
862
+ description="The pointerEvents field defines whether this GaussianSplats becomes target for pointer events."/>
863
+ <field name="castShadow"
864
+ type="SFBool"
865
+ accessType="inputOutput"
866
+ default="TRUE"
867
+ description="Input/Output field castShadow."/>
810
868
  <field name="visible"
811
869
  type="SFBool"
812
870
  accessType="inputOutput"
@@ -837,7 +895,7 @@
837
895
  type="SFBool"
838
896
  accessType="inputOutput"
839
897
  default="TRUE"
840
- description="The pointerEvents field defines whether this Layer becomes target for pointer events."/>
898
+ description="The pointerEvents field defines whether this Layer node becomes target for pointer events."/>
841
899
  </InterfaceDefinition>
842
900
  </ConcreteNode>
843
901
 
@@ -847,7 +905,7 @@
847
905
  type="SFBool"
848
906
  accessType="inputOutput"
849
907
  default="TRUE"
850
- description="The pointerEvents field defines whether this LayoutLayer becomes target for pointer events."/>
908
+ description="The pointerEvents field defines whether this LayoutLayer node becomes target for pointer events."/>
851
909
  </InterfaceDefinition>
852
910
  </ConcreteNode>
853
911
 
@@ -1239,13 +1297,38 @@
1239
1297
  default="NULL"
1240
1298
  acceptableNodeTypes="X3DMetadataObject"
1241
1299
  description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node."/>
1300
+ <field name="scatterAnisotropy"
1301
+ type="SFFloat"
1302
+ accessType="inputOutput"
1303
+ default="0"
1304
+ minInclusive="-1"
1305
+ maxInclusive="1"
1306
+ description="The anisotropy of scatter events. Range is [-1, 1]. Positive values represent forward scattering; negative values represent backward scattering."/>
1307
+ <field name="scatterStrength"
1308
+ type="SFFloat"
1309
+ accessType="inputOutput"
1310
+ default="0"
1311
+ minInclusive="0"
1312
+ maxInclusive="1"
1313
+ description="The strength of the scattering effect. Range is [0, 1]. At 0, scattering is disabled; at 1, scattering is fully applied."/>
1314
+ <field name="scatterStrengthTextureMapping"
1315
+ type="SFString"
1316
+ accessType="inputOutput"
1317
+ default=""
1318
+ description="Input/Output field multiscatterColorTextureMapping."/>
1319
+ <field name="scatterStrengthTexture"
1320
+ type="SFNode"
1321
+ accessType="inputOutput"
1322
+ default="NULL"
1323
+ acceptableNodeTypes="X3DSingleTextureNode"
1324
+ description="A texture that defines the per-texel scatter strength, stored in the alpha (A) channel. Will be multiplied by scatterStrength."/>
1242
1325
  <field name="multiscatterColor"
1243
1326
  type="SFColor"
1244
1327
  accessType="inputOutput"
1245
1328
  default="0 0 0"
1246
1329
  minInclusive="0"
1247
1330
  maxInclusive="1"
1248
- description="The multi-scatter albedo."/>
1331
+ description="The multi-scatter color. In volumetric mode, this is the multi-scatter albedo. In thin-walled mode, this is a surface tint applied to transmitted light.."/>
1249
1332
  <field name="multiscatterColorTextureMapping"
1250
1333
  type="SFString"
1251
1334
  accessType="inputOutput"
@@ -1256,14 +1339,7 @@
1256
1339
  accessType="inputOutput"
1257
1340
  default="NULL"
1258
1341
  acceptableNodeTypes="X3DSingleTextureNode"
1259
- description="A surface texture that defines the multi-scatter albedo at the volume's entry point. Stored in the RGB channels and encoded in sRGB. This will be multiplied by the multiscatterColorFactor."/>
1260
- <field name="scatterAnisotropy"
1261
- type="SFFloat"
1262
- accessType="inputOutput"
1263
- default="0"
1264
- minInclusive="-1"
1265
- maxInclusive="1"
1266
- description="The anisotropy of scatter events. Range is [-1, 1]."/>
1342
+ description="A texture that defines the multi-scatter color, stored in the RGB channels and encoded in sRGB. This will be multiplied by the multiscatterColor."/>
1267
1343
  <containerField default="extensions" type="xs:NMTOKEN" />
1268
1344
  </InterfaceDefinition>
1269
1345
  </ConcreteNode>
@@ -1,4 +1,4 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
3
3
  /******/ (() => { // webpackBootstrap
4
4
  /******/ "use strict";
@@ -1,2 +1,2 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const t=window[Symbol.for("X_ITE.X3D")];(()=>{var n={n:t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},d:(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)};const e=t.Components;var i=n.n(e);const o=t.Fields;var a=n.n(o);const p=t.X3DFieldDefinition;var r=n.n(p);const u=t.FieldDefinitionArray;var l=n.n(u);const s=t.X3DNode;var d=n.n(s);const c=t.X3DLayerNode;var w=n.n(c);const y=t.Viewpoint;var O=n.n(y);const S=t.Group;var b=n.n(S);const f=t.X3DConstants;var h=n.n(f);const F=t.Namespace;var g=n.n(F);function A(t){w().call(this,t,new(O())(t),new(b())(t)),this.addType(h().AnnotationLayer)}Object.assign(Object.setPrototypeOf(A.prototype,w().prototype),{initialize(){w().prototype.initialize.call(this)}}),Object.defineProperties(A,{...d().getStaticProperties("AnnotationLayer","Annotation",1,"layers","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"isPickable",new(a().SFBool)(!0)),new(r())(h().inputOutput,"layoutPolicy",new(a().MFString)),new(r())(h().inputOutput,"shownGroupID",new(a().MFString)),new(r())(h().inputOutput,"viewport",new(a().SFNode))]),enumerable:!0}});const P=A,N=g().add("AnnotationLayer",P),m=t.X3DChildNode;var v=n.n(m);function D(t){v().call(this,t),this.addType(h().AnnotationTarget)}Object.assign(Object.setPrototypeOf(D.prototype,v().prototype),{initialize(){v().prototype.initialize.call(this)}}),Object.defineProperties(D,{...d().getStaticProperties("AnnotationTarget","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"referencePoint",new(a().SFVec3f)),new(r())(h().inputOutput,"leadLineStyle",new(a().SFNode)),new(r())(h().inputOutput,"marker",new(a().SFNode)),new(r())(h().inputOutput,"annotations",new(a().MFNode))]),enumerable:!0}});const j=D,z=g().add("AnnotationTarget",j),T=t.X3DGroupingNode;var X=n.n(T);function G(t){v().call(this,t),this.addType(h().X3DAnnotationNode)}Object.assign(Object.setPrototypeOf(G.prototype,v().prototype),{initialize(){v().prototype.initialize.call(this)}}),Object.defineProperties(G,d().getStaticProperties("X3DAnnotationNode","Annotation",1));const I=G,L=g().add("X3DAnnotationNode",I);function E(t){X().call(this,t),L.call(this,t),this.addType(h().GroupAnnotation)}Object.assign(Object.setPrototypeOf(E.prototype,X().prototype),L.prototype,{initialize(){X().prototype.initialize.call(this),L.prototype.initialize.call(this)},dispose(){L.prototype.dispose.call(this),X().prototype.dispose.call(this)}}),Object.defineProperties(E,{...d().getStaticProperties("GroupAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"visible",new(a().SFBool)(!0)),new(r())(h().inputOutput,"bboxDisplay",new(a().SFBool)),new(r())(h().initializeOnly,"bboxSize",new(a().SFVec3f)(-1,-1,-1)),new(r())(h().initializeOnly,"bboxCenter",new(a().SFVec3f)),new(r())(h().inputOnly,"addChildren",new(a().MFNode)),new(r())(h().inputOnly,"removeChildren",new(a().MFNode)),new(r())(h().inputOutput,"children",new(a().MFNode))]),enumerable:!0}});const M=E,R=g().add("GroupAnnotation",M),x=t.X3DUrlObject;var V=n.n(x);function B(t){L.call(this,t),V().call(this,t),this.addType(h().IconAnnotation)}Object.assign(Object.setPrototypeOf(B.prototype,L.prototype),V().prototype,{initialize(){L.prototype.initialize.call(this),V().prototype.initialize.call(this)},async requestImmediateLoad(t=!0){},dispose(){V().prototype.dispose.call(this),L.prototype.dispose.call(this)}}),Object.defineProperties(B,{...d().getStaticProperties("IconAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"url",new(a().MFString)),new(r())(h().inputOutput,"autoRefresh",new(a().SFTime)(0)),new(r())(h().inputOutput,"autoRefreshTimeLimit",new(a().SFTime)(3600))]),enumerable:!0}});const C=B,U=g().add("IconAnnotation",C);function _(t){L.call(this,t),this.addType(h().TextAnnotation)}Object.assign(Object.setPrototypeOf(_.prototype,L.prototype),{initialize(){L.prototype.initialize.call(this)}}),Object.defineProperties(_,{...d().getStaticProperties("TextAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"contentType",new(a().SFString)("text/plain")),new(r())(h().inputOutput,"text",new(a().SFString))]),enumerable:!0}});const k=_,q=g().add("TextAnnotation",k);function H(t){L.call(this,t),this.addType(h().URLAnnotation)}Object.assign(Object.setPrototypeOf(H.prototype,L.prototype),{initialize(){L.prototype.initialize.call(this)}}),Object.defineProperties(H,{...d().getStaticProperties("URLAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"url",new(a().MFString))]),enumerable:!0}});const J=H,K=g().add("URLAnnotation",J);i().add({name:"Annotation",concreteNodes:[N,z,R,U,q,K],abstractNodes:[L]});g().add("AnnotationComponent",void 0)})();
@@ -1,4 +1,4 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
3
3
  /******/ (() => { // webpackBootstrap
4
4
  /******/ "use strict";
@@ -1,2 +1,2 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={n:e=>{var i=e&&e.__esModule?()=>e.default:()=>e;return t.d(i,{a:i}),i},d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const i=e.Components;var n=t.n(i);const s=e.Fields;var o=t.n(s);const r=e.X3DFieldDefinition;var l=t.n(r);const d=e.FieldDefinitionArray;var u=t.n(d);const a=e.X3DNode;var c=t.n(a);const b=e.X3DGroupingNode;var p=t.n(b);const O=e.X3DChildNode;var h=t.n(O);const w=e.X3DConstants;var j=t.n(w);const y=e.Namespace;var S=t.n(y);function _(e){h().call(this,e),this.addType(j().X3DProductStructureChildNode)}Object.setPrototypeOf(_.prototype,h().prototype),Object.defineProperties(_,c().getStaticProperties("X3DProductStructureChildNode","CADGeometry",2));const m=_,F=S().add("X3DProductStructureChildNode",m);function f(e){p().call(this,e),F.call(this,e),this.addType(j().CADAssembly)}Object.setPrototypeOf(f.prototype,p().prototype),Object.defineProperties(f,{...c().getStaticProperties("CADAssembly","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const g=f,v=S().add("CADAssembly",g),C=e.X3DBoundedObject;var D=t.n(C);const N=e.TraverseType;var P=t.n(N);const x=e.X3DCast;var B=t.n(x);function I(e){F.call(this,e),D().call(this,e),this.addType(j().CADFace),this.addChildObjects(j().outputOnly,"rebuild",new(o().SFTime)),this.setBoundedObject(!0),this.setPointingObject(!0),this.setCollisionObject(!0),this.setShadowObject(!0),this.setVisibleObject(!0),this.visibleObjects=[]}Object.assign(Object.setPrototypeOf(I.prototype,F.prototype),D().prototype,{initialize(){F.prototype.initialize.call(this),D().prototype.initialize.call(this),this._rebuild.addInterest("set_children__",this),this._bboxSize.addInterest("set_boundedObjects__",this),this._shape.addInterest("requestRebuild",this),this.set_children__()},getBBox(e,t){return this.isDefaultBBoxSize()?this.boundedObject?.getBBox(e,t)??e.set():e.set(this._bboxSize.getValue(),this._bboxCenter.getValue())},getShapes(e,t){for(const i of this.visibleObjects)i.getShapes(e,t);return e},requestRebuild(){this._rebuild.addEvent()},set_children__(){this.setChild(B()(j().X3DChildNode,this._shape))},setChild(e){if(this.childNode){const e=this.childNode;e._isBoundedObject.removeInterest("requestRebuild",this),e._isPointingObject.removeInterest("requestRebuild",this),e._isCameraObject.removeInterest("requestRebuild",this),e._isPickableObject.removeInterest("requestRebuild",this),e._isCollisionObject.removeInterest("requestRebuild",this),e._isShadowObject.removeInterest("requestRebuild",this),e._isVisibleObject.removeInterest("requestRebuild",this),B()(j().X3DBoundedObject,e)&&(e._display.removeInterest("requestRebuild",this),e._bboxDisplay.removeInterest("requestRebuild",this))}if(this.childNode=null,this.boundedObject=null,this.pointingObject=null,this.cameraObject=null,this.pickableObject=null,this.collisionObject=null,this.shadowObject=null,this.visibleObjects.length=0,e){const t=e.getType();for(let i=t.length-1;i>=0;--i){switch(t[i]){case j().LOD:case j().Transform:case j().X3DShapeNode:e._isBoundedObject.addInterest("requestRebuild",this),e._isPointingObject.addInterest("requestRebuild",this),e._isCameraObject.addInterest("requestRebuild",this),e._isPickableObject.addInterest("requestRebuild",this),e._isCollisionObject.addInterest("requestRebuild",this),e._isShadowObject.addInterest("requestRebuild",this),e._isVisibleObject.addInterest("requestRebuild",this),this.childNode=e,e.isVisible()&&(e.isBoundedObject()&&(this.boundedObject=e),e.isPointingObject()&&(this.pointingObject=e),e.isCameraObject()&&(this.cameraObject=e),e.isPickableObject()&&(this.pickableObject=e),e.isCollisionObject()&&(this.collisionObject=e),e.isShadowObject()&&(this.shadowObject=e),e.isVisibleObject()&&this.visibleObjects.push(e)),B()(j().X3DBoundedObject,e)&&(e._display.addInterest("requestRebuild",this),e._bboxDisplay.addInterest("requestRebuild",this),e.isBBoxVisible()&&this.visibleObjects.push(e.getBBoxNode()));break;default:continue}break}}this.set_pointingObjects__(),this.set_cameraObjects__(),this.set_pickableObjects__(),this.set_collisionObjects__(),this.set_shadowObjects__(),this.set_visibleObjects__(),this.set_boundedObjects__()},set_boundedObjects__(){this.setBoundedObject(this.boundedObject||!this.isDefaultBBoxSize())},set_pointingObjects__(){this.setPointingObject(this.pointingObject)},set_cameraObjects__(){this.setCameraObject(this.cameraObject)},set_pickableObjects__(){this.setPickableObject(this.getTransformSensors().size||this.pickableObject)},set_collisionObjects__(){this.setCollisionObject(this.collisionObject)},set_shadowObjects__(){this.setShadowObject(this.shadowObject)},set_visibleObjects__(){this.setVisibleObject(this.visibleObjects.length)},traverse(e,t){switch(e){case P().POINTER:return void this.pointingObject?.traverse(e,t);case P().CAMERA:return void this.cameraObject?.traverse(e,t);case P().PICKING:if(this.getBrowser().getPickable().at(-1))for(const i of this.visibleObjects)i.traverse(e,t);else this.pickableObject?.traverse(e,t);return;case P().COLLISION:return void this.collisionObject?.traverse(e,t);case P().DEPTH:case P().SHADOW:return void this.shadowObject?.traverse(e,t);case P().DISPLAY:for(const i of this.visibleObjects)i.traverse(e,t);return}},dispose(){D().prototype.dispose.call(this),F.prototype.dispose.call(this)}}),Object.defineProperties(I,{...c().getStaticProperties("CADFace","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOutput,"shape",new(o().SFNode))]),enumerable:!0}});const z=I,V=S().add("CADFace",z);function A(e){p().call(this,e),this.addType(j().CADLayer)}Object.setPrototypeOf(A.prototype,p().prototype),Object.defineProperties(A,{...c().getStaticProperties("CADLayer","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const R=A,q=S().add("CADLayer",R),T=e.X3DTransformNode;var X=t.n(T);function k(e){X().call(this,e),F.call(this,e),this.addType(j().CADPart)}Object.setPrototypeOf(k.prototype,X().prototype),Object.defineProperties(k,{...c().getStaticProperties("CADPart","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"translation",new(o().SFVec3f)),new(l())(j().inputOutput,"rotation",new(o().SFRotation)),new(l())(j().inputOutput,"scale",new(o().SFVec3f)(1,1,1)),new(l())(j().inputOutput,"scaleOrientation",new(o().SFRotation)),new(l())(j().inputOutput,"center",new(o().SFVec3f)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const M=k,G=S().add("CADPart",M),L=e.X3DComposedGeometryNode;var Q=t.n(L);function E(e){Q().call(this,e),this.addType(j().IndexedQuadSet)}Object.assign(Object.setPrototypeOf(E.prototype,Q().prototype),{initialize(){Q().prototype.initialize.call(this),this._set_index.addFieldInterest(this._index)},getTriangleIndex:(()=>{const e=[0,1,2,0,2,3];return function(t){const i=t%6;return(t-i)/6*4+e[i]}})(),getPolygonIndex(e){return this._index[e]},getVerticesPerPolygon:()=>4,getNumVertices(){return this.checkVertexCount(this._index.length,4)},build(){const e=this.getNumVertices();Q().prototype.build.call(this,4,e,6,e/4*6)}}),Object.defineProperties(E,{...c().getStaticProperties("IndexedQuadSet","CADGeometry",1,"geometry","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOnly,"set_index",new(o().MFInt32)),new(l())(j().initializeOnly,"solid",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"ccw",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"colorPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"normalPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"index",new(o().MFInt32)),new(l())(j().inputOutput,"attrib",new(o().MFNode)),new(l())(j().inputOutput,"fogCoord",new(o().SFNode)),new(l())(j().inputOutput,"color",new(o().SFNode)),new(l())(j().inputOutput,"texCoord",new(o().SFNode)),new(l())(j().inputOutput,"tangent",new(o().SFNode)),new(l())(j().inputOutput,"normal",new(o().SFNode)),new(l())(j().inputOutput,"coord",new(o().SFNode))]),enumerable:!0}});const H=E,K=S().add("IndexedQuadSet",H);function W(e){Q().call(this,e),this.addType(j().QuadSet)}Object.assign(Object.setPrototypeOf(W.prototype,Q().prototype),{getTriangleIndex:(()=>{const e=[0,1,2,0,2,3];return function(t){const i=t%6;return(t-i)/6*4+e[i]}})(),getVerticesPerPolygon:()=>4,getNumVertices(){return this.checkVertexCount(this.getCoord()?.getSize()??0,4)},build(){const e=this.getNumVertices();Q().prototype.build.call(this,4,e,6,e/4*6)},createNormals(e,t,i){return this.createFaceNormals(e,t,i)}}),Object.defineProperties(W,{...c().getStaticProperties("QuadSet","CADGeometry",1,"geometry","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().initializeOnly,"solid",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"ccw",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"colorPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"normalPerVertex",new(o().SFBool)(!0)),new(l())(j().inputOutput,"attrib",new(o().MFNode)),new(l())(j().inputOutput,"fogCoord",new(o().SFNode)),new(l())(j().inputOutput,"color",new(o().SFNode)),new(l())(j().inputOutput,"texCoord",new(o().SFNode)),new(l())(j().inputOutput,"tangent",new(o().SFNode)),new(l())(j().inputOutput,"normal",new(o().SFNode)),new(l())(j().inputOutput,"coord",new(o().SFNode))]),enumerable:!0}});const Y=W,J=S().add("QuadSet",Y);n().add({name:"CADGeometry",concreteNodes:[v,V,q,G,K,J],abstractNodes:[F]});S().add("CADGeometryComponent",void 0)})();
@@ -1,4 +1,4 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
3
3
  /******/ (() => { // webpackBootstrap
4
4
  /******/ "use strict";
@@ -409,6 +409,11 @@ Object .assign (Object .setPrototypeOf (ComposedCubeMapTexture .prototype, CubeM
409
409
  this .addNodeEvent ();
410
410
  }
411
411
  },
412
+ getRenderedTextures (renderedTextures)
413
+ {
414
+ for (const textureNode of this .textureNodes)
415
+ textureNode ?.getRenderedTextures (renderedTextures);
416
+ },
412
417
  });
413
418
 
414
419
  Object .defineProperties (ComposedCubeMapTexture,
@@ -517,6 +522,10 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
517
522
  {
518
523
  return true;
519
524
  },
525
+ getRenderedTextures (renderedTextures)
526
+ {
527
+ renderedTextures .add (this);
528
+ },
520
529
  addUpdateCallback (key, callback)
521
530
  {
522
531
  this .updateCallbacks .set (key, callback);
@@ -585,12 +594,12 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
585
594
  // Rotations to negated normals of the texture cube.
586
595
 
587
596
  const rotations = [
588
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Z_AXIS), // front
589
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Z_AXIS), // back
590
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).X_AXIS), // left
591
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_X_AXIS), // right
592
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Y_AXIS), // top
593
- new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Y_AXIS), // bottom
597
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Z_AXIS), // front
598
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Z_AXIS), // back
599
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).X_AXIS), // left
600
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_X_AXIS), // right
601
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Y_AXIS), // top
602
+ external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Y_AXIS), // bottom
594
603
  ];
595
604
 
596
605
  // Negated scales of the texture cube.
@@ -622,8 +631,9 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
622
631
  const
623
632
  dependentRenderer = this .dependentRenderers .get (renderObject),
624
633
  browser = this .getBrowser (),
625
- layer = renderObject .getLayer (),
626
634
  gl = browser .getContext (),
635
+ layer = renderObject .getLayer (),
636
+ viewport = this .viewport,
627
637
  background = dependentRenderer .getBackground (),
628
638
  navigationInfoNode = dependentRenderer .getNavigationInfo (),
629
639
  viewpointNode = dependentRenderer .getViewpoint (),
@@ -638,7 +648,7 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
638
648
  this .setTransparent (background .isTransparent ());
639
649
 
640
650
  dependentRenderer .setFramebuffer (this .frameBuffer);
641
- dependentRenderer .getViewVolumes () .push (viewVolume .set (projectionMatrix, this .viewport, this .viewport));
651
+ dependentRenderer .getViewVolumes () .push (viewVolume .set (projectionMatrix, viewport, viewport));
642
652
  dependentRenderer .getProjectionMatrix () .push (projectionMatrix);
643
653
 
644
654
  gl .bindTexture (this .getTarget (), this .getTexture ());
@@ -647,8 +657,8 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
647
657
 
648
658
  for (let i = 0; i < 6; ++ i)
649
659
  {
650
- gl .viewport (... this .viewport);
651
- gl .scissor (... this .viewport);
660
+ gl .viewport (... viewport);
661
+ gl .scissor (... viewport);
652
662
  gl .clearColor (0, 0, 0, 0);
653
663
  gl .clear (gl .COLOR_BUFFER_BIT); // Always clear, X3DBackground could be transparent!
654
664
 
@@ -708,8 +718,11 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
708
718
  {
709
719
  CubeMapTexturing_X3DEnvironmentTextureNode .prototype .setShaderUniforms .call (this, gl, channel);
710
720
 
711
- if (this .textureRenderingPass)
712
- gl .viewport (0, 0, 0, 0); // Hide object by making viewport zero size.
721
+ if (!this .textureRenderingPass)
722
+ return;
723
+
724
+ // Hide object by making scissor zero size.
725
+ gl .scissor (0, 0, 0, 0);
713
726
  },
714
727
  });
715
728
 
@@ -736,6 +749,9 @@ const GeneratedCubeMapTexture_default_ = GeneratedCubeMapTexture;
736
749
  ;// external "__X_ITE_X3D__ .X3DUrlObject"
737
750
  const external_X_ITE_X3D_X3DUrlObject_namespaceObject = __X_ITE_X3D__ .X3DUrlObject;
738
751
  var external_X_ITE_X3D_X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DUrlObject_namespaceObject);
752
+ ;// external "__X_ITE_X3D__ .FileLoader"
753
+ const external_X_ITE_X3D_FileLoader_namespaceObject = __X_ITE_X3D__ .FileLoader;
754
+ var external_X_ITE_X3D_FileLoader_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_FileLoader_namespaceObject);
739
755
  ;// external "__X_ITE_X3D__ .Vector2"
740
756
  const external_X_ITE_X3D_Vector2_namespaceObject = __X_ITE_X3D__ .Vector2;
741
757
  var external_X_ITE_X3D_Vector2_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector2_namespaceObject);
@@ -754,6 +770,7 @@ var external_X_ITE_X3D_DEVELOPMENT_default = /*#__PURE__*/__webpack_require__.n(
754
770
 
755
771
 
756
772
 
773
+
757
774
  function ImageCubeMapTexture (executionContext)
758
775
  {
759
776
  CubeMapTexturing_X3DEnvironmentTextureNode .call (this, executionContext);
@@ -805,38 +822,48 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
805
822
  return;
806
823
  }
807
824
 
808
- // Get URL.
825
+ new (external_X_ITE_X3D_FileLoader_default()) (this, { dataAsString: false }) .loadDocument ([this .urlStack .shift ()], (data, fileURL) =>
826
+ {
827
+ if (data === null)
828
+ {
829
+ this .loadNext ();
830
+ }
831
+ else if (data instanceof ArrayBuffer)
832
+ {
833
+ this .fileURL = new URL (fileURL);
809
834
 
810
- this .URL = new URL (this .urlStack .shift (), this .getExecutionContext () .getBaseURL ());
835
+ if (this .fileURL .pathname .match (/\.ktx2?(?:\.gz)?$/) || this .fileURL .href .match (/^\s*data:image\/ktx2[;,]/s))
836
+ {
837
+ this .setLinear (true);
838
+ this .setMipMaps (false);
811
839
 
812
- if (this .URL .pathname .match (/\.ktx2?(?:\.gz)?$/) || this .URL .href .match (/^data:image\/ktx2[;,]/))
813
- {
814
- this .setLinear (true);
815
- this .setMipMaps (false);
840
+ this .getBrowser () .getKTXDecoder ()
841
+ .then (decoder => decoder .loadKTXFromBuffer (data))
842
+ .then (texture => this .setKTXTexture (texture))
843
+ .catch (error => this .setError ({ type: error .message }));
844
+ }
845
+ else
846
+ {
847
+ this .setLinear (false);
848
+ this .setMipMaps (true);
816
849
 
817
- this .getBrowser () .getKTXDecoder ()
818
- .then (decoder => decoder .loadKTXFromURL (this .URL, this .getCache ()))
819
- .then (texture => this .setKTXTexture (texture))
820
- .catch (error => this .setError ({ type: error .message }));
821
- }
822
- else
823
- {
824
- this .setLinear (false);
825
- this .setMipMaps (true);
850
+ this .objectURL = URL .createObjectURL (new Blob ([data]));
826
851
 
827
- if (this .URL .protocol !== "data:")
852
+ this .image .attr ("src", this .objectURL);
853
+ }
854
+ }
855
+ else
828
856
  {
829
- if (!this .getCache ())
830
- this .URL .searchParams .set ("_", Date .now ());
857
+ throw new Error ("ImageTexture: no suitable file type handler found.");
831
858
  }
832
-
833
- this .image .attr ("src", this .URL);
834
- }
859
+ });
835
860
  },
836
861
  setError (event)
837
862
  {
838
- if (this .URL .protocol !== "data:")
839
- console .warn (`Error loading image '${decodeURI (this .URL)}':`, event .type);
863
+ if (this .fileURL .protocol !== "data:")
864
+ console .warn (`Error loading image '${decodeURI (this .fileURL)}':`, event .type);
865
+
866
+ URL .revokeObjectURL (this .objectURL);
840
867
 
841
868
  this .loadNext ();
842
869
  },
@@ -847,8 +874,8 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
847
874
 
848
875
  if ((external_X_ITE_X3D_DEVELOPMENT_default()))
849
876
  {
850
- if (this .URL .protocol !== "data:")
851
- console .info (`Done loading image cube map texture '${decodeURI (this .URL)}'.`);
877
+ if (this .fileURL .protocol !== "data:")
878
+ console .info (`Done loading image cube map texture '${decodeURI (this .fileURL)}'.`);
852
879
  }
853
880
 
854
881
  try
@@ -871,8 +898,8 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
871
898
  {
872
899
  if ((external_X_ITE_X3D_DEVELOPMENT_default()))
873
900
  {
874
- if (this .URL .protocol !== "data:")
875
- console .info (`Done loading image cube map texture '${decodeURI (this .URL)}'.`);
901
+ if (this .fileURL .protocol !== "data:")
902
+ console .info (`Done loading image cube map texture '${decodeURI (this .fileURL)}'.`);
876
903
  }
877
904
 
878
905
  try
@@ -902,6 +929,10 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
902
929
  // Catch security error from cross origin requests.
903
930
  this .setError ({ type: error .message });
904
931
  }
932
+ finally
933
+ {
934
+ URL .revokeObjectURL (this .objectURL);
935
+ }
905
936
  },
906
937
  imageToCubeMap (texture, width, height)
907
938
  {
@@ -1,2 +1,2 @@
1
- /* X_ITE v15.1.1 */
2
- const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={254(t){t.exports=e.jquery}},r={};function i(e){var s=r[e];if(void 0!==s)return s.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const s=e.Components;var a=i.n(s);const n=e.Namespace;var o=i.n(n);const u=o().add("Panorama2.fs","#version 300 es\nprecision highp float;precision highp int;precision highp sampler2D;const float M_PI=3.1415926535897932384626433832795;in vec2 texCoord;out vec4 x3d_FragColor;uniform sampler2D x3d_PanoramaTextureEXT;uniform int x3d_CurrentFaceEXT;vec3 uvToXYZ(const in int face,const in vec2 uv){switch(face){case 0:return vec3(1.,uv.y,uv.x);case 1:return vec3(-1.,uv.y,-uv.x);case 2:return vec3(uv.x,uv.y,-1.);case 3:return vec3(-uv.x,uv.y,1.);case 4:return vec3(uv.y,-1.,uv.x);default:return vec3(-uv.y,1.,uv.x);}}vec2 dirToUV(const in vec3 dir){return vec2(.5+.5*atan(dir.z,dir.x)/M_PI,1.-acos(dir.y)/M_PI);}vec3 panoramaToCubeMap(const in int face,const in vec2 texCoord){vec3 scan=uvToXYZ(face,texCoord);vec3 direction=normalize(scan);vec2 src=dirToUV(direction);return texture(x3d_PanoramaTextureEXT,src).rgb;}void main(){x3d_FragColor=vec4(panoramaToCubeMap(x3d_CurrentFaceEXT,texCoord),1.);}"),h=Symbol();function T(){}Object.assign(T.prototype,{getPanoramaShader(){return this[h]??=this.createShader({name:"Panorama",vertexShader:"FullScreen",fragmentShader:`data:x-shader/x-fragment,${u}`,uniforms:["x3d_PanoramaTextureEXT","x3d_CurrentFaceEXT"]})}});const d=T,p=o().add("X3DCubeMapTexturingContext",d),x=e.Fields;var c=i.n(x);const g=e.X3DFieldDefinition;var l=i.n(g);const _=e.FieldDefinitionArray;var E=i.n(_);const m=e.X3DNode;var f=i.n(m);const w=e.X3DSingleTextureNode;var R=i.n(w);const b=e.X3DConstants;var S=i.n(b);function v(e){R().call(this,e),this.addType(S().X3DEnvironmentTextureNode);const t=this.getBrowser().getContext();this.target=t.TEXTURE_CUBE_MAP,this.targets=[t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y],this.size=1,this.levels=0}Object.assign(Object.setPrototypeOf(v.prototype,R().prototype),{getTarget(){return this.target},getTextureType:()=>4,getTargets(){return this.targets},getSize(){return this.size},setSize(e){this.size=e,this.levels=Math.floor(Math.log2(Math.max(e,1)))},getLevels(){return this.levels},clearTexture:(()=>{const e=new Uint8Array([255,255,255,255]);return function(){const t=this.getBrowser().getContext();t.bindTexture(this.getTarget(),this.getTexture());for(const r of this.getTargets())t.texImage2D(r,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,e);this.setSize(1),this.setTransparent(!1),this.updateTextureParameters()}})(),updateTextureParameters(){R().prototype.updateTextureParameters.call(this,this.target,this._textureProperties.getValue(),this.texturePropertiesNode,this.size,this.size,!1,!1,!1)},setShaderUniforms(e,t){const r=this.getBrowser().popTextureUnit();e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_CUBE_MAP,this.getTexture()),e.uniform1i(t.textureCube,r)}}),Object.defineProperties(v,f().getStaticProperties("X3DEnvironmentTextureNode","CubeMapTexturing",1));const M=v,C=o().add("X3DEnvironmentTextureNode",M),U=e.X3DCast;var A=i.n(U);const I=e.BitSet;var P=i.n(I);function X(e){C.call(this,e),this.addType(S().ComposedCubeMapTexture),this.addChildObjects(S().outputOnly,"update",new(c().SFTime)),e.getSpecificationVersion()<=3.3&&(this.addAlias("front",this._frontTexture),this.addAlias("back",this._backTexture),this.addAlias("left",this._leftTexture),this.addAlias("right",this._rightTexture),this.addAlias("top",this._topTexture),this.addAlias("bottom",this._bottomTexture)),this.textureNodes=[null,null,null,null,null,null],this.textureBits=new(P())}Object.assign(Object.setPrototypeOf(X.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this);const e=this.getBrowser().getContext();this.frameBuffer=e.createFramebuffer(),this.clearTexture(),this._frontTexture.addInterest("set_texture__",this,0),this._backTexture.addInterest("set_texture__",this,1),this._leftTexture.addInterest("set_texture__",this,2),this._rightTexture.addInterest("set_texture__",this,3),this._topTexture.addInterest("set_texture__",this,5),this._bottomTexture.addInterest("set_texture__",this,4),this._update.addInterest("update",this),this.set_texture__(0,this._frontTexture),this.set_texture__(1,this._backTexture),this.set_texture__(2,this._leftTexture),this.set_texture__(3,this._rightTexture),this.set_texture__(4,this._topTexture),this.set_texture__(5,this._bottomTexture)},set_texture__(e,t){let r=this.textureNodes[e];r?.removeInterest("set_loadState__",this),r=this.textureNodes[e]=A()(S().X3DTexture2DNode,t),r?.addInterest("set_loadState__",this,e,r),this.set_loadState__(e,r)},set_loadState__(e,t){this.setTextureBit(e,t?.checkLoadState()),this._update.addEvent()},setTextureBit(e,t){this.textureBits.set(e,t===S().COMPLETE_STATE)},isComplete(){if(63!==+this.textureBits)return!1;const e=this.textureNodes,t=e[0].getWidth();for(const r of e){if(r.getWidth()!==t)return!1;if(r.getHeight()!==t)return!1}return!0},update(){if(this.isComplete()){const e=this.getBrowser().getContext(),t=this.textureNodes,r=t[0].getWidth();if(r!==this.getSize()){const t=new Uint8Array(r*r*4);e.bindTexture(this.getTarget(),this.getTexture());for(let i=0;i<6;++i)e.texImage2D(this.getTargets()[i],0,e.RGBA,r,r,0,e.RGBA,e.UNSIGNED_BYTE,t);this.setSize(r),this.updateTextureParameters()}e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer);for(let i=0;i<6;++i){const s=t[i];if(e.bindTexture(e.TEXTURE_2D,s.getTexture()),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s.getTexture(),0),e.bindTexture(this.getTarget(),this.getTexture()),1===s.getTextureType())e.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,r,r);else for(let t=0;t<r;++t)e.copyTexSubImage2D(this.getTargets()[i],0,0,r-t-1,0,t,r,1)}this.setTransparent(t.some(e=>e.isTransparent())),this.setLinear(t.some(e=>e.isLinear())),this.setMipMaps(t.every(e=>e.canMipMaps())),this.updateTextureParameters(),this.addNodeEvent()}else this.clearTexture(),this.addNodeEvent()}}),Object.defineProperties(X,{...f().getStaticProperties("ComposedCubeMapTexture","CubeMapTexturing",1,"texture","3.1"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"frontTexture",new(c().SFNode)),new(l())(S().inputOutput,"backTexture",new(c().SFNode)),new(l())(S().inputOutput,"leftTexture",new(c().SFNode)),new(l())(S().inputOutput,"rightTexture",new(c().SFNode)),new(l())(S().inputOutput,"topTexture",new(c().SFNode)),new(l())(S().inputOutput,"bottomTexture",new(c().SFNode)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const N=X,F=o().add("ComposedCubeMapTexture",N),y=e.DependentRenderer;var D=i.n(y);const B=e.TextureBuffer;var O=i.n(B);const L=e.TraverseType;var V=i.n(L);const G=e.Camera;var z=i.n(G);const j=e.ViewVolume;var k=i.n(j);const Y=e.Rotation4;var Z=i.n(Y);const W=e.Vector3;var H=i.n(W);const K=e.Vector4;var $=i.n(K);const q=e.Matrix4;var J=i.n(q);const Q=e.Algorithm;var ee=i.n(Q);function te(e){C.call(this,e),this.addType(S().GeneratedCubeMapTexture),this.dependentRenderers=new WeakMap,this.projectionMatrix=new(J()),this.modelMatrix=new(J()),this.updateCallbacks=new Map}Object.assign(Object.setPrototypeOf(te.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this),this.clearTexture(),this._size.addInterest("set_size__",this),this.set_size__()},isRenderedTexture:()=>!0,addUpdateCallback(e,t){this.updateCallbacks.set(e,t)},removeUpdateCallback(e){this.updateCallbacks.delete(e)},set_size__(){const e=this.getBrowser(),t=e.getContext(),r=this._size.getValue();if(r>0){const i=new Uint8Array(r*r*4);t.bindTexture(this.getTarget(),this.getTexture());for(const e of this.getTargets())t.texImage2D(e,0,t.RGBA,r,r,0,t.RGBA,t.UNSIGNED_BYTE,i);this.updateTextureParameters(),this.viewport=new($())(0,0,r,r),this.frameBuffer=new(O())({browser:e,width:r,height:r}),this.setSize(r)}else this.frameBuffer=null,this.setSize(0)},traverse(e,t){t.isIndependent()&&this.frameBuffer&&"NONE"!==this._update.getValue()&&(t.getRenderedTextures().add(this),this.modelMatrix.assign(t.getModelViewMatrix().get()).multRight(t.getCameraSpaceMatrix().get()))},renderTexture:(()=>{const e=[new(Z())(H().Z_AXIS,H().NEGATIVE_Z_AXIS),new(Z())(H().Z_AXIS,H().Z_AXIS),new(Z())(H().Z_AXIS,H().X_AXIS),new(Z())(H().Z_AXIS,H().NEGATIVE_X_AXIS),new(Z())(H().Z_AXIS,H().NEGATIVE_Y_AXIS),new(Z())(H().Z_AXIS,H().Y_AXIS)],t=[new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(1,1,1),new(H())(1,1,1)],r=new(J()),i=new(k());return function(s){this.textureRenderingPass=!0,this.dependentRenderers.has(s)||this.dependentRenderers.set(s,new(D())(this.getExecutionContext(),s));const a=this.dependentRenderers.get(s),n=this.getBrowser(),o=s.getLayer(),u=n.getContext(),h=a.getBackground(),T=a.getNavigationInfo(),d=a.getViewpoint(),p=n.getHeadlight(),x=T._headlight.getValue(),c=d.getNearDistance(T),g=d.getFarDistance(T),l=z().perspective(ee().radians(90),c,g,1,1,this.projectionMatrix),_=this.frameBuffer.getWidth(),E=this.frameBuffer.getHeight();this.setTransparent(h.isTransparent()),a.setFramebuffer(this.frameBuffer),a.getViewVolumes().push(i.set(l,this.viewport,this.viewport)),a.getProjectionMatrix().push(l),u.bindTexture(this.getTarget(),this.getTexture()),this.frameBuffer.bind();for(let i=0;i<6;++i)u.viewport(...this.viewport),u.scissor(...this.viewport),u.clearColor(0,0,0,0),u.clear(u.COLOR_BUFFER_BIT),a.getCameraSpaceMatrix().push(this.modelMatrix),a.getCameraSpaceMatrix().rotate(e[i]),a.getCameraSpaceMatrix().scale(t[i]),r.assign(a.getCameraSpaceMatrix().get()).inverse(),a.getViewMatrix().push(r),a.getModelViewMatrix().push(r),x&&(p.modelViewMatrix.push(r),p.modelViewMatrix.multLeft(d.getCameraSpaceMatrix())),o.traverse(V().DISPLAY,a),x&&p.modelViewMatrix.pop(),a.getModelViewMatrix().pop(),a.getCameraSpaceMatrix().pop(),a.getViewMatrix().pop(),u.bindTexture(this.getTarget(),this.getTexture()),u.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,_,E);this.updateTextureParameters(),a.getProjectionMatrix().pop(),a.getViewVolumes().pop(),this._update.equals("NEXT_FRAME_ONLY")&&(this._update="NONE");for(const e of this.updateCallbacks.values())e();this.textureRenderingPass=!1}})(),setShaderUniforms(e,t){C.prototype.setShaderUniforms.call(this,e,t),this.textureRenderingPass&&e.viewport(0,0,0,0)}}),Object.defineProperties(te,{...f().getStaticProperties("GeneratedCubeMapTexture","CubeMapTexturing",3,"texture","3.0"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"update",new(c().SFString)("NONE")),new(l())(S().initializeOnly,"size",new(c().SFInt32)(128)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const re=te,ie=o().add("GeneratedCubeMapTexture",re),se=e.X3DUrlObject;var ae=i.n(se);const ne=e.Vector2;var oe=i.n(ne);const ue=e.DEVELOPMENT;var he=i.n(ue),Te=i(254);function de(e){C.call(this,e),ae().call(this,e),this.addType(S().ImageCubeMapTexture),this.image=Te("<img></img>"),this.urlStack=new(c().MFString)}Object.assign(Object.setPrototypeOf(de.prototype,C.prototype),ae().prototype,{initialize(){C.prototype.initialize.call(this),ae().prototype.initialize.call(this),this.clearTexture(),this.image.on("load",this.setImage.bind(this)).on("abort error",this.setError.bind(this)).attr("crossorigin","anonymous"),this.requestImmediateLoad().catch(Function.prototype)},unloadData(){this.clearTexture()},loadData(){this.urlStack.setValue(this._url),this.loadNext()},loadNext(){if(0===this.urlStack.length)return this.clearTexture(),this.setLoadState(S().FAILED_STATE),void this.addNodeEvent();this.URL=new URL(this.urlStack.shift(),this.getExecutionContext().getBaseURL()),this.URL.pathname.match(/\.ktx2?(?:\.gz)?$/)||this.URL.href.match(/^data:image\/ktx2[;,]/)?(this.setLinear(!0),this.setMipMaps(!1),this.getBrowser().getKTXDecoder().then(e=>e.loadKTXFromURL(this.URL,this.getCache())).then(e=>this.setKTXTexture(e)).catch(e=>this.setError({type:e.message}))):(this.setLinear(!1),this.setMipMaps(!0),"data:"!==this.URL.protocol&&(this.getCache()||this.URL.searchParams.set("_",Date.now())),this.image.attr("src",this.URL))},setError(e){"data:"!==this.URL.protocol&&console.warn(`Error loading image '${decodeURI(this.URL)}':`,e.type),this.loadNext()},setKTXTexture(e){if(e.target!==this.getTarget())return this.setError({type:"Invalid KTX texture target, must be 'TEXTURE_CUBE_MAP'."});he()&&"data:"!==this.URL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.URL)}'.`);try{this.setTexture(e),this.setTransparent(!1),this.setSize(e.baseWidth),this.updateTextureParameters(),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},setImage(){he()&&"data:"!==this.URL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.URL)}'.`);try{const e=this.getBrowser().getContext(),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image[0]),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),this.imageToCubeMap(t,this.image.prop("width"),this.image.prop("height"),!1),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},imageToCubeMap(e,t,r){const i=t/r;Math.abs(i-4/3)<.01&&this.skyBoxToCubeMap(e,t,r),Math.abs(i-2)<.01&&this.panoramaToCubeMap(e,t,r),this.updateTextureParameters()},skyBoxToCubeMap:(()=>{const e=[new(oe())(1,1),new(oe())(3,1),new(oe())(0,1),new(oe())(2,1),new(oe())(1,0),new(oe())(1,2)];return function(t,r,i){const s=this.getBrowser().getContext(),a=s.createFramebuffer(),n=Math.floor(r/4),o=Math.floor(i/3),u=new Uint8Array(n*o*4);s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,n,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.bindFramebuffer(s.FRAMEBUFFER,a),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0);let h=!1;s.bindTexture(this.getTarget(),this.getTexture());for(let t=0;t<6;++t)s.copyTexSubImage2D(this.getTargets()[t],0,0,0,e[t].x*n,e[t].y*o,n,o),h||(s.readPixels(e[t].x*n,e[t].y*o,n,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.deleteFramebuffer(a),s.deleteTexture(t),this.setTransparent(h),this.setSize(n)}})(),panoramaToCubeMap(e,t,r){const i=this.getBrowser(),s=i.getContext(),a=i.getPanoramaShader(),n=s.createFramebuffer(),o=Math.floor(r/2),u=new Uint8Array(o*o*4);s.bindTexture(s.TEXTURE_2D,e),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,o,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.useProgram(a.getProgram()),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,e),s.uniform1i(a.x3d_PanoramaTextureEXT,0),s.bindFramebuffer(s.FRAMEBUFFER,n),s.viewport(0,0,o,o),s.scissor(0,0,o,o),s.disable(s.DEPTH_TEST),s.enable(s.CULL_FACE),s.frontFace(s.CCW),s.clearColor(0,0,0,0),s.bindVertexArray(i.getFullscreenVertexArrayObject());let h=!1;for(let e=0;e<6;++e)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,this.getTargets()[e],this.getTexture(),0),s.clear(s.COLOR_BUFFER_BIT),s.uniform1i(a.x3d_CurrentFaceEXT,e),s.drawArrays(s.TRIANGLES,0,6),h||(s.readPixels(0,0,o,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.enable(s.DEPTH_TEST),s.deleteFramebuffer(n),s.deleteTexture(e),this.setTransparent(h),this.setSize(o)},dispose(){ae().prototype.dispose.call(this),C.prototype.dispose.call(this)}}),Object.defineProperties(de,{...f().getStaticProperties("ImageCubeMapTexture","CubeMapTexturing",2,"texture","3.0"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"load",new(c().SFBool)(!0)),new(l())(S().inputOutput,"url",new(c().MFString)),new(l())(S().inputOutput,"autoRefresh",new(c().SFTime)(0)),new(l())(S().inputOutput,"autoRefreshTimeLimit",new(c().SFTime)(3600)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const pe=de,xe=o().add("ImageCubeMapTexture",pe);a().add({name:"CubeMapTexturing",concreteNodes:[F,ie,xe],abstractNodes:[C],browserContext:p});o().add("CubeMapTexturingComponent",void 0)})();
1
+ /* X_ITE v15.1.3 */
2
+ const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={254(t){t.exports=e.jquery}},r={};function i(e){var s=r[e];if(void 0!==s)return s.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const s=e.Components;var a=i.n(s);const n=e.Namespace;var o=i.n(n);const u=o().add("Panorama2.fs","#version 300 es\nprecision highp float;precision highp int;precision highp sampler2D;const float M_PI=3.1415926535897932384626433832795;in vec2 texCoord;out vec4 x3d_FragColor;uniform sampler2D x3d_PanoramaTextureEXT;uniform int x3d_CurrentFaceEXT;vec3 uvToXYZ(const in int face,const in vec2 uv){switch(face){case 0:return vec3(1.,uv.y,uv.x);case 1:return vec3(-1.,uv.y,-uv.x);case 2:return vec3(uv.x,uv.y,-1.);case 3:return vec3(-uv.x,uv.y,1.);case 4:return vec3(uv.y,-1.,uv.x);default:return vec3(-uv.y,1.,uv.x);}}vec2 dirToUV(const in vec3 dir){return vec2(.5+.5*atan(dir.z,dir.x)/M_PI,1.-acos(dir.y)/M_PI);}vec3 panoramaToCubeMap(const in int face,const in vec2 texCoord){vec3 scan=uvToXYZ(face,texCoord);vec3 direction=normalize(scan);vec2 src=dirToUV(direction);return texture(x3d_PanoramaTextureEXT,src).rgb;}void main(){x3d_FragColor=vec4(panoramaToCubeMap(x3d_CurrentFaceEXT,texCoord),1.);}"),h=Symbol();function d(){}Object.assign(d.prototype,{getPanoramaShader(){return this[h]??=this.createShader({name:"Panorama",vertexShader:"FullScreen",fragmentShader:`data:x-shader/x-fragment,${u}`,uniforms:["x3d_PanoramaTextureEXT","x3d_CurrentFaceEXT"]})}});const T=d,p=o().add("X3DCubeMapTexturingContext",T),c=e.Fields;var x=i.n(c);const l=e.X3DFieldDefinition;var g=i.n(l);const _=e.FieldDefinitionArray;var E=i.n(_);const f=e.X3DNode;var m=i.n(f);const R=e.X3DSingleTextureNode;var b=i.n(R);const w=e.X3DConstants;var S=i.n(w);function M(e){b().call(this,e),this.addType(S().X3DEnvironmentTextureNode);const t=this.getBrowser().getContext();this.target=t.TEXTURE_CUBE_MAP,this.targets=[t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y],this.size=1,this.levels=0}Object.assign(Object.setPrototypeOf(M.prototype,b().prototype),{getTarget(){return this.target},getTextureType:()=>4,getTargets(){return this.targets},getSize(){return this.size},setSize(e){this.size=e,this.levels=Math.floor(Math.log2(Math.max(e,1)))},getLevels(){return this.levels},clearTexture:(()=>{const e=new Uint8Array([255,255,255,255]);return function(){const t=this.getBrowser().getContext();t.bindTexture(this.getTarget(),this.getTexture());for(const r of this.getTargets())t.texImage2D(r,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,e);this.setSize(1),this.setTransparent(!1),this.updateTextureParameters()}})(),updateTextureParameters(){b().prototype.updateTextureParameters.call(this,this.target,this._textureProperties.getValue(),this.texturePropertiesNode,this.size,this.size,!1,!1,!1)},setShaderUniforms(e,t){const r=this.getBrowser().popTextureUnit();e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_CUBE_MAP,this.getTexture()),e.uniform1i(t.textureCube,r)}}),Object.defineProperties(M,m().getStaticProperties("X3DEnvironmentTextureNode","CubeMapTexturing",1));const v=M,C=o().add("X3DEnvironmentTextureNode",v),U=e.X3DCast;var A=i.n(U);const I=e.BitSet;var P=i.n(I);function N(e){C.call(this,e),this.addType(S().ComposedCubeMapTexture),this.addChildObjects(S().outputOnly,"update",new(x().SFTime)),e.getSpecificationVersion()<=3.3&&(this.addAlias("front",this._frontTexture),this.addAlias("back",this._backTexture),this.addAlias("left",this._leftTexture),this.addAlias("right",this._rightTexture),this.addAlias("top",this._topTexture),this.addAlias("bottom",this._bottomTexture)),this.textureNodes=[null,null,null,null,null,null],this.textureBits=new(P())}Object.assign(Object.setPrototypeOf(N.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this);const e=this.getBrowser().getContext();this.frameBuffer=e.createFramebuffer(),this.clearTexture(),this._frontTexture.addInterest("set_texture__",this,0),this._backTexture.addInterest("set_texture__",this,1),this._leftTexture.addInterest("set_texture__",this,2),this._rightTexture.addInterest("set_texture__",this,3),this._topTexture.addInterest("set_texture__",this,5),this._bottomTexture.addInterest("set_texture__",this,4),this._update.addInterest("update",this),this.set_texture__(0,this._frontTexture),this.set_texture__(1,this._backTexture),this.set_texture__(2,this._leftTexture),this.set_texture__(3,this._rightTexture),this.set_texture__(4,this._topTexture),this.set_texture__(5,this._bottomTexture)},set_texture__(e,t){let r=this.textureNodes[e];r?.removeInterest("set_loadState__",this),r=this.textureNodes[e]=A()(S().X3DTexture2DNode,t),r?.addInterest("set_loadState__",this,e,r),this.set_loadState__(e,r)},set_loadState__(e,t){this.setTextureBit(e,t?.checkLoadState()),this._update.addEvent()},setTextureBit(e,t){this.textureBits.set(e,t===S().COMPLETE_STATE)},isComplete(){if(63!==+this.textureBits)return!1;const e=this.textureNodes,t=e[0].getWidth();for(const r of e){if(r.getWidth()!==t)return!1;if(r.getHeight()!==t)return!1}return!0},update(){if(this.isComplete()){const e=this.getBrowser().getContext(),t=this.textureNodes,r=t[0].getWidth();if(r!==this.getSize()){const t=new Uint8Array(r*r*4);e.bindTexture(this.getTarget(),this.getTexture());for(let i=0;i<6;++i)e.texImage2D(this.getTargets()[i],0,e.RGBA,r,r,0,e.RGBA,e.UNSIGNED_BYTE,t);this.setSize(r),this.updateTextureParameters()}e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer);for(let i=0;i<6;++i){const s=t[i];if(e.bindTexture(e.TEXTURE_2D,s.getTexture()),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s.getTexture(),0),e.bindTexture(this.getTarget(),this.getTexture()),1===s.getTextureType())e.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,r,r);else for(let t=0;t<r;++t)e.copyTexSubImage2D(this.getTargets()[i],0,0,r-t-1,0,t,r,1)}this.setTransparent(t.some(e=>e.isTransparent())),this.setLinear(t.some(e=>e.isLinear())),this.setMipMaps(t.every(e=>e.canMipMaps())),this.updateTextureParameters(),this.addNodeEvent()}else this.clearTexture(),this.addNodeEvent()},getRenderedTextures(e){for(const t of this.textureNodes)t?.getRenderedTextures(e)}}),Object.defineProperties(N,{...m().getStaticProperties("ComposedCubeMapTexture","CubeMapTexturing",1,"texture","3.1"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"frontTexture",new(x().SFNode)),new(g())(S().inputOutput,"backTexture",new(x().SFNode)),new(g())(S().inputOutput,"leftTexture",new(x().SFNode)),new(g())(S().inputOutput,"rightTexture",new(x().SFNode)),new(g())(S().inputOutput,"topTexture",new(x().SFNode)),new(g())(S().inputOutput,"bottomTexture",new(x().SFNode)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const X=N,y=o().add("ComposedCubeMapTexture",X),F=e.DependentRenderer;var B=i.n(F);const D=e.TextureBuffer;var O=i.n(D);const L=e.TraverseType;var V=i.n(L);const G=e.Camera;var z=i.n(G);const j=e.ViewVolume;var k=i.n(j);const Y=e.Rotation4;var Z=i.n(Y);const W=e.Vector3;var H=i.n(W);const K=e.Vector4;var $=i.n(K);const q=e.Matrix4;var J=i.n(q);const Q=e.Algorithm;var ee=i.n(Q);function te(e){C.call(this,e),this.addType(S().GeneratedCubeMapTexture),this.dependentRenderers=new WeakMap,this.projectionMatrix=new(J()),this.modelMatrix=new(J()),this.updateCallbacks=new Map}Object.assign(Object.setPrototypeOf(te.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this),this.clearTexture(),this._size.addInterest("set_size__",this),this.set_size__()},isRenderedTexture:()=>!0,getRenderedTextures(e){e.add(this)},addUpdateCallback(e,t){this.updateCallbacks.set(e,t)},removeUpdateCallback(e){this.updateCallbacks.delete(e)},set_size__(){const e=this.getBrowser(),t=e.getContext(),r=this._size.getValue();if(r>0){const i=new Uint8Array(r*r*4);t.bindTexture(this.getTarget(),this.getTexture());for(const e of this.getTargets())t.texImage2D(e,0,t.RGBA,r,r,0,t.RGBA,t.UNSIGNED_BYTE,i);this.updateTextureParameters(),this.viewport=new($())(0,0,r,r),this.frameBuffer=new(O())({browser:e,width:r,height:r}),this.setSize(r)}else this.frameBuffer=null,this.setSize(0)},traverse(e,t){t.isIndependent()&&this.frameBuffer&&"NONE"!==this._update.getValue()&&(t.getRenderedTextures().add(this),this.modelMatrix.assign(t.getModelViewMatrix().get()).multRight(t.getCameraSpaceMatrix().get()))},renderTexture:(()=>{const e=[Z().fromVectors(H().Z_AXIS,H().NEGATIVE_Z_AXIS),Z().fromVectors(H().Z_AXIS,H().Z_AXIS),Z().fromVectors(H().Z_AXIS,H().X_AXIS),Z().fromVectors(H().Z_AXIS,H().NEGATIVE_X_AXIS),Z().fromVectors(H().Z_AXIS,H().NEGATIVE_Y_AXIS),Z().fromVectors(H().Z_AXIS,H().Y_AXIS)],t=[new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(1,1,1),new(H())(1,1,1)],r=new(J()),i=new(k());return function(s){this.textureRenderingPass=!0,this.dependentRenderers.has(s)||this.dependentRenderers.set(s,new(B())(this.getExecutionContext(),s));const a=this.dependentRenderers.get(s),n=this.getBrowser(),o=n.getContext(),u=s.getLayer(),h=this.viewport,d=a.getBackground(),T=a.getNavigationInfo(),p=a.getViewpoint(),c=n.getHeadlight(),x=T._headlight.getValue(),l=p.getNearDistance(T),g=p.getFarDistance(T),_=z().perspective(ee().radians(90),l,g,1,1,this.projectionMatrix),E=this.frameBuffer.getWidth(),f=this.frameBuffer.getHeight();this.setTransparent(d.isTransparent()),a.setFramebuffer(this.frameBuffer),a.getViewVolumes().push(i.set(_,h,h)),a.getProjectionMatrix().push(_),o.bindTexture(this.getTarget(),this.getTexture()),this.frameBuffer.bind();for(let i=0;i<6;++i)o.viewport(...h),o.scissor(...h),o.clearColor(0,0,0,0),o.clear(o.COLOR_BUFFER_BIT),a.getCameraSpaceMatrix().push(this.modelMatrix),a.getCameraSpaceMatrix().rotate(e[i]),a.getCameraSpaceMatrix().scale(t[i]),r.assign(a.getCameraSpaceMatrix().get()).inverse(),a.getViewMatrix().push(r),a.getModelViewMatrix().push(r),x&&(c.modelViewMatrix.push(r),c.modelViewMatrix.multLeft(p.getCameraSpaceMatrix())),u.traverse(V().DISPLAY,a),x&&c.modelViewMatrix.pop(),a.getModelViewMatrix().pop(),a.getCameraSpaceMatrix().pop(),a.getViewMatrix().pop(),o.bindTexture(this.getTarget(),this.getTexture()),o.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,E,f);this.updateTextureParameters(),a.getProjectionMatrix().pop(),a.getViewVolumes().pop(),this._update.equals("NEXT_FRAME_ONLY")&&(this._update="NONE");for(const e of this.updateCallbacks.values())e();this.textureRenderingPass=!1}})(),setShaderUniforms(e,t){C.prototype.setShaderUniforms.call(this,e,t),this.textureRenderingPass&&e.scissor(0,0,0,0)}}),Object.defineProperties(te,{...m().getStaticProperties("GeneratedCubeMapTexture","CubeMapTexturing",3,"texture","3.0"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"update",new(x().SFString)("NONE")),new(g())(S().initializeOnly,"size",new(x().SFInt32)(128)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const re=te,ie=o().add("GeneratedCubeMapTexture",re),se=e.X3DUrlObject;var ae=i.n(se);const ne=e.FileLoader;var oe=i.n(ne);const ue=e.Vector2;var he=i.n(ue);const de=e.DEVELOPMENT;var Te=i.n(de),pe=i(254);function ce(e){C.call(this,e),ae().call(this,e),this.addType(S().ImageCubeMapTexture),this.image=pe("<img></img>"),this.urlStack=new(x().MFString)}Object.assign(Object.setPrototypeOf(ce.prototype,C.prototype),ae().prototype,{initialize(){C.prototype.initialize.call(this),ae().prototype.initialize.call(this),this.clearTexture(),this.image.on("load",this.setImage.bind(this)).on("abort error",this.setError.bind(this)).attr("crossorigin","anonymous"),this.requestImmediateLoad().catch(Function.prototype)},unloadData(){this.clearTexture()},loadData(){this.urlStack.setValue(this._url),this.loadNext()},loadNext(){if(0===this.urlStack.length)return this.clearTexture(),this.setLoadState(S().FAILED_STATE),void this.addNodeEvent();new(oe())(this,{dataAsString:!1}).loadDocument([this.urlStack.shift()],(e,t)=>{if(null===e)this.loadNext();else{if(!(e instanceof ArrayBuffer))throw new Error("ImageTexture: no suitable file type handler found.");this.fileURL=new URL(t),this.fileURL.pathname.match(/\.ktx2?(?:\.gz)?$/)||this.fileURL.href.match(/^\s*data:image\/ktx2[;,]/s)?(this.setLinear(!0),this.setMipMaps(!1),this.getBrowser().getKTXDecoder().then(t=>t.loadKTXFromBuffer(e)).then(e=>this.setKTXTexture(e)).catch(e=>this.setError({type:e.message}))):(this.setLinear(!1),this.setMipMaps(!0),this.objectURL=URL.createObjectURL(new Blob([e])),this.image.attr("src",this.objectURL))}})},setError(e){"data:"!==this.fileURL.protocol&&console.warn(`Error loading image '${decodeURI(this.fileURL)}':`,e.type),URL.revokeObjectURL(this.objectURL),this.loadNext()},setKTXTexture(e){if(e.target!==this.getTarget())return this.setError({type:"Invalid KTX texture target, must be 'TEXTURE_CUBE_MAP'."});Te()&&"data:"!==this.fileURL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.fileURL)}'.`);try{this.setTexture(e),this.setTransparent(!1),this.setSize(e.baseWidth),this.updateTextureParameters(),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},setImage(){Te()&&"data:"!==this.fileURL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.fileURL)}'.`);try{const e=this.getBrowser().getContext(),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image[0]),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),this.imageToCubeMap(t,this.image.prop("width"),this.image.prop("height"),!1),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}finally{URL.revokeObjectURL(this.objectURL)}},imageToCubeMap(e,t,r){const i=t/r;Math.abs(i-4/3)<.01&&this.skyBoxToCubeMap(e,t,r),Math.abs(i-2)<.01&&this.panoramaToCubeMap(e,t,r),this.updateTextureParameters()},skyBoxToCubeMap:(()=>{const e=[new(he())(1,1),new(he())(3,1),new(he())(0,1),new(he())(2,1),new(he())(1,0),new(he())(1,2)];return function(t,r,i){const s=this.getBrowser().getContext(),a=s.createFramebuffer(),n=Math.floor(r/4),o=Math.floor(i/3),u=new Uint8Array(n*o*4);s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,n,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.bindFramebuffer(s.FRAMEBUFFER,a),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0);let h=!1;s.bindTexture(this.getTarget(),this.getTexture());for(let t=0;t<6;++t)s.copyTexSubImage2D(this.getTargets()[t],0,0,0,e[t].x*n,e[t].y*o,n,o),h||(s.readPixels(e[t].x*n,e[t].y*o,n,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.deleteFramebuffer(a),s.deleteTexture(t),this.setTransparent(h),this.setSize(n)}})(),panoramaToCubeMap(e,t,r){const i=this.getBrowser(),s=i.getContext(),a=i.getPanoramaShader(),n=s.createFramebuffer(),o=Math.floor(r/2),u=new Uint8Array(o*o*4);s.bindTexture(s.TEXTURE_2D,e),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,o,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.useProgram(a.getProgram()),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,e),s.uniform1i(a.x3d_PanoramaTextureEXT,0),s.bindFramebuffer(s.FRAMEBUFFER,n),s.viewport(0,0,o,o),s.scissor(0,0,o,o),s.disable(s.DEPTH_TEST),s.enable(s.CULL_FACE),s.frontFace(s.CCW),s.clearColor(0,0,0,0),s.bindVertexArray(i.getFullscreenVertexArrayObject());let h=!1;for(let e=0;e<6;++e)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,this.getTargets()[e],this.getTexture(),0),s.clear(s.COLOR_BUFFER_BIT),s.uniform1i(a.x3d_CurrentFaceEXT,e),s.drawArrays(s.TRIANGLES,0,6),h||(s.readPixels(0,0,o,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.enable(s.DEPTH_TEST),s.deleteFramebuffer(n),s.deleteTexture(e),this.setTransparent(h),this.setSize(o)},dispose(){ae().prototype.dispose.call(this),C.prototype.dispose.call(this)}}),Object.defineProperties(ce,{...m().getStaticProperties("ImageCubeMapTexture","CubeMapTexturing",2,"texture","3.0"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"load",new(x().SFBool)(!0)),new(g())(S().inputOutput,"url",new(x().MFString)),new(g())(S().inputOutput,"autoRefresh",new(x().SFTime)(0)),new(g())(S().inputOutput,"autoRefreshTimeLimit",new(x().SFTime)(3600)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const xe=ce,le=o().add("ImageCubeMapTexture",xe);a().add({name:"CubeMapTexturing",concreteNodes:[y,ie,le],abstractNodes:[C],browserContext:p});o().add("CubeMapTexturingComponent",void 0)})();
@@ -1,4 +1,4 @@
1
- /* X_ITE v15.1.1 */
1
+ /* X_ITE v15.1.3 */
2
2
  const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
3
3
  /******/ (() => { // webpackBootstrap
4
4
  /******/ "use strict";