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
@@ -4,8 +4,8 @@
4
4
  var module = { }, exports, process;
5
5
 
6
6
  const
7
- define = window [Symbol .for ("X_ITE.X3D-5.0.2")] .define,
8
- require = window [Symbol .for ("X_ITE.X3D-5.0.2")] .require;
7
+ define = window [Symbol .for ("X_ITE.X3D-6.0.0")] .define,
8
+ require = window [Symbol .for ("X_ITE.X3D-6.0.0")] .require;
9
9
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
10
10
  *******************************************************************************
11
11
  *
@@ -106,44 +106,83 @@ function (Fields,
106
106
  {
107
107
  X3DNode .prototype .initialize .call (this);
108
108
 
109
- this ._children .addInterest ("set_children__", this);
109
+ this ._addChildren .addInterest ("set_addChildren__", this);
110
+ this ._removeChildren .addInterest ("set_removeChildren__", this);
111
+ this ._children .addInterest ("set_children__", this);
110
112
 
111
113
  this .set_children__ ();
112
114
  },
115
+ set_addChildren__: function ()
116
+ {
117
+ this ._addChildren .setTainted (true);
118
+
119
+ this ._addChildren .erase (remove (this ._addChildren, 0, this ._addChildren .length,
120
+ this ._children, 0, this ._children .length),
121
+ this ._addChildren .length);
122
+
123
+ for (const child of this ._addChildren)
124
+ this ._children .push (child);
125
+
126
+ this ._addChildren .length = 0;
127
+ this ._addChildren .setTainted (false);
128
+ },
129
+ set_removeChildren__: function ()
130
+ {
131
+ this ._removeChildren .setTainted (true);
132
+
133
+ this ._children .erase (remove (this ._children, 0, this ._children .length,
134
+ this ._removeChildren, 0, this ._removeChildren .length),
135
+ this ._children .length);
136
+
137
+ this ._removeChildren .length = 0;
138
+ this ._removeChildren .setTainted (false);
139
+ },
113
140
  set_children__: function ()
114
141
  {
115
- var childNodes = this .childNodes;
142
+ const childNodes = this .childNodes;
116
143
 
117
144
  childNodes .length = 0;
118
145
 
119
- for (var i = 0, length = this ._children .length; i < length; ++ i)
146
+ for (const node of this ._children)
120
147
  {
121
- var childNode = X3DCast (X3DConstants .NurbsCurve2D, this ._children [i]);
148
+ const childNode = X3DCast (X3DConstants .NurbsCurve2D, node);
122
149
 
123
150
  if (childNode)
124
151
  {
125
152
  childNodes .push (childNode);
126
153
  continue;
127
154
  }
128
-
129
- var childNode = X3DCast (X3DConstants .ContourPolyline2D, this ._children [i]);
130
-
131
- if (childNode)
155
+ else
132
156
  {
133
- childNodes .push (childNode);
134
- continue;
157
+ const childNode = X3DCast (X3DConstants .ContourPolyline2D, node);
158
+
159
+ if (childNode)
160
+ {
161
+ childNodes .push (childNode);
162
+ continue;
163
+ }
135
164
  }
136
165
  }
137
166
  },
138
167
  addTrimmingContour: function (trimmingContours)
139
168
  {
140
- var childNodes = this .childNodes;
141
-
142
- for (var i = 0, length = childNodes .length; i < length; ++ i)
143
- trimmingContours .push (childNodes [i] .tessellate (2));
169
+ for (const childNode of this .childNodes)
170
+ trimmingContours .push (childNode .tessellate (2));
144
171
  }
145
172
  });
146
173
 
174
+ function remove (array, first, last, range, rfirst, rlast)
175
+ {
176
+ const set = new Set ();
177
+
178
+ for (let i = rfirst; i < rlast; ++ i)
179
+ set .add (range [i]);
180
+
181
+ function compare (value) { return set .has (value); }
182
+
183
+ return array .remove (first, last, compare);
184
+ }
185
+
147
186
  return Contour2D;
148
187
  });
149
188
 
