x_ite 4.7.12 → 5.0.0

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 (759) hide show
  1. package/.vscode/settings.json +9 -2
  2. package/Makefile +27 -24
  3. package/build/bin/version-number.pl +1 -1
  4. package/build/bin/version.pl +3 -3
  5. package/build/parts/default.start.frag.js +2 -2
  6. package/build/parts/x_ite.end.frag.js +1 -2
  7. package/build/parts/x_ite.start.frag.js +4 -7
  8. package/dist/assets/components/annotation.js +312 -312
  9. package/dist/assets/components/annotation.min.js +1 -1
  10. package/dist/assets/components/cad-geometry.js +536 -538
  11. package/dist/assets/components/cad-geometry.min.js +1 -1
  12. package/dist/assets/components/cube-map-texturing.js +797 -796
  13. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  14. package/dist/assets/components/dis.js +487 -472
  15. package/dist/assets/components/dis.min.js +1 -1
  16. package/dist/assets/components/event-utilities.js +486 -505
  17. package/dist/assets/components/event-utilities.min.js +1 -1
  18. package/dist/assets/components/geometry2d.js +1221 -1271
  19. package/dist/assets/components/geometry2d.min.js +1 -1
  20. package/dist/assets/components/geospatial.js +2657 -2653
  21. package/dist/assets/components/geospatial.min.js +1 -2
  22. package/dist/assets/components/h-anim.js +640 -640
  23. package/dist/assets/components/h-anim.min.js +1 -1
  24. package/dist/assets/components/key-device-sensor.js +547 -549
  25. package/dist/assets/components/key-device-sensor.min.js +1 -1
  26. package/dist/assets/components/layout.js +1435 -1433
  27. package/dist/assets/components/layout.min.js +1 -1
  28. package/dist/assets/components/nurbs.js +3942 -3964
  29. package/dist/assets/components/nurbs.min.js +1 -2
  30. package/dist/assets/components/particle-systems.js +3227 -3238
  31. package/dist/assets/components/particle-systems.min.js +1 -2
  32. package/dist/assets/components/picking.js +1704 -1712
  33. package/dist/assets/components/picking.min.js +1 -1
  34. package/dist/assets/components/projective-texture-mapping.js +553 -553
  35. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  36. package/dist/assets/components/rigid-body-physics.js +3255 -3265
  37. package/dist/assets/components/rigid-body-physics.min.js +1 -59
  38. package/dist/assets/components/scripting.js +544 -549
  39. package/dist/assets/components/scripting.min.js +1 -1
  40. package/dist/assets/components/texturing-3d.js +2716 -2651
  41. package/dist/assets/components/texturing-3d.min.js +131 -48
  42. package/dist/assets/components/volume-rendering.js +2815 -2804
  43. package/dist/assets/components/volume-rendering.min.js +1 -3
  44. package/dist/assets/components/x_ite.js +142 -144
  45. package/dist/assets/components/x_ite.min.js +1 -1
  46. package/dist/assets/shaders/webgl1/Gouraud.fs +52 -15
  47. package/dist/assets/shaders/webgl1/Gouraud.vs +8 -9
  48. package/dist/assets/shaders/webgl1/{Wireframe.fs → Line.fs} +0 -0
  49. package/dist/assets/shaders/webgl1/{Wireframe.vs → Line.vs} +1 -1
  50. package/dist/assets/shaders/webgl1/PBR.fs +785 -0
  51. package/dist/assets/shaders/webgl1/PBR.vs +37 -0
  52. package/dist/assets/shaders/webgl1/Phong.fs +204 -32
  53. package/dist/assets/shaders/webgl1/Phong.vs +2 -3
  54. package/dist/assets/shaders/webgl1/{PointSet.fs → Point.fs} +59 -33
  55. package/dist/assets/shaders/webgl1/{PointSet.vs → Point.vs} +2 -2
  56. package/dist/assets/shaders/webgl1/Unlit.fs +73 -18
  57. package/dist/assets/shaders/webgl1/Unlit.vs +2 -3
  58. package/dist/assets/shaders/webgl2/Gouraud.fs +31 -19
  59. package/dist/assets/shaders/webgl2/Gouraud.vs +8 -9
  60. package/dist/assets/shaders/webgl2/{Wireframe.fs → Line.fs} +0 -0
  61. package/dist/assets/shaders/webgl2/{Wireframe.vs → Line.vs} +1 -1
  62. package/dist/assets/shaders/webgl2/PBR.fs +913 -0
  63. package/dist/assets/shaders/webgl2/PBR.vs +37 -0
  64. package/dist/assets/shaders/webgl2/Phong.fs +196 -35
  65. package/dist/assets/shaders/webgl2/Phong.vs +2 -3
  66. package/dist/assets/shaders/webgl2/{PointSet.fs → Point.fs} +87 -86
  67. package/dist/assets/shaders/webgl2/{PointSet.vs → Point.vs} +2 -2
  68. package/dist/assets/shaders/webgl2/Unlit.fs +55 -22
  69. package/dist/assets/shaders/webgl2/Unlit.vs +2 -3
  70. package/dist/example.html +2 -2
  71. package/dist/x_ite.css +316 -328
  72. package/dist/x_ite.js +55663 -52034
  73. package/dist/x_ite.min.js +79 -41
  74. package/dist/x_ite.zip +0 -0
  75. package/docs/Custom-Shaders.md +4 -3
  76. package/docs/_config.yml +1 -1
  77. package/docs/index.md +60 -7
  78. package/package.json +20 -20
  79. package/src/assets/components/annotation.js +24 -24
  80. package/src/assets/components/cad-geometry.js +24 -25
  81. package/src/assets/components/cube-map-texturing.js +18 -19
  82. package/src/assets/components/dis.js +22 -23
  83. package/src/assets/components/event-utilities.js +28 -29
  84. package/src/assets/components/geometry2d.js +28 -29
  85. package/src/assets/components/geospatial.js +34 -35
  86. package/src/assets/components/h-anim.js +22 -22
  87. package/src/assets/components/key-device-sensor.js +18 -19
  88. package/src/assets/components/layout.js +24 -25
  89. package/src/assets/components/nurbs.js +44 -45
  90. package/src/assets/components/particle-systems.js +36 -37
  91. package/src/assets/components/picking.js +25 -25
  92. package/src/assets/components/projective-texture-mapping.js +16 -16
  93. package/src/assets/components/rigid-body-physics.js +48 -48
  94. package/src/assets/components/scripting.js +14 -15
  95. package/src/assets/components/texturing-3d.js +26 -27
  96. package/src/assets/components/volume-rendering.js +46 -46
  97. package/src/assets/components/x_ite.js +12 -12
  98. package/src/assets/shaders/Types.glsl +230 -51
  99. package/src/assets/shaders/webgl1/Background.fs +2 -2
  100. package/src/assets/shaders/webgl1/Background.vs +4 -4
  101. package/src/assets/shaders/webgl1/Depth.fs +2 -2
  102. package/src/assets/shaders/webgl1/Depth.vs +3 -3
  103. package/src/assets/shaders/webgl1/Fallback.fs +15 -15
  104. package/src/assets/shaders/webgl1/Fallback.vs +5 -5
  105. package/src/assets/shaders/webgl1/FallbackUnlit.fs +4 -4
  106. package/src/assets/shaders/webgl1/FallbackUnlit.vs +3 -3
  107. package/src/assets/shaders/webgl1/Gouraud.fs +14 -14
  108. package/src/assets/shaders/webgl1/Gouraud.vs +54 -69
  109. package/src/assets/shaders/webgl1/Line.fs +74 -0
  110. package/src/assets/shaders/webgl1/Line.vs +63 -0
  111. package/src/assets/shaders/webgl1/PBR.fs +364 -0
  112. package/src/assets/shaders/webgl1/PBR.vs +46 -0
  113. package/src/assets/shaders/webgl1/Phong.fs +207 -84
  114. package/src/assets/shaders/webgl1/Phong.vs +17 -18
  115. package/src/assets/shaders/webgl1/Point.fs +88 -0
  116. package/src/assets/shaders/webgl1/Point.vs +70 -0
  117. package/src/assets/shaders/webgl1/Unlit.fs +53 -28
  118. package/src/assets/shaders/webgl1/Unlit.vs +17 -18
  119. package/src/assets/shaders/webgl1/include/ClipPlanes.glsl +7 -7
  120. package/src/assets/shaders/webgl1/include/Colors.glsl +27 -0
  121. package/src/assets/shaders/webgl1/include/Fog.glsl +17 -17
  122. package/src/assets/shaders/webgl1/include/Hatch.glsl +8 -8
  123. package/src/assets/shaders/webgl1/include/Normal.glsl +44 -0
  124. package/src/assets/shaders/webgl1/include/Pack.glsl +11 -11
  125. package/src/assets/shaders/webgl1/include/Perlin.glsl +19 -19
  126. package/src/assets/shaders/webgl1/include/Shadow.glsl +212 -212
  127. package/src/assets/shaders/webgl1/include/SpotFactor.glsl +12 -0
  128. package/src/assets/shaders/webgl1/include/Texture.glsl +444 -393
  129. package/src/assets/shaders/webgl2/Background.fs +2 -2
  130. package/src/assets/shaders/webgl2/Background.vs +4 -4
  131. package/src/assets/shaders/webgl2/Depth.fs +2 -2
  132. package/src/assets/shaders/webgl2/Depth.vs +3 -3
  133. package/src/assets/shaders/webgl2/Gouraud.fs +14 -14
  134. package/src/assets/shaders/webgl2/Gouraud.vs +54 -69
  135. package/src/assets/shaders/webgl2/Line.fs +73 -0
  136. package/src/assets/shaders/webgl2/Line.vs +64 -0
  137. package/src/assets/shaders/webgl2/PBR.fs +370 -0
  138. package/src/assets/shaders/webgl2/PBR.vs +48 -0
  139. package/src/assets/shaders/webgl2/Phong.fs +219 -84
  140. package/src/assets/shaders/webgl2/Phong.vs +17 -18
  141. package/src/assets/shaders/webgl2/Point.fs +87 -0
  142. package/src/assets/shaders/webgl2/Point.vs +71 -0
  143. package/src/assets/shaders/webgl2/Unlit.fs +56 -28
  144. package/src/assets/shaders/webgl2/Unlit.vs +17 -18
  145. package/src/assets/shaders/webgl2/include/ClipPlanes.glsl +7 -7
  146. package/src/assets/shaders/webgl2/include/Colors.glsl +27 -0
  147. package/src/assets/shaders/webgl2/include/Fog.glsl +34 -34
  148. package/src/assets/shaders/webgl2/include/Hatch.glsl +8 -8
  149. package/src/assets/shaders/webgl2/include/Normal.glsl +46 -0
  150. package/src/assets/shaders/webgl2/include/Pack.glsl +11 -11
  151. package/src/assets/shaders/webgl2/include/Perlin.glsl +19 -20
  152. package/src/assets/shaders/webgl2/include/Shadow.glsl +226 -226
  153. package/src/assets/shaders/webgl2/include/SpotFactor.glsl +12 -0
  154. package/src/assets/shaders/webgl2/include/Texture.glsl +557 -537
  155. package/src/bookmarks.js +92 -92
  156. package/src/examples.js +147 -147
  157. package/src/lib/ammojs/AmmoJS.js +2 -2
  158. package/src/lib/ammojs/Makefile +14 -15
  159. package/src/lib/jquery.fullscreen-min.js +2 -2
  160. package/src/lib/nurbs/extras/sample.js +215 -215
  161. package/src/lib/nurbs/nurbs.js +326 -326
  162. package/src/lib/nurbs/src/evaluate.js +405 -405
  163. package/src/lib/nurbs/src/numerical-derivative.js +48 -48
  164. package/src/lib/nurbs/src/support.js +143 -143
  165. package/src/lib/nurbs/src/transform.js +70 -70
  166. package/src/lib/nurbs/src/utils/accessor-preamble.js +23 -23
  167. package/src/lib/nurbs/src/utils/bisection-search.js +18 -18
  168. package/src/lib/nurbs/src/utils/cache-key.js +49 -50
  169. package/src/lib/nurbs/src/utils/create-accessors.js +101 -101
  170. package/src/lib/nurbs/src/utils/infer-type.js +43 -43
  171. package/src/lib/nurbs/src/utils/is-array-like.js +5 -5
  172. package/src/lib/nurbs/src/utils/is-ndarray-like.js +11 -11
  173. package/src/lib/nurbs/src/utils/is-ndarray.js +13 -13
  174. package/src/lib/nurbs/src/utils/ndloop.js +18 -18
  175. package/src/lib/nurbs/src/utils/size-getter.js +15 -15
  176. package/src/lib/nurbs/src/utils/variable.js +25 -25
  177. package/src/lib/opentype.js/bin/ot +27 -27
  178. package/src/lib/opentype.js/dist/opentype.js +5 -5
  179. package/src/lib/opentype.js/font-inspector.html +1 -1
  180. package/src/lib/opentype.js/site.css +1 -3
  181. package/src/locale/gettext.js +73 -73
  182. package/src/spinner.css +40 -43
  183. package/src/standard/Geospatial/Geodetic.js +195 -195
  184. package/src/standard/Geospatial/ReferenceEllipsoids.js +43 -43
  185. package/src/standard/Geospatial/UniversalTransverseMercator.js +159 -159
  186. package/src/standard/Math/Algorithm.js +199 -187
  187. package/src/standard/Math/Algorithms/Bezier.js +80 -80
  188. package/src/standard/Math/Algorithms/MergeSort.js +49 -49
  189. package/src/standard/Math/Algorithms/PartialSort.js +36 -36
  190. package/src/standard/Math/Algorithms/QuickSort.js +51 -51
  191. package/src/standard/Math/Algorithms/SAT.js +62 -62
  192. package/src/standard/Math/Algorithms/eigendecomposition.js +141 -141
  193. package/src/standard/Math/Geometry/Box2.js +205 -205
  194. package/src/standard/Math/Geometry/Box3.js +624 -624
  195. package/src/standard/Math/Geometry/Camera.js +68 -68
  196. package/src/standard/Math/Geometry/Cylinder3.js +112 -112
  197. package/src/standard/Math/Geometry/Line3.js +188 -153
  198. package/src/standard/Math/Geometry/Plane3.js +120 -120
  199. package/src/standard/Math/Geometry/Sphere3.js +148 -148
  200. package/src/standard/Math/Geometry/Spheroid3.js +38 -38
  201. package/src/standard/Math/Geometry/Triangle2.js +19 -19
  202. package/src/standard/Math/Geometry/Triangle3.js +148 -148
  203. package/src/standard/Math/Geometry/ViewVolume.js +359 -359
  204. package/src/standard/Math/Numbers/Color3.js +219 -214
  205. package/src/standard/Math/Numbers/Color4.js +148 -142
  206. package/src/standard/Math/Numbers/Complex.js +139 -139
  207. package/src/standard/Math/Numbers/Matrix2.js +193 -193
  208. package/src/standard/Math/Numbers/Matrix3.js +679 -679
  209. package/src/standard/Math/Numbers/Matrix4.js +883 -883
  210. package/src/standard/Math/Numbers/Quaternion.js +496 -496
  211. package/src/standard/Math/Numbers/Rotation4.js +421 -415
  212. package/src/standard/Math/Numbers/Vector2.js +220 -220
  213. package/src/standard/Math/Numbers/Vector3.js +280 -280
  214. package/src/standard/Math/Numbers/Vector4.js +296 -296
  215. package/src/standard/Math/Utility/BVH.js +303 -303
  216. package/src/standard/Math/Utility/MatrixStack.js +64 -64
  217. package/src/standard/Networking/BinaryTransport.js +67 -67
  218. package/src/standard/Time/MicroTime.js +22 -22
  219. package/src/standard/Utility/DataStorage.js +85 -81
  220. package/src/standard/Utility/MapUtilities.js +14 -1
  221. package/src/standard/Utility/ObjectCache.js +24 -24
  222. package/src/standard/Utility/Shuffle.js +13 -13
  223. package/src/tests.js +355 -384
  224. package/src/x_ite/Base/Events.js +64 -55
  225. package/src/x_ite/{Basic/X3DArrayField.js → Base/FieldArray.js} +19 -12
  226. package/src/x_ite/Base/FieldDefinitionArray.js +75 -0
  227. package/src/x_ite/{Basic/FieldDefinitionArray.js → Base/X3DArrayField.js} +35 -59
  228. package/src/x_ite/Base/X3DBaseNode.js +588 -0
  229. package/src/x_ite/{Bits → Base}/X3DCast.js +23 -22
  230. package/src/x_ite/Base/X3DChildObject.js +68 -62
  231. package/src/x_ite/{Bits → Base}/X3DConstants.js +85 -85
  232. package/src/x_ite/Base/X3DEventObject.js +73 -68
  233. package/src/x_ite/Base/X3DField.js +450 -0
  234. package/src/x_ite/Base/X3DFieldDefinition.js +78 -0
  235. package/src/x_ite/Base/X3DInfoArray.js +291 -0
  236. package/src/x_ite/Base/X3DObject.js +152 -109
  237. package/src/x_ite/Base/X3DObjectArrayField.js +573 -0
  238. package/src/x_ite/Base/X3DTypedArrayField.js +866 -0
  239. package/src/x_ite/Browser/Core/BrowserOptions.js +376 -394
  240. package/src/x_ite/Browser/Core/BrowserProperties.js +38 -38
  241. package/src/x_ite/Browser/Core/BrowserTimings.js +173 -172
  242. package/src/x_ite/Browser/Core/ContextMenu.js +547 -551
  243. package/src/x_ite/Browser/Core/Notification.js +57 -56
  244. package/src/x_ite/Browser/Core/PrimitiveQuality.js +8 -8
  245. package/src/x_ite/Browser/Core/RenderingProperties.js +55 -55
  246. package/src/x_ite/Browser/Core/Shading.js +10 -10
  247. package/src/x_ite/Browser/Core/TextureQuality.js +8 -8
  248. package/src/x_ite/Browser/Core/X3DCoreContext.js +746 -724
  249. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +33 -25
  250. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +23 -23
  251. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +127 -127
  252. package/src/x_ite/Browser/Geometry2D/Arc2DOptions.js +25 -25
  253. package/src/x_ite/Browser/Geometry2D/ArcClose2DOptions.js +25 -25
  254. package/src/x_ite/Browser/Geometry2D/Circle2DOptions.js +56 -55
  255. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +116 -116
  256. package/src/x_ite/Browser/Geometry2D/Rectangle2DOptions.js +59 -59
  257. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +80 -77
  258. package/src/x_ite/Browser/Geometry3D/BoxOptions.js +70 -70
  259. package/src/x_ite/Browser/Geometry3D/ConeOptions.js +26 -26
  260. package/src/x_ite/Browser/Geometry3D/CylinderOptions.js +27 -27
  261. package/src/x_ite/Browser/Geometry3D/IcoSphere.js +357 -357
  262. package/src/x_ite/Browser/Geometry3D/IcoSphereOptions.js +61 -61
  263. package/src/x_ite/Browser/Geometry3D/QuadSphereOptions.js +243 -241
  264. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +37 -34
  265. package/src/x_ite/Browser/Geospatial/Geocentric.js +27 -27
  266. package/src/x_ite/Browser/Geospatial/Geospatial.js +157 -156
  267. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +38 -33
  268. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +128 -130
  269. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator1.js +39 -41
  270. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator2.js +3 -3
  271. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator3.js +3 -3
  272. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +54 -56
  273. package/src/x_ite/Browser/Interpolation/SquatInterpolator.js +54 -56
  274. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +44 -41
  275. package/src/x_ite/Browser/Layering/X3DLayeringContext.js +20 -18
  276. package/src/x_ite/Browser/Layout/ScreenText.js +406 -405
  277. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +36 -30
  278. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +54 -50
  279. package/src/x_ite/Browser/NURBS/NURBS.js +417 -417
  280. package/src/x_ite/Browser/Navigation/ExamineViewer.js +753 -753
  281. package/src/x_ite/Browser/Navigation/FlyViewer.js +39 -39
  282. package/src/x_ite/Browser/Navigation/LookAtViewer.js +461 -461
  283. package/src/x_ite/Browser/Navigation/NoneViewer.js +18 -18
  284. package/src/x_ite/Browser/Navigation/PlaneViewer.js +193 -193
  285. package/src/x_ite/Browser/Navigation/WalkViewer.js +61 -61
  286. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +709 -710
  287. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +188 -182
  288. package/src/x_ite/Browser/Navigation/X3DViewer.js +160 -160
  289. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +152 -143
  290. package/src/x_ite/Browser/Networking/urls.js +31 -31
  291. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +17 -13
  292. package/src/x_ite/Browser/Picking/IntersectionType.js +7 -7
  293. package/src/x_ite/Browser/Picking/MatchCriterion.js +8 -8
  294. package/src/x_ite/Browser/Picking/SortOrder.js +9 -9
  295. package/src/x_ite/Browser/Picking/VolumePicker.js +138 -138
  296. package/src/x_ite/Browser/Picking/X3DPickingContext.js +80 -69
  297. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +208 -209
  298. package/src/x_ite/Browser/PointingDeviceSensor/PointingDeviceSensorContainer.js +34 -34
  299. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +269 -263
  300. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +132 -119
  301. package/src/x_ite/Browser/RigidBodyPhysics/AppliedParametersType.js +14 -14
  302. package/src/x_ite/Browser/Scripting/X3DScriptingContext.js +20 -19
  303. package/src/x_ite/Browser/Scripting/evaluate.js +7 -7
  304. package/src/x_ite/Browser/Shaders/Shader.js +152 -159
  305. package/src/x_ite/Browser/Shaders/ShaderSource.js +81 -63
  306. package/src/x_ite/Browser/Shaders/ShaderTest.js +97 -98
  307. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +256 -249
  308. package/src/x_ite/Browser/Shape/AlphaMode.js +9 -9
  309. package/src/x_ite/Browser/Shape/X3DShapeContext.js +111 -89
  310. package/src/x_ite/Browser/Sound/X3DSoundContext.js +11 -11
  311. package/src/x_ite/Browser/Text/PolygonText.js +319 -319
  312. package/src/x_ite/Browser/Text/TextAlignment.js +9 -9
  313. package/src/x_ite/Browser/Text/X3DTextContext.js +72 -65
  314. package/src/x_ite/Browser/Text/X3DTextGeometry.js +506 -506
  315. package/src/x_ite/Browser/Texturing/MultiTextureFunctionType.js +8 -8
  316. package/src/x_ite/Browser/Texturing/MultiTextureModeType.js +25 -25
  317. package/src/x_ite/Browser/Texturing/MultiTextureSourceType.js +9 -9
  318. package/src/x_ite/Browser/Texturing/TextureCoordinateGeneratorModeType.js +17 -17
  319. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +259 -224
  320. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1066 -1066
  321. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +641 -630
  322. package/src/x_ite/Browser/Time/X3DTimeContext.js +54 -37
  323. package/src/x_ite/Browser/VERSION.js +1 -1
  324. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.fs +55 -55
  325. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.vs +5 -5
  326. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +52 -41
  327. package/src/x_ite/Browser/X3DBrowser.js +819 -755
  328. package/src/x_ite/Browser/X3DBrowserContext.js +253 -220
  329. package/src/x_ite/Components/Annotation/AnnotationLayer.js +43 -43
  330. package/src/x_ite/Components/Annotation/AnnotationTarget.js +38 -38
  331. package/src/x_ite/Components/Annotation/GroupAnnotation.js +48 -48
  332. package/src/x_ite/Components/Annotation/IconAnnotation.js +46 -46
  333. package/src/x_ite/Components/Annotation/TextAnnotation.js +39 -39
  334. package/src/x_ite/Components/Annotation/URLAnnotation.js +38 -38
  335. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +16 -16
  336. package/src/x_ite/Components/CADGeometry/CADAssembly.js +41 -41
  337. package/src/x_ite/Components/CADGeometry/CADFace.js +189 -189
  338. package/src/x_ite/Components/CADGeometry/CADLayer.js +38 -38
  339. package/src/x_ite/Components/CADGeometry/CADPart.js +46 -46
  340. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +67 -67
  341. package/src/x_ite/Components/CADGeometry/QuadSet.js +64 -63
  342. package/src/x_ite/Components/CADGeometry/X3DProductStructureChildNode.js +13 -15
  343. package/src/x_ite/Components/Core/MetadataBoolean.js +38 -40
  344. package/src/x_ite/Components/Core/MetadataDouble.js +38 -40
  345. package/src/x_ite/Components/Core/MetadataFloat.js +38 -40
  346. package/src/x_ite/Components/Core/MetadataInteger.js +38 -40
  347. package/src/x_ite/Components/Core/MetadataSet.js +38 -40
  348. package/src/x_ite/Components/Core/MetadataString.js +38 -40
  349. package/src/x_ite/Components/Core/WorldInfo.js +42 -42
  350. package/src/x_ite/Components/Core/X3DBindableNode.js +20 -20
  351. package/src/x_ite/Components/Core/X3DChildNode.js +38 -40
  352. package/src/x_ite/Components/Core/X3DInfoNode.js +13 -15
  353. package/src/x_ite/Components/Core/X3DMetadataObject.js +11 -13
  354. package/src/x_ite/Components/Core/X3DNode.js +795 -14
  355. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +585 -479
  356. package/src/x_ite/Components/Core/X3DSensorNode.js +13 -15
  357. package/src/x_ite/Components/Core.js +39 -39
  358. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +193 -200
  359. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +209 -206
  360. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +213 -219
  361. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +69 -60
  362. package/src/x_ite/Components/DIS/DISEntityManager.js +38 -40
  363. package/src/x_ite/Components/DIS/DISEntityTypeMapping.js +59 -41
  364. package/src/x_ite/Components/DIS/EspduTransform.js +128 -128
  365. package/src/x_ite/Components/DIS/ReceiverPdu.js +68 -68
  366. package/src/x_ite/Components/DIS/SignalPdu.js +68 -68
  367. package/src/x_ite/Components/DIS/TransmitterPdu.js +84 -84
  368. package/src/x_ite/Components/EnvironmentalEffects/Background.js +87 -89
  369. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +59 -59
  370. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +78 -78
  371. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +56 -56
  372. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +86 -88
  373. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +582 -589
  374. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +105 -105
  375. package/src/x_ite/Components/EnvironmentalEffects.js +25 -25
  376. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +229 -229
  377. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +256 -256
  378. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +114 -114
  379. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +71 -71
  380. package/src/x_ite/Components/EnvironmentalSensor.js +19 -19
  381. package/src/x_ite/Components/EventUtilities/BooleanFilter.js +50 -52
  382. package/src/x_ite/Components/EventUtilities/BooleanSequencer.js +50 -52
  383. package/src/x_ite/Components/EventUtilities/BooleanToggle.js +43 -45
  384. package/src/x_ite/Components/EventUtilities/BooleanTrigger.js +42 -44
  385. package/src/x_ite/Components/EventUtilities/IntegerSequencer.js +50 -52
  386. package/src/x_ite/Components/EventUtilities/IntegerTrigger.js +43 -45
  387. package/src/x_ite/Components/EventUtilities/TimeTrigger.js +43 -45
  388. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +92 -94
  389. package/src/x_ite/Components/EventUtilities/X3DTriggerNode.js +13 -15
  390. package/src/x_ite/Components/Followers/ColorChaser.js +78 -78
  391. package/src/x_ite/Components/Followers/ColorDamper.js +78 -78
  392. package/src/x_ite/Components/Followers/CoordinateChaser.js +46 -46
  393. package/src/x_ite/Components/Followers/CoordinateDamper.js +48 -48
  394. package/src/x_ite/Components/Followers/OrientationChaser.js +64 -64
  395. package/src/x_ite/Components/Followers/OrientationDamper.js +61 -61
  396. package/src/x_ite/Components/Followers/PositionChaser.js +42 -42
  397. package/src/x_ite/Components/Followers/PositionChaser2D.js +42 -42
  398. package/src/x_ite/Components/Followers/PositionDamper.js +44 -44
  399. package/src/x_ite/Components/Followers/PositionDamper2D.js +44 -44
  400. package/src/x_ite/Components/Followers/ScalarChaser.js +70 -70
  401. package/src/x_ite/Components/Followers/ScalarDamper.js +60 -60
  402. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +46 -46
  403. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +48 -48
  404. package/src/x_ite/Components/Followers/X3DChaserNode.js +194 -194
  405. package/src/x_ite/Components/Followers/X3DDamperNode.js +120 -120
  406. package/src/x_ite/Components/Followers/X3DFollowerNode.js +83 -83
  407. package/src/x_ite/Components/Followers.js +45 -45
  408. package/src/x_ite/Components/Geometry2D/Arc2D.js +99 -113
  409. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +164 -166
  410. package/src/x_ite/Components/Geometry2D/Circle2D.js +59 -67
  411. package/src/x_ite/Components/Geometry2D/Disk2D.js +207 -211
  412. package/src/x_ite/Components/Geometry2D/Polyline2D.js +43 -52
  413. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +43 -60
  414. package/src/x_ite/Components/Geometry2D/Rectangle2D.js +76 -73
  415. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +69 -71
  416. package/src/x_ite/Components/Geometry3D/Box.js +90 -86
  417. package/src/x_ite/Components/Geometry3D/Cone.js +185 -187
  418. package/src/x_ite/Components/Geometry3D/Cylinder.js +246 -246
  419. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +383 -384
  420. package/src/x_ite/Components/Geometry3D/Extrusion.js +653 -647
  421. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +437 -445
  422. package/src/x_ite/Components/Geometry3D/Sphere.js +72 -74
  423. package/src/x_ite/Components/Geometry3D.js +25 -25
  424. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +189 -191
  425. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +381 -383
  426. package/src/x_ite/Components/Geospatial/GeoLOD.js +397 -397
  427. package/src/x_ite/Components/Geospatial/GeoLocation.js +56 -56
  428. package/src/x_ite/Components/Geospatial/GeoMetadata.js +54 -36
  429. package/src/x_ite/Components/Geospatial/GeoOrigin.js +50 -52
  430. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +81 -83
  431. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +95 -97
  432. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +77 -79
  433. package/src/x_ite/Components/Geospatial/GeoTransform.js +79 -79
  434. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +278 -278
  435. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +216 -218
  436. package/src/x_ite/Components/Grouping/Group.js +37 -37
  437. package/src/x_ite/Components/Grouping/StaticGroup.js +245 -245
  438. package/src/x_ite/Components/Grouping/Switch.js +234 -234
  439. package/src/x_ite/Components/Grouping/Transform.js +42 -42
  440. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +93 -93
  441. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +654 -649
  442. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +99 -99
  443. package/src/x_ite/Components/Grouping/X3DTransformNode.js +31 -31
  444. package/src/x_ite/Components/Grouping.js +27 -27
  445. package/src/x_ite/Components/HAnim/HAnimDisplacer.js +35 -35
  446. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +293 -293
  447. package/src/x_ite/Components/HAnim/HAnimJoint.js +137 -137
  448. package/src/x_ite/Components/HAnim/HAnimMotion.js +50 -50
  449. package/src/x_ite/Components/HAnim/HAnimSegment.js +44 -44
  450. package/src/x_ite/Components/HAnim/HAnimSite.js +43 -43
  451. package/src/x_ite/Components/Interpolation/ColorInterpolator.js +61 -63
  452. package/src/x_ite/Components/Interpolation/CoordinateInterpolator.js +60 -62
  453. package/src/x_ite/Components/Interpolation/CoordinateInterpolator2D.js +57 -59
  454. package/src/x_ite/Components/Interpolation/EaseInEaseOut.js +79 -80
  455. package/src/x_ite/Components/Interpolation/NormalInterpolator.js +96 -93
  456. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +70 -70
  457. package/src/x_ite/Components/Interpolation/PositionInterpolator.js +57 -59
  458. package/src/x_ite/Components/Interpolation/PositionInterpolator2D.js +57 -59
  459. package/src/x_ite/Components/Interpolation/ScalarInterpolator.js +53 -55
  460. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator.js +78 -80
  461. package/src/x_ite/Components/Interpolation/SplinePositionInterpolator2D.js +77 -79
  462. package/src/x_ite/Components/Interpolation/SplineScalarInterpolator.js +78 -80
  463. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +66 -66
  464. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +67 -69
  465. package/src/x_ite/Components/Interpolation.js +39 -39
  466. package/src/x_ite/Components/KeyDeviceSensor/KeySensor.js +304 -306
  467. package/src/x_ite/Components/KeyDeviceSensor/StringSensor.js +102 -104
  468. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +51 -51
  469. package/src/x_ite/Components/Layering/Layer.js +50 -50
  470. package/src/x_ite/Components/Layering/LayerSet.js +160 -161
  471. package/src/x_ite/Components/Layering/Viewport.js +118 -118
  472. package/src/x_ite/Components/Layering/X3DLayerNode.js +322 -322
  473. package/src/x_ite/Components/Layering/X3DViewportNode.js +13 -13
  474. package/src/x_ite/Components/Layering.js +21 -21
  475. package/src/x_ite/Components/Layout/Layout.js +576 -578
  476. package/src/x_ite/Components/Layout/LayoutGroup.js +126 -126
  477. package/src/x_ite/Components/Layout/LayoutLayer.js +53 -53
  478. package/src/x_ite/Components/Layout/ScreenFontStyle.js +48 -48
  479. package/src/x_ite/Components/Layout/ScreenGroup.js +136 -136
  480. package/src/x_ite/Components/Layout/X3DLayoutNode.js +12 -14
  481. package/src/x_ite/Components/Lighting/DirectionalLight.js +239 -246
  482. package/src/x_ite/Components/Lighting/PointLight.js +296 -303
  483. package/src/x_ite/Components/Lighting/SpotLight.js +321 -316
  484. package/src/x_ite/Components/Lighting/X3DLightNode.js +153 -153
  485. package/src/x_ite/Components/Lighting.js +19 -19
  486. package/src/x_ite/Components/NURBS/Contour2D.js +81 -83
  487. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +100 -102
  488. package/src/x_ite/Components/NURBS/CoordinateDouble.js +32 -34
  489. package/src/x_ite/Components/NURBS/NurbsCurve.js +167 -169
  490. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +149 -149
  491. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +166 -166
  492. package/src/x_ite/Components/NURBS/NurbsPatchSurface.js +45 -47
  493. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +154 -154
  494. package/src/x_ite/Components/NURBS/NurbsSet.js +125 -125
  495. package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +128 -130
  496. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +120 -122
  497. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +120 -122
  498. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +93 -93
  499. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +88 -90
  500. package/src/x_ite/Components/NURBS/X3DNurbsControlCurveNode.js +13 -15
  501. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +339 -339
  502. package/src/x_ite/Components/NURBS/X3DParametricGeometryNode.js +18 -20
  503. package/src/x_ite/Components/Navigation/Billboard.js +132 -132
  504. package/src/x_ite/Components/Navigation/Collision.js +116 -116
  505. package/src/x_ite/Components/Navigation/LOD.js +308 -308
  506. package/src/x_ite/Components/Navigation/NavigationInfo.js +279 -285
  507. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +258 -258
  508. package/src/x_ite/Components/Navigation/Viewpoint.js +137 -137
  509. package/src/x_ite/Components/Navigation/ViewpointGroup.js +169 -171
  510. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +450 -453
  511. package/src/x_ite/Components/Navigation.js +27 -27
  512. package/src/x_ite/Components/Networking/Anchor.js +140 -128
  513. package/src/x_ite/Components/Networking/Inline.js +156 -197
  514. package/src/x_ite/Components/Networking/LoadSensor.js +193 -195
  515. package/src/x_ite/Components/Networking/X3DNetworkSensorNode.js +13 -15
  516. package/src/x_ite/Components/Networking/X3DUrlObject.js +170 -116
  517. package/src/x_ite/Components/Networking.js +21 -21
  518. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +62 -64
  519. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +81 -83
  520. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +59 -61
  521. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +42 -44
  522. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +1433 -1433
  523. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +77 -79
  524. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +196 -196
  525. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +195 -195
  526. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +250 -250
  527. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +69 -71
  528. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +346 -346
  529. package/src/x_ite/Components/ParticleSystems/X3DParticlePhysicsModelNode.js +15 -17
  530. package/src/x_ite/Components/Picking/LinePickSensor.js +284 -286
  531. package/src/x_ite/Components/Picking/PickableGroup.js +155 -155
  532. package/src/x_ite/Components/Picking/PointPickSensor.js +272 -272
  533. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +207 -209
  534. package/src/x_ite/Components/Picking/VolumePickSensor.js +182 -184
  535. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +382 -382
  536. package/src/x_ite/Components/Picking/X3DPickableObject.js +28 -30
  537. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +257 -259
  538. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +245 -247
  539. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +173 -175
  540. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +61 -63
  541. package/src/x_ite/Components/PointingDeviceSensor/X3DDragSensorNode.js +14 -16
  542. package/src/x_ite/Components/PointingDeviceSensor/X3DPointingDeviceSensorNode.js +57 -59
  543. package/src/x_ite/Components/PointingDeviceSensor/X3DTouchSensorNode.js +19 -21
  544. package/src/x_ite/Components/PointingDeviceSensor.js +25 -25
  545. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +191 -191
  546. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +162 -162
  547. package/src/x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js +156 -156
  548. package/src/x_ite/Components/Rendering/ClipPlane.js +120 -120
  549. package/src/x_ite/Components/Rendering/Color.js +112 -112
  550. package/src/x_ite/Components/Rendering/ColorRGBA.js +114 -114
  551. package/src/x_ite/Components/Rendering/Coordinate.js +33 -35
  552. package/src/x_ite/Components/Rendering/IndexedLineSet.js +236 -243
  553. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +102 -102
  554. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +55 -55
  555. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +110 -110
  556. package/src/x_ite/Components/Rendering/LineSet.js +172 -179
  557. package/src/x_ite/Components/Rendering/Normal.js +100 -100
  558. package/src/x_ite/Components/Rendering/PointSet.js +142 -154
  559. package/src/x_ite/Components/Rendering/TriangleFanSet.js +73 -73
  560. package/src/x_ite/Components/Rendering/TriangleSet.js +51 -53
  561. package/src/x_ite/Components/Rendering/TriangleStripSet.js +76 -76
  562. package/src/x_ite/Components/Rendering/X3DColorNode.js +25 -27
  563. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +318 -321
  564. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +132 -132
  565. package/src/x_ite/Components/Rendering/X3DGeometricPropertyNode.js +13 -15
  566. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +1190 -1171
  567. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +231 -189
  568. package/src/x_ite/Components/Rendering/X3DNormalNode.js +13 -15
  569. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +267 -0
  570. package/src/x_ite/Components/Rendering.js +53 -53
  571. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +149 -149
  572. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +229 -229
  573. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +465 -465
  574. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +152 -154
  575. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +223 -223
  576. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +117 -117
  577. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +54 -56
  578. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +245 -245
  579. package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +68 -70
  580. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +453 -453
  581. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +326 -326
  582. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +171 -171
  583. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +169 -169
  584. package/src/x_ite/Components/RigidBodyPhysics/UniversalJoint.js +50 -52
  585. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +101 -101
  586. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +15 -15
  587. package/src/x_ite/Components/RigidBodyPhysics/X3DRigidJointNode.js +161 -163
  588. package/src/x_ite/Components/Scripting/Script.js +506 -510
  589. package/src/x_ite/Components/Scripting/X3DScriptNode.js +15 -15
  590. package/src/x_ite/Components/Shaders/ComposedShader.js +215 -178
  591. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +84 -83
  592. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +74 -74
  593. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +73 -73
  594. package/src/x_ite/Components/Shaders/PackagedShader.js +52 -49
  595. package/src/x_ite/Components/Shaders/ProgramShader.js +36 -38
  596. package/src/x_ite/Components/Shaders/ShaderPart.js +135 -147
  597. package/src/x_ite/Components/Shaders/ShaderProgram.js +49 -46
  598. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +1259 -1255
  599. package/src/x_ite/Components/Shaders/X3DShaderNode.js +83 -93
  600. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +13 -15
  601. package/src/x_ite/Components/Shaders.js +33 -33
  602. package/src/x_ite/{Execution/ExportedNode.js → Components/Shape/AcousticProperties.js} +41 -71
  603. package/src/x_ite/Components/Shape/Appearance.js +331 -318
  604. package/src/x_ite/Components/Shape/FillProperties.js +101 -98
  605. package/src/x_ite/Components/Shape/LineProperties.js +71 -69
  606. package/src/x_ite/Components/Shape/Material.js +344 -116
  607. package/src/x_ite/Components/Shape/PhysicalMaterial.js +310 -0
  608. package/src/x_ite/Components/Shape/PointProperties.js +79 -95
  609. package/src/x_ite/Components/Shape/Shape.js +178 -181
  610. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +200 -200
  611. package/src/x_ite/Components/Shape/UnlitMaterial.js +93 -46
  612. package/src/x_ite/Components/Shape/X3DAppearanceChildNode.js +13 -15
  613. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +24 -24
  614. package/src/x_ite/Components/Shape/X3DMaterialNode.js +24 -24
  615. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +158 -54
  616. package/src/x_ite/Components/Shape/X3DShapeNode.js +147 -147
  617. package/src/x_ite/Components/Shape.js +43 -37
  618. package/src/x_ite/Components/Sound/AudioClip.js +135 -140
  619. package/src/x_ite/Components/Sound/Sound.js +246 -246
  620. package/src/x_ite/Components/Sound/X3DSoundNode.js +13 -15
  621. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +165 -179
  622. package/src/x_ite/Components/Sound.js +19 -19
  623. package/src/x_ite/Components/Text/FontStyle.js +49 -49
  624. package/src/x_ite/Components/Text/Text.js +135 -135
  625. package/src/x_ite/Components/Text/X3DFontStyleNode.js +207 -205
  626. package/src/x_ite/Components/Text.js +17 -17
  627. package/src/x_ite/Components/Texturing/ImageTexture.js +181 -194
  628. package/src/x_ite/Components/Texturing/MovieTexture.js +180 -190
  629. package/src/x_ite/Components/Texturing/MultiTexture.js +255 -262
  630. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +124 -118
  631. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +82 -76
  632. package/src/x_ite/Components/Texturing/PixelTexture.js +222 -221
  633. package/src/x_ite/Components/Texturing/TextureCoordinate.js +116 -116
  634. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +90 -90
  635. package/src/x_ite/Components/Texturing/TextureProperties.js +158 -160
  636. package/src/x_ite/Components/Texturing/TextureTransform.js +99 -99
  637. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +33 -28
  638. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +54 -54
  639. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +22 -17
  640. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +135 -124
  641. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +16 -16
  642. package/src/x_ite/Components/Texturing/X3DTextureNode.js +24 -24
  643. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +22 -22
  644. package/src/x_ite/Components/Texturing.js +45 -45
  645. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +125 -123
  646. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +115 -131
  647. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +158 -160
  648. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +116 -116
  649. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +116 -116
  650. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +88 -88
  651. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +46 -46
  652. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +135 -121
  653. package/src/x_ite/Components/Time/TimeSensor.js +155 -152
  654. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +299 -302
  655. package/src/x_ite/Components/Time.js +15 -15
  656. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +338 -338
  657. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +80 -80
  658. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +228 -228
  659. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +163 -163
  660. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +117 -117
  661. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +334 -334
  662. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +116 -116
  663. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +167 -167
  664. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +247 -247
  665. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +198 -198
  666. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +116 -116
  667. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +126 -126
  668. package/src/x_ite/Components/VolumeRendering/VolumeData.js +173 -173
  669. package/src/x_ite/Components/VolumeRendering/X3DComposableVolumeRenderStyleNode.js +12 -12
  670. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +167 -167
  671. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +70 -70
  672. package/src/x_ite/Components/X_ITE/BlendMode.js +143 -145
  673. package/src/x_ite/Components.js +47 -47
  674. package/src/x_ite/Configuration/ComponentInfo.js +47 -42
  675. package/src/x_ite/Configuration/ComponentInfoArray.js +21 -19
  676. package/src/x_ite/Configuration/ProfileInfo.js +33 -23
  677. package/src/x_ite/Configuration/ProfileInfoArray.js +26 -16
  678. package/src/x_ite/Configuration/SupportedComponents.js +311 -311
  679. package/src/x_ite/Configuration/SupportedNodes.js +53 -38
  680. package/src/x_ite/Configuration/SupportedProfiles.js +190 -190
  681. package/src/x_ite/Configuration/UnitInfo.js +60 -51
  682. package/src/x_ite/Configuration/UnitInfoArray.js +17 -10
  683. package/src/x_ite/DEBUG.js +2 -2
  684. package/src/x_ite/Execution/BindableList.js +146 -149
  685. package/src/x_ite/Execution/BindableStack.js +130 -123
  686. package/src/x_ite/Execution/ExportedNodesArray.js +75 -0
  687. package/src/x_ite/Execution/ImportedNodesArray.js +75 -0
  688. package/src/x_ite/{Basic/X3DFieldDefinition.js → Execution/NamedNodesArray.js} +20 -10
  689. package/src/x_ite/Execution/Scene.js +93 -90
  690. package/src/x_ite/Execution/X3DExecutionContext.js +957 -781
  691. package/src/x_ite/Execution/X3DExportedNode.js +152 -0
  692. package/src/x_ite/Execution/X3DImportedNode.js +393 -0
  693. package/src/x_ite/Execution/X3DScene.js +546 -493
  694. package/src/x_ite/Execution/X3DWorld.js +171 -0
  695. package/src/x_ite/Fallback.js +31 -31
  696. package/src/x_ite/Fields/ArrayFields.js +463 -443
  697. package/src/x_ite/Fields/SFBool.js +50 -47
  698. package/src/x_ite/Fields/SFColor.js +163 -160
  699. package/src/x_ite/Fields/SFColorRGBA.js +155 -152
  700. package/src/x_ite/Fields/SFDouble.js +51 -48
  701. package/src/x_ite/Fields/SFFloat.js +51 -48
  702. package/src/x_ite/Fields/SFImage.js +216 -213
  703. package/src/x_ite/Fields/SFInt32.js +47 -44
  704. package/src/x_ite/Fields/SFMatrix3.js +74 -71
  705. package/src/x_ite/Fields/SFMatrix4.js +68 -65
  706. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +98 -98
  707. package/src/x_ite/Fields/SFNode.js +392 -299
  708. package/src/x_ite/Fields/SFNodeCache.js +22 -33
  709. package/src/x_ite/Fields/SFRotation.js +178 -175
  710. package/src/x_ite/Fields/SFString.js +71 -68
  711. package/src/x_ite/Fields/SFTime.js +47 -44
  712. package/src/x_ite/Fields/SFVec2.js +73 -70
  713. package/src/x_ite/Fields/SFVec3.js +105 -102
  714. package/src/x_ite/Fields/SFVec4.js +118 -115
  715. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +94 -94
  716. package/src/x_ite/Fields.js +44 -44
  717. package/src/x_ite/InputOutput/FileLoader.js +426 -531
  718. package/src/x_ite/InputOutput/Generator.js +379 -376
  719. package/src/x_ite/{Configuration/X3DInfoArray.js → Parser/GoldenGate.js} +54 -86
  720. package/src/x_ite/Parser/HTMLSupport.js +28 -6
  721. package/src/x_ite/Parser/JSONParser.js +414 -388
  722. package/src/x_ite/Parser/VRMLParser.js +2964 -0
  723. package/src/x_ite/Parser/X3DParser.js +128 -128
  724. package/src/x_ite/Parser/XMLParser.js +1231 -1178
  725. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +17 -27
  726. package/src/x_ite/Prototype/ProtoDeclarationArray.js +17 -27
  727. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +279 -297
  728. package/src/x_ite/Prototype/X3DProtoDeclaration.js +264 -263
  729. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +58 -35
  730. package/src/x_ite/Rendering/DependentRenderer.js +83 -80
  731. package/src/x_ite/Rendering/TextureBuffer.js +171 -168
  732. package/src/x_ite/{Bits → Rendering}/TraverseType.js +11 -11
  733. package/src/x_ite/Rendering/X3DRenderObject.js +895 -906
  734. package/src/x_ite/Routing/RouteArray.js +19 -71
  735. package/src/x_ite/Routing/X3DRoute.js +185 -179
  736. package/src/x_ite/Routing/X3DRoutingContext.js +60 -54
  737. package/src/x_ite/X3D.js +191 -175
  738. package/src/x_ite.config.js +83 -83
  739. package/src/x_ite.css +279 -288
  740. package/src/x_ite.html +226 -193
  741. package/src/x_ite.js +100 -127
  742. package/x_ite.min.html +220 -187
  743. package/src/assets/shaders/webgl1/PointSet.fs +0 -100
  744. package/src/assets/shaders/webgl1/PointSet.vs +0 -70
  745. package/src/assets/shaders/webgl1/Wireframe.fs +0 -74
  746. package/src/assets/shaders/webgl1/Wireframe.vs +0 -63
  747. package/src/assets/shaders/webgl2/PointSet.fs +0 -99
  748. package/src/assets/shaders/webgl2/PointSet.vs +0 -71
  749. package/src/assets/shaders/webgl2/Wireframe.fs +0 -73
  750. package/src/assets/shaders/webgl2/Wireframe.vs +0 -64
  751. package/src/x_ite/Basic/X3DBaseNode.js +0 -1253
  752. package/src/x_ite/Basic/X3DField.js +0 -370
  753. package/src/x_ite/Basic/X3DObjectArrayField.js +0 -545
  754. package/src/x_ite/Basic/X3DTypedArrayField.js +0 -839
  755. package/src/x_ite/Browser/Core/X3DCoreContext.js.~1~ +0 -714
  756. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js.~1~ +0 -209
  757. package/src/x_ite/Execution/ImportedNode.js +0 -375
  758. package/src/x_ite/Execution/World.js +0 -162
  759. package/src/x_ite/Parser/Parser.js +0 -2944
