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
@@ -232,58 +232,50 @@ function (Fields,
232
232
 
233
233
  for (var t = 0, tLength = targets .size; t < tLength; ++ t)
234
234
  {
235
- try
236
- {
237
- var
238
- target = targets [t],
239
- geometryNode = target .geometryNode,
240
- vertices = this .pickingGeometryNode .getVertices ();
235
+ var
236
+ target = targets [t],
237
+ geometryNode = target .geometryNode,
238
+ vertices = this .pickingGeometryNode .getVertices ();
241
239
 
242
- targetBBox .assign (geometryNode .getBBox ()) .multRight (target .modelMatrix);
243
- matrix .assign (target .modelMatrix) .inverse () .multLeft (modelMatrix);
240
+ targetBBox .assign (geometryNode .getBBox ()) .multRight (target .modelMatrix);
241
+ matrix .assign (target .modelMatrix) .inverse () .multLeft (modelMatrix);
244
242
 
245
- for (var v = 0, vLength = vertices .length; v < vLength; v += 8)
246
- {
247
- matrix .multVecMatrix (point1 .set (vertices [v + 0], vertices [v + 1], vertices [v + 2]));
248
- matrix .multVecMatrix (point2 .set (vertices [v + 4], vertices [v + 5], vertices [v + 6]));
249
- line .setPoints (point1, point2);
243
+ for (var v = 0, vLength = vertices .length; v < vLength; v += 8)
244
+ {
245
+ matrix .multVecMatrix (point1 .set (vertices [v + 0], vertices [v + 1], vertices [v + 2]));
246
+ matrix .multVecMatrix (point2 .set (vertices [v + 4], vertices [v + 5], vertices [v + 6]));
247
+ line .setPoints (point1, point2);
250
248
 
251
- intersections .length = 0;
249
+ intersections .length = 0;
252
250
 
253
- if (geometryNode .intersectsLine (line, clipPlanes, target .modelMatrix, intersections))
251
+ if (geometryNode .intersectsLine (line, clipPlanes, target .modelMatrix, intersections))
252
+ {
253
+ for (var i = 0, iLength = intersections .length; i < iLength; ++ i)
254
254
  {
255
- for (var i = 0, iLength = intersections .length; i < iLength; ++ i)
256
- {
257
- // Test if intersection.point is between point1 and point2.
255
+ // Test if intersection.point is between point1 and point2.
258
256
 
259
- var intersection = intersections [i];
257
+ var intersection = intersections [i];
260
258
 
261
- a .assign (intersection .point) .subtract (point1);
262
- b .assign (intersection .point) .subtract (point2);
259
+ a .assign (intersection .point) .subtract (point1);
260
+ b .assign (intersection .point) .subtract (point2);
263
261
 
264
- var
265
- c = a .add (b) .abs (),
266
- s = point1 .distance (point2);
262
+ var
263
+ c = a .add (b) .abs (),
264
+ s = point1 .distance (point2);
267
265
 
268
- if (c <= s)
269
- target .intersections .push (intersection);
270
- }
266
+ if (c <= s)
267
+ target .intersections .push (intersection);
271
268
  }
272
269
  }
273
-
274
- if (target .intersections .length)
275
- {
276
- pickingCenter .assign (pickingBBox .center);
277
- targetCenter .assign (targetBBox .center);
278
-
279
- target .intersected = true;
280
- target .distance = pickingCenter .distance (targetCenter);
281
- }
282
270
  }
283
- catch (error)
271
+
272
+ if (target .intersections .length)
284
273
  {
285
- // Catch inverse.
286
- console .error (error);
274
+ pickingCenter .assign (pickingBBox .center);
275
+ targetCenter .assign (targetBBox .center);
276
+
277
+ target .intersected = true;
278
+ target .distance = pickingCenter .distance (targetCenter);
287
279
  }
288
280
  }
289
281
  }
@@ -179,143 +179,126 @@ function (Fields,
179
179
  {
180
180
  X3DDragSensorNode .prototype .set_active__ .call (this, active, hit, modelViewMatrix, projectionMatrix, viewport);
181
181
 
182
- try
182
+ if (this ._isActive .getValue ())
183
183
  {
184
- if (this ._isActive .getValue ())
185
- {
186
- this .modelViewMatrix .assign (modelViewMatrix);
187
- this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
184
+ this .modelViewMatrix .assign (modelViewMatrix);
185
+ this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
188
186
 
189
- const
190
- hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
191
- hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ());
187
+ const
188
+ hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
189
+ hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ());
192
190
 
193
- const
194
- yAxis = this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 1, 0)),
195
- cameraBack = this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize ();
191
+ const
192
+ yAxis = this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 1, 0)),
193
+ cameraBack = this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize ();
196
194
 
