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
@@ -70,8 +70,9 @@ function (Fields,
70
70
 
71
71
  this .addChildObjects ("activationTime", new Fields .SFTime ());
72
72
 
73
- this .valid = false;
74
- this .selected = 0;
73
+ this .valid = false;
74
+ this .selected = 0;
75
+ this .primitiveModes = new Map ();
75
76
  }
76
77
 
77
78
  X3DShaderNode .prototype = Object .assign (Object .create (X3DAppearanceChildNode .prototype),
@@ -91,26 +92,32 @@ function (Fields,
91
92
  {
92
93
  this ._isValid = this .valid = value;
93
94
  },
94
- getValid: function ()
95
+ isValid: function ()
95
96
  {
96
97
  return this .valid;
97
98
  },
98
99
  setShading: function (shading)
99
100
  {
100
- var gl = this .getBrowser () .getContext ();
101
+ const gl = this .getBrowser () .getContext ();
101
102
 
102
103
  switch (shading)
103
104
  {
104
105
  case Shading .POINT:
105
106
  {
106
- this .primitiveMode = gl .POINTS;
107
- this .wireframe = true;
107
+ this .wireframe = false;
108
+
109
+ this .primitiveModes .set (gl .POINTS, gl .POINTS);
110
+ this .primitiveModes .set (gl .LINES, gl .POINTS);
111
+ this .primitiveModes .set (gl .TRIANGLES, gl .POINTS);
108
112
  break;
109
113
  }
110
114
  case Shading .WIREFRAME:
111
115
  {
112
- this .primitiveMode = gl .LINE_LOOP;
113
- this .wireframe = true;
116
+ this .wireframe = true;
117
+
118
+ this .primitiveModes .set (gl .POINTS, gl .POINTS);
119
+ this .primitiveModes .set (gl .LINES, gl .LINES);
120
+ this .primitiveModes .set (gl .TRIANGLES, gl .LINE_LOOP);
114
121
  break;
115
122
  }
116
123
  default:
@@ -119,12 +126,23 @@ function (Fields,
119
126
  // case Shading .GOURAUD:
120
127
  // case Shading .PHONG:
121
128
 
122
- this .primitiveMode = gl .TRIANGLES;
123
- this .wireframe = false;
129
+ this .wireframe = false;
130
+
131
+ this .primitiveModes .set (gl .POINTS, gl .POINTS);
132
+ this .primitiveModes .set (gl .LINES, gl .LINES);
133
+ this .primitiveModes .set (gl .TRIANGLES, gl .TRIANGLES);
124
134
  break;
125
135
  }
126
136
  }
127
137
  },
138
+ getWireframe: function ()
139
+ {
140
+ return this .wireframe;
141
+ },
142
+ getPrimitiveMode: function (primitiveMode)
143
+ {
144
+ return this .primitiveModes .get (primitiveMode);
145
+ },
128
146
  select: function ()
129
147
  {
130
148
  ++ this .selected;
@@ -48,10 +48,12 @@
48
48
 
49
49
 
50
50
  define ([
51
+ "x_ite/Fields",
51
52
  "x_ite/Components/Rendering/X3DGeometricPropertyNode",
52
53
  "x_ite/Base/X3DConstants",
53
54
  ],
54
- function (X3DGeometricPropertyNode,
55
+ function (Fields,
56
+ X3DGeometricPropertyNode,
55
57
  X3DConstants)
56
58
  {
57
59
  "use strict";
@@ -61,11 +63,23 @@ function (X3DGeometricPropertyNode,
61
63
  X3DGeometricPropertyNode .call (this, executionContext);
62
64
 
63
65
  this .addType (X3DConstants .X3DVertexAttributeNode);
66
+
67
+ this .addChildObjects ("attribute_changed", new Fields .SFTime ());
64
68
  }
65
69
 
66
70
  X3DVertexAttributeNode .prototype = Object .assign (Object .create (X3DGeometricPropertyNode .prototype),
67
71
  {
68
72
  constructor: X3DVertexAttributeNode,
73
+ initialize: function ()
74
+ {
75
+ X3DGeometricPropertyNode .prototype .initialize .call (this);
76
+
77
+ this ._name .addInterest ("set_attribute__", this);
78
+ },
79
+ set_attribute__: function ()
80
+ {
81
+ this ._attribute_changed = this .getBrowser () .getCurrentTime ();
82
+ },
69
83
  });
70
84
 
71
85
  return X3DVertexAttributeNode;
@@ -154,6 +154,42 @@ function (Fields,
154
154
  {
155
155
  return this .alphaMode;
156
156
  },
157
+ getPointProperties: function ()
158
+ {
159
+ return this .stylePropertiesNode [0];
160
+ },
161
+ getLineProperties: function ()
162
+ {
163
+ return this .stylePropertiesNode [1];
164
+ },
165
+ getFillProperties: function ()
166
+ {
167
+ return this .stylePropertiesNode [2];
168
+ },
169
+ getMaterial: function ()
170
+ {
171
+ return this .materialNode;
172
+ },
173
+ getBackMaterial: function ()
174
+ {
175
+ return this .backMaterialNode;
176
+ },
177
+ getTexture: function ()
178
+ {
179
+ return this .textureNode;
180
+ },
181
+ getTextureTransform: function ()
182
+ {
183
+ return this .textureTransformNode;
184
+ },
185
+ getShader: function ()
186
+ {
187
+ return this .shaderNode;
188
+ },
189
+ getBlendMode: function ()
190
+ {
191
+ return this .blendModeNode;
192
+ },
157
193
  set_live__: function ()
158
194
  {
159
195
  if (this .isLive () .getValue ())
@@ -226,10 +262,7 @@ function (Fields,
226
262
  // Depreciated TwoSidedMaterial handling.
227
263
 
228
264
  if (this .materialNode .getTypeName () === "TwoSidedMaterial")
229
- {
230
- console .warn ("TwoSidedMaterial is depreciated, please use Appearance backMaterial.");
231
265
  this .set_backMaterial__ ();
232
- }
233
266
  },
234
267
  set_backMaterial__: function ()
235
268
  {
@@ -243,7 +276,7 @@ function (Fields,
243
276
 
244
277
  // Depreciated TwoSidedMaterial handling.
245
278
 
246
- if (!this .backMaterialNode && this .materialNode .getTypeName () === "TwoSidedMaterial")
279
+ if (! this .backMaterialNode && this .materialNode .getTypeName () === "TwoSidedMaterial")
247
280
  this .backMaterialNode = this .materialNode;
248
281
  },
249
282
  set_texture__: function ()
@@ -104,10 +104,12 @@ function (Fields,
104
104
  this ._filled .addInterest ("set_filled__", this);
105
105
  this ._hatched .addInterest ("set_hatched__", this);
106
106
  this ._hatchColor .addInterest ("set_hatchColor__", this);
107
+ this ._hatchStyle .addInterest ("set_hatchStyle__", this);
107
108
 
108
109
  this .set_filled__ ();
109
110
  this .set_hatched__ ();
110
111
  this .set_hatchColor__ ();
112
+ this .set_hatchStyle__ ();
111
113
  },
112
114
  set_filled__: function ()
113
115
  {
@@ -125,6 +127,15 @@ function (Fields,
125
127
  this .hatchColor [1] = this ._hatchColor [1];
126
128
  this .hatchColor [2] = this ._hatchColor [2];
127
129
  },
130
+ set_hatchStyle__: function ()
131
+ {
132
+ let hatchStyle = this ._hatchStyle .getValue ();
133
+
134
+ if (hatchStyle < 1 || hatchStyle > 19)
135
+ hatchStyle = 1;
136
+
137
+ this .hatchStyle = hatchStyle;
138
+ },
128
139
  setTransparent: function (value)
129
140
  {
130
141
  if (value !== this ._transparent .getValue ())
@@ -145,7 +156,7 @@ function (Fields,
145
156
  {
146
157
  const
147
158
  browser = shaderObject .getBrowser (),
148
- texture = browser .getHatchStyle (this ._hatchStyle .getValue ()),
159
+ texture = browser .getHatchStyleTexture (this .hatchStyle),
149
160
  textureUnit = browser .getTexture2DUnit ();
150
161
 
151
162
  gl .uniform3fv (shaderObject .x3d_FillPropertiesHatchColor, this .hatchColor);
@@ -95,18 +95,50 @@ function (Fields,
95
95
  X3DAppearanceChildNode .prototype .initialize .call (this);
96
96
 
97
97
  this ._applied .addInterest ("set_applied__", this);
98
+ this ._linetype .addInterest ("set_linetype__", this);
98
99
  this ._linewidthScaleFactor .addInterest ("set_linewidthScaleFactor__", this);
99
100
 
100
101
  this .set_applied__ ();
102
+ this .set_linetype__ ();
101
103
  this .set_linewidthScaleFactor__ ();
102
104
  },
105
+ getApplied: function ()
106
+ {
107
+ return this .applied;
108
+ },
109
+ getLinetype: function ()
110
+ {
111
+ return this .linetype;
112
+ },
113
+ getLinewidthScaleFactor: function ()
114
+ {
115
+ return this .linewidthScaleFactor;
116
+ },
117
+ getMustTransformLines: function ()
118
+ {
119
+ return this .mustTransformLines;
120
+ },
103
121
  set_applied__: function ()
104
122
  {
105
123
  this .applied = this ._applied .getValue ();
106
124
  },
125
+ set_linetype__: function ()
126
+ {
127
+ let linetype = this ._linetype .getValue ();
128
+
129
+ if (linetype < 1 || linetype > 16)
130
+ linetype = 1;
131
+
132
+ this .linetype = linetype;
133
+ },
107
134
  set_linewidthScaleFactor__: function ()
108
135
  {
136
+ const
137
+ browser = this .getBrowser (),
138
+ gl = browser .getContext ();
139
+
109
140
  this .linewidthScaleFactor = Math .max (1, this ._linewidthScaleFactor .getValue ());
141
+ this .mustTransformLines = gl .MUST_TRANSFORM_LINES && this .linewidthScaleFactor > 1;
110
142
  },
111
143
  setShaderUniforms: function (gl, shaderObject)
112
144
  {
@@ -114,7 +146,7 @@ function (Fields,
114
146
  {
115
147
  const
116
148
  browser = shaderObject .getBrowser (),
117
- texture = browser .getLinetype (this ._linetype .getValue ()),
149
+ texture = browser .getLinetypeTexture (this .linetype),
118
150
  textureUnit = browser .getTexture2DUnit ();
119
151
 
120
152
  gl .lineWidth (this .linewidthScaleFactor);
@@ -53,12 +53,16 @@ define ([
53
53
  "x_ite/Base/FieldDefinitionArray",
54
54
  "x_ite/Components/Shape/X3DAppearanceChildNode",
55
55
  "x_ite/Base/X3DConstants",
56
+ "standard/Math/Algorithm",
57
+ "standard/Math/Numbers/Vector3",
56
58
  ],
57
59
  function (Fields,
58
60
  X3DFieldDefinition,
59
61
  FieldDefinitionArray,
60
62
  X3DAppearanceChildNode,
61
- X3DConstants)
63
+ X3DConstants,
64
+ Algorithm,
65
+ Vector3)
62
66
  {
63
67
  "use strict";
64
68
 
@@ -98,6 +102,10 @@ function (Fields,
98
102
  {
99
103
  X3DAppearanceChildNode .prototype .initialize .call (this);
100
104
 
105
+ const gl = this .getBrowser () .getContext ();
106
+
107
+ this .pointSizeRange = gl .getParameter (gl .ALIASED_POINT_SIZE_RANGE);
108
+
101
109
  this ._pointSizeScaleFactor .addInterest ("set_pointSizeScaleFactor__", this);
102
110
  this ._pointSizeMinValue .addInterest ("set_pointSizeMinValue__", this);
103
111
  this ._pointSizeMaxValue .addInterest ("set_pointSizeMaxValue__", this);
@@ -110,17 +118,30 @@ function (Fields,
110
118
  this .set_pointSizeAttenuation__ ();
111
119
  this .set_markerType__ ();
112
120
  },
121
+ getPointSize: function (point)
122
+ {
123
+ const
124
+ pointSizeAttenuation = this .pointSizeAttenuation,
125
+ dL = point .magnitude ();
126
+
127
+ let pointSize = this .pointSizeScaleFactor;
128
+
129
+ pointSize /= pointSizeAttenuation [0] + pointSizeAttenuation [1] * dL + pointSizeAttenuation [2] * (dL * dL);
130
+ pointSize = Algorithm .clamp (pointSize, this .pointSizeMinValue, this .pointSizeMaxValue);
131
+
132
+ return pointSize;
133
+ },
113
134
  set_pointSizeScaleFactor__: function ()
114
135
  {
115
136
  this .pointSizeScaleFactor = Math .max (1, this ._pointSizeScaleFactor .getValue ());
116
137
  },
117
138
  set_pointSizeMinValue__: function ()
118
139
  {
119
- this .pointSizeMinValue = Math .max (0, this ._pointSizeMinValue .getValue ());
140
+ this .pointSizeMinValue = Algorithm .clamp (this ._pointSizeMinValue .getValue (), this .pointSizeRange [0], this .pointSizeRange [1]);
120
141
  },
121
142
  set_pointSizeMaxValue__: function ()
122
143
  {
123
- this .pointSizeMaxValue = Math .max (0, this ._pointSizeMaxValue .getValue ());
144
+ this .pointSizeMaxValue = Algorithm .clamp (this ._pointSizeMaxValue .getValue (), this .pointSizeRange [0], this .pointSizeRange [1]);
124
145
  },
125
146
  set_pointSizeAttenuation__: function ()
126
147
  {
@@ -57,7 +57,6 @@ define ([
57
57
  "standard/Math/Algorithm",
58
58
  "standard/Math/Numbers/Vector3",
59
59
  "standard/Math/Numbers/Matrix4",
60
- "standard/Math/Geometry/Box3",
61
60
  "standard/Math/Geometry/Line3",
62
61
  "standard/Math/Algorithms/QuickSort",
63
62
  ],
@@ -70,7 +69,6 @@ function (Fields,
70
69
  Algorithm,
71
70
  Vector3,
72
71
  Matrix4,
73
- Box3,
74
72
  Line3,
75
73
  QuickSort)
76
74
  {
@@ -182,62 +180,55 @@ function (Fields,
182
180
  intersectionSorter = new QuickSort (intersections, function (lhs, rhs)
183
181
  {
184
182
  return lhs .point .z > rhs .point .z;
185
- });
183
+ }),
184
+ distanceCompare = function (lhs, rhs) { return lhs .point .z > rhs; };
186
185
 
187
186
  return function (renderObject)
188
187
  {
189
- try
190
- {
191
- const
192
- browser = renderObject .getBrowser (),
193
- geometryNode = this .getGeometry ();
188
+ const browser = renderObject .getBrowser ();
194
189
 
195
- modelViewMatrix .assign (renderObject .getModelViewMatrix () .get ());
196
- invModelViewMatrix .assign (modelViewMatrix) .inverse ();
190
+ if (browser .getPickOnlySensors () && browser .getSensors () .length === 1)
191
+ return;
197
192
 
198
- hitRay .assign (browser .getHitRay ()) .multLineMatrix (invModelViewMatrix);
193
+ const geometryNode = this .getGeometry ();
199
194
 
200
- if (geometryNode .intersectsLine (hitRay, renderObject .getLocalObjects (), modelViewMatrix, intersections))
201
- {
202
- // Finally we have intersections and must now find the closest hit in front of the camera.
195
+ modelViewMatrix .assign (renderObject .getModelViewMatrix () .get ());
196
+ invModelViewMatrix .assign (modelViewMatrix) .inverse ();
203
197
 
204
- // Transform hitPoints to absolute space.
205
- for (const intersection of intersections)
206
- modelViewMatrix .multVecMatrix (intersection .point);
198
+ hitRay .assign (browser .getHitRay ()) .multLineMatrix (invModelViewMatrix);
207
199
 
208
- intersectionSorter .sort (0, intersections .length);
200
+ if (geometryNode .intersectsLine (hitRay, renderObject, invModelViewMatrix, this .getAppearance (), intersections))
201
+ {
202
+ // Finally we have intersections and must now find the closest hit in front of the camera.
209
203
 
210
- // Find first point that is not greater than near plane;
211
- const index = Algorithm .lowerBound (intersections, 0, intersections .length, -renderObject .getNavigationInfo () .getNearValue (),
212
- function (lhs, rhs)
213
- {
214
- return lhs .point .z > rhs;
215
- });
204
+ // Transform hitPoints to absolute space.
205
+ for (const intersection of intersections)
206
+ modelViewMatrix .multVecMatrix (intersection .point);
216
207
 
217
- // Are there intersections before the camera?
218
- if (index !== intersections .length)
219
- {
220
- // Transform hitNormal to absolute space.
221
- invModelViewMatrix .multMatrixDir (intersections [index] .normal) .normalize ();
208
+ intersectionSorter .sort (0, intersections .length);
222
209
 
223
- browser .addHit (intersections [index], renderObject .getLayer (), this, modelViewMatrix .multRight (renderObject .getCameraSpaceMatrix () .get ()));
224
- }
210
+ // Find first point that is not greater than near plane;
211
+ const index = Algorithm .lowerBound (intersections, 0, intersections .length, -renderObject .getNavigationInfo () .getNearValue (), distanceCompare);
212
+
213
+ // Are there intersections before the camera?
214
+ if (index !== intersections .length)
215
+ {
216
+ // Transform hitNormal to absolute space.
217
+ invModelViewMatrix .multMatrixDir (intersections [index] .normal) .normalize ();
225
218
 
226
- intersections .length = 0;
219
+ browser .addHit (intersections [index], renderObject .getLayer (), this, modelViewMatrix .multRight (renderObject .getCameraSpaceMatrix () .get ()));
227
220
  }
228
- }
229
- catch (error)
230
- {
231
- console .error (error);
221
+
222
+ intersections .length = 0;
232
223
  }
233
224
  };
234
225
  })(),
235
226
  picking: function (renderObject)
236
227
  {
228
+ const modelMatrix = renderObject .getModelViewMatrix () .get ();
229
+
237
230
  if (this .getTransformSensors () .size)
238
231
  {
239
- const modelMatrix = renderObject .getModelViewMatrix () .get ();
240
-
241
232
  for (const transformSensorNode of this .getTransformSensors ())
242
233
  transformSensorNode .collect (modelMatrix);
243
234
  }
@@ -251,7 +242,7 @@ function (Fields,
251
242
 
252
243
  for (const pickSensor of pickSensorStack .at (-1))
253
244
  {
254
- pickSensor .collect (this .getGeometry (), renderObject .getModelViewMatrix () .get (), browser .getPickingHierarchy ());
245
+ pickSensor .collect (this .getGeometry (), modelMatrix, pickingHierarchy);
255
246
  }
256
247
 
257
248
  pickingHierarchy .pop ();
@@ -66,6 +66,8 @@ function (Fields,
66
66
 
67
67
  function TwoSidedMaterial (executionContext)
68
68
  {
69
+ console .warn ("TwoSidedMaterial is depreciated, please use Appearance backMaterial field.");
70
+
69
71
  X3DMaterialNode .call (this, executionContext);
70
72
 
71
73
  this .addType (X3DConstants .TwoSidedMaterial);
@@ -263,7 +265,7 @@ function (Fields,
263
265
  },
264
266
  setShaderUniforms: function (gl, shaderObject, renderObject, textureTransformMapping, textureCoordinateMapping, front)
265
267
  {
266
- if (!front && this ._separateBackColor .getValue ())
268
+ if (! front && this ._separateBackColor .getValue ())
267
269
  {
268
270
  gl .uniform1f (shaderObject .x3d_AmbientIntensity, this .backAmbientIntensity);
269
271
  gl .uniform3fv (shaderObject .x3d_DiffuseColor, this .backDiffuseColor);
@@ -190,60 +190,50 @@ function (Fields,
190
190
 
191
191
  return function (type, renderObject)
192
192
  {
193
- try
194
- {
195
- if (type !== TraverseType .DISPLAY)
196
- return;
193
+ if (type !== TraverseType .DISPLAY)
194
+ return;
195
+
196
+ if (! this .sourceNode)
197
+ return;
197
198
 
198
- if (! this .sourceNode)
199
- return;
199
+ if (! this .sourceNode ._isActive .getValue () || this .sourceNode ._isPaused .getValue ())
200
+ return;
200
201
 
201
- if (! this .sourceNode ._isActive .getValue () || this .sourceNode ._isPaused .getValue ())
202
- return;
202
+ this .setTraversed (true);
203
203
 
204
- this .setTraversed (true);
204
+ const modelViewMatrix = renderObject .getModelViewMatrix () .get ();
205
205
 
206
- const modelViewMatrix = renderObject .getModelViewMatrix () .get ();
206
+ this .getEllipsoidParameter (modelViewMatrix,
207
+ Math .max (this ._maxBack .getValue (), 0),
208
+ Math .max (this ._maxFront .getValue (), 0),
209
+ max);
207
210
 
211
+ if (max .distance < 1) // Sphere radius is 1
212
+ {
208
213
  this .getEllipsoidParameter (modelViewMatrix,
209
- Math .max (this ._maxBack .getValue (), 0),
210
- Math .max (this ._maxFront .getValue (), 0),
211
- max);
214
+ Math .max (this ._minBack .getValue (), 0),
215
+ Math .max (this ._minFront .getValue (), 0),
216
+ min);
212
217
 
213
- if (max .distance < 1) // Sphere radius is 1
218
+ if (min .distance < 1) // Sphere radius is 1
214
219
  {
215
- this .getEllipsoidParameter (modelViewMatrix,
216
- Math .max (this ._minBack .getValue (), 0),
217
- Math .max (this ._minFront .getValue (), 0),
218
- min);
219
-
220
- if (min .distance < 1) // Sphere radius is 1
221
- {
222
- this .sourceNode .setVolume (this ._intensity .getValue ());
223
- }
224
- else
225
- {
226
- const
227
- d1 = max .intersection .abs (), // Viewer is here at (0, 0, 0)
228
- d2 = max .intersection .distance (min .intersection),
229
- d = Math .min (d1 / d2, 1),
230
- intensity = Algorithm .clamp (this ._intensity .getValue (), 0, 1),
231
- volume = intensity * d;
232
-
233
- this .sourceNode .setVolume (volume);
234
- }
220
+ this .sourceNode .setVolume (this ._intensity .getValue ());
235
221
  }
236
222
  else
237
223
  {
238
- this .sourceNode .setVolume (0);
224
+ const
225
+ d1 = max .intersection .magnitude (), // Viewer is here at (0, 0, 0)
226
+ d2 = max .intersection .distance (min .intersection),
227
+ d = Math .min (d1 / d2, 1),
228
+ intensity = Algorithm .clamp (this ._intensity .getValue (), 0, 1),
229
+ volume = intensity * d;
230
+
231
+ this .sourceNode .setVolume (volume);
239
232
  }
240
233
  }
241
- catch (error)
234
+ else
242
235
  {
243
- //console .error (error);
244
-
245
- if (this .sourceNode)
246
- this .sourceNode .setVolume (0);
236
+ this .sourceNode .setVolume (0);
247
237
  }
248
238
  };
249
239
  })(),
@@ -305,7 +295,7 @@ function (Fields,
305
295
  sphere .intersectsLine (line, enterPoint, exitPoint);
306
296
 
307
297
  value .intersection .assign (sphereMatrix .multVecMatrix (enterPoint));
308
- value .distance = viewer .abs ();
298
+ value .distance = viewer .magnitude ();
309
299
  };
310
300
  })(),
311
301
  });
@@ -156,29 +156,15 @@ function (Fields,
156
156
  },
157
157
  traverse: function (type, renderObject)
158
158
  {
159
- try
160
- {
161
- this .textGeometry .traverse (type, renderObject);
162
-
163
- X3DGeometryNode .prototype .traverse .call (this, type, renderObject);
164
- }
165
- catch (error)
166
- {
167
- console .error (error);
168
- }
159
+ this .textGeometry .traverse (type, renderObject);
160
+
161
+ X3DGeometryNode .prototype .traverse .call (this, type, renderObject);
169
162
  },
170
163
  display: function (gl, context)
171
164
  {
172
- try
173
- {
174
- this .textGeometry .display (gl, context);
175
-
176
- X3DGeometryNode .prototype .display .call (this, gl, context);
177
- }
178
- catch (error)
179
- {
180
- console .error (error);
181
- }
165
+ this .textGeometry .display (gl, context);
166
+
167
+ X3DGeometryNode .prototype .display .call (this, gl, context);
182
168
  },
183
169
  transformLine: function (line)
184
170
  {
@@ -174,7 +174,7 @@ function ($,
174
174
  gl = this .getBrowser () .getContext (),
175
175
  image = this .image [0],
176
176
  canvas = this .canvas [0],
177
- cx = canvas .getContext ("2d");
177
+ cx = canvas .getContext ("2d", { willReadFrequently: true });
178
178
 
179
179
  let
180
180
  width = image .width,
@@ -208,7 +208,7 @@ function ($,
208
208
  width = video .videoWidth,
209
209
  height = video .videoHeight,
210
210
  canvas = this .canvas [0],
211
- cx = canvas .getContext ("2d");
211
+ cx = canvas .getContext ("2d", { willReadFrequently: true });
212
212
 
213
213
  if (! Algorithm .isPowerOfTwo (width) || ! Algorithm .isPowerOfTwo (height))
214
214
  throw new Error ("The movie texture is a non power-of-two texture.");
@@ -247,8 +247,8 @@ function ($,
247
247
  const
248
248
  canvas1 = this .canvas1 [0],
249
249
  canvas2 = this .canvas2 [0],
250
- cx1 = canvas1 .getContext("2d"),
251
- cx2 = canvas2 .getContext("2d"),
250
+ cx1 = canvas1 .getContext ("2d", { willReadFrequently: true }),
251
+ cx2 = canvas2 .getContext ("2d", { willReadFrequently: true }),
252
252
  imageData = cx1 .createImageData (width, height);
253
253
 
254
254
  canvas1 .width = width;
@@ -162,12 +162,12 @@ function (Fields,
162
162
  },
163
163
  getTexCoord: function (array)
164
164
  {
165
- const point = this .point;
165
+ const
166
+ point = this .point,
167
+ length = this .length;
166
168
 
167
- for (let i = 0, p = 0, length = this .length; i < length; ++ i, p += 2)
168
- array [i] = new Vector4 (point [p], point [p + 1], 0, 1);
169
-
170
- array .length = this .length;
169
+ for (let i = 0, p = 0; i < length; ++ i, p += 2)
170
+ array .push (point [p], point [p + 1], 0, 1);
171
171
 
172
172
  return array;
173
173
  },