@@ -4,8 +4,8 @@
4
4
  var module = { }, exports, process;
5
5
 
6
6
  const
7
- define = X3D .define,
8
- require = X3D .require;
7
+ define = window [Symbol .for ("X_ITE.X3D-5.0.0")] .define,
8
+ require = window [Symbol .for ("X_ITE.X3D-5.0.0")] .require;
9
9
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
10
10
  *******************************************************************************
11
11
  *
@@ -56,82 +56,91 @@ const
56
56
 
57
57
 
58
58
  define ('x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode',[
59
- "x_ite/Components/Texturing/X3DSingleTextureNode",
60
- "x_ite/Bits/X3DConstants",
59
+ "x_ite/Components/Texturing/X3DSingleTextureNode",
60
+ "x_ite/Base/X3DConstants",
61
61
  ],
62
62
  function (X3DSingleTextureNode,
63
63
  X3DConstants)
64
64
  {
65
65
  "use strict";
66
66
 
67
- function X3DEnvironmentTextureNode (executionContext)
68
- {
69
- X3DSingleTextureNode .call (this, executionContext);
67
+ function X3DEnvironmentTextureNode (executionContext)
68
+ {
69
+ X3DSingleTextureNode .call (this, executionContext);
70
70
 
71
- this .addType (X3DConstants .X3DEnvironmentTextureNode);
71
+ this .addType (X3DConstants .X3DEnvironmentTextureNode);
72
72
 
73
- const gl = this .getBrowser () .getContext ();
73
+ const gl = this .getBrowser () .getContext ();
74
74
 
75
- this .target = gl .TEXTURE_CUBE_MAP;
75
+ this .target = gl .TEXTURE_CUBE_MAP;
76
76
 
77
- this .targets = [
78
- gl .TEXTURE_CUBE_MAP_POSITIVE_Z, // Front
79
- gl .TEXTURE_CUBE_MAP_NEGATIVE_Z, // Back
80
- gl .TEXTURE_CUBE_MAP_NEGATIVE_X, // Left
81
- gl .TEXTURE_CUBE_MAP_POSITIVE_X, // Right
82
- gl .TEXTURE_CUBE_MAP_POSITIVE_Y, // Top
83
- gl .TEXTURE_CUBE_MAP_NEGATIVE_Y, // Bottom
84
- ];
77
+ this .targets = [
78
+ gl .TEXTURE_CUBE_MAP_POSITIVE_Z, // Front
79
+ gl .TEXTURE_CUBE_MAP_NEGATIVE_Z, // Back
80
+ gl .TEXTURE_CUBE_MAP_NEGATIVE_X, // Left
81
+ gl .TEXTURE_CUBE_MAP_POSITIVE_X, // Right
82
+ gl .TEXTURE_CUBE_MAP_POSITIVE_Y, // Top
83
+ gl .TEXTURE_CUBE_MAP_NEGATIVE_Y, // Bottom
84
+ ];
85
85
  }
86
86
 
87
- X3DEnvironmentTextureNode .prototype = Object .assign (Object .create (X3DSingleTextureNode .prototype),
88
- {
89
- constructor: X3DEnvironmentTextureNode,
90
- getTarget: function ()
91
- {
92
- return this .target;
93
- },
94
- getTargets: function ()
95
- {
96
- return this .targets;
97
- },
98
- clearTexture: (function ()
99
- {
100
- var defaultData = new Uint8Array ([ 255, 255, 255, 255 ]);
101
-
102
- return function ()
103
- {
104
- var
105
- gl = this .getBrowser () .getContext (),
106
- targets = this .getTargets ();
107
-
108
- gl .bindTexture (this .getTarget (), this .getTexture ());
109
-
110
- for (var i = 0, length = targets .length; i < length; ++ i)
111
- gl .texImage2D (targets [i], 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
112
- };
113
- })(),
114
- updateTextureProperties: function ()
115
- {
116
- X3DSingleTextureNode .prototype .updateTextureProperties .call (this,
117
- this .target,
118
- this .textureProperties_ .getValue (),
119
- this .texturePropertiesNode,
120
- 128,
121
- 128,
122
- false,
123
- false,
124
- false);
125
- },
126
- setShaderUniformsToChannel: function (gl, shaderObject, renderObject, i)
127
- {
128
- gl .activeTexture (gl .TEXTURE0 + shaderObject .getBrowser () .getCubeMapTextureUnits () [i]);
129
- gl .bindTexture (gl .TEXTURE_CUBE_MAP, this .getTexture ());
130
- gl .uniform1i (shaderObject .x3d_TextureType [i], 4);
131
- },
132
- });
133
-
134
- return X3DEnvironmentTextureNode;
87
+ X3DEnvironmentTextureNode .prototype = Object .assign (Object .create (X3DSingleTextureNode .prototype),
88
+ {
89
+ constructor: X3DEnvironmentTextureNode,
90
+ getTarget: function ()
91
+ {
92
+ return this .target;
93
+ },
94
+ getTextureType: function ()
95
+ {
96
+ return 4;
97
+ },
98
+ getTextureTypeString: function ()
99
+ {
100
+ return "CUBE";
101
+ },
102
+ getTargets: function ()
103
+ {
104
+ return this .targets;
105
+ },
106
+ clearTexture: (function ()
107
+ {
108
+ const defaultData = new Uint8Array ([ 255, 255, 255, 255 ]);
109
+
110
+ return function ()
111
+ {
112
+ const gl = this .getBrowser () .getContext ();
113
+
114
+ gl .bindTexture (this .getTarget (), this .getTexture ());
115
+
116
+ for (const target of this .getTargets ())
117
+ gl .texImage2D (target, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
118
+ };
119
+ })(),
120
+ updateTextureProperties: function ()
121
+ {
122
+ X3DSingleTextureNode .prototype .updateTextureProperties .call (this,
123
+ this .target,
124
+ this ._textureProperties .getValue (),
125
+ this .texturePropertiesNode,
126
+ 128,
127
+ 128,
128
+ false,
129
+ false,
130
+ false);
131
+ },
132
+ setShaderUniformsToChannel: function (gl, shaderObject, renderObject, channel)
133
+ {
134
+ const textureUnit = renderObject .getBrowser () .getTextureCubeUnit ();
135
+
136
+ gl .activeTexture (gl .TEXTURE0 + textureUnit);
137
+ gl .bindTexture (gl .TEXTURE_CUBE_MAP, this .getTexture ());
138
+ gl .uniform1i (channel .textureType, 4);
139
+ gl .uniform1i (channel .textureCube, textureUnit);
140
+ },
141
+ });
142
+
143
+ return X3DEnvironmentTextureNode;
135
144
  });
136
145
 
137
146
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
@@ -184,12 +193,12 @@ function (X3DSingleTextureNode,
184
193
 
185
194
 
186
195
  define ('x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture',[
187
- "x_ite/Fields",
188
- "x_ite/Basic/X3DFieldDefinition",
189
- "x_ite/Basic/FieldDefinitionArray",
190
- "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
191
- "x_ite/Bits/X3DCast",
192
- "x_ite/Bits/X3DConstants",
196
+ "x_ite/Fields",
197
+ "x_ite/Base/X3DFieldDefinition",
198
+ "x_ite/Base/FieldDefinitionArray",
199
+ "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
200
+ "x_ite/Base/X3DCast",
201
+ "x_ite/Base/X3DConstants",
193
202
  ],
194
203
  function (Fields,
195
204
  X3DFieldDefinition,
@@ -200,200 +209,193 @@ function (Fields,
200
209
  {
201
210
  "use strict";
202
211
 
203
- function ComposedCubeMapTexture (executionContext)
204
- {
205
- X3DEnvironmentTextureNode .call (this, executionContext);
206
-
207
- this .addType (X3DConstants .ComposedCubeMapTexture);
208
-
209
- this .addAlias ("front", this .frontTexture_);
210
- this .addAlias ("back", this .backTexture_);
211
- this .addAlias ("left", this .leftTexture_);
212
- this .addAlias ("right", this .rightTexture_);
213
- this .addAlias ("bottom", this .bottomTexture_);
214
- this .addAlias ("top", this .topTexture_);
215
-
216
- this .textures = [null, null, null, null, null, null];
217
- this .loadStates = 0;
218
- }
219
-
220
- ComposedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
221
- {
222
- constructor: ComposedCubeMapTexture,
223
- fieldDefinitions: new FieldDefinitionArray ([
224
- new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
225
- new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
226
- new X3DFieldDefinition (X3DConstants .inputOutput, "frontTexture", new Fields .SFNode ()),
227
- new X3DFieldDefinition (X3DConstants .inputOutput, "backTexture", new Fields .SFNode ()),
228
- new X3DFieldDefinition (X3DConstants .inputOutput, "leftTexture", new Fields .SFNode ()),
229
- new X3DFieldDefinition (X3DConstants .inputOutput, "rightTexture", new Fields .SFNode ()),
230
- new X3DFieldDefinition (X3DConstants .inputOutput, "bottomTexture", new Fields .SFNode ()),
231
- new X3DFieldDefinition (X3DConstants .inputOutput, "topTexture", new Fields .SFNode ()),
232
- new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
233
- ]),
234
- getTypeName: function ()
235
- {
236
- return "ComposedCubeMapTexture";
237
- },
238
- getComponentName: function ()
239
- {
240
- return "CubeMapTexturing";
241
- },
242
- getContainerField: function ()
243
- {
244
- return "texture";
245
- },
246
- initialize: function ()
247
- {
248
- X3DEnvironmentTextureNode .prototype .initialize .call (this);
249
-
250
- // Upload default data.
251
-
252
- this .clearTexture ();
253
-
254
- // Initialize.
255
-
256
- this .frontTexture_ .addInterest ("set_texture__", this, 0);
257
- this .backTexture_ .addInterest ("set_texture__", this, 1);
258
- this .leftTexture_ .addInterest ("set_texture__", this, 2);
259
- this .rightTexture_ .addInterest ("set_texture__", this, 3);
260
- this .topTexture_ .addInterest ("set_texture__", this, 5);
261
- this .bottomTexture_ .addInterest ("set_texture__", this, 4);
262
-
263
- this .set_texture__ (this .frontTexture_, 0);
264
- this .set_texture__ (this .backTexture_, 1);
265
- this .set_texture__ (this .leftTexture_, 2);
266
- this .set_texture__ (this .rightTexture_, 3);
267
- this .set_texture__ (this .topTexture_, 4);
268
- this .set_texture__ (this .bottomTexture_, 5);
269
- },
270
- set_texture__: function (node, index)
271
- {
272
- var texture = this .textures [index];
273
-
274
- if (texture)
275
- {
276
- var callbackName = "set_loadState__" + texture .getId () + "_" + index;
277
-
278
- texture .removeInterest ("set_loadState__", this);
279
- texture .loadState_ .removeFieldCallback (callbackName);
280
- }
281
-
282
- var texture = this .textures [index] = X3DCast (X3DConstants .X3DTexture2DNode, node);
283
-
284
- if (texture)
285
- {
286
- var callbackName = "set_loadState__" + texture .getId () + "_" + index;
287
-
288
- texture .addInterest ("set_loadState__", this, texture, index);
289
- texture .loadState_ .addFieldCallback (callbackName, this .set_loadState__ .bind (this, null, texture, index));
290
- }
291
-
292
- this .set_loadState__ (null, texture, index);
293
- },
294
- set_loadState__: function (output, texture, index)
295
- {
296
- if (texture)
297
- this .setLoadStateBit (texture .checkLoadState (), texture .getData (), index);
298
- else
299
- this .setLoadStateBit (X3DConstants .NOT_STARTED, null, index);
300
-
301
- this .setTextures ();
302
- },
303
- setLoadStateBit: function (loadState, data, bit)
304
- {
305
- if (loadState === X3DConstants .COMPLETE_STATE || data)
306
- this .loadStates |= 1 << bit;
307
- else
308
- this .loadStates &= ~(1 << bit);
309
- },
310
- isComplete: function ()
311
- {
312
- if (this .loadStates !== 0x3f) // 0b111111
313
- return false;
314
-
315
- var
316
- textures = this .textures,
317
- size = textures [0] .getWidth ();
318
-
319
- for (var i = 0; i < 6; ++ i)
320
- {
321
- var texture = textures [i];
322
-
323
- if (texture .getWidth () !== size)
324
- return false;
325
-
326
- if (texture .getHeight () !== size)
327
- return false;
328
- }
329
-
330
- return true;
331
- },
332
- setTextures: function ()
333
- {
334
- var gl = this .getBrowser () .getContext ();
335
-
336
- gl .bindTexture (this .getTarget (), this .getTexture ());
337
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
338
-
339
- if (this .isComplete ())
340
- {
341
- var textures = this .textures;
342
-
343
- for (var i = 0; i < 6; ++ i)
344
- {
345
- var
346
- gl = this .getBrowser () .getContext (),
347
- texture = textures [i],
348
- width = texture .getWidth (),
349
- height = texture .getHeight (),
350
- data = texture .getData ();
351
-
352
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, !texture .getFlipY ());
353
- gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
354
-
355
- if (data instanceof Uint8Array)
356
- {
357
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width, height, false, gl .RGBA, gl .UNSIGNED_BYTE, data);
358
- }
359
- else
360
- {
361
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, data);
362
- }
363
- }
364
-
365
- this .updateTextureProperties ();
366
- }
367
- else
368
- {
369
- this .clearTexture ();
370
- }
371
-
372
- this .set_transparent__ ();
373
- },
374
- set_transparent__: function ()
375
- {
376
- var
377
- textures = this .textures,
378
- transparent = false;
379
-
380
- if (this .isComplete ())
381
- {
382
- for (var i = 0; i < 6; ++ i)
383
- {
384
- if (textures [i] .transparent_ .getValue ())
385
- {
386
- transparent = true;
387
- break;
388
- }
389
- }
390
- }
391
-
392
- this .setTransparent (transparent);
393
- },
394
- });
395
-
396
- return ComposedCubeMapTexture;
212
+ function ComposedCubeMapTexture (executionContext)
213
+ {
214
+ X3DEnvironmentTextureNode .call (this, executionContext);
215
+
216
+ this .addType (X3DConstants .ComposedCubeMapTexture);
217
+
218
+ this .addAlias ("front", this ._frontTexture);
219
+ this .addAlias ("back", this ._backTexture);
220
+ this .addAlias ("left", this ._leftTexture);
221
+ this .addAlias ("right", this ._rightTexture);
222
+ this .addAlias ("bottom", this ._bottomTexture);
223
+ this .addAlias ("top", this ._topTexture);
224
+
225
+ this .textures = [null, null, null, null, null, null];
226
+ this .symbols = [Symbol (), Symbol (), Symbol (), Symbol (), Symbol (), Symbol ()];
227
+ this .loadStates = 0;
228
+ }
229
+
230
+ ComposedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
231
+ {
232
+ constructor: ComposedCubeMapTexture,
233
+ [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
234
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
235
+ new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
236
+ new X3DFieldDefinition (X3DConstants .inputOutput, "frontTexture", new Fields .SFNode ()),
237
+ new X3DFieldDefinition (X3DConstants .inputOutput, "backTexture", new Fields .SFNode ()),
238
+ new X3DFieldDefinition (X3DConstants .inputOutput, "leftTexture", new Fields .SFNode ()),
239
+ new X3DFieldDefinition (X3DConstants .inputOutput, "rightTexture", new Fields .SFNode ()),
240
+ new X3DFieldDefinition (X3DConstants .inputOutput, "bottomTexture", new Fields .SFNode ()),
241
+ new X3DFieldDefinition (X3DConstants .inputOutput, "topTexture", new Fields .SFNode ()),
242
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
243
+ ]),
244
+ getTypeName: function ()
245
+ {
246
+ return "ComposedCubeMapTexture";
247
+ },
248
+ getComponentName: function ()
249
+ {
250
+ return "CubeMapTexturing";
251
+ },
252
+ getContainerField: function ()
253
+ {
254
+ return "texture";
255
+ },
256
+ initialize: function ()
257
+ {
258
+ X3DEnvironmentTextureNode .prototype .initialize .call (this);
259
+
260
+ // Upload default data.
261
+
262
+ this .clearTexture ();
263
+
264
+ // Initialize.
265
+
266
+ this ._frontTexture .addInterest ("set_texture__", this, 0);
267
+ this ._backTexture .addInterest ("set_texture__", this, 1);
268
+ this ._leftTexture .addInterest ("set_texture__", this, 2);
269
+ this ._rightTexture .addInterest ("set_texture__", this, 3);
270
+ this ._topTexture .addInterest ("set_texture__", this, 5);
271
+ this ._bottomTexture .addInterest ("set_texture__", this, 4);
272
+
273
+ this .set_texture__ (this ._frontTexture, 0);
274
+ this .set_texture__ (this ._backTexture, 1);
275
+ this .set_texture__ (this ._leftTexture, 2);
276
+ this .set_texture__ (this ._rightTexture, 3);
277
+ this .set_texture__ (this ._topTexture, 4);
278
+ this .set_texture__ (this ._bottomTexture, 5);
279
+ },
280
+ set_texture__: function (node, index)
281
+ {
282
+ let texture = this .textures [index];
283
+
284
+ if (texture)
285
+ {
286
+ texture .removeInterest ("set_loadState__", this);
287
+ texture ._loadState .removeFieldCallback (this .symbols [index]);
288
+ }
289
+
290
+ texture = this .textures [index] = X3DCast (X3DConstants .X3DTexture2DNode, node);
291
+
292
+ if (texture)
293
+ {
294
+ texture .addInterest ("set_loadState__", this, texture, index);
295
+ texture ._loadState .addFieldCallback (this .symbols [index], this .set_loadState__ .bind (this, texture, index));
296
+ }
297
+
298
+ this .set_loadState__ (texture, index);
299
+ },
300
+ set_loadState__: function (texture, index)
301
+ {
302
+ if (texture)
303
+ this .setLoadStateBit (texture .checkLoadState (), texture .getData (), index);
304
+ else
305
+ this .setLoadStateBit (X3DConstants .NOT_STARTED, null, index);
306
+
307
+ this .setTextures ();
308
+ },
309
+ setLoadStateBit: function (loadState, data, bit)
310
+ {
311
+ if (loadState === X3DConstants .COMPLETE_STATE || data)
312
+ this .loadStates |= 1 << bit;
313
+ else
314
+ this .loadStates &= ~(1 << bit);
315
+ },
316
+ isComplete: function ()
317
+ {
318
+ if (this .loadStates !== 0b111111)
319
+ return false;
320
+
321
+ const
322
+ textures = this .textures,
323
+ size = textures [0] .getWidth ();
324
+
325
+ for (const texture of textures)
326
+ {
327
+ if (texture .getWidth () !== size)
328
+ return false;
329
+
330
+ if (texture .getHeight () !== size)
331
+ return false;
332
+ }
333
+
334
+ return true;
335
+ },
336
+ setTextures: function ()
337
+ {
338
+ const gl = this .getBrowser () .getContext ();
339
+
340
+ gl .bindTexture (this .getTarget (), this .getTexture ());
341
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
342
+
343
+ if (this .isComplete ())
344
+ {
345
+ const textures = this .textures;
346
+
347
+ for (let i = 0; i < 6; ++ i)
348
+ {
349
+ const
350
+ gl = this .getBrowser () .getContext (),
351
+ texture = textures [i],
352
+ width = texture .getWidth (),
353
+ height = texture .getHeight (),
354
+ data = texture .getData ();
355
+
356
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, !texture .getFlipY ());
357
+ gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
358
+
359
+ if (data instanceof Uint8Array)
360
+ {
361
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width, height, false, gl .RGBA, gl .UNSIGNED_BYTE, data);
362
+ }
363
+ else
364
+ {
365
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, data);
366
+ }
367
+ }
368
+
369
+ this .updateTextureProperties ();
370
+ }
371
+ else
372
+ {
373
+ this .clearTexture ();
374
+ }
375
+
376
+ this .set_transparent__ ();
377
+ },
378
+ set_transparent__: function ()
379
+ {
380
+ const transparent = false;
381
+
382
+ if (this .isComplete ())
383
+ {
384
+ for (const texture of this .textures)
385
+ {
386
+ if (texture ._transparent .getValue ())
387
+ {
388
+ transparent = true;
389
+ break;
390
+ }
391
+ }
392
+ }
393
+
394
+ this .setTransparent (transparent);
395
+ },
396
+ });
397
+
398
+ return ComposedCubeMapTexture;
397
399
  });