197
- const
198
- axis = new Line3 (new Vector3 (0, 0, 0), yAxis),
199
- radius = axis .getPerpendicularVectorToPoint (hitPoint, new Vector3 (0, 0, 0)) .abs ();
195
+ const
196
+ axis = new Line3 (new Vector3 (0, 0, 0), yAxis),
197
+ radius = axis .getPerpendicularVectorToPoint (hitPoint, new Vector3 (0, 0, 0)) .abs ();
200
198
 
201
- this .cylinder = new Cylinder3 (axis, radius);
202
- this .disk = Math .abs (Vector3 .dot (cameraBack, yAxis)) > Math .cos (this ._diskAngle .getValue ());
203
- this .behind = this .isBehind (hitRay, hitPoint);
204
- this .yPlane = new Plane3 (hitPoint, yAxis); // Sensor aligned y-plane
205
- this .zPlane = new Plane3 (hitPoint, cameraBack); // Screen aligned z-plane
199
+ this .cylinder = new Cylinder3 (axis, radius);
200
+ this .disk = Math .abs (Vector3 .dot (cameraBack, yAxis)) > Math .cos (this ._diskAngle .getValue ());
201
+ this .behind = this .isBehind (hitRay, hitPoint);
202
+ this .yPlane = new Plane3 (hitPoint, yAxis); // Sensor aligned y-plane
203
+ this .zPlane = new Plane3 (hitPoint, cameraBack); // Screen aligned z-plane
206
204
 
207
- // Compute normal like in Billboard with yAxis as axis of rotation.
208
- const
209
- billboardToViewer = this .invModelViewMatrix .origin,
210
- sxNormal = Vector3 .cross (yAxis, billboardToViewer) .normalize ();
205
+ // Compute normal like in Billboard with yAxis as axis of rotation.
206
+ const
207
+ billboardToViewer = this .invModelViewMatrix .origin,
208
+ sxNormal = Vector3 .cross (yAxis, billboardToViewer) .normalize ();
211
209
 
212
- this .sxPlane = new Plane3 (new Vector3 (0, 0, 0), sxNormal); // Billboarded special x-plane made parallel to sensors axis.
213
- this .szNormal = Vector3 .cross (sxNormal, yAxis) .normalize (); // Billboarded special z-normal made parallel to sensors axis.
210
+ this .sxPlane = new Plane3 (new Vector3 (0, 0, 0), sxNormal); // Billboarded special x-plane made parallel to sensors axis.
211
+ this .szNormal = Vector3 .cross (sxNormal, yAxis) .normalize (); // Billboarded special z-normal made parallel to sensors axis.
214
212
 
215
- const trackPoint = new Vector3 (0, 0, 0);
213
+ const trackPoint = new Vector3 (0, 0, 0);
216
214
 
217
- if (this .disk)
218
- this .yPlane .intersectsLine (hitRay, trackPoint);
219
- else
220
- this .getTrackPoint (hitRay, trackPoint);
215
+ if (this .disk)
216
+ this .yPlane .intersectsLine (hitRay, trackPoint);
217
+ else
218
+ this .getTrackPoint (hitRay, trackPoint);
221
219
 
222
- this .fromVector = this .cylinder .axis .getPerpendicularVectorToPoint (trackPoint, new Vector3 (0, 0, 0)) .negate ();
223
- this .startOffset = new Rotation4 (yAxis, this ._offset .getValue ());
220
+ this .fromVector = this .cylinder .axis .getPerpendicularVectorToPoint (trackPoint, new Vector3 (0, 0, 0)) .negate ();
221
+ this .startOffset = new Rotation4 (yAxis, this ._offset .getValue ());
224
222
 
