x_ite 4.2.17 → 4.7.7

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 (903) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  2. package/.vscode/launch.json +15 -0
  3. package/.vscode/settings.json +12 -0
  4. package/.vscode/tasks.json +25 -0
  5. package/Makefile +27 -10
  6. package/README.md +13 -145
  7. package/build/bin/dist.pl +65 -8
  8. package/build/bin/version-number.pl +25 -0
  9. package/build/bin/version.pl +54 -14
  10. package/build/components/annotation.build.js +15 -0
  11. package/build/components/cad-geometry.build.js +15 -0
  12. package/build/components/cube-map-texturing.build.js +15 -0
  13. package/build/components/dis.build.js +15 -0
  14. package/build/components/event-utilities.build.js +15 -0
  15. package/build/components/geometry2d.build.js +15 -0
  16. package/build/components/geospatial.build.js +15 -0
  17. package/build/components/h-anim.build.js +15 -0
  18. package/build/components/key-device-sensor.build.js +15 -0
  19. package/build/components/layout.build.js +15 -0
  20. package/build/components/nurbs.build.js +15 -0
  21. package/build/components/particle-systems.build.js +15 -0
  22. package/build/components/picking.build.js +15 -0
  23. package/build/components/projective-texture-mapping.build.js +15 -0
  24. package/build/components/rigid-body-physics.build.js +15 -0
  25. package/build/components/scripting.build.js +15 -0
  26. package/build/components/texturing-3d.build.js +15 -0
  27. package/build/components/volume-rendering.build.js +15 -0
  28. package/build/components/x_ite.build.js +15 -0
  29. package/build/parts/default.end.frag.js +3 -0
  30. package/build/parts/default.start.frag.js +15 -0
  31. package/build/parts/x_ite.end.frag.js +25 -0
  32. package/build/parts/x_ite.start.frag.js +16 -0
  33. package/build/x_ite.build.js +5 -2
  34. package/dist/{components/texturing-3d.js → assets/components/annotation.js} +341 -263
  35. package/dist/assets/components/annotation.min.js +1 -0
  36. package/dist/{components → assets/components}/cad-geometry.js +180 -76
  37. package/dist/assets/components/cad-geometry.min.js +1 -0
  38. package/dist/assets/components/cube-map-texturing.js +1222 -0
  39. package/dist/assets/components/cube-map-texturing.min.js +1 -0
  40. package/dist/assets/components/dis.js +918 -0
  41. package/dist/assets/components/dis.min.js +1 -0
  42. package/dist/assets/components/event-utilities.js +1124 -0
  43. package/dist/assets/components/event-utilities.min.js +1 -0
  44. package/dist/assets/components/geometry2d.js +2200 -0
  45. package/dist/assets/components/geometry2d.min.js +1 -0
  46. package/dist/{components → assets/components}/geospatial.js +364 -269
  47. package/dist/assets/components/geospatial.min.js +2 -0
  48. package/dist/{components → assets/components}/h-anim.js +224 -62
  49. package/dist/assets/components/h-anim.min.js +1 -0
  50. package/dist/assets/components/key-device-sensor.js +860 -0
  51. package/dist/assets/components/key-device-sensor.min.js +1 -0
  52. package/dist/assets/components/layout.js +2018 -0
  53. package/dist/assets/components/layout.min.js +1 -0
  54. package/dist/{components → assets/components}/nurbs.js +632 -348
  55. package/dist/assets/components/nurbs.min.js +2 -0
  56. package/dist/{components → assets/components}/particle-systems.js +514 -476
  57. package/dist/assets/components/particle-systems.min.js +2 -0
  58. package/dist/assets/components/picking.js +2491 -0
  59. package/dist/assets/components/picking.min.js +1 -0
  60. package/dist/assets/components/projective-texture-mapping.js +823 -0
  61. package/dist/assets/components/projective-texture-mapping.min.js +1 -0
  62. package/dist/assets/components/rigid-body-physics.js +4579 -0
  63. package/dist/assets/components/rigid-body-physics.min.js +59 -0
  64. package/dist/assets/components/scripting.js +816 -0
  65. package/dist/assets/components/scripting.min.js +1 -0
  66. package/dist/assets/components/texturing-3d.js +10064 -0
  67. package/dist/assets/components/texturing-3d.min.js +48 -0
  68. package/dist/assets/components/volume-rendering.js +3976 -0
  69. package/dist/assets/components/volume-rendering.min.js +3 -0
  70. package/dist/assets/components/x_ite.js +295 -0
  71. package/dist/assets/components/x_ite.min.js +1 -0
  72. package/{fonts → dist/assets/fonts}/DroidSerif-Bold.ttf +0 -0
  73. package/{fonts → dist/assets/fonts}/DroidSerif-BoldItalic.ttf +0 -0
  74. package/{fonts → dist/assets/fonts}/DroidSerif-Italic.ttf +0 -0
  75. package/{fonts → dist/assets/fonts}/DroidSerif-Regular.ttf +0 -0
  76. package/{fonts → dist/assets/fonts}/Ubuntu-B.ttf +0 -0
  77. package/{fonts → dist/assets/fonts}/Ubuntu-BI.ttf +0 -0
  78. package/{fonts → dist/assets/fonts}/Ubuntu-R.ttf +0 -0
  79. package/{fonts → dist/assets/fonts}/Ubuntu-RI.ttf +0 -0
  80. package/{fonts → dist/assets/fonts}/UbuntuMono-B.ttf +0 -0
  81. package/{fonts → dist/assets/fonts}/UbuntuMono-BI.ttf +0 -0
  82. package/{fonts → dist/assets/fonts}/UbuntuMono-R.ttf +0 -0
  83. package/{fonts → dist/assets/fonts}/UbuntuMono-RI.ttf +0 -0
  84. package/dist/assets/hatching/0.png +0 -0
  85. package/dist/assets/hatching/1.png +0 -0
  86. package/dist/assets/hatching/10.png +0 -0
  87. package/dist/assets/hatching/11.png +0 -0
  88. package/dist/assets/hatching/12.png +0 -0
  89. package/dist/assets/hatching/13.png +0 -0
  90. package/dist/assets/hatching/14.png +0 -0
  91. package/dist/assets/hatching/15.png +0 -0
  92. package/dist/assets/hatching/16.png +0 -0
  93. package/dist/assets/hatching/17.png +0 -0
  94. package/dist/assets/hatching/18.png +0 -0
  95. package/dist/assets/hatching/19.png +0 -0
  96. package/dist/assets/hatching/2.png +0 -0
  97. package/dist/assets/hatching/3.png +0 -0
  98. package/dist/assets/hatching/4.png +0 -0
  99. package/dist/assets/hatching/5.png +0 -0
  100. package/dist/assets/hatching/6.png +0 -0
  101. package/dist/assets/hatching/7.png +0 -0
  102. package/dist/assets/hatching/8.png +0 -0
  103. package/dist/assets/hatching/9.png +0 -0
  104. package/dist/{images → assets/images}/ExamineViewer.png +0 -0
  105. package/dist/{images → assets/images}/FlyViewer.png +0 -0
  106. package/dist/{images → assets/images}/NoneViewer.png +0 -0
  107. package/dist/{images → assets/images}/PlaneViewer.png +0 -0
  108. package/dist/{images → assets/images}/PrimitiveQuality.png +0 -0
  109. package/dist/{images → assets/images}/TextureQuality.png +0 -0
  110. package/dist/{images → assets/images}/Time.png +0 -0
  111. package/dist/{images → assets/images}/Viewpoint.png +0 -0
  112. package/dist/{images → assets/images}/WalkViewer.png +0 -0
  113. package/dist/assets/images/go-next.png +0 -0
  114. package/dist/{images → assets/images}/gtk-fullscreen.png +0 -0
  115. package/dist/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  116. package/dist/{images → assets/images}/gtk-zoom-fit.png +0 -0
  117. package/dist/{images → assets/images}/gtk-zoom-in.png +0 -0
  118. package/dist/{images → assets/images}/help-about.png +0 -0
  119. package/dist/{images → assets/images}/icon.bw.png +0 -0
  120. package/dist/{images → assets/images}/icon.png +0 -0
  121. package/dist/assets/images/logo.128.png +0 -0
  122. package/dist/{images → assets/images}/logo.bw.png +0 -0
  123. package/dist/{images → assets/images}/logo.png +0 -0
  124. package/dist/assets/linetype/0.png +0 -0
  125. package/dist/assets/linetype/1.png +0 -0
  126. package/dist/assets/linetype/10.png +0 -0
  127. package/dist/assets/linetype/11.png +0 -0
  128. package/dist/assets/linetype/12.png +0 -0
  129. package/dist/assets/linetype/13.png +0 -0
  130. package/dist/assets/linetype/14.png +0 -0
  131. package/dist/assets/linetype/15.png +0 -0
  132. package/dist/assets/linetype/16.png +0 -0
  133. package/dist/assets/linetype/2.png +0 -0
  134. package/dist/assets/linetype/3.png +0 -0
  135. package/dist/assets/linetype/4.png +0 -0
  136. package/dist/assets/linetype/5.png +0 -0
  137. package/dist/assets/linetype/6.png +0 -0
  138. package/dist/assets/linetype/7.png +0 -0
  139. package/dist/assets/linetype/8.png +0 -0
  140. package/dist/assets/linetype/9.png +0 -0
  141. package/dist/assets/shaders/webgl1/Background.fs +23 -0
  142. package/dist/assets/shaders/webgl1/Background.vs +16 -0
  143. package/dist/assets/shaders/webgl1/Depth.fs +60 -0
  144. package/dist/assets/shaders/webgl1/Depth.vs +13 -0
  145. package/dist/assets/shaders/webgl1/Fallback.fs +28 -0
  146. package/dist/assets/shaders/webgl1/Fallback.vs +24 -0
  147. package/dist/assets/shaders/webgl1/FallbackUnlit.fs +15 -0
  148. package/dist/assets/shaders/webgl1/FallbackUnlit.vs +18 -0
  149. package/dist/assets/shaders/webgl1/Gouraud.fs +529 -0
  150. package/dist/assets/shaders/webgl1/Gouraud.vs +107 -0
  151. package/dist/assets/shaders/webgl1/Phong.fs +837 -0
  152. package/dist/assets/shaders/webgl1/Phong.vs +52 -0
  153. package/dist/assets/shaders/webgl1/PointSet.fs +541 -0
  154. package/dist/assets/shaders/webgl1/PointSet.vs +48 -0
  155. package/dist/assets/shaders/webgl1/Unlit.fs +538 -0
  156. package/dist/assets/shaders/webgl1/Unlit.vs +52 -0
  157. package/dist/assets/shaders/webgl1/Wireframe.fs +93 -0
  158. package/dist/assets/shaders/webgl1/Wireframe.vs +47 -0
  159. package/dist/assets/shaders/webgl2/Background.fs +25 -0
  160. package/dist/assets/shaders/webgl2/Background.vs +17 -0
  161. package/dist/assets/shaders/webgl2/Depth.fs +62 -0
  162. package/dist/assets/shaders/webgl2/Depth.vs +14 -0
  163. package/dist/assets/shaders/webgl2/Gouraud.fs +684 -0
  164. package/dist/assets/shaders/webgl2/Gouraud.vs +108 -0
  165. package/dist/assets/shaders/webgl2/Phong.fs +1013 -0
  166. package/dist/assets/shaders/webgl2/Phong.vs +53 -0
  167. package/dist/assets/shaders/webgl2/PointSet.fs +696 -0
  168. package/dist/assets/shaders/webgl2/PointSet.vs +49 -0
  169. package/dist/assets/shaders/webgl2/Unlit.fs +693 -0
  170. package/dist/assets/shaders/webgl2/Unlit.vs +53 -0
  171. package/dist/assets/shaders/webgl2/Wireframe.fs +102 -0
  172. package/dist/assets/shaders/webgl2/Wireframe.vs +48 -0
  173. package/dist/example.html +8 -7
  174. package/dist/x_ite.css +167 -49
  175. package/dist/x_ite.js +66263 -60020
  176. package/dist/x_ite.min.js +41 -41
  177. package/dist/x_ite.zip +0 -0
  178. package/docs/404.md +5 -0
  179. package/docs/Accessing-the-External-Browser.md +319 -0
  180. package/docs/Browser-Support.md +47 -0
  181. package/docs/Custom-Shaders.md +896 -0
  182. package/docs/Features.md +49 -0
  183. package/docs/Glossary.md +339 -0
  184. package/docs/How-To-Configure-Your-Web-Server.md +56 -0
  185. package/docs/Supported-Nodes.md +370 -0
  186. package/docs/What's-New.md +1295 -0
  187. package/docs/XHTML-DOM-Integration.md +82 -0
  188. package/docs/_config.yml +140 -0
  189. package/docs/_data/navigation.yml +137 -0
  190. package/docs/assets/css/main.scss +100 -0
  191. package/docs/assets/images/logo.png +0 -0
  192. package/docs/google3696ee938394d7b6.html +1 -0
  193. package/docs/index.md +1033 -0
  194. package/docs/reference/Browser-Services.md +361 -0
  195. package/docs/reference/Constants-Services.md +376 -0
  196. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +128 -0
  197. package/docs/reference/Field-Services-and-Objects.md +1006 -0
  198. package/docs/reference/Prototype-Services.md +121 -0
  199. package/docs/reference/Route-Services.md +49 -0
  200. package/docs/reference/Scene-Services.md +360 -0
  201. package/docs/reference/Script-Node-Authoring-Interface.md +342 -0
  202. package/docs/tutorials/Adding-backgrounds.md +268 -0
  203. package/docs/tutorials/Adding-fog.md +67 -0
  204. package/docs/tutorials/Adding-sound.md +326 -0
  205. package/docs/tutorials/Animating-transforms.md +385 -0
  206. package/docs/tutorials/Basic-Nodes.md +317 -0
  207. package/docs/tutorials/Building-a-X3D-world.md +152 -0
  208. package/docs/tutorials/Building-elevation-grids.md +170 -0
  209. package/docs/tutorials/Building-extruded-shapes.md +145 -0
  210. package/docs/tutorials/Building-primitive-shapes.md +204 -0
  211. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +311 -0
  212. package/docs/tutorials/Controlling-appearance-with-materials.md +186 -0
  213. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +208 -0
  214. package/docs/tutorials/Controlling-detail.md +130 -0
  215. package/docs/tutorials/Controlling-how-textures-are-mapped.md +277 -0
  216. package/docs/tutorials/Controlling-navigation.md +70 -0
  217. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +180 -0
  218. package/docs/tutorials/Controlling-the-viewpoint.md +49 -0
  219. package/docs/tutorials/Creating-new-node-types.md +313 -0
  220. package/docs/tutorials/Grouping-nodes.md +237 -0
  221. package/docs/tutorials/Hello,-World!.md +204 -0
  222. package/docs/tutorials/Improving-Performance.md +227 -0
  223. package/docs/tutorials/Increasing-Rendering-Speed.md +110 -0
  224. package/docs/tutorials/Introducing-X3D.md +94 -0
  225. package/docs/tutorials/Introducing-animation.md +211 -0
  226. package/docs/tutorials/Introducing-script-use.md +127 -0
  227. package/docs/tutorials/Lighting-your-world.md +139 -0
  228. package/docs/tutorials/Mapping-textures.md +212 -0
  229. package/docs/tutorials/Naming-nodes.md +161 -0
  230. package/docs/tutorials/Providing-information-about-your-world.md +30 -0
  231. package/docs/tutorials/Sensing-the-viewer.md +205 -0
  232. package/docs/tutorials/Sensing-viewer-actions.md +214 -0
  233. package/docs/tutorials/Transforming-Shapes.md +270 -0
  234. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +631 -0
  235. package/docs/tutorials/index.md +78 -0
  236. package/meta/logo/logo.png +0 -0
  237. package/meta/logo/logo.svg +216 -217
  238. package/meta/web3d.html +3 -3
  239. package/package.json +43 -28
  240. package/src/assets/components/annotation.js +87 -0
  241. package/src/{components → assets/components}/cad-geometry.js +0 -0
  242. package/src/{x_ite/Components/CubeMapTexturing.js → assets/components/cube-map-texturing.js} +15 -21
  243. package/src/assets/components/dis.js +84 -0
  244. package/src/{x_ite/Components/EventUtilities.js → assets/components/event-utilities.js} +20 -26
  245. package/src/{x_ite/Components/Geometry2D.js → assets/components/geometry2d.js} +22 -25
  246. package/src/{components → assets/components}/geospatial.js +0 -0
  247. package/src/{components → assets/components}/h-anim.js +9 -7
  248. package/src/{x_ite/Components/KeyDeviceSensor.js → assets/components/key-device-sensor.js} +17 -20
  249. package/src/{x_ite/Components/Layout.js → assets/components/layout.js} +20 -23
  250. package/src/{components → assets/components}/nurbs.js +0 -0
  251. package/src/{components → assets/components}/particle-systems.js +1 -1
  252. package/src/assets/components/picking.js +87 -0
  253. package/src/assets/components/projective-texture-mapping.js +75 -0
  254. package/src/{components → assets/components}/rigid-body-physics.js +7 -2
  255. package/src/{x_ite/Components/Scripting.js → assets/components/scripting.js} +13 -19
  256. package/src/{components → assets/components}/texturing-3d.js +12 -13
  257. package/src/assets/components/volume-rendering.js +118 -0
  258. package/src/{x_ite/Components/X_ITE.js → assets/components/x_ite.js} +12 -30
  259. package/src/assets/fonts/DroidSerif-Bold.ttf +0 -0
  260. package/src/assets/fonts/DroidSerif-BoldItalic.ttf +0 -0
  261. package/src/assets/fonts/DroidSerif-Italic.ttf +0 -0
  262. package/src/assets/fonts/DroidSerif-Regular.ttf +0 -0
  263. package/src/assets/fonts/Ubuntu-B.ttf +0 -0
  264. package/src/assets/fonts/Ubuntu-BI.ttf +0 -0
  265. package/src/assets/fonts/Ubuntu-R.ttf +0 -0
  266. package/src/assets/fonts/Ubuntu-RI.ttf +0 -0
  267. package/src/assets/fonts/UbuntuMono-B.ttf +0 -0
  268. package/src/assets/fonts/UbuntuMono-BI.ttf +0 -0
  269. package/src/assets/fonts/UbuntuMono-R.ttf +0 -0
  270. package/src/assets/fonts/UbuntuMono-RI.ttf +0 -0
  271. package/src/assets/hatching/0.png +0 -0
  272. package/src/assets/hatching/1.png +0 -0
  273. package/src/assets/hatching/10.png +0 -0
  274. package/src/assets/hatching/11.png +0 -0
  275. package/src/assets/hatching/12.png +0 -0
  276. package/src/assets/hatching/13.png +0 -0
  277. package/src/assets/hatching/14.png +0 -0
  278. package/src/assets/hatching/15.png +0 -0
  279. package/src/assets/hatching/16.png +0 -0
  280. package/src/assets/hatching/17.png +0 -0
  281. package/src/assets/hatching/18.png +0 -0
  282. package/src/assets/hatching/19.png +0 -0
  283. package/src/assets/hatching/2.png +0 -0
  284. package/src/assets/hatching/3.png +0 -0
  285. package/src/assets/hatching/4.png +0 -0
  286. package/src/assets/hatching/5.png +0 -0
  287. package/src/assets/hatching/6.png +0 -0
  288. package/src/assets/hatching/7.png +0 -0
  289. package/src/assets/hatching/8.png +0 -0
  290. package/src/assets/hatching/9.png +0 -0
  291. package/src/{images → assets/images}/ExamineViewer.png +0 -0
  292. package/src/{images → assets/images}/FlyViewer.png +0 -0
  293. package/src/{images → assets/images}/NoneViewer.png +0 -0
  294. package/src/{images → assets/images}/PlaneViewer.png +0 -0
  295. package/src/{images → assets/images}/PrimitiveQuality.png +0 -0
  296. package/src/{images → assets/images}/TextureQuality.png +0 -0
  297. package/src/{images → assets/images}/Time.png +0 -0
  298. package/src/{images → assets/images}/Viewpoint.png +0 -0
  299. package/src/{images → assets/images}/WalkViewer.png +0 -0
  300. package/src/assets/images/go-next.png +0 -0
  301. package/src/{images → assets/images}/gtk-fullscreen.png +0 -0
  302. package/src/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  303. package/src/{images → assets/images}/gtk-zoom-fit.png +0 -0
  304. package/src/{images → assets/images}/gtk-zoom-in.png +0 -0
  305. package/src/{images → assets/images}/help-about.png +0 -0
  306. package/src/{images → assets/images}/icon.bw.png +0 -0
  307. package/src/{images → assets/images}/icon.png +0 -0
  308. package/src/assets/images/logo.128.png +0 -0
  309. package/src/{images → assets/images}/logo.bw.png +0 -0
  310. package/src/{images → assets/images}/logo.png +0 -0
  311. package/src/assets/linetype/0.png +0 -0
  312. package/src/assets/linetype/1.png +0 -0
  313. package/src/assets/linetype/10.png +0 -0
  314. package/src/assets/linetype/11.png +0 -0
  315. package/src/assets/linetype/12.png +0 -0
  316. package/src/assets/linetype/13.png +0 -0
  317. package/src/assets/linetype/14.png +0 -0
  318. package/src/assets/linetype/15.png +0 -0
  319. package/src/assets/linetype/16.png +0 -0
  320. package/src/assets/linetype/2.png +0 -0
  321. package/src/assets/linetype/3.png +0 -0
  322. package/src/assets/linetype/4.png +0 -0
  323. package/src/assets/linetype/5.png +0 -0
  324. package/src/assets/linetype/6.png +0 -0
  325. package/src/assets/linetype/7.png +0 -0
  326. package/src/assets/linetype/8.png +0 -0
  327. package/src/assets/linetype/9.png +0 -0
  328. package/src/assets/shaders/Types.glsl +102 -0
  329. package/src/assets/shaders/webgl1/Background.fs +16 -0
  330. package/src/assets/shaders/webgl1/Background.vs +22 -0
  331. package/src/assets/shaders/webgl1/Depth.fs +16 -0
  332. package/src/assets/shaders/webgl1/Depth.vs +20 -0
  333. package/src/assets/shaders/webgl1/Fallback.fs +38 -0
  334. package/src/assets/shaders/webgl1/Fallback.vs +30 -0
  335. package/src/assets/shaders/webgl1/FallbackUnlit.fs +21 -0
  336. package/src/assets/shaders/webgl1/FallbackUnlit.vs +24 -0
  337. package/src/assets/shaders/webgl1/Gouraud.fs +66 -0
  338. package/src/assets/shaders/webgl1/Gouraud.vs +147 -0
  339. package/src/assets/shaders/webgl1/Phong.fs +172 -0
  340. package/src/assets/shaders/webgl1/Phong.vs +67 -0
  341. package/src/assets/shaders/webgl1/PointSet.fs +100 -0
  342. package/src/assets/shaders/webgl1/PointSet.vs +70 -0
  343. package/src/assets/shaders/webgl1/Unlit.fs +86 -0
  344. package/src/assets/shaders/webgl1/Unlit.vs +67 -0
  345. package/src/assets/shaders/webgl1/Wireframe.fs +74 -0
  346. package/src/assets/shaders/webgl1/Wireframe.vs +63 -0
  347. package/src/assets/shaders/webgl1/include/ClipPlanes.glsl +16 -0
  348. package/src/assets/shaders/webgl1/include/Fog.glsl +38 -0
  349. package/src/assets/shaders/webgl1/include/Hatch.glsl +18 -0
  350. package/src/{x_ite/Browser/Shaders/Include/Pack.h → assets/shaders/webgl1/include/Pack.glsl} +0 -1
  351. package/src/assets/shaders/webgl1/include/Perlin.glsl +40 -0
  352. package/src/{x_ite/Browser/Shaders/Include/Shadow.h → assets/shaders/webgl1/include/Shadow.glsl} +33 -33
  353. package/src/assets/shaders/webgl1/include/Texture.glsl +488 -0
  354. package/src/assets/shaders/webgl2/Background.fs +19 -0
  355. package/src/assets/shaders/webgl2/Background.vs +23 -0
  356. package/src/assets/shaders/webgl2/Depth.fs +19 -0
  357. package/src/assets/shaders/webgl2/Depth.vs +21 -0
  358. package/src/assets/shaders/webgl2/Gouraud.fs +64 -0
  359. package/src/assets/shaders/webgl2/Gouraud.vs +148 -0
  360. package/src/assets/shaders/webgl2/Phong.fs +170 -0
  361. package/src/assets/shaders/webgl2/Phong.vs +68 -0
  362. package/src/assets/shaders/webgl2/PointSet.fs +99 -0
  363. package/src/assets/shaders/webgl2/PointSet.vs +71 -0
  364. package/src/assets/shaders/webgl2/Unlit.fs +85 -0
  365. package/src/assets/shaders/webgl2/Unlit.vs +68 -0
  366. package/src/assets/shaders/webgl2/Wireframe.fs +73 -0
  367. package/src/assets/shaders/webgl2/Wireframe.vs +64 -0
  368. package/src/assets/shaders/webgl2/include/ClipPlanes.glsl +16 -0
  369. package/src/assets/shaders/webgl2/include/Fog.glsl +46 -0
  370. package/src/assets/shaders/webgl2/include/Hatch.glsl +18 -0
  371. package/src/assets/shaders/webgl2/include/Pack.glsl +51 -0
  372. package/src/assets/shaders/webgl2/include/Perlin.glsl +40 -0
  373. package/src/assets/shaders/webgl2/include/Shadow.glsl +324 -0
  374. package/src/assets/shaders/webgl2/include/Texture.glsl +623 -0
  375. package/src/bookmarks.js +33 -12
  376. package/src/dummy.js +1 -0
  377. package/src/example.html +8 -7
  378. package/src/examples.js +21 -3
  379. package/src/lib/ammojs/AmmoJS.js +58 -0
  380. package/src/lib/ammojs/Makefile +4 -0
  381. package/src/lib/ammojs/ammo.idl +72 -1
  382. package/src/lib/ammojs/ammo.js +25 -21
  383. package/src/lib/jpeg/jpeg.js +1019 -0
  384. package/src/lib/nurbs/extras/sample.js +137 -80
  385. package/src/locale/de.po +18 -73
  386. package/src/locale/fr.po +18 -74
  387. package/src/spinner.css +18 -6
  388. package/src/standard/Geospatial/Geodetic.js +43 -43
  389. package/src/standard/Geospatial/ReferenceEllipsoids.js +1 -1
  390. package/src/standard/Geospatial/UniversalTransverseMercator.js +42 -42
  391. package/src/standard/Math/Algorithm.js +22 -39
  392. package/src/standard/Math/Algorithms/Bezier.js +147 -0
  393. package/src/standard/Math/Algorithms/MergeSort.js +2 -2
  394. package/src/standard/Math/Algorithms/PartialSort.js +6 -6
  395. package/src/standard/Math/Algorithms/QuickSort.js +8 -6
  396. package/src/standard/Math/Algorithms/SAT.js +4 -8
  397. package/src/standard/Math/Algorithms/eigendecomposition.js +37 -33
  398. package/src/standard/Math/Geometry/Box2.js +84 -56
  399. package/src/standard/Math/Geometry/Box3.js +400 -358
  400. package/src/standard/Math/Geometry/Camera.js +19 -16
  401. package/src/standard/Math/Geometry/Cylinder3.js +13 -13
  402. package/src/standard/Math/Geometry/Line3.js +34 -34
  403. package/src/standard/Math/Geometry/Plane3.js +15 -15
  404. package/src/standard/Math/Geometry/Sphere3.js +122 -105
  405. package/src/standard/Math/Geometry/Spheroid3.js +1 -1
  406. package/src/standard/Math/Geometry/Triangle2.js +5 -5
  407. package/src/standard/Math/Geometry/Triangle3.js +12 -14
  408. package/src/standard/Math/Geometry/ViewVolume.js +303 -106
  409. package/src/standard/Math/Numbers/Color3.js +26 -23
  410. package/src/standard/Math/Numbers/Color4.js +9 -9
  411. package/src/standard/Math/Numbers/Complex.js +13 -17
  412. package/src/standard/Math/Numbers/Matrix2.js +20 -13
  413. package/src/standard/Math/Numbers/Matrix3.js +129 -205
  414. package/src/standard/Math/Numbers/Matrix4.js +136 -257
  415. package/src/standard/Math/Numbers/Quaternion.js +49 -138
  416. package/src/standard/Math/Numbers/Rotation4.js +42 -55
  417. package/src/standard/Math/Numbers/Vector2.js +32 -115
  418. package/src/standard/Math/Numbers/Vector3.js +46 -151
  419. package/src/standard/Math/Numbers/Vector4.js +44 -163
  420. package/src/standard/Math/Utility/BVH.js +21 -20
  421. package/src/standard/Math/Utility/MatrixStack.js +4 -4
  422. package/src/standard/Networking/BinaryTransport.js +8 -8
  423. package/src/standard/Time/MicroTime.js +81 -0
  424. package/src/standard/Utility/DataStorage.js +11 -14
  425. package/src/standard/Utility/MapUtilities.js +69 -0
  426. package/src/standard/Utility/ObjectCache.js +2 -3
  427. package/src/standard/Utility/Shuffle.js +5 -6
  428. package/src/tests.js +84 -5
  429. package/src/x_ite/Base/Events.js +9 -10
  430. package/src/x_ite/Base/X3DChildObject.js +20 -16
  431. package/src/x_ite/Base/X3DEventObject.js +3 -7
  432. package/src/x_ite/Base/X3DObject.js +44 -27
  433. package/src/x_ite/Basic/FieldDefinitionArray.js +11 -4
  434. package/src/x_ite/Basic/X3DBaseNode.js +427 -246
  435. package/src/x_ite/Basic/X3DField.js +48 -69
  436. package/src/x_ite/Basic/X3DFieldDefinition.js +0 -4
  437. package/src/x_ite/Basic/X3DObjectArrayField.js +102 -108
  438. package/src/x_ite/Basic/X3DTypedArrayField.js +194 -163
  439. package/src/x_ite/Bits/TraverseType.js +2 -5
  440. package/src/x_ite/Bits/X3DConstants.js +11 -2
  441. package/src/x_ite/Browser/Core/BrowserOptions.js +89 -68
  442. package/src/x_ite/Browser/Core/BrowserTimings.js +21 -29
  443. package/src/x_ite/Browser/Core/ContextMenu.js +139 -60
  444. package/src/x_ite/Browser/Core/Notification.js +3 -3
  445. package/src/x_ite/Browser/Core/PrimitiveQuality.js +3 -7
  446. package/src/x_ite/Browser/Core/Shading.js +3 -7
  447. package/src/x_ite/Browser/Core/TextureQuality.js +3 -7
  448. package/src/x_ite/Browser/Core/X3DCoreContext.js +398 -58
  449. package/src/x_ite/Browser/Core/X3DCoreContext.js.~1~ +714 -0
  450. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +17 -28
  451. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +5 -14
  452. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +81 -28
  453. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +53 -44
  454. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +51 -12
  455. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +8 -9
  456. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +98 -0
  457. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +14 -206
  458. package/src/x_ite/Browser/Layout/ScreenText.js +226 -254
  459. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +13 -11
  460. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +15 -9
  461. package/src/x_ite/Browser/NURBS/NURBS.js +84 -72
  462. package/src/x_ite/Browser/Navigation/ExamineViewer.js +125 -83
  463. package/src/x_ite/Browser/Navigation/FlyViewer.js +14 -9
  464. package/src/x_ite/Browser/Navigation/LookAtViewer.js +60 -40
  465. package/src/x_ite/Browser/Navigation/NoneViewer.js +12 -1
  466. package/src/x_ite/Browser/Navigation/PlaneViewer.js +39 -20
  467. package/src/x_ite/Browser/Navigation/WalkViewer.js +21 -6
  468. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +110 -85
  469. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +11 -6
  470. package/src/x_ite/Browser/Navigation/X3DViewer.js +73 -48
  471. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +18 -24
  472. package/src/x_ite/Browser/Networking/urls.js +31 -16
  473. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +5 -6
  474. package/src/x_ite/Browser/Picking/IntersectionType.js +63 -0
  475. package/src/x_ite/Browser/Picking/MatchCriterion.js +64 -0
  476. package/src/x_ite/Browser/Picking/SortOrder.js +65 -0
  477. package/src/x_ite/Browser/Picking/VolumePicker.js +197 -0
  478. package/src/x_ite/Browser/Picking/X3DPickingContext.js +130 -0
  479. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +26 -20
  480. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +17 -10
  481. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +38 -27
  482. package/src/x_ite/Browser/RigidBodyPhysics/AppliedParametersType.js +70 -0
  483. package/src/x_ite/Browser/Shaders/Shader.js +112 -92
  484. package/src/x_ite/Browser/Shaders/ShaderSource.js +140 -0
  485. package/src/x_ite/Browser/Shaders/ShaderTest.js +92 -77
  486. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +134 -74
  487. package/src/x_ite/Browser/Shape/AlphaMode.js +65 -0
  488. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
  489. package/src/x_ite/Browser/Shape/X3DShapeContext.js +108 -4
  490. package/src/x_ite/Browser/Text/PolygonText.js +153 -170
  491. package/src/x_ite/Browser/Text/TextAlignment.js +3 -7
  492. package/src/x_ite/Browser/Text/X3DTextContext.js +38 -30
  493. package/src/x_ite/Browser/Text/X3DTextGeometry.js +49 -74
  494. package/src/x_ite/Browser/Texturing/MultiTextureFunctionType.js +64 -0
  495. package/src/x_ite/Browser/Texturing/MultiTextureModeType.js +81 -0
  496. package/src/x_ite/Browser/Texturing/MultiTextureSourceType.js +65 -0
  497. package/src/x_ite/Browser/Texturing/TextureCoordinateGeneratorModeType.js +73 -0
  498. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +147 -45
  499. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1126 -0
  500. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +686 -0
  501. package/src/x_ite/Browser/Time/X3DTimeContext.js +20 -17
  502. package/src/x_ite/Browser/VERSION.js +1 -1
  503. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.fs +120 -0
  504. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.vs +28 -0
  505. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +114 -0
  506. package/src/x_ite/Browser/X3DBrowser.js +282 -224
  507. package/src/x_ite/Browser/X3DBrowserContext.js +60 -27
  508. package/src/x_ite/Components/Annotation/AnnotationLayer.js +108 -0
  509. package/src/x_ite/Components/Annotation/AnnotationTarget.js +101 -0
  510. package/src/x_ite/Components/Annotation/GroupAnnotation.js +112 -0
  511. package/src/x_ite/Components/Annotation/IconAnnotation.js +110 -0
  512. package/src/x_ite/Components/Annotation/TextAnnotation.js +102 -0
  513. package/src/x_ite/Components/Annotation/URLAnnotation.js +101 -0
  514. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +76 -0
  515. package/src/x_ite/Components/CADGeometry/CADAssembly.js +4 -4
  516. package/src/x_ite/Components/CADGeometry/CADFace.js +135 -30
  517. package/src/x_ite/Components/CADGeometry/CADLayer.js +3 -18
  518. package/src/x_ite/Components/CADGeometry/CADPart.js +4 -8
  519. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +18 -10
  520. package/src/x_ite/Components/Core/WorldInfo.js +16 -6
  521. package/src/x_ite/Components/Core/X3DBindableNode.js +4 -33
  522. package/src/x_ite/Components/Core/X3DChildNode.js +14 -1
  523. package/src/x_ite/Components/Core/X3DNode.js +0 -63
  524. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +128 -168
  525. package/src/x_ite/Components/Core.js +6 -9
  526. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +38 -46
  527. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +31 -30
  528. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +42 -57
  529. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +36 -48
  530. package/src/x_ite/Components/DIS/EspduTransform.js +12 -6
  531. package/src/x_ite/Components/DIS/ReceiverPdu.js +12 -6
  532. package/src/x_ite/Components/DIS/SignalPdu.js +12 -6
  533. package/src/x_ite/Components/DIS/TransmitterPdu.js +12 -6
  534. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +5 -16
  535. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +55 -3
  536. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +3 -5
  537. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +116 -116
  538. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +5 -6
  539. package/src/x_ite/Components/EnvironmentalEffects.js +6 -9
  540. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +116 -117
  541. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +169 -49
  542. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +31 -27
  543. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +12 -5
  544. package/src/x_ite/Components/EnvironmentalSensor.js +6 -9
  545. package/src/x_ite/Components/Followers/ColorChaser.js +1 -3
  546. package/src/x_ite/Components/Followers/ColorDamper.js +1 -3
  547. package/src/x_ite/Components/Followers/CoordinateChaser.js +1 -7
  548. package/src/x_ite/Components/Followers/CoordinateDamper.js +0 -6
  549. package/src/x_ite/Components/Followers/OrientationChaser.js +7 -3
  550. package/src/x_ite/Components/Followers/OrientationDamper.js +7 -3
  551. package/src/x_ite/Components/Followers/PositionChaser.js +1 -3
  552. package/src/x_ite/Components/Followers/PositionChaser2D.js +1 -3
  553. package/src/x_ite/Components/Followers/PositionDamper.js +1 -3
  554. package/src/x_ite/Components/Followers/PositionDamper2D.js +1 -3
  555. package/src/x_ite/Components/Followers/ScalarChaser.js +1 -3
  556. package/src/x_ite/Components/Followers/ScalarDamper.js +1 -3
  557. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +1 -7
  558. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +1 -7
  559. package/src/x_ite/Components/Followers/X3DChaserNode.js +20 -18
  560. package/src/x_ite/Components/Followers/X3DDamperNode.js +5 -7
  561. package/src/x_ite/Components/Followers/X3DFollowerNode.js +5 -7
  562. package/src/x_ite/Components/Followers.js +6 -9
  563. package/src/x_ite/Components/Geometry2D/Arc2D.js +10 -14
  564. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +87 -86
  565. package/src/x_ite/Components/Geometry2D/Circle2D.js +1 -3
  566. package/src/x_ite/Components/Geometry2D/Disk2D.js +43 -58
  567. package/src/x_ite/Components/Geometry2D/Polyline2D.js +4 -8
  568. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +3 -5
  569. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +20 -16
  570. package/src/x_ite/Components/Geometry3D/Cone.js +1 -3
  571. package/src/x_ite/Components/Geometry3D/Cylinder.js +3 -5
  572. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +35 -17
  573. package/src/x_ite/Components/Geometry3D/Extrusion.js +125 -107
  574. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +164 -142
  575. package/src/x_ite/Components/Geometry3D/Sphere.js +3 -5
  576. package/src/x_ite/Components/Geometry3D.js +6 -9
  577. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +7 -7
  578. package/src/x_ite/Components/Geospatial/GeoLOD.js +207 -124
  579. package/src/x_ite/Components/Geospatial/GeoLocation.js +6 -6
  580. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +5 -3
  581. package/src/x_ite/Components/Geospatial/GeoTransform.js +9 -9
  582. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +27 -27
  583. package/src/x_ite/Components/Grouping/Group.js +3 -3
  584. package/src/x_ite/Components/Grouping/StaticGroup.js +49 -56
  585. package/src/x_ite/Components/Grouping/Switch.js +171 -21
  586. package/src/x_ite/Components/Grouping/Transform.js +3 -3
  587. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +68 -15
  588. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +339 -180
  589. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +51 -25
  590. package/src/x_ite/Components/Grouping/X3DTransformNode.js +2 -4
  591. package/src/x_ite/Components/Grouping.js +6 -9
  592. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimDisplacer.js +4 -4
  593. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimHumanoid.js +24 -14
  594. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimJoint.js +44 -20
  595. package/src/x_ite/Components/HAnim/HAnimMotion.js +113 -0
  596. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSegment.js +6 -4
  597. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSite.js +4 -4
  598. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +8 -7
  599. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +4 -3
  600. package/src/x_ite/Components/Interpolation.js +6 -9
  601. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +1 -3
  602. package/src/x_ite/Components/Layering/Layer.js +12 -2
  603. package/src/x_ite/Components/Layering/LayerSet.js +4 -6
  604. package/src/x_ite/Components/Layering/Viewport.js +8 -8
  605. package/src/x_ite/Components/Layering/X3DLayerNode.js +67 -62
  606. package/src/x_ite/Components/Layering.js +6 -9
  607. package/src/x_ite/Components/Layout/LayoutGroup.js +18 -15
  608. package/src/x_ite/Components/Layout/LayoutLayer.js +10 -5
  609. package/src/x_ite/Components/Layout/ScreenFontStyle.js +12 -14
  610. package/src/x_ite/Components/Layout/ScreenGroup.js +25 -31
  611. package/src/x_ite/Components/Lighting/DirectionalLight.js +27 -22
  612. package/src/x_ite/Components/Lighting/PointLight.js +26 -29
  613. package/src/x_ite/Components/Lighting/SpotLight.js +29 -24
  614. package/src/x_ite/Components/Lighting/X3DLightNode.js +85 -66
  615. package/src/x_ite/Components/Lighting.js +6 -9
  616. package/src/x_ite/Components/NURBS/Contour2D.js +45 -1
  617. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +53 -25
  618. package/src/x_ite/Components/NURBS/NurbsCurve.js +21 -24
  619. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +44 -25
  620. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +19 -21
  621. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +18 -20
  622. package/src/x_ite/Components/NURBS/NurbsSet.js +17 -6
  623. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +2 -2
  624. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +2 -2
  625. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +15 -16
  626. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +38 -1
  627. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +116 -43
  628. package/src/x_ite/Components/Navigation/Billboard.js +12 -11
  629. package/src/x_ite/Components/Navigation/Collision.js +10 -8
  630. package/src/x_ite/Components/Navigation/LOD.js +207 -59
  631. package/src/x_ite/Components/Navigation/NavigationInfo.js +29 -43
  632. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +99 -18
  633. package/src/x_ite/Components/Navigation/Viewpoint.js +15 -15
  634. package/src/x_ite/Components/Navigation/ViewpointGroup.js +12 -5
  635. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +137 -148
  636. package/src/x_ite/Components/Navigation.js +6 -9
  637. package/src/x_ite/Components/Networking/Anchor.js +22 -24
  638. package/src/x_ite/Components/Networking/Inline.js +63 -44
  639. package/src/x_ite/Components/Networking/X3DUrlObject.js +88 -8
  640. package/src/x_ite/Components/Networking.js +6 -9
  641. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +2 -2
  642. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +215 -199
  643. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +44 -39
  644. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +48 -46
  645. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +121 -117
  646. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +21 -18
  647. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +20 -22
  648. package/src/x_ite/Components/Picking/LinePickSensor.js +251 -6
  649. package/src/x_ite/Components/Picking/PickableGroup.js +120 -7
  650. package/src/x_ite/Components/Picking/PointPickSensor.js +260 -8
  651. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +174 -4
  652. package/src/x_ite/Components/Picking/VolumePickSensor.js +150 -4
  653. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +377 -4
  654. package/src/x_ite/Components/Picking/X3DPickableObject.js +21 -1
  655. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +26 -11
  656. package/src/x_ite/Components/PointingDeviceSensor.js +6 -9
  657. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +282 -0
  658. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +227 -0
  659. package/src/x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js +217 -0
  660. package/src/x_ite/Components/Rendering/ClipPlane.js +8 -10
  661. package/src/x_ite/Components/Rendering/Color.js +22 -13
  662. package/src/x_ite/Components/Rendering/ColorRGBA.js +28 -16
  663. package/src/x_ite/Components/Rendering/IndexedLineSet.js +52 -33
  664. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +17 -14
  665. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +9 -4
  666. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +17 -17
  667. package/src/x_ite/Components/Rendering/LineSet.js +44 -27
  668. package/src/x_ite/Components/Rendering/Normal.js +20 -4
  669. package/src/x_ite/Components/Rendering/PointSet.js +38 -16
  670. package/src/x_ite/Components/Rendering/TriangleFanSet.js +7 -9
  671. package/src/x_ite/Components/Rendering/TriangleStripSet.js +6 -8
  672. package/src/x_ite/Components/Rendering/X3DColorNode.js +16 -1
  673. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +80 -55
  674. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +11 -13
  675. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +622 -477
  676. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +159 -90
  677. package/src/x_ite/Components/Rendering.js +6 -9
  678. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +8 -10
  679. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +142 -26
  680. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +312 -128
  681. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +91 -7
  682. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +189 -4
  683. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +82 -4
  684. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +1 -1
  685. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +49 -37
  686. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +45 -39
  687. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +41 -34
  688. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +25 -20
  689. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +8 -10
  690. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +15 -16
  691. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +2 -4
  692. package/src/x_ite/Components/Scripting/Script.js +147 -101
  693. package/src/x_ite/Components/Scripting/X3DScriptNode.js +2 -4
  694. package/src/x_ite/Components/Shaders/ComposedShader.js +17 -19
  695. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +9 -3
  696. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -3
  697. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -3
  698. package/src/x_ite/Components/Shaders/PackagedShader.js +18 -14
  699. package/src/x_ite/Components/Shaders/ShaderPart.js +30 -18
  700. package/src/x_ite/Components/Shaders/ShaderProgram.js +15 -11
  701. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +681 -558
  702. package/src/x_ite/Components/Shaders/X3DShaderNode.js +48 -12
  703. package/src/x_ite/Components/Shaders.js +15 -18
  704. package/src/x_ite/Components/Shape/Appearance.js +153 -77
  705. package/src/x_ite/Components/Shape/FillProperties.js +63 -4
  706. package/src/x_ite/Components/Shape/LineProperties.js +27 -5
  707. package/src/x_ite/Components/Shape/Material.js +48 -62
  708. package/src/x_ite/Components/Shape/PointProperties.js +162 -0
  709. package/src/x_ite/Components/Shape/Shape.js +86 -39
  710. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +53 -59
  711. package/src/x_ite/Components/Shape/UnlitMaterial.js +109 -0
  712. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +9 -6
  713. package/src/x_ite/Components/Shape/X3DMaterialNode.js +16 -3
  714. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +111 -0
  715. package/src/x_ite/Components/Shape/X3DShapeNode.js +41 -17
  716. package/src/x_ite/Components/Shape.js +22 -16
  717. package/src/x_ite/Components/Sound/AudioClip.js +36 -50
  718. package/src/x_ite/Components/Sound/Sound.js +36 -36
  719. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +18 -6
  720. package/src/x_ite/Components/Sound.js +6 -9
  721. package/src/x_ite/Components/Text/FontStyle.js +10 -12
  722. package/src/x_ite/Components/Text/Text.js +6 -6
  723. package/src/x_ite/Components/Text/X3DFontStyleNode.js +56 -87
  724. package/src/x_ite/Components/Text.js +6 -9
  725. package/src/x_ite/Components/Texturing/ImageTexture.js +48 -63
  726. package/src/x_ite/Components/Texturing/MovieTexture.js +42 -56
  727. package/src/x_ite/Components/Texturing/MultiTexture.js +236 -11
  728. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +73 -6
  729. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +45 -4
  730. package/src/x_ite/Components/Texturing/PixelTexture.js +45 -11
  731. package/src/x_ite/Components/Texturing/TextureCoordinate.js +32 -17
  732. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +68 -8
  733. package/src/x_ite/Components/Texturing/TextureProperties.js +96 -65
  734. package/src/x_ite/Components/Texturing/TextureTransform.js +55 -47
  735. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +91 -0
  736. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +183 -0
  737. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +77 -0
  738. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +42 -95
  739. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js.~1~ +209 -0
  740. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +3 -17
  741. package/src/x_ite/Components/Texturing/X3DTextureNode.js +6 -67
  742. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +4 -11
  743. package/src/x_ite/Components/Texturing.js +31 -25
  744. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +88 -4
  745. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +105 -13
  746. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +124 -4
  747. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +35 -18
  748. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +35 -18
  749. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +41 -31
  750. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +18 -11
  751. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +110 -6
  752. package/src/x_ite/Components/Time/TimeSensor.js +23 -19
  753. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +11 -7
  754. package/src/x_ite/Components/Time.js +6 -9
  755. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +309 -8
  756. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +58 -4
  757. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +217 -6
  758. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +132 -3
  759. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +86 -5
  760. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +309 -11
  761. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +85 -3
  762. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +134 -2
  763. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +222 -9
  764. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +191 -8
  765. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +85 -6
  766. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +95 -5
  767. package/src/x_ite/Components/VolumeRendering/VolumeData.js +153 -8
  768. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +155 -3
  769. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +62 -0
  770. package/src/x_ite/Components/X_ITE/BlendMode.js +51 -51
  771. package/src/x_ite/Components.js +11 -16
  772. package/src/x_ite/Configuration/ComponentInfo.js +12 -6
  773. package/src/x_ite/Configuration/ComponentInfoArray.js +4 -7
  774. package/src/x_ite/Configuration/ProfileInfo.js +10 -6
  775. package/src/x_ite/Configuration/SupportedComponents.js +66 -40
  776. package/src/x_ite/Configuration/SupportedNodes.js +22 -6
  777. package/src/x_ite/Configuration/SupportedProfiles.js +91 -89
  778. package/src/x_ite/Configuration/UnitInfo.js +12 -2
  779. package/src/x_ite/Configuration/X3DInfoArray.js +37 -18
  780. package/src/x_ite/Execution/BindableList.js +63 -38
  781. package/src/x_ite/Execution/BindableStack.js +63 -71
  782. package/src/x_ite/Execution/ExportedNode.js +25 -2
  783. package/src/x_ite/Execution/ImportedNode.js +122 -39
  784. package/src/x_ite/Execution/Scene.js +22 -14
  785. package/src/x_ite/Execution/World.js +22 -19
  786. package/src/x_ite/Execution/X3DExecutionContext.js +381 -221
  787. package/src/x_ite/Execution/X3DScene.js +213 -53
  788. package/src/x_ite/{Error.js → Fallback.js} +26 -29
  789. package/src/x_ite/Fields/ArrayFields.js +176 -57
  790. package/src/x_ite/Fields/SFBool.js +6 -5
  791. package/src/x_ite/Fields/SFColor.js +24 -21
  792. package/src/x_ite/Fields/SFColorRGBA.js +23 -23
  793. package/src/x_ite/Fields/SFDouble.js +6 -5
  794. package/src/x_ite/Fields/SFFloat.js +7 -6
  795. package/src/x_ite/Fields/SFImage.js +37 -36
  796. package/src/x_ite/Fields/SFInt32.js +5 -4
  797. package/src/x_ite/Fields/SFMatrix3.js +19 -15
  798. package/src/x_ite/Fields/SFMatrix4.js +19 -15
  799. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +10 -2
  800. package/src/x_ite/Fields/SFNode.js +105 -53
  801. package/src/x_ite/Fields/SFNodeCache.js +93 -0
  802. package/src/x_ite/Fields/SFRotation.js +31 -27
  803. package/src/x_ite/Fields/SFString.js +9 -8
  804. package/src/x_ite/Fields/SFTime.js +6 -5
  805. package/src/x_ite/Fields/SFVec2.js +17 -13
  806. package/src/x_ite/Fields/SFVec3.js +21 -17
  807. package/src/x_ite/Fields/SFVec4.js +24 -20
  808. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +8 -4
  809. package/src/x_ite/Fields.js +2 -6
  810. package/src/x_ite/InputOutput/FileLoader.js +174 -190
  811. package/src/x_ite/InputOutput/Generator.js +133 -104
  812. package/src/x_ite/Parser/HTMLSupport.js +3 -596
  813. package/src/x_ite/Parser/JSONParser.js +348 -245
  814. package/src/x_ite/Parser/Parser.js +314 -303
  815. package/src/x_ite/Parser/X3DParser.js +41 -20
  816. package/src/x_ite/Parser/XMLParser.js +178 -60
  817. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +17 -0
  818. package/src/x_ite/Prototype/ProtoDeclarationArray.js +17 -0
  819. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +104 -44
  820. package/src/x_ite/Prototype/X3DProtoDeclaration.js +111 -42
  821. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +16 -14
  822. package/src/x_ite/Rendering/DependentRenderer.js +7 -9
  823. package/src/x_ite/Rendering/TextureBuffer.js +24 -19
  824. package/src/x_ite/Rendering/X3DRenderObject.js +455 -428
  825. package/src/x_ite/Routing/RouteArray.js +34 -11
  826. package/src/x_ite/Routing/X3DRoute.js +60 -60
  827. package/src/x_ite/Routing/X3DRoutingContext.js +6 -6
  828. package/src/x_ite/X3D.js +30 -37
  829. package/src/x_ite.config.js +40 -5
  830. package/src/x_ite.css +165 -45
  831. package/src/x_ite.html +49 -29
  832. package/src/x_ite.js +86 -25
  833. package/x_ite.min.html +49 -22
  834. package/.bzrignore +0 -3
  835. package/AUTHORS.md +0 -6
  836. package/STYLE_GUIDE.md +0 -51
  837. package/X_ITE.sln +0 -54
  838. package/X_ITE.userprefs +0 -14
  839. package/build/build.mdproj +0 -47
  840. package/build/cad-geometry.build.js +0 -15
  841. package/build/geospatial.build.js +0 -15
  842. package/build/h-anim.build.js +0 -15
  843. package/build/nurbs.build.js +0 -15
  844. package/build/particle-systems.build.js +0 -15
  845. package/build/parts/cad-geometry.end.frag +0 -2
  846. package/build/parts/cad-geometry.start.frag +0 -6
  847. package/build/parts/geospatial.end.frag +0 -2
  848. package/build/parts/geospatial.start.frag +0 -6
  849. package/build/parts/h-anim.end.frag +0 -2
  850. package/build/parts/h-anim.start.frag +0 -6
  851. package/build/parts/nurbs.end.frag +0 -2
  852. package/build/parts/nurbs.start.frag +0 -6
  853. package/build/parts/particle-systems.end.frag +0 -2
  854. package/build/parts/particle-systems.start.frag +0 -6
  855. package/build/parts/rigid-body-physics.end.frag +0 -2
  856. package/build/parts/rigid-body-physics.start.frag +0 -6
  857. package/build/parts/texturing-3d.end.frag +0 -2
  858. package/build/parts/texturing-3d.start.frag +0 -6
  859. package/build/parts/x_ite.end.frag +0 -9
  860. package/build/parts/x_ite.start.frag +0 -6
  861. package/build/rigid-body-physics.build.js +0 -15
  862. package/build/texturing-3d.build.js +0 -15
  863. package/dist/components/README +0 -3
  864. package/dist/components/cad-geometry.min.js +0 -1
  865. package/dist/components/geospatial.min.js +0 -2
  866. package/dist/components/h-anim.min.js +0 -1
  867. package/dist/components/nurbs.min.js +0 -2
  868. package/dist/components/particle-systems.min.js +0 -2
  869. package/dist/components/rigid-body-physics.js +0 -3761
  870. package/dist/components/rigid-body-physics.min.js +0 -56
  871. package/dist/components/texturing-3d.min.js +0 -1
  872. package/dist/dist.mdproj +0 -61
  873. package/dist/images/logo.128.png +0 -0
  874. package/fonts/fonts.mdproj +0 -29
  875. package/meta/meta.mdproj +0 -35
  876. package/src/components/cad-geometry.config.js +0 -56
  877. package/src/components/geospatial.config.js +0 -56
  878. package/src/components/h-anim.config.js +0 -56
  879. package/src/components/nurbs.config.js +0 -61
  880. package/src/components/particle-systems.config.js +0 -56
  881. package/src/components/rigid-body-physics.config.js +0 -61
  882. package/src/components/texturing-3d.config.js +0 -56
  883. package/src/images/logo.128.png +0 -0
  884. package/src/locale/de.mo +0 -0
  885. package/src/locale/fr.mo +0 -0
  886. package/src/src.mdproj +0 -698
  887. package/src/standard/Networking/URI.js +0 -785
  888. package/src/test.x3d +0 -225
  889. package/src/x_ite/Browser/Shaders/Background.fs +0 -31
  890. package/src/x_ite/Browser/Shaders/Background.vs +0 -23
  891. package/src/x_ite/Browser/Shaders/Depth.fs +0 -32
  892. package/src/x_ite/Browser/Shaders/Depth.vs +0 -21
  893. package/src/x_ite/Browser/Shaders/Gouraud.fs +0 -135
  894. package/src/x_ite/Browser/Shaders/Gouraud.vs +0 -145
  895. package/src/x_ite/Browser/Shaders/Phong.fs +0 -269
  896. package/src/x_ite/Browser/Shaders/Phong.vs +0 -47
  897. package/src/x_ite/Browser/Shaders/PointSet.fs +0 -86
  898. package/src/x_ite/Browser/Shaders/Types.h +0 -55
  899. package/src/x_ite/Browser/Shaders/Wireframe.fs +0 -82
  900. package/src/x_ite/Browser/Shaders/Wireframe.vs +0 -61
  901. package/src/x_ite/Components/DIS.js +0 -91
  902. package/src/x_ite/Components/Picking.js +0 -94
  903. package/src/x_ite/Components/VolumeRendering.js +0 -121
