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
@@ -67,6 +67,13 @@ function (Vector3, Algorithm)
67
67
  {
68
68
  constructor: Quaternion,
69
69
  length: 4,
70
+ [Symbol .iterator]: function* ()
71
+ {
72
+ yield this .x;
73
+ yield this .y;
74
+ yield this .z;
75
+ yield this .w;
76
+ },
70
77
  copy: function ()
71
78
  {
72
79
  const copy = Object .create (Quaternion .prototype);
@@ -318,7 +325,7 @@ function (Vector3, Algorithm)
318
325
  this .z * this .z +
319
326
  this .w * this .w;
320
327
  },
321
- abs: function ()
328
+ magnitude: function ()
322
329
  {
323
330
  return Math .hypot (this .x, this .y, this .z, this .w);
324
331
  },
@@ -331,9 +338,9 @@ function (Vector3, Algorithm)
331
338
  return this .set (0, 0, 0, Math .pow (this .w, exponent));
332
339
 
333
340
  const
334
- l = this .abs (),
341
+ l = this .magnitude (),
335
342
  theta = Math .acos (this .w / l),
336
- li = this .imag .abs (),
343
+ li = this .imag .magnitude (),
337
344
  ltoe = Math .pow (l, exponent),
338
345
  et = exponent * theta,
339
346
  scale = ltoe / li * Math .sin (et);
@@ -356,7 +363,7 @@ function (Vector3, Algorithm)
356
363
  }
357
364
 
358
365
  const
359
- l = this .abs (),
366
+ l = this .magnitude (),
360
367
  v = this .imag .normalize () .multiply (Math .acos (this .w / l)),
361
368
  w = Math .log (l);
362
369
 
@@ -373,7 +380,7 @@ function (Vector3, Algorithm)
373
380
 
374
381
  const
375
382
  i = this .imag,
376
- li = i .abs (),
383
+ li = i .magnitude (),
377
384
  ew = Math .exp (this .w),
378
385
  w = ew * Math .cos (li),
379
386
  v = i .multiply (ew * Math .sin (li) / li);