398
400
 
399
401
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
@@ -446,9 +448,9 @@ function (Fields,
446
448
 
447
449
 
448
450
  define ('x_ite/Rendering/DependentRenderer',[
449
- "x_ite/Basic/X3DBaseNode",
450
- "x_ite/Rendering/X3DRenderObject",
451
- "x_ite/Bits/TraverseType",
451
+ "x_ite/Base/X3DBaseNode",
452
+ "x_ite/Rendering/X3DRenderObject",
453
+ "x_ite/Rendering/TraverseType",
452
454
  ],
453
455
  function (X3DBaseNode,
454
456
  X3DRenderObject,
@@ -456,89 +458,92 @@ function (X3DBaseNode,
456
458
  {
457
459
  "use strict";
458
460
 
459
- function DependentRenderer (executionContext)
460
- {
461
- X3DBaseNode .call (this, executionContext);
462
- X3DRenderObject .call (this, executionContext);
463
-
464
- this .renderObject = null;
465
- }
466
-
467
- DependentRenderer .prototype = Object .assign (Object .create (X3DBaseNode .prototype),
468
- X3DRenderObject .prototype,
469
- {
470
- constructor: DependentRenderer,
471
- initialize: function ()
472
- {
473
- X3DBaseNode .prototype .initialize .call (this);
474
- X3DRenderObject .prototype .initialize .call (this);
475
- },
476
- isIndependent: function ()
477
- {
478
- return false;
479
- },
480
- setRenderer: function (value)
481
- {
482
- this .renderObject = value;
483
- },
484
- getBrowser: function ()
485
- {
486
- return this .renderObject .getBrowser ();
487
- },
488
- getLayer: function ()
489
- {
490
- return this .renderObject .getLayer ();
491
- },
492
- getBackground: function ()
493
- {
494
- return this .renderObject .getBackground ();
495
- },
496
- getFog: function ()
497
- {
498
- return this .renderObject .getFog ();
499
- },
500
- getNavigationInfo: function ()
501
- {
502
- return this .renderObject .getNavigationInfo ();
503
- },
504
- getViewpoint: function ()
505
- {
506
- return this .renderObject .getViewpoint ();
507
- },
508
- getLightContainer: function ()
509
- {
510
- return this .renderObject .getLights () [this .lightIndex ++];
511
- },
512
- render: function (type, callback, group)
513
- {
514
- switch (type)
515
- {
516
- case TraverseType .COLLISION:
517
- {
518
- X3DRenderObject .prototype .render .call (this, type, callback, group);
519
- break;
520
- }
521
- case TraverseType .SHADOW:
522
- {
523
- X3DRenderObject .prototype .render .call (this, type, callback, group);
524
- break;
525
- }
526
- case TraverseType .DISPLAY:
527
- {
528
- this .lightIndex = 0;
529
-
530
- X3DRenderObject .prototype .render .call (this, type, callback, group);
531
-
532
- for (const light of this .renderObject .getLights ())
533
- light .getModelViewMatrix () .pop ();
534
-
535
- break;
536
- }
537
- }
538
- },
539
- });
540
-
541
- return DependentRenderer;
461
+ function DependentRenderer (executionContext)
462
+ {
463
+ X3DBaseNode .call (this, executionContext);
464
+ X3DRenderObject .call (this, executionContext);
465
+
466
+ this .renderObject = null;
467
+ }
468
+
469
+ DependentRenderer .prototype = Object .assign (Object .create (X3DBaseNode .prototype),
470
+ X3DRenderObject .prototype,
471
+ {
472
+ constructor: DependentRenderer,
473
+ initialize: function ()
474
+ {
475
+ X3DBaseNode .prototype .initialize .call (this);
476
+ X3DRenderObject .prototype .initialize .call (this);
477
+ },
478
+ isIndependent: function ()
479
+ {
480
+ return false;
481
+ },
482
+ setRenderer: function (value)
483
+ {
484
+ this .renderObject = value;
485
+ },
486
+ getBrowser: function ()
487
+ {
488
+ return this .renderObject .getBrowser ();
489
+ },
490
+ getLayer: function ()
491
+ {
492
+ return this .renderObject .getLayer ();
493
+ },
494
+ getBackground: function ()
495
+ {
496
+ return this .renderObject .getBackground ();
497
+ },
498
+ getFog: function ()
499
+ {
500
+ return this .renderObject .getFog ();
501
+ },
502
+ getNavigationInfo: function ()
503
+ {
504
+ return this .renderObject .getNavigationInfo ();
505
+ },
506
+ getViewpoint: function ()
507
+ {
508
+ return this .renderObject .getViewpoint ();
509
+ },
510
+ getLightContainer: function ()
511
+ {
512
+ return this .renderObject .getLights () [this .lightIndex ++];
513
+ },
514
+ render: function (type, callback, group)
515
+ {
516
+ switch (type)
517
+ {
518
+ case TraverseType .COLLISION:
519
+ {
520
+ X3DRenderObject .prototype .render .call (this, type, callback, group);
521
+ break;
522
+ }
523
+ case TraverseType .SHADOW:
524
+ {
525
+ X3DRenderObject .prototype .render .call (this, type, callback, group);
526
+ break;
527
+ }
528
+ case TraverseType .DISPLAY:
529
+ {
530
+ this .lightIndex = 0;
531
+
532
+ X3DRenderObject .prototype .render .call (this, type, callback, group);
533
+
534
+ for (const light of this .renderObject .getLights ())
535
+ light .getModelViewMatrix () .pop ();
536
+
537
+ break;
538
+ }
539
+ }
540
+ },
541
+ });
542
+
543
+ for (const key of Reflect .ownKeys (DependentRenderer .prototype))
544
+ Object .defineProperty (DependentRenderer .prototype, key, { enumerable: false });
545
+
546
+ return DependentRenderer;
542
547
  });
543
548
 
544
549
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
@@ -591,21 +596,21 @@ function (X3DBaseNode,
591
596
 
592
597
 
593
598
  define ('x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture',[
594
- "x_ite/Fields",
595
- "x_ite/Basic/X3DFieldDefinition",
596
- "x_ite/Basic/FieldDefinitionArray",
597
- "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
598
- "x_ite/Rendering/DependentRenderer",
599
- "x_ite/Rendering/TextureBuffer",
600
- "x_ite/Bits/X3DConstants",
601
- "x_ite/Bits/TraverseType",
602
- "standard/Math/Geometry/Camera",
603
- "standard/Math/Geometry/ViewVolume",
604
- "standard/Math/Numbers/Rotation4",
605
- "standard/Math/Numbers/Vector3",
606
- "standard/Math/Numbers/Vector4",
607
- "standard/Math/Numbers/Matrix4",
608
- "standard/Math/Algorithm",
599
+ "x_ite/Fields",
600
+ "x_ite/Base/X3DFieldDefinition",
601
+ "x_ite/Base/FieldDefinitionArray",
602
+ "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
603
+ "x_ite/Rendering/DependentRenderer",
604
+ "x_ite/Rendering/TextureBuffer",
605
+ "x_ite/Base/X3DConstants",
606
+ "x_ite/Rendering/TraverseType",
607
+ "standard/Math/Geometry/Camera",
608
+ "standard/Math/Geometry/ViewVolume",
609
+ "standard/Math/Numbers/Rotation4",
610
+ "standard/Math/Numbers/Vector3",
611
+ "standard/Math/Numbers/Vector4",
612
+ "standard/Math/Numbers/Matrix4",
613
+ "standard/Math/Algorithm",
609
614
  ],
610
615
  function (Fields,
611
616
  X3DFieldDefinition,
@@ -625,223 +630,226 @@ function (Fields,
625
630
  {
626
631
  "use strict";
627
632
 
628
- // Rotations to negated normals of the texture cube.
629
-
630
- var rotations = [
631
- new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 0, -1)), // front
632
- new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 0, 1)), // back
633
- new Rotation4 (Vector3 .zAxis, new Vector3 ( 1, 0, 0)), // left
634
- new Rotation4 (Vector3 .zAxis, new Vector3 (-1, 0, 0)), // right
635
- new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, -1, 0)), // top
636
- new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 1, 0)), // bottom
637
- ];
638
-
639
- // Negated scales of the texture cube.
640
-
641
- var scales = [
642
- new Vector3 (-1, -1, 1), // front
643
- new Vector3 (-1, -1, 1), // back
644
- new Vector3 (-1, -1, 1), // left
645
- new Vector3 (-1, -1, 1), // right
646
- new Vector3 ( 1, 1, 1), // top
647
- new Vector3 ( 1, 1, 1), // bottom
648
- ];
649
-
650
- var invCameraSpaceMatrix = new Matrix4 ();
651
-
652
- function GeneratedCubeMapTexture (executionContext)
653
- {
654
- X3DEnvironmentTextureNode .call (this, executionContext);
655
-
656
- this .addType (X3DConstants .GeneratedCubeMapTexture);
657
-
658
- this .renderer = new DependentRenderer (executionContext);
659
- this .projectionMatrix = new Matrix4 ();
660
- this .modelMatrix = new Matrix4 ();
661
- this .viewVolume = new ViewVolume ();
662
- }
663
-
664
- GeneratedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
665
- {
666
- constructor: GeneratedCubeMapTexture,
667
- fieldDefinitions: new FieldDefinitionArray ([
668
- new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
669
- new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
670
- new X3DFieldDefinition (X3DConstants .inputOutput, "update", new Fields .SFString ("NONE")),
671
- new X3DFieldDefinition (X3DConstants .initializeOnly, "size", new Fields .SFInt32 (128)),
672
- new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
673
- ]),
674
- getTypeName: function ()
675
- {
676
- return "GeneratedCubeMapTexture";
677
- },
678
- getComponentName: function ()
679
- {
680
- return "CubeMapTexturing";
681
- },
682
- getContainerField: function ()
683
- {
684
- return "texture";
685
- },
686
- initialize: function ()
687
- {
688
- X3DEnvironmentTextureNode .prototype .initialize .call (this);
689
-
690
- this .renderer .setup ();
691
-
692
- // Transfer 6 textures of size x size pixels.
693
-
694
- var size = Algorithm .nextPowerOfTwo (this .size_ .getValue ());
695
-
696
- if (size > 0)
697
- {
698
- size = Algorithm .nextPowerOfTwo (size);
699
-
700
- // Upload default data.
701
-
702
- var
703
- gl = this .getBrowser () .getContext (),
704
- defaultData = new Uint8Array (size * size * 4);
705
-
706
- gl .bindTexture (this .getTarget (), this .getTexture ());
707
-
708
- for (var i = 0; i < 6; ++ i)
709
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, size, size, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
710
-
711
- // Properties
712
-
713
- this .viewport = new Vector4 (0, 0, size, size);
714
- this .frameBuffer = new TextureBuffer (this .getBrowser (), size, size);
715
- }
716
- },
717
- traverse: function (type, renderObject)
718
- {
719
- if (type !== TraverseType .DISPLAY)
720
- return;
633
+ function GeneratedCubeMapTexture (executionContext)
634
+ {
635
+ X3DEnvironmentTextureNode .call (this, executionContext);
636
+
637
+ this .addType (X3DConstants .GeneratedCubeMapTexture);
638
+
639
+ this .renderer = new DependentRenderer (executionContext);
640
+ this .projectionMatrix = new Matrix4 ();
641
+ this .modelMatrix = new Matrix4 ();
642
+ this .viewVolume = new ViewVolume ();
643
+ }
644
+
645
+ GeneratedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
646
+ {
647
+ constructor: GeneratedCubeMapTexture,
648
+ [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
649
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
650
+ new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
651
+ new X3DFieldDefinition (X3DConstants .inputOutput, "update", new Fields .SFString ("NONE")),
652
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "size", new Fields .SFInt32 (128)),
653
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
654
+ ]),
655
+ getTypeName: function ()
656
+ {
657
+ return "GeneratedCubeMapTexture";
658
+ },
659
+ getComponentName: function ()
660
+ {
661
+ return "CubeMapTexturing";
662
+ },
663
+ getContainerField: function ()
664
+ {
665
+ return "texture";
666
+ },
667
+ initialize: function ()
668
+ {
669
+ X3DEnvironmentTextureNode .prototype .initialize .call (this);
670
+
671
+ this .renderer .setup ();
672
+
673
+ // Transfer 6 textures of size x size pixels.
674
+
675
+ let size = Algorithm .nextPowerOfTwo (this ._size .getValue ());
676
+
677
+ if (size > 0)
678
+ {
679
+ size = Algorithm .nextPowerOfTwo (size);
680
+
681
+ // Upload default data.
682
+
683
+ const
684
+ gl = this .getBrowser () .getContext (),
685
+ defaultData = new Uint8Array (size * size * 4);
686
+
687
+ gl .bindTexture (this .getTarget (), this .getTexture ());
688
+
689
+ for (const target of this .getTargets ())
690
+ gl .texImage2D (target, 0, gl .RGBA, size, size, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
691
+
692
+ // Properties
693
+
694
+ this .viewport = new Vector4 (0, 0, size, size);
695
+ this .frameBuffer = new TextureBuffer (this .getBrowser (), size, size);
696
+ }
697
+ },
698
+ traverse: function (type, renderObject)
699
+ {
700
+ // TraverseType .DISPLAY
701
+
702
+ if (this ._update .getValue () === "NONE")
703
+ return;
704
+
705
+ if (!this .frameBuffer)
706
+ return;
707
+
708
+ //if (renderObject .getBrowser () !== this .getBrowser ())
709
+ // return; // Could be interesting for four-side-view
710
+
711
+ if (!renderObject .isIndependent ())
712
+ return;
713
+
714
+ renderObject .getGeneratedCubeMapTextures () .push (this);
715
+
716
+ this .modelMatrix .assign (renderObject .getModelViewMatrix () .get ()) .multRight (renderObject .getCameraSpaceMatrix () .get ());
717
+ },
718
+ renderTexture: (function ()
719
+ {
720
+ // Rotations to negated normals of the texture cube.
721
+
722
+ const rotations = [
723
+ new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 0, -1)), // front
724
+ new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 0, 1)), // back
725
+ new Rotation4 (Vector3 .zAxis, new Vector3 ( 1, 0, 0)), // left
726
+ new Rotation4 (Vector3 .zAxis, new Vector3 (-1, 0, 0)), // right
727
+ new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, -1, 0)), // top
728
+ new Rotation4 (Vector3 .zAxis, new Vector3 ( 0, 1, 0)), // bottom
729
+ ];
730
+
731
+ // Negated scales of the texture cube.
732
+
733
+ const scales = [
734
+ new Vector3 (-1, -1, 1), // front
735
+ new Vector3 (-1, -1, 1), // back
736
+ new Vector3 (-1, -1, 1), // left
737
+ new Vector3 (-1, -1, 1), // right
738
+ new Vector3 ( 1, 1, 1), // top
739
+ new Vector3 ( 1, 1, 1), // bottom
740
+ ];
741
+
742
+ const invCameraSpaceMatrix = new Matrix4 ();
743
+
744
+ return function (renderObject)
745
+ {
746
+ this .renderer .setRenderer (renderObject);
747
+
748
+ const
749
+ renderer = this .renderer,
750
+ browser = renderObject .getBrowser (),
751
+ layer = renderObject .getLayer (),
752
+ gl = browser .getContext (),
753
+ background = renderer .getBackground (),
754
+ navigationInfo = renderer .getNavigationInfo (),
755
+ viewpoint = renderer .getViewpoint (),
756
+ headlightContainer = browser .getHeadlight (),
757
+ headlight = navigationInfo ._headlight .getValue (),
758
+ nearValue = navigationInfo .getNearValue (),
759
+ farValue = navigationInfo .getFarValue (viewpoint),
760
+ projectionMatrix = Camera .perspective (Algorithm .radians (90.0), nearValue, farValue, 1, 1, this .projectionMatrix);
721
761
 
722
- if (this .update_ .getValue () === "NONE")
723
- return;
762
+ this .setTransparent (background .getTransparent ());
724
763
 
725
- if (! this .frameBuffer)
726
- return;
764
+ this .frameBuffer .bind ();
727
765
 
728
- //if (renderObject .getBrowser () !== this .getBrowser ())
729
- // return; // Could be interesting for four-side-view
730
-
731
- if (! renderObject .isIndependent ())
732
- return;
733
-
734
- renderObject .getGeneratedCubeMapTextures () .push (this);
735
-
736
- this .modelMatrix .assign (renderObject .getModelViewMatrix () .get ()) .multRight (renderObject .getCameraSpaceMatrix () .get ());
737
- },
738
- renderTexture: function (renderObject)
739
- {
740
- this .renderer .setRenderer (renderObject);
741
-
742
- var
743
- renderer = this .renderer,
744
- browser = renderObject .getBrowser (),
745
- layer = renderObject .getLayer (),
746
- gl = browser .getContext (),
747
- background = renderer .getBackground (),
748
- navigationInfo = renderer .getNavigationInfo (),
749
- viewpoint = renderer .getViewpoint (),
750
- headlightContainer = browser .getHeadlight (),
751
- headlight = navigationInfo .headlight_ .getValue (),
752
- nearValue = navigationInfo .getNearValue (),
753
- farValue = navigationInfo .getFarValue (viewpoint),
754
- projectionMatrix = Camera .perspective (Algorithm .radians (90.0), nearValue, farValue, 1, 1, this .projectionMatrix);
766
+ renderer .getViewVolumes () .push (this .viewVolume .set (projectionMatrix, this .viewport, this .viewport));
767
+ renderer .getProjectionMatrix () .pushMatrix (projectionMatrix);
755
768
 
756
- this .setTransparent (background .getTransparent ());
757
-
758
- this .frameBuffer .bind ();
759
-
760
- renderer .getViewVolumes () .push (this .viewVolume .set (projectionMatrix, this .viewport, this .viewport));
761
- renderer .getProjectionMatrix () .pushMatrix (projectionMatrix);
769
+ gl .bindTexture (this .getTarget (), this .getTexture ());
770
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
762
771
 
763
- gl .bindTexture (this .getTarget (), this .getTexture ());
764
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
765
-
766
- for (var i = 0; i < 6; ++ i)
767
- {
768
- gl .clear (gl .COLOR_BUFFER_BIT); // Always clear, X3DBackground could be transparent!
772
+ for (let i = 0; i < 6; ++ i)
773
+ {
774
+ gl .clear (gl .COLOR_BUFFER_BIT); // Always clear, X3DBackground could be transparent!
769
775
 
770
- // Setup inverse texture space matrix.
776
+ // Setup inverse texture space matrix.
771
777
 
772
- renderer .getCameraSpaceMatrix () .pushMatrix (this .modelMatrix);
773
- renderer .getCameraSpaceMatrix () .rotate (rotations [i]);
774
- renderer .getCameraSpaceMatrix () .scale (scales [i]);
778
+ renderer .getCameraSpaceMatrix () .pushMatrix (this .modelMatrix);
779
+ renderer .getCameraSpaceMatrix () .rotate (rotations [i]);
780
+ renderer .getCameraSpaceMatrix () .scale (scales [i]);
775
781
 
776
- try
777
- {
778
- renderer .getViewMatrix () .pushMatrix (invCameraSpaceMatrix .assign (renderer .getCameraSpaceMatrix () .get ()) .inverse ());
779
- }
780
- catch (error)
781
- {
782
- console .log (error);
782
+ try
783
+ {
784
+ renderer .getViewMatrix () .pushMatrix (invCameraSpaceMatrix .assign (renderer .getCameraSpaceMatrix () .get ()) .inverse ());
785
+ }
786
+ catch (error)
787
+ {
788
+ console .error (error);
783
789
 
784
- renderer .getViewMatrix () .pushMatrix (Matrix4 .Identity);
785
- }
790
+ renderer .getViewMatrix () .pushMatrix (Matrix4 .Identity);
791
+ }
786
792
 
787
- renderer .getModelViewMatrix () .pushMatrix (invCameraSpaceMatrix);
793
+ renderer .getModelViewMatrix () .pushMatrix (invCameraSpaceMatrix);
788
794
 
789
- // Setup headlight if enabled.
795
+ // Setup headlight if enabled.
790
796
 
791
- if (headlight)
792
- {
793
- headlightContainer .getModelViewMatrix () .pushMatrix (invCameraSpaceMatrix);
794
- headlightContainer .getModelViewMatrix () .multLeft (viewpoint .getCameraSpaceMatrix ());
795
- }
797
+ if (headlight)
798
+ {
799
+ headlightContainer .getModelViewMatrix () .pushMatrix (invCameraSpaceMatrix);
800
+ headlightContainer .getModelViewMatrix () .multLeft (viewpoint .getCameraSpaceMatrix ());
801
+ }
796
802
 
797
- // Render layer's children.
803
+ // Render layer's children.
798
804
 
799
- layer .traverse (TraverseType .DISPLAY, renderer);
805
+ layer .traverse (TraverseType .DISPLAY, renderer);
800
806
 
801
- // Pop matrices.
807
+ // Pop matrices.
802
808
 
803
- if (headlight)
804
- headlightContainer .getModelViewMatrix () .pop ();
809
+ if (headlight)
810
+ headlightContainer .getModelViewMatrix () .pop ();
805
811
 
806
- renderer .getModelViewMatrix () .pop ();
807
- renderer .getCameraSpaceMatrix () .pop ();
808
- renderer .getViewMatrix () .pop ();
812
+ renderer .getModelViewMatrix () .pop ();
813
+ renderer .getCameraSpaceMatrix () .pop ();
814
+ renderer .getViewMatrix () .pop ();
809
815
 
810
- // Transfer image.
816
+ // Transfer image.
817
+
818
+ const
819
+ data = this .frameBuffer .readPixels (),
820
+ width = this .frameBuffer .getWidth (),
821
+ height = this .frameBuffer .getHeight ();
811
822
 
812
- var
813
- data = this .frameBuffer .readPixels (),
814
- width = this .frameBuffer .getWidth (),
815
- height = this .frameBuffer .getHeight ();
823
+ gl .bindTexture (this .getTarget (), this .getTexture ());
824
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width, height, false, gl .RGBA, gl .UNSIGNED_BYTE, data);
825
+ }
816
826
 
817
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width, height, false, gl .RGBA, gl .UNSIGNED_BYTE, data);
818
- }
827
+ this .updateTextureProperties ();
819
828
 