225
- this ._trackPoint_changed = trackPoint;
226
- this ._rotation_changed = this .startOffset;
223
+ this ._trackPoint_changed = trackPoint;
224
+ this ._rotation_changed = this .startOffset;
227
225
 
228
- // For min/max angle.
226
+ // For min/max angle.
229
227
 
230
- this .angle = this ._offset .getValue ();
231
- this .startVector = this ._rotation_changed .getValue () .multVecRot (this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 0, 1)));
232
- }
233
- else
234
- {
235
- if (this ._autoOffset .getValue ())
236
- this ._offset = this .getAngle (this ._rotation_changed .getValue ());
237
- }
228
+ this .angle = this ._offset .getValue ();
229
+ this .startVector = this ._rotation_changed .getValue () .multVecRot (this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 0, 1)));
238
230
  }
239
- catch (error)
231
+ else
240
232
  {
241
- console .error (error);
233
+ if (this ._autoOffset .getValue ())
234
+ this ._offset = this .getAngle (this ._rotation_changed .getValue ());
242
235
  }
243
236
  },
244
237
  set_motion__: function (hit)
245
238
  {
246
- try
247
- {
248
- const
249
- hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
250
- trackPoint = new Vector3 (0, 0, 0);
239
+ const
240
+ hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
241
+ trackPoint = new Vector3 (0, 0, 0);
251
242
 
252
- if (this .disk)
253
- this .yPlane .intersectsLine (hitRay, trackPoint);
254
- else
255
- this .getTrackPoint (hitRay, trackPoint);
243
+ if (this .disk)
244
+ this .yPlane .intersectsLine (hitRay, trackPoint);
245
+ else
246
+ this .getTrackPoint (hitRay, trackPoint);
256
247
 
257
- this ._trackPoint_changed = trackPoint;
248
+ this ._trackPoint_changed = trackPoint;
258
249
 
259
- const
260
- toVector = this .cylinder .axis .getPerpendicularVectorToPoint (trackPoint, new Vector3 (0, 0, 0)) .negate (),
261
- rotation = new Rotation4 (this .fromVector, toVector);
250
+ const
251
+ toVector = this .cylinder .axis .getPerpendicularVectorToPoint (trackPoint, new Vector3 (0, 0, 0)) .negate (),
252
+ rotation = new Rotation4 (this .fromVector, toVector);
262
253
 
263
- if (this .disk)
264
- {
265
- // The trackpoint can swap behind the viewpoint if viewpoint is a Viewpoint node
266
- // as the viewing volume is not a cube where the picking ray goes straight up.
267
- // This phenomenon is very clear on the viewport corners.
254
+ if (this .disk)
255
+ {
256
+ // The trackpoint can swap behind the viewpoint if viewpoint is a Viewpoint node
257
+ // as the viewing volume is not a cube where the picking ray goes straight up.
258
+ // This phenomenon is very clear on the viewport corners.
268
259
 
269
- const trackPoint_ = this .modelViewMatrix .multVecMatrix (trackPoint .copy ());
260
+ const trackPoint_ = this .modelViewMatrix .multVecMatrix (trackPoint .copy ());
270
261
 
271
- if (trackPoint_ .z > 0)
272
- rotation .multRight (new Rotation4 (this .yPlane .normal, Math .PI));
273
- }
274
- else
275
- {
276
- if (this .behind)
277
- rotation .inverse ();
278
- }
262
+ if (trackPoint_ .z > 0)
263
+ rotation .multRight (new Rotation4 (this .yPlane .normal, Math .PI));
264
+ }
265
+ else
266
+ {
267
+ if (this .behind)
268
+ rotation .inverse ();
269
+ }
279
270
 
280
- rotation .multLeft (this .startOffset);
271
+ rotation .multLeft (this .startOffset);
281
272
 
282
- if (this ._minAngle .getValue () > this ._maxAngle .getValue ())
283
- {
284
- this ._rotation_changed = rotation;
285
- }
286
- else
287
- {
288
- const
289
- endVector = rotation .multVecRot (this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 0, 1))),
290
- deltaRotation = new Rotation4 (this .startVector, endVector),
291
- axis = this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 1, 0)),
292
- sign = axis .dot (deltaRotation .getAxis ()) > 0 ? 1 : -1,
293
- min = this ._minAngle .getValue (),
294
- max = this ._maxAngle .getValue ();
295
-
296
- this .angle += sign * deltaRotation .angle;
297
-
298
- this .startVector .assign (endVector);
299
-
300
- //console .log (this .angle, min, max);
301
-
302
- if (this .angle < min)
303
- rotation .setAxisAngle (this .cylinder .axis .direction, min);
304
- else if (this .angle > max)
305
- rotation .setAxisAngle (this .cylinder .axis .direction, max);
306
- else
307
- rotation .setAxisAngle (this .cylinder .axis .direction, this .angle);
308
-
309
- if (! this ._rotation_changed .getValue () .equals (rotation))
310
- this ._rotation_changed = rotation;
311
- }
273
+ if (this ._minAngle .getValue () > this ._maxAngle .getValue ())
274
+ {
275
+ this ._rotation_changed = rotation;
312
276
  }