@@ -117,6 +117,13 @@ function (Quaternion,
117
117
  {
118
118
  constructor: Rotation4,
119
119
  length: 4,
120
+ [Symbol .iterator]: function* ()
121
+ {
122
+ yield this [_x];
123
+ yield this [_y];
124
+ yield this [_z];
125
+ yield this [_angle];
126
+ },
120
127
  update: function ()
121
128
  {
122
129
  const rotation = this .get ();
@@ -235,7 +242,7 @@ function (Quaternion,
235
242
  const
236
243
  cos_angle = Algorithm .clamp (from .dot (to), -1, 1),
237
244
  crossvec = cv .assign (from) .cross (to) .normalize (),
238
- crosslen = crossvec .abs ();
245
+ crosslen = crossvec .magnitude ();
239
246
 
240
247
  if (crosslen === 0)
241
248
  {
@@ -64,6 +64,11 @@ function (Algorithm)
64
64
  {
65
65
  constructor: Vector2,
66
66
  length: 2,
67
+ [Symbol .iterator]: function* ()
68
+ {
69
+ yield this .x;
70
+ yield this .y;
71
+ },
67
72
  copy: function ()
68
73
  {
69
74
  const copy = Object .create (Vector2 .prototype);
@@ -94,6 +99,12 @@ function (Algorithm)
94
99
  this .y = -this .y;
95
100
  return this;
96
101
  },
102
+ inverse: function ()
103
+ {
104
+ this .x = 1 / this .x;
105
+ this .y = 1 / this .y;
106
+ return this;
107
+ },
97
108
  add: function (vector)
98
109
  {
99
110
  this .x += vector .x;
@@ -132,14 +143,12 @@ function (Algorithm)
132
143
  },
133
144
  normalize: function ()
134
145
  {
135
- let length = Math .hypot (this .x, this .y);
146
+ const length = Math .hypot (this .x, this .y);
136
147
 
137
148
  if (length)
138
149
  {
139
- length = 1 / length;
140
-
141
- this .x *= length;
142
- this .y *= length;
150
+ this .x /= length;
151
+ this .y /= length;
143
152
  }
144
153
 
145
154
  return this;
@@ -158,7 +167,7 @@ function (Algorithm)
158
167
  return x * x +
159
168
  y * y;
160
169
  },
161
- abs: function ()
170
+ magnitude: function ()
162
171
  {
163
172
  return Math .hypot (this .x, this .y);
164
173
  },
@@ -177,6 +186,12 @@ function (Algorithm)
177
186
  this .y = y + t * (destination .y - y);
178
187
  return this;
179
188
  },
189
+ abs: function ()
190
+ {
191
+ this .x = Math .abs (this .x);
192
+ this .y = Math .abs (this .y);
193
+ return this;
194
+ },
180
195
  min: function (vector)
181
196
  {
182
197
  let
@@ -236,10 +251,16 @@ function (Algorithm)
236
251
  {
237
252
  Zero: new Vector2 (0, 0),
238
253
  One: new Vector2 (1, 1),
254
+ xAxis: new Vector2 (1, 0),
255
+ yAxis: new Vector2 (0, 1),
239
256
  negate: function (vector)
240
257
  {
241
258
  return vector .copy () .negate ();
242
259
  },
260
+ inverse: function (vector)
261
+ {
262
+ return vector .copy () .inverse ();
263
+ },
243
264
  add: function (lhs, rhs)
244
265
  {
245
266
  return lhs .copy () .add (rhs);
@@ -270,19 +291,31 @@ function (Algorithm)
270
291
  },
271
292
  dot: function (lhs, rhs)
272
293
  {
273
- return lhs .copy () .dot (rhs);
294
+ return lhs .dot (rhs);
295
+ },
296
+ magnitude: function (vector)
297
+ {
298
+ return vector .magnitude ();
299
+ },
300
+ distance: function (lhs, rhs)
301
+ {
302
+ return lhs .distance (rhs);
274
303
  },
275
304
  lerp: function (source, destination, t)
276
305
  {
277
306
  return source .copy () .lerp (destination, t);
278
307
  },
308
+ abs: function (vector)
309
+ {
310
+ return vector .copy () .abs ();
311
+ },
279
312
  min: function (lhs, rhs)
280
313
  {
281
- return Vector2 .prototype .min .apply (lhs .copy (), arguments);
314
+ return this .prototype .min .apply (lhs .copy (), arguments);
282
315
  },
283
316
  max: function (lhs, rhs)
284
317
  {
285
- return Vector2 .prototype .max .apply (lhs .copy (), arguments);
318
+ return this .prototype .max .apply (lhs .copy (), arguments);
286
319
  },
287
320
  });
288
321
 
@@ -65,6 +65,12 @@ function (Algorithm)
65
65
  {
66
66
  constructor: Vector3,
67
67
  length: 3,
68
+ [Symbol .iterator]: function* ()
69
+ {
70
+ yield this .x;
71
+ yield this .y;
72
+ yield this .z;
73
+ },
68
74
  copy: function ()
69
75
  {
70
76
  const copy = Object .create (Vector3 .prototype);
@@ -100,6 +106,13 @@ function (Algorithm)
100
106
  this .z = -this .z;
101
107
  return this;
102
108
  },
109
+ inverse: function ()
110
+ {
111
+ this .x = 1 / this .x;
112
+ this .y = 1 / this .y;
113
+ this .z = 1 / this .z;
114
+ return this;
115
+ },
103
116
  add: function (vector)
104
117
  {
105
118
  this .x += vector .x;
@@ -144,25 +157,25 @@ function (Algorithm)
144
157
  },
145
158
  cross: function (vector)
146
159
  {
147
- const x = this .x, y = this .y, z = this .z;
160
+ const
161
+ ax = this .x, ay = this .y, az = this .z,
162
+ bx = vector .x, by = vector .y, bz = vector .z;
148
163
 
149
- this .x = y * vector .z - z * vector .y;
150
- this .y = z * vector .x - x * vector .z;
151
- this .z = x * vector .y - y * vector .x;
164
+ this .x = ay * bz - az * by;
165
+ this .y = az * bx - ax * bz;
166
+ this .z = ax * by - ay * bx;
152
167
 
153
168
  return this;
154
169
  },
155
170
  normalize: function ()
156
171
  {
157
- let length = Math .hypot (this .x, this .y, this .z);
172
+ const length = Math .hypot (this .x, this .y, this .z);
158
173
 
159
174
  if (length)
160
175
  {
161
- length = 1 / length;
162
-
163
- this .x *= length;
164
- this .y *= length;
165
- this .z *= length;
176
+ this .x /= length;
177
+ this .y /= length;
178
+ this .z /= length;
166
179
  }
167
180
 
168
181
  return this;
@@ -184,7 +197,7 @@ function (Algorithm)
184
197
  y * y +
185
198
  z * z;
186
199
  },
187
- abs: function ()
200
+ magnitude: function ()
188
201
  {
189
202
  return Math .hypot (this .x, this .y, this .z);
190
203
  },
@@ -215,6 +228,13 @@ function (Algorithm)
215
228
  return Algorithm .simpleSlerp (this, tmp .assign (destination), t);
216
229
  };
217
230
  })(),
231
+ abs: function ()
232
+ {
233
+ this .x = Math .abs (this .x);
234
+ this .y = Math .abs (this .y);
235
+ this .z = Math .abs (this .z);
236
+ return this;
237
+ },
218
238
  min: function (vector)
219
239
  {
220
240
  let
@@ -296,6 +316,10 @@ function (Algorithm)
296
316
  {
297
317
  return vector .copy () .negate ();
298
318
  },
319
+ inverse: function (vector)
320
+ {
321
+ return vector .copy () .inverse ();
322
+ },
299
323
  add: function (lhs, rhs)
300
324
  {
301
325
  return lhs .copy () .add (rhs);
@@ -330,7 +354,15 @@ function (Algorithm)
330
354
  },
331
355
  dot: function (lhs, rhs)
332
356
  {
333
- return lhs .copy () .dot (rhs);
357
+ return lhs .dot (rhs);
358
+ },
359
+ magnitude: function (vector)
360
+ {
361
+ return vector .magnitude ();
362
+ },
363
+ distance: function (lhs, rhs)
364
+ {
365
+ return lhs .distance (rhs);
334
366
  },
335
367
  lerp: function (source, destination, t)
336
368
  {
@@ -340,13 +372,17 @@ function (Algorithm)
340
372
  {
341
373
  return source .copy () .slerp (destination, t);
342
374
  },
375
+ abs: function (vector)
376
+ {
377
+ return vector .copy () .abs ();
378
+ },
343
379
  min: function (lhs, rhs)
344
380
  {
345
- return Vector3 .prototype .min .apply (lhs .copy (), arguments);
381
+ return this .prototype .min .apply (lhs .copy (), arguments);
346
382
  },
347
383
  max: function (lhs, rhs)
348
384
  {
349
- return Vector3 .prototype .max .apply (lhs .copy (), arguments);
385
+ return this .prototype .max .apply (lhs .copy (), arguments);
350
386
  },
351
387
  });
352
388
 
@@ -66,6 +66,13 @@ function (Algorithm)
66
66
  {
67
67
  constructor: Vector4,
68
68
  length: 4,
69
+ [Symbol .iterator]: function* ()
70
+ {
71
+ yield this .x;
72
+ yield this .y;
73
+ yield this .z;
74
+ yield this .w;
75
+ },
69
76
  copy: function ()
70
77
  {
71
78
  const copy = Object .create (Vector4 .prototype);
@@ -112,6 +119,14 @@ function (Algorithm)
112
119
  this .w = -this .w;
113
120
  return this;
114
121
  },
122
+ inverse: function ()
123
+ {
124
+ this .x = 1 / this .x;
125
+ this .y = 1 / this .y;
126
+ this .z = 1 / this .z;
127
+ this .w = 1 / this .w;
128
+ return this;
129
+ },
115
130
  add: function (vector)
116
131
  {
117
132
  this .x += vector .x;
@@ -162,16 +177,14 @@ function (Algorithm)
162
177
  },
163
178
  normalize: function ()
164
179
  {
165
- let length = Math .hypot (this .x, this .y, this .z, this .w);
180
+ const length = Math .hypot (this .x, this .y, this .z, this .w);
166
181
 
167
182
  if (length)
168
183
  {
169
- length = 1 / length;
170
-
171
- this .x *= length;
172
- this .y *= length;
173
- this .z *= length;
174
- this .w *= length;
184
+ this .x /= length;
185
+ this .y /= length;
186
+ this .z /= length;
187
+ this .w /= length;
175
188
  }
176
189
 
177
190
  return this;
@@ -196,7 +209,7 @@ function (Algorithm)
196
209
  z * z +
197
210
  w * w;
198
211
  },
199
- abs: function ()
212
+ magnitude: function ()
200
213
  {
201
214
  return Math .hypot (this .x, this .y, this .z, this .w);
202
215
  },
@@ -221,6 +234,14 @@ function (Algorithm)
221
234
  this .w = w + t * (destination .w - w);
222
235
  return this;
223
236
  },
237
+ abs: function ()
238
+ {
239
+ this .x = Math .abs (this .x);
240
+ this .y = Math .abs (this .y);
241
+ this .z = Math .abs (this .z);
242
+ this .w = Math .abs (this .w);
243
+ return this;
244
+ },
224
245
  min: function (vector)
225
246
  {
226
247
  let
@@ -318,6 +339,10 @@ function (Algorithm)
318
339
  {
319
340
  return vector .copy () .negate ();
320
341
  },
342
+ inverse: function (vector)
343
+ {
344
+ return vector .copy () .inverse ();
345
+ },
321
346
  add: function (lhs, rhs)
322
347
  {
323
348
  return lhs .copy () .add (rhs);
@@ -348,19 +373,31 @@ function (Algorithm)
348
373
  },
349
374
  dot: function (lhs, rhs)
350
375
  {
351
- return lhs .copy () .dot (rhs);
376
+ return lhs .dot (rhs);
377
+ },
378
+ magnitude: function (vector)
379
+ {
380
+ return vector .magnitude ();
381
+ },
382
+ distance: function (lhs, rhs)
383
+ {
384
+ return lhs .distance (rhs);
352
385
  },
353
386
  lerp: function (source, destination, t)
354
387
  {
355
388
  return source .copy () .lerp (destination, t);
356
389
  },
390
+ abs: function (vector)
391
+ {
392
+ return vector .copy () .abs ();
393
+ },
357
394
  min: function (lhs, rhs)
358
395
  {
359
- return Vector4 .prototype .min .apply (lhs .copy (), arguments);
396
+ return this .prototype .min .apply (lhs .copy (), arguments);
360
397
  },
361
398
  max: function (lhs, rhs)
362
399
  {
363
- return Vector4 .prototype .max .apply (lhs .copy (), arguments);
400
+ return this .prototype .max .apply (lhs .copy (), arguments);
364
401
  },
365
402
  });
366
403
 
@@ -74,28 +74,24 @@ function (Vector3,
74
74
  // left: We do not have to test for left.
75
75
  ];
76
76
 
77
+ const
78
+ NODE = 0,
79
+ TRIANGLE = 1;
80
+
77
81
  function SortComparator (vertices, axis)
78
82
  {
79
- function compare (a, b)
83
+ return function compare (a, b)
80
84
  {
81
- const
82
- vertices = compare .vertices;
83
- axis = compare .axis;
84
-
85
- return Math .min (vertices [a + axis], vertices [a + 4 + axis], vertices [a + 8 + axis]) <
86
- Math .min (vertices [b + axis], vertices [b + 4 + axis], vertices [b + 8 + axis]);
85
+ return Math .min (vertices [a + axis], vertices [a + 4 + axis], vertices [a + 8 + axis]) <
86
+ Math .min (vertices [b + axis], vertices [b + 4 + axis], vertices [b + 8 + axis]);
87
87
  }
88
-
89
- compare .vertices = vertices;
90
- compare .axis = axis;
91
-
92
- return compare;
93
88
  }
94
89
 
95
90
  function Triangle (tree, triangle)
96
91
  {
97
92
  this .vertices = tree .vertices;
98
93
  this .normals = tree .normals;
94
+ this .triangle = triangle;
99
95
  this .i4 = triangle * 12;
100
96
  this .i3 = triangle * 9;
101
97
  }
@@ -145,6 +141,14 @@ function (Vector3,
145
141
  }
146
142
  }
147
143
  },