820
- this .updateTextureProperties ();
829
+ renderer .getProjectionMatrix () .pop ();
830
+ renderer .getViewVolumes () .pop ();
821
831
 
822
- renderer .getProjectionMatrix () .pop ();
823
- renderer .getViewVolumes () .pop ();
832
+ this .frameBuffer .unbind ();
824
833
 
825
- this .frameBuffer .unbind ();
834
+ if (this ._update .getValue () === "NEXT_FRAME_ONLY")
835
+ this ._update = "NONE";
836
+ };
837
+ })(),
838
+ setShaderUniformsToChannel: (function ()
839
+ {
840
+ const Zero = new Float32Array (16); // Trick: zero model view matrix to hide object.
826
841
 
827
- if (this .update_ .getValue () === "NEXT_FRAME_ONLY")
828
- this .update_ = "NONE";
829
- },
830
- setShaderUniformsToChannel: (function ()
831
- {
832
- const Zero = new Float32Array (16); // Trick: zero model view matrix to hide object.
842
+ return function (gl, shaderObject, renderObject, channel)
843
+ {
844
+ X3DEnvironmentTextureNode .prototype .setShaderUniformsToChannel .call (this, gl, shaderObject, renderObject, channel);
833
845
 
834
- return function (gl, shaderObject, renderObject, i)
835
- {
836
- X3DEnvironmentTextureNode .prototype .setShaderUniformsToChannel .call (this, gl, shaderObject, renderObject, i);
846
+ if (renderObject === this .renderer)
847
+ gl .uniformMatrix4fv (shaderObject .x3d_ModelViewMatrix, false, Zero);
848
+ };
849
+ })(),
850
+ });
837
851
 
