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
@@ -69,6 +69,7 @@ function (Appearance,
69
69
  "use strict";
70
70
 
71
71
  const
72
+ _lineStippleScale = Symbol (),
72
73
  _linetypeTextures = Symbol (),
73
74
  _hatchStyleTextures = Symbol (),
74
75
  _defaultAppearance = Symbol (),
@@ -76,12 +77,15 @@ function (Appearance,
76
77
  _defaultLineProperties = Symbol (),
77
78
  _defaultFillProperties = Symbol (),
78
79
  _defaultMaterial = Symbol (),
79
- _lineFillTextureProperties = Symbol ();
80
+ _lineFillTextureProperties = Symbol (),
81
+ _lineTransformShaderNode = Symbol (),
82
+ _lineTransformFeedback = Symbol ();
80
83
 
81
84
  function X3DShapeContext ()
82
85
  {
83
86
  this [_linetypeTextures] = [ ];
84
87
  this [_hatchStyleTextures] = [ ];
88
+ this [_lineStippleScale] = 1 / (this .getPixelPerPoint () * 32); // 32px
85
89
  }
86
90
 
87
91
  X3DShapeContext .prototype =
@@ -110,6 +114,10 @@ function (Appearance,
110
114
 
111
115
  return this [_defaultPointProperties];
112
116
  },
117
+ getLineStippleScale: function ()
118
+ {
119
+ return this [_lineStippleScale];
120
+ },
113
121
  getDefaultLineProperties: function ()
114
122
  {
115
123
  this [_defaultLineProperties] = new LineProperties (this .getPrivateScene ());
@@ -148,11 +156,8 @@ function (Appearance,
148
156
 
149
157
  return this [_defaultMaterial];
150
158
  },
151
- getLinetype: function (index)
159
+ getLinetypeTexture: function (index)
152
160
  {
153
- if (index < 1 || index > 15)
154
- index = 1;
155
-
156
161
  let linetypeTexture = this [_linetypeTextures] [index];
157
162
 
158
163
  if (linetypeTexture)
@@ -166,11 +171,8 @@ function (Appearance,
166
171
 
167
172
  return linetypeTexture;
168
173
  },
169
- getHatchStyle: function (index)
174
+ getHatchStyleTexture: function (index)
170
175
  {
171
- if (index < 1 || index > 19)
172
- index = 1;
173
-
174
176
  let hatchStyleTexture = this [_hatchStyleTextures] [index];
175
177
 
176
178
  if (hatchStyleTexture)
@@ -187,6 +189,10 @@ function (Appearance,
187
189
  getLineFillTextureProperties: function ()
188
190
  {
189
191
  this [_lineFillTextureProperties] = new TextureProperties (this .getPrivateScene ());
192
+
193
+ this [_lineFillTextureProperties] ._minificationFilter = "NEAREST_PIXEL";
194
+ this [_lineFillTextureProperties] ._magnificationFilter = "NEAREST_PIXEL";
195
+
190
196
  this [_lineFillTextureProperties] .setup ();
191
197
 
192
198
  this .getLineFillTextureProperties = function () { return this [_lineFillTextureProperties]; };
@@ -195,6 +201,41 @@ function (Appearance,
195
201
 
196
202
  return this [_lineFillTextureProperties];
197
203
  },
204
+ getLineTransformShader: function ()
205
+ {
206
+ this [_lineTransformShaderNode] = this .createShader ("LineTransformShader", "LineTransform");
207
+
208
+ this [_lineTransformShaderNode] .setUniforms ([
209
+ "viewport",
210
+ "modelViewProjectionMatrix",
211
+ "invModelViewProjectionMatrix",
212
+ "scale",
213
+ ]);
214
+
215
+ this [_lineTransformShaderNode] .setTransformFeedbackVaryings ([
216
+ "fogDepth0", "color0", "texCoord0", "vertex0",
217
+ "fogDepth1", "color1", "texCoord1", "vertex1",
218
+ "fogDepth2", "color2", "texCoord2", "vertex2",
219
+ ]);
220
+
221
+ this .getLineTransformShader = function () { return this [_lineTransformShaderNode]; };
222
+
223
+ Object .defineProperty (this, "getLineTransformShader", { enumerable: false });
224
+
225
+ return this [_lineTransformShaderNode];
226
+ },
227
+ getLineTransformFeedback: function ()
228
+ {
229
+ const gl = this .getContext ();
230
+
231
+ this [_lineTransformFeedback] = gl .createTransformFeedback ();
232
+
233
+ this .getLineTransformFeedback = function () { return this [_lineTransformFeedback]; };
234
+
235
+ Object .defineProperty (this, "getLineTransformFeedback", { enumerable: false });
236
+
237
+ return this [_lineTransformFeedback];
238
+ },
198
239
  };
199
240
 
200
241
  return X3DShapeContext;
@@ -66,7 +66,7 @@ function ($,
66
66
  function X3DTextContext ()
67
67
  {
68
68
  this [_fontCache] = new Map ();
69
- this [_glyphCache] = new Map (); // [font] [primitveQuality] [glyphIndex]
69
+ this [_glyphCache] = new Map (); // [font] [primitiveQuality] [glyphIndex]
70
70
  }
71
71
 
72
72
  X3DTextContext .prototype =
@@ -102,30 +102,21 @@ function ($,
102
102
  setFont: function (deferred, error, font)
103
103
  {
104
104
  if (error)
105
- {
106
105
  deferred .reject (error);
107
- }
108
106
  else
109
- {
110
- // // Workaround to initialize composite glyphs.
111
- // for (let i = 0, length = font .numGlyphs; i < length; ++ i)
112
- // font .glyphs .get (i) .getPath (0, 0, 1);
113
-
114
- // Resolve callbacks.
115
107
  deferred .resolve (font);
116
- }
117
108
  },
118
- getGlyph: function (font, primitveQuality, glyphIndex)
109
+ getGlyph: function (font, primitiveQuality, glyphIndex)
119
110
  {
120
111
  let cachedFont = this [_glyphCache] .get (font);
121
112
 
122
113
  if (!cachedFont)
123
114
  this [_glyphCache] .set (font, cachedFont = [ ]);
124
115
 
125
- let cachedQuality = cachedFont [primitveQuality];
116
+ let cachedQuality = cachedFont [primitiveQuality];
126
117
 
127
118
  if (!cachedQuality)
128
- cachedQuality = cachedFont [primitveQuality] = [ ];
119
+ cachedQuality = cachedFont [primitiveQuality] = [ ];
129
120
 
130
121
  let cachedGlyph = cachedQuality [glyphIndex];
131
122
 
@@ -84,6 +84,7 @@ function (TextAlignment,
84
84
 
85
85
  function X3DTextGeometry (text, fontStyle)
86
86
  {
87
+ this .browser = text .getBrowser ();
87
88
  this .text = text;
88
89
  this .fontStyle = fontStyle;
89
90
  this .glyphs = [ ];
@@ -100,7 +101,7 @@ function (TextAlignment,
100
101
  constructor: X3DTextGeometry,
101
102
  getBrowser: function ()
102
103
  {
103
- return this .text .getBrowser ();
104
+ return this .browser;
104
105
  },
105
106
  getText: function ()
106
107
  {
@@ -51,10 +51,12 @@ define ([
51
51
  "x_ite/Components/Texturing/TextureProperties",
52
52
  "x_ite/Components/Texturing/TextureTransform",
53
53
  "x_ite/Components/Texturing/TextureCoordinate",
54
+ "x_ite/Browser/Core/TextureQuality",
54
55
  ],
55
56
  function (TextureProperties,
56
57
  TextureTransform,
57
- TextureCoordinate)
58
+ TextureCoordinate,
59
+ TextureQuality)
58
60
  {
59
61
  "use strict";
60
62
 
@@ -66,9 +68,6 @@ function (TextureProperties,
66
68
  _maxCombinedTextureUnits = Symbol (),
67
69
  _textureMemory = Symbol (),
68
70
  _combinedTextureUnits = Symbol (),
69
- _texture2DUnit = Symbol (),
70
- _texture3DUnit = Symbol (),
71
- _textureCubeUnit = Symbol (),
72
71
  _texture2DUnits = Symbol (),
73
72
  _texture3DUnits = Symbol (),
74
73
  _textureCubeUnits = Symbol (),
@@ -102,6 +101,8 @@ function (TextureProperties,
102
101
  {
103
102
  const gl = this .getContext ();
104
103
 
104
+ gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
105
+
105
106
  this [_maxTextureSize] = gl .getParameter (gl .MAX_TEXTURE_SIZE);
106
107
  this [_maxCombinedTextureUnits] = gl .getParameter (gl .MAX_COMBINED_TEXTURE_IMAGE_UNITS);
107
108
  this [_textureMemory] = NaN;
@@ -109,12 +110,9 @@ function (TextureProperties,
109
110
  // Get texture Units
110
111
 
111
112
  this [_combinedTextureUnits] = [...Array (this [_maxCombinedTextureUnits]) .keys ()];
112
- this [_texture2DUnit] = this [_combinedTextureUnits] .pop ();
113
- this [_texture3DUnit] = this [_combinedTextureUnits] .pop ();
114
- this [_textureCubeUnit] = this [_combinedTextureUnits] .pop ();
115
- this [_texture2DUnits] = [this [_texture2DUnit]];
116
- this [_texture3DUnits] = [this [_texture3DUnit]];
117
- this [_textureCubeUnits] = [this [_textureCubeUnit]];
113
+ this [_texture2DUnits] = [this [_combinedTextureUnits] .pop ()];
114
+ this [_texture3DUnits] = [this [_combinedTextureUnits] .pop ()];
115
+ this [_textureCubeUnits] = [this [_combinedTextureUnits] .pop ()];
118
116
 
119
117
  // Default Texture 2D Unit
120
118
 
@@ -122,11 +120,9 @@ function (TextureProperties,
122
120
 
123
121
  this [_defaultTexture2D] = gl .createTexture ();
124
122
 
123
+ gl .activeTexture (gl .TEXTURE0 + this [_texture2DUnits] [0]);
125
124
  gl .bindTexture (gl .TEXTURE_2D, this [_defaultTexture2D]);
126
- gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
127
-
128
- gl .activeTexture (gl .TEXTURE0 + this [_texture2DUnit]);
129
- gl .bindTexture (gl .TEXTURE_2D, this [_defaultTexture2D]);
125
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
130
126
 
131
127
  // Default Texture 3D Unit
132
128
 
@@ -134,31 +130,31 @@ function (TextureProperties,
134
130
  {
135
131
  this [_defaultTexture3D] = gl .createTexture ();
136
132
 
133
+ gl .activeTexture (gl .TEXTURE0 + this [_texture3DUnits] [0]);
137
134
  gl .bindTexture (gl .TEXTURE_3D, this [_defaultTexture3D]);
138
- gl .texImage3D (gl .TEXTURE_3D, 0, gl .RGBA, 1, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
139
-
140
- gl .activeTexture (gl .TEXTURE0 + this [_texture3DUnit]);
141
- gl .bindTexture (gl .TEXTURE_3D, this [_defaultTexture3D]);
135
+ gl .texImage3D (gl .TEXTURE_3D, 0, gl .RGBA, 1, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
142
136
  }
143
137
 
144
138
  // Default Texture Cube Unit
145
139
 
146
140
  this [_defaultTextureCube] = gl .createTexture ();
147
141
 
142
+ gl .activeTexture (gl .TEXTURE0 + this [_textureCubeUnits] [0]);
148
143
  gl .bindTexture (gl .TEXTURE_CUBE_MAP, this [_defaultTextureCube]);
149
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_Z, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
150
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
151
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_X, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
152
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_X, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
153
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_Y, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
154
- gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
155
-
156
- gl .activeTexture (gl .TEXTURE0 + this [_textureCubeUnit]);
157
- gl .bindTexture (gl .TEXTURE_CUBE_MAP, this [_defaultTextureCube]);
144
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_Z, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
145
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
146
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_X, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
147
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_X, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
148
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_POSITIVE_Y, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
149
+ gl .texImage2D (gl .TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData);
158
150
 
159
151
  // Init texture units.
160
152
 
161
153
  this .resetTextureUnits ();
154
+
155
+ // Set texture quality.
156
+
157
+ this .setTextureQuality (this .getBrowserOptions () .getTextureQuality ());
162
158
  },
163
159
  getMaxTextures: function ()
164
160
  {
@@ -182,7 +178,7 @@ function (TextureProperties,
182
178
  {
183
179
  -- this [_texture2DUnitIndex];
184
180
 
185
- return this [_texture2DUnits] .shift ();
181
+ return this [_texture2DUnits] .pop ();
186
182
  }
187
183
  else
188
184
  {
@@ -194,9 +190,9 @@ function (TextureProperties,
194
190
  if (textureUnit === undefined)
195
191
  return;
196
192
 
197
- this [_texture2DUnitIndex] = Math .max (this [_texture2DUnitIndex] + 1, 1);
193
+ ++ this [_texture2DUnitIndex];
198
194
 
199
- this [_texture2DUnits] .unshift (textureUnit);
195
+ this [_texture2DUnits] .push (textureUnit);
200
196
  },
201
197
  getTexture2DUnit: function ()
202
198
  {
@@ -251,15 +247,15 @@ function (TextureProperties,
251
247
  },
252
248
  getDefaultTexture2DUnit: function ()
253
249
  {
254
- return this [_texture2DUnit];
250
+ return this [_texture2DUnits] [0];
255
251
  },
256
252
  getDefaultTexture3DUnit: function ()
257
253
  {
258
- return this [_texture3DUnit];
254
+ return this [_texture3DUnits] [0];
259
255
  },
260
256
  getDefaultTextureCubeUnit: function ()
261
257
  {
262
- return this [_textureCubeUnit];
258
+ return this [_textureCubeUnits] [0];
263
259
  },
264
260
  getTextureMemory: function ()
265
261
  {
@@ -277,7 +273,7 @@ function (TextureProperties,
277
273
  {
278
274
  this [_defaultTextureProperties] = new TextureProperties (this .getPrivateScene ());
279
275
  this [_defaultTextureProperties] ._magnificationFilter = "NICEST";
280
- this [_defaultTextureProperties] ._minificationFilter = "AVG_PIXEL_AVG_MIPMAP";
276
+ this [_defaultTextureProperties] ._minificationFilter = "NEAREST_PIXEL_AVG_MIPMAP";
281
277
  this [_defaultTextureProperties] ._textureCompression = "NICEST";
282
278
  this [_defaultTextureProperties] ._generateMipMaps = true;
283
279
 
@@ -311,6 +307,47 @@ function (TextureProperties,
311
307
 
312
308
  return this [_defaultTextureCoordinate];
313
309
  },
310
+ setTextureQuality: function (textureQuality)
311
+ {
312
+ const textureProperties = this .getDefaultTextureProperties ();
313
+
314
+ switch (textureQuality)
315
+ {
316
+ case TextureQuality .LOW:
317
+ {
318
+ textureProperties ._magnificationFilter = "AVG_PIXEL";
319
+ textureProperties ._minificationFilter = "AVG_PIXEL";
320
+ textureProperties ._textureCompression = "FASTEST";
321
+ textureProperties ._generateMipMaps = true;
322
+
323
+ //glHint (GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
324
+ //glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
325
+ break;
326
+ }
327
+ case TextureQuality .MEDIUM:
328
+ {
329
+ textureProperties ._magnificationFilter = "NICEST";
330
+ textureProperties ._minificationFilter = "NEAREST_PIXEL_AVG_MIPMAP";
331
+ textureProperties ._textureCompression = "NICEST";
332
+ textureProperties ._generateMipMaps = true;
333
+
334
+ //glHint (GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
335
+ //glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
336
+ break;
337
+ }
338
+ case TextureQuality .HIGH:
339
+ {
340
+ textureProperties ._magnificationFilter = "NICEST";
341
+ textureProperties ._minificationFilter = "NICEST";
342
+ textureProperties ._textureCompression = "NICEST";
343
+ textureProperties ._generateMipMaps = true;
344
+
345
+ //glHint (GL_GENERATE_MIPMAP_HINT, GL_NICEST);
346
+ //glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
347
+ break;
348
+ }
349
+ }
350
+ },
314
351
  };
315
352
 
316
353
  return X3DTexturingContext;
@@ -110,8 +110,8 @@ function (dicomParser,
110
110
  this .getTansferSyntax ();
111
111
  this .getPixelData ();
112
112
 
113
- if (DEBUG)
114
- console .log (this);
113
+ // if (DEBUG)
114
+ // console .log (this);
115
115
 
116
116
  return this .dicom;
117
117
  },
@@ -93,7 +93,7 @@ function (Vector3)
93
93
  return function (now)
94
94
  {
95
95
  const
96
- time = (now + performance .timeOrigin) / 1000,
96
+ time = (performance .timeOrigin + now) / 1000,
97
97
  interval = time - this [_currentTime];
98
98
 
99
99
  this [_currentTime] = time;
@@ -106,10 +106,12 @@ function (Vector3)
106
106
  lastPosition .assign (this [_currentPosition]);
107
107
  this [_currentPosition] .set (cameraSpaceMatrix [12], cameraSpaceMatrix [13], cameraSpaceMatrix [14]);
108
108
 
109
- this [_currentSpeed] = lastPosition .subtract (this [_currentPosition]) .abs () * this [_currentFrameRate];
109
+ this [_currentSpeed] = lastPosition .subtract (this [_currentPosition]) .magnitude () * this [_currentFrameRate];
110
110
  }
111
111
  else
112
+ {
112
113
  this [_currentSpeed] = 0;
114
+ }
113
115
  };
114
116
  })(),
115
117
  };
@@ -49,5 +49,5 @@
49
49
 
50
50
  define (function ()
51
51
  {
52
- return "5.0.3";
52
+ return "6.1.0";
53
53
  });
@@ -417,7 +417,7 @@ function ($,
417
417
 
418
418
  // arguments .length === 1
419
419
 
420
- if (!(url instanceof Fields .MFString))
420
+ if (! (url instanceof Fields .MFString))
421
421
  throw new Error ("Browser.createX3DFromURL: url must be of type MFString.");
422
422
 
423
423
  const
@@ -465,12 +465,12 @@ function ($,
465
465
  {
466
466
  if (loader !== this [_loader])
467
467
  {
468
- reject ();
468
+ reject ("Loading of X3D file aborted.");
469
469
  return;
470
470
  }
471
471
 
472
472
  if (! this .getBrowserOptions () .getSplashScreen ())
473
- this .getCanvas () .fadeIn (0);
473
+ this .getCanvas () .show ();
474
474
 
475
475
  if (scene)
476
476
  {
@@ -486,7 +486,7 @@ function ($,
486
486
 
487
487
  setTimeout (function () { this .getSplashScreen () .find (".x_ite-private-spinner-text") .text (_ ("Failed loading world.")); } .bind (this), 31);
488
488
 
489
- reject ();
489
+ reject ("Couldn't load X3D file.");
490
490
  }
491
491
  }
492
492
  .bind (this),
@@ -494,7 +494,7 @@ function ($,
494
494
  {
495
495
  if (loader !== this [_loader])
496
496
  {
497
- reject ();
497
+ reject ("Change viewpoint aborted.");
498
498
  return;
499
499
  }
500
500
 
@@ -509,7 +509,7 @@ function ($,
509
509
  {
510
510
  if (loader !== this [_loader])
511
511
  {
512
- reject ();
512
+ reject ("Loading of file aborted.");
513
513
  return;
514
514
  }
515
515
 
@@ -771,6 +771,7 @@ function ($,
771
771
  this .setLive (true);
772
772
  this .getExecutionContext () .setLive (true);
773
773
  this .advanceTime (performance .now ());
774
+ this .addBrowserEvent ();
774
775
  },
775
776
  endUpdate: function ()
776
777
  {
@@ -104,6 +104,7 @@ function ($,
104
104
  _world = Symbol (),
105
105
  _changedTime = Symbol (),
106
106
  _renderCallback = Symbol (),
107
+ _previousTime = Symbol (),
107
108
  _systemTime = Symbol (),
108
109
  _systemStartTime = Symbol (),
109
110
  _browserTime = Symbol (),
@@ -147,6 +148,7 @@ function ($,
147
148
  "finished", new SFTime ());
148
149
 
149
150
  this [_changedTime] = 0;
151
+ this [_previousTime] = 0;
150
152
  this [_renderCallback] = this .traverse .bind (this);
151
153
  this [_systemTime] = 0;
152
154
  this [_systemStartTime] = 0;
@@ -206,6 +208,10 @@ function ($,
206
208
  if (context .prototype .initialize)
207
209
  context .prototype .initialize .call (this);
208
210
  }
211
+
212
+ // Process events from context creation. This will setup nodes like
213
+ // geometry option nodes before any node is created.
214
+ this .processEvents ();
209
215
  },
210
216
  initialized: function ()
211
217
  {
@@ -255,14 +261,32 @@ function ($,
255
261
 
256
262
  this [_changedTime] = this .getCurrentTime ();
257
263
 
258
- this .requestAnimationFrame ();
264
+ requestAnimationFrame (this [_renderCallback]);
259
265
  },
260
- requestAnimationFrame: function ()
266
+ limitFrameRate: function (now)
261
267
  {
262
- window .requestAnimationFrame (this [_renderCallback]);
268
+ if (now === this [_previousTime])
269
+ {
270
+ requestAnimationFrame (this [_renderCallback]);
271
+
272
+ return true;
273
+ }
274
+ else
275
+ {
276
+ this [_previousTime] = now;
277
+
278
+ return false;
279
+ }
263
280
  },
264
281
  traverse: function (now)
265
282
  {
283
+ // Limit frame rate.
284
+
285
+ if (this .limitFrameRate (now))
286
+ return;
287
+
288
+ // Start rendering.
289
+
266
290
  const gl = this .getContext ();
267
291
 
268
292
  const t0 = performance .now ();
@@ -287,9 +311,6 @@ function ($,
287
311
  this ._sensorEvents .processInterests ();
288
312
  this .processEvents ();
289
313
 
290
- // XXX: The depth buffer must be cleared here, although it is cleared in each layer, otherwise there is a
291
- // XXX: phantom image in the depth buffer at least in Firefox.
292
-
293
314
  const t3 = performance .now ();
294
315
  gl .clearColor (0, 0, 0, 0);
295
316
  gl .clear (gl .COLOR_BUFFER_BIT);
@@ -334,12 +355,20 @@ function ($,
334
355
 
335
356
  contexts .push (context);
336
357
 
337
- Object .assign (X3DBrowserContext .prototype, context .prototype);
358
+ for (const key of Object .keys (context .prototype) .concat (Object .getOwnPropertySymbols (context .prototype)))
359
+ {
360
+ if (X3DBrowserContext .prototype .hasOwnProperty (key))
361
+ continue;
338
362
 
339
- for (const key of Reflect .ownKeys (context .prototype))
340
- Object .defineProperty (X3DBrowserContext .prototype, key, { enumerable: false });
363
+ Object .defineProperty (X3DBrowserContext .prototype, key,
364
+ {
365
+ value: context .prototype [key],
366
+ enumerable: false,
367
+ writable: true,
368
+ });
369
+ }
341
370
 
342
- $("X3DCanvas") .each (function (i, canvas)
371
+ $("x3d-canvas, X3DCanvas") .each (function (i, canvas)
343
372
  {
344
373
  const browser = X3D .getBrowser (canvas);
345
374
 
@@ -347,6 +376,10 @@ function ($,
347
376
 
348
377
  if (context .prototype .initialize)
349
378
  context .prototype .initialize .call (browser);
379
+
380
+ // Process events from context creation. This will setup nodes like
381
+ // geometry option nodes before any node is created.
382
+ browser .processEvents ();
350
383
  });
351
384
  },
352
385
  });
@@ -140,6 +140,8 @@ function (Fields,
140
140
  }
141
141
  }
142
142
  }
143
+
144
+ destinationField .setModificationTime (sourceField .getModificationTime ());
143
145
  }
144
146
  catch (error)
145
147
  {
@@ -173,6 +175,8 @@ function (Fields,
173
175
  }
174
176
  }
175
177
  }
178
+
179
+ destinationField .setModificationTime (sourceField .getModificationTime ());
176
180
  }
177
181
 
178
182
  copy .setup ();
@@ -49,14 +49,12 @@
49
49
 
50
50
  define ([
51
51
  "x_ite/Base/X3DChildObject",
52
- "x_ite/Base/FieldDefinitionArray",
53
52
  "x_ite/Components/Core/X3DNode",
54
53
  "x_ite/Execution/X3DExecutionContext",
55
54
  "x_ite/Base/X3DConstants",
56
55
  "x_ite/InputOutput/Generator",
57
56
  ],
58
57
  function (X3DChildObject,
59
- FieldDefinitionArray,
60
58
  X3DNode,
61
59
  X3DExecutionContext,
62
60
  X3DConstants,
@@ -193,7 +193,6 @@ function (Fields,
193
193
  const gl = this .getBrowser () .getContext ();
194
194
 
195
195
  gl .bindTexture (this .getTarget (), this .getTexture ());
196
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
197
196
 
198
197
  if (this .isComplete ())
199
198
  {
@@ -202,14 +201,12 @@ function (Fields,
202
201
  for (let i = 0; i < 6; ++ i)
203
202
  {
204
203
  const
205
- gl = this .getBrowser () .getContext (),
206
204
  texture = textures [i],
207
205
  width = texture .getWidth (),
208
206
  height = texture .getHeight (),
209
207
  data = texture .getData ();
210
208
 
211
209
  gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, !texture .getFlipY ());
212
- gl .pixelStorei (gl .UNPACK_ALIGNMENT, 1);
213
210
 
214
211
  if (data instanceof Uint8Array)
215
212
  {
@@ -217,10 +214,12 @@ function (Fields,
217
214
  }
218
215
  else
219
216
  {
220
- gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, data);
217
+ gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, data);
221
218
  }
222
219
  }
223
220
 
221
+ gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
222
+
224
223
  this .updateTextureProperties ();
225
224
  }
226
225
  else
@@ -219,7 +219,6 @@ function (Fields,
219
219
  renderer .getProjectionMatrix () .pushMatrix (projectionMatrix);
220
220
 
221
221
  gl .bindTexture (this .getTarget (), this .getTexture ());
222
- gl .pixelStorei (gl .UNPACK_FLIP_Y_WEBGL, false);
223
222
 
224
223
  for (let i = 0; i < 6; ++ i)
225
224
  {
@@ -231,17 +230,7 @@ function (Fields,
231
230
  renderer .getCameraSpaceMatrix () .rotate (rotations [i]);
232
231
  renderer .getCameraSpaceMatrix () .scale (scales [i]);
233
232
 
234
- try
235
- {
236
- renderer .getViewMatrix () .pushMatrix (invCameraSpaceMatrix .assign (renderer .getCameraSpaceMatrix () .get ()) .inverse ());
237
- }
238
- catch (error)
239
- {
240
- console .error (error);
241
-
242
- renderer .getViewMatrix () .pushMatrix (Matrix4 .Identity);
243
- }
244
-
233
+ renderer .getViewMatrix () .pushMatrix (invCameraSpaceMatrix .assign (renderer .getCameraSpaceMatrix () .get ()) .inverse ());
245
234
  renderer .getModelViewMatrix () .pushMatrix (invCameraSpaceMatrix);
246
235
 
247
236
  // Setup headlight if enabled.