313
- catch (error)
277
+ else
314
278
  {
315
- console .error (error);
279
+ const
280
+ endVector = rotation .multVecRot (this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 0, 1))),
281
+ deltaRotation = new Rotation4 (this .startVector, endVector),
282
+ axis = this ._axisRotation .getValue () .multVecRot (new Vector3 (0, 1, 0)),
283
+ sign = axis .dot (deltaRotation .getAxis ()) > 0 ? 1 : -1,
284
+ min = this ._minAngle .getValue (),
285
+ max = this ._maxAngle .getValue ();
286
+
287
+ this .angle += sign * deltaRotation .angle;
316
288
 
317
- this ._trackPoint_changed .addEvent ();
318
- this ._rotation_changed .addEvent ();
289
+ this .startVector .assign (endVector);
290
+
291
+ //console .log (this .angle, min, max);
292
+
293
+ if (this .angle < min)
294
+ rotation .setAxisAngle (this .cylinder .axis .direction, min);
295
+ else if (this .angle > max)
296
+ rotation .setAxisAngle (this .cylinder .axis .direction, max);
297
+ else
298
+ rotation .setAxisAngle (this .cylinder .axis .direction, this .angle);
299
+
300
+ if (! this ._rotation_changed .getValue () .equals (rotation))
301
+ this ._rotation_changed = rotation;
319
302
  }
320
303
  },
321
304
  });
