x_ite 8.4.3 → 8.5.3

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 (568) hide show
  1. package/.vscode/settings.json +5 -1
  2. package/Makefile +0 -3
  3. package/build/bin/components.js +173 -0
  4. package/build/bin/tags.pl +28 -0
  5. package/build/bin/tests.pl +80 -2
  6. package/build/bin/version.pl +12 -7
  7. package/dist/assets/components/Annotation.js +13 -13
  8. package/dist/assets/components/Annotation.min.js +1 -1
  9. package/dist/assets/components/CADGeometry.js +13 -13
  10. package/dist/assets/components/CADGeometry.min.js +1 -1
  11. package/dist/assets/components/CubeMapTexturing.js +28 -29
  12. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  13. package/dist/assets/components/DIS.js +13 -13
  14. package/dist/assets/components/DIS.min.js +1 -1
  15. package/dist/assets/components/EventUtilities.js +9 -9
  16. package/dist/assets/components/EventUtilities.min.js +1 -1
  17. package/dist/assets/components/Geometry2D.js +19 -19
  18. package/dist/assets/components/Geometry2D.min.js +1 -1
  19. package/dist/assets/components/Geospatial.js +33 -33
  20. package/dist/assets/components/Geospatial.min.js +1 -1
  21. package/dist/assets/components/HAnim.js +63 -42
  22. package/dist/assets/components/HAnim.min.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  24. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  25. package/dist/assets/components/Layout.js +37 -29
  26. package/dist/assets/components/Layout.min.js +1 -1
  27. package/dist/assets/components/NURBS.js +29 -31
  28. package/dist/assets/components/NURBS.min.js +1 -1
  29. package/dist/assets/components/ParticleSystems.js +23 -23
  30. package/dist/assets/components/ParticleSystems.min.js +1 -1
  31. package/dist/assets/components/Picking.js +19 -19
  32. package/dist/assets/components/Picking.min.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysics.js +24 -19
  34. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  35. package/dist/assets/components/Scripting.js +30 -30
  36. package/dist/assets/components/Scripting.min.js +1 -1
  37. package/dist/assets/components/Text.js +172 -594
  38. package/dist/assets/components/Text.min.js +1 -1
  39. package/dist/assets/components/TextureProjector.js +31 -47
  40. package/dist/assets/components/TextureProjector.min.js +1 -1
  41. package/dist/assets/components/Texturing3D.js +367 -346
  42. package/dist/assets/components/Texturing3D.min.js +1 -1
  43. package/dist/assets/components/VolumeRendering.js +19 -19
  44. package/dist/assets/components/VolumeRendering.min.js +1 -1
  45. package/dist/assets/components/X_ITE.js +9 -9
  46. package/dist/assets/components/X_ITE.min.js +1 -1
  47. package/dist/x_ite.css +1 -1
  48. package/dist/x_ite.js +12174 -3553
  49. package/dist/x_ite.min.js +1 -1
  50. package/dist/x_ite.zip +0 -0
  51. package/docs/_config.yml +5 -136
  52. package/docs/_data/nav/components-CADGeometry.yml +14 -0
  53. package/docs/_data/nav/components-Core.yml +16 -0
  54. package/docs/_data/nav/components-CubeMapTexturing.yml +8 -0
  55. package/docs/_data/nav/components-DIS.yml +14 -0
  56. package/docs/_data/nav/components-EnvironmentalEffects.yml +12 -0
  57. package/docs/_data/nav/components-EnvironmentalSensor.yml +8 -0
  58. package/docs/_data/nav/components-EventUtilities.yml +16 -0
  59. package/docs/_data/nav/components-Followers.yml +30 -0
  60. package/docs/_data/nav/components-Geometry2D.yml +18 -0
  61. package/docs/_data/nav/components-Geometry3D.yml +16 -0
  62. package/docs/_data/nav/components-Geospatial.yml +24 -0
  63. package/docs/_data/nav/components-Grouping.yml +10 -0
  64. package/docs/_data/nav/components-HAnim.yml +14 -0
  65. package/docs/_data/nav/components-Interpolation.yml +28 -0
  66. package/docs/_data/nav/components-KeyDeviceSensor.yml +6 -0
  67. package/docs/_data/nav/components-Layering.yml +8 -0
  68. package/docs/_data/nav/components-Layout.yml +12 -0
  69. package/docs/_data/nav/components-Lighting.yml +10 -0
  70. package/docs/_data/nav/components-NURBS.yml +30 -0
  71. package/docs/_data/nav/components-Navigation.yml +16 -0
  72. package/docs/_data/nav/components-Networking.yml +8 -0
  73. package/docs/_data/nav/components-ParticleSystems.yml +22 -0
  74. package/docs/_data/nav/components-Picking.yml +12 -0
  75. package/docs/_data/nav/components-PointingDeviceSensor.yml +10 -0
  76. package/docs/_data/nav/components-Rendering.yml +30 -0
  77. package/docs/_data/nav/components-RigidBodyPhysics.yml +30 -0
  78. package/docs/_data/nav/components-Scripting.yml +4 -0
  79. package/docs/_data/nav/components-Shaders.yml +18 -0
  80. package/docs/_data/nav/components-Shape.yml +22 -0
  81. package/docs/_data/nav/components-Sound.yml +44 -0
  82. package/docs/_data/nav/components-Text.yml +6 -0
  83. package/docs/_data/nav/components-TextureProjector.yml +6 -0
  84. package/docs/_data/nav/components-Texturing.yml +22 -0
  85. package/docs/_data/nav/components-Texturing3D.yml +18 -0
  86. package/docs/_data/nav/components-Time.yml +4 -0
  87. package/docs/_data/nav/components-VolumeRendering.yml +28 -0
  88. package/docs/_data/nav/components-X_ITE.yml +4 -0
  89. package/docs/_data/nav/main.yml +26 -0
  90. package/docs/_data/nav/reference.yml +18 -0
  91. package/docs/_data/nav/tutorials-animation-sensors-and-geometry.yml +18 -0
  92. package/docs/_data/nav/tutorials-basic.yml +6 -0
  93. package/docs/_data/nav/tutorials-optimize-your-scene.yml +6 -0
  94. package/docs/_data/nav/tutorials-scripts-and-prototypes.yml +12 -0
  95. package/docs/_data/nav/tutorials-shapes-geometry-and-appearance.yml +16 -0
  96. package/docs/_data/nav/tutorials-textures-lights-and-environment.yml +20 -0
  97. package/docs/_includes/nav.html +2 -2
  98. package/docs/_includes/scripts.html +2 -1
  99. package/docs/_posts/accessing-the-external-browser.md +1 -1
  100. package/docs/_posts/browser-support.md +1 -1
  101. package/docs/_posts/components/CADGeometry/CADAssembly.md +83 -0
  102. package/docs/_posts/components/CADGeometry/CADFace.md +70 -0
  103. package/docs/_posts/components/CADGeometry/CADLayer.md +84 -0
  104. package/docs/_posts/components/CADGeometry/CADPart.md +117 -0
  105. package/docs/_posts/components/CADGeometry/IndexedQuadSet.md +125 -0
  106. package/docs/_posts/components/CADGeometry/QuadSet.md +113 -0
  107. package/docs/_posts/components/Core/MetadataBoolean.md +90 -0
  108. package/docs/_posts/components/Core/MetadataDouble.md +67 -0
  109. package/docs/_posts/components/Core/MetadataFloat.md +67 -0
  110. package/docs/_posts/components/Core/MetadataInteger.md +66 -0
  111. package/docs/_posts/components/Core/MetadataSet.md +63 -0
  112. package/docs/_posts/components/Core/MetadataString.md +66 -0
  113. package/docs/_posts/components/Core/WorldInfo.md +54 -0
  114. package/docs/_posts/components/CubeMapTexturing/ComposedCubeMapTexture.md +76 -0
  115. package/docs/_posts/components/CubeMapTexturing/GeneratedCubeMapTexture.md +65 -0
  116. package/docs/_posts/components/CubeMapTexturing/ImageCubeMapTexture.md +66 -0
  117. package/docs/_posts/components/DIS/DISEntityManager.md +73 -0
  118. package/docs/_posts/components/DIS/DISEntityTypeMapping.md +88 -0
  119. package/docs/_posts/components/DIS/EspduTransform.md +416 -0
  120. package/docs/_posts/components/DIS/ReceiverPdu.md +168 -0
  121. package/docs/_posts/components/DIS/SignalPdu.md +168 -0
  122. package/docs/_posts/components/DIS/TransmitterPdu.md +232 -0
  123. package/docs/_posts/components/EnvironmentalEffects/Background.md +189 -0
  124. package/docs/_posts/components/EnvironmentalEffects/Fog.md +97 -0
  125. package/docs/_posts/components/EnvironmentalEffects/FogCoordinate.md +40 -0
  126. package/docs/_posts/components/EnvironmentalEffects/LocalFog.md +84 -0
  127. package/docs/_posts/components/EnvironmentalEffects/TextureBackground.md +142 -0
  128. package/docs/_posts/components/EnvironmentalSensor/ProximitySensor.md +90 -0
  129. package/docs/_posts/components/EnvironmentalSensor/TransformSensor.md +91 -0
  130. package/docs/_posts/components/EnvironmentalSensor/VisibilitySensor.md +73 -0
  131. package/docs/_posts/components/EventUtilities/BooleanFilter.md +62 -0
  132. package/docs/_posts/components/EventUtilities/BooleanSequencer.md +86 -0
  133. package/docs/_posts/components/EventUtilities/BooleanToggle.md +46 -0
  134. package/docs/_posts/components/EventUtilities/BooleanTrigger.md +47 -0
  135. package/docs/_posts/components/EventUtilities/IntegerSequencer.md +90 -0
  136. package/docs/_posts/components/EventUtilities/IntegerTrigger.md +51 -0
  137. package/docs/_posts/components/EventUtilities/TimeTrigger.md +47 -0
  138. package/docs/_posts/components/Followers/ColorChaser.md +77 -0
  139. package/docs/_posts/components/Followers/ColorDamper.md +85 -0
  140. package/docs/_posts/components/Followers/CoordinateChaser.md +76 -0
  141. package/docs/_posts/components/Followers/CoordinateDamper.md +80 -0
  142. package/docs/_posts/components/Followers/OrientationChaser.md +72 -0
  143. package/docs/_posts/components/Followers/OrientationDamper.md +80 -0
  144. package/docs/_posts/components/Followers/PositionChaser.md +72 -0
  145. package/docs/_posts/components/Followers/PositionChaser2D.md +72 -0
  146. package/docs/_posts/components/Followers/PositionDamper.md +80 -0
  147. package/docs/_posts/components/Followers/PositionDamper2D.md +80 -0
  148. package/docs/_posts/components/Followers/ScalarChaser.md +76 -0
  149. package/docs/_posts/components/Followers/ScalarDamper.md +80 -0
  150. package/docs/_posts/components/Followers/TexCoordChaser2D.md +72 -0
  151. package/docs/_posts/components/Followers/TexCoordDamper2D.md +80 -0
  152. package/docs/_posts/components/Geometry2D/Arc2D.md +71 -0
  153. package/docs/_posts/components/Geometry2D/ArcClose2D.md +91 -0
  154. package/docs/_posts/components/Geometry2D/Circle2D.md +55 -0
  155. package/docs/_posts/components/Geometry2D/Disk2D.md +75 -0
  156. package/docs/_posts/components/Geometry2D/Polyline2D.md +54 -0
  157. package/docs/_posts/components/Geometry2D/Polypoint2D.md +54 -0
  158. package/docs/_posts/components/Geometry2D/Rectangle2D.md +66 -0
  159. package/docs/_posts/components/Geometry2D/TriangleSet2D.md +66 -0
  160. package/docs/_posts/components/Geometry3D/Box.md +66 -0
  161. package/docs/_posts/components/Geometry3D/Cone.md +90 -0
  162. package/docs/_posts/components/Geometry3D/Cylinder.md +98 -0
  163. package/docs/_posts/components/Geometry3D/ElevationGrid.md +162 -0
  164. package/docs/_posts/components/Geometry3D/Extrusion.md +170 -0
  165. package/docs/_posts/components/Geometry3D/IndexedFaceSet.md +208 -0
  166. package/docs/_posts/components/Geometry3D/Sphere.md +66 -0
  167. package/docs/_posts/components/Geospatial/GeoCoordinate.md +65 -0
  168. package/docs/_posts/components/Geospatial/GeoElevationGrid.md +180 -0
  169. package/docs/_posts/components/Geospatial/GeoLOD.md +128 -0
  170. package/docs/_posts/components/Geospatial/GeoLocation.md +93 -0
  171. package/docs/_posts/components/Geospatial/GeoMetadata.md +75 -0
  172. package/docs/_posts/components/Geospatial/GeoOrigin.md +69 -0
  173. package/docs/_posts/components/Geospatial/GeoPositionInterpolator.md +95 -0
  174. package/docs/_posts/components/Geospatial/GeoProximitySensor.md +109 -0
  175. package/docs/_posts/components/Geospatial/GeoTouchSensor.md +108 -0
  176. package/docs/_posts/components/Geospatial/GeoTransform.md +121 -0
  177. package/docs/_posts/components/Geospatial/GeoViewpoint.md +126 -0
  178. package/docs/_posts/components/Grouping/Group.md +75 -0
  179. package/docs/_posts/components/Grouping/StaticGroup.md +65 -0
  180. package/docs/_posts/components/Grouping/Switch.md +89 -0
  181. package/docs/_posts/components/Grouping/Transform.md +126 -0
  182. package/docs/_posts/components/HAnim/HAnimDisplacer.md +89 -0
  183. package/docs/_posts/components/HAnim/HAnimHumanoid.md +136 -0
  184. package/docs/_posts/components/HAnim/HAnimJoint.md +165 -0
  185. package/docs/_posts/components/HAnim/HAnimMotion.md +68 -0
  186. package/docs/_posts/components/HAnim/HAnimSegment.md +107 -0
  187. package/docs/_posts/components/HAnim/HAnimSite.md +108 -0
  188. package/docs/_posts/components/Interpolation/ColorInterpolator.md +73 -0
  189. package/docs/_posts/components/Interpolation/CoordinateInterpolator.md +76 -0
  190. package/docs/_posts/components/Interpolation/CoordinateInterpolator2D.md +73 -0
  191. package/docs/_posts/components/Interpolation/EaseInEaseOut.md +67 -0
  192. package/docs/_posts/components/Interpolation/NormalInterpolator.md +68 -0
  193. package/docs/_posts/components/Interpolation/OrientationInterpolator.md +72 -0
  194. package/docs/_posts/components/Interpolation/PositionInterpolator.md +72 -0
  195. package/docs/_posts/components/Interpolation/PositionInterpolator2D.md +77 -0
  196. package/docs/_posts/components/Interpolation/ScalarInterpolator.md +76 -0
  197. package/docs/_posts/components/Interpolation/SplinePositionInterpolator.md +93 -0
  198. package/docs/_posts/components/Interpolation/SplinePositionInterpolator2D.md +93 -0
  199. package/docs/_posts/components/Interpolation/SplineScalarInterpolator.md +106 -0
  200. package/docs/_posts/components/Interpolation/SquadOrientationInterpolator.md +78 -0
  201. package/docs/_posts/components/KeyDeviceSensor/KeySensor.md +78 -0
  202. package/docs/_posts/components/KeyDeviceSensor/StringSensor.md +70 -0
  203. package/docs/_posts/components/Layering/Layer.md +67 -0
  204. package/docs/_posts/components/Layering/LayerSet.md +78 -0
  205. package/docs/_posts/components/Layering/Viewport.md +80 -0
  206. package/docs/_posts/components/Layout/Layout.md +107 -0
  207. package/docs/_posts/components/Layout/LayoutGroup.md +85 -0
  208. package/docs/_posts/components/Layout/LayoutLayer.md +74 -0
  209. package/docs/_posts/components/Layout/ScreenFontStyle.md +137 -0
  210. package/docs/_posts/components/Layout/ScreenGroup.md +71 -0
  211. package/docs/_posts/components/Lighting/DirectionalLight.md +100 -0
  212. package/docs/_posts/components/Lighting/EnvironmentLight.md +91 -0
  213. package/docs/_posts/components/Lighting/PointLight.md +103 -0
  214. package/docs/_posts/components/Lighting/SpotLight.md +132 -0
  215. package/docs/_posts/components/NURBS/Contour2D.md +57 -0
  216. package/docs/_posts/components/NURBS/ContourPolyline2D.md +46 -0
  217. package/docs/_posts/components/NURBS/CoordinateDouble.md +47 -0
  218. package/docs/_posts/components/NURBS/NurbsCurve.md +71 -0
  219. package/docs/_posts/components/NURBS/NurbsCurve2D.md +66 -0
  220. package/docs/_posts/components/NURBS/NurbsOrientationInterpolator.md +70 -0
  221. package/docs/_posts/components/NURBS/NurbsPatchSurface.md +106 -0
  222. package/docs/_posts/components/NURBS/NurbsPositionInterpolator.md +70 -0
  223. package/docs/_posts/components/NURBS/NurbsSet.md +66 -0
  224. package/docs/_posts/components/NURBS/NurbsSurfaceInterpolator.md +90 -0
  225. package/docs/_posts/components/NURBS/NurbsSweptSurface.md +69 -0
  226. package/docs/_posts/components/NURBS/NurbsSwungSurface.md +65 -0
  227. package/docs/_posts/components/NURBS/NurbsTextureCoordinate.md +77 -0
  228. package/docs/_posts/components/NURBS/NurbsTrimmedSurface.md +114 -0
  229. package/docs/_posts/components/Navigation/Billboard.md +88 -0
  230. package/docs/_posts/components/Navigation/Collision.md +102 -0
  231. package/docs/_posts/components/Navigation/LOD.md +99 -0
  232. package/docs/_posts/components/Navigation/NavigationInfo.md +122 -0
  233. package/docs/_posts/components/Navigation/OrthoViewpoint.md +117 -0
  234. package/docs/_posts/components/Navigation/Viewpoint.md +117 -0
  235. package/docs/_posts/components/Navigation/ViewpointGroup.md +80 -0
  236. package/docs/_posts/components/Networking/Anchor.md +111 -0
  237. package/docs/_posts/components/Networking/Inline.md +115 -0
  238. package/docs/_posts/components/Networking/LoadSensor.md +91 -0
  239. package/docs/_posts/components/ParticleSystems/BoundedPhysicsModel.md +54 -0
  240. package/docs/_posts/components/ParticleSystems/ConeEmitter.md +76 -0
  241. package/docs/_posts/components/ParticleSystems/ExplosionEmitter.md +72 -0
  242. package/docs/_posts/components/ParticleSystems/ForcePhysicsModel.md +58 -0
  243. package/docs/_posts/components/ParticleSystems/ParticleSystem.md +177 -0
  244. package/docs/_posts/components/ParticleSystems/PointEmitter.md +76 -0
  245. package/docs/_posts/components/ParticleSystems/PolylineEmitter.md +94 -0
  246. package/docs/_posts/components/ParticleSystems/SurfaceEmitter.md +90 -0
  247. package/docs/_posts/components/ParticleSystems/VolumeEmitter.md +90 -0
  248. package/docs/_posts/components/ParticleSystems/WindPhysicsModel.md +68 -0
  249. package/docs/_posts/components/Picking/LinePickSensor.md +125 -0
  250. package/docs/_posts/components/Picking/PickableGroup.md +93 -0
  251. package/docs/_posts/components/Picking/PointPickSensor.md +112 -0
  252. package/docs/_posts/components/Picking/PrimitivePickSensor.md +114 -0
  253. package/docs/_posts/components/Picking/VolumePickSensor.md +107 -0
  254. package/docs/_posts/components/PointingDeviceSensor/CylinderSensor.md +122 -0
  255. package/docs/_posts/components/PointingDeviceSensor/PlaneSensor.md +114 -0
  256. package/docs/_posts/components/PointingDeviceSensor/SphereSensor.md +89 -0
  257. package/docs/_posts/components/PointingDeviceSensor/TouchSensor.md +87 -0
  258. package/docs/_posts/components/Rendering/ClipPlane.md +67 -0
  259. package/docs/_posts/components/Rendering/Color.md +56 -0
  260. package/docs/_posts/components/Rendering/ColorRGBA.md +61 -0
  261. package/docs/_posts/components/Rendering/Coordinate.md +45 -0
  262. package/docs/_posts/components/Rendering/IndexedLineSet.md +128 -0
  263. package/docs/_posts/components/Rendering/IndexedTriangleFanSet.md +128 -0
  264. package/docs/_posts/components/Rendering/IndexedTriangleSet.md +128 -0
  265. package/docs/_posts/components/Rendering/IndexedTriangleStripSet.md +116 -0
  266. package/docs/_posts/components/Rendering/LineSet.md +85 -0
  267. package/docs/_posts/components/Rendering/Normal.md +41 -0
  268. package/docs/_posts/components/Rendering/PointSet.md +76 -0
  269. package/docs/_posts/components/Rendering/TriangleFanSet.md +112 -0
  270. package/docs/_posts/components/Rendering/TriangleSet.md +108 -0
  271. package/docs/_posts/components/Rendering/TriangleStripSet.md +116 -0
  272. package/docs/_posts/components/RigidBodyPhysics/BallJoint.md +78 -0
  273. package/docs/_posts/components/RigidBodyPhysics/CollidableOffset.md +75 -0
  274. package/docs/_posts/components/RigidBodyPhysics/CollidableShape.md +83 -0
  275. package/docs/_posts/components/RigidBodyPhysics/CollisionCollection.md +90 -0
  276. package/docs/_posts/components/RigidBodyPhysics/CollisionSensor.md +65 -0
  277. package/docs/_posts/components/RigidBodyPhysics/CollisionSpace.md +70 -0
  278. package/docs/_posts/components/RigidBodyPhysics/Contact.md +117 -0
  279. package/docs/_posts/components/RigidBodyPhysics/DoubleAxisHingeJoint.md +162 -0
  280. package/docs/_posts/components/RigidBodyPhysics/MotorJoint.md +183 -0
  281. package/docs/_posts/components/RigidBodyPhysics/RigidBody.md +175 -0
  282. package/docs/_posts/components/RigidBodyPhysics/RigidBodyCollection.md +120 -0
  283. package/docs/_posts/components/RigidBodyPhysics/SingleAxisHingeJoint.md +108 -0
  284. package/docs/_posts/components/RigidBodyPhysics/SliderJoint.md +106 -0
  285. package/docs/_posts/components/RigidBodyPhysics/UniversalJoint.md +119 -0
  286. package/docs/_posts/components/Scripting/Script.md +81 -0
  287. package/docs/_posts/components/Shaders/ComposedShader.md +81 -0
  288. package/docs/_posts/components/Shaders/FloatVertexAttribute.md +65 -0
  289. package/docs/_posts/components/Shaders/Matrix3VertexAttribute.md +53 -0
  290. package/docs/_posts/components/Shaders/Matrix4VertexAttribute.md +53 -0
  291. package/docs/_posts/components/Shaders/PackagedShader.md +77 -0
  292. package/docs/_posts/components/Shaders/ProgramShader.md +71 -0
  293. package/docs/_posts/components/Shaders/ShaderPart.md +76 -0
  294. package/docs/_posts/components/Shaders/ShaderProgram.md +68 -0
  295. package/docs/_posts/components/Shape/AcousticProperties.md +52 -0
  296. package/docs/_posts/components/Shape/Appearance.md +123 -0
  297. package/docs/_posts/components/Shape/FillProperties.md +67 -0
  298. package/docs/_posts/components/Shape/LineProperties.md +63 -0
  299. package/docs/_posts/components/Shape/Material.md +217 -0
  300. package/docs/_posts/components/Shape/PhysicalMaterial.md +173 -0
  301. package/docs/_posts/components/Shape/PointProperties.md +84 -0
  302. package/docs/_posts/components/Shape/Shape.md +63 -0
  303. package/docs/_posts/components/Shape/TwoSidedMaterial.md +149 -0
  304. package/docs/_posts/components/Shape/UnlitMaterial.md +115 -0
  305. package/docs/_posts/components/Sound/Analyser.md +72 -0
  306. package/docs/_posts/components/Sound/AudioClip.md +139 -0
  307. package/docs/_posts/components/Sound/AudioDestination.md +52 -0
  308. package/docs/_posts/components/Sound/BiquadFilter.md +70 -0
  309. package/docs/_posts/components/Sound/BufferAudioSource.md +86 -0
  310. package/docs/_posts/components/Sound/ChannelMerger.md +46 -0
  311. package/docs/_posts/components/Sound/ChannelSelector.md +48 -0
  312. package/docs/_posts/components/Sound/ChannelSplitter.md +48 -0
  313. package/docs/_posts/components/Sound/Convolver.md +66 -0
  314. package/docs/_posts/components/Sound/Delay.md +66 -0
  315. package/docs/_posts/components/Sound/DynamicsCompressor.md +74 -0
  316. package/docs/_posts/components/Sound/Gain.md +62 -0
  317. package/docs/_posts/components/Sound/ListenerPointSource.md +62 -0
  318. package/docs/_posts/components/Sound/MicrophoneSource.md +54 -0
  319. package/docs/_posts/components/Sound/OscillatorSource.md +58 -0
  320. package/docs/_posts/components/Sound/PeriodicWave.md +42 -0
  321. package/docs/_posts/components/Sound/Sound.md +92 -0
  322. package/docs/_posts/components/Sound/SpatialSound.md +68 -0
  323. package/docs/_posts/components/Sound/StreamAudioDestination.md +52 -0
  324. package/docs/_posts/components/Sound/StreamAudioSource.md +54 -0
  325. package/docs/_posts/components/Sound/WaveShaper.md +66 -0
  326. package/docs/_posts/components/Text/FontStyle.md +145 -0
  327. package/docs/_posts/components/Text/Text.md +102 -0
  328. package/docs/_posts/components/TextureProjector/TextureProjector.md +52 -0
  329. package/docs/_posts/components/TextureProjector/TextureProjectorParallel.md +52 -0
  330. package/docs/_posts/components/Texturing/ImageTexture.md +134 -0
  331. package/docs/_posts/components/Texturing/MovieTexture.md +221 -0
  332. package/docs/_posts/components/Texturing/MultiTexture.md +100 -0
  333. package/docs/_posts/components/Texturing/MultiTextureCoordinate.md +47 -0
  334. package/docs/_posts/components/Texturing/MultiTextureTransform.md +47 -0
  335. package/docs/_posts/components/Texturing/PixelTexture.md +80 -0
  336. package/docs/_posts/components/Texturing/TextureCoordinate.md +52 -0
  337. package/docs/_posts/components/Texturing/TextureCoordinateGenerator.md +64 -0
  338. package/docs/_posts/components/Texturing/TextureProperties.md +137 -0
  339. package/docs/_posts/components/Texturing/TextureTransform.md +73 -0
  340. package/docs/_posts/components/Texturing3D/ComposedTexture3D.md +76 -0
  341. package/docs/_posts/components/Texturing3D/ImageTexture3D.md +132 -0
  342. package/docs/_posts/components/Texturing3D/ImageTextureAtlas.md +131 -0
  343. package/docs/_posts/components/Texturing3D/PixelTexture3D.md +75 -0
  344. package/docs/_posts/components/Texturing3D/TextureCoordinate3D.md +53 -0
  345. package/docs/_posts/components/Texturing3D/TextureCoordinate4D.md +52 -0
  346. package/docs/_posts/components/Texturing3D/TextureTransform3D.md +69 -0
  347. package/docs/_posts/components/Texturing3D/TextureTransformMatrix3D.md +57 -0
  348. package/docs/_posts/components/Time/TimeSensor.md +136 -0
  349. package/docs/_posts/components/VolumeRendering/BlendedVolumeStyle.md +92 -0
  350. package/docs/_posts/components/VolumeRendering/BoundaryEnhancementVolumeStyle.md +53 -0
  351. package/docs/_posts/components/VolumeRendering/CartoonVolumeStyle.md +83 -0
  352. package/docs/_posts/components/VolumeRendering/ComposedVolumeStyle.md +51 -0
  353. package/docs/_posts/components/VolumeRendering/EdgeEnhancementVolumeStyle.md +67 -0
  354. package/docs/_posts/components/VolumeRendering/IsoSurfaceVolumeData.md +99 -0
  355. package/docs/_posts/components/VolumeRendering/OpacityMapVolumeStyle.md +51 -0
  356. package/docs/_posts/components/VolumeRendering/ProjectionVolumeStyle.md +48 -0
  357. package/docs/_posts/components/VolumeRendering/SegmentedVolumeData.md +80 -0
  358. package/docs/_posts/components/VolumeRendering/ShadedVolumeStyle.md +75 -0
  359. package/docs/_posts/components/VolumeRendering/SilhouetteEnhancementVolumeStyle.md +63 -0
  360. package/docs/_posts/components/VolumeRendering/ToneMappedVolumeStyle.md +71 -0
  361. package/docs/_posts/components/VolumeRendering/VolumeData.md +71 -0
  362. package/docs/_posts/components/X_ITE/BlendMode.md +94 -0
  363. package/docs/_posts/custom-shaders.md +9 -4
  364. package/docs/_posts/dom-integration.md +1 -6
  365. package/docs/_posts/features.md +2 -2
  366. package/docs/_posts/getting-started.md +100 -57
  367. package/docs/_posts/glossary.md +1 -1
  368. package/docs/_posts/how-to-configure-your-web-server.md +1 -1
  369. package/docs/_posts/reference/browser-services.md +78 -18
  370. package/docs/_posts/reference/constants-services.md +1 -1
  371. package/docs/_posts/reference/ecmascript-object-and-function-definitions.md +1 -1
  372. package/docs/_posts/reference/field-services-and-objects.md +8 -8
  373. package/docs/_posts/reference/prototype-services.md +7 -7
  374. package/docs/_posts/reference/route-services.md +1 -1
  375. package/docs/_posts/reference/scene-services.md +5 -5
  376. package/docs/_posts/reference/script-node-authoring-interface.md +1 -1
  377. package/docs/_posts/report-a-bug.md +1 -1
  378. package/docs/_posts/setup-a-localhost-server.md +5 -1
  379. package/docs/_posts/supported-nodes.md +239 -238
  380. package/docs/_posts/tutorials/adding-backgrounds.md +3 -3
  381. package/docs/_posts/tutorials/adding-fog.md +2 -2
  382. package/docs/_posts/tutorials/adding-sound.md +19 -19
  383. package/docs/_posts/tutorials/animating-transforms.md +17 -17
  384. package/docs/_posts/tutorials/basic-nodes.md +30 -30
  385. package/docs/_posts/tutorials/building-a-x3d-world.md +3 -3
  386. package/docs/_posts/tutorials/building-elevation-grids.md +7 -7
  387. package/docs/_posts/tutorials/building-extruded-shapes.md +7 -7
  388. package/docs/_posts/tutorials/building-primitive-shapes.md +13 -13
  389. package/docs/_posts/tutorials/building-shapes-out-of-points-lines-and-faces.md +21 -21
  390. package/docs/_posts/tutorials/controlling-appearance-with-materials.md +7 -7
  391. package/docs/_posts/tutorials/controlling-color-on-coordinate-based-geometry.md +11 -11
  392. package/docs/_posts/tutorials/controlling-detail.md +4 -4
  393. package/docs/_posts/tutorials/controlling-how-textures-are-mapped.md +7 -7
  394. package/docs/_posts/tutorials/controlling-navigation.md +3 -3
  395. package/docs/_posts/tutorials/controlling-shading-on-coordinate-based-geometry.md +13 -13
  396. package/docs/_posts/tutorials/controlling-the-viewpoint.md +3 -3
  397. package/docs/_posts/tutorials/creating-new-node-types.md +4 -4
  398. package/docs/_posts/tutorials/grouping-nodes.md +13 -13
  399. package/docs/_posts/tutorials/hello-world.md +1 -1
  400. package/docs/_posts/tutorials/improving-performance.md +1 -1
  401. package/docs/_posts/tutorials/increasing-rendering-speed.md +1 -1
  402. package/docs/_posts/tutorials/introducing-animation.md +10 -10
  403. package/docs/_posts/tutorials/introducing-script-use.md +3 -3
  404. package/docs/_posts/tutorials/introducing-x3d.md +1 -1
  405. package/docs/_posts/tutorials/lighting-your-world.md +4 -4
  406. package/docs/_posts/tutorials/mapping-textures.md +7 -7
  407. package/docs/_posts/tutorials/naming-nodes.md +1 -1
  408. package/docs/_posts/tutorials/overview.md +1 -1
  409. package/docs/_posts/tutorials/providing-information-about-your-world.md +2 -2
  410. package/docs/_posts/tutorials/sensing-the-viewer.md +15 -15
  411. package/docs/_posts/tutorials/sensing-viewer-actions.md +10 -10
  412. package/docs/_posts/tutorials/transforming-shapes.md +4 -4
  413. package/docs/_posts/tutorials/writing-program-scripts-with-ecmascript.md +5 -5
  414. package/docs/_posts/what's-new.md +40 -2
  415. package/docs/_tabs/components.md +383 -0
  416. package/docs/_tabs/imprint.md +1 -1
  417. package/docs/_tabs/laboratory.md +38 -6
  418. package/docs/_tabs/playground.html +22 -66
  419. package/docs/_tabs/reference.md +2 -1
  420. package/docs/_tabs/tags.md +1 -1
  421. package/docs/_tabs/tutorials.md +1 -1
  422. package/docs/assets/X3D/Michroma-Regular.ttf +0 -0
  423. package/docs/assets/X3D/peakpx.jpg +0 -0
  424. package/docs/assets/X3D/teaser.x3d +55 -0
  425. package/docs/assets/css/style.scss +120 -11
  426. package/docs/assets/img/laboratory/blend-mode.png +0 -0
  427. package/docs/assets/img/laboratory/dicom-nrrd.png +0 -0
  428. package/docs/assets/img/laboratory/earthquake.png +0 -0
  429. package/docs/assets/img/laboratory/gltf.png +0 -0
  430. package/docs/assets/img/laboratory/l-system.png +0 -0
  431. package/docs/assets/js/autoupdate.js +25 -0
  432. package/docs/laboratory/gltf-sample-viewer.html +318 -0
  433. package/docs/laboratory/x3d-visual-blend-mode-editor.html +1 -0
  434. package/package.json +9 -2
  435. package/src/assets/components/Texturing3D.js +5 -3
  436. package/src/assets/shaders/Types.glsl.js +5 -5
  437. package/src/assets/shaders/webgl1/PBR.fs.js +1 -1
  438. package/src/assets/shaders/webgl1/include/Colors.glsl.js +5 -7
  439. package/src/assets/shaders/webgl1/include/Fragment.glsl.js +4 -0
  440. package/src/assets/shaders/webgl1/include/Hatch.glsl.js +1 -1
  441. package/src/assets/shaders/webgl1/include/Texture.glsl.js +3 -3
  442. package/src/assets/shaders/webgl2/include/Colors.glsl.js +5 -7
  443. package/src/assets/shaders/webgl2/include/Hatch.glsl.js +1 -1
  444. package/src/assets/shaders/webgl2/include/Particle.glsl.js +2 -2
  445. package/src/assets/shaders/webgl2/include/Texture.glsl.js +2 -2
  446. package/src/bookmarks.js +12 -8
  447. package/src/examples.js +3 -0
  448. package/src/lib/jquery.js +20 -0
  449. package/src/lib/libgif/libgif.js +1004 -0
  450. package/src/lib/libtess.js +1 -0
  451. package/src/lib/nurbs/extras/sample.js +5 -7
  452. package/src/standard/Math/Algorithms/Bezier.js +175 -33
  453. package/src/standard/Math/Geometry/Box2.js +15 -55
  454. package/src/standard/Math/Geometry/Box3.js +19 -66
  455. package/src/standard/Math/Geometry/Triangle3.js +14 -79
  456. package/src/standard/Math/Numbers/Color3.js +4 -0
  457. package/src/standard/Math/Numbers/Color4.js +4 -0
  458. package/src/standard/Math/Numbers/Matrix3.js +11 -3
  459. package/src/standard/Math/Numbers/Matrix4.js +9 -6
  460. package/src/standard/Math/Numbers/Rotation4.js +72 -65
  461. package/src/tests.js +3 -0
  462. package/src/x_ite/Base/X3DArrayField.js +0 -2
  463. package/src/x_ite/Base/X3DInfoArray.js +2 -2
  464. package/src/x_ite/Base/X3DObjectArrayField.js +19 -0
  465. package/src/x_ite/Base/X3DTypedArrayField.js +149 -0
  466. package/src/x_ite/Browser/Core/BrowserOptions.js +108 -64
  467. package/src/x_ite/Browser/Core/Context.js +1 -1
  468. package/src/x_ite/Browser/Core/ContextMenu.js +2 -2
  469. package/src/x_ite/Browser/Core/Notification.js +1 -1
  470. package/src/x_ite/Browser/Core/RenderingProperties.js +4 -0
  471. package/src/x_ite/Browser/Core/X3DCoreContext.js +99 -54
  472. package/src/x_ite/Browser/Navigation/ExamineViewer.js +4 -14
  473. package/src/x_ite/Browser/Navigation/LookAtViewer.js +3 -13
  474. package/src/x_ite/Browser/Navigation/PlaneViewer.js +3 -12
  475. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +25 -22
  476. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -3
  477. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +2 -2
  478. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +19 -15
  479. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +30 -10
  480. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +1 -1
  481. package/src/x_ite/Browser/Shape/X3DShapeContext.js +30 -3
  482. package/src/x_ite/Browser/Text/PolygonText.js +137 -134
  483. package/src/x_ite/Browser/Texturing/GifMedia.js +113 -0
  484. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1 -6
  485. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +81 -310
  486. package/src/x_ite/Browser/VERSION.js +1 -1
  487. package/src/x_ite/Browser/X3DBrowser.js +162 -122
  488. package/src/x_ite/Browser/X3DBrowserContext.js +7 -5
  489. package/src/x_ite/Components/Core/WorldInfo.js +3 -3
  490. package/src/x_ite/Components/Core/X3DNode.js +7 -7
  491. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +1 -1
  492. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +2 -3
  493. package/src/x_ite/Components/Geometry3D/Extrusion.js +27 -23
  494. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +10 -19
  495. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +1 -3
  496. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +39 -15
  497. package/src/x_ite/Components/HAnim/HAnimJoint.js +6 -9
  498. package/src/x_ite/Components/Layering/X3DLayerNode.js +21 -2
  499. package/src/x_ite/Components/Layout/Layout.js +4 -2
  500. package/src/x_ite/Components/Layout/ScreenFontStyle.js +6 -0
  501. package/src/x_ite/Components/Lighting/DirectionalLight.js +4 -11
  502. package/src/x_ite/Components/Lighting/EnvironmentLight.js +1 -1
  503. package/src/x_ite/Components/Lighting/PointLight.js +4 -11
  504. package/src/x_ite/Components/Lighting/SpotLight.js +4 -11
  505. package/src/x_ite/Components/Lighting/X3DLightNode.js +7 -9
  506. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +2 -2
  507. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +14 -6
  508. package/src/x_ite/Components/Networking/Inline.js +48 -59
  509. package/src/x_ite/Components/Networking/X3DUrlObject.js +1 -1
  510. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +2 -2
  511. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +7 -13
  512. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +4 -2
  513. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +4 -2
  514. package/src/x_ite/Components/Scripting/Script.js +2 -2
  515. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -1
  516. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +1 -3
  517. package/src/x_ite/Components/Shape/Appearance.js +27 -1
  518. package/src/x_ite/Components/Shape/FillProperties.js +1 -0
  519. package/src/x_ite/Components/Shape/LineProperties.js +15 -9
  520. package/src/x_ite/Components/Shape/Material.js +33 -22
  521. package/src/x_ite/Components/Shape/PhysicalMaterial.js +22 -15
  522. package/src/x_ite/Components/Shape/PointProperties.js +23 -7
  523. package/src/x_ite/Components/Shape/UnlitMaterial.js +3 -2
  524. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +25 -19
  525. package/src/x_ite/Components/Sound/AudioClip.js +5 -5
  526. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +26 -34
  527. package/src/x_ite/Components/Text/X3DFontStyleNode.js +1 -1
  528. package/src/x_ite/Components/TextureProjector/TextureProjector.js +4 -12
  529. package/src/x_ite/Components/TextureProjector/TextureProjectorParallel.js +6 -14
  530. package/src/x_ite/Components/TextureProjector/X3DTextureProjectorNode.js +7 -7
  531. package/src/x_ite/Components/Texturing/ImageTexture.js +15 -10
  532. package/src/x_ite/Components/Texturing/MovieTexture.js +51 -11
  533. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +2 -2
  534. package/src/x_ite/Components/Texturing3D/ImageTextureAtlas.js +230 -0
  535. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +12 -10
  536. package/src/x_ite/Execution/BindableList.js +35 -37
  537. package/src/x_ite/Execution/BindableStack.js +25 -7
  538. package/src/x_ite/Execution/X3DScene.js +2 -2
  539. package/src/x_ite/Execution/X3DWorld.js +1 -1
  540. package/src/x_ite/Fields/SFRotation.js +2 -1
  541. package/src/x_ite/Fields/SFString.js +1 -1
  542. package/src/x_ite/InputOutput/FileLoader.js +105 -236
  543. package/src/x_ite/InputOutput/Generator.js +12 -8
  544. package/src/x_ite/Parser/Expressions.js +85 -0
  545. package/src/x_ite/Parser/GLB2Parser.js +147 -0
  546. package/src/x_ite/Parser/GLTF2Parser.js +2221 -0
  547. package/src/x_ite/Parser/GoldenGate.js +64 -13
  548. package/src/x_ite/Parser/JSONParser.js +7 -36
  549. package/src/x_ite/Parser/OBJParser.js +1076 -0
  550. package/src/x_ite/Parser/STLAParser.js +376 -0
  551. package/src/x_ite/Parser/STLBParser.js +156 -0
  552. package/src/x_ite/Parser/SVGParser.js +2476 -0
  553. package/src/x_ite/Parser/VRMLParser.js +127 -183
  554. package/src/x_ite/Parser/X3DOptimizer.js +191 -0
  555. package/src/x_ite/Parser/X3DParser.js +34 -0
  556. package/src/x_ite/Parser/XMLParser.js +11 -109
  557. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +2 -2
  558. package/src/x_ite/Prototype/X3DProtoDeclaration.js +3 -3
  559. package/src/x_ite/Rendering/DependentRenderer.js +1 -1
  560. package/src/x_ite/Rendering/MultiSampleFrameBuffer.js +150 -0
  561. package/src/x_ite/Rendering/TextureBuffer.js +3 -5
  562. package/src/x_ite/Rendering/X3DRenderObject.js +2 -7
  563. package/src/x_ite/X3D.js +1 -0
  564. package/src/x_ite/X3DCanvas.js +10 -0
  565. package/src/x_ite.html +39 -17
  566. package/webpack.config.js +1 -0
  567. package/x_ite.min.html +38 -17
  568. package/src/standard/Networking/BinaryTransport.js +0 -116
