x_ite 5.0.3 → 6.1.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 (385) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +25 -1
  3. package/Makefile +36 -28
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/examples-and-tests.pl +75 -0
  7. package/build/bin/tests-menu.pl +57 -0
  8. package/build/bin/version.pl +7 -4
  9. package/build/parts/default.start.frag.js +3 -2
  10. package/dist/assets/components/annotation.js +3 -2
  11. package/dist/assets/components/annotation.min.js +1 -1
  12. package/dist/assets/components/cad-geometry.js +3 -2
  13. package/dist/assets/components/cad-geometry.min.js +1 -1
  14. package/dist/assets/components/cube-map-texturing.js +8 -20
  15. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  16. package/dist/assets/components/dis.js +3 -2
  17. package/dist/assets/components/dis.min.js +1 -1
  18. package/dist/assets/components/event-utilities.js +4 -3
  19. package/dist/assets/components/event-utilities.min.js +1 -1
  20. package/dist/assets/components/geometry2d.js +38 -52
  21. package/dist/assets/components/geometry2d.min.js +1 -1
  22. package/dist/assets/components/geospatial.js +34 -1686
  23. package/dist/assets/components/geospatial.min.js +1 -1
  24. package/dist/assets/components/h-anim.js +71 -77
  25. package/dist/assets/components/h-anim.min.js +1 -1
  26. package/dist/assets/components/key-device-sensor.js +4 -3
  27. package/dist/assets/components/key-device-sensor.min.js +1 -1
  28. package/dist/assets/components/layout.js +101 -173
  29. package/dist/assets/components/layout.min.js +1 -1
  30. package/dist/assets/components/nurbs.js +3 -2
  31. package/dist/assets/components/nurbs.min.js +1 -1
  32. package/dist/assets/components/particle-systems.js +1926 -1669
  33. package/dist/assets/components/particle-systems.min.js +1 -1
  34. package/dist/assets/components/picking.js +34 -41
  35. package/dist/assets/components/picking.min.js +1 -1
  36. package/dist/assets/components/projective-texture-mapping.js +73 -86
  37. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  38. package/dist/assets/components/rigid-body-physics.js +37 -57
  39. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  40. package/dist/assets/components/scripting.js +3 -2
  41. package/dist/assets/components/scripting.min.js +1 -1
  42. package/dist/assets/components/texturing-3d.js +27 -33
  43. package/dist/assets/components/texturing-3d.min.js +3 -3
  44. package/dist/assets/components/volume-rendering.js +12 -11
  45. package/dist/assets/components/volume-rendering.min.js +1 -1
  46. package/dist/assets/components/x_ite.js +3 -2
  47. package/dist/assets/components/x_ite.min.js +1 -1
  48. package/dist/assets/images/Shading.png +0 -0
  49. package/dist/assets/linetype/1.png +0 -0
  50. package/dist/assets/linetype/10.png +0 -0
  51. package/dist/assets/linetype/11.png +0 -0
  52. package/dist/assets/linetype/12.png +0 -0
  53. package/dist/assets/linetype/13.png +0 -0
  54. package/dist/assets/linetype/14.png +0 -0
  55. package/dist/assets/linetype/15.png +0 -0
  56. package/dist/assets/linetype/16.png +0 -0
  57. package/dist/assets/linetype/2.png +0 -0
  58. package/dist/assets/linetype/3.png +0 -0
  59. package/dist/assets/linetype/4.png +0 -0
  60. package/dist/assets/linetype/5.png +0 -0
  61. package/dist/assets/linetype/6.png +0 -0
  62. package/dist/assets/linetype/7.png +0 -0
  63. package/dist/assets/linetype/8.png +0 -0
  64. package/dist/assets/linetype/9.png +0 -0
  65. package/dist/assets/shaders/webgl1/Gouraud.vs +1 -1
  66. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  67. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  68. package/dist/assets/shaders/webgl1/PBR.fs +1 -1
  69. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  70. package/dist/assets/shaders/webgl1/Phong.fs +1 -1
  71. package/dist/assets/shaders/webgl1/Point.vs +1 -1
  72. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Gouraud.vs +32 -4
  74. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  75. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  76. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  77. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  78. package/dist/assets/shaders/webgl2/PBR.fs +1 -1
  79. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  80. package/dist/assets/shaders/webgl2/Phong.fs +1 -1
  81. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  82. package/dist/assets/shaders/webgl2/Point.vs +30 -2
  83. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  84. package/dist/example.html +6 -6
  85. package/dist/x_ite.css +199 -224
  86. package/dist/x_ite.js +16335 -15917
  87. package/dist/x_ite.min.js +17 -17
  88. package/dist/x_ite.zip +0 -0
  89. package/docs/404.md +6 -0
  90. package/docs/Accessing-the-External-Browser.md +21 -15
  91. package/docs/Browser-Support.md +6 -0
  92. package/docs/Custom-Shaders.md +18 -25
  93. package/docs/Features.md +11 -5
  94. package/docs/Gemfile +44 -0
  95. package/docs/Gemfile.lock +122 -0
  96. package/docs/Glossary.md +6 -0
  97. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  98. package/docs/Supported-Nodes.md +9 -1
  99. package/docs/What's-New.md +93 -39
  100. package/docs/XHTML-DOM-Integration.md +6 -0
  101. package/docs/_config.yml +2 -2
  102. package/docs/assets/css/main.scss +26 -0
  103. package/docs/index.md +42 -50
  104. package/docs/reference/Browser-Services.md +9 -3
  105. package/docs/reference/Constants-Services.md +6 -0
  106. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +12 -6
  107. package/docs/reference/Field-Services-and-Objects.md +105 -1
  108. package/docs/reference/Prototype-Services.md +11 -0
  109. package/docs/reference/Route-Services.md +9 -0
  110. package/docs/reference/Scene-Services.md +17 -2
  111. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  112. package/docs/tutorials/Adding-backgrounds.md +6 -0
  113. package/docs/tutorials/Adding-fog.md +6 -0
  114. package/docs/tutorials/Adding-sound.md +6 -0
  115. package/docs/tutorials/Animating-transforms.md +6 -0
  116. package/docs/tutorials/Basic-Nodes.md +6 -0
  117. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  118. package/docs/tutorials/Building-elevation-grids.md +6 -0
  119. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  120. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  121. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  122. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  123. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  124. package/docs/tutorials/Controlling-detail.md +6 -0
  125. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  126. package/docs/tutorials/Controlling-navigation.md +6 -0
  127. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  128. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  129. package/docs/tutorials/Creating-new-node-types.md +6 -0
  130. package/docs/tutorials/Grouping-nodes.md +6 -0
  131. package/docs/tutorials/Hello,-World!.md +6 -0
  132. package/docs/tutorials/Improving-Performance.md +6 -0
  133. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  134. package/docs/tutorials/Introducing-X3D.md +6 -0
  135. package/docs/tutorials/Introducing-animation.md +6 -0
  136. package/docs/tutorials/Introducing-script-use.md +6 -0
  137. package/docs/tutorials/Lighting-your-world.md +6 -0
  138. package/docs/tutorials/Mapping-textures.md +6 -0
  139. package/docs/tutorials/Naming-nodes.md +6 -0
  140. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  141. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  142. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  143. package/docs/tutorials/Transforming-Shapes.md +6 -0
  144. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  145. package/docs/tutorials/index.md +42 -36
  146. package/package.json +6 -7
  147. package/src/assets/components/geometry2d.js +1 -1
  148. package/src/assets/components/key-device-sensor.js +1 -1
  149. package/src/assets/components/layout.js +1 -1
  150. package/src/assets/components/particle-systems.js +1 -1
  151. package/src/assets/components/volume-rendering.js +1 -1
  152. package/src/assets/images/Shading.png +0 -0
  153. package/src/assets/linetype/1.png +0 -0
  154. package/src/assets/linetype/10.png +0 -0
  155. package/src/assets/linetype/11.png +0 -0
  156. package/src/assets/linetype/12.png +0 -0
  157. package/src/assets/linetype/13.png +0 -0
  158. package/src/assets/linetype/14.png +0 -0
  159. package/src/assets/linetype/15.png +0 -0
  160. package/src/assets/linetype/16.png +0 -0
  161. package/src/assets/linetype/2.png +0 -0
  162. package/src/assets/linetype/3.png +0 -0
  163. package/src/assets/linetype/4.png +0 -0
  164. package/src/assets/linetype/5.png +0 -0
  165. package/src/assets/linetype/6.png +0 -0
  166. package/src/assets/linetype/7.png +0 -0
  167. package/src/assets/linetype/8.png +0 -0
  168. package/src/assets/linetype/9.png +0 -0
  169. package/src/assets/shaders/Types.glsl +1 -9
  170. package/src/assets/shaders/webgl1/Gouraud.fs +1 -1
  171. package/src/assets/shaders/webgl1/Gouraud.vs +2 -3
  172. package/src/assets/shaders/webgl1/Line.fs +3 -28
  173. package/src/assets/shaders/webgl1/Line.vs +6 -20
  174. package/src/assets/shaders/webgl1/PBR.fs +6 -6
  175. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  176. package/src/assets/shaders/webgl1/Phong.fs +10 -10
  177. package/src/assets/shaders/webgl1/Point.vs +2 -2
  178. package/src/assets/shaders/webgl1/Unlit.fs +4 -4
  179. package/src/assets/shaders/webgl1/include/Normal.glsl +1 -1
  180. package/src/assets/shaders/webgl1/include/Texture.glsl +3 -8
  181. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  182. package/src/assets/shaders/webgl2/Gouraud.fs +1 -1
  183. package/src/assets/shaders/webgl2/Gouraud.vs +8 -6
  184. package/src/assets/shaders/webgl2/Line.fs +11 -17
  185. package/src/assets/shaders/webgl2/Line.vs +17 -21
  186. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  187. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  188. package/src/assets/shaders/webgl2/PBR.fs +6 -6
  189. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  190. package/src/assets/shaders/webgl2/Phong.fs +11 -11
  191. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  192. package/src/assets/shaders/webgl2/Point.vs +5 -4
  193. package/src/assets/shaders/webgl2/Unlit.fs +5 -5
  194. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  195. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  196. package/src/assets/shaders/webgl2/include/Normal.glsl +1 -1
  197. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  198. package/src/assets/shaders/webgl2/include/Texture.glsl +3 -3
  199. package/src/example.html +6 -6
  200. package/src/examples.js +5 -4
  201. package/src/standard/Math/Algorithm.js +12 -28
  202. package/src/standard/Math/Geometry/Line2.js +163 -0
  203. package/src/standard/Math/Geometry/Line3.js +3 -5
  204. package/src/standard/Math/Geometry/Plane3.js +0 -2
  205. package/src/standard/Math/Geometry/Triangle3.js +1 -1
  206. package/src/standard/Math/Geometry/ViewVolume.js +121 -103
  207. package/src/standard/Math/Numbers/Color3.js +6 -0
  208. package/src/standard/Math/Numbers/Color4.js +7 -0
  209. package/src/standard/Math/Numbers/Complex.js +48 -34
  210. package/src/standard/Math/Numbers/Matrix2.js +62 -2
  211. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  212. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  213. package/src/standard/Math/Numbers/Quaternion.js +12 -5
  214. package/src/standard/Math/Numbers/Rotation4.js +8 -1
  215. package/src/standard/Math/Numbers/Vector2.js +42 -9
  216. package/src/standard/Math/Numbers/Vector3.js +50 -14
  217. package/src/standard/Math/Numbers/Vector4.js +48 -11
  218. package/src/standard/Math/Utility/BVH.js +45 -17
  219. package/src/tests.js +68 -66
  220. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  221. package/src/x_ite/Base/X3DField.js +1 -1
  222. package/src/x_ite/Browser/Core/BrowserOptions.js +24 -143
  223. package/src/x_ite/Browser/Core/BrowserTimings.js +6 -4
  224. package/src/x_ite/Browser/Core/Context.js +185 -0
  225. package/src/x_ite/Browser/Core/ContextMenu.js +398 -211
  226. package/src/x_ite/Browser/Core/Notification.js +1 -0
  227. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  228. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +1 -1
  229. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +1 -0
  230. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +2 -2
  231. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +41 -2
  232. package/src/x_ite/Browser/Geospatial/Geocentric.js +2 -2
  233. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +1 -1
  234. package/src/x_ite/Browser/Layout/ScreenText.js +18 -65
  235. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +59 -16
  236. package/src/x_ite/Browser/Navigation/ExamineViewer.js +13 -20
  237. package/src/x_ite/Browser/Navigation/LookAtViewer.js +1 -4
  238. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  239. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +15 -8
  240. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  241. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  242. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  243. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  244. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  245. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  246. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  247. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  248. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +41 -37
  249. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +21 -13
  250. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  251. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  252. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  253. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  254. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  255. package/src/x_ite/Browser/Text/X3DTextGeometry.js +2 -1
  256. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +71 -34
  257. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  258. package/src/x_ite/Browser/Time/X3DTimeContext.js +4 -2
  259. package/src/x_ite/Browser/VERSION.js +1 -1
  260. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  261. package/src/x_ite/Browser/X3DBrowserContext.js +43 -10
  262. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  263. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  264. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  265. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  266. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +1 -2
  267. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  268. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  269. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  270. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  271. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  272. package/src/x_ite/Components/Followers/ColorDamper.js +1 -1
  273. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  274. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  275. package/src/x_ite/Components/Followers/X3DFollowerNode.js +1 -1
  276. package/src/x_ite/Components/Geometry2D/Disk2D.js +30 -46
  277. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  278. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  279. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  280. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  281. package/src/x_ite/Components/Geospatial/GeoLOD.js +1 -1
  282. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  283. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  284. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  285. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +26 -30
  286. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  287. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  288. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  289. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  290. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  291. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  292. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  293. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  294. package/src/x_ite/Components/Layout/ScreenGroup.js +16 -80
  295. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  296. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  297. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  298. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  299. package/src/x_ite/Components/Navigation/LOD.js +2 -2
  300. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +29 -30
  301. package/src/x_ite/Components/Navigation/Viewpoint.js +16 -20
  302. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  303. package/src/x_ite/Components/Networking/Anchor.js +18 -7
  304. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  305. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  306. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  307. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  308. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +463 -882
  309. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  310. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  311. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  312. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  313. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  314. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  315. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  316. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +91 -108
  317. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +56 -59
  318. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +54 -71
  319. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  320. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  321. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  322. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  323. package/src/x_ite/Components/Rendering/Color.js +12 -24
  324. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -25
  325. package/src/x_ite/Components/Rendering/IndexedLineSet.js +26 -4
  326. package/src/x_ite/Components/Rendering/LineSet.js +35 -13
  327. package/src/x_ite/Components/Rendering/PointSet.js +35 -13
  328. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  329. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +331 -387
  330. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +350 -140
  331. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +116 -126
  332. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  333. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  334. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  335. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +8 -11
  336. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -14
  337. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -14
  338. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  339. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +220 -210
  340. package/src/x_ite/Components/Shaders/X3DShaderNode.js +28 -10
  341. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +15 -1
  342. package/src/x_ite/Components/Shape/Appearance.js +37 -4
  343. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  344. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  345. package/src/x_ite/Components/Shape/PointProperties.js +24 -3
  346. package/src/x_ite/Components/Shape/Shape.js +30 -39
  347. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +3 -1
  348. package/src/x_ite/Components/Sound/Sound.js +31 -41
  349. package/src/x_ite/Components/Text/Text.js +6 -20
  350. package/src/x_ite/Components/Texturing/ImageTexture.js +1 -1
  351. package/src/x_ite/Components/Texturing/MovieTexture.js +1 -1
  352. package/src/x_ite/Components/Texturing/PixelTexture.js +2 -2
  353. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -5
  354. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  355. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  356. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  357. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -5
  358. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -5
  359. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  360. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +8 -8
  361. package/src/x_ite/Components.js +2 -2
  362. package/src/x_ite/Fallback.js +9 -3
  363. package/src/x_ite/Fields/SFColor.js +4 -0
  364. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  365. package/src/x_ite/Fields/SFImage.js +2 -11
  366. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  367. package/src/x_ite/Fields/SFRotation.js +4 -0
  368. package/src/x_ite/Fields/SFString.js +4 -0
  369. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +22 -2
  370. package/src/x_ite/Parser/XMLParser.js +1 -1
  371. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  372. package/src/x_ite/Rendering/VertexArray.js +103 -0
  373. package/src/x_ite/Rendering/X3DRenderObject.js +127 -148
  374. package/src/x_ite/X3D.js +32 -26
  375. package/src/x_ite.config.js +0 -5
  376. package/src/x_ite.css +216 -175
  377. package/src/x_ite.html +15 -10
  378. package/src/x_ite.js +49 -1
  379. package/x_ite.min.html +15 -10
  380. package/dist/assets/hatching/0.png +0 -0
  381. package/dist/assets/linetype/0.png +0 -0
  382. package/src/assets/hatching/0.png +0 -0
  383. package/src/assets/linetype/0.png +0 -0
  384. package/src/spinner.css +0 -67
  385. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -53,6 +53,7 @@ define ([
53
53
  "x_ite/Base/FieldDefinitionArray",
54
54
  "x_ite/Components/Rendering/X3DGeometryNode",
55
55
  "x_ite/Components/Rendering/X3DLineGeometryNode",
56
+ "x_ite/Components/Rendering/X3DPointGeometryNode",
56
57
  "x_ite/Base/X3DConstants",
57
58
  ],
58
59
  function (Fields,
@@ -60,6 +61,7 @@ function (Fields,
60
61
  FieldDefinitionArray,
61
62
  X3DGeometryNode,
62
63
  X3DLineGeometryNode,
64
+ X3DPointGeometryNode,
63
65
  X3DConstants)
64
66
  {
65
67
  "use strict";
@@ -75,7 +77,6 @@ function (Fields,
75
77
  }
76
78
 
77
79
  Disk2D .prototype = Object .assign (Object .create (X3DGeometryNode .prototype),
78
- //X3DLineGeometryNode .prototype, // Considered X3DLineGeometryNode.
79
80
  {
80
81
  constructor: Disk2D,
81
82
  [Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions")]: new FieldDefinitionArray ([
@@ -112,7 +113,9 @@ function (Fields,
112
113
  build: function ()
113
114
  {
114
115
  const
115
- options = this .getBrowser () .getDisk2DOptions (),
116
+ browser = this .getBrowser (),
117
+ gl = browser .getContext (),
118
+ options = browser .getDisk2DOptions (),
116
119
  innerRadius = Math .min (Math .abs (this ._innerRadius .getValue ()), Math .abs (this ._outerRadius .getValue ())),
117
120
  outerRadius = Math .max (Math .abs (this ._innerRadius .getValue ()), Math .abs (this ._outerRadius .getValue ()));
118
121
 
@@ -124,8 +127,15 @@ function (Fields,
124
127
 
125
128
  if (outerRadius === 0)
126
129
  {
127
- // vertexArray .push (0, 0, 0, 1);
128
- // this .setGeometryType (0);
130
+ vertexArray .push (0, 0, 0, 1);
131
+
132
+ this .getMin () .set (0, 0, 0);
133
+ this .getMax () .set (0, 0, 0);
134
+
135
+ this .setGeometryType (0);
136
+ this .setPrimitiveMode (gl .POINTS);
137
+ this .setTransparent (true);
138
+ this .setBase (X3DPointGeometryNode);
129
139
  return;
130
140
  }
131
141
 
@@ -147,6 +157,9 @@ function (Fields,
147
157
  this .getMax () .set ( outerRadius, outerRadius, 0);
148
158
 
149
159
  this .setGeometryType (1);
160
+ this .setPrimitiveMode (gl .LINES);
161
+ this .setTransparent (false);
162
+ this .setBase (X3DLineGeometryNode);
150
163
  return;
151
164
  }
152
165
 
@@ -175,7 +188,10 @@ function (Fields,
175
188
  this .getMax () .set ( outerRadius, outerRadius, 0);
176
189
 
177
190
  this .setGeometryType (2);
191
+ this .setPrimitiveMode (gl .TRIANGLES);
192
+ this .setTransparent (false);
178
193
  this .setSolid (this ._solid .getValue ());
194
+ this .setBase (X3DGeometryNode);
179
195
  return;
180
196
  }
181
197
 
@@ -218,52 +234,20 @@ function (Fields,
218
234
  this .getMax () .set ( outerRadius, outerRadius, 0);
219
235
 
220
236
  this .setGeometryType (2);
237
+ this .setPrimitiveMode (gl .TRIANGLES);
238
+ this .setTransparent (false);
221
239
  this .setSolid (this ._solid .getValue ());
240
+ this .setBase (X3DGeometryNode);
222
241
  },
223
- intersectsLine: function (line, clipPlanes, modelViewMatrix, intersections)
224
- {
225
- if (this .getGeometryType () < 2)
226
- {
227
- return X3DLineGeometryNode .prototype .intersectsLine .call (this, line, clipPlanes, modelViewMatrix, intersections);
228
- }
229
- else
230
- {
231
- return X3DGeometryNode .prototype .intersectsLine .call (this, line, clipPlanes, modelViewMatrix, intersections);
232
- }
233
- },
234
- intersectsBox: function (box, clipPlanes, modelViewMatrix)
242
+ setBase: function (base)
235
243
  {
236
- if (this .getGeometryType () < 2)
237
- {
238
- return X3DLineGeometryNode .prototype .intersectsBox .call (this, box, clipPlanes, modelViewMatrix);
239
- }
240
- else
241
- {
242
- return X3DGeometryNode .prototype .intersectsBox .call (this, box, clipPlanes, modelViewMatrix);
243
- }
244
+ this .intersectsLine = base .prototype .intersectsLine;
245
+ this .intersectsBox = base .prototype .intersectsBox;
246
+ this .display = base .prototype .display;
247
+ this .displayParticles = base .prototype .displayParticles;
244
248
  },
245
- display: function (gl, context)
246
- {
247
- if (this .getGeometryType () < 2)
248
- {
249
- return X3DLineGeometryNode .prototype .display .call (this, gl, context);
250
- }
251
- else
252
- {
253
- return X3DGeometryNode .prototype .display .call (this, gl, context);
254
- }
255
- },
256
- displayParticles: function (gl, context, particles, numParticles)
257
- {
258
- if (this .getGeometryType () < 2)
259
- {
260
- return X3DLineGeometryNode .prototype .displayParticles .call (this, gl, context, particles, numParticles);
261
- }
262
- else
263
- {
264
- return X3DGeometryNode .prototype .displayParticles .call (this, gl, context, particles, numParticles);
265
- }
266
- }
249
+ setRenderFunctions: function ()
250
+ { },
267
251
  });
268
252
 
269
253
  return Disk2D;
@@ -131,7 +131,7 @@ function (Fields,
131
131
  texCoordArray .shrinkToFit ();
132
132
  }
133
133
 
134
- return texCoordArray;
134
+ this .getMultiTexCoords () .push (texCoordArray);
135
135
  },
136
136
  });
137
137
 
@@ -144,7 +144,10 @@ function (Fields,
144
144
  const attribNodes = this .getAttrib ();
145
145
 
146
146
  for (const attribNode of attribNodes)
147
+ {
147
148
  attribNode .removeInterest ("requestRebuild", this);
149
+ attribNode ._attribute_changed .removeInterest ("updateVertexArrays", this);
150
+ }
148
151
 
149
152
  attribNodes .length = 0;
150
153
 
@@ -157,7 +160,12 @@ function (Fields,
157
160
  }
158
161
 
159
162
  for (const attribNode of attribNodes)
163
+ {
160
164
  attribNode .addInterest ("requestRebuild", this);
165
+ attribNode ._attribute_changed .addInterest ("updateVertexArrays", this);
166
+ }
167
+
168
+ this .updateVertexArrays ();
161
169
  },
162
170
  set_fogCoord__: function ()
163
171
  {
@@ -350,8 +358,8 @@ function (Fields,
350
358
  normalPerVertex = this ._normalPerVertex .getValue (),
351
359
  coordIndex = this .createCoordIndex (),
352
360
  attribNodes = this .getAttrib (),
353
- numAttrib = attribNodes .length,
354
- attribs = this .getAttribs (),
361
+ numAttribNodes = attribNodes .length,
362
+ attribArrays = this .getAttribs (),
355
363
  fogCoordNode = this .fogCoordNode,
356
364
  colorNode = this .getColor (),
357
365
  texCoordNode = this .getTexCoord (),
@@ -388,8 +396,8 @@ function (Fields,
388
396
  index = coordIndex [c],
389
397
  point = points [index];
390
398
 
391
- for (let a = 0; a < numAttrib; ++ a)
392
- attribNodes [a] .addValue (index, attribs [a]);
399
+ for (let a = 0; a < numAttribNodes; ++ a)
400
+ attribNodes [a] .addValue (index, attribArrays [a]);
393
401
 
394
402
  if (fogCoordNode)
395
403
  fogCoordNode .addDepth (index, fogDepthArray);
@@ -177,8 +177,8 @@ function (Fields,
177
177
  normalPerVertex = this ._normalPerVertex .getValue (),
178
178
  coordIndex = this ._coordIndex .getValue (),
179
179
  attribNodes = this .getAttrib (),
180
- numAttrib = attribNodes .length,
181
- attribs = this .getAttribs (),
180
+ numAttribNodes = attribNodes .length,
181
+ attribArrays = this .getAttribs (),
182
182
  fogCoordNode = this .getFogCoord (),
183
183
  colorNode = this .getColor (),
184
184
  texCoordNode = this .getTexCoord (),
@@ -203,8 +203,8 @@ function (Fields,
203
203
  {
204
204
  const index = coordIndex [i];
205
205
 
206
- for (let a = 0; a < numAttrib; ++ a)
207
- attribNodes [a] .addValue (index, attribs [a]);
206
+ for (let a = 0; a < numAttribNodes; ++ a)
207
+ attribNodes [a] .addValue (index, attribArrays [a]);
208
208
 
209
209
  if (fogCoordNode)
210
210
  fogCoordNode .addDepth (index, fogDepthArray);
@@ -102,27 +102,10 @@ function (Fields,
102
102
  {
103
103
  X3DCoordinateNode .prototype .initialize .call (this);
104
104
  X3DGeospatialObject .prototype .initialize .call (this);
105
-
106
- this ._point .addInterest ("set_point__", this);
107
-
108
- this .set_point__ ();
109
- },
110
- set_point__: function ()
111
- {
112
- this .point = this ._point .getValue ();
113
- this .length = this ._point .length;
114
- },
115
- isEmpty: function ()
116
- {
117
- return this .length === 0;
118
- },
119
- getSize: function ()
120
- {
121
- return this .length;
122
105
  },
123
106
  set1Point: (function ()
124
107
  {
125
- var result = new Vector3 (0, 0, 0);
108
+ const result = new Vector3 (0, 0, 0);
126
109
 
127
110
  return function (index, point)
128
111
  {
@@ -131,7 +114,7 @@ function (Fields,
131
114
  })(),
132
115
  get1Point: (function ()
133
116
  {
134
- var p = new Vector3 (0, 0, 0);
117
+ const p = new Vector3 (0, 0, 0);
135
118
 
136
119
  return function (index, result)
137
120
  {
@@ -151,7 +134,7 @@ function (Fields,
151
134
  })(),
152
135
  addPoint: (function ()
153
136
  {
154
- var
137
+ const
155
138
  p = new Vector3 (0, 0, 0),
156
139
  g = new Vector3 (0, 0, 0);
157
140
 
@@ -175,7 +158,7 @@ function (Fields,
175
158
  })(),
176
159
  addPoints: (function ()
177
160
  {
178
- var
161
+ const
179
162
  p = new Vector3 (0, 0, 0),
180
163
  g = new Vector3 (0, 0, 0);
181
164
 
@@ -183,20 +166,20 @@ function (Fields,
183
166
  {
184
167
  const point = this .point;
185
168
 
186
- for (var index = 0, length = this .length * 3; index < length; index += 3)
169
+ for (let index = 0, length = this .length * 3; index < length; index += 3)
187
170
  {
188
171
  this .getCoord (p .set (point [index], point [index + 1], point [index + 2]), g);
189
172
 
190
173
  array .push (g [0], g [1], g [2], 1);
191
174
  }
192
175
 
193
- for (var index = length, length = min * 3; index < length; index += 3)
176
+ for (let index = this .length * 3, length = min * 3; index < length; index += 3)
194
177
  array .push (0, 0, 0, 1);
195
178
  };
196
179
  })(),
197
180
  getNormal: (function ()
198
181
  {
199
- var
182
+ const
200
183
  point1 = new Vector3 (0, 0, 0),
201
184
  point2 = new Vector3 (0, 0, 0),
202
185
  point3 = new Vector3 (0, 0, 0);
@@ -205,7 +188,7 @@ function (Fields,
205
188
  {
206
189
  // The index[1,2,3] cannot be less than 0.
207
190
 
208
- var length = this .length;
191
+ const length = this .length;
209
192
 
210
193
  if (index1 < length && index2 < length && index3 < length)
211
194
  {
@@ -220,7 +203,7 @@ function (Fields,
220
203
  })(),
221
204
  getQuadNormal: (function ()
222
205
  {
223
- var
206
+ const
224
207
  point1 = new Vector3 (0, 0, 0),
225
208
  point2 = new Vector3 (0, 0, 0),
226
209
  point3 = new Vector3 (0, 0, 0),
@@ -230,7 +213,7 @@ function (Fields,
230
213
  {
231
214
  // The index[1,2,3,4] cannot be less than 0.
232
215
 
233
- var length = this .length;
216
+ const length = this .length;
234
217
 
235
218
  if (index1 < length && index2 < length && index3 < length && index4 < length)
236
219
  {
@@ -308,7 +308,7 @@ function (Fields,
308
308
  {
309
309
  modelViewMatrix .translate (this .getCoord (this ._center .getValue (), center));
310
310
 
311
- return modelViewMatrix .origin .abs ();
311
+ return modelViewMatrix .origin .magnitude ();
312
312
  },
313
313
  traverse: function (type, renderObject)
314
314
  {
@@ -133,18 +133,13 @@ function (Fields,
133
133
  },
134
134
  interpolate: function (index0, index1, weight)
135
135
  {
136
- try
137
- {
138
- this .getCoord (this ._keyValue [index0] .getValue (), this .keyValue0);
139
- this .getCoord (this ._keyValue [index1] .getValue (), this .keyValue1);
136
+ this .getCoord (this ._keyValue [index0] .getValue (), this .keyValue0);
137
+ this .getCoord (this ._keyValue [index1] .getValue (), this .keyValue1);
140
138
 
141
- var coord = this .geocentric .slerp (this .keyValue0, this .keyValue1, weight);
139
+ var coord = this .geocentric .slerp (this .keyValue0, this .keyValue1, weight);
142
140
 
143
- this ._geovalue_changed = this .getGeoCoord (coord, this .geovalue);
144
- this ._value_changed = coord;
145
- }
146
- catch (error)
147
- { }
141
+ this ._geovalue_changed = this .getGeoCoord (coord, this .geovalue);
142
+ this ._value_changed = coord;
148
143
  },
149
144
  });
150
145
 
@@ -119,25 +119,18 @@ function (Fields,
119
119
  },
120
120
  set_over__: function (over, hit, modelViewMatrix, projectionMatrix, viewport)
121
121
  {
122
- try
123
- {
124
- X3DTouchSensorNode .prototype .set_over__ .call (this, over, hit, modelViewMatrix, projectionMatrix, viewport);
122
+ X3DTouchSensorNode .prototype .set_over__ .call (this, over, hit, modelViewMatrix, projectionMatrix, viewport);
125
123
 
126
- if (this ._isOver .getValue ())
127
- {
128
- var intersection = hit .intersection;
124
+ if (this ._isOver .getValue ())
125
+ {
126
+ var intersection = hit .intersection;
129
127
 
130
- invModelViewMatrix .assign (modelViewMatrix) .inverse ();
128
+ invModelViewMatrix .assign (modelViewMatrix) .inverse ();
131
129
 
132
- this ._hitTexCoord_changed = intersection .texCoord;
133
- this ._hitNormal_changed = modelViewMatrix .multMatrixDir (intersection .normal .copy ()) .normalize ();
134
- this ._hitPoint_changed = invModelViewMatrix .multVecMatrix (intersection .point .copy ());
135
- this ._hitGeoCoord_changed = this .getGeoCoord (this ._hitPoint_changed .getValue (), geoCoords);
136
- }
137
- }
138
- catch (error)
139
- {
140
- console .error (error);
130
+ this ._hitTexCoord_changed = intersection .texCoord;
131
+ this ._hitNormal_changed = modelViewMatrix .multMatrixDir (intersection .normal .copy ()) .normalize ();
132
+ this ._hitPoint_changed = invModelViewMatrix .multVecMatrix (intersection .point .copy ());
133
+ this ._hitGeoCoord_changed = this .getGeoCoord (this ._hitPoint_changed .getValue (), geoCoords);
141
134
  }
142
135
  },
143
136
  });
@@ -124,26 +124,14 @@ function (Fields,
124
124
  },
125
125
  eventsProcessed: function ()
126
126
  {
127
- try
128
- {
129
- this .setHidden (this ._scale .x === 0 ||
130
- this ._scale .y === 0 ||
131
- this ._scale .z === 0);
127
+ this .getLocationMatrix (this ._geoCenter .getValue (), locationMatrix);
132
128
 
133
- this .getLocationMatrix (this ._geoCenter .getValue (), locationMatrix);
129
+ matrix .set (this ._translation .getValue (),
130
+ this ._rotation .getValue (),
131
+ this ._scale .getValue (),
132
+ this ._scaleOrientation .getValue ());
134
133
 
135
- matrix .set (this ._translation .getValue (),
136
- this ._rotation .getValue (),
137
- this ._scale .getValue (),
138
- this ._scaleOrientation .getValue ());
139
-
140
- this .setMatrix (matrix .multRight (locationMatrix) .multLeft (locationMatrix .inverse ()));
141
- }
142
- catch (error)
143
- {
144
- // Should normally not happen.
145
- this .setHidden (true);
146
- }
134
+ this .setMatrix (matrix .multRight (locationMatrix) .multLeft (locationMatrix .inverse ()));
147
135
  },
148
136
  });
149
137
 
@@ -188,7 +188,7 @@ function (Fields,
188
188
  },
189
189
  setPosition: (function ()
190
190
  {
191
- var geoPosition = new Vector3 (0, 0, 0);
191
+ const geoPosition = new Vector3 (0, 0, 0);
192
192
 
193
193
  return function (value)
194
194
  {
@@ -197,7 +197,7 @@ function (Fields,
197
197
  })(),
198
198
  getPosition: (function ()
199
199
  {
200
- var position = new Vector3 (0, 0, 0);
200
+ const position = new Vector3 (0, 0, 0);
201
201
 
202
202
  return function ()
203
203
  {
@@ -206,7 +206,7 @@ function (Fields,
206
206
  })(),
207
207
  set_position__: (function ()
208
208
  {
209
- var position = new Vector3 (0, 0, 0);
209
+ const position = new Vector3 (0, 0, 0);
210
210
 
211
211
  return function ()
212
212
  {
@@ -217,7 +217,7 @@ function (Fields,
217
217
  })(),
218
218
  setOrientation: (function ()
219
219
  {
220
- var
220
+ const
221
221
  locationMatrix = new Matrix4 (),
222
222
  geoOrientation = new Rotation4 (0, 0, 1, 0);
223
223
 
@@ -225,7 +225,7 @@ function (Fields,
225
225
  {
226
226
  /// Returns the resulting orientation for this viewpoint.
227
227
 
228
- var rotationMatrix = this .getLocationMatrix (this ._position .getValue (), locationMatrix) .submatrix;
228
+ const rotationMatrix = this .getLocationMatrix (this ._position .getValue (), locationMatrix) .submatrix;
229
229
 
230
230
  geoOrientation .setMatrix (rotationMatrix);
231
231
 
@@ -234,7 +234,7 @@ function (Fields,
234
234
  })(),
235
235
  getOrientation: (function ()
236
236
  {
237
- var
237
+ const
238
238
  locationMatrix = new Matrix4 (),
239
239
  orientation = new Rotation4 (0, 0, 1, 0);
240
240
 
@@ -242,7 +242,7 @@ function (Fields,
242
242
  {
243
243
  /// Returns the resulting orientation for this viewpoint.
244
244
 
245
- var rotationMatrix = this .getLocationMatrix (this ._position .getValue (), locationMatrix) .submatrix;
245
+ const rotationMatrix = this .getLocationMatrix (this ._position .getValue (), locationMatrix) .submatrix;
246
246
 
247
247
  orientation .setMatrix (rotationMatrix);
248
248
 
@@ -251,7 +251,7 @@ function (Fields,
251
251
  })(),
252
252
  getCenterOfRotation: (function ()
253
253
  {
254
- var centerOfRotation = new Vector3 (0, 0, 0);
254
+ const centerOfRotation = new Vector3 (0, 0, 0);
255
255
 
256
256
  return function ()
257
257
  {
@@ -260,7 +260,7 @@ function (Fields,
260
260
  })(),
261
261
  getFieldOfView: function ()
262
262
  {
263
- var fov = this ._fieldOfView * this ._fieldOfViewScale;
263
+ const fov = this ._fieldOfView * this ._fieldOfViewScale;
264
264
 
265
265
  return fov > 0 && fov < Math .PI ? fov : Math .PI / 4;
266
266
  },
@@ -270,7 +270,7 @@ function (Fields,
270
270
  },
271
271
  getUpVector: (function ()
272
272
  {
273
- var
273
+ const
274
274
  position = new Vector3 (0, 0, 0),
275
275
  upVector = new Vector3 (0, 0, 0);
276
276
 
@@ -285,34 +285,30 @@ function (Fields,
285
285
  {
286
286
  return (Math .max (this .elevation, 0.0) + 10) / 10 * this ._speedFactor .getValue ();
287
287
  },
288
- getScreenScale: (function ()
288
+ getScreenScale: function (point, viewport, screenScale)
289
289
  {
290
- var screenScale = new Vector3 (0, 0, 0);
290
+ // Returns the screen scale in meter/pixel for on pixel.
291
291
 
292
- return function (point, viewport)
293
- {
294
- // Returns the screen scale in meter/pixel for on pixel.
292
+ const
293
+ width = viewport [2],
294
+ height = viewport [3];
295
295
 
296
- var
297
- width = viewport [2],
298
- height = viewport [3],
299
- size = Math .abs (point .z) * Math .tan (this .getFieldOfView () / 2) * 2;
296
+ let size = Math .abs (point .z) * Math .tan (this .getFieldOfView () / 2) * 2;
300
297
 
301
- if (width > height)
302
- size /= height;
303
- else
304
- size /= width;
298
+ if (width > height)
299
+ size /= height;
300
+ else
301
+ size /= width;
305
302
 
306
- return screenScale .set (size, size, size);
307
- };
308
- })(),
303
+ return screenScale .set (size, size, size);
304
+ },
309
305
  getViewportSize: (function ()
310
306
  {
311
- var viewportSize = new Vector2 (0, 0);
307
+ const viewportSize = new Vector2 (0, 0);
312
308
 
313
309
  return function (viewport, nearValue)
314
310
  {
315
- var
311
+ const
316
312
  width = viewport [2],
317
313
  height = viewport [3],
318
314
  size = nearValue * Math .tan (this .getFieldOfView () / 2) * 2,
@@ -326,7 +322,7 @@ function (Fields,
326
322
  })(),
327
323
  getLookAtDistance: function (bbox)
328
324
  {
329
- return (bbox .size .abs () / 2) / Math .tan (this .getFieldOfView () / 2);
325
+ return (bbox .size .magnitude () / 2) / Math .tan (this .getFieldOfView () / 2);
330
326
  },
331
327
  getProjectionMatrixWithLimits: function (nearValue, farValue, viewport, limit)
332
328
  {
@@ -335,7 +331,7 @@ function (Fields,
335
331
 
336
332
  // Linear interpolate nearValue and farValue
337
333
 
338
- var
334
+ const
339
335
  geoZNear = Math .max (Algorithm .lerp (Math .min (nearValue, 1e4), 1e4, this .elevation / 1e7), 1),
340
336
  geoZFar = Math .max (Algorithm .lerp (1e6, Math .max (farValue, 1e6), this .elevation / 1e7), 1e6);
341
337
 
@@ -130,42 +130,35 @@ function (X3DConstants,
130
130
  },
131
131
  set_originMatrix__: function ()
132
132
  {
133
- try
133
+ if (this .geoOriginNode)
134
134
  {
135
- if (this .geoOriginNode)
136
- {
137
- // Position
138
- var t = this .origin;
135
+ // Position
136
+ var t = this .origin;
139
137
 
140
- // Let's work out the orientation at that location in order
141
- // to maintain a view where +Y is in the direction of gravitional
142
- // up for that region of the planet's surface. This will be the
143
- // value of the rotation matrix for the transform.
138
+ // Let's work out the orientation at that location in order
139
+ // to maintain a view where +Y is in the direction of gravitional
140
+ // up for that region of the planet's surface. This will be the
141
+ // value of the rotation matrix for the transform.
144
142
 
145
- this .elevationFrame .normal (t, y);
143
+ this .elevationFrame .normal (t, y);
146
144
 
147
- x .set (0, 0, 1) .cross (y);
145
+ x .set (0, 0, 1) .cross (y);
148
146
 
149
- // Handle pole cases.
150
- if (x .equals (Vector3 .Zero))
151
- x .set (1, 0, 0);
147
+ // Handle pole cases.
148
+ if (x .equals (Vector3 .Zero))
149
+ x .set (1, 0, 0);
152
150
 
153
- z .assign (x) .cross (y);
151
+ z .assign (x) .cross (y);
154
152
 
155
- x .normalize ();
156
- z .normalize ();
153
+ x .normalize ();
154
+ z .normalize ();
157
155
 
158
- this .originMatrix .set (x .x, x .y, x .z, 0,
159
- y .x, y .y, y .z, 0,
160
- z .x, z .y, z .z, 0,
161
- t .x, t .y, t .z, 1);
156
+ this .originMatrix .set (x .x, x .y, x .z, 0,
157
+ y .x, y .y, y .z, 0,
158
+ z .x, z .y, z .z, 0,
159
+ t .x, t .y, t .z, 1);
162
160
 
163
- this .invOriginMatrix .assign (this .originMatrix) .inverse ();
164
- }
165
- }
166
- catch (error)
167
- {
168
- /// ???
161
+ this .invOriginMatrix .assign (this .originMatrix) .inverse ();
169
162
  }
170
163
  },
171
164
  set_rotateYUp__: function ()
@@ -587,18 +587,18 @@ function (X3DChildNode,
587
587
  {
588
588
  const
589
589
  pointingDeviceSensorNodes = this .pointingDeviceSensorNodes,
590
- clipPlaneNodes = this .clipPlaneNodes;
590
+ clipPlaneNodes = this .clipPlaneNodes,
591
+ sensors = this .sensors;
592
+
593
+ sensors .clear ();
591
594
 
592
595
  if (pointingDeviceSensorNodes .length)
593
596
  {
594
- const sensors = this .sensors;
595
-
596
- sensors .clear ();
597
-
598
- renderObject .getBrowser () .getSensors () .push (sensors);
599
-
600
597
  for (const pointingDeviceSensorNode of pointingDeviceSensorNodes)
601
598
  pointingDeviceSensorNode .push (renderObject, sensors);
599
+
600
+ if (sensors .size)
601
+ renderObject .getBrowser () .getSensors () .push (sensors);
602
602
  }
603
603
 
604
604
  for (const clipPlaneNode of clipPlaneNodes)
@@ -610,7 +610,7 @@ function (X3DChildNode,
610
610
  for (const clipPlaneNode of clipPlaneNodes)
611
611
  clipPlaneNode .pop (renderObject);
612
612
 
613
- if (pointingDeviceSensorNodes .length)
613
+ if (sensors .size)
614
614
  renderObject .getBrowser () .getSensors () .pop ();
615
615
 
616
616
  return;