@@ -151,82 +151,75 @@ function (Fields,
151
151
  {
152
152
  X3DDragSensorNode .prototype .set_active__ .call (this, active, hit, modelViewMatrix, projectionMatrix, viewport);
153
153
 
154
- try
154
+ if (this ._isActive .getValue ())
155
155
  {
156
- if (this ._isActive .getValue ())
157
- {
158
- this .modelViewMatrix .assign (modelViewMatrix);
159
- this .projectionMatrix .assign (projectionMatrix);
160
- this .viewport .assign (viewport);
161
- this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
156
+ this .modelViewMatrix .assign (modelViewMatrix);
157
+ this .projectionMatrix .assign (projectionMatrix);
158
+ this .viewport .assign (viewport);
159
+ this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
162
160
 
163
- var
164
- hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
165
- hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ());
161
+ var
162
+ hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
163
+ hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ());
166
164
 
167
- var axisRotation = this ._axisRotation .getValue ();
165
+ var axisRotation = this ._axisRotation .getValue ();
168
166
 
169
- if (this ._minPosition .x === this ._maxPosition .x)
170
- {
171
- this .planeSensor = false;
167
+ if (this ._minPosition .x === this ._maxPosition .x)
168
+ {
169
+ this .planeSensor = false;
172
170
 
173
- var direction = axisRotation .multVecRot (new Vector3 (0, Math .abs (this ._maxPosition .y - this ._minPosition .y), 0));
171
+ var direction = axisRotation .multVecRot (new Vector3 (0, Math .abs (this ._maxPosition .y - this ._minPosition .y), 0));
174
172
 
175
- this .line = new Line3 (hitPoint, direction .normalize ());
176
- }
177
- else if (this ._minPosition .y === this ._maxPosition .y)
178
- {
179
- this .planeSensor = false;
173
+ this .line = new Line3 (hitPoint, direction .normalize ());
174
+ }
175
+ else if (this ._minPosition .y === this ._maxPosition .y)
176
+ {
177
+ this .planeSensor = false;
180
178
 
181
- var direction = axisRotation .multVecRot (new Vector3 (Math .abs (this ._maxPosition .x - this ._minPosition .x), 0, 0));
179
+ var direction = axisRotation .multVecRot (new Vector3 (Math .abs (this ._maxPosition .x - this ._minPosition .x), 0, 0));
182
180
 
183
- this .line = new Line3 (hitPoint, direction .normalize ());
184
- }
185
- else
181
+ this .line = new Line3 (hitPoint, direction .normalize ());
182
+ }
183
+ else
184
+ {
185
+ this .planeSensor = true;
186
+ this .plane = new Plane3 (hitPoint, axisRotation .multVecRot (new Vector3 (0, 0, 1)));
187
+ }
188
+
189
+ if (this .planeSensor)
190
+ {
191
+ if (this .plane .intersectsLine (hitRay, this .startPoint))
186
192
  {
187
- this .planeSensor = true;
188
- this .plane = new Plane3 (hitPoint, axisRotation .multVecRot (new Vector3 (0, 0, 1)));
193
+ this .trackStart (this .startPoint);
189
194
  }
190
195
 
191
- if (this .planeSensor)
196
+ // new Plane3 (new Vector3 (0, 0, 0), this .plane .normal) .intersectsLine (hitRay, trackPoint);
197
+ }
198
+ else
199
+ {
200
+ if (this .getLineTrackPoint (hit, this .line, this .startPoint))
192
201
  {
193
- if (this .plane .intersectsLine (hitRay, this .startPoint))
202
+ var trackPoint = new Vector3 (0, 0, 0);
203
+
204
+ try
194
205
  {
195
- this .trackStart (this .startPoint);
206
+ this .getLineTrackPoint (hit, new Line3 (this .line .direction, this .line .direction), trackPoint);
196
207
  }
197
-
198
- // new Plane3 (new Vector3 (0, 0, 0), this .plane .normal) .intersectsLine (hitRay, trackPoint);
199
- }
200
- else
201
- {
202
- if (this .getLineTrackPoint (hit, this .line, this .startPoint))
208
+ catch (error)
203
209
  {
204
- var trackPoint = new Vector3 (0, 0, 0);
205
-
206
- try
207
- {
208
- this .getLineTrackPoint (hit, new Line3 (this .line .direction, this .line .direction), trackPoint);
209
- }
210
- catch (error)
211
- {
212
- //console .error (error);
210
+ //console .error (error);
213
211
 
214
- trackPoint = this .startPoint;
215
- }
216
-
217
- this .trackStart (trackPoint);
212
+ trackPoint = this .startPoint;
218
213
  }
214
+
215
+ this .trackStart (trackPoint);
219
216
  }
220
217
  }
221
- else
222
- {
223
- if (this ._autoOffset .getValue ())
224
- this ._offset = this ._translation_changed;
225
- }
226
218
  }
227
- catch (error)
219
+ else
228
220
  {
229
- console .error (error);
221
+ if (this ._autoOffset .getValue ())
222
+ this ._offset = this ._translation_changed;
230
223
  }
231
224
  },
232
225
  trackStart: function (trackPoint)