@@ -121,8 +121,7 @@ ImageCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentT
121
121
 
122
122
  this .image .on ("load", this .setImage .bind (this));
123
123
  this .image .on ("abort error", this .setError .bind (this));
124
-
125
- this .image [0] .crossOrigin = "Anonymous";
124
+ this .image .prop ("crossOrigin", "Anonymous");
126
125
 
127
126
  this .requestImmediateLoad ();
128
127
  },
@@ -150,7 +149,7 @@ ImageCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentT
150
149
 
151
150
  if (this .URL .protocol !== "data:")
152
151
  {
153
- if (!this .getBrowser () .getBrowserOptions () .getCache () || !this .getCache ())
152
+ if (!this .getCache ())
154
153
  this .URL .searchParams .set ("_", Date .now ());
155
154
  }
156
155
 
@@ -590,6 +590,8 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
590
590
  {
591
591
  const
592
592
  j = 0, // spine
593
+ convex = this ._convex .getValue (),
594
+ texCoord = { },
593
595
  polygon = [ ],
594
596
  triangles = [ ];
595
597
 
@@ -599,12 +601,12 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
599
601
  index = INDEX (j, numCapPoints - 1 - k),
600
602
  point = points [index] .copy ();
601
603
 
602
- point .index = index;
603
- point .texCoord = Vector2 .subtract (crossSection [numCapPoints - 1 - k] .getValue (), min) .divide (capMax);
604
- polygon .push (point);
604
+ point .index = index;
605
+ texCoord [index] = Vector2 .subtract (crossSection [numCapPoints - 1 - k] .getValue (), min) .divide (capMax);
606
+ polygon .push (convex ? index : point);
605
607
  }