@@ -320,13 +359,14 @@ function (Fields,
320
359
  {
321
360
  case 0:
322
361
  {
323
- var
362
+ const
324
363
  controlPointArray = this ._controlPoint .getValue (),
325
- controlPoints = this .controlPoints;
364
+ controlPoints = this .controlPoints,
365
+ length = this ._controlPoint .length;
326
366
 
327
- for (var i = 0, length = this ._controlPoint .length; i < length; ++ i)
367
+ for (let i = 0; i < length; ++ i)
328
368
  {
329
- var i2 = i * 2;
369
+ const i2 = i * 2;
330
370
 
331
371
  controlPoints [i2 + 0] = controlPointArray [i2 + 0];
332
372
  controlPoints [i2 + 1] = controlPointArray [i2 + 1];
@@ -338,13 +378,14 @@ function (Fields,
338
378
  }
339
379
  case 1:
340
380
  {
341
- var
381
+ const
342
382
  controlPointArray = this ._controlPoint .getValue (),
343
- controlPoints = this .controlPoints;
383
+ controlPoints = this .controlPoints,
384
+ length = this ._controlPoint .length;
344
385
 
345
- for (var i = 0, length = this ._controlPoint .length; i < length; ++ i)
386
+ for (let i = 0; i < length; ++ i)
346
387
  {
347
- var
388
+ const
348
389
  i2 = i * 2,
349
390
  i3 = i * 3;
350
391
 
@@ -359,13 +400,14 @@ function (Fields,
359
400
  }
360
401
  case 3:
361
402
  {
362
- var
403
+ const
363
404
  controlPointArray = this ._controlPoint .getValue (),
364
- controlPoints = this .controlPoints;
405
+ controlPoints = this .controlPoints,
406
+ length = this ._controlPoint .length;
365
407
 
366
- for (var i = 0, length = this ._controlPoint .length; i < length; ++ i)
408
+ for (let i = 0; i < length; ++ i)
367
409
  {
368
- var i2 = i * 2;
410
+ const i2 = i * 2;
369
411
 
370
412
  controlPoints [i] = new Vector3 (controlPointArray [i2 + 0], controlPointArray [i2 + 1], 0);
371
413
  }
@@ -536,7 +578,7 @@ function (Vector2,
536
578
  {
537
579
  "use strict";
538
580
 
539
- var NURBS = {
581
+ const NURBS = {
540
582
  getTessellation: function (tessellation, dimension)
541
583
  {
542
584
  if (tessellation > 0)
@@ -549,7 +591,7 @@ function (Vector2,
549
591
  },
550
592
  getClosed2D: function (order, knot, weight, controlPoint)
551
593
  {
552
- var
594
+ const
553
595
  dimension = controlPoint .length,
554
596
  haveWeights = weight .length === dimension;
555
597
 
@@ -575,13 +617,13 @@ function (Vector2,
575
617
  },
576
618
  getClosed: (function ()
577
619
  {
578
- var
620
+ const
579
621
  firstPoint = new Vector3 (0, 0, 0),
580
622
  lastPoint = new Vector3 (0, 0, 0);
581
623
 
582
624
  return function (order, knot, weight, controlPointNode)
583
625
  {
584
- var
626
+ const
585
627
  dimension = controlPointNode .getSize (),
586
628
  haveWeights = weight .length === dimension;
587
629
 
@@ -608,17 +650,17 @@ function (Vector2,
608
650
  })(),
609
651
  getUClosed: (function ()
610
652
  {
611
- var
653
+ const
612
654
  firstPoint = new Vector3 (0, 0, 0),
613
655
  lastPoint = new Vector3 (0, 0, 0);
614
656
 
615
657
  return function (uOrder, uDimension, vDimension, uKnot, weight, controlPointNode)
616
658
  {
617
- var haveWeights = weight .length === controlPointNode .getSize ();
659
+ const haveWeights = weight .length === controlPointNode .getSize ();
618
660
 
619
- for (var v = 0, length = vDimension; v < length; ++ v)
661
+ for (let v = 0, length = vDimension; v < length; ++ v)
620
662
  {
621
- var
663
+ const
622
664
  first = v * uDimension,
623
665
  last = v * uDimension + uDimension - 1;
624
666
 
@@ -646,17 +688,17 @@ function (Vector2,
646
688
  })(),
647
689
  getVClosed: (function ()
648
690
  {
649
- var
691
+ const
650
692
  firstPoint = new Vector3 (0, 0, 0),
651
693
  lastPoint = new Vector3 (0, 0, 0);
652
694
 
653
695
  return function (vOrder, uDimension, vDimension, vKnot, weight, controlPointNode)
654
696
  {
655
- var haveWeights = weight .length === controlPointNode .getSize ();
697
+ const haveWeights = weight .length === controlPointNode .getSize ();
656
698
 
657
- for (var u = 0, size = uDimension; u < size; ++ u)
699
+ for (let u = 0, size = uDimension; u < size; ++ u)
658
700
  {
659
- var
701
+ const
660
702
  first = u,
661
703
  last = (vDimension - 1) * uDimension + u;
662
704
 
@@ -689,9 +731,9 @@ function (Vector2,
689
731
  if (knot .length === dimension + order)
690
732
  {
691
733
  {
692
- var count = 1;
734
+ let count = 1;
693
735
 
694
- for (var i = 1, size = order; i < size; ++ i)
736
+ for (let i = 1, size = order; i < size; ++ i)
695
737
  {
696
738
  count += knot [i] === knot [0];
697
739
  }
@@ -701,9 +743,9 @@ function (Vector2,
701
743
  }
702
744
 
703
745
  {
704
- var count = 1;
746
+ let count = 1;
705
747
 
706
- for (var i = knot .length - order, size = knot .length - 1; i < size; ++ i)
748
+ for (let i = knot .length - order, size = knot .length - 1; i < size; ++ i)
707
749
  {
708
750
  count += knot [i] === knot [size];
709
751
  }
@@ -717,9 +759,9 @@ function (Vector2,
717
759
  },
718
760
  getKnots: function (result, closed, order, dimension, knot)
719
761
  {
720
- var knots = result || [ ];
762
+ const knots = result || [ ];
721
763
 
722
- for (var i = 0, length = knot .length; i < length; ++ i)
764
+ for (let i = 0, length = knot .length; i < length; ++ i)
723
765
  knots [i] = knot [i];
724
766
 
725
767
  knots .length = knot .length;
@@ -727,15 +769,15 @@ function (Vector2,
727
769
  // check the knot-vectors. If they are not according to standard
728
770
  // default uniform knot vectors will be generated.
729
771
 
730
- var generateUniform = true;
772
+ let generateUniform = true;
731
773
 
732
774
  if (knots .length === dimension + order)
733
775
  {
734
776
  generateUniform = false;
735
777
 
736
- var consecutiveKnots = 0;
778
+ let consecutiveKnots = 0;
737
779
 
738
- for (var i = 1, length = knots .length; i < length; ++ i)
780
+ for (let i = 1, length = knots .length; i < length; ++ i)
739
781
  {
740
782
  if (knots [i] == knots [i - 1])
741
783
  ++ consecutiveKnots;
@@ -752,13 +794,13 @@ function (Vector2,
752
794
 
753
795
  if (generateUniform)
754
796
  {
755
- for (var i = 0, length = dimension + order; i < length; ++ i)
797
+ for (let i = 0, length = dimension + order; i < length; ++ i)
756
798
  knots [i] = i / (length - 1);
757
799
  }
758
800
 
759
801
  if (closed)
760
802
  {
761
- for (var i = 1, length = order - 1; i < length; ++ i)
803
+ for (let i = 1, length = order - 1; i < length; ++ i)
762
804
  knots .push (knots .at (-1) + (knots [i] - knots [i - 1]));
763
805
  }
764
806
 
@@ -769,9 +811,9 @@ function (Vector2,
769
811
  if (weight .length !== dimension)
770
812
  return undefined;
771
813
 
772
- var weights = result || [ ];
814
+ const weights = result || [ ];
773
815
 
774
- for (var i = 0; i < dimension; ++ i)
816
+ for (let i = 0; i < dimension; ++ i)
775
817
  {
776
818
  weights [i] = weight [i];
777
819
  }
@@ -782,16 +824,16 @@ function (Vector2,
782
824
  },
783
825
  getUVWeights: function (result, uDimension, vDimension, weight)
784
826
  {
785
- var dimension = uDimension * vDimension;
827
+ const dimension = uDimension * vDimension;
786
828
 
787
829
  if (weight .length !== dimension)
788
830
  return undefined;
789
831
 
790
- var weights = result || [ ];
832
+ const weights = result || [ ];
791
833
 
792
- for (var u = 0, i = 0; u < uDimension; ++ u)
834
+ for (let u = 0, i = 0; u < uDimension; ++ u)
793
835
  {
794
- for (var v = 0; v < vDimension; ++ v, ++ i)
836
+ for (let v = 0; v < vDimension; ++ v, ++ i)
795
837
  {
796
838
  weights [i] = weight [i];
797
839
  }
@@ -803,7 +845,7 @@ function (Vector2,
803
845
  },
804
846
  getControlPoints2D: function (result, closed, order, weights, controlPoint)
805
847
  {
806
- var
848
+ const
807
849
  controlPoints = result || [ ],
808
850
  controlPointArray = controlPoint .getValue (),
809
851
  dimension = controlPoint .length,
@@ -816,9 +858,9 @@ function (Vector2,
816
858
  controlPoints .length = 0;
817
859
  }
818
860
 
819
- for (var i = 0; i < dimension; ++ i)
861
+ for (let i = 0; i < dimension; ++ i)
820
862
  {
821
- var
863
+ const
822
864
  i2 = i * 2,
823
865
  p = controlPoints [i] || new Vector (0, 0, 0);
824
866
 
@@ -829,7 +871,7 @@ function (Vector2,
829
871
 
830
872
  if (closed)
831
873
  {
832
- for (var i = 1, size = order - 1; i < size; ++ i)
874
+ for (let i = 1, size = order - 1; i < size; ++ i)
833
875
  controlPoints .push (controlPoints [i]);
834
876
  }
835
877
 
@@ -837,7 +879,7 @@ function (Vector2,
837
879
  },
838
880
  getControlPoints: function (result, closed, order, weights, controlPointNode)
839
881
  {
840
- var
882
+ const
841
883
  controlPoints = result || [ ],
842
884
  dimension = controlPointNode .getSize (),
843
885
  haveWeights = Boolean (weights),
@@ -849,9 +891,9 @@ function (Vector2,
849
891
  controlPoints .length = 0;
850
892
  }
851
893
 
852
- for (var i = 0; i < dimension; ++ i)
894
+ for (let i = 0; i < dimension; ++ i)
853
895
  {
854
- var cp = controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector (0, 0, 0, 0));
896
+ const cp = controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector (0, 0, 0, 0));
855
897
 
856
898
  if (haveWeights)
857
899
  cp .w = weights [i];
@@ -861,7 +903,7 @@ function (Vector2,
861
903
 
862
904
  if (closed)
863
905
  {
864
- for (var i = 1, size = order - 1; i < size; ++ i)
906
+ for (let i = 1, size = order - 1; i < size; ++ i)
865
907
  controlPoints .push (controlPoints [i]);
866
908
  }
867
909
 
@@ -869,7 +911,7 @@ function (Vector2,
869
911
  },
870
912
  getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode)
871
913
  {
872
- var
914
+ const
873
915
  controlPoints = result || [ ],
874
916
  haveWeights = Boolean (weights),
875
917
  Vector = haveWeights ? Vector4 : Vector3;
@@ -880,16 +922,16 @@ function (Vector2,
880
922
  controlPoints .length = 0;
881
923
  }
882
924
 
883
- for (var u = 0; u < uDimension; ++ u)
925
+ for (let u = 0; u < uDimension; ++ u)
884
926
  {
885
- var cp = controlPoints [u];
927
+ let cp = controlPoints [u];
886
928
 
887
929
  if (! cp)
888
930
  cp = controlPoints [u] = [ ];
889
931
 
890
- for (var v = 0; v < vDimension; ++ v)
932
+ for (let v = 0; v < vDimension; ++ v)
891
933
  {
892
- var index = v * uDimension + u;
934
+ const index = v * uDimension + u;
893
935
 
894
936
  cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector (0, 0, 0, 0));
895
937
 
@@ -901,7 +943,7 @@ function (Vector2,
901
943
 
902
944
  if (vClosed)
903
945
  {
904
- for (var i = 1, length = vOrder - 1; i < length; ++ i)
946
+ for (let i = 1, length = vOrder - 1; i < length; ++ i)
905
947
  cp .push (cp [i]);
906
948
  }
907
949
  }
@@ -910,7 +952,7 @@ function (Vector2,
910
952
 
911
953
  if (uClosed)
912
954
  {
913
- for (var i = 1, length = uOrder - 1; i < length; ++ i)
955
+ for (let i = 1, length = uOrder - 1; i < length; ++ i)
914
956
  controlPoints .push (controlPoints [i]);
915
957
  }
916
958
 
@@ -918,18 +960,18 @@ function (Vector2,
918
960
  },
919
961
  getTexControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode)
920
962
  {
921
- var controlPoints = result || [ ];
963
+ const controlPoints = result || [ ];
922
964
 
923
- for (var u = 0; u < uDimension; ++ u)
965
+ for (let u = 0; u < uDimension; ++ u)
924
966
  {
925
- var cp = controlPoints [u];
967
+ let cp = controlPoints [u];
926
968
 
927
969
  if (! cp)
928
970
  cp = controlPoints [u] = [ ];
929
971
 
930
- for (var v = 0; v < vDimension; ++ v)
972
+ for (let v = 0; v < vDimension; ++ v)
931
973
  {
932
- var index = v * uDimension + u;
974
+ const index = v * uDimension + u;
933
975
 
934
976
  cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector4 (0, 0, 0, 0));
935
977
  }
@@ -938,7 +980,7 @@ function (Vector2,
938
980
 
939
981
  if (vClosed)
940
982
  {
941
- for (var i = 1, length = vOrder - 1; i < length; ++ i)
983
+ for (let i = 1, length = vOrder - 1; i < length; ++ i)
942
984
  cp .push (cp [i]);
943
985
  }
944
986
  }
@@ -947,7 +989,7 @@ function (Vector2,
947
989
 
948
990
  if (uClosed)
949
991
  {
950
- for (var i = 1, length = uOrder - 1; i < length; ++ i)
992
+ for (let i = 1, length = uOrder - 1; i < length; ++ i)
951
993
  controlPoints .push (controlPoints [i]);
952
994
  }
953
995
 
@@ -3076,7 +3118,7 @@ function (Fields,
3076
3118
  },
3077
3119
  tessellate: function (type)
3078
3120
  {
3079
- var array = this .array;
3121
+ const array = this .array;
3080
3122
 
3081
3123
  array .length = 0;
3082
3124
 
@@ -3088,22 +3130,22 @@ function (Fields,
3088
3130
 
3089
3131
  // Order and dimension are now positive numbers.
3090
3132
 
3091
- var
3133
+ const
3092
3134
  closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this ._controlPoint),
3093
3135
  weights = this .getWeights (this .weights, this ._controlPoint .length, this ._weight),
3094
3136
  controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this ._controlPoint);
3095
3137
 
3096
3138
  // Knots
3097
3139
 
3098
- var
3140
+ const
3099
3141
  knots = this .getKnots (this .knots, closed, this ._order .getValue (), this ._controlPoint .length, this ._knot),
3100
3142
  scale = knots .at (-1) - knots [0];
3101
3143
 
3102
3144
  // Initialize NURBS tessellator
3103
3145
 
3104
- var degree = this ._order .getValue () - 1;
3146
+ const degree = this ._order .getValue () - 1;
3105
3147
 
3106
- var surface = this .surface = (this .surface || nurbs) ({
3148
+ const surface = this .surface = (this .surface || nurbs) ({
3107
3149
  boundary: ["open"],
3108
3150
  degree: [degree],
3109
3151
  knots: [knots],
@@ -3114,7 +3156,7 @@ function (Fields,
3114
3156
  this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
3115
3157
  this .sampleOptions .haveWeights = Boolean (weights);
3116
3158
 
3117
- var
3159
+ const
3118
3160
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
3119
3161
  points = mesh .points;
3120
3162
 
@@ -3122,7 +3164,7 @@ function (Fields,
3122
3164
  {
3123
3165
  case 0:
3124
3166
  {
3125
- for (var i = 0, length = points .length; i < length; i += 2)
3167
+ for (let i = 0, length = points .length; i < length; i += 2)
3126
3168
  {
3127
3169
  array .push (points [i], points [i + 1]);
3128
3170
  }
@@ -3131,7 +3173,7 @@ function (Fields,
3131
3173
  }
3132
3174
  case 1:
3133
3175
  {
3134
- for (var i = 0, length = points .length; i < length; i += 2)
3176
+ for (let i = 0, length = points .length; i < length; i += 2)
3135
3177
  {
3136
3178
  array .push (points [i], 0, points [i + 1]);
3137
3179
  }
@@ -3140,7 +3182,7 @@ function (Fields,
3140
3182
  }
3141
3183
  case 2:
3142
3184
  {
3143
- for (var i = 0, length = points .length; i < length; i += 2)
3185
+ for (let i = 0, length = points .length; i < length; i += 2)
3144
3186
  {
3145
3187
  array .push (new Vector3 (points [i], points [i + 1], 0));
3146
3188
  }
@@ -3335,22 +3377,22 @@ function (Fields,
3335
3377
 
3336
3378
  // Order and dimension are now positive numbers.
3337
3379
 
3338
- var
3380
+ const
3339
3381
  closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this .controlPointNode),
3340
3382
  weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this ._weight),
3341
3383
  controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this .controlPointNode);
3342
3384
 
3343
3385
  // Knots
3344
3386
 
3345
- var
3387
+ const
3346
3388
  knots = this .getKnots (this .knots, closed, this ._order .getValue (), this .controlPointNode .getSize (), this ._knot),
3347
3389
  scale = knots .at (-1) - knots [0];
3348
3390
 
3349
3391
  // Initialize NURBS tessellator
3350
3392
 
3351
- var degree = this ._order .getValue () - 1;
3393
+ const degree = this ._order .getValue () - 1;
3352
3394
 
3353
- var surface = this .surface = (this .surface || nurbs) ({
3395
+ const surface = this .surface = (this .surface || nurbs) ({
3354
3396
  boundary: ["open"],
3355
3397
  degree: [degree],
3356
3398
  knots: [knots],
@@ -3360,7 +3402,7 @@ function (Fields,
3360
3402
 
3361
3403
  this .sampleOptions .haveWeights = Boolean (weights);
3362
3404
 
3363
- var
3405
+ const
3364
3406
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
3365
3407
  points = mesh .points,
3366
3408
  interpolator = this .interpolator;
@@ -3368,11 +3410,11 @@ function (Fields,
3368
3410
  interpolator ._key .length = 0;
3369
3411
  interpolator ._keyValue .length = 0;
3370
3412
 
3371
- for (var i = 0, length = points .length - 3; i < length; i += 3)
3413
+ for (let i = 0, length = points .length - 3; i < length; i += 3)
3372
3414
  {
3373
- var direction = new Vector3 (points [i + 3] - points [i + 0],
3374
- points [i + 4] - points [i + 1],
3375
- points [i + 5] - points [i + 2]);
3415
+ const direction = new Vector3 (points [i + 3] - points [i + 0],
3416
+ points [i + 4] - points [i + 1],
3417
+ points [i + 5] - points [i + 2]);
3376
3418
 
3377
3419
  interpolator ._key .push (knots [0] + i / (length - 3 + (3 * closed)) * scale);
3378
3420
  interpolator ._keyValue. push (new Rotation4 (Vector3 .zAxis, direction));
@@ -3587,7 +3629,7 @@ function (X3DParametricGeometryNode,
3587
3629
 
3588
3630
  // ControlPoints
3589
3631
 
3590
- var
3632
+ const
3591
3633
  uClosed = this .getUClosed (this ._uOrder .getValue (), this ._uDimension .getValue (), this ._vDimension .getValue (), this ._uKnot, this ._weight, this .controlPointNode),
3592
3634
  vClosed = this .getVClosed (this ._vOrder .getValue (), this ._uDimension .getValue (), this ._vDimension .getValue (), this ._vKnot, this ._weight, this .controlPointNode),
3593
3635
  weights = this .getUVWeights (this .weights, this ._uDimension .getValue (), this ._vDimension .getValue (), this ._weight),
@@ -3595,7 +3637,7 @@ function (X3DParametricGeometryNode,
3595
3637
 
3596
3638
  // Knots
3597
3639
 
3598
- var
3640
+ const
3599
3641
  uKnots = this .getKnots (this .uKnots, uClosed, this ._uOrder .getValue (), this ._uDimension .getValue (), this ._uKnot),
3600
3642
  vKnots = this .getKnots (this .vKnots, vClosed, this ._vOrder .getValue (), this ._vDimension .getValue (), this ._vKnot),
3601
3643
  uScale = uKnots .at (-1) - uKnots [0],
@@ -3603,11 +3645,11 @@ function (X3DParametricGeometryNode,
3603
3645
 
3604
3646
  // Initialize NURBS tessellator
3605
3647
 
3606
- var
3648
+ const
3607
3649
  uDegree = this ._uOrder .getValue () - 1,
3608
3650
  vDegree = this ._vOrder .getValue () - 1;
3609
3651
 
3610
- var surface = this .surface = (this .surface || nurbs) ({
3652
+ const surface = this .surface = (this .surface || nurbs) ({
3611
3653
  boundary: ["open", "open"],
3612
3654
  degree: [uDegree, vDegree],
3613
3655
  knots: [uKnots, vKnots],
@@ -3615,7 +3657,7 @@ function (X3DParametricGeometryNode,
3615
3657
  debug: false,
3616
3658
  });
3617
3659
 
3618
- var sampleOptions = this .sampleOptions;
3660
+ const sampleOptions = this .sampleOptions;
3619
3661
 
3620
3662
  sampleOptions .resolution [0] = this .getUTessellation (uKnots .length);
3621
3663
  sampleOptions .resolution [1] = this .getVTessellation (vKnots .length);
@@ -3625,15 +3667,15 @@ function (X3DParametricGeometryNode,
3625
3667
  sampleOptions .haveWeights = Boolean (weights);
3626
3668
  sampleOptions .trimmingContours = this .getTrimmingContours ();
3627
3669
 
3628
- var
3670
+ const
3629
3671
  mesh = nurbs .sample (this .mesh, surface, sampleOptions),
3630
3672
  faces = mesh .faces,
3631
3673
  points = mesh .points,
3632
3674
  vertexArray = this .getVertices ();
3633
3675
 
3634
- for (var i = 0, length = faces .length; i < length; ++ i)
3676
+ for (let i = 0, length = faces .length; i < length; ++ i)
3635
3677
  {
3636
- var index = faces [i] * 3;
3678
+ const index = faces [i] * 3;
3637
3679
 
3638
3680
  vertexArray .push (points [index], points [index + 1], points [index + 2], 1);
3639
3681
  }
@@ -3645,7 +3687,7 @@ function (X3DParametricGeometryNode,
3645
3687
  },
3646
3688
  buildNurbsTexCoords: (function ()
3647
3689
  {
3648
- var
3690
+ const
3649
3691
  defaultTexUKnots = [ ],
3650
3692
  defaultTexVKnots = [ ],
3651
3693
  defaultTexControlPoints = [[[0, 0, 0, 1], [0, 1, 0, 1]], [[1, 0, 0, 1], [1, 1, 0, 1]]];
@@ -3659,7 +3701,7 @@ function (X3DParametricGeometryNode,
3659
3701
 
3660
3702
  return function (uClosed, vClosed, uOrder, vOrder, uKnots, vKnots, uDimension, vDimension, domain)
3661
3703
  {
3662
- var sampleOptions = this .sampleOptions;
3704
+ const sampleOptions = this .sampleOptions;
3663
3705
 
3664
3706
  if (this .texCoordNode && this .texCoordNode .getSize () === uDimension * vDimension)
3665
3707
  {
@@ -3693,7 +3735,7 @@ function (X3DParametricGeometryNode,
3693
3735
  sampleOptions .domain = domain;
3694
3736
  }
3695
3737
 
3696
- var texSurface = this .texSurface = (this .texSurface || nurbs) ({
3738
+ const texSurface = this .texSurface = (this .texSurface || nurbs) ({
3697
3739
  boundary: ["open", "open"],
3698
3740
  degree: [texUDegree, texVDegree],
3699
3741
  knots: [texUKnots, texVKnots],
@@ -3704,15 +3746,15 @@ function (X3DParametricGeometryNode,
3704
3746
  sampleOptions .closed [1] = false;
3705
3747
  sampleOptions .haveWeights = false;
3706
3748
 
3707
- var
3749
+ const
3708
3750
  texMesh = nurbs .sample (this .texMesh, texSurface, sampleOptions),
3709
3751
  faces = texMesh .faces,
3710
3752
  points = texMesh .points,
3711
3753
  texCoordArray = this .getTexCoords ();
3712
3754
 
3713
- for (var i = 0, length = faces .length; i < length; ++ i)
3755
+ for (let i = 0, length = faces .length; i < length; ++ i)
3714
3756
  {
3715
- var index = faces [i] * 4;
3757
+ const index = faces [i] * 4;
3716
3758
 
3717
3759
  texCoordArray .push (points [index], points [index + 1], points [index + 2], points [index + 3]);
3718
3760
  }
@@ -3722,28 +3764,24 @@ function (X3DParametricGeometryNode,
3722
3764
  })(),
3723
3765
  buildNormals: function (faces, points)
3724
3766
  {
3725
- var
3767
+ const
3726
3768
  normals = this .createNormals (faces, points),
3727
3769
  normalArray = this .getNormals ();
3728
3770
 
3729
- for (var i = 0, length = normals .length; i < length; ++ i)
3730
- {
3731
- var normal = normals [i];
3732
-
3771
+ for (const normal of normals)
3733
3772
  normalArray .push (normal .x, normal .y, normal .z);
3734
- }
3735
3773
  },
3736
3774
  createNormals: function (faces, points)
3737
3775
  {
3738
- var normals = this .createFaceNormals (faces, points);
3739
-
3740
- var normalIndex = [ ];
3776
+ const
3777
+ normals = this .createFaceNormals (faces, points),
3778
+ normalIndex = [ ];
3741
3779
 
3742
- for (var i = 0, length = faces .length; i < length; ++ i)
3780
+ for (let i = 0, length = faces .length; i < length; ++ i)
3743
3781
  {
3744
- var
3745
- index = faces [i],
3746
- pointIndex = normalIndex [index];
3782
+ const index = faces [i];
3783
+
3784
+ let pointIndex = normalIndex [index];
3747
3785
 
3748
3786
  if (! pointIndex)
3749
3787
  pointIndex = normalIndex [index] = [ ];
@@ -3755,18 +3793,20 @@ function (X3DParametricGeometryNode,
3755
3793
  },
3756
3794
  createFaceNormals: (function ()
3757
3795
  {
3758
- var
3796
+ const
3759
3797
  v1 = new Vector3 (0, 0, 0),
3760
3798
  v2 = new Vector3 (0, 0, 0),
3761
3799
  v3 = new Vector3 (0, 0, 0);
3762
3800
 
3763
3801
  return function (faces, points)
3764
3802
  {
3765
- var normals = this .faceNormals || [ ];
3803
+ const
3804
+ normals = this .faceNormals || [ ],
3805
+ length = faces .length;
3766
3806
 
3767
- for (var i = 0, length = faces .length; i < length; i += 3)
3807
+ for (let i = 0; i < length; i += 3)
3768
3808
  {
3769
- var
3809
+ const
3770
3810
  index1 = faces [i] * 3,
3771
3811
  index2 = faces [i + 1] * 3,
3772
3812
  index3 = faces [i + 2] * 3;
@@ -3775,7 +3815,7 @@ function (X3DParametricGeometryNode,
3775
3815
  v2 .set (points [index2], points [index2 + 1], points [index2 + 2]);
3776
3816
  v3 .set (points [index3], points [index3 + 1], points [index3 + 2]);
3777
3817
 
3778
- var normal = Triangle3 .normal (v1, v2 ,v3, normals [i] || new Vector3 (0, 0, 0));
3818
+ const normal = Triangle3 .normal (v1, v2 ,v3, normals [i] || new Vector3 (0, 0, 0));
3779
3819
 
3780
3820
  normals [i] = normal;
3781
3821
  normals [i + 1] = normal;
@@ -4075,22 +4115,22 @@ function (Fields,
4075
4115
 
4076
4116
  // Order and dimension are now positive numbers.
4077
4117
 
4078
- var
4118
+ const
4079
4119
  closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this .controlPointNode),
4080
4120
  weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this ._weight),
4081
4121
  controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this .controlPointNode);
4082
4122
 
4083
4123
  // Knots
4084
4124
 
4085
- var
4125
+ const
4086
4126
  knots = this .getKnots (this .knots, closed, this ._order .getValue (), this .controlPointNode .getSize (), this ._knot),
4087
4127
  scale = knots .at (-1) - knots [0];
4088
4128
 
4089
4129
  // Initialize NURBS tessellator
4090
4130
 
4091
- var degree = this ._order .getValue () - 1;
4131
+ const degree = this ._order .getValue () - 1;
4092
4132
 
4093
- var surface = this .surface = (this .surface || nurbs) ({
4133
+ const surface = this .surface = (this .surface || nurbs) ({
4094
4134
  boundary: ["open"],
4095
4135
  degree: [degree],
4096
4136
  knots: [knots],
@@ -4100,7 +4140,7 @@ function (Fields,
4100
4140
 
4101
4141
  this .sampleOptions .haveWeights = Boolean (weights);
4102
4142
 
4103
- var
4143
+ const
4104
4144
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
4105
4145
  points = mesh .points,
4106
4146
  interpolator = this .interpolator;
@@ -4108,7 +4148,7 @@ function (Fields,
4108
4148
  interpolator ._key .length = 0;
4109
4149
  interpolator ._keyValue .length = 0;
4110
4150
 
4111
- for (var i = 0, length = points .length; i < length; i += 3)
4151
+ for (let i = 0, length = points .length; i < length; i += 3)
4112
4152
  {
4113
4153
  interpolator ._key .push (knots [0] + i / (length - 3) * scale);
4114
4154
  interpolator ._keyValue. push (new Fields .SFVec3f (points [i], points [i + 1], points [i + 2]));
@@ -4187,18 +4227,6 @@ function (Fields,
4187
4227
  {
4188
4228
  "use strict";
4189
4229
 
4190
- function remove (array, first, last, range, rfirst, rlast)
4191
- {
4192
- var set = { };
4193
-
4194
- for (var i = rfirst; i < rlast; ++ i)
4195
- set [getId (range [i])] = true;
4196
-
4197
- function compare (value) { return set [getId (value)]; }
4198
-
4199
- return array .remove (first, last, compare);
4200
- }
4201
-
4202
4230
  function NurbsSet (executionContext)
4203
4231
  {
4204
4232
  X3DChildNode .call (this, executionContext);
@@ -4252,49 +4280,53 @@ function (Fields,
4252
4280
  {
4253
4281
  // Add bounding boxes
4254
4282
 
4255
- for (var i = 0, length = this .geometryNodes .length; i < length; ++ i)
4256
- {
4257
- bbox .add (this .geometryNodes [i] .getBBox ());
4258
- }
4283
+ for (const geometryNode of this .geometryNodes)
4284
+ bbox .add (geometryNode .getBBox ());
4259
4285
 
4260
4286
  return bbox;
4261
4287
  },
4262
4288
  set_tessellationScale__: function ()
4263
4289
  {
4264
- var tessellationScale = Math .max (0, this ._tessellationScale .getValue ());
4290
+ const tessellationScale = Math .max (0, this ._tessellationScale .getValue ());
4265
4291
 
4266
- for (var i = 0, length = this .geometryNodes .length; i < length; ++ i)
4267
- this .geometryNodes [i] .setTessellationScale (tessellationScale);
4292
+ for (const geometryNode of this .geometryNodes)
4293
+ geometryNode .setTessellationScale (tessellationScale);
4268
4294
  },
4269
4295
  set_addGeometry__: function ()
4270
4296
  {
4271
4297
  this ._addGeometry .setTainted (true);
4272
4298
 
4273
4299
  this ._addGeometry .erase (remove (this ._addGeometry, 0, this ._addGeometry .length,
4274
- this ._geometry, 0, this ._geometry .length),
4300
+ this ._geometry, 0, this ._geometry .length),
4275
4301
  this ._addGeometry .length);
4276
4302
 
4277
- for (var i = 0, length = this ._addGeometry .length; i < length; ++ i)
4278
- this ._geometry .push (this ._addGeometry [i]);
4303
+ for (const geometry of this ._addGeometry)
4304
+ this ._geometry .push (geometry);
4279
4305
 
4306
+ this ._addGeometry .length = 0;
4280
4307
  this ._addGeometry .setTainted (false);
4281
4308
  },
4282
4309
  set_removeGeometry__: function ()
4283
4310
  {
4311
+ this ._removeGeometry .setTainted (true);
4312
+
4284
4313
  this ._geometry .erase (remove (this ._geometry, 0, this ._geometry .length,
4285
4314
  this ._removeGeometry, 0, this ._removeGeometry .length),
4286
- this .geometry__ .length);
4315
+ this ._geometry .length);
4316
+
4317
+ this ._removeGeometry .length = 0;
4318
+ this ._removeGeometry .setTainted (false);
4287
4319
  },
4288
4320
  set_geometry__: function ()
4289
4321
  {
4290
- for (var i = 0, length = this .geometryNodes .length; i < length; ++ i)
4291
- this .geometryNodes [i] .setTessellationScale (1);
4322
+ for (const geometryNode of this .geometryNodes)
4323
+ geometryNode .setTessellationScale (1);
4292
4324
 
4293
4325
  this .geometryNodes .length = 0;
4294
4326
 
4295
- for (var i = 0, length = this ._geometry .length; i < length; ++ i)
4327
+ for (const node of this ._geometry)
4296
4328
  {
4297
- var geometryNode = X3DCast (X3DConstants .X3DNurbsSurfaceGeometryNode, this ._geometry [i]);
4329
+ const geometryNode = X3DCast (X3DConstants .X3DNurbsSurfaceGeometryNode, node);
4298
4330
 
4299
4331
  if (geometryNode)
4300
4332
  this .geometryNodes .push (geometryNode);
@@ -4304,6 +4336,18 @@ function (Fields,
4304
4336
  },
4305
4337
  });
4306
4338
 
4339
+ function remove (array, first, last, range, rfirst, rlast)
4340
+ {
4341
+ const set = new Set ();
4342
+
4343
+ for (let i = rfirst; i < rlast; ++ i)
4344
+ set .add (range [i]);
4345
+
4346
+ function compare (value) { return set .has (value); }
4347
+
4348
+ return array .remove (first, last, compare);
4349
+ }
4350
+
4307
4351
  return NurbsSet;
4308
4352
  });
4309
4353
 
@@ -4528,7 +4572,7 @@ function (Fields,
4528
4572
  },
4529
4573
  set_fraction__: (function ()
4530
4574
  {
4531
- var
4575
+ const
4532
4576
  a = new Vector3 (0, 0, 0),
4533
4577
  b = new Vector3 (0, 0, 0),
4534
4578
  c = new Vector3 (0, 0, 0),
@@ -4538,13 +4582,13 @@ function (Fields,
4538
4582
 
4539
4583
  return function ()
4540
4584
  {
4541
- var
4585
+ const
4542
4586
  fraction = this ._set_fraction .getValue (),
4543
4587
  texCoordsArray = this .geometry .getTexCoords (),
4544
4588
  normalArray = this .geometry .getNormals (),
4545
4589
  verticesArray = this .geometry .getVertices ();
4546
4590
 
4547
- for (var i4 = 0, i3 = 0, length = texCoordsArray .length; i4 < length; i4 += 12, i3 += 9)
4591
+ for (let i4 = 0, i3 = 0, length = texCoordsArray .length; i4 < length; i4 += 12, i3 += 9)
4548
4592
  {
4549
4593
  a .set (texCoordsArray [i4 + 0], texCoordsArray [i4 + 1], 0);
4550
4594
  b .set (texCoordsArray [i4 + 4], texCoordsArray [i4 + 5], 0);
@@ -4556,18 +4600,18 @@ function (Fields,
4556
4600
 
4557
4601
  if (line .intersectsTriangle (a, b, c, uvt))
4558
4602
  {
4559
- var
4603
+ const
4560
4604
  u = uvt .u,
4561
4605
  v = uvt .v,
4562
4606
  t = uvt .t;
4563
4607
 
4564
- var normal = new Vector3 (t * normalArray [i3 + 0] + u * normalArray [i3 + 3] + v * normalArray [i3 + 6],
4565
- t * normalArray [i3 + 1] + u * normalArray [i3 + 4] + v * normalArray [i3 + 7],
4566
- t * normalArray [i3 + 2] + u * normalArray [i3 + 5] + v * normalArray [i3 + 8]);
4608
+ const normal = new Vector3 (t * normalArray [i3 + 0] + u * normalArray [i3 + 3] + v * normalArray [i3 + 6],
4609
+ t * normalArray [i3 + 1] + u * normalArray [i3 + 4] + v * normalArray [i3 + 7],
4610
+ t * normalArray [i3 + 2] + u * normalArray [i3 + 5] + v * normalArray [i3 + 8]);
4567
4611
 
4568
- var position = new Vector3 (t * verticesArray [i4 + 0] + u * verticesArray [i4 + 4] + v * verticesArray [i4 + 8],
4569
- t * verticesArray [i4 + 1] + u * verticesArray [i4 + 5] + v * verticesArray [i4 + 9],
4570
- t * verticesArray [i4 + 2] + u * verticesArray [i4 + 6] + v * verticesArray [i4 + 10]);
4612
+ const position = new Vector3 (t * verticesArray [i4 + 0] + u * verticesArray [i4 + 4] + v * verticesArray [i4 + 8],
4613
+ t * verticesArray [i4 + 1] + u * verticesArray [i4 + 5] + v * verticesArray [i4 + 9],
4614
+ t * verticesArray [i4 + 2] + u * verticesArray [i4 + 6] + v * verticesArray [i4 + 10]);
4571
4615
 
4572
4616
  this ._normal_changed = normal;
4573
4617
  this ._position_changed = position;
@@ -4630,7 +4674,7 @@ function (Fields,
4630
4674
  ******************************************************************************/
4631
4675
 
4632
4676
 
4633
- define ('x_ite/Components/NURBS/NurbsSweptSurface',[
4677
+ define ('x_ite/Components/NURBS/NurbsSweptSurface',[
4634
4678
  "x_ite/Fields",
4635
4679
  "x_ite/Base/X3DFieldDefinition",
4636
4680
  "x_ite/Base/FieldDefinitionArray",
@@ -4687,7 +4731,7 @@ function (Fields,
4687
4731
  this ._crossSectionCurve .addInterest ("set_crossSectionCurve__", this);
4688
4732
  this ._trajectoryCurve .addInterest ("set_trajectoryCurve__", this);
4689
4733
 
4690
- var extrusion = this .extrusion;
4734
+ const extrusion = this .extrusion;
4691
4735
 
4692
4736
  extrusion ._beginCap = false;
4693
4737
  extrusion ._endCap = false;
@@ -4732,7 +4776,7 @@ function (Fields,
4732
4776
  if (! this .trajectoryCurveNode)
4733
4777
  return;
4734
4778
 
4735
- var extrusion = this .extrusion;
4779
+ const extrusion = this .extrusion;
4736
4780
 
4737
4781
  extrusion ._crossSection = this .crossSectionCurveNode .tessellate (0);
4738
4782
  extrusion ._spine = this .trajectoryCurveNode .tessellate (0);
@@ -4748,9 +4792,9 @@ function (Fields,
4748
4792
 
4749
4793
  if (! this ._ccw .getValue ())
4750
4794
  {
4751
- var normals = this .getNormals ();
4795
+ const normals = this .getNormals ();
4752
4796
 
4753
- for (var i = 0, length = normals .length; i < length; ++ i)
4797
+ for (let i = 0, length = normals .length; i < length; ++ i)
4754
4798
  normals [i] = -normals [i];
4755
4799
  }
4756
4800
 
@@ -4868,7 +4912,7 @@ function (Fields,
4868
4912
  this ._profileCurve .addInterest ("set_profileCurve__", this);
4869
4913
  this ._trajectoryCurve .addInterest ("set_trajectoryCurve__", this);
4870
4914
 
4871
- var extrusion = this .extrusion;
4915
+ const extrusion = this .extrusion;
4872
4916
 
4873
4917
  extrusion ._beginCap = false;
4874
4918
  extrusion ._endCap = false;
@@ -4913,7 +4957,7 @@ function (Fields,
4913
4957
  if (! this .trajectoryCurveNode)
4914
4958
  return;
4915
4959
 
4916
- var extrusion = this .extrusion;
4960
+ const extrusion = this .extrusion;
4917
4961
 
4918
4962
  extrusion ._crossSection = this .profileCurveNode .tessellate (0);
4919
4963
  extrusion ._spine = this .trajectoryCurveNode .tessellate (1);
@@ -4929,9 +4973,9 @@ function (Fields,
4929
4973
 
4930
4974
  if (! this ._ccw .getValue ())
4931
4975
  {
4932
- var normals = this .getNormals ();
4976
+ const normals = this .getNormals ();
4933
4977
 
4934
- for (var i = 0, length = normals .length; i < length; ++ i)
4978
+ for (let i = 0, length = normals .length; i < length; ++ i)
4935
4979
  normals [i] = -normals [i];
4936
4980
  }
4937
4981
 
@@ -4992,7 +5036,7 @@ function (Fields,
4992
5036
  ******************************************************************************/
4993
5037
 
4994
5038
 
4995
- define ('x_ite/Components/NURBS/NurbsTextureCoordinate',[
5039
+ define ('x_ite/Components/NURBS/NurbsTextureCoordinate',[
4996
5040
  "x_ite/Fields",
4997
5041
  "x_ite/Base/X3DFieldDefinition",
4998
5042
  "x_ite/Base/FieldDefinitionArray",
@@ -5050,20 +5094,20 @@ function (Fields,
5050
5094
  },
5051
5095
  getControlPoints: function (texWeights)
5052
5096
  {
5053
- var
5097
+ const
5054
5098
  controlPointArray = this ._controlPoint .getValue (),
5055
5099
  controlPoints = this .controlPoints;
5056
5100
 
5057
- for (var u = 0, uDimension = this ._uDimension .getValue (); u < uDimension; ++ u)
5101
+ for (let u = 0, uDimension = this ._uDimension .getValue (); u < uDimension; ++ u)
5058
5102
  {
5059
- var cp = controlPoints [u];
5103
+ let cp = controlPoints [u];
5060
5104
 
5061
5105
  if (! cp)
5062
5106
  cp = controlPoints [u] = [ ];
5063
5107
 
5064
- for (var v = 0, vDimension = this ._vDimension .getValue (); v < vDimension; ++ v)
5108
+ for (let v = 0, vDimension = this ._vDimension .getValue (); v < vDimension; ++ v)
5065
5109
  {
5066
- var
5110
+ const
5067
5111
  index = v * uDimension + u,
5068
5112
  p = cp [v] || new Vector4 (),
5069
5113
  i = index * 2;
@@ -5212,19 +5256,46 @@ function (Fields,
5212
5256
  {
5213
5257
  X3DNurbsSurfaceGeometryNode .prototype .initialize .call (this);
5214
5258
 
5215
- this ._trimmingContour .addInterest ("set_trimmingContour__", this);
5259
+ this ._addTrimmingContour .addInterest ("set_addTrimmingContour__", this);
5260
+ this ._removeTrimmingContour .addInterest ("set_removeTrimmingContour__", this);
5261
+ this ._trimmingContour .addInterest ("set_trimmingContour__", this);
5216
5262
 
5217
5263
  this .set_trimmingContour__ ();
5218
5264
  },
5265
+ set_addTrimmingContour__: function ()
5266
+ {
5267
+ this ._addTrimmingContour .setTainted (true);
5268
+
5269
+ this ._addTrimmingContour .erase (remove (this ._addTrimmingContour, 0, this ._addTrimmingContour .length,
5270
+ this ._trimmingContour, 0, this ._trimmingContour .length),
5271
+ this ._addTrimmingContour .length);
5272
+
5273
+ for (const trimmingContour of this ._addTrimmingContour)
5274
+ this ._trimmingContour .push (trimmingContour);
5275
+
5276
+ this ._addTrimmingContour .length = 0;
5277
+ this ._addTrimmingContour .setTainted (false);
5278
+ },
5279
+ set_removeTrimmingContour__: function ()
5280
+ {
5281
+ this ._removeTrimmingContour .setTainted (true);
5282
+
5283
+ this ._trimmingContour .erase (remove (this ._trimmingContour, 0, this ._trimmingContour .length,
5284
+ this ._removeTrimmingContour, 0, this ._removeTrimmingContour .length),
5285
+ this ._trimmingContour .length);
5286
+
5287
+ this ._removeTrimmingContour .length = 0;
5288
+ this ._removeTrimmingContour .setTainted (false);
5289
+ },
5219
5290
  set_trimmingContour__: function ()
5220
5291
  {
5221
- var trimmingContourNodes = this .trimmingContourNodes;
5292
+ const trimmingContourNodes = this .trimmingContourNodes;
5222
5293
 
5223
5294
  trimmingContourNodes .length = 0;
5224
5295
 
5225
- for (var i = 0, length = this ._trimmingContour .length; i < length; ++ i)
5296
+ for (const node of this ._trimmingContour)
5226
5297
  {
5227
- var trimmingContourNode = X3DCast (X3DConstants .Contour2D, this ._trimmingContour [i]);
5298
+ const trimmingContourNode = X3DCast (X3DConstants .Contour2D, node);
5228
5299
 
5229
5300
  if (trimmingContourNode)
5230
5301
  trimmingContourNodes .push (trimmingContourNode);
@@ -5232,17 +5303,29 @@ function (Fields,
5232
5303
  },
5233
5304
  getTrimmingContours: function ()
5234
5305
  {
5235
- var
5306
+ const
5236
5307
  trimmingContourNodes = this .trimmingContourNodes,
5237
5308
  trimmingContours = [ ];
5238
5309
 
5239
- for (var i = 0, length = trimmingContourNodes .length; i < length; ++ i)
5240
- trimmingContourNodes [i] .addTrimmingContour (trimmingContours);
5310
+ for (const trimmingContourNode of trimmingContourNodes)
5311
+ trimmingContourNode .addTrimmingContour (trimmingContours);
5241
5312
 
5242
5313
  return trimmingContours;
5243
5314
  },
5244
5315
  });
5245
5316
 
5317
+ function remove (array, first, last, range, rfirst, rlast)
5318
+ {
5319
+ const set = new Set ();
5320
+
5321
+ for (let i = rfirst; i < rlast; ++ i)
5322
+ set .add (range [i]);
5323
+
5324
+ function compare (value) { return set .has (value); }
5325
+
5326
+ return array .remove (first, last, compare);
5327
+ }
5328
+
5246
5329
  return NurbsTrimmedSurface;
5247
5330
  });
5248
5331