@@ -141,97 +141,80 @@ function (Fields,
141
141
  {
142
142
  X3DDragSensorNode .prototype .set_active__ .call (this, active, hit, modelViewMatrix, projectionMatrix, viewport);
143
143
 
144
- try
144
+ if (this ._isActive .getValue ())
145
145
  {
146
- if (this ._isActive .getValue ())
147
- {
148
- this .modelViewMatrix .assign (modelViewMatrix);
149
- this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
150
-
151
- var
152
- hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ()),
153
- center = new Vector3 (0, 0, 0);
154
-
155
- this .zPlane = new Plane3 (center, this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize ()); // Screen aligned Z-plane
156
- this .sphere = new Sphere3 (hitPoint .abs (), center);
157
- this .behind = this .zPlane .getDistanceToPoint (hitPoint) < 0;
158
-
159
- this .fromVector .assign (hitPoint);
160
- this .startPoint .assign (hitPoint);
161
- this .startOffset .assign (this ._offset .getValue ());
162
-
163
- this ._trackPoint_changed = hitPoint;
164
- this ._rotation_changed = this ._offset .getValue ();
165
- }
166
- else
167
- {
168
- if (this ._autoOffset .getValue ())
169
- this ._offset = this ._rotation_changed;
170
- }
146
+ this .modelViewMatrix .assign (modelViewMatrix);
147
+ this .invModelViewMatrix .assign (modelViewMatrix) .inverse ();
148
+
149
+ var
150
+ hitPoint = this .invModelViewMatrix .multVecMatrix (hit .intersection .point .copy ()),
151
+ center = new Vector3 (0, 0, 0);
152
+
153
+ this .zPlane = new Plane3 (center, this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize ()); // Screen aligned Z-plane
154
+ this .sphere = new Sphere3 (hitPoint .abs (), center);
155
+ this .behind = this .zPlane .getDistanceToPoint (hitPoint) < 0;
156
+
157
+ this .fromVector .assign (hitPoint);
158
+ this .startPoint .assign (hitPoint);
159
+ this .startOffset .assign (this ._offset .getValue ());
160
+
161
+ this ._trackPoint_changed = hitPoint;
162
+ this ._rotation_changed = this ._offset .getValue ();
171
163
  }
172
- catch (error)
164
+ else
173
165
  {
174
- //console .error (error);
166
+ if (this ._autoOffset .getValue ())
167
+ this ._offset = this ._rotation_changed;
175
168
  }
176
169
  },
177
170
  set_motion__: function (hit)