606
608
 
607
- if (this ._convex .getValue ())
609
+ if (convex)
608
610
  Triangle3 .triangulateConvexPolygon (polygon, triangles);
609
611
 
610
612
  else
@@ -612,15 +614,15 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
612
614
 
613
615
  if (triangles .length >= 3)
614
616
  {
615
- const normal = Triangle3 .normal (points [triangles [0] .index],
616
- points [triangles [1] .index],
617
- points [triangles [2] .index],
617
+ const normal = Triangle3 .normal (points [triangles [0]],
618
+ points [triangles [1]],
619
+ points [triangles [2]],
618
620
  new Vector3 (0, 0, 0));
619
621
 
620
622
  if (cw)
621
623
  normal .negate ();
622
624
 
623
- this .addCap (texCoordArray, normal, points, triangles);
625
+ this .addCap (texCoordArray, texCoord, normal, points, triangles);
624
626
  }
625
627
  }
626
628
 
@@ -628,6 +630,8 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
628
630
  {
629
631
  const
630
632
  j = numSpines - 1, // spine
633
+ convex = this ._convex .getValue (),
634
+ texCoord = { },
631
635
  polygon = [ ],
632
636
  triangles = [ ];
633
637
 
@@ -637,12 +641,12 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
637
641
  index = INDEX (j, k),
638
642
  point = points [index] .copy ();
639
643
 
640
- point .index = index;
641
- point .texCoord = Vector2 .subtract (crossSection [k] .getValue (), min) .divide (capMax);
642
- polygon .push (point);
644
+ point .index = index;
645
+ texCoord [index] = Vector2 .subtract (crossSection [k] .getValue (), min) .divide (capMax);
646
+ polygon .push (convex ? index : point);
643
647
  }