@@ -55,7 +55,7 @@ define ([
55
55
  "x_ite/Bits/TraverseType",
56
56
  "x_ite/Bits/X3DConstants",
57
57
  "x_ite/Bits/X3DCast",
58
- "standard/Math/Numbers/Color4",
58
+ "x_ite/Browser/Shape/AlphaMode",
59
59
  "standard/Math/Numbers/Vector3",
60
60
  "standard/Math/Numbers/Vector4",
61
61
  "standard/Math/Numbers/Matrix4",
@@ -71,7 +71,7 @@ function (Fields,
71
71
  TraverseType,
72
72
  X3DConstants,
73
73
  X3DCast,
74
- Color4,
74
+ AlphaMode,
75
75
  Vector3,
76
76
  Vector4,
77
77
  Matrix4,
@@ -82,8 +82,9 @@ function (Fields,
82
82
  {
83
83
  "use strict";
84
84
 
85
- var
86
- i = 0,
85
+ var i = 0;
86
+
87
+ const
87
88
  POINT = i ++,
88
89
  LINE = i ++,
89
90
  TRIANGLE = i ++,
@@ -91,7 +92,7 @@ function (Fields,
91
92
  GEOMETRY = i ++,
92
93
  SPRITE = i ++;
93
94
 
94
- var GeometryTypes = {
95
+ const GeometryTypes = {
95
96
  POINT: POINT,
96
97
  LINE: LINE,
97
98
  TRIANGLE: TRIANGLE,
@@ -100,7 +101,7 @@ function (Fields,
100
101
  SPRITE: SPRITE,
101
102
  };
102
103
 
103
- var
104
+ const
104
105
  invModelViewMatrix = new Matrix4 (),
105
106
  billboardToScreen = new Vector3 (0, 0, 0),
106
107
  viewerYAxis = new Vector3 (0, 0, 0),
@@ -146,16 +147,16 @@ function (Fields,
146
147
  this .colorKeys = [ ];
147
148
  this .colorRamppNode = null;
148
149
  this .colorRamp = [ ];
149
- this .colorMaterial = false;
150
150
  this .texCoordKeys = [ ];
151
151
  this .texCoordRampNode = null;
152
152
  this .texCoordRamp = [ ];
153
153
  this .texCoordAnim = false;
154
154
  this .vertexCount = 0;
155
- this .shaderNode = this .getBrowser () .getPointShader ();
155
+ this .shaderNode = null;
156
156
  this .rotation = new Matrix3 ();
157
157
  this .particleSorter = new QuickSort (this .particles, compareDistance);
158
158
  this .sortParticles = false;
159
+ this .geometryContext = { };
159
160
  }
160
161
 
161
162
  ParticleSystem .prototype = Object .assign (Object .create (X3DShapeNode .prototype),
@@ -177,6 +178,9 @@ function (Fields,
177
178
  new X3DFieldDefinition (X3DConstants .initializeOnly, "texCoordKey", new Fields .MFFloat ()),
178
179
  new X3DFieldDefinition (X3DConstants .initializeOnly, "texCoordRamp", new Fields .SFNode ()),
179
180
  new X3DFieldDefinition (X3DConstants .outputOnly, "isActive", new Fields .SFBool ()),
181
+ new X3DFieldDefinition (X3DConstants .inputOutput, "visible", new Fields .SFBool (true)),
182
+ new X3DFieldDefinition (X3DConstants .inputOutput, "castShadow", new Fields .SFBool (true)),
183
+ new X3DFieldDefinition (X3DConstants .inputOutput, "bboxDisplay", new Fields .SFBool ()),
180
184
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxSize", new Fields .SFVec3f (-1, -1, -1)),
181
185
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxCenter", new Fields .SFVec3f ()),
182
186
  new X3DFieldDefinition (X3DConstants .inputOutput, "appearance", new Fields .SFNode ()),
@@ -198,12 +202,13 @@ function (Fields,
198
202
  {
199
203
  X3DShapeNode .prototype .initialize .call (this);
200
204
 
201
- var gl = this .getBrowser () .getContext ();
205
+ const
206
+ browser = this .getBrowser (),
207
+ gl = browser .getContext ();
202
208
 
203
209
  this .isLive () .addInterest ("set_live__", this);
204
210
 
205
- this .getBrowser () .getBrowserOptions () .Shading_ .addInterest ("set_shader__", this);
206
- //this .getBrowser () .getDefaultShader () .addInterest ("set_shader__", this);
211
+ browser .getBrowserOptions () .Shading_ .addInterest ("set_shader__", this);
207
212
 
208
213
  this .enabled_ .addInterest ("set_enabled__", this);
209
214
  this .createParticles_ .addInterest ("set_createParticles__", this);
@@ -227,6 +232,9 @@ function (Fields,
227
232
  this .normalBuffer = gl .createBuffer ();
228
233
  this .vertexBuffer = gl .createBuffer ();
229
234
 
235
+ for (var i = 1, channels = this .getBrowser () .getMaxTextures (); i < channels; ++ i)
236
+ this .texCoordBuffers .push (this .texCoordBuffers [0]);
237
+
230
238
  this .idArray = new Float32Array ();
231
239
  this .positionArray = new Float32Array ();
232
240
  this .elapsedTimeArray = new Float32Array ();
@@ -238,6 +246,11 @@ function (Fields,
238
246
 
239
247
  this .primitiveMode = gl .TRIANGLES;
240
248
 
249
+ // Geometry context
250
+
251
+ this .geometryContext .fogCoords = false;
252
+ this .geometryContext .textureCoordinateNode = browser .getDefaultTextureCoordinate ();
253
+
241
254
  // Call order is higly important at startup.
242
255
  this .set_emitter__ ();
243
256
  this .set_enabled__ ();
@@ -250,31 +263,38 @@ function (Fields,
250
263
  },
251
264
  set_bbox__: function ()
252
265
  {
253
- if (this .bboxSize_ .getValue () .equals (this .defaultBBoxSize))
266
+ if (this .bboxSize_ .getValue () .equals (this .getDefaultBBoxSize ()))
254
267
  this .bbox .set ();
255
268
  else
256
269
  this .bbox .set (this .bboxSize_ .getValue (), this .bboxCenter_ .getValue ());
257
-
258
- this .bboxSize = this .bbox .size;
259
- this .bboxCenter = this .bbox .center;
270
+
271
+ this .bboxSize .assign (this .bbox .size);
272
+ this .bboxCenter .assign (this .bbox .center);
260
273
  },
261
274
  set_transparent__: function ()
262
275
  {
263
- switch (this .geometryType)
276
+ if (this .getAppearance () .getAlphaMode () === AlphaMode .AUTO)
264
277
  {
265
- case POINT:
266
- {
267
- this .setTransparent (true);
268
- break;
269
- }
270
- default:
278
+ switch (this .geometryType)
271
279
  {
272
- this .setTransparent ((this .getAppearance () && this .getAppearance () .transparent_ .getValue ()) ||
273
- (this .colorRampNode && this .colorRampNode .isTransparent ()) ||
274
- (this .geometryType === GEOMETRY && this .geometryNode && this .geometryNode .transparent_ .getValue ()));
275
- break;
280
+ case POINT:
281
+ {
282
+ this .setTransparent (true);
283
+ break;
284
+ }
285
+ default:
286
+ {
287
+ this .setTransparent (this .getAppearance () .getTransparent () ||
288
+ (this .colorRampNode && this .colorRampNode .getTransparent ()) ||
289
+ (this .geometryType === GEOMETRY && this .geometryNode && this .geometryNode .getTransparent ()));
290
+ break;
291
+ }
276
292
  }
277
293
  }
294
+ else
295
+ {
296
+ this .setTransparent (this .getAppearance () .getTransparent ());
297
+ }
278
298
  },
279
299
  set_live__: function ()
280
300
  {
@@ -283,7 +303,7 @@ function (Fields,
283
303
  if (this .isActive_ .getValue () && this .maxParticles_ .getValue ())
284
304
  {
285
305
  this .getBrowser () .sensorEvents () .addInterest ("animateParticles", this);
286
-
306
+
287
307
  if (this .pauseTime)
288
308
  {
289
309
  this .creationTime += performance .now () / 1000 - this .pauseTime;
@@ -296,7 +316,7 @@ function (Fields,
296
316
  if (this .isActive_ .getValue () && this .maxParticles_ .getValue ())
297
317
  {
298
318
  this .getBrowser () .sensorEvents () .removeInterest ("animateParticles", this);
299
-
319
+
300
320
  if (this .pauseTime === 0)
301
321
  this .pauseTime = performance .now () / 1000;
302
322
  }
@@ -311,7 +331,7 @@ function (Fields,
311
331
  if (this .isLive () .getValue ())
312
332
  {
313
333
  this .getBrowser () .sensorEvents () .addInterest ("animateParticles", this);
314
-
334
+
315
335
  this .pauseTime = 0;
316
336
  }
317
337
  else
@@ -328,9 +348,9 @@ function (Fields,
328
348
  {
329
349
  this .getBrowser () .sensorEvents () .removeInterest ("animateParticles", this);
330
350
  }
331
-
351
+
332
352
  this .isActive_ = false;
333
-
353
+
334
354
  this .numParticles = 0;
335
355
  }
336
356
  }
@@ -375,9 +395,12 @@ function (Fields,
375
395
  this .colorArray .fill (1);
376
396
  this .vertexArray .fill (1);
377
397
 
398
+ this .testWireframe = false;
378
399
  this .primitiveMode = gl .POINTS;
379
400
  this .texCoordCount = 0;
380
401
  this .vertexCount = 1;
402
+
403
+ this .geometryContext .geometryType = 0;
381
404
  break;
382
405
  }
383
406
  case LINE:
@@ -397,9 +420,12 @@ function (Fields,
397
420
  this .colorArray .fill (1);
398
421
  this .vertexArray .fill (1);
399
422
 
423
+ this .testWireframe = false;
400
424
  this .primitiveMode = gl .LINES;
401
425
  this .texCoordCount = 2;
402
426
  this .vertexCount = 2;
427
+
428
+ this .geometryContext .geometryType = 1;
403
429
  break;
404
430
  }
405
431
  case TRIANGLE:
@@ -474,9 +500,12 @@ function (Fields,
474
500
  gl .bindBuffer (gl .ARRAY_BUFFER, this .texCoordBuffers [0]);
475
501
  gl .bufferData (gl .ARRAY_BUFFER, this .texCoordArray, gl .STATIC_DRAW);
476
502
 
503
+ this .testWireframe = true;
477
504
  this .primitiveMode = gl .TRIANGLES;
478
505
  this .texCoordCount = 4;
479
506
  this .vertexCount = 6;
507
+
508
+ this .geometryContext .geometryType = 2;
480
509
  break;
481
510
  }
482
511
  case GEOMETRY:
@@ -499,28 +528,20 @@ function (Fields,
499
528
  {
500
529
  case POINT:
501
530
  {
502
- this .shaderGeometryType = 0;
503
- this .shaderNode = this .getBrowser () .getPointShader ();
531
+ this .shaderNode = this .getBrowser () .getPointShader ();
504
532
  break;
505
533
  }
506
534
  case LINE:
507
535
  {
508
- this .shaderGeometryType = 1;
509
- this .shaderNode = this .getBrowser () .getLineShader ();
536
+ this .shaderNode = this .getBrowser () .getLineShader ();
510
537
  break;
511
538
  }
512
539
  case TRIANGLE:
513
540
  case QUAD:
514
541
  case SPRITE:
515
- {
516
- this .shaderGeometryType = 3;
517
- this .shaderNode = this .getBrowser () .getDefaultShader ();
518
- break;
519
- }
520
542
  case GEOMETRY:
521
543
  {
522
- this .shaderGeometryType = 3; // determine from geometry node.
523
- this .shaderNode = this .getBrowser () .getDefaultShader ();
544
+ this .shaderNode = null;
524
545
  break;
525
546
  }
526
547
  }
@@ -540,12 +561,13 @@ function (Fields,
540
561
  for (var i = particles .length, length = maxParticles; i < length; ++ i)
541
562
  {
542
563
  particles [i] = {
564
+ id: i,
543
565
  life: 1,
544
566
  lifetime: -1,
545
567
  elapsedTime: 0,
546
568
  position: new Vector3 (0, 0, 0),
547
569
  velocity: new Vector3 (0, 0, 0),
548
- color: new Vector4 (1, 1, 1, 1),
570
+ color: new Vector4 (1, 1, 1, 1),
549
571
  distance: 0,
550
572
  };
551
573
  }
@@ -572,7 +594,7 @@ function (Fields,
572
594
 
573
595
  if (! this .emitterNode)
574
596
  this .emitterNode = this .getBrowser () .getDefaultEmitter ();
575
-
597
+
576
598
  this .createParticles = this .createParticles_ .getValue ();
577
599
  },
578
600
  set_physics__: function ()
@@ -675,7 +697,7 @@ function (Fields,
675
697
 
676
698
  colorRamp .length = length;
677
699
 
678
- this .colorMaterial = Boolean (colorKeys .length && this .colorRampNode);
700
+ this .geometryContext .colorMaterial = !! (colorKeys .length && this .colorRampNode);
679
701
  },
680
702
  set_texCoordRamp__: function ()
681
703
  {
@@ -709,7 +731,7 @@ function (Fields,
709
731
 
710
732
  texCoordRamp .length = length;
711
733
 
712
- this .texCoordAnim = Boolean (texCoordKeys .length && this .texCoordRampNode);
734
+ this .texCoordAnim = !! (texCoordKeys .length && this .texCoordRampNode);
713
735
  },
714
736
  intersectsBox: function (box, clipPlanes)
715
737
  {
@@ -735,14 +757,14 @@ function (Fields,
735
757
  var
736
758
  now = performance .now () / 1000,
737
759
  particleLifetime = this .particleLifetime + this .particleLifetime * this .lifetimeVariation;
738
-
760
+
739
761
  if (this .numParticles === 0 || now - this .creationTime > particleLifetime)
740
762
  {
741
763
  this .creationTime = now;
742
764
  this .numParticles = this .maxParticles;
743
765
  this .createParticles = this .createParticles_ .getValue ();
744
766
 
745
- deltaTime = Number .POSITIVE_INFINITY;
767
+ deltaTime = Number .POSITIVE_INFINITY;
746
768
  }
747
769
  else
748
770
  this .createParticles = false;
@@ -754,7 +776,7 @@ function (Fields,
754
776
  var
755
777
  now = performance .now () / 1000,
756
778
  newParticles = Math .max (0, Math .floor ((now - this .creationTime) * this .maxParticles / this .particleLifetime));
757
-
779
+
758
780
  if (newParticles)
759
781
  this .creationTime = now;
760
782
 
@@ -839,20 +861,20 @@ function (Fields,
839
861
 
840
862
  // Colors
841
863
 
842
- if (this .colorMaterial)
864
+ if (this .geometryContext .colorMaterial)
843
865
  {
844
866
  for (var i = 0; i < numParticles; ++ i)
845
867
  {
846
868
  var
847
869
  color = particles [i] .color,
848
870
  i4 = i * 4;
849
-
871
+
850
872
  colorArray [i4] = color .x;
851
873
  colorArray [i4 + 1] = color .y;
852
874
  colorArray [i4 + 2] = color .z;
853
875
  colorArray [i4 + 3] = color .w;
854
876
  }
855
-
877
+
856
878
  gl .bindBuffer (gl .ARRAY_BUFFER, this .colorBuffer);
857
879
  gl .bufferData (gl .ARRAY_BUFFER, this .colorArray, gl .STATIC_DRAW);
858
880
  }
@@ -903,14 +925,14 @@ function (Fields,
903
925
 
904
926
  // Colors
905
927
 
906
- if (this .colorMaterial)
928
+ if (this .geometryContext .colorMaterial)
907
929
  {
908
930
  for (var i = 0; i < numParticles; ++ i)
909
931
  {
910
932
  var
911
933
  color = particles [i] .color,
912
934
  i8 = i * 8;
913
-
935
+
914
936
  colorArray [i8] = color .x;
915
937
  colorArray [i8 + 1] = color .y;
916
938
  colorArray [i8 + 2] = color .z;
@@ -921,7 +943,7 @@ function (Fields,
921
943
  colorArray [i8 + 6] = color .z;
922
944
  colorArray [i8 + 7] = color .w;
923
945
  }
924
-
946
+
925
947
  gl .bindBuffer (gl .ARRAY_BUFFER, this .colorBuffer);
926
948
  gl .bufferData (gl .ARRAY_BUFFER, this .colorArray, gl .STATIC_DRAW);
927
949
  }
@@ -961,7 +983,7 @@ function (Fields,
961
983
  vertexArray [i8] = x - normal .x;
962
984
  vertexArray [i8 + 1] = y - normal .y;
963
985
  vertexArray [i8 + 2] = z - normal .z;
964
-
986
+
965
987
  vertexArray [i8 + 4] = x + normal .x;
966
988
  vertexArray [i8 + 5] = y + normal .y;
967
989
  vertexArray [i8 + 6] = z + normal .z;
@@ -994,9 +1016,9 @@ function (Fields,
994
1016
  vertexArray = this .vertexArray,
995
1017
  sx1_2 = this .particleSize_ .x / 2,
996
1018
  sy1_2 = this .particleSize_ .y / 2;
997
-
1019
+
998
1020
  // Sort particles
999
-
1021
+
1000
1022
  // if (this .sortParticles) // always false
1001
1023
  // {
1002
1024
  // for (var i = 0; i < numParticles; ++ i)
@@ -1004,167 +1026,167 @@ function (Fields,
1004
1026
  // var particle = particles [i];
1005
1027
  // particle .distance = modelViewMatrix .getDepth (particle .position);
1006
1028
  // }
1007
- //
1029
+ //
1008
1030
  // // Expensisive function!!!
1009
1031
  // this .particleSorter .sort (0, numParticles);
1010
1032
  // }
1011
-
1033
+
1012
1034
  // Colors
1013
-
1035
+
1014
1036
  if (! modelViewMatrix) // if called from animateParticles
1015
1037
  {
1016
- if (this .colorMaterial)
1038
+ if (this .geometryContext .colorMaterial)
1017
1039
  {
1018
1040
  for (var i = 0; i < maxParticles; ++ i)
1019
1041
  {
1020
1042
  var
1021
1043
  color = particles [i] .color,
1022
1044
  i24 = i * 24;
1023
-
1045
+
1024
1046
  // p4 ------ p3
1025
1047
  // | / |
1026
1048
  // | / |
1027
1049
  // | / |
1028
1050
  // | / |
1029
1051
  // p1 ------ p2
1030
-
1052
+
1031
1053
  // p1, p2, p3; p1, p3, p4
1032
1054
  colorArray [i24] = colorArray [i24 + 4] = colorArray [i24 + 8] = colorArray [i24 + 12] = colorArray [i24 + 16] = colorArray [i24 + 20] = color .x;
1033
1055
  colorArray [i24 + 1] = colorArray [i24 + 5] = colorArray [i24 + 9] = colorArray [i24 + 13] = colorArray [i24 + 17] = colorArray [i24 + 21] = color .y;
1034
1056
  colorArray [i24 + 2] = colorArray [i24 + 6] = colorArray [i24 + 10] = colorArray [i24 + 14] = colorArray [i24 + 18] = colorArray [i24 + 22] = color .z;
1035
1057
  colorArray [i24 + 3] = colorArray [i24 + 7] = colorArray [i24 + 11] = colorArray [i24 + 15] = colorArray [i24 + 19] = colorArray [i24 + 23] = color .w;
1036
1058
  }
1037
-
1059
+
1038
1060
  gl .bindBuffer (gl .ARRAY_BUFFER, this .colorBuffer);
1039
1061
  gl .bufferData (gl .ARRAY_BUFFER, this .colorArray, gl .STATIC_DRAW);
1040
1062
  }
1041
-
1063
+
1042
1064
  if (this .texCoordAnim && this .texCoordArray .length)
1043
1065
  {
1044
1066
  var
1045
1067
  texCoordKeys = this .texCoordKeys,
1046
1068
  texCoordRamp = this .texCoordRamp;
1047
-
1069
+
1048
1070
  var
1049
1071
  length = texCoordKeys .length,
1050
1072
  index0 = 0;
1051
-
1073
+
1052
1074
  for (var i = 0; i < maxParticles; ++ i)
1053
1075
  {
1054
1076
  // Determine index0.
1055
-
1077
+
1056
1078
  var
1057
1079
  particle = particles [i],
1058
1080
  fraction = particle .elapsedTime / particle .lifetime;
1059
-
1081
+
1060
1082
  if (length == 1 || fraction <= texCoordKeys [0])
1061
1083
  {
1062
1084
  index0 = 0;
1063
1085
  }
1064
- else if (fraction >= texCoordKeys [length - 1])
1086
+ else if (fraction >= texCoordKeys .at (-1))
1065
1087
  {
1066
1088
  index0 = length - 2;
1067
1089
  }
1068
1090
  else
1069
1091
  {
1070
1092
  var index = Algorithm .upperBound (texCoordKeys, 0, length, fraction, Algorithm .less);
1071
-
1093
+
1072
1094
  if (index < length)
1073
1095
  index0 = index - 1;
1074
1096
  else
1075
1097
  index0 = 0;
1076
1098
  }
1077
-
1099
+
1078
1100
  // Set texCoord.
1079
-
1101
+
1080
1102
  index0 *= this .texCoordCount;
1081
-
1103
+
1082
1104
  var
1083
1105
  texCoord1 = texCoordRamp [index0],
1084
1106
  texCoord2 = texCoordRamp [index0 + 1],
1085
1107
  texCoord3 = texCoordRamp [index0 + 2],
1086
1108
  texCoord4 = texCoordRamp [index0 + 3],
1087
1109
  i24 = i * 24;
1088
-
1110
+
1089
1111
  // p4 ------ p3
1090
1112
  // | / |
1091
1113
  // | / |
1092
1114
  // | / |
1093
1115
  // | / |
1094
1116
  // p1 ------ p2
1095
-
1117
+
1096
1118
  // p1
1097
1119
  texCoordArray [i24] = texCoordArray [i24 + 12] = texCoord1 .x;
1098
1120
  texCoordArray [i24 + 1] = texCoordArray [i24 + 13] = texCoord1 .y;
1099
1121
  texCoordArray [i24 + 2] = texCoordArray [i24 + 14] = texCoord1 .z;
1100
1122
  texCoordArray [i24 + 3] = texCoordArray [i24 + 15] = texCoord1 .w;
1101
-
1123
+
1102
1124
  // p2
1103
1125
  texCoordArray [i24 + 4] = texCoord2 .x;
1104
1126
  texCoordArray [i24 + 5] = texCoord2 .y;
1105
1127
  texCoordArray [i24 + 6] = texCoord2 .z;
1106
1128
  texCoordArray [i24 + 7] = texCoord2 .w;
1107
-
1129
+
1108
1130
  // p3
1109
1131
  texCoordArray [i24 + 8] = texCoordArray [i24 + 16] = texCoord3 .x;
1110
1132
  texCoordArray [i24 + 9] = texCoordArray [i24 + 17] = texCoord3 .y;
1111
1133
  texCoordArray [i24 + 10] = texCoordArray [i24 + 18] = texCoord3 .z;
1112
1134
  texCoordArray [i24 + 11] = texCoordArray [i24 + 19] = texCoord3 .w;
1113
-
1135
+
1114
1136
  // p4
1115
1137
  texCoordArray [i24 + 20] = texCoord4 .x;
1116
1138
  texCoordArray [i24 + 21] = texCoord4 .y;
1117
1139
  texCoordArray [i24 + 22] = texCoord4 .z;
1118
1140
  texCoordArray [i24 + 23] = texCoord4 .w;
1119
1141
  }
1120
-
1142
+
1121
1143
  gl .bindBuffer (gl .ARRAY_BUFFER, this .texCoordBuffers [0]);
1122
1144
  gl .bufferData (gl .ARRAY_BUFFER, this .texCoordArray, gl .STATIC_DRAW);
1123
1145
  }
1124
1146
  }
1125
1147
 
1126
1148
  // Vertices
1127
-
1149
+
1128
1150
  if (this .geometryType === SPRITE)
1129
1151
  {
1130
1152
  if (modelViewMatrix) // if called from depth or draw
1131
1153
  {
1132
1154
  // Normals
1133
-
1155
+
1134
1156
  var rotation = this .getScreenAlignedRotation (modelViewMatrix);
1135
-
1157
+
1136
1158
  normal
1137
1159
  .set (rotation [0], rotation [1], rotation [2])
1138
1160
  .cross (vector .set (rotation [3], rotation [4], rotation [5]))
1139
1161
  .normalize ();
1140
-
1162
+
1141
1163
  var
1142
1164
  nx = normal .x,
1143
1165
  ny = normal .y,
1144
1166
  nz = normal .z;
1145
-
1167
+
1146
1168
  for (var i = 0, length = 6 * 3 * maxParticles; i < length; i += 3)
1147
1169
  {
1148
1170
  normalArray [i] = nx;
1149
1171
  normalArray [i + 1] = ny;
1150
1172
  normalArray [i + 2] = nz;
1151
1173
  }
1152
-
1174
+
1153
1175
  gl .bindBuffer (gl .ARRAY_BUFFER, this .normalBuffer);
1154
1176
  gl .bufferData (gl .ARRAY_BUFFER, this .normalArray, gl .STATIC_DRAW);
1155
-
1177
+
1156
1178
  // Vertices
1157
-
1179
+
1158
1180
  s1 .set (-sx1_2, -sy1_2, 0);
1159
1181
  s2 .set ( sx1_2, -sy1_2, 0);
1160
1182
  s3 .set ( sx1_2, sy1_2, 0);
1161
1183
  s4 .set (-sx1_2, sy1_2, 0);
1162
-
1184
+
1163
1185
  rotation .multVecMatrix (s1);
1164
1186
  rotation .multVecMatrix (s2);
1165
1187
  rotation .multVecMatrix (s3);
1166
1188
  rotation .multVecMatrix (s4);
1167
-
1189
+
1168
1190
  for (var i = 0; i < numParticles; ++ i)
1169
1191
  {
1170
1192
  var
@@ -1176,7 +1198,7 @@ function (Fields,
1176
1198
  i6 = i * 6,
1177
1199
  i18 = i * 18,
1178
1200
  i24 = i * 24;
1179
-
1201
+
1180
1202
  // p4 ------ p3
1181
1203
  // | / |
1182
1204
  // | / |
@@ -1196,23 +1218,23 @@ function (Fields,
1196
1218
  vertexArray [i24] = vertexArray [i24 + 12] = x + s1 .x;
1197
1219
  vertexArray [i24 + 1] = vertexArray [i24 + 13] = y + s1 .y;
1198
1220
  vertexArray [i24 + 2] = vertexArray [i24 + 14] = z + s1 .z;
1199
-
1221
+
1200
1222
  // p2
1201
1223
  vertexArray [i24 + 4] = x + s2 .x;
1202
1224
  vertexArray [i24 + 5] = y + s2 .y;
1203
1225
  vertexArray [i24 + 6] = z + s2 .z;
1204
-
1226
+
1205
1227
  // p3
1206
1228
  vertexArray [i24 + 8] = vertexArray [i24 + 16] = x + s3 .x;
1207
1229
  vertexArray [i24 + 9] = vertexArray [i24 + 17] = y + s3 .y;
1208
1230
  vertexArray [i24 + 10] = vertexArray [i24 + 18] = z + s3 .z;
1209
-
1231
+
1210
1232
  // p4
1211
1233
  vertexArray [i24 + 20] = x + s4 .x;
1212
1234
  vertexArray [i24 + 21] = y + s4 .y;
1213
1235
  vertexArray [i24 + 22] = z + s4 .z;
1214
1236
  }
1215
-
1237
+
1216
1238
  gl .bindBuffer (gl .ARRAY_BUFFER, this .positionBuffer);
1217
1239
  gl .bufferData (gl .ARRAY_BUFFER, this .positionArray, gl .STATIC_DRAW);
1218
1240
  gl .bindBuffer (gl .ARRAY_BUFFER, this .elapsedTimeBuffer);
@@ -1238,7 +1260,7 @@ function (Fields,
1238
1260
  i6 = i * 6,
1239
1261
  i18 = i * 18,
1240
1262
  i24 = i * 24;
1241
-
1263
+
1242
1264
  // p4 ------ p3
1243
1265
  // | / |
1244
1266
  // | / |
@@ -1252,28 +1274,28 @@ function (Fields,
1252
1274
 
1253
1275
  elapsedTimeArray [i6] = elapsedTimeArray [i6 + 1] = elapsedTimeArray [i6 + 2] = elapsedTimeArray [i6 + 3] = elapsedTimeArray [i6 + 4] = elapsedTimeArray [i6 + 5] = elapsedTime;
1254
1276
  lifeArray [i6] = lifeArray [i6 + 1] = lifeArray [i6 + 2] = lifeArray [i6 + 3] = lifeArray [i6 + 4] = lifeArray [i6 + 5] = particles [i] .life;
1255
-
1277
+
1256
1278
  // p1
1257
1279
  vertexArray [i24] = vertexArray [i24 + 12] = x - sx1_2;
1258
1280
  vertexArray [i24 + 1] = vertexArray [i24 + 13] = y - sy1_2;
1259
1281
  vertexArray [i24 + 2] = vertexArray [i24 + 14] = z;
1260
-
1282
+
1261
1283
  // p2
1262
1284
  vertexArray [i24 + 4] = x + sx1_2;
1263
1285
  vertexArray [i24 + 5] = y - sy1_2;
1264
1286
  vertexArray [i24 + 6] = z;
1265
-
1287
+
1266
1288
  // p3
1267
1289
  vertexArray [i24 + 8] = vertexArray [i24 + 16] = x + sx1_2;
1268
1290
  vertexArray [i24 + 9] = vertexArray [i24 + 17] = y + sy1_2;
1269
1291
  vertexArray [i24 + 10] = vertexArray [i24 + 18] = z;
1270
-
1292
+
1271
1293
  // p4
1272
1294
  vertexArray [i24 + 20] = x - sx1_2;
1273
1295
  vertexArray [i24 + 21] = y + sy1_2;
1274
1296
  vertexArray [i24 + 22] = z;
1275
1297
  }
1276
-
1298
+
1277
1299
  gl .bindBuffer (gl .ARRAY_BUFFER, this .positionBuffer);
1278
1300
  gl .bufferData (gl .ARRAY_BUFFER, this .positionArray, gl .STATIC_DRAW);
1279
1301
  gl .bindBuffer (gl .ARRAY_BUFFER, this .elapsedTimeBuffer);
@@ -1301,14 +1323,20 @@ function (Fields,
1301
1323
  {
1302
1324
  break;
1303
1325
  }
1326
+ case TraverseType .PICKING:
1327
+ {
1328
+ break;
1329
+ }
1304
1330
  case TraverseType .COLLISION:
1305
1331
  {
1306
1332
  // TODO: to be implemented.
1307
1333
  break;
1308
1334
  }
1309
- case TraverseType .DEPTH:
1335
+ case TraverseType .SHADOW:
1310
1336
  {
1311
- renderObject .addDepthShape (this);
1337
+ if (this .castShadow_ .getValue ())
1338
+ renderObject .addDepthShape (this);
1339
+
1312
1340
  break;
1313
1341
  }
1314
1342
  case TraverseType .DISPLAY:
@@ -1346,20 +1374,23 @@ function (Fields,
1346
1374
  if (this .numParticles <= 0)
1347
1375
  return;
1348
1376
 
1349
- // Setup vertex attributes.
1377
+ if (shaderNode .getValid ())
1378
+ {
1379
+ // Setup vertex attributes.
1350
1380
 
1351
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleId", this .idBuffer, 1);
1352
- shaderNode .enableFloatAttrib (gl, "x3d_ParticlePosition", this .positionBuffer, 3);
1353
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleElapsedTime", this .elapsedTimeBuffer, 1);
1354
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleLife", this .lifeBuffer, 1);
1355
- shaderNode .enableVertexAttribute (gl, this .vertexBuffer);
1381
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleId", this .idBuffer, 1);
1382
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticlePosition", this .positionBuffer, 3);
1383
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleElapsedTime", this .elapsedTimeBuffer, 1);
1384
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleLife", this .lifeBuffer, 1);
1385
+ shaderNode .enableVertexAttribute (gl, this .vertexBuffer);
1356
1386
 
1357
- gl .drawArrays (this .primitiveMode, 0, this .numParticles * this .vertexCount);
1387
+ gl .drawArrays (this .primitiveMode, 0, this .numParticles * this .vertexCount);
1358
1388
 
1359
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleId");
1360
- shaderNode .disableFloatAttrib (gl, "x3d_ParticlePosition");
1361
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleElapsedTime");
1362
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleLife");
1389
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleId");
1390
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticlePosition");
1391
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleElapsedTime");
1392
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleLife");
1393
+ }
1363
1394
  }
1364
1395
  },
1365
1396
  display: function (gl, context)
@@ -1369,10 +1400,6 @@ function (Fields,
1369
1400
  if (this .numParticles <= 0)
1370
1401
  return;
1371
1402
 
1372
- // Traverse appearance before everything.
1373
-
1374
- this .getAppearance () .enable (gl, context);
1375
-
1376
1403
  // Update geometry if SPRITE.
1377
1404
 
1378
1405
  this .updateGeometry (context .modelViewMatrix);
@@ -1381,92 +1408,83 @@ function (Fields,
1381
1408
 
1382
1409
  if (this .geometryType === GEOMETRY)
1383
1410
  {
1384
- var geometryNode = this .getGeometry ();
1411
+ const geometryNode = this .getGeometry ();
1385
1412
 
1386
1413
  if (geometryNode)
1387
1414
  geometryNode .displayParticles (gl, context, this .particles, this .numParticles);
1388
1415
  }
1389
1416
  else
1390
1417
  {
1391
- var
1392
- browser = context .renderer .getBrowser (),
1393
- shaderNode = context .shaderNode;
1394
-
1395
- if (shaderNode === browser .getDefaultShader ())
1396
- shaderNode = this .shaderNode;
1397
-
1418
+ const
1419
+ appearanceNode = this .getAppearance (),
1420
+ shaderNode = appearanceNode .shaderNode || this .shaderNode || appearanceNode .materialNode .getShader (context .browser, context .shadow);
1421
+
1398
1422
  // Setup shader.
1399
-
1400
- context .geometryType = this .shaderGeometryType;
1401
- context .colorMaterial = this .colorMaterial;
1402
1423
 
1403
- shaderNode .enable (gl);
1404
- shaderNode .setLocalUniforms (gl, context);
1405
-
1406
- // Setup vertex attributes.
1424
+ if (shaderNode .getValid ())
1425
+ {
1426
+ context .geometryContext = this .geometryContext;
1407
1427
 
1408
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleId", this .idBuffer, 1);
1409
- shaderNode .enableFloatAttrib (gl, "x3d_ParticlePosition", this .positionBuffer, 3);
1410
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleElapsedTime", this .elapsedTimeBuffer, 1);
1411
- shaderNode .enableFloatAttrib (gl, "x3d_ParticleLife", this .lifeBuffer, 1);
1428
+ const blendModeNode = appearanceNode .blendModeNode;
1412
1429
 
1413
- if (this .colorMaterial)
1414
- shaderNode .enableColorAttribute (gl, this .colorBuffer);
1415
-
1416
- if (this .texCoordArray .length)
1417
- shaderNode .enableTexCoordAttribute (gl, this .texCoordBuffers);
1418
-
1419
- if (this .normalArray .length)
1420
- shaderNode .enableNormalAttribute (gl, this .normalBuffer);
1421
-
1422
- shaderNode .enableVertexAttribute (gl, this .vertexBuffer);
1423
-
1424
- var testWireframe = false;
1425
-
1426
- switch (this .geometryType)
1427
- {
1428
- case POINT:
1429
- case LINE:
1430
- break;
1431
- case TRIANGLE:
1432
- case QUAD:
1433
- case SPRITE:
1434
- testWireframe = true;
1435
- break;
1436
- case GEOMETRY:
1437
- break;
1438
- }
1439
-
1440
- if (shaderNode .wireframe && testWireframe)
1441
- {
1442
- // Wireframes are always solid so only one drawing call is needed.
1443
-
1444
- for (var i = 0, length = this .numParticles * this .vertexCount; i < length; i += 3)
1445
- gl .drawArrays (shaderNode .primitiveMode, i, 3);
1446
- }
1447
- else
1448
- {
1449
- var positiveScale = Matrix4 .prototype .determinant3 .call (context .modelViewMatrix) > 0;
1450
-
1451
- gl .frontFace (positiveScale ? gl .CCW : gl .CW);
1452
- gl .enable (gl .CULL_FACE);
1453
- gl .cullFace (gl .BACK);
1430
+ if (blendModeNode)
1431
+ blendModeNode .enable (gl);
1454
1432
 
1455
- gl .drawArrays (this .primitiveMode, 0, this .numParticles * this .vertexCount);
1456
- }
1457
-
1458
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleId");
1459
- shaderNode .disableFloatAttrib (gl, "x3d_ParticlePosition");
1460
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleElapsedTime");
1461
- shaderNode .disableFloatAttrib (gl, "x3d_ParticleLife");
1433
+ shaderNode .enable (gl);
1434
+ shaderNode .setLocalUniforms (gl, context);
1462
1435
 
1463
- shaderNode .disableColorAttribute (gl);
1464
- shaderNode .disableTexCoordAttribute (gl);
1465
- shaderNode .disableNormalAttribute (gl);
1466
- shaderNode .disable (gl);
1467
- }
1436
+ // Setup vertex attributes.
1437
+
1438
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleId", this .idBuffer, 1);
1439
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticlePosition", this .positionBuffer, 3);
1440
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleElapsedTime", this .elapsedTimeBuffer, 1);
1441
+ shaderNode .enableFloatAttrib (gl, "x3d_ParticleLife", this .lifeBuffer, 1);
1442
+
1443
+ if (this .geometryContext .colorMaterial)
1444
+ shaderNode .enableColorAttribute (gl, this .colorBuffer);
1445
+
1446
+ if (this .texCoordArray .length)
1447
+ shaderNode .enableTexCoordAttribute (gl, this .texCoordBuffers);
1448
+
1449
+ if (this .normalArray .length)
1450
+ shaderNode .enableNormalAttribute (gl, this .normalBuffer);
1451
+
1452
+ shaderNode .enableVertexAttribute (gl, this .vertexBuffer);
1453
+
1454
+ if (shaderNode .wireframe && this .testWireframe)
1455
+ {
1456
+ // Wireframes are always solid so only one drawing call is needed.
1468
1457
 
1469
- this .getAppearance () .disable (gl, context);
1458
+ for (var i = 0, length = this .numParticles * this .vertexCount; i < length; i += 3)
1459
+ gl .drawArrays (shaderNode .primitiveMode, i, 3);
1460
+ }
1461
+ else
1462
+ {
1463
+ const positiveScale = Matrix4 .prototype .determinant3 .call (context .modelViewMatrix) > 0;
1464
+
1465
+ gl .frontFace (positiveScale ? gl .CCW : gl .CW);
1466
+ gl .enable (gl .CULL_FACE);
1467
+ gl .cullFace (gl .BACK);
1468
+
1469
+ gl .drawArrays (this .primitiveMode, 0, this .numParticles * this .vertexCount);
1470
+ }
1471
+
1472
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleId");
1473
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticlePosition");
1474
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleElapsedTime");
1475
+ shaderNode .disableFloatAttrib (gl, "x3d_ParticleLife");
1476
+
1477
+ shaderNode .disableColorAttribute (gl);
1478
+ shaderNode .disableTexCoordAttribute (gl);
1479
+ shaderNode .disableNormalAttribute (gl);
1480
+ shaderNode .disable (gl);
1481
+
1482
+ if (blendModeNode)
1483
+ blendModeNode .disable (gl);
1484
+
1485
+ context .geometryContext = null;
1486
+ }
1487
+ }
1470
1488
  }
1471
1489
  catch (error)
1472
1490
  {
@@ -1477,20 +1495,20 @@ function (Fields,
1477
1495
  getScreenAlignedRotation: function (modelViewMatrix)
1478
1496
  {
1479
1497
  invModelViewMatrix .assign (modelViewMatrix) .inverse ();
1480
-
1498
+
1481
1499
  invModelViewMatrix .multDirMatrix (billboardToScreen .assign (Vector3 .zAxis));
1482
1500
  invModelViewMatrix .multDirMatrix (viewerYAxis .assign (Vector3 .yAxis));
1483
-
1501
+
1484
1502
  x .assign (viewerYAxis) .cross (billboardToScreen);
1485
1503
  y .assign (billboardToScreen) .cross (x);
1486
1504
  var z = billboardToScreen;
1487
-
1505
+
1488
1506
  // Compose rotation
1489
-
1507
+
1490
1508
  x .normalize ();
1491
1509
  y .normalize ();
1492
1510
  z .normalize ();
1493
-
1511
+
1494
1512
  return this .rotation .set (x .x, x .y, x .z,
1495
1513
  y .x, y .y, y .z,
1496
1514
  z .x, z .y, z .z);
@@ -1499,5 +1517,3 @@ function (Fields,
1499
1517
 
1500
1518
  return ParticleSystem;
1501
1519
  });
1502
-
1503
-