178
171
  {
179
- try
180
- {
181
- var
182
- hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
183
- trackPoint = new Vector3 (0, 0, 0);
172
+ var
173
+ hitRay = hit .hitRay .copy () .multLineMatrix (this .invModelViewMatrix),
174
+ trackPoint = new Vector3 (0, 0, 0);
184
175
 
185
- if (this .getTrackPoint (hitRay, trackPoint, this .behind))
186
- {
187
- var zAxis = this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize (); // Camera direction
188
- this .zPlane = new Plane3 (trackPoint, zAxis); // Screen aligned Z-plane
189
- }
190
- else
191
- {
192
- // Find trackPoint on the plane with sphere
193
-
194
- var tangentPoint = new Vector3 (0, 0, 0);
195
- this .zPlane .intersectsLine (hitRay, tangentPoint);
176
+ if (this .getTrackPoint (hitRay, trackPoint, this .behind))
177
+ {
178
+ var zAxis = this .invModelViewMatrix .multDirMatrix (new Vector3 (0, 0, 1)) .normalize (); // Camera direction
179
+ this .zPlane = new Plane3 (trackPoint, zAxis); // Screen aligned Z-plane
180
+ }
181
+ else
182
+ {
183
+ // Find trackPoint on the plane with sphere
196
184
 
197
- hitRay = new Line3 (tangentPoint, Vector3 .subtract (this .sphere .center, tangentPoint) .normalize ());
185
+ var tangentPoint = new Vector3 (0, 0, 0);
186
+ this .zPlane .intersectsLine (hitRay, tangentPoint);
198
187
 
199
- //console .log (hitRay .toString ());
188
+ hitRay = new Line3 (tangentPoint, Vector3 .subtract (this .sphere .center, tangentPoint) .normalize ());
200
189
 
201
- this .getTrackPoint (hitRay, trackPoint, false);
190
+ //console .log (hitRay .toString ());
202
191
 
203
- // Find trackPoint behind sphere
192
+ this .getTrackPoint (hitRay, trackPoint, false);
204
193
 
205
- var
206
- triNormal = Triangle3 .normal (this .sphere .center, trackPoint, this .startPoint, new Vector3 (0, 0, 0)),
207
- dirFromCenter = Vector3 .subtract (trackPoint, this .sphere .center) .normalize (),
208
- normal = Vector3 .cross (triNormal, dirFromCenter) .normalize ();
194
+ // Find trackPoint behind sphere
209
195
 
210
- var point1 = Vector3 .subtract (trackPoint, normal .multiply (Vector3 .subtract (tangentPoint, trackPoint) .abs ()));
196
+ var
197
+ triNormal = Triangle3 .normal (this .sphere .center, trackPoint, this .startPoint, new Vector3 (0, 0, 0)),
198
+ dirFromCenter = Vector3 .subtract (trackPoint, this .sphere .center) .normalize (),
199
+ normal = Vector3 .cross (triNormal, dirFromCenter) .normalize ();
211
200
 
212
- hitRay = new Line3 (point1, Vector3 .subtract (this .sphere .center, point1) .normalize ());
201
+ var point1 = Vector3 .subtract (trackPoint, normal .multiply (Vector3 .subtract (tangentPoint, trackPoint) .abs ()));
213
202
 
214
- this .getTrackPoint (hitRay, trackPoint, false);
215
- }
203
+ hitRay = new Line3 (point1, Vector3 .subtract (this .sphere .center, point1) .normalize ());
216
204
 
217
- this ._trackPoint_changed = trackPoint;
205
+ this .getTrackPoint (hitRay, trackPoint, false);
206
+ }
218
207
 
219
- var
220
- toVector = Vector3 .subtract (trackPoint, this .sphere .center),
221
- rotation = new Rotation4 (this .fromVector, toVector);
208
+ this ._trackPoint_changed = trackPoint;
222
209
 
223
- if (this .behind)
224
- rotation .inverse ();
210
+ var
211
+ toVector = Vector3 .subtract (trackPoint, this .sphere .center),
212
+ rotation = new Rotation4 (this .fromVector, toVector);
225
213
 
226
- this ._rotation_changed = Rotation4 .multRight (this .startOffset, rotation);
227
- }
228
- catch (error)
229
- {
230
- //console .error (error);
214
+ if (this .behind)
215
+ rotation .inverse ();
231
216
 
232
- this ._trackPoint_changed .addEvent ();
233
- this ._rotation_changed .addEvent ();
234
- }
217
+ this ._rotation_changed = Rotation4 .multRight (this .startOffset, rotation);
235
218
  },
236
219
  });
237
220
 
@@ -103,24 +103,17 @@ function (Fields,
103
103
  },
104
104
  set_over__: function (over, hit, modelViewMatrix, projectionMatrix, viewport)
105
105
  {
106
- try
107
- {
108
- X3DTouchSensorNode .prototype .set_over__ .call (this, over, hit, modelViewMatrix, projectionMatrix, viewport);
106
+ X3DTouchSensorNode .prototype .set_over__ .call (this, over, hit, modelViewMatrix, projectionMatrix, viewport);
109
107
 
110
- if (this ._isOver .getValue ())
111
- {
112
- var intersection = hit .intersection;
108
+ if (this ._isOver .getValue ())
109
+ {
110
+ var intersection = hit .intersection;
113
111
 
114
- invModelViewMatrix .assign (modelViewMatrix) .inverse ();
112
+ invModelViewMatrix .assign (modelViewMatrix) .inverse ();
115
113
 
116
- this ._hitTexCoord_changed = intersection .texCoord;
117
- this ._hitNormal_changed = modelViewMatrix .multMatrixDir (intersection .normal .copy ()) .normalize ();
118
- this ._hitPoint_changed = invModelViewMatrix .multVecMatrix (intersection .point .copy ());
119
- }
120
- }
121
- catch (error)
122
- {
123
- console .error (error);
114
+ this ._hitTexCoord_changed = intersection .texCoord;
115
+ this ._hitNormal_changed = modelViewMatrix .multMatrixDir (intersection .normal .copy ()) .normalize ();
116
+ this ._hitPoint_changed = invModelViewMatrix .multVecMatrix (intersection .point .copy ());
124
117
  }
125
118
  },
126
119
  });