644
648
 
645
- if (this ._convex .getValue ())
649
+ if (convex)
646
650
  Triangle3 .triangulateConvexPolygon (polygon, triangles);
647
651
 
648
652
  else
@@ -650,15 +654,15 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
650
654
 
651
655
  if (triangles .length >= 3)
652
656
  {
653
- const normal = Triangle3 .normal (points [triangles [0] .index],
654
- points [triangles [1] .index],
655
- points [triangles [2] .index],
657
+ const normal = Triangle3 .normal (points [triangles [0]],
658
+ points [triangles [1]],
659
+ points [triangles [2]],
656
660
  new Vector3 (0, 0, 0));
657
661
 
658
662
  if (cw)
659
663
  normal .negate ();
660
664
 
661
- this .addCap (texCoordArray, normal, points, triangles);
665
+ this .addCap (texCoordArray, texCoord, normal, points, triangles);
662
666
  }
663
667
  }
664
668
  }
@@ -667,7 +671,7 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
667
671
  this .setCCW (this ._ccw .getValue ());
668
672
  };
669
673
  })(),
670
- addCap: function (texCoordArray, normal, vertices, triangles)
674
+ addCap: function (texCoordArray, texCoord, normal, vertices, triangles)
671
675
  {
672
676
  const
673
677
  normalArray = this .getNormals (),
@@ -676,12 +680,12 @@ Extrusion .prototype = Object .assign (Object .create (X3DGeometryNode .prototyp
676
680
  for (let i = 0, length = triangles .length; i < length; i += 3)
677
681
  {
678
682
  const
679
- p0 = vertices [triangles [i] .index],
680
- p1 = vertices [triangles [i + 1] .index],
681
- p2 = vertices [triangles [i + 2] .index],
682
- t0 = triangles [i] .texCoord,
683
- t1 = triangles [i + 1] .texCoord,
684
- t2 = triangles [i + 2] .texCoord;
683
+ p0 = vertices [triangles [i]],
684
+ p1 = vertices [triangles [i + 1]],
685
+ p2 = vertices [triangles [i + 2]],
686
+ t0 = texCoord [triangles [i]],
687
+ t1 = texCoord [triangles [i + 1]],
688
+ t2 = texCoord [triangles [i + 2]];
685
689
 
686
690
  texCoordArray .push (t0 .x, t0 .y, 0, 1);
687
691
  texCoordArray .push (t1 .x, t1 .y, 0, 1);
@@ -294,7 +294,7 @@ IndexedFaceSet .prototype = Object .assign (Object .create (X3DComposedGeometryN
294
294
  polygon = { vertices: vertices, triangles: triangles, face: face };
295
295
 
296
296
  if (convex)
297
- this .triangulateConvexPolygon (vertices, triangles);
297
+ Triangle3 .triangulateConvexPolygon (vertices, triangles);
298
298
  else
299
299
  this .triangulatePolygon (vertices, triangles);
300
300
 
@@ -331,34 +331,25 @@ IndexedFaceSet .prototype = Object .assign (Object .create (X3DComposedGeometryN
331
331
  coord = this .getCoord (),
332
332
  length = vertices .length;
333
333
 
334
- for (let v = 0; v < length; ++ v)
335
- {
336
- const i = vertices [v];
337
-
338
- let vertex = polygon [v];
334
+ for (let i = polygon .length; i < length; ++ i)
335
+ polygon .push (new Vector3 (0, 0, 0));
339
336
 
340
- if (!vertex)
341
- vertex = polygon [v] = new Vector3 (0, 0, 0);
337
+ for (let i = 0; i < length; ++ i)
338
+ {
339
+ const
340
+ index = vertices [i],
341
+ point = polygon [i];
342
342
 
343
- vertex .index = i;
343
+ point .index = index;
344
344
 
345
- coord .get1Point (coordIndex [i], vertex);
345
+ coord .get1Point (coordIndex [index], point);
346
346
  }
347
347
 
348
348
  polygon .length = length;
349
349
 
350
350
  Triangle3 .triangulatePolygon (polygon, triangles);
351
-
352
- for (let i = 0, length = triangles .length; i < length; ++ i)
353
- triangles [i] = triangles [i] .index;
354
351
  };
355
352
  })(),
356
- triangulateConvexPolygon: function (vertices, triangles)
357
- {
358
- // Fallback: Very simple triangulation for convex polygons.
359
- for (let i = 1, length = vertices .length - 1; i < length; ++ i)
360
- triangles .push (vertices [0], vertices [i], vertices [i + 1]);
361
- },
362
353
  buildNormals: function (polygons)
363
354
  {
364
355
  const
@@ -87,10 +87,8 @@ X3DBoundedObject .prototype =
87
87
 
88
88
  bbox .set ();
89
89
 
90
- for (var i = 0, length = nodes .length; i < length; ++ i)
90
+ for (const node of nodes)
91
91
  {
92
- const node = nodes [i];
93
-
94
92
  if (node .getBBox)
95
93
  bbox .add (node .getBBox (childBBox, shadows));
96
94
  }
@@ -70,8 +70,8 @@ function HAnimHumanoid (executionContext)
70
70
  this ._bboxSize .setUnit ("length");
71
71
  this ._bboxCenter .setUnit ("length");
72
72
 
73
- this .viewpointsNode = new Group (executionContext);
74
73
  this .skeletonNode = new Group (executionContext);
74
+ this .viewpointsNode = new Group (executionContext);
75
75
  this .skinNode = new Group (executionContext);
76
76
  this .transformNode = new Transform (executionContext);
77
77
  this .jointNodes = [ ];
@@ -79,6 +79,7 @@ function HAnimHumanoid (executionContext)
79
79
  this .skinCoordNode = null;
80
80
  this .restNormalNode = null;
81
81
  this .restCoordNode = null;
82
+ this .changed = false;
82
83
  }
83
84
 
84
85
  HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototype),
@@ -106,12 +107,12 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
106
107
  new X3DFieldDefinition (X3DConstants .inputOutput, "bboxDisplay", new Fields .SFBool ()),
107
108
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxSize", new Fields .SFVec3f (-1, -1, -1)),
108
109
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxCenter", new Fields .SFVec3f ()),
110
+ new X3DFieldDefinition (X3DConstants .inputOutput, "skeleton", new Fields .MFNode ()),
109
111
  new X3DFieldDefinition (X3DConstants .inputOutput, "viewpoints", new Fields .MFNode ()),
110
112
  new X3DFieldDefinition (X3DConstants .inputOutput, "sites", new Fields .MFNode ()),
111
- new X3DFieldDefinition (X3DConstants .inputOutput, "joints", new Fields .MFNode ()),
112
113
  new X3DFieldDefinition (X3DConstants .inputOutput, "segments", new Fields .MFNode ()),
114
+ new X3DFieldDefinition (X3DConstants .inputOutput, "joints", new Fields .MFNode ()),
113
115
  new X3DFieldDefinition (X3DConstants .inputOutput, "motions", new Fields .MFNode ()),
114
- new X3DFieldDefinition (X3DConstants .inputOutput, "skeleton", new Fields .MFNode ()),
115
116
  new X3DFieldDefinition (X3DConstants .inputOutput, "skinBindingNormal", new Fields .SFNode ()),
116
117
  new X3DFieldDefinition (X3DConstants .inputOutput, "skinBindingCoord", new Fields .SFNode ()),
117
118
  new X3DFieldDefinition (X3DConstants .inputOutput, "skinNormal", new Fields .SFNode ()),
@@ -137,19 +138,19 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
137
138
 
138
139
  // Groups
139
140
 
140
- this .viewpointsNode .setAllowedTypes (X3DConstants .HAnimSite);
141
141
  this .skeletonNode .setAllowedTypes (X3DConstants .HAnimJoint, X3DConstants .HAnimSite);
142
+ this .viewpointsNode .setAllowedTypes (X3DConstants .HAnimSite);
142
143
 
143
- this ._viewpoints .addFieldInterest (this .viewpointsNode ._children);
144
144
  this ._skeleton .addFieldInterest (this .skeletonNode ._children);
145
+ this ._viewpoints .addFieldInterest (this .viewpointsNode ._children);
145
146
  this ._skin .addFieldInterest (this .skinNode ._children);
146
147
 
147
- this .viewpointsNode ._children = this ._viewpoints;
148
148
  this .skeletonNode ._children = this ._skeleton;
149
+ this .viewpointsNode ._children = this ._viewpoints;
149
150
  this .skinNode ._children = this ._skin;
150
151
 
151
- this .viewpointsNode .setPrivate (true);
152
152
  this .skeletonNode .setPrivate (true);
153
+ this .viewpointsNode .setPrivate (true);
153
154
  this .skinNode .setPrivate (true);
154
155
 
155
156
  // Transform
@@ -173,15 +174,15 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
173
174
  this .transformNode ._bboxDisplay = this ._bboxDisplay;
174
175
  this .transformNode ._bboxSize = this ._bboxSize;
175
176
  this .transformNode ._bboxCenter = this ._bboxCenter;
176
- this .transformNode ._children = [ this .viewpointsNode, this .skeletonNode, this .skinNode ];
177
+ this .transformNode ._children = [ this .skeletonNode, this .viewpointsNode, this .skinNode ];
177
178
 
178
179
  this .transformNode ._isCameraObject .addFieldInterest (this ._isCameraObject);
179
180
  this .transformNode ._isPickableObject .addFieldInterest (this ._isPickableObject);
180
181
 
181
182
  // Setup
182
183
 
183
- this .viewpointsNode .setup ();
184
184
  this .skeletonNode .setup ();
185
+ this .viewpointsNode .setup ();
185
186
  this .skinNode .setup ();
186
187
  this .transformNode .setup ();
187
188
 
@@ -206,6 +207,9 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
206
207
  {
207
208
  const jointNodes = this .jointNodes;
208
209
 
210
+ for (const jointNode of jointNodes)
211
+ jointNode .removeInterest ("set_joint__", this);
212
+
209
213
  jointNodes .length = 0;
210
214
 
211
215
  for (const node of this ._joints)
@@ -215,6 +219,15 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
215
219
  if (jointNode)
216
220
  jointNodes .push (jointNode);
217
221
  }
222
+
223
+ for (const jointNode of jointNodes)
224
+ jointNode .addInterest ("set_joint__", this);
225
+
226
+ this .set_joint__ ();
227
+ },
228
+ set_joint__: function ()
229
+ {
230
+ this .changed = true;
218
231
  },
219
232
  set_skinNormal__: function ()
220
233
  {
@@ -224,6 +237,8 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
224
237
 
225
238
  if (this .skinNormalNode)
226
239
  this .restNormalNode = this .skinNormalNode .copy ();
240
+
241
+ this .changed = true;
227
242
  },
228
243
  set_skinCoord__: function ()
229
244
  {
@@ -232,16 +247,23 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
232
247
  this .skinCoordNode = X3DCast (X3DConstants .X3DCoordinateNode, this ._skinCoord);
233
248
 
234
249
  if (this .skinCoordNode)
250
+ {
235
251
  this .restCoordNode = this .skinCoordNode .copy ();
252
+
253
+ delete this .skinning;
254
+ }
255
+ else
256
+ {
257
+ this .skinning = Function .prototype
258
+ }
259
+
260
+ this .changed = true;
236
261
  },
237
262
  traverse: function (type, renderObject)
238
263
  {
239
- renderObject .getJoints () .length = 0;
240
-
241
264
  this .transformNode .traverse (type, renderObject);
242
265
 
243
- if (this .isLive () .getValue ())
244
- this .skinning (type, renderObject);
266
+ this .skinning (type, renderObject);
245
267
  },
246
268
  skinning: (function ()
247
269
  {
@@ -257,11 +279,13 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
257
279
  if (type !== TraverseType .CAMERA)
258
280
  return;
259
281
 
260
- if (! this .skinCoordNode)
282
+ if (!this .changed)
261
283
  return;
262
284
 
285
+ this .changed = false;
286
+
263
287
  const
264
- jointNodes = this .jointNodes .length ? this .jointNodes : renderObject .getJoints (),
288
+ jointNodes = this .jointNodes,
265
289
  skinNormalNode = this .skinNormalNode,
266
290
  skinCoordNode = this .skinCoordNode,
267
291
  restNormalNode = this .restNormalNode,
@@ -111,7 +111,8 @@ HAnimJoint .prototype = Object .assign (Object .create (X3DTransformNode .protot
111
111
  {
112
112
  X3DTransformNode .prototype .initialize .call (this);
113
113
 
114
- this ._displacers .addInterest ("set_displacers__", this);
114
+ this ._skinCoordIndex .addInterest ("set_skinCoordIndex__", this);
115
+ this ._displacers .addInterest ("set_displacers__", this);
115
116
 
116
117
  this .set_displacers__ ();
117
118
  },
@@ -127,6 +128,10 @@ HAnimJoint .prototype = Object .assign (Object .create (X3DTransformNode .protot
127
128
  {
128
129
  return this .displacerNodes;
129
130
  },
131
+ set_skinCoordIndex__: function ()
132
+ {
133
+ this .set_cameraObjects__ ();
134
+ },
130
135
  set_displacers__: function ()
131
136
  {
132
137
  const displacerNodes = this .displacerNodes;
@@ -146,11 +151,7 @@ HAnimJoint .prototype = Object .assign (Object .create (X3DTransformNode .protot
146
151
  if (type === TraverseType .CAMERA)
147
152
  {
148
153
  if (this ._skinCoordIndex .length)
149
- {
150
- renderObject .getJoints () .push (this);
151
-
152
154
  this .modelMatrix .assign (this .getMatrix ()) .multRight (renderObject .getModelViewMatrix () .get ());
153
- }
154
155
  }
155
156
 
156
157
  X3DTransformNode .prototype .traverse .call (this, type, renderObject);
@@ -160,11 +161,7 @@ HAnimJoint .prototype = Object .assign (Object .create (X3DTransformNode .protot
160
161
  if (type === TraverseType .CAMERA)
161
162
  {
162
163
  if (this ._skinCoordIndex .length)
163
- {
164
- renderObject .getJoints () .push (this);
165
-
166
164
  this .modelMatrix .assign (renderObject .getModelViewMatrix () .get ());
167
- }
168
165
  }
169
166
 
170
167
  X3DTransformNode .prototype .groupTraverse .call (this, type, renderObject);
@@ -69,8 +69,9 @@ function X3DLayerNode (executionContext, defaultViewpoint, groupNode)
69
69
  if (executionContext .getSpecificationVersion () < 4.0)
70
70
  this .addAlias ("isPickable", this ._pickable);
71
71
 
72
- this .groupNode = groupNode;
73
- this .currentViewport = null;
72
+ this .pickableGroupNode = executionContext .createNode ("PickableGroup", false);
73
+ this .groupNode = groupNode;
74
+ this .currentViewport = null;
74
75
 
75
76
  this .defaultNavigationInfo = new NavigationInfo (executionContext);
76
77
  this .defaultViewpoint = defaultViewpoint;
@@ -103,6 +104,21 @@ X3DLayerNode .prototype = Object .assign (Object .create (X3DNode .prototype),
103
104
  X3DNode .prototype .initialize .call (this);
104
105
  X3DRenderObject .prototype .initialize .call (this);
105
106
 
107
+ // if (this .pickableGroupNode)
108
+ // {
109
+ // this ._pickable .addFieldInterest (this .pickableGroupNode ._pickable);
110
+ // this ._objectType .addFieldInterest (this .pickableGroupNode ._objectType);
111
+
112
+ // this .pickableGroupNode ._pickable = this ._pickable;
113
+ // this .pickableGroupNode ._objectType = this ._objectType;
114
+
115
+ // this .pickableGroupNode .setup ();
116
+ // }
117
+ // else
118
+ // {
119
+ // this .pickableGroupNode = this .groupNode;
120
+ // }
121
+
106
122
  this .defaultNavigationInfo .setup ();
107
123
  this .defaultViewpoint .setup ();
108
124
  this .defaultBackground .setup ();
@@ -238,6 +254,9 @@ X3DLayerNode .prototype = Object .assign (Object .create (X3DNode .prototype),
238
254
  this .fogStack .pushOnTop (fogNode);
239
255
 
240
256
  viewpointNode .resetUserOffsets ();
257
+
258
+ if (viewpointNode ._viewAll .getValue ())
259
+ viewpointNode .viewAll (this .getBBox (new Box3 ()));
241
260
  },
242
261
  traverse: function (type, renderObject)
243
262
  {
@@ -446,6 +446,8 @@ Layout .prototype = Object .assign (Object .create (X3DLayoutNode .prototype),
446
446
  // Calculate rectangleSize
447
447
 
448
448
  var
449
+ browser = this .getBrowser (),
450
+ contentScale = browser .getRenderingProperty ("ContentScale"),
449
451
  matrix = this .matrix,
450
452
  viewpoint = renderObject .getViewpoint (),
451
453
  nearValue = renderObject .getNavigationInfo () .getNearValue (), // in meters
@@ -457,8 +459,8 @@ Layout .prototype = Object .assign (Object .create (X3DLayoutNode .prototype),
457
459
  rectangleSize = this .rectangleSize,
458
460
  rectangleCenter = this .rectangleCenter;
459
461
 
460
- viewportPixel .set (viewport [2], viewport [3]); // in pixel
461
- pixelSize .assign (viewportMeter) .divVec (viewportPixel); // size of one pixel in meter
462
+ viewportPixel .set (viewport [2], viewport [3]) .divide (contentScale); // in pixel
463
+ pixelSize .assign (viewportMeter) .divVec (viewportPixel); // size of one pixel in meter
462
464
 
463
465
  switch (this .getSizeUnitX ())
464
466
  {
@@ -86,6 +86,12 @@ ScreenFontStyle .prototype = Object .assign (Object .create (X3DFontStyleNode .p
86
86
  {
87
87
  return "fontStyle";
88
88
  },
89
+ initialize: function ()
90
+ {
91
+ X3DFontStyleNode .prototype .initialize .call (this);
92
+
93
+ this .getBrowser () .getRenderingProperties () ._ContentScale .addInterest ("addNodeEvent", this);
94
+ },
89
95
  getTextGeometry: function (text)
90
96
  {
91
97
  return new ScreenText (text, this);
@@ -92,6 +92,7 @@ DirectionalLightContainer .prototype =
92
92
  this .browser = lightNode .getBrowser ();
93
93
  this .lightNode = lightNode;
94
94
  this .groupNode = groupNode;
95
+ this .global = lightNode .getGlobal ();
95
96
 
96
97
  this .modelViewMatrix .pushMatrix (modelViewMatrix);
97
98
 
@@ -105,14 +106,6 @@ DirectionalLightContainer .prototype =
105
106
  console .warn ("Couldn't create shadow buffer.");
106
107
  }
107
108
  },
108
- setGroup: function (groupNode)
109
- {
110
- this .groupNode = groupNode;
111
- },
112
- getModelViewMatrix: function ()
113
- {
114
- return this .modelViewMatrix;
115
- },
116
109
  renderShadowMap: function (renderObject)
117
110
  {
118
111
  if (! this .shadowBuffer)
@@ -122,7 +115,7 @@ DirectionalLightContainer .prototype =
122
115
  lightNode = this .lightNode,
123
116
  cameraSpaceMatrix = renderObject .getCameraSpaceMatrix () .get (),
124
117
  modelMatrix = this .modelMatrix .assign (this .modelViewMatrix .get ()) .multRight (cameraSpaceMatrix),
125
- invLightSpaceMatrix = this .invLightSpaceMatrix .assign (lightNode .getGlobal () ? modelMatrix : Matrix4 .Identity);
118
+ invLightSpaceMatrix = this .invLightSpaceMatrix .assign (this .global ? modelMatrix : Matrix4 .Identity);
126
119
 
127
120
  invLightSpaceMatrix .rotate (this .rotation .setFromToVec (Vector3 .zAxis, this .direction .assign (lightNode .getDirection ()) .negate ()));
128
121
  invLightSpaceMatrix .inverse ();
@@ -148,7 +141,7 @@ DirectionalLightContainer .prototype =
148
141
 
149
142
  this .shadowBuffer .unbind ();
150
143
 
151
- if (! lightNode .getGlobal ())
144
+ if (!this .global)
152
145
  invLightSpaceMatrix .multLeft (modelMatrix .inverse ());
153
146
 
154
147
  this .invLightSpaceProjectionMatrix .assign (invLightSpaceMatrix) .multRight (projectionMatrix) .multRight (lightNode .getBiasMatrix ());
@@ -169,7 +162,7 @@ DirectionalLightContainer .prototype =
169
162
 
170
163
  if (this .shadowBuffer)
171
164
  {
172
- const textureUnit = this .lightNode .getGlobal ()
165
+ const textureUnit = this .global
173
166
  ? (this .textureUnit = this .textureUnit !== undefined
174
167
  ? this .textureUnit
175
168
  : this .browser .popTexture2DUnit ())
@@ -106,11 +106,11 @@ EnvironmentLight .prototype = Object .assign (Object .create (X3DLightNode .prot
106
106
  new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
107
107
  new X3DFieldDefinition (X3DConstants .inputOutput, "global", new Fields .SFBool (false)),
108
108
  new X3DFieldDefinition (X3DConstants .inputOutput, "on", new Fields .SFBool (true)),
109
+ new X3DFieldDefinition (X3DConstants .inputOutput, "rotation", new Fields .SFRotation ()),
109
110
  new X3DFieldDefinition (X3DConstants .inputOutput, "color", new Fields .SFColor (1, 1, 1)),
110
111
  new X3DFieldDefinition (X3DConstants .inputOutput, "intensity", new Fields .SFFloat (1)),
111
112
  new X3DFieldDefinition (X3DConstants .inputOutput, "ambientIntensity", new Fields .SFFloat ()),
112
113
 
113
- new X3DFieldDefinition (X3DConstants .inputOutput, "rotation", new Fields .SFRotation ()),
114
114
  new X3DFieldDefinition (X3DConstants .inputOutput, "diffuseCoefficients", new Fields .MFFloat ()),
115
115
  new X3DFieldDefinition (X3DConstants .inputOutput, "diffuse", new Fields .SFNode ()),
116
116
  new X3DFieldDefinition (X3DConstants .inputOutput, "diffuseTexture", new Fields .SFNode ()),
@@ -118,6 +118,7 @@ PointLightContainer .prototype =
118
118
  this .browser = lightNode .getBrowser ();
119
119
  this .lightNode = lightNode;
120
120
  this .groupNode = groupNode;
121
+ this .global = lightNode .getGlobal ();
121
122
 
122
123
  this .matrixArray .set (modelViewMatrix .submatrix .inverse ());
123
124
 
@@ -133,14 +134,6 @@ PointLightContainer .prototype =
133
134
  console .warn ("Couldn't create shadow buffer.");
134
135
  }
135
136
  },
136
- setGroup: function (groupNode)
137
- {
138
- this .groupNode = groupNode;
139
- },
140
- getModelViewMatrix: function ()
141
- {
142
- return this .modelViewMatrix;
143
- },
144
137
  renderShadowMap: function (renderObject)
145
138
  {
146
139
  if (! this .shadowBuffer)
@@ -150,7 +143,7 @@ PointLightContainer .prototype =
150
143
  lightNode = this .lightNode,
151
144
  cameraSpaceMatrix = renderObject .getCameraSpaceMatrix () .get (),
152
145
  modelMatrix = this .modelMatrix .assign (this .modelViewMatrix .get ()) .multRight (cameraSpaceMatrix),
153
- invLightSpaceMatrix = this .invLightSpaceMatrix .assign (lightNode .getGlobal () ? modelMatrix : Matrix4 .Identity);
146
+ invLightSpaceMatrix = this .invLightSpaceMatrix .assign (this .global ? modelMatrix : Matrix4 .Identity);
154
147
 
155
148
  invLightSpaceMatrix .translate (lightNode .getLocation ());
156
149
  invLightSpaceMatrix .inverse ();
@@ -180,7 +173,7 @@ PointLightContainer .prototype =
180
173
 
181
174
  this .shadowBuffer .unbind ();
182
175
 
183
- if (! lightNode .getGlobal ())
176
+ if (!this .global)
184
177
  invLightSpaceMatrix .multLeft (modelMatrix .inverse ());
185
178
 
186
179
  this .invLightSpaceProjectionMatrix .assign (invLightSpaceMatrix);
@@ -201,7 +194,7 @@ PointLightContainer .prototype =
201
194
 
202
195
  if (this .shadowBuffer)
203
196
  {
204
- const textureUnit = this .lightNode .getGlobal ()
197
+ const textureUnit = this .global
205
198
  ? (this .textureUnit = this .textureUnit !== undefined
206
199
  ? this .textureUnit
207
200
  : this .browser .popTexture2DUnit ())
@@ -99,6 +99,7 @@ SpotLightContainer .prototype =
99
99
  this .browser = lightNode .getBrowser ();
100
100
  this .lightNode = lightNode;
101
101
  this .groupNode = groupNode;
102
+ this .global = lightNode .getGlobal ();
102
103
 
103
104
  this .matrixArray .set (modelViewMatrix .submatrix .inverse ());
104
105
 
@@ -114,14 +115,6 @@ SpotLightContainer .prototype =
114
115
  console .warn ("Couldn't create shadow buffer.");
115
116
  }
116
117
  },
117
- setGroup: function (groupNode)
118
- {
119
- this .groupNode = groupNode;
120
- },
121
- getModelViewMatrix: function ()
122
- {
123
- return this .modelViewMatrix;
124
- },
125
118
  renderShadowMap: function (renderObject)
126
119
  {
127
120
  if (! this .shadowBuffer)
@@ -131,7 +124,7 @@ SpotLightContainer .prototype =
131
124
  lightNode = this .lightNode,
132
125
  cameraSpaceMatrix = renderObject .getCameraSpaceMatrix () .get (),
133
126
  modelMatrix = this .modelMatrix .assign (this .modelViewMatrix .get ()) .multRight (cameraSpaceMatrix),
134
- invLightSpaceMatrix = this .invLightSpaceMatrix .assign (lightNode .getGlobal () ? modelMatrix : Matrix4 .Identity);
127
+ invLightSpaceMatrix = this .invLightSpaceMatrix .assign (this .global ? modelMatrix : Matrix4 .Identity);
135
128
 
136
129
  invLightSpaceMatrix .translate (lightNode .getLocation ());
137
130
  invLightSpaceMatrix .rotate (this .rotation .setFromToVec (Vector3 .zAxis, this .direction .assign (lightNode .getDirection ()) .negate ()));
@@ -162,7 +155,7 @@ SpotLightContainer .prototype =
162
155
 
163
156
  this .shadowBuffer .unbind ();
164
157
 
165
- if (! lightNode .getGlobal ())
158
+ if (!this .global)
166
159
  invLightSpaceMatrix .multLeft (modelMatrix .inverse ());
167
160
 
168
161
  this .invLightSpaceProjectionMatrix .assign (invLightSpaceMatrix) .multRight (projectionMatrix) .multRight (lightNode .getBiasMatrix ());
@@ -188,7 +181,7 @@ SpotLightContainer .prototype =
188
181
 
189
182
  if (this .shadowBuffer)
190
183
  {
191
- const textureUnit = this .lightNode .getGlobal ()
184
+ const textureUnit = this .global
192
185
  ? (this .textureUnit = this .textureUnit !== undefined
193
186
  ? this .textureUnit
194
187
  : this .browser .popTexture2DUnit ())