838
- if (! renderObject .isIndependent ())
839
- gl .uniformMatrix4fv (shaderObject .x3d_ModelViewMatrix, false, Zero);
840
- };
841
- })(),
842
- });
843
-
844
- return GeneratedCubeMapTexture;
852
+ return GeneratedCubeMapTexture;
845
853
  });
846
854
 
847
855
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
@@ -894,16 +902,16 @@ function (Fields,
894
902
 
895
903
 
896
904
  define ('x_ite/Components/CubeMapTexturing/ImageCubeMapTexture',[
897
- "jquery",
898
- "x_ite/Fields",
899
- "x_ite/Basic/X3DFieldDefinition",
900
- "x_ite/Basic/FieldDefinitionArray",
901
- "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
902
- "x_ite/Components/Networking/X3DUrlObject",
903
- "x_ite/Bits/X3DConstants",
904
- "standard/Math/Numbers/Vector2",
905
- "standard/Math/Algorithm",
906
- "x_ite/DEBUG",
905
+ "jquery",
906
+ "x_ite/Fields",
907
+ "x_ite/Base/X3DFieldDefinition",
908
+ "x_ite/Base/FieldDefinitionArray",
909
+ "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
910
+ "x_ite/Components/Networking/X3DUrlObject",
911
+ "x_ite/Base/X3DConstants",
912
+ "standard/Math/Numbers/Vector2",
913
+ "standard/Math/Algorithm",
914
+ "x_ite/DEBUG",
907
915
  ],
908
916
  function ($,
909
917
  Fields,
@@ -920,215 +928,209 @@ function ($,
920
928
 
921
929
  const defaultData = new Uint8Array ([ 255, 255, 255, 255 ]);
922
930
 
923
- const offsets = [
924
- new Vector2 (1, 1), // Front
925
- new Vector2 (3, 1), // Back
926
- new Vector2 (0, 1), // Left
927
- new Vector2 (2, 1), // Right
928
- new Vector2 (1, 0), // Bottom, must be exchanged with top
929
- new Vector2 (1, 2), // Top, must be exchanged with bottom
930
- ];
931
-
932
- function ImageCubeMapTexture (executionContext)
933
- {
934
- X3DEnvironmentTextureNode .call (this, executionContext);
935
- X3DUrlObject .call (this, executionContext);
936
-
937
- this .addType (X3DConstants .ImageCubeMapTexture);
938
-
939
- this .urlStack = new Fields .MFString ();
940
- }
941
-
942
- ImageCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
943
- X3DUrlObject .prototype,
944
- {
945
- constructor: ImageCubeMapTexture,
946
- fieldDefinitions: new FieldDefinitionArray ([
947
- new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
948
- new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
949
- new X3DFieldDefinition (X3DConstants .inputOutput, "url", new Fields .MFString ()),
950
- new X3DFieldDefinition (X3DConstants .inputOutput, "autoRefresh", new Fields .SFTime ()),
951
- new X3DFieldDefinition (X3DConstants .inputOutput, "autoRefreshTimeLimit", new Fields .SFTime (3600)),
952
- new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
953
- ]),
954
- getTypeName: function ()
955
- {
956
- return "ImageCubeMapTexture";
957
- },
958
- getComponentName: function ()
959
- {
960
- return "CubeMapTexturing";
961
- },
962
- getContainerField: function ()
963
- {
964
- return "texture";
965
- },
966
- initialize: function ()
967
- {
968
- X3DEnvironmentTextureNode .prototype .initialize .call (this);
969
- X3DUrlObject .prototype .initialize .call (this);
970
-
971
- // Upload default data.
972
-
973
- const gl = this .getBrowser () .getContext ();
974
-
975
- gl .bindTexture (this .getTarget (), this .getTexture ());
976
-
977
- for (let i = 0; i < 6; ++ i)
978
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
979
-
980
- // Initialize.
981
-
982
- this .url_ .addInterest ("set_url__", this);
983
-
984
- this .canvas = $("<canvas></canvas>");
985
-
986
- this .image = $("<img></img>");
987
- this .image .on ("load", this .setImage .bind (this));
988
- this .image .on ("error", this .setError .bind (this));
989
- this .image .bind ("abort", this .setError .bind (this));
990
-
991
- this .image [0] .crossOrigin = "Anonymous";
992
-
993
- this .requestImmediateLoad ();
994
- },
995
- set_url__: function ()
996
- {
997
- this .setLoadState (X3DConstants .NOT_STARTED_STATE);
998
-
999
- this .requestImmediateLoad ();
1000
- },
1001
- requestImmediateLoad: function (cache = true)
1002
- {
1003
- if (this .checkLoadState () === X3DConstants .COMPLETE_STATE || this .checkLoadState () === X3DConstants .IN_PROGRESS_STATE)
1004
- return;
1005
-
1006
- this .setCache (cache);
1007
- this .setLoadState (X3DConstants .IN_PROGRESS_STATE);
1008
-
1009
- this .urlStack .setValue (this .url_);
1010
- this .loadNext ();
1011
- },
1012
- loadNext: function ()
1013
- {
1014
- if (this .urlStack .length === 0)
1015
- {
1016
- this .clearTexture ();
1017
- this .setLoadState (X3DConstants .FAILED_STATE);
1018
- return;
1019
- }
1020
-
1021
- // Get URL.
1022
-
1023
- this .URL = new URL (this .urlStack .shift (), this .getExecutionContext () .getWorldURL ());
1024
-
1025
- if (!this .getBrowser () .getBrowserOptions () .getCache () || !this .getCache ())
1026
- this .URL .searchParams .set ("_", Date .now ());
1027
-
1028
- this .image .attr ("src", this .URL .href);
1029
- },
1030
- setError: function ()
1031
- {
1032
- if (this .URL .protocol !== "data:")
1033
- console .warn ("Error loading image:", this .URL .href);
1034
-
1035
- this .loadNext ();
1036
- },
1037
- setImage: function ()
1038
- {
1039
- if (DEBUG)
1040
- {
1041
- if (this .URL .protocol !== "data:")
1042
- console .info ("Done loading image cube map texture:", this .URL .href);
1043
- }
1044
-
1045
- try
1046
- {
1047
- const
1048
- image = this .image [0],
1049
- canvas = this .canvas [0],
1050
- cx = canvas .getContext ("2d");
1051
-
1052
- let
1053
- width = image .width,
1054
- height = image .height,
1055
- width1_4 = Math .floor (width / 4),
1056
- height1_3 = Math .floor (height / 3);
1057
-
1058
- // Scale image.
1059
-
1060
- if (! Algorithm .isPowerOfTwo (width1_4) || ! Algorithm .isPowerOfTwo (height1_3) || width1_4 * 4 !== width || height1_3 * 3 !== height)
1061
- {
1062
- width1_4 = Algorithm .nextPowerOfTwo (width1_4);
1063
- height1_3 = Algorithm .nextPowerOfTwo (height1_3);
1064
- width = width1_4 * 4;
1065
- height = height1_3 * 3;
1066
-
1067
- canvas .width = width;
1068
- canvas .height = height;
1069
-
1070
- cx .drawImage (image, 0, 0, image .width, image .height, 0, 0, width, height);
1071
- }
1072
- else
1073
- {
1074
- canvas .width = width;
1075
- canvas .height = height;
1076
-
1077
- cx .drawImage (image, 0, 0);
1078
- }
1079
-
1080
- // Extract images.
1081
-
1082
- const gl = this .getBrowser () .getContext ();
1083
-
1084
- let opaque = true;
1085
-
1086
- gl .bindTexture (this .getTarget (), this .getTexture ());
1087
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
1088
-
1089
- for (let i = 0; i < 6; ++ i)
1090
- {
1091
- const data = cx .getImageData (offsets [i] .x * width1_4, offsets [i] .y * height1_3, width1_4, height1_3) .data;
1092
-
1093
- // Determine image alpha.
1094
-
1095
- if (opaque)
1096
- {
1097
- for (let a = 3; a < data .length; a += 4)
1098
- {
1099
- if (data [a] !== 255)
1100
- {
1101
- opaque = false;
1102
- break;
1103
- }
1104
- }
1105
- }
1106
-
1107
- // Transfer image.
1108
-
1109
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width1_4, height1_3, false, gl .RGBA, gl .UNSIGNED_BYTE, new Uint8Array (data));
1110
- }
1111
-
1112
- this .updateTextureProperties ();
1113
-
1114
- // Update transparent field.
1115
-
1116
- this .setTransparent (! opaque);
1117
-
1118
- // Update load state.
1119
-
1120
- this .setLoadState (X3DConstants .COMPLETE_STATE);
1121
- }
1122
- catch (error)
1123
- {
1124
- // Catch security error from cross origin requests.
1125
- console .log (error .message);
1126
- this .setError ();
1127
- }
1128
- },
1129
- });
1130
-
1131
- return ImageCubeMapTexture;
931
+ const offsets = [
932
+ new Vector2 (1, 1), // Front
933
+ new Vector2 (3, 1), // Back
934
+ new Vector2 (0, 1), // Left
935
+ new Vector2 (2, 1), // Right
936
+ new Vector2 (1, 0), // Bottom, must be exchanged with top
937
+ new Vector2 (1, 2), // Top, must be exchanged with bottom
938
+ ];
939
+
940
+ function ImageCubeMapTexture (executionContext)
941
+ {
942
+ X3DEnvironmentTextureNode .call (this, executionContext);
943
+ X3DUrlObject .call (this, executionContext);
944
+
945
+ this .addType (X3DConstants .ImageCubeMapTexture);
946
+
947
+ this .urlStack = new Fields .MFString ();
948
+ }
949
+
950
+ ImageCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
951
+ X3DUrlObject .prototype,
952
+ {
953
+ constructor: ImageCubeMapTexture,
954
+ [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
955
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
956
+ new X3DFieldDefinition (X3DConstants .inputOutput, "description", new Fields .SFString ()),
957
+ new X3DFieldDefinition (X3DConstants .inputOutput, "load", new Fields .SFBool (true)),
958
+ new X3DFieldDefinition (X3DConstants .inputOutput, "url", new Fields .MFString ()),
959
+ new X3DFieldDefinition (X3DConstants .inputOutput, "autoRefresh", new Fields .SFTime ()),
960
+ new X3DFieldDefinition (X3DConstants .inputOutput, "autoRefreshTimeLimit", new Fields .SFTime (3600)),
961
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "textureProperties", new Fields .SFNode ()),
962
+ ]),
963
+ getTypeName: function ()
964
+ {
965
+ return "ImageCubeMapTexture";
966
+ },
967
+ getComponentName: function ()
968
+ {
969
+ return "CubeMapTexturing";
970
+ },
971
+ getContainerField: function ()
972
+ {
973
+ return "texture";
974
+ },
975
+ initialize: function ()
976
+ {
977
+ X3DEnvironmentTextureNode .prototype .initialize .call (this);
978
+ X3DUrlObject .prototype .initialize .call (this);
979
+
980
+ // Upload default data.
981
+
982
+ const gl = this .getBrowser () .getContext ();
983
+
984
+ gl .bindTexture (this .getTarget (), this .getTexture ());
985
+
986
+ for (let i = 0; i < 6; ++ i)
987
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
988
+
989
+ // Initialize.
990
+
991
+ this .canvas = $("<canvas></canvas>");
992
+
993
+ this .image = $("<img></img>");
994
+ this .image .on ("load", this .setImage .bind (this));
995
+ this .image .on ("error", this .setError .bind (this));
996
+ this .image .bind ("abort", this .setError .bind (this));
997
+
998
+ this .image [0] .crossOrigin = "Anonymous";
999
+
1000
+ this .requestImmediateLoad ();
1001
+ },
1002
+ unloadNow: function ()
1003
+ {
1004
+ this .clearTexture ();
1005
+ },
1006
+ loadNow: function ()
1007
+ {
1008
+ this .urlStack .setValue (this ._url);
1009
+ this .loadNext ();
1010
+ },
1011
+ loadNext: function ()
1012
+ {
1013
+ if (this .urlStack .length === 0)
1014
+ {
1015
+ this .clearTexture ();
1016
+ this .setLoadState (X3DConstants .FAILED_STATE);
1017
+ return;
1018
+ }
1019
+
1020
+ // Get URL.
1021
+
1022
+ this .URL = new URL (this .urlStack .shift (), this .getExecutionContext () .getWorldURL ());
1023
+
1024
+ if (this .URL .protocol !== "data:")
1025
+ {
1026
+ if (!this .getBrowser () .getBrowserOptions () .getCache () || !this .getCache ())
1027
+ this .URL .searchParams .set ("_", Date .now ());
1028
+ }
1029
+
1030
+ this .image .attr ("src", this .URL .href);
1031
+ },
1032
+ setError: function ()
1033
+ {
1034
+ if (this .URL .protocol !== "data:")
1035
+ console .warn ("Error loading image:", decodeURI (this .URL .href));
1036
+
1037
+ this .loadNext ();
1038
+ },
1039
+ setImage: function ()
1040
+ {
1041
+ if (DEBUG)
1042
+ {
1043
+ if (this .URL .protocol !== "data:")
1044
+ console .info ("Done loading image cube map texture:", decodeURI (this .URL .href));
1045
+ }
1046
+
1047
+ try
1048
+ {
1049
+ const
1050
+ image = this .image [0],
1051
+ canvas = this .canvas [0],
1052
+ cx = canvas .getContext ("2d");
1053
+
1054
+ let
1055
+ width = image .width,
1056
+ height = image .height,
1057
+ width1_4 = Math .floor (width / 4),
1058
+ height1_3 = Math .floor (height / 3);
1059
+
1060
+ // Scale image.
1061
+
1062
+ if (! Algorithm .isPowerOfTwo (width1_4) || ! Algorithm .isPowerOfTwo (height1_3) || width1_4 * 4 !== width || height1_3 * 3 !== height)
1063
+ {
1064
+ width1_4 = Algorithm .nextPowerOfTwo (width1_4);
1065
+ height1_3 = Algorithm .nextPowerOfTwo (height1_3);
1066
+ width = width1_4 * 4;
1067
+ height = height1_3 * 3;
1068
+
1069
+ canvas .width = width;
1070
+ canvas .height = height;
1071
+
1072
+ cx .drawImage (image, 0, 0, image .width, image .height, 0, 0, width, height);
1073
+ }
1074
+ else
1075
+ {
1076
+ canvas .width = width;
1077
+ canvas .height = height;
1078
+
1079
+ cx .drawImage (image, 0, 0);
1080
+ }
1081
+
1082
+ // Extract images.
1083
+
1084
+ const gl = this .getBrowser () .getContext ();
1085
+
1086
+ let opaque = true;
1087
+
1088
+ gl .bindTexture (this .getTarget (), this .getTexture ());
1089
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
1090
+
1091
+ for (let i = 0; i < 6; ++ i)
1092
+ {
1093
+ const data = cx .getImageData (offsets [i] .x * width1_4, offsets [i] .y * height1_3, width1_4, height1_3) .data;
1094
+
1095
+ // Determine image alpha.
1096
+
1097
+ if (opaque)
1098
+ {
1099
+ for (let a = 3; a < data .length; a += 4)
1100
+ {
1101
+ if (data [a] !== 255)
1102
+ {
1103
+ opaque = false;
1104
+ break;
1105
+ }
1106
+ }
1107
+ }
1108
+
1109
+ // Transfer image.
1110
+
1111
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width1_4, height1_3, false, gl .RGBA, gl .UNSIGNED_BYTE, new Uint8Array (data .buffer));
1112
+ }
1113
+
1114
+ this .updateTextureProperties ();
1115
+
1116
+ // Update transparent field.
1117
+
1118
+ this .setTransparent (! opaque);
1119
+
1120
+ // Update load state.
1121
+
1122
+ this .setLoadState (X3DConstants .COMPLETE_STATE);
1123
+ }
1124
+ catch (error)
1125
+ {
1126
+ // Catch security error from cross origin requests.
1127
+ console .log (error .message);
1128
+ this .setError ();
1129
+ }
1130
+ },
1131
+ });
1132
+
1133
+ return ImageCubeMapTexture;
1132
1134
  });
