x_ite 5.0.2 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +21 -0
  3. package/Makefile +10 -15
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/version.pl +1 -4
  7. package/dist/assets/components/annotation.js +2 -2
  8. package/dist/assets/components/annotation.min.js +1 -1
  9. package/dist/assets/components/cad-geometry.js +2 -2
  10. package/dist/assets/components/cad-geometry.min.js +1 -1
  11. package/dist/assets/components/cube-map-texturing.js +6 -19
  12. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  13. package/dist/assets/components/dis.js +2 -2
  14. package/dist/assets/components/dis.min.js +1 -1
  15. package/dist/assets/components/event-utilities.js +3 -3
  16. package/dist/assets/components/event-utilities.min.js +1 -1
  17. package/dist/assets/components/geometry2d.js +4 -4
  18. package/dist/assets/components/geometry2d.min.js +1 -1
  19. package/dist/assets/components/geospatial.js +32 -1685
  20. package/dist/assets/components/geospatial.min.js +1 -1
  21. package/dist/assets/components/h-anim.js +70 -77
  22. package/dist/assets/components/h-anim.min.js +1 -1
  23. package/dist/assets/components/key-device-sensor.js +3 -3
  24. package/dist/assets/components/key-device-sensor.min.js +1 -1
  25. package/dist/assets/components/layout.js +38 -52
  26. package/dist/assets/components/layout.min.js +1 -1
  27. package/dist/assets/components/nurbs.js +277 -194
  28. package/dist/assets/components/nurbs.min.js +1 -1
  29. package/dist/assets/components/particle-systems.js +1918 -1658
  30. package/dist/assets/components/particle-systems.min.js +1 -1
  31. package/dist/assets/components/picking.js +33 -41
  32. package/dist/assets/components/picking.min.js +1 -1
  33. package/dist/assets/components/projective-texture-mapping.js +72 -86
  34. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  35. package/dist/assets/components/rigid-body-physics.js +36 -57
  36. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  37. package/dist/assets/components/scripting.js +2 -2
  38. package/dist/assets/components/scripting.min.js +1 -1
  39. package/dist/assets/components/texturing-3d.js +26 -75
  40. package/dist/assets/components/texturing-3d.min.js +3 -3
  41. package/dist/assets/components/volume-rendering.js +10 -10
  42. package/dist/assets/components/volume-rendering.min.js +1 -1
  43. package/dist/assets/components/x_ite.js +2 -2
  44. package/dist/assets/components/x_ite.min.js +1 -1
  45. package/dist/assets/linetype/1.png +0 -0
  46. package/dist/assets/linetype/10.png +0 -0
  47. package/dist/assets/linetype/11.png +0 -0
  48. package/dist/assets/linetype/12.png +0 -0
  49. package/dist/assets/linetype/13.png +0 -0
  50. package/dist/assets/linetype/14.png +0 -0
  51. package/dist/assets/linetype/15.png +0 -0
  52. package/dist/assets/linetype/16.png +0 -0
  53. package/dist/assets/linetype/2.png +0 -0
  54. package/dist/assets/linetype/3.png +0 -0
  55. package/dist/assets/linetype/4.png +0 -0
  56. package/dist/assets/linetype/5.png +0 -0
  57. package/dist/assets/linetype/6.png +0 -0
  58. package/dist/assets/linetype/7.png +0 -0
  59. package/dist/assets/linetype/8.png +0 -0
  60. package/dist/assets/linetype/9.png +0 -0
  61. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  62. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  63. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  64. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  65. package/dist/assets/shaders/webgl2/Gouraud.vs +31 -3
  66. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  67. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  68. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  69. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  70. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  71. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  72. package/dist/assets/shaders/webgl2/Point.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  74. package/dist/example.html +6 -6
  75. package/dist/x_ite.css +180 -208
  76. package/dist/x_ite.js +16477 -16629
  77. package/dist/x_ite.min.js +17 -17
  78. package/dist/x_ite.zip +0 -0
  79. package/docs/404.md +6 -0
  80. package/docs/Accessing-the-External-Browser.md +20 -14
  81. package/docs/Browser-Support.md +6 -0
  82. package/docs/Custom-Shaders.md +17 -24
  83. package/docs/Features.md +7 -1
  84. package/docs/Gemfile +44 -0
  85. package/docs/Gemfile.lock +122 -0
  86. package/docs/Glossary.md +6 -0
  87. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  88. package/docs/Supported-Nodes.md +9 -1
  89. package/docs/What's-New.md +31 -0
  90. package/docs/XHTML-DOM-Integration.md +6 -0
  91. package/docs/_config.yml +1 -1
  92. package/docs/assets/css/main.scss +26 -0
  93. package/docs/index.md +38 -46
  94. package/docs/reference/Browser-Services.md +9 -3
  95. package/docs/reference/Constants-Services.md +6 -0
  96. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +6 -0
  97. package/docs/reference/Field-Services-and-Objects.md +6 -0
  98. package/docs/reference/Prototype-Services.md +6 -0
  99. package/docs/reference/Route-Services.md +6 -0
  100. package/docs/reference/Scene-Services.md +8 -2
  101. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  102. package/docs/tutorials/Adding-backgrounds.md +6 -0
  103. package/docs/tutorials/Adding-fog.md +6 -0
  104. package/docs/tutorials/Adding-sound.md +6 -0
  105. package/docs/tutorials/Animating-transforms.md +6 -0
  106. package/docs/tutorials/Basic-Nodes.md +6 -0
  107. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  108. package/docs/tutorials/Building-elevation-grids.md +6 -0
  109. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  110. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  111. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  112. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  113. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  114. package/docs/tutorials/Controlling-detail.md +6 -0
  115. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  116. package/docs/tutorials/Controlling-navigation.md +6 -0
  117. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  118. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  119. package/docs/tutorials/Creating-new-node-types.md +6 -0
  120. package/docs/tutorials/Grouping-nodes.md +6 -0
  121. package/docs/tutorials/Hello,-World!.md +6 -0
  122. package/docs/tutorials/Improving-Performance.md +6 -0
  123. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  124. package/docs/tutorials/Introducing-X3D.md +6 -0
  125. package/docs/tutorials/Introducing-animation.md +6 -0
  126. package/docs/tutorials/Introducing-script-use.md +6 -0
  127. package/docs/tutorials/Lighting-your-world.md +6 -0
  128. package/docs/tutorials/Mapping-textures.md +6 -0
  129. package/docs/tutorials/Naming-nodes.md +6 -0
  130. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  131. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  132. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  133. package/docs/tutorials/Transforming-Shapes.md +6 -0
  134. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  135. package/docs/tutorials/index.md +6 -0
  136. package/package.json +6 -7
  137. package/src/assets/components/geometry2d.js +1 -1
  138. package/src/assets/components/key-device-sensor.js +1 -1
  139. package/src/assets/components/layout.js +1 -1
  140. package/src/assets/components/particle-systems.js +1 -1
  141. package/src/assets/components/volume-rendering.js +1 -1
  142. package/src/assets/linetype/1.png +0 -0
  143. package/src/assets/linetype/10.png +0 -0
  144. package/src/assets/linetype/11.png +0 -0
  145. package/src/assets/linetype/12.png +0 -0
  146. package/src/assets/linetype/13.png +0 -0
  147. package/src/assets/linetype/14.png +0 -0
  148. package/src/assets/linetype/15.png +0 -0
  149. package/src/assets/linetype/16.png +0 -0
  150. package/src/assets/linetype/2.png +0 -0
  151. package/src/assets/linetype/3.png +0 -0
  152. package/src/assets/linetype/4.png +0 -0
  153. package/src/assets/linetype/5.png +0 -0
  154. package/src/assets/linetype/6.png +0 -0
  155. package/src/assets/linetype/7.png +0 -0
  156. package/src/assets/linetype/8.png +0 -0
  157. package/src/assets/linetype/9.png +0 -0
  158. package/src/assets/shaders/Types.glsl +1 -9
  159. package/src/assets/shaders/webgl1/Line.fs +3 -28
  160. package/src/assets/shaders/webgl1/Line.vs +5 -19
  161. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  162. package/src/assets/shaders/webgl1/Point.vs +2 -3
  163. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  164. package/src/assets/shaders/webgl2/Gouraud.vs +5 -3
  165. package/src/assets/shaders/webgl2/Line.fs +11 -17
  166. package/src/assets/shaders/webgl2/Line.vs +16 -20
  167. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  168. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  169. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  170. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  171. package/src/assets/shaders/webgl2/Point.vs +6 -6
  172. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  173. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  174. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  175. package/src/example.html +6 -6
  176. package/src/standard/Math/Algorithm.js +12 -28
  177. package/src/standard/Math/Geometry/Plane3.js +0 -2
  178. package/src/standard/Math/Geometry/ViewVolume.js +88 -83
  179. package/src/standard/Math/Numbers/Color3.js +6 -0
  180. package/src/standard/Math/Numbers/Color4.js +7 -0
  181. package/src/standard/Math/Numbers/Complex.js +5 -0
  182. package/src/standard/Math/Numbers/Matrix2.js +20 -2
  183. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  184. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  185. package/src/standard/Math/Numbers/Quaternion.js +7 -0
  186. package/src/standard/Math/Numbers/Rotation4.js +7 -0
  187. package/src/standard/Math/Numbers/Vector2.js +8 -5
  188. package/src/standard/Math/Numbers/Vector3.js +16 -10
  189. package/src/standard/Math/Numbers/Vector4.js +12 -7
  190. package/src/standard/Math/Utility/BVH.js +45 -17
  191. package/src/tests.js +6 -1
  192. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  193. package/src/x_ite/Base/X3DField.js +1 -1
  194. package/src/x_ite/Browser/Core/BrowserOptions.js +2 -2
  195. package/src/x_ite/Browser/Core/BrowserTimings.js +4 -2
  196. package/src/x_ite/Browser/Core/Context.js +185 -0
  197. package/src/x_ite/Browser/Core/ContextMenu.js +299 -193
  198. package/src/x_ite/Browser/Core/Notification.js +1 -0
  199. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  200. package/src/x_ite/Browser/Layout/ScreenText.js +11 -4
  201. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +4 -15
  202. package/src/x_ite/Browser/Navigation/ExamineViewer.js +12 -19
  203. package/src/x_ite/Browser/Navigation/LookAtViewer.js +0 -3
  204. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  205. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +14 -7
  206. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  207. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  208. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  209. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  210. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  211. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  212. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  213. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  214. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +37 -37
  215. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +19 -13
  216. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  217. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  218. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  219. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  220. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  221. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +23 -33
  222. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  223. package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -1
  224. package/src/x_ite/Browser/VERSION.js +1 -1
  225. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  226. package/src/x_ite/Browser/X3DBrowserContext.js +35 -10
  227. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  228. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  229. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  230. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  231. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +0 -1
  232. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  233. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  234. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  235. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  236. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  237. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  238. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  239. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  240. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  241. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  242. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  243. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  244. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  245. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  246. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  247. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  248. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  249. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  250. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  251. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  252. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  253. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  254. package/src/x_ite/Components/Layout/ScreenGroup.js +18 -23
  255. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  256. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  257. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  258. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  259. package/src/x_ite/Components/Navigation/LOD.js +1 -1
  260. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  261. package/src/x_ite/Components/Networking/Anchor.js +10 -4
  262. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  263. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  264. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  265. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  266. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +461 -876
  267. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  268. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  269. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  270. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  271. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  272. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  273. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  274. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +90 -107
  275. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +48 -55
  276. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +53 -70
  277. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  278. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  279. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  280. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  281. package/src/x_ite/Components/Rendering/Color.js +12 -37
  282. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -38
  283. package/src/x_ite/Components/Rendering/IndexedLineSet.js +12 -4
  284. package/src/x_ite/Components/Rendering/LineSet.js +21 -13
  285. package/src/x_ite/Components/Rendering/PointSet.js +21 -13
  286. package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -0
  287. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  288. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +248 -325
  289. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +305 -134
  290. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +99 -122
  291. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  292. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  293. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  294. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +5 -15
  295. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +7 -24
  296. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +7 -24
  297. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  298. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +219 -209
  299. package/src/x_ite/Components/Shaders/X3DShaderNode.js +1 -1
  300. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +23 -1
  301. package/src/x_ite/Components/Shape/Appearance.js +12 -0
  302. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  303. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  304. package/src/x_ite/Components/Shape/PointProperties.js +23 -1
  305. package/src/x_ite/Components/Shape/Shape.js +27 -34
  306. package/src/x_ite/Components/Sound/Sound.js +30 -40
  307. package/src/x_ite/Components/Text/Text.js +6 -20
  308. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -26
  309. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  310. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +21 -0
  311. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  312. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  313. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -26
  314. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -26
  315. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  316. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +7 -7
  317. package/src/x_ite/Components.js +2 -2
  318. package/src/x_ite/Fallback.js +9 -3
  319. package/src/x_ite/Fields/SFColor.js +4 -0
  320. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  321. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  322. package/src/x_ite/Fields/SFRotation.js +4 -0
  323. package/src/x_ite/Fields/SFString.js +4 -0
  324. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +4 -0
  325. package/src/x_ite/Parser/XMLParser.js +1 -1
  326. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  327. package/src/x_ite/Rendering/VertexArray.js +101 -0
  328. package/src/x_ite/Rendering/X3DRenderObject.js +123 -144
  329. package/src/x_ite/X3D.js +32 -26
  330. package/src/x_ite.config.js +0 -5
  331. package/src/x_ite.css +200 -162
  332. package/src/x_ite.html +26 -10
  333. package/src/x_ite.js +42 -0
  334. package/x_ite.min.html +26 -10
  335. package/dist/assets/hatching/0.png +0 -0
  336. package/dist/assets/linetype/0.png +0 -0
  337. package/src/assets/hatching/0.png +0 -0
  338. package/src/assets/linetype/0.png +0 -0
  339. package/src/spinner.css +0 -67
  340. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -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 ();
