x_ite 4.0.5 → 4.7.5

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