144
+ toArray: function (array)
145
+ {
146
+ const index = array .length / 4;
147
+
148
+ array .push (TRIANGLE, this .triangle * 3, 0, 0);
149
+
150
+ return index;
151
+ },
148
152
  };
149
153
 
150
154
  function Node (tree, triangles, first, size)
@@ -303,15 +307,30 @@ function (Vector3,
303
307
  return 0;
304
308
  }
305
309
  },
310
+ toArray: function (array)
311
+ {
312
+ const
313
+ left = this .left .toArray (array),
314
+ right = this .right .toArray (array),
315
+ min = this .min,
316
+ max = this .max,
317
+ index = array .length / 4;
318
+
319
+ array .push (NODE, left, right, 0,
320
+ min .x, min .y, min .z, 0,
321
+ max .x, max .y, max .z, 0);
322
+
323
+ return index;
324
+ },
306
325
  };
307
326
 
308
327
  function BVH (vertices, normals)
309
328
  {
329
+ const numTriangles = vertices .length / 12;
330
+
310
331
  this .vertices = vertices;
311
332
  this .normals = normals;
312
333
 
313
- const numTriangles = vertices .length / 12;
314
-
315
334
  switch (numTriangles)
316
335
  {
317
336
  case 0:
@@ -332,8 +351,7 @@ function (Vector3,
332
351
  triangles .push (i);
333
352
 
334
353
  this .sorter = new QuickSort (triangles, SortComparator (vertices, 0));
335
-
336
- this .root = new Node (this, triangles, 0, numTriangles);
354
+ this .root = new Node (this, triangles, 0, numTriangles);
337
355
  break;
338
356
  }
339
357
  }
@@ -342,7 +360,6 @@ function (Vector3,
342
360
  BVH .prototype =
343
361
  {
344
362
  constructor: BVH,
345
-
346
363
  intersectsLine: function (line, intersections, intersectionNormals)
347
364
  {
348
365
  intersections .size = 0;
@@ -355,6 +372,17 @@ function (Vector3,
355
372
 
356
373
  return 0;
357
374
  },
375
+ toArray: function (array)
376
+ {
377
+ if (this .root)
378
+ {
379
+ const root = this .root .toArray (array);
380
+
381
+ array .push (root, 0, 0, 0);
382
+ }
383
+
384
+ return array;
385
+ },
358
386
  };
359
387
 
360
388
  return BVH;