@@ -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);
@@ -132,14 +137,12 @@ function (Algorithm)
132
137
  },
133
138
  normalize: function ()
134
139
  {
135
- let length = Math .hypot (this .x, this .y);
140
+ const length = Math .hypot (this .x, this .y);
136
141
 
137
142
  if (length)
138
143
  {
139
- length = 1 / length;
140
-
141
- this .x *= length;
142
- this .y *= length;
144
+ this .x /= length;
145
+ this .y /= length;
143
146
  }
144
147
 
145
148
  return this;
@@ -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);
@@ -144,25 +150,25 @@ function (Algorithm)
144
150
  },
145
151
  cross: function (vector)
146
152
  {
147
- const x = this .x, y = this .y, z = this .z;
153
+ const
154
+ ax = this .x, ay = this .y, az = this .z,
155
+ bx = vector .x, by = vector .y, bz = vector .z;
148
156
 
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;
157
+ this .x = ay * bz - az * by;
158
+ this .y = az * bx - ax * bz;
159
+ this .z = ax * by - ay * bx;
152
160
 
153
161
  return this;
154
162
  },
155
163
  normalize: function ()
156
164
  {
157
- let length = Math .hypot (this .x, this .y, this .z);
165
+ const length = Math .hypot (this .x, this .y, this .z);
158
166
 
159
167
  if (length)
160
168
  {
161
- length = 1 / length;
162
-
163
- this .x *= length;
164
- this .y *= length;
165
- this .z *= length;
169
+ this .x /= length;
170
+ this .y /= length;
171
+ this .z /= length;
166
172
  }
167
173
 
168
174
  return this;
@@ -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);
@@ -162,16 +169,14 @@ function (Algorithm)
162
169
  },