1133
1135
 
1134
1136
  /*******************************************************************************
@@ -1180,11 +1182,11 @@ function ($,
1180
1182
 
1181
1183
 
1182
1184
  define (require .getComponentUrl ("cube-map-texturing"), [
1183
- "x_ite/Components",
1184
- "x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture",
1185
- "x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture",
1186
- "x_ite/Components/CubeMapTexturing/ImageCubeMapTexture",
1187
- "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
1185
+ "x_ite/Components",
1186
+ "x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture",
1187
+ "x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture",
1188
+ "x_ite/Components/CubeMapTexturing/ImageCubeMapTexture",
1189
+ "x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode",
1188
1190
  ],
1189
1191
  function (Components,
1190
1192
  ComposedCubeMapTexture,
@@ -1194,21 +1196,20 @@ function (Components,
1194
1196
  {
1195
1197
  "use strict";
1196
1198
 
1197
- Components .addComponent ({
1198
- name: "CubeMapTexturing",
1199
- types:
1200
- {
1201
- ComposedCubeMapTexture: ComposedCubeMapTexture,
1202
- GeneratedCubeMapTexture: GeneratedCubeMapTexture,
1203
- ImageCubeMapTexture: ImageCubeMapTexture,
1204
- },
1205
- abstractTypes:
1206
- {
1207
- X3DEnvironmentTextureNode: X3DEnvironmentTextureNode,
1208
- },
1209
- });
1199
+ Components .addComponent ({
1200
+ name: "CubeMapTexturing",
1201
+ types:
1202
+ {
1203
+ ComposedCubeMapTexture: ComposedCubeMapTexture,
1204
+ GeneratedCubeMapTexture: GeneratedCubeMapTexture,
1205
+ ImageCubeMapTexture: ImageCubeMapTexture,
1206
+ },
1207
+ abstractTypes:
1208
+ {
1209
+ X3DEnvironmentTextureNode: X3DEnvironmentTextureNode,
1210
+ },
1211
+ });
1210
1212
  });
1211
1213
 
1212
1214
 
1213
-
1214
1215
  })();