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
@@ -91,27 +91,6 @@ function (Fields,
91
91
  {
92
92
  return "texCoord";
93
93
  },
94
- initialize: function ()
95
- {
96
- X3DSingleTextureCoordinateNode .prototype .initialize .call (this);
97
-
98
- this ._point .addInterest ("set_point__", this);
99
-
100
- this .set_point__ ();
101
- },
102
- set_point__: function ()
103
- {
104
- this .point = this ._point .getValue ();
105
- this .length = this ._point .length;
106
- },
107
- isEmpty: function ()
108
- {
109
- return this .length === 0;
110
- },
111
- getSize: function ()
112
- {
113
- return this .length;
114
- },
115
94
  get1Point: function (index, vector)
116
95
  {
117
96
  if (index >= 0 && index < this .length)
@@ -162,12 +141,12 @@ function (Fields,
162
141
  },
163
142
  getTexCoord: function (array)
164
143
  {
165
- const point = this .point;
166
-
167
- for (let i = 0, p = 0, length = this .length; i < length; ++ i, p += 4)
168
- array [i] = new Vector4 (point [p], point [p + 1], point [p + 2], point [p + 3]);
144
+ const
145
+ point = this .point,
146
+ length = this .length;
169
147
 
170
- array .length = this .length;
148
+ for (let i = 0, p = 0; i < length; ++ i, p += 4)
149
+ array .push (point [p], point [p + 1], point [p + 2], point [p + 3]);
171
150
 
172
151
  return array;
173
152
  },
@@ -134,29 +134,22 @@ function (X3DSingleTextureNode,
134
134
  },
135
135
  setTexture: function (width, height, depth, transparent, format, data)
136
136
  {
137
- try
138
- {
139
- this .width = width;
140
- this .height = height;
141
- this .depth = depth;
142
- this .data = data;
137
+ this .width = width;
138
+ this .height = height;
139
+ this .depth = depth;
140
+ this .data = data;
143
141
 
144
- const gl = this .getBrowser () .getContext ();
142
+ const gl = this .getBrowser () .getContext ();
145
143
 
146
- if (gl .getVersion () < 2)
147
- return;
144
+ if (gl .getVersion () < 2)
145
+ return;
148
146
 
149
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
150
- gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
151
- gl .bindTexture (gl .TEXTURE_3D, this .getTexture ());
152
- gl .texImage3D (gl .TEXTURE_3D, 0, format, width, height, depth, 0, format, gl .UNSIGNED_BYTE, data);
147
+ gl .bindTexture (gl .TEXTURE_3D, this .getTexture ());
148
+ gl .texImage3D (gl .TEXTURE_3D, 0, format, width, height, depth, 0, format, gl .UNSIGNED_BYTE, data);
153
149
 
154
- this .setTransparent (transparent);
155
- this .updateTextureProperties ();
156
- this .addNodeEvent ();
157
- }
158
- catch (error)
159
- { }
150
+ this .setTransparent (transparent);
151
+ this .updateTextureProperties ();
152
+ this .addNodeEvent ();
160
153
  },
161
154
  updateTextureProperties: function ()
162
155
  {
@@ -71,14 +71,14 @@ function (Fields,
71
71
 
72
72
  this .addType (X3DConstants .X3DVolumeDataNode);
73
73
 
74
- this .proximitySensorNode = executionContext .createNode ("ProximitySensor", false);
75
- this .transformNode = executionContext .createNode ("Transform", false);
76
- this .shapeNode = executionContext .createNode ("Shape", false);
77
- this .appearanceNode = executionContext .createNode ("Appearance", false);
78
- this .textureTransformNode = executionContext .createNode ("TextureTransform3D", false);
79
- this .geometryNode = executionContext .createNode ("QuadSet", false);
74
+ this .proximitySensorNode = executionContext .createNode ("ProximitySensor", false);
75
+ this .transformNode = executionContext .createNode ("Transform", false);
76
+ this .shapeNode = executionContext .createNode ("Shape", false);
77
+ this .appearanceNode = executionContext .createNode ("Appearance", false);
78
+ this .textureTransformNode = executionContext .createNode ("TextureTransform3D", false);
79
+ this .geometryNode = executionContext .createNode ("QuadSet", false);
80
80
  this .textureCoordinateNode = executionContext .createNode ("TextureCoordinate3D", false);
81
- this .coordinateNode = executionContext .createNode ("Coordinate", false);
81
+ this .coordinateNode = executionContext .createNode ("Coordinate", false);
82
82
 
83
83
  this .setCameraObject (true);
84
84
  }
@@ -95,8 +95,8 @@ function (DEBUG,
95
95
  SupportedNodes .addAbstractType (typeName, component .abstractTypes [typeName]);
96
96
  }
97
97
 
98
- if (component .browser)
99
- X3DBrowserContext .addContext (component .browser);
98
+ if (component .context)
99
+ X3DBrowserContext .addContext (component .context);
100
100
 
101
101
  if (component .name)
102
102
  {
@@ -62,7 +62,7 @@ function ($)
62
62
  {
63
63
  $(function ()
64
64
  {
65
- const elements = $("X3DCanvas");
65
+ const elements = $("x3d-canvas, X3DCanvas");
66
66
 
67
67
  this .show (elements, error);
68
68
 
@@ -83,10 +83,16 @@ function ($)
83
83
  if (consoleElement .length)
84
84
  consoleElement .append (document .createTextNode (error));
85
85
 
86
- elements .addClass ("x_ite-browser-fallback");
86
+ // X3DCanvas
87
87
  elements .children (".x_ite-private-browser") .hide ();
88
- elements .children (":not(.x_ite-private-browser)") .addClass ("x_ite-fallback");
89
88
  elements .children (":not(.x_ite-private-browser)") .show ();
89
+
90
+ // x3d-canvas
91
+ elements .each (function (i, e)
92
+ {
93
+ if (e .shadowRoot)
94
+ e .shadowRoot .appendChild (document .createElement ("slot"));
95
+ });
90
96
  },
91
97
  };
92
98
 
@@ -80,6 +80,10 @@ function (Color3,
80
80
  SFColor .prototype = Object .assign (Object .create (X3DField .prototype),
81
81
  {
82
82
  constructor: SFColor,
83
+ [Symbol .iterator]: function* ()
84
+ {
85
+ yield* this .getValue ();
86
+ },
83
87
  copy: function ()
84
88
  {
85
89
  return new SFColor (this .getValue () .copy ());
@@ -80,6 +80,10 @@ function (X3DField,
80
80
  SFColorRGBA .prototype = Object .assign (Object .create (X3DField .prototype),
81
81
  {
82
82
  constructor: SFColorRGBA,
83
+ [Symbol .iterator]: function* ()
84
+ {
85
+ yield* this .getValue ();
86
+ },
83
87
  copy: function ()
84
88
  {
85
89
  return new SFColorRGBA (this .getValue () .copy ());
@@ -58,6 +58,10 @@ function (X3DField)
58
58
  {
59
59
  return Object .assign (Object .create (X3DField .prototype),
60
60
  {
61
+ [Symbol .iterator]: function* ()
62
+ {
63
+ yield* this .getValue ();
64
+ },
61
65
  copy: function ()
62
66
  {
63
67
  return new (this .constructor) (this .getValue () .copy ());
@@ -90,6 +90,10 @@ function (SFVec3,
90
90
  SFRotation .prototype = Object .assign (Object .create (X3DField .prototype),
91
91
  {
92
92
  constructor: SFRotation,
93
+ [Symbol .iterator]: function* ()
94
+ {
95
+ yield* this .getValue ();
96
+ },
93
97
  copy: function ()
94
98
  {
95
99
  return new SFRotation (this .getValue () .copy ());
@@ -82,6 +82,10 @@ function (X3DField,
82
82
  SFString .prototype = Object .assign (Object .create (X3DField .prototype),
83
83
  {
84
84
  constructor: SFString,
85
+ [Symbol .iterator]: function* ()
86
+ {
87
+ yield* this .getValue ();
88
+ },
85
89
  copy: function ()
86
90
  {
87
91
  return new SFString (this .getValue ());
@@ -60,6 +60,10 @@ function (X3DField,
60
60
  {
61
61
  return Object .assign (Object .create (X3DField .prototype),
62
62
  {
63
+ [Symbol .iterator]: function* ()
64
+ {
65
+ yield* this .getValue ();
66
+ },
63
67
  copy: function ()
64
68
  {
65
69
  return new (this .constructor) (this .getValue () .copy ());
@@ -863,7 +863,7 @@ function ($,
863
863
  return;
864
864
  }
865
865
 
866
- //console .error (error);
866
+ console .error (error);
867
867
 
868
868
  console .error ("XML Parser Error: " + error .message);
869
869
  }
@@ -67,14 +67,14 @@ function (ViewVolume,
67
67
  this .height = height;
68
68
  this .array = new Uint8Array (width * height * 4);
69
69
 
70
- // The frame buffer.
70
+ // Create frame buffer.
71
71
 
72
72
  this .lastBuffer = gl .getParameter (gl .FRAMEBUFFER_BINDING);
73
73
  this .buffer = gl .createFramebuffer ();
74
74
 
75
75
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .buffer);
76
76
 
77
- // The depth texture
77
+ // Create color texture.
78
78
 
79
79
  this .colorTexture = gl .createTexture ();
80
80
 
@@ -87,9 +87,9 @@ function (ViewVolume,
87
87
 
88
88
  gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .COLOR_ATTACHMENT0, gl .TEXTURE_2D, this .colorTexture, 0);
89
89
 
90
- // The depth buffer
90
+ // Create depth buffer.
91
91
 
92
- if (gl .getVersion () >= 2 || browser .getExtension ("WEBGL_depth_texture"))
92
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
93
93
  {
94
94
  this .depthTexture = gl .createTexture ();
95
95
 
@@ -103,7 +103,7 @@ function (ViewVolume,
103
103
  const internalFormat = gl .getVersion () >= 2 ? gl .DEPTH_COMPONENT24 : gl .DEPTH_COMPONENT;
104
104
 
105
105
  gl .texImage2D (gl .TEXTURE_2D, 0, internalFormat, width, height, 0, gl .DEPTH_COMPONENT, gl .UNSIGNED_INT, null);
106
- gl.framebufferTexture2D (gl .FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, this .depthTexture, 0);
106
+ gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .DEPTH_ATTACHMENT, gl .TEXTURE_2D, this .depthTexture, 0);
107
107
  }
108
108
  else
109
109
  {
@@ -114,10 +114,11 @@ function (ViewVolume,
114
114
  gl .framebufferRenderbuffer (gl .FRAMEBUFFER, gl .DEPTH_ATTACHMENT, gl .RENDERBUFFER, this .depthBuffer);
115
115
  }
116
116
 
117
- // Always check that our framebuffer is ok
117
+ // Always check that our framebuffer is ok.
118
118
 
119
119
  const complete = gl .checkFramebufferStatus (gl .FRAMEBUFFER) === gl .FRAMEBUFFER_COMPLETE;
120
120
 
121
+ gl .bindTexture (gl .TEXTURE_2D, null);
121
122
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .lastBuffer);
122
123
 
123
124
  if (complete)
@@ -165,46 +166,39 @@ function (ViewVolume,
165
166
 
166
167
  return function (projectionMatrix, viewport)
167
168
  {
168
- try
169
- {
170
- const
171
- gl = this .browser .getContext (),
172
- array = this .array,
173
- width = this .width,
174
- height = this .height;
169
+ const
170
+ gl = this .browser .getContext (),
171
+ array = this .array,
172
+ width = this .width,
173
+ height = this .height;
175
174
 
176
- let
177
- winx = 0,
178
- winy = 0,
179
- winz = Number .POSITIVE_INFINITY;
175
+ let
176
+ winx = 0,
177
+ winy = 0,
178
+ winz = Number .POSITIVE_INFINITY;
180
179
 
181
- invProjectionMatrix .assign (projectionMatrix) .inverse ();
180
+ invProjectionMatrix .assign (projectionMatrix) .inverse ();
182
181
 
183
- gl .readPixels (0, 0, width, height, gl .RGBA, gl .UNSIGNED_BYTE, array);
182
+ gl .readPixels (0, 0, width, height, gl .RGBA, gl .UNSIGNED_BYTE, array);
184
183
 
185
- for (let wy = 0, i = 0; wy < height; ++ wy)
184
+ for (let wy = 0, i = 0; wy < height; ++ wy)
185
+ {
186
+ for (let wx = 0; wx < width; ++ wx, i += 4)
186
187
  {
187
- for (let wx = 0; wx < width; ++ wx, i += 4)
188
+ const wz = array [i] / 255 + array [i + 1] / (255 * 255) + array [i + 2] / (255 * 255 * 255) + array [i + 3] / (255 * 255 * 255 * 255);
189
+
190
+ if (wz < winz)
188
191
  {
189
- const wz = array [i] / 255 + array [i + 1] / (255 * 255) + array [i + 2] / (255 * 255 * 255) + array [i + 3] / (255 * 255 * 255 * 255);
190
-
191
- if (wz < winz)
192
- {
193
- winx = wx;
194
- winy = wy;
195
- winz = wz;
196
- }
192
+ winx = wx;
193
+ winy = wy;
194
+ winz = wz;
197
195
  }
198
196
  }
197
+ }
199
198
 
200
- ViewVolume .unProjectPointMatrix (winx, winy, winz, invProjectionMatrix, viewport, point);
199
+ ViewVolume .unProjectPointMatrix (winx, winy, winz, invProjectionMatrix, viewport, point);
201
200
 
202
- return point .z;
203
- }
204
- catch (error)
205
- {
206
- return 0;
207
- }
201
+ return point .z;
208
202
  };
209
203
  })(),
210
204
  bind: function ()
@@ -218,8 +212,21 @@ function (ViewVolume,
218
212
  unbind: function ()
219
213
  {
220
214
  const gl = this .browser .getContext ();
215
+
221
216
  gl .bindFramebuffer (gl .FRAMEBUFFER, this .lastBuffer);
222
217
  },
218
+ delete: function ()
219
+ {
220
+ const gl = this .browser .getContext ();
221
+
222
+ gl .deleteFramebuffer (this .buffer);
223
+ gl .deleteTexture (this .colorTexture);
224
+
225
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
226
+ gl .deleteTexture (this .depthTexture);
227
+ else
228
+ gl .deleteRenderbuffer (this .depthBuffer);
229
+ },
223
230
  };
224
231
 
225
232
  for (const key of Reflect .ownKeys (TextureBuffer .prototype))
@@ -0,0 +1,101 @@
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 (function ()
51
+ {
52
+ "use strict";
53
+
54
+ function VertexArray ()
55
+ {
56
+ this .vertexArray = null;
57
+ this .shaderNode = null;
58
+ this .tainted = true;
59
+ }
60
+
61
+ VertexArray .prototype =
62
+ {
63
+ update: function ()
64
+ {
65
+ this .tainted = true;
66
+ },
67
+ enable: function (gl, shaderNode)
68
+ {
69
+ if (this .tainted || this .shaderNode !== shaderNode)
70
+ {
71
+ gl .deleteVertexArray (this .vertexArray);
72
+
73
+ this .vertexArray = gl .createVertexArray ();
74
+ this .shaderNode = shaderNode;
75
+ this .tainted = false;
76
+
77
+ gl .bindVertexArray (this .vertexArray);
78
+
79
+ // console .log ("update vao");
80
+
81
+ return true;
82
+ }
83
+ else
84
+ {
85
+ gl .bindVertexArray (this .vertexArray);
86
+
87
+ return false;
88
+ }
89
+ },
90
+ disable: function (gl)
91
+ {
92
+ gl .bindVertexArray (null);
93
+ },
94
+ delete: function (gl)
95
+ {
96
+ gl .deleteVertexArray (this .vertexArray);
97
+ },
98
+ };
99
+
100
+ return VertexArray;
101
+ });