163
170
  normalize: function ()
164
171
  {
165
- let length = Math .hypot (this .x, this .y, this .z, this .w);
172
+ const length = Math .hypot (this .x, this .y, this .z, this .w);
166
173
 
167
174
  if (length)
168
175
  {
169
- length = 1 / length;
170
-
171
- this .x *= length;
172
- this .y *= length;
173
- this .z *= length;
174
- this .w *= length;
176
+ this .x /= length;
177
+ this .y /= length;
178
+ this .z /= length;
179
+ this .w /= length;
175
180
  }
176
181
 
177
182
  return this;
@@ -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;
package/src/tests.js CHANGED
@@ -1,4 +1,6 @@
1
1
  const X_ITE_TESTS = [
2
+ { component: "Examples" },
3
+ { path: "../../Examples/Rathaus/index.x3dv" },
2
4
  { component: "CADGeometry" },
3
5
  { path: "CADGeometry/CADGeometry.x3d" },
4
6
  { path: "CADGeometry/CADLayer.x3d" },
@@ -184,15 +186,18 @@ const X_ITE_TESTS = [
184
186
  { path: "ParticleSystems/DolphinSurfaceEmitter.x3d" },
185
187
  { path: "ParticleSystems/Earth.x3dz" },
186
188
  { path: "ParticleSystems/ExplosionEmitter.x3d" },
189
+ { path: "ParticleSystems/ExplosionEmitterGeometry.x3d" },
187
190
  { path: "ParticleSystems/Fire.x3d" },
188
191
  { path: "ParticleSystems/Geometry.x3d" },
189
- { path: "ParticleSystems/GeometryLine.x3d" },
192
+ { path: "ParticleSystems/GeometryLineSet.x3d" },
193
+ { path: "ParticleSystems/GeometryPointSet.x3d" },
190
194
  { path: "ParticleSystems/GridTool.x3dv" },
191
195
  { path: "ParticleSystems/OpenVolume.x3d" },
192
196
  { path: "ParticleSystems/PointEmitter.x3d" },
193
197
  { path: "ParticleSystems/PolylineEmitter.x3d" },
194
198
  { path: "ParticleSystems/Smoke.x3d" },
195
199
  { path: "ParticleSystems/SurfaceEmitter.x3d" },
200
+ { path: "ParticleSystems/Tunnel.x3dv" },
196
201
  { path: "ParticleSystems/VolumeEmitter-U.x3d" },
197
202
  { path: "ParticleSystems/VolumeEmitter.x3d" },
198
203
  { path: "ParticleSystems/Waterfall.x3d" },
@@ -118,13 +118,14 @@ function (X3DEventObject,
118
118
  {
119
119
  X3DEventObject .prototype .setName .call (this, value)
120
120
 
121
- this ._name_changed = this .getBrowser () .getCurrentTime ();
121
+ if (this [_initialized])
122
+ this ._name_changed = this .getBrowser () .getCurrentTime ();
122
123
  },
123
124
  getMainScene: function ()
124
125
  {
125
126
  let scene = this [_executionContext] .getScene ();
126
127
 
127
- while (!scene .isMainScene ())
128
+ while (! scene .isMainScene ())
128
129
  scene = scene .getScene ();
129
130
 
130
131
  return scene;
@@ -133,7 +134,7 @@ function (X3DEventObject,
133
134
  {
134
135
  let executionContext = this [_executionContext];
135
136
 
136
- while (!executionContext .isScene ())
137
+ while (! executionContext .isScene ())
137
138
  executionContext = executionContext .getExecutionContext ();
138
139
 
139
140
  return executionContext;
@@ -344,7 +345,8 @@ function (X3DEventObject,
344
345
  if (!this .getPrivate ())
345
346
  field .addCloneCount (1);
346
347
 
347
- this ._fields_changed = this .getBrowser () .getCurrentTime ();
348
+ if (this [_initialized])
349
+ this ._fields_changed = this .getBrowser () .getCurrentTime ();
348
350
  },
349
351
  getField: (function ()
350
352
  {
@@ -412,7 +414,8 @@ function (X3DEventObject,
412
414
  if (!this .getPrivate ())
413
415
  field .removeCloneCount (1);
414
416
 
415
- this ._fields_changed = this .getBrowser () .getCurrentTime ();
417
+ if (this [_initialized])
418
+ this ._fields_changed = this .getBrowser () .getCurrentTime ();
416
419
  }
417
420
  },
418
421
  canUserDefinedFields: function ()
@@ -436,7 +439,8 @@ function (X3DEventObject,
436
439
  if (!this .getPrivate ())
437
440
  field .addCloneCount (1);
438
441
 
439
- this ._fields_changed = this .getBrowser () .getCurrentTime ();
442
+ if (this [_initialized])
443
+ this ._fields_changed = this .getBrowser () .getCurrentTime ();
440
444
  },
441
445
  removeUserDefinedField: function (name)
442
446
  {
@@ -453,7 +457,8 @@ function (X3DEventObject,
453
457
  if (!this .getPrivate ())
454
458
  field .removeCloneCount (1);
455
459
 
456
- this ._fields_changed = this .getBrowser () .getCurrentTime ();
460
+ if (this [_initialized])
461
+ this ._fields_changed = this .getBrowser () .getCurrentTime ();
457
462
  }
458
463
  },
459
464
  getUserDefinedFields: function ()
@@ -561,22 +566,28 @@ function (X3DEventObject,
561
566
  if (count === 0)
562
567
  return;
563
568
 
569
+ const time = this .getBrowser () .getCurrentTime ();
570
+
564
571
  this [_cloneCount] += count;
565
572
 
566
- this ._cloneCount_changed = this .getBrowser () .getCurrentTime ();
573
+ this [_executionContext] ._sceneGraph_changed = time;
567
574
 
568
- this [_executionContext] ._sceneGraph_changed = this .getBrowser () .getCurrentTime ();
575
+ if (this [_initialized])
576
+ this ._cloneCount_changed = time;
569
577
  },
570
578
  removeCloneCount: function (count)
571
579
  {
572
580
  if (count === 0)
573
581
  return;
574
582
 
583
+ const time = this .getBrowser () .getCurrentTime ();
584
+
575
585
  this [_cloneCount] -= count;
576
586
 
577
- this ._cloneCount_changed = this .getBrowser () .getCurrentTime ();
587
+ this [_executionContext] ._sceneGraph_changed = time;
578
588
 
579
- this [_executionContext] ._sceneGraph_changed = this .getBrowser () .getCurrentTime ();
589
+ if (this [_initialized])
590
+ this ._cloneCount_changed = time;
580
591
  },
581
592
  dispose: function ()
582
593
  {
@@ -176,7 +176,7 @@ function ($,
176
176
  const references = this .getReferences ();
177
177
 
178
178
  if (references .has (reference))
179
- return; // throw ???
179
+ return;
180
180
 
181
181
  references .add (reference);
182
182
 
@@ -343,7 +343,7 @@ function (Fields,
343
343
  this .textureQuality = TextureQuality .MEDIUM;
344
344
 
345
345
  textureProperties ._magnificationFilter = "NICEST";
346
- textureProperties ._minificationFilter = "AVG_PIXEL_AVG_MIPMAP";
346
+ textureProperties ._minificationFilter = "NEAREST_PIXEL_AVG_MIPMAP";
347
347
  textureProperties ._textureCompression = "NICEST";
348
348
  textureProperties ._generateMipMaps = true;
349
349
 
@@ -399,7 +399,7 @@ function (Fields,
399
399
  browser = this .getBrowser (),
400
400
  gl = browser .getContext ();
401
401
 
402
- logarithmicDepthBuffer = logarithmicDepthBuffer .getValue () && (gl .getVersion () >= 2 || Boolean (browser .getExtension ("EXT_frag_depth")));
402
+ logarithmicDepthBuffer = logarithmicDepthBuffer .getValue () && (gl .getVersion () >= 2 || Boolean (gl .getExtension ("EXT_frag_depth")));
403
403
 
404
404
  if (logarithmicDepthBuffer === browser .getRenderingProperties () ._LogarithmicDepthBuffer .getValue ())
405
405
  return;
@@ -92,14 +92,16 @@ function ($,
92
92
  this .startTime = 0;
93
93
  this .frames = 0;
94
94
 
95
- this .element = $("<div></div>") .addClass ("x_ite-private-browser-timings") .appendTo (this .getBrowser () .getSurface ());
95
+ this .element = $("<div></div>") .hide () .addClass ("x_ite-private-browser-timings") .appendTo (this .getBrowser () .getSurface ());
96
96
  this .table = $("<table></table>") .appendTo (this .element);
97
97
  this .header = $("<thead></thead>") .append ($("<tr></tr>") .append ($("<th colspan='2'></th>"))) .appendTo (this .table);
98
98
  this .body = $("<tbody></tbody>") .appendTo (this .table);
99
99
  this .footer = $("<tfoot></tfoot>") .append ($("<tr></tr>") .append ($("<td colspan='2'></td>"))) .appendTo (this .table);
100
- this .button = $("<button></button>") .attr ("type", "button") .click (this .set_type__ .bind (this)) .appendTo (this .footer .find ("td"));
100
+ this .button = $("<button></button>") .attr ("type", "button") .appendTo (this .footer .find ("td"));
101
101
  this .rows = [ ];
102
102
 
103
+ this .button .on ("click touchend", this .set_type__ .bind (this));
104
+
103
105
  this .set_button__ ();
104
106
  },
105
107
  getEnabled: function ()
@@ -0,0 +1,185 @@
1
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2
+ *******************************************************************************
3
+ *
4
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5
+ *
6
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
7
+ *
8
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
9
+ *
10
+ * The copyright notice above does not evidence any actual of intended
11
+ * publication of such source code, and is an unpublished work by create3000.
12
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
13
+ * create3000.
14
+ *
15
+ * No permission is granted to copy, distribute, or create derivative works from
16
+ * the contents of this software, in whole or in part, without the prior written
17
+ * permission of create3000.
18
+ *
19
+ * NON-MILITARY USE ONLY
20
+ *
21
+ * All create3000 software are effectively free software with a non-military use
22
+ * restriction. It is free. Well commented source is provided. You may reuse the
23
+ * source in any way you please with the exception anything that uses it must be
24
+ * marked to indicate is contains 'non-military use only' components.
25
+ *
26
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
27
+ *
28
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
29
+ *
30
+ * This file is part of the X_ITE Project.
31
+ *
32
+ * X_ITE is free software: you can redistribute it and/or modify it under the
33
+ * terms of the GNU General Public License version 3 only, as published by the
34
+ * Free Software Foundation.
35
+ *
36
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
37
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
39
+ * details (a copy is included in the LICENSE file that accompanied this code).
40
+ *
41
+ * You should have received a copy of the GNU General Public License version 3
42
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
43
+ * copy of the GPLv3 License.
44
+ *
45
+ * For Silvio, Joy and Adi.
46
+ *
47
+ ******************************************************************************/
48
+
49
+
50
+ define ([
51
+ "x_ite/DEBUG",
52
+ ],
53
+ function (DEBUG)
54
+ {
55
+ "use strict";
56
+
57
+ const extensions = [
58
+ "ANGLE_instanced_arrays",
59
+ "EXT_blend_minmax",
60
+ "EXT_frag_depth",
61
+ "EXT_shader_texture_lod",
62
+ "EXT_texture_filter_anisotropic",
63
+ "OES_element_index_uint",
64
+ "OES_standard_derivatives",
65
+ "OES_texture_float",
66
+ "OES_texture_float_linear",
67
+ "OES_texture_half_float",
68
+ "OES_texture_half_float_linear",
69
+ "OES_vertex_array_object",
70
+ "WEBGL_compressed_texture_s3tc",
71
+ //"WEBGL_debug_renderer_info",
72
+ "WEBGL_debug_shaders",
73
+ "WEBGL_depth_texture",
74
+ "WEBGL_draw_buffers",
75
+ "WEBGL_lose_context",
76
+
77
+ "EXT_color_buffer_float",
78
+ "EXT_color_buffer_half_float",
79
+ "EXT_disjoint_timer_query",
80
+ "EXT_disjoint_timer_query_webgl2",
81
+ "EXT_sRGB",
82
+ "WEBGL_color_buffer_float",
83
+ "WEBGL_compressed_texture_astc",
84
+ "WEBGL_compressed_texture_atc",
85
+ "WEBGL_compressed_texture_etc",
86
+ "WEBGL_compressed_texture_etc1",
87
+ "WEBGL_compressed_texture_pvrtc",
88
+ "WEBGL_compressed_texture_s3tc",
89
+ "WEBGL_compressed_texture_s3tc_srgb",
90
+
91
+ "EXT_float_blend",
92
+ "OES_fbo_render_mipmap",
93
+ "WEBGL_get_buffer_sub_data_async",
94
+ "WEBGL_multiview",
95
+ "WEBGL_security_sensitive_resources",
96
+ "WEBGL_shared_resources",
97
+
98
+ "EXT_clip_cull_distance",
99
+ "WEBGL_debug",
100
+ "WEBGL_dynamic_texture",
101
+ "WEBGL_subarray_uploads",
102
+ "WEBGL_texture_multisample",
103
+ "WEBGL_texture_source_iframe",
104
+ "WEBGL_video_texture",
105
+
106
+ "EXT_texture_storage",
107
+ "OES_depth24",
108
+ "WEBGL_debug_shader_precision",
109
+ "WEBGL_draw_elements_no_range_check",
110
+ "WEBGL_subscribe_uniform",
111
+ "WEBGL_texture_from_depth_video",
112
+ ];
113
+
114
+ const Context =
115
+ {
116
+ create: function (canvas, version, preserveDrawingBuffer)
117
+ {
118
+ const options = { preserveDrawingBuffer: preserveDrawingBuffer };
119
+
120
+ let gl = null;
121
+
122
+ if (version >= 2 && ! gl)
123
+ {
124
+ gl = canvas .getContext ("webgl2", options);
125
+
126
+ if (gl)
127
+ gl .getVersion = function () { return 2; };
128
+ }
129
+
130
+ if (version >= 1 && ! gl)
131
+ {
132
+ gl = canvas .getContext ("webgl", options) ||
133
+ canvas .getContext ("experimental-webgl", options);
134
+
135
+ if (gl)
136
+ {
137
+ gl .getVersion = function () { return 1; };
138
+
139
+ {
140
+ const ext = gl .getExtension ("OES_vertex_array_object");
141
+
142
+ gl .bindVertexArray = ext .bindVertexArrayOES .bind (ext);
143
+ gl .createVertexArray = ext .createVertexArrayOES .bind (ext);
144
+ gl .deleteVertexArray = ext .deleteVertexArrayOES .bind (ext);
145
+ gl .isVertexArray = ext .isVertexArrayOES .bind (ext);
146
+ }
147
+ }
148
+ }
149
+
150
+ if (! gl)
151
+ throw new Error ("Couldn't create WebGL context.");
152
+
153
+ // Feature detection:
154
+
155
+ // If the aliased lineWidth ranges are both 1, gl .lineWidth is probably not possible,
156
+ // thus we disable it completely to prevent webgl errors.
157
+
158
+ const aliasedLineWidthRange = gl .getParameter (gl .ALIASED_LINE_WIDTH_RANGE);
159
+
160
+ if (aliasedLineWidthRange [0] === 1 && aliasedLineWidthRange [1] === 1)
161
+ {
162
+ gl .lineWidth = Function .prototype;
163
+ gl .MUST_TRANSFORM_LINES = gl .getVersion () >= 2;
164
+
165
+ if (DEBUG)
166
+ console .info ("Lines are transformed if necessary to obtain thick lines.");
167
+ }
168
+ else
169
+ {
170
+ gl .MUST_TRANSFORM_LINES = false;
171
+ }
172
+
173
+ // Load extensions.
174
+
175
+ for (const extension of extensions)
176
+ gl .getExtension (extension);
177
+
178
+ // Return context.
179
+
180
+ return gl;
181
+ },
182
+ }
183
+
184
+ return Context;
185
+ });