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
@@ -0,0 +1,2008 @@
1
+ (function () {
2
+
3
+ var
4
+ define = X3D .define,
5
+ require = X3D .require,
6
+ module = { };
7
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
8
+ *******************************************************************************
9
+ *
10
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
11
+ *
12
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
13
+ *
14
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
15
+ *
16
+ * The copyright notice above does not evidence any actual of intended
17
+ * publication of such source code, and is an unpublished work by create3000.
18
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
19
+ * create3000.
20
+ *
21
+ * No permission is granted to copy, distribute, or create derivative works from
22
+ * the contents of this software, in whole or in part, without the prior written
23
+ * permission of create3000.
24
+ *
25
+ * NON-MILITARY USE ONLY
26
+ *
27
+ * All create3000 software are effectively free software with a non-military use
28
+ * restriction. It is free. Well commented source is provided. You may reuse the
29
+ * source in any way you please with the exception anything that uses it must be
30
+ * marked to indicate is contains 'non-military use only' components.
31
+ *
32
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33
+ *
34
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
35
+ *
36
+ * This file is part of the X_ITE Project.
37
+ *
38
+ * X_ITE is free software: you can redistribute it and/or modify it under the
39
+ * terms of the GNU General Public License version 3 only, as published by the
40
+ * Free Software Foundation.
41
+ *
42
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
43
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
44
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
45
+ * details (a copy is included in the LICENSE file that accompanied this code).
46
+ *
47
+ * You should have received a copy of the GNU General Public License version 3
48
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
49
+ * copy of the GPLv3 License.
50
+ *
51
+ * For Silvio, Joy and Adi.
52
+ *
53
+ ******************************************************************************/
54
+
55
+
56
+ define ('x_ite/Browser/Layout/X3DLayoutContext',[
57
+ "jquery",
58
+ "x_ite/Components/Texturing/TextureProperties",
59
+ ],
60
+ function ($,
61
+ TextureProperties)
62
+ {
63
+ "use strict";
64
+
65
+ function X3DLayoutContext () { }
66
+
67
+ X3DLayoutContext .prototype =
68
+ {
69
+ getScreenTextureProperties: function ()
70
+ {
71
+ this .screenTextureProperties = new TextureProperties (this .getPrivateScene ());
72
+
73
+ this .screenTextureProperties .boundaryModeS_ = "CLAMP";
74
+ this .screenTextureProperties .boundaryModeT_ = "CLAMP";
75
+ this .screenTextureProperties .boundaryModeR_ = "CLAMP";
76
+ this .screenTextureProperties .minificationFilter_ = "NEAREST";
77
+ this .screenTextureProperties .magnificationFilter_ = "NEAREST";
78
+ this .screenTextureProperties .generateMipMaps_ = false;
79
+
80
+ this .screenTextureProperties .setup ();
81
+
82
+ this .getScreenTextureProperties = function () { return this .screenTextureProperties; };
83
+
84
+ return this .screenTextureProperties;
85
+ },
86
+ getPointSize: function ()
87
+ {
88
+ if (this .pointSize === undefined)
89
+ {
90
+ var div = $("<div></div>") .css ("height", "1in") .css ("display", "none");
91
+ this .pointSize = div .appendTo ($("body")) .height () / 72;
92
+ div .remove ();
93
+ }
94
+
95
+ return this .pointSize;
96
+ },
97
+ };
98
+
99
+ return X3DLayoutContext;
100
+ });
101
+
102
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
103
+ *******************************************************************************
104
+ *
105
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
106
+ *
107
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
108
+ *
109
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
110
+ *
111
+ * The copyright notice above does not evidence any actual of intended
112
+ * publication of such source code, and is an unpublished work by create3000.
113
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
114
+ * create3000.
115
+ *
116
+ * No permission is granted to copy, distribute, or create derivative works from
117
+ * the contents of this software, in whole or in part, without the prior written
118
+ * permission of create3000.
119
+ *
120
+ * NON-MILITARY USE ONLY
121
+ *
122
+ * All create3000 software are effectively free software with a non-military use
123
+ * restriction. It is free. Well commented source is provided. You may reuse the
124
+ * source in any way you please with the exception anything that uses it must be
125
+ * marked to indicate is contains 'non-military use only' components.
126
+ *
127
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
128
+ *
129
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
130
+ *
131
+ * This file is part of the X_ITE Project.
132
+ *
133
+ * X_ITE is free software: you can redistribute it and/or modify it under the
134
+ * terms of the GNU General Public License version 3 only, as published by the
135
+ * Free Software Foundation.
136
+ *
137
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
138
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
139
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
140
+ * details (a copy is included in the LICENSE file that accompanied this code).
141
+ *
142
+ * You should have received a copy of the GNU General Public License version 3
143
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
144
+ * copy of the GPLv3 License.
145
+ *
146
+ * For Silvio, Joy and Adi.
147
+ *
148
+ ******************************************************************************/
149
+
150
+
151
+ define ('x_ite/Components/Layout/X3DLayoutNode',[
152
+ "x_ite/Components/Core/X3DChildNode",
153
+ "x_ite/Bits/X3DConstants",
154
+ ],
155
+ function (X3DChildNode,
156
+ X3DConstants)
157
+ {
158
+ "use strict";
159
+
160
+ function X3DLayoutNode (executionContext)
161
+ {
162
+ X3DChildNode .call (this, executionContext);
163
+
164
+ this .addType (X3DConstants .X3DLayoutNode);
165
+ }
166
+
167
+ X3DLayoutNode .prototype = Object .assign (Object .create (X3DChildNode .prototype),
168
+ {
169
+ constructor: X3DLayoutNode,
170
+ });
171
+
172
+ return X3DLayoutNode;
173
+ });
174
+
175
+
176
+
177
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
178
+ *******************************************************************************
179
+ *
180
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
181
+ *
182
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
183
+ *
184
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
185
+ *
186
+ * The copyright notice above does not evidence any actual of intended
187
+ * publication of such source code, and is an unpublished work by create3000.
188
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
189
+ * create3000.
190
+ *
191
+ * No permission is granted to copy, distribute, or create derivative works from
192
+ * the contents of this software, in whole or in part, without the prior written
193
+ * permission of create3000.
194
+ *
195
+ * NON-MILITARY USE ONLY
196
+ *
197
+ * All create3000 software are effectively free software with a non-military use
198
+ * restriction. It is free. Well commented source is provided. You may reuse the
199
+ * source in any way you please with the exception anything that uses it must be
200
+ * marked to indicate is contains 'non-military use only' components.
201
+ *
202
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
203
+ *
204
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
205
+ *
206
+ * This file is part of the X_ITE Project.
207
+ *
208
+ * X_ITE is free software: you can redistribute it and/or modify it under the
209
+ * terms of the GNU General Public License version 3 only, as published by the
210
+ * Free Software Foundation.
211
+ *
212
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
213
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
214
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
215
+ * details (a copy is included in the LICENSE file that accompanied this code).
216
+ *
217
+ * You should have received a copy of the GNU General Public License version 3
218
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
219
+ * copy of the GPLv3 License.
220
+ *
221
+ * For Silvio, Joy and Adi.
222
+ *
223
+ ******************************************************************************/
224
+
225
+
226
+ define ('x_ite/Components/Layout/Layout',[
227
+ "x_ite/Fields",
228
+ "x_ite/Basic/X3DFieldDefinition",
229
+ "x_ite/Basic/FieldDefinitionArray",
230
+ "x_ite/Components/Layout/X3DLayoutNode",
231
+ "x_ite/Bits/X3DCast",
232
+ "x_ite/Bits/X3DConstants",
233
+ "standard/Math/Numbers/Vector2",
234
+ "standard/Math/Numbers/Vector3",
235
+ "standard/Math/Numbers/Rotation4",
236
+ "standard/Math/Numbers/Matrix4",
237
+ ],
238
+ function (Fields,
239
+ X3DFieldDefinition,
240
+ FieldDefinitionArray,
241
+ X3DLayoutNode,
242
+ X3DCast,
243
+ X3DConstants,
244
+ Vector2,
245
+ Vector3,
246
+ Rotation4,
247
+ Matrix4)
248
+ {
249
+ "use strict";
250
+
251
+ var
252
+ i = 0,
253
+ LEFT = i++,
254
+ CENTER = i++,
255
+ RIGHT = i++,
256
+ BOTTOM = i++,
257
+ TOP = i++,
258
+ WORLD = i++,
259
+ FRACTION = i++,
260
+ PIXEL = i++,
261
+ NONE = i++,
262
+ STRETCH = i++;
263
+
264
+ function Layout (executionContext)
265
+ {
266
+ X3DLayoutNode .call (this, executionContext);
267
+
268
+ this .addType (X3DConstants .Layout);
269
+
270
+ this .alignX = CENTER;
271
+ this .alignY = CENTER;
272
+ this .offsetUnitX = WORLD;
273
+ this .offsetUnitY = WORLD;
274
+ this .offsetX = 0;
275
+ this .offsetY = 0;
276
+ this .sizeUnitX = WORLD;
277
+ this .sizeUnitY = WORLD;
278
+ this .sizeX = 1;
279
+ this .sizeY = 1;
280
+ this .scaleModeX = NONE;
281
+ this .scaleModeY = NONE;
282
+ this .parent = null;
283
+ this .rectangleCenter = new Vector2 (0, 0);
284
+ this .rectangleSize = new Vector2 (0, 0);
285
+ this .matrix = new Matrix4 ();
286
+ }
287
+
288
+ Layout .prototype = Object .assign (Object .create (X3DLayoutNode .prototype),
289
+ {
290
+ constructor: Layout,
291
+ viewportPixel: new Vector2 (0, 0),
292
+ pixelSize: new Vector2 (0, 0),
293
+ translation: new Vector3 (0, 0, 0),
294
+ offset: new Vector3 (0, 0, 0),
295
+ scale: new Vector3 (1, 1, 1),
296
+ currentTranslation: new Vector3 (0, 0, 0),
297
+ currentRotation: new Rotation4 (0, 0, 1, 0),
298
+ currentScale: new Vector3 (0, 0, 0),
299
+ modelViewMatrix: new Matrix4 (),
300
+ fieldDefinitions: new FieldDefinitionArray ([
301
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
302
+ new X3DFieldDefinition (X3DConstants .inputOutput, "align", new Fields .MFString ("CENTER", "CENTER")),
303
+ new X3DFieldDefinition (X3DConstants .inputOutput, "offsetUnits", new Fields .MFString ("WORLD", "WORLD")),
304
+ new X3DFieldDefinition (X3DConstants .inputOutput, "offset", new Fields .MFFloat (0, 0)),
305
+ new X3DFieldDefinition (X3DConstants .inputOutput, "sizeUnits", new Fields .MFString ("WORLD", "WORLD")),
306
+ new X3DFieldDefinition (X3DConstants .inputOutput, "size", new Fields .MFFloat (1, 1)),
307
+ new X3DFieldDefinition (X3DConstants .inputOutput, "scaleMode", new Fields .MFString ("NONE", "NONE")),
308
+ ]),
309
+ getTypeName: function ()
310
+ {
311
+ return "Layout";
312
+ },
313
+ getComponentName: function ()
314
+ {
315
+ return "Layout";
316
+ },
317
+ getContainerField: function ()
318
+ {
319
+ return "layout";
320
+ },
321
+ initialize: function ()
322
+ {
323
+ X3DLayoutNode .prototype .initialize .call (this);
324
+
325
+ this .align_ .addInterest ("set_align__", this);
326
+ this .offsetUnits_ .addInterest ("set_offsetUnits__", this);
327
+ this .offset_ .addInterest ("set_offset__", this);
328
+ this .sizeUnits_ .addInterest ("set_sizeUnits__", this);
329
+ this .size_ .addInterest ("set_size__", this);
330
+ this .scaleMode_ .addInterest ("set_scaleMode__", this);
331
+
332
+ this .set_align__ ();
333
+ this .set_offsetUnits__ ();
334
+ this .set_offset__ ();
335
+ this .set_sizeUnits__ ();
336
+ this .set_size__ ();
337
+ this .set_scaleMode__ ();
338
+ },
339
+ set_align__: function ()
340
+ {
341
+ // X
342
+
343
+ if (this .align_ .length > 0)
344
+ {
345
+ if (this .align_ [0] === "LEFT")
346
+ this .alignX = LEFT;
347
+
348
+ else if (this .align_ [0] === "RIGHT")
349
+ this .alignX = RIGHT;
350
+
351
+ else
352
+ this .alignX = CENTER;
353
+ }
354
+ else
355
+ this .alignX = CENTER;
356
+
357
+ // Y
358
+
359
+ if (this .align_ .length > 1)
360
+ {
361
+ if (this .align_ [1] === "BOTTOM")
362
+ this .alignY = BOTTOM;
363
+
364
+ else if (this .align_ [1] === "TOP")
365
+ this .alignY = TOP;
366
+
367
+ else
368
+ this .alignY = CENTER;
369
+ }
370
+ else
371
+ this .alignY = CENTER;
372
+ },
373
+ set_offsetUnits__: function ()
374
+ {
375
+ if (this .offsetUnits_ .length > 0)
376
+ {
377
+ // X
378
+
379
+ if (this .offsetUnits_ [0] === "FRACTION")
380
+ this .offsetUnitX = FRACTION;
381
+
382
+ else if (this .offsetUnits_ [0] === "PIXEL")
383
+ this .offsetUnitX = PIXEL;
384
+
385
+ else
386
+ this .offsetUnitX = WORLD;
387
+
388
+ // Y
389
+
390
+ if (this .offsetUnits_ .length > 1)
391
+ {
392
+ if (this .offsetUnits_ [1] === "FRACTION")
393
+ this .offsetUnitY = FRACTION;
394
+
395
+ else if (this .offsetUnits_ [1] === "PIXEL")
396
+ this .offsetUnitY = PIXEL;
397
+
398
+ else
399
+ this .offsetUnitY = WORLD;
400
+ }
401
+ else
402
+ this .offsetUnitY = this .offsetUnitX;
403
+ }
404
+ else
405
+ {
406
+ this .offsetUnitX = WORLD;
407
+ this .offsetUnitY = WORLD;
408
+ }
409
+ },
410
+ set_offset__: function ()
411
+ {
412
+ if (this .offset_ .length > 0)
413
+ {
414
+ // X
415
+
416
+ this .offsetX = this .offset_ [0];
417
+
418
+ // Y
419
+
420
+ if (this .offset_ .length > 1)
421
+ this .offsetY = this .offset_ [1];
422
+
423
+ else
424
+ this .offsetY = offsetX;
425
+ }
426
+ else
427
+ {
428
+ this .offsetX = 0;
429
+ this .offsetY = 0;
430
+ }
431
+ },
432
+ set_sizeUnits__: function ()
433
+ {
434
+ if (this .sizeUnits_ .length > 0)
435
+ {
436
+ // X
437
+
438
+ if (this .sizeUnits_ [0] === "FRACTION")
439
+ this .sizeUnitX = FRACTION;
440
+
441
+ else if (this .sizeUnits_ [0] === "PIXEL")
442
+ this .sizeUnitX = PIXEL;
443
+
444
+ else
445
+ this .sizeUnitX = WORLD;
446
+
447
+ // Y
448
+
449
+ if (this .sizeUnits_ .length > 1)
450
+ {
451
+ if (this .sizeUnits_ [1] === "FRACTION")
452
+ this .sizeUnitY = FRACTION;
453
+
454
+ else if (this .sizeUnits_ [1] === "PIXEL")
455
+ this .sizeUnitY = PIXEL;
456
+
457
+ else
458
+ this .sizeUnitY = WORLD;
459
+ }
460
+ else
461
+ this .sizeUnitY = this .sizeUnitX;
462
+ }
463
+ else
464
+ {
465
+ this .sizeUnitX = WORLD;
466
+ this .sizeUnitY = WORLD;
467
+ }
468
+ },
469
+ set_size__: function ()
470
+ {
471
+ if (this .size_ .length > 0)
472
+ {
473
+ // X
474
+
475
+ this .sizeX = this .size_ [0];
476
+
477
+ // Y
478
+
479
+ if (this .size_ .length > 1)
480
+ this .sizeY = this .size_ [1];
481
+
482
+ else
483
+ this .sizeY = this .sizeX;
484
+ }
485
+ else
486
+ {
487
+ this .sizeX = 0;
488
+ this .sizeY = 0;
489
+ }
490
+ },
491
+ set_scaleMode__: function ()
492
+ {
493
+ if (this .scaleMode_ .length > 0)
494
+ {
495
+ // X
496
+
497
+ if (this .scaleMode_ [0] === "FRACTION")
498
+ this .scaleModeX = FRACTION;
499
+
500
+ else if (this .scaleMode_ [0] === "PIXEL")
501
+ this .scaleModeX = PIXEL;
502
+
503
+ else if (this .scaleMode_ [0] === "STRETCH")
504
+ this .scaleModeX = STRETCH;
505
+
506
+ else
507
+ this .scaleModeX = NONE;
508
+
509
+ // Y
510
+
511
+ if (this .scaleMode_ .length > 1)
512
+ {
513
+ if (this .scaleMode_ [1] === "FRACTION")
514
+ this .scaleModeY = FRACTION;
515
+
516
+ else if (this .scaleMode_ [1] === "PIXEL")
517
+ this .scaleModeY = PIXEL;
518
+
519
+ else if (this .scaleMode_ [1] === "STRETCH")
520
+ this .scaleModeY = STRETCH;
521
+
522
+ else
523
+ this .scaleModeY = NONE;
524
+ }
525
+ else
526
+ this .scaleModeY = this .scaleModeX;
527
+ }
528
+ else
529
+ {
530
+ this .scaleModeX = NONE;
531
+ this .scaleModeY = NONE;
532
+ }
533
+ },
534
+ getRectangleCenter: function ()
535
+ {
536
+ return this .rectangleCenter;
537
+ },
538
+ getRectangleSize: function ()
539
+ {
540
+ return this .rectangleSize;
541
+ },
542
+ getAlignX: function ()
543
+ {
544
+ return this .alignX;
545
+ },
546
+ getAlignY: function ()
547
+ {
548
+ return this .alignY;
549
+ },
550
+ getOffsetUnitX: function ()
551
+ {
552
+ if (this .offsetUnitX === WORLD)
553
+ {
554
+ if (this .parent)
555
+ return this .parent .getOffsetUnitX ();
556
+
557
+ return FRACTION;
558
+ }
559
+
560
+ return this .offsetUnitX;
561
+ },
562
+ getOffsetUnitY: function ()
563
+ {
564
+ if (this .offsetUnitY === WORLD)
565
+ {
566
+ if (this .parent)
567
+ return this .parent .getOffsetUnitY ();
568
+
569
+ return FRACTION;
570
+ }
571
+
572
+ return this .offsetUnitY;
573
+ },
574
+ getOffsetX: function ()
575
+ {
576
+ return this .offsetX;
577
+ },
578
+ getOffsetY: function ()
579
+ {
580
+ return this .offsetY;
581
+ },
582
+ getSizeUnitX: function ()
583
+ {
584
+ if (this .sizeUnitX === WORLD)
585
+ {
586
+ if (this .parent)
587
+ return this .parent .getSizeUnitX ();
588
+
589
+ return FRACTION;
590
+ }
591
+
592
+ return this .sizeUnitX;
593
+ },
594
+ getSizeUnitY: function ()
595
+ {
596
+ if (this .sizeUnitY === WORLD)
597
+ {
598
+ if (this .parent)
599
+ return this .parent .getSizeUnitY ();
600
+
601
+ return FRACTION;
602
+ }
603
+
604
+ return this .sizeUnitY;
605
+ },
606
+ getSizeX: function ()
607
+ {
608
+ return this .sizeX;
609
+ },
610
+ getSizeY: function ()
611
+ {
612
+ return this .sizeY;
613
+ },
614
+ getScaleModeX: function ()
615
+ {
616
+ if (this .parent)
617
+ return this .scaleModeX;
618
+
619
+ if (this .scaleModeX === NONE)
620
+ return FRACTION;
621
+
622
+ return this .scaleModeX;
623
+ },
624
+ getScaleModeY: function ()
625
+ {
626
+ if (this .parent)
627
+ return this .scaleModeY;
628
+
629
+ if (this .scaleModeY === NONE)
630
+ return FRACTION;
631
+
632
+ return this .scaleModeY;
633
+ },
634
+ transform: function (type, renderObject)
635
+ {
636
+ var parent = this .parent = renderObject .getParentLayout ();
637
+
638
+ // Calculate rectangleSize
639
+
640
+ var
641
+ matrix = this .matrix,
642
+ viewpoint = renderObject .getViewpoint (),
643
+ nearValue = renderObject .getNavigationInfo () .getNearValue (), // in meters
644
+ viewport = renderObject .getViewVolume () .getScissor (), // in pixels
645
+ viewportMeter = viewpoint .getViewportSize (viewport, nearValue), // in meters
646
+ viewportPixel = this .viewportPixel, // in pixels
647
+ pixelSize = this .pixelSize, // size of one pixel in meters
648
+ parentRectangleSize = parent ? parent .getRectangleSize () : viewportMeter, // in meters
649
+ rectangleSize = this .rectangleSize,
650
+ rectangleCenter = this .rectangleCenter;
651
+
652
+ viewportPixel .set (viewport [2], viewport [3]); // in pixel
653
+ pixelSize .assign (viewportMeter) .divVec (viewportPixel); // size of one pixel in meter
654
+
655
+ switch (this .getSizeUnitX ())
656
+ {
657
+ case FRACTION:
658
+ rectangleSize .x = this .sizeX * parentRectangleSize .x;
659
+ break;
660
+ case PIXEL:
661
+ rectangleSize .x = this .sizeX * pixelSize .x;
662
+ break;
663
+ default:
664
+ break;
665
+ }
666
+
667
+ switch (this .getSizeUnitY ())
668
+ {
669
+ case FRACTION:
670
+ rectangleSize .y = this .sizeY * parentRectangleSize .y;
671
+ break;
672
+ case PIXEL:
673
+ rectangleSize .y = this .sizeY * pixelSize .y;
674
+ break;
675
+ default:
676
+ break;
677
+ }
678
+
679
+ // Calculate translation
680
+
681
+ var translation = this .translation .set (0, 0, 0);
682
+
683
+ switch (this .getAlignX ())
684
+ {
685
+ case LEFT:
686
+ translation .x = -(parentRectangleSize .x - rectangleSize .x) / 2;
687
+ break;
688
+ case CENTER:
689
+
690
+ if (this .getSizeUnitX () === PIXEL && viewportPixel .x & 1)
691
+ translation .x = -pixelSize .x / 2;
692
+
693
+ break;
694
+ case RIGHT:
695
+ translation .x = (parentRectangleSize .x - rectangleSize .x) / 2;
696
+ break;
697
+ }
698
+
699
+ switch (this .getAlignY ())
700
+ {
701
+ case BOTTOM:
702
+ translation .y = -(parentRectangleSize .y - rectangleSize .y) / 2;
703
+ break;
704
+ case CENTER:
705
+
706
+ if (this .getSizeUnitX === PIXEL && viewportPixel .y & 1)
707
+ translation .y = -pixelSize .y / 2;
708
+
709
+ break;
710
+ case TOP:
711
+ translation .y = (parentRectangleSize .y - rectangleSize .y) / 2;
712
+ break;
713
+ }
714
+
715
+ // Calculate offset
716
+
717
+ var offset = this .offset .set (0, 0, 0);
718
+
719
+ switch (this .getOffsetUnitX ())
720
+ {
721
+ case FRACTION:
722
+ offset .x = this .offsetX * parentRectangleSize .x;
723
+ break;
724
+ case PIXEL:
725
+ offset .x = this .offsetX * viewportMeter .x / viewportPixel .x;
726
+ break;
727
+ }
728
+
729
+ switch (this .getOffsetUnitY ())
730
+ {
731
+ case FRACTION:
732
+ offset .y = this .offsetY * parentRectangleSize .y;
733
+ break;
734
+ case PIXEL:
735
+ offset .y = this .offsetY * viewportMeter .y / viewportPixel .y;
736
+ break;
737
+ }
738
+
739
+ // Calculate scale
740
+
741
+ var
742
+ scale = this .scale .set (1, 1, 1),
743
+ currentTranslation = this .currentTranslation,
744
+ currentRotation = this .currentRotation,
745
+ currentScale = this .currentScale;
746
+
747
+ var modelViewMatrix = renderObject .getModelViewMatrix () .get ();
748
+ modelViewMatrix .get (currentTranslation, currentRotation, currentScale);
749
+
750
+ switch (this .getScaleModeX ())
751
+ {
752
+ case NONE:
753
+ scale .x = currentScale .x;
754
+ break;
755
+ case FRACTION:
756
+ scale .x = rectangleSize .x;
757
+ break;
758
+ case STRETCH:
759
+ break;
760
+ case PIXEL:
761
+ scale .x = viewportMeter .x / viewportPixel .x;
762
+ break;
763
+ }
764
+
765
+ switch (this .getScaleModeY ())
766
+ {
767
+ case NONE:
768
+ scale .y = currentScale .y;
769
+ break;
770
+ case FRACTION:
771
+ scale .y = rectangleSize .y;
772
+ break;
773
+ case STRETCH:
774
+ break;
775
+ case PIXEL:
776
+ scale .y = viewportMeter .y / viewportPixel .y;
777
+ break;
778
+ }
779
+
780
+ // Calculate scale for scaleMode STRETCH
781
+
782
+ if (this .getScaleModeX () === STRETCH)
783
+ {
784
+ if (this .getScaleModeY () === STRETCH)
785
+ {
786
+ if (rectangleSize .x > rectangleSize .y)
787
+ {
788
+ scale .x = rectangleSize .x;
789
+ scale .y = scale .x;
790
+ }
791
+ else
792
+ {
793
+ scale .y = rectangleSize .y;
794
+ scale .x = scale .y;
795
+ }
796
+ }
797
+ else
798
+ scale .x = scale .y;
799
+ }
800
+ else if (this .getScaleModeY () === STRETCH)
801
+ scale .y = scale .x;
802
+
803
+ // Transform
804
+
805
+ rectangleCenter .assign (translation) .add (offset);
806
+
807
+ matrix .set (currentTranslation, currentRotation);
808
+ matrix .translate (translation .add (offset));
809
+ matrix .scale (scale);
810
+
811
+ return matrix;
812
+ },
813
+ });
814
+
815
+ return Layout;
816
+ });
817
+
818
+
819
+
820
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
821
+ *******************************************************************************
822
+ *
823
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
824
+ *
825
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
826
+ *
827
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
828
+ *
829
+ * The copyright notice above does not evidence any actual of intended
830
+ * publication of such source code, and is an unpublished work by create3000.
831
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
832
+ * create3000.
833
+ *
834
+ * No permission is granted to copy, distribute, or create derivative works from
835
+ * the contents of this software, in whole or in part, without the prior written
836
+ * permission of create3000.
837
+ *
838
+ * NON-MILITARY USE ONLY
839
+ *
840
+ * All create3000 software are effectively free software with a non-military use
841
+ * restriction. It is free. Well commented source is provided. You may reuse the
842
+ * source in any way you please with the exception anything that uses it must be
843
+ * marked to indicate is contains 'non-military use only' components.
844
+ *
845
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
846
+ *
847
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
848
+ *
849
+ * This file is part of the X_ITE Project.
850
+ *
851
+ * X_ITE is free software: you can redistribute it and/or modify it under the
852
+ * terms of the GNU General Public License version 3 only, as published by the
853
+ * Free Software Foundation.
854
+ *
855
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
856
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
857
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
858
+ * details (a copy is included in the LICENSE file that accompanied this code).
859
+ *
860
+ * You should have received a copy of the GNU General Public License version 3
861
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
862
+ * copy of the GPLv3 License.
863
+ *
864
+ * For Silvio, Joy and Adi.
865
+ *
866
+ ******************************************************************************/
867
+
868
+
869
+ define ('x_ite/Components/Layout/LayoutGroup',[
870
+ "x_ite/Fields",
871
+ "x_ite/Basic/X3DFieldDefinition",
872
+ "x_ite/Basic/FieldDefinitionArray",
873
+ "x_ite/Components/Grouping/X3DGroupingNode",
874
+ "x_ite/Bits/X3DCast",
875
+ "x_ite/Bits/TraverseType",
876
+ "x_ite/Bits/X3DConstants",
877
+ "standard/Math/Numbers/Matrix4",
878
+ ],
879
+ function (Fields,
880
+ X3DFieldDefinition,
881
+ FieldDefinitionArray,
882
+ X3DGroupingNode,
883
+ X3DCast,
884
+ TraverseType,
885
+ X3DConstants,
886
+ Matrix4)
887
+ {
888
+ "use strict";
889
+
890
+ function LayoutGroup (executionContext)
891
+ {
892
+ X3DGroupingNode .call (this, executionContext);
893
+
894
+ this .addType (X3DConstants .LayoutGroup);
895
+
896
+ this .viewportNode = null;
897
+ this .layoutNode = null;
898
+ this .modelViewMatrix = new Matrix4 ();
899
+ this .screenMatrix = new Matrix4 ();
900
+ }
901
+
902
+ LayoutGroup .prototype = Object .assign (Object .create (X3DGroupingNode .prototype),
903
+ {
904
+ constructor: LayoutGroup,
905
+ fieldDefinitions: new FieldDefinitionArray ([
906
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
907
+ new X3DFieldDefinition (X3DConstants .inputOutput, "layout", new Fields .SFNode ()),
908
+ new X3DFieldDefinition (X3DConstants .inputOutput, "viewport", new Fields .SFNode ()),
909
+ new X3DFieldDefinition (X3DConstants .inputOutput, "visible", new Fields .SFBool (true)),
910
+ new X3DFieldDefinition (X3DConstants .inputOutput, "bboxDisplay", new Fields .SFBool ()),
911
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxSize", new Fields .SFVec3f (-1, -1, -1)),
912
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxCenter", new Fields .SFVec3f ()),
913
+ new X3DFieldDefinition (X3DConstants .inputOnly, "addChildren", new Fields .MFNode ()),
914
+ new X3DFieldDefinition (X3DConstants .inputOnly, "removeChildren", new Fields .MFNode ()),
915
+ new X3DFieldDefinition (X3DConstants .inputOutput, "children", new Fields .MFNode ()),
916
+ ]),
917
+ getTypeName: function ()
918
+ {
919
+ return "LayoutGroup";
920
+ },
921
+ getComponentName: function ()
922
+ {
923
+ return "Layout";
924
+ },
925
+ getContainerField: function ()
926
+ {
927
+ return "children";
928
+ },
929
+ initialize: function ()
930
+ {
931
+ X3DGroupingNode .prototype .initialize .call (this);
932
+
933
+ this .viewport_ .addInterest ("set_viewport__", this);
934
+ this .layout_ .addInterest ("set_layout__", this);
935
+
936
+ this .set_viewport__ ();
937
+ this .set_layout__ ();
938
+ },
939
+ set_viewport__: function ()
940
+ {
941
+ this .viewportNode = X3DCast (X3DConstants .X3DViewportNode, this .viewport_);
942
+ },
943
+ set_layout__: function ()
944
+ {
945
+ this .layoutNode = X3DCast (X3DConstants .X3DLayoutNode, this .layout_);
946
+ },
947
+ getBBox: function (bbox, shadow)
948
+ {
949
+ return X3DGroupingNode .prototype .getBBox .call (this, bbox, shadow) .multRight (this .getMatrix ());
950
+ },
951
+ getMatrix: function ()
952
+ {
953
+ try
954
+ {
955
+ if (this .layoutNode)
956
+ this .matrix .assign (this .modelViewMatrix) .inverse () .multLeft (this .screenMatrix);
957
+ else
958
+ this .matrix .identity ();
959
+ }
960
+ catch (error)
961
+ { }
962
+
963
+ return this .matrix;
964
+ },
965
+ traverse: function (type, renderObject)
966
+ {
967
+ switch (type)
968
+ {
969
+ case TraverseType .COLLISION:
970
+ {
971
+ return;
972
+ }
973
+ default:
974
+ {
975
+ if (this .viewportNode)
976
+ this .viewportNode .push ();
977
+
978
+ if (this .layoutNode)
979
+ {
980
+ var modelViewMatrix = renderObject .getModelViewMatrix ();
981
+
982
+ this .modelViewMatrix .assign (modelViewMatrix .get ());
983
+ this .screenMatrix .assign (this .layoutNode .transform (type, renderObject));
984
+
985
+ modelViewMatrix .pushMatrix (this .screenMatrix);
986
+ renderObject .getLayouts () .push (this .layoutNode);
987
+
988
+ X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
989
+
990
+ renderObject .getLayouts () .pop ();
991
+ modelViewMatrix .pop ();
992
+ }
993
+ else
994
+ {
995
+ X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
996
+ }
997
+
998
+ if (this .viewportNode)
999
+ this .viewportNode .pop ();
1000
+
1001
+ return;
1002
+ }
1003
+ }
1004
+ },
1005
+ });
1006
+
1007
+ return LayoutGroup;
1008
+ });
1009
+
1010
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
1011
+ *******************************************************************************
1012
+ *
1013
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1014
+ *
1015
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
1016
+ *
1017
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
1018
+ *
1019
+ * The copyright notice above does not evidence any actual of intended
1020
+ * publication of such source code, and is an unpublished work by create3000.
1021
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
1022
+ * create3000.
1023
+ *
1024
+ * No permission is granted to copy, distribute, or create derivative works from
1025
+ * the contents of this software, in whole or in part, without the prior written
1026
+ * permission of create3000.
1027
+ *
1028
+ * NON-MILITARY USE ONLY
1029
+ *
1030
+ * All create3000 software are effectively free software with a non-military use
1031
+ * restriction. It is free. Well commented source is provided. You may reuse the
1032
+ * source in any way you please with the exception anything that uses it must be
1033
+ * marked to indicate is contains 'non-military use only' components.
1034
+ *
1035
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1036
+ *
1037
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
1038
+ *
1039
+ * This file is part of the X_ITE Project.
1040
+ *
1041
+ * X_ITE is free software: you can redistribute it and/or modify it under the
1042
+ * terms of the GNU General Public License version 3 only, as published by the
1043
+ * Free Software Foundation.
1044
+ *
1045
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
1046
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1047
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
1048
+ * details (a copy is included in the LICENSE file that accompanied this code).
1049
+ *
1050
+ * You should have received a copy of the GNU General Public License version 3
1051
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
1052
+ * copy of the GPLv3 License.
1053
+ *
1054
+ * For Silvio, Joy and Adi.
1055
+ *
1056
+ ******************************************************************************/
1057
+
1058
+
1059
+ define ('x_ite/Components/Layout/LayoutLayer',[
1060
+ "x_ite/Fields",
1061
+ "x_ite/Basic/X3DFieldDefinition",
1062
+ "x_ite/Basic/FieldDefinitionArray",
1063
+ "x_ite/Components/Layering/X3DLayerNode",
1064
+ "x_ite/Components/Layout/LayoutGroup",
1065
+ "x_ite/Components/Navigation/OrthoViewpoint",
1066
+ "x_ite/Bits/X3DConstants",
1067
+ ],
1068
+ function (Fields,
1069
+ X3DFieldDefinition,
1070
+ FieldDefinitionArray,
1071
+ X3DLayerNode,
1072
+ LayoutGroup,
1073
+ OrthoViewpoint,
1074
+ X3DConstants)
1075
+ {
1076
+ "use strict";
1077
+
1078
+ function LayoutLayer (executionContext)
1079
+ {
1080
+ X3DLayerNode .call (this,
1081
+ executionContext,
1082
+ new OrthoViewpoint (executionContext),
1083
+ new LayoutGroup (executionContext));
1084
+
1085
+ this .addType (X3DConstants .LayoutLayer);
1086
+ }
1087
+
1088
+ LayoutLayer .prototype = Object .assign (Object .create (X3DLayerNode .prototype),
1089
+ {
1090
+ constructor: LayoutLayer,
1091
+ fieldDefinitions: new FieldDefinitionArray ([
1092
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
1093
+ new X3DFieldDefinition (X3DConstants .inputOutput, "isPickable", new Fields .SFBool (true)),
1094
+ new X3DFieldDefinition (X3DConstants .inputOutput, "layout", new Fields .SFNode ()),
1095
+ new X3DFieldDefinition (X3DConstants .inputOutput, "viewport", new Fields .SFNode ()),
1096
+ new X3DFieldDefinition (X3DConstants .inputOnly, "addChildren", new Fields .MFNode ()),
1097
+ new X3DFieldDefinition (X3DConstants .inputOnly, "removeChildren", new Fields .MFNode ()),
1098
+ new X3DFieldDefinition (X3DConstants .inputOutput, "children", new Fields .MFNode ()),
1099
+ ]),
1100
+ getTypeName: function ()
1101
+ {
1102
+ return "LayoutLayer";
1103
+ },
1104
+ getComponentName: function ()
1105
+ {
1106
+ return "Layout";
1107
+ },
1108
+ getContainerField: function ()
1109
+ {
1110
+ return "layers";
1111
+ },
1112
+ initialize: function ()
1113
+ {
1114
+ X3DLayerNode .prototype .initialize .call (this);
1115
+
1116
+ this .layout_ .addFieldInterest (this .getGroup () .layout_);
1117
+ this .addChildren_ .addFieldInterest (this .getGroup () .addChildren_);
1118
+ this .removeChildren_ .addFieldInterest (this .getGroup () .removeChildren_);
1119
+ this .children_ .addFieldInterest (this .getGroup () .children_);
1120
+
1121
+ this .getGroup () .layout_ = this .layout_;
1122
+ this .getGroup () .children_ = this .children_;
1123
+
1124
+ this .getGroup () .setPrivate (true);
1125
+ this .getGroup () .setup ();
1126
+ },
1127
+ });
1128
+
1129
+ return LayoutLayer;
1130
+ });
1131
+
1132
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
1133
+ *******************************************************************************
1134
+ *
1135
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1136
+ *
1137
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
1138
+ *
1139
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
1140
+ *
1141
+ * The copyright notice above does not evidence any actual of intended
1142
+ * publication of such source code, and is an unpublished work by create3000.
1143
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
1144
+ * create3000.
1145
+ *
1146
+ * No permission is granted to copy, distribute, or create derivative works from
1147
+ * the contents of this software, in whole or in part, without the prior written
1148
+ * permission of create3000.
1149
+ *
1150
+ * NON-MILITARY USE ONLY
1151
+ *
1152
+ * All create3000 software are effectively free software with a non-military use
1153
+ * restriction. It is free. Well commented source is provided. You may reuse the
1154
+ * source in any way you please with the exception anything that uses it must be
1155
+ * marked to indicate is contains 'non-military use only' components.
1156
+ *
1157
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1158
+ *
1159
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
1160
+ *
1161
+ * This file is part of the X_ITE Project.
1162
+ *
1163
+ * X_ITE is free software: you can redistribute it and/or modify it under the
1164
+ * terms of the GNU General Public License version 3 only, as published by the
1165
+ * Free Software Foundation.
1166
+ *
1167
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
1168
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1169
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
1170
+ * details (a copy is included in the LICENSE file that accompanied this code).
1171
+ *
1172
+ * You should have received a copy of the GNU General Public License version 3
1173
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
1174
+ * copy of the GPLv3 License.
1175
+ *
1176
+ * For Silvio, Joy and Adi.
1177
+ *
1178
+ ******************************************************************************/
1179
+
1180
+
1181
+ define ('x_ite/Browser/Layout/ScreenText',[
1182
+ "jquery",
1183
+ "x_ite/Browser/Text/X3DTextGeometry",
1184
+ "x_ite/Browser/Text/TextAlignment",
1185
+ "x_ite/Components/Texturing/PixelTexture",
1186
+ "x_ite/Components/Rendering/X3DGeometryNode",
1187
+ "standard/Math/Numbers/Vector3",
1188
+ "standard/Math/Numbers/Vector4",
1189
+ "standard/Math/Numbers/Matrix4",
1190
+ "standard/Math/Geometry/Box3",
1191
+ "standard/Math/Geometry/ViewVolume",
1192
+ "standard/Math/Algorithm",
1193
+ ],
1194
+ function ($,
1195
+ X3DTextGeometry,
1196
+ TextAlignment,
1197
+ PixelTexture,
1198
+ X3DGeometryNode,
1199
+ Vector3,
1200
+ Vector4,
1201
+ Matrix4,
1202
+ Box3,
1203
+ ViewVolume,
1204
+ Algorithm)
1205
+ {
1206
+ "use strict";
1207
+
1208
+ function ScreenText (text, fontStyle)
1209
+ {
1210
+ X3DTextGeometry .call (this, text, fontStyle);
1211
+
1212
+ text .setTransparent (true);
1213
+
1214
+ this .texCoordArray = X3DGeometryNode .createArray ();
1215
+ this .textureNode = new PixelTexture (text .getExecutionContext ());
1216
+ this .canvas = $("<canvas></canvas>");
1217
+ this .context = this .canvas [0] .getContext ("2d");
1218
+ this .matrix = new Matrix4 ();
1219
+
1220
+ this .textureNode .textureProperties_ = fontStyle .getBrowser () .getScreenTextureProperties ();
1221
+ this .textureNode .setup ();
1222
+ }
1223
+
1224
+ ScreenText .prototype = Object .assign (Object .create (X3DTextGeometry .prototype),
1225
+ {
1226
+ constructor: ScreenText,
1227
+ modelViewMatrix: new Matrix4 (),
1228
+ getTransparent: function ()
1229
+ {
1230
+ return true;
1231
+ },
1232
+ getMatrix: function ()
1233
+ {
1234
+ return this .matrix;
1235
+ },
1236
+ update: (function ()
1237
+ {
1238
+ var
1239
+ min = new Vector3 (0, 0, 0),
1240
+ max = new Vector3 (1, 1, 0);
1241
+
1242
+ return function ()
1243
+ {
1244
+ X3DTextGeometry .prototype .update .call (this);
1245
+
1246
+ var
1247
+ fontStyle = this .getFontStyle (),
1248
+ text = this .getText (),
1249
+ offset = 1; // For antialiasing border on bottom and right side
1250
+
1251
+ text .textBounds_ .x = Math .ceil (text .textBounds_ .x) + offset;
1252
+ text .textBounds_ .y = Math .ceil (text .textBounds_ .y) + offset;
1253
+
1254
+ this .getBBox () .getExtents (min, max);
1255
+
1256
+ min .x -= offset;
1257
+ min .y -= offset;
1258
+
1259
+ switch (fontStyle .getMajorAlignment ())
1260
+ {
1261
+ case TextAlignment .BEGIN:
1262
+ case TextAlignment .FIRST:
1263
+ min .x = Math .floor (min .x);
1264
+ max .x = min .x + text .textBounds_ .x;
1265
+ break;
1266
+ case TextAlignment .MIDDLE:
1267
+ min .x = Math .round (min .x);
1268
+ max .x = min .x + text .textBounds_ .x;
1269
+ break;
1270
+ case TextAlignment .END:
1271
+ max .x = Math .ceil (max .x);
1272
+ min .x = max .x - text .textBounds_ .x;
1273
+ break;
1274
+ }
1275
+
1276
+ switch (fontStyle .getMinorAlignment ())
1277
+ {
1278
+ case TextAlignment .BEGIN:
1279
+ case TextAlignment .FIRST:
1280
+ max .y = Math .ceil (max .y);
1281
+ min .y = max .y - text .textBounds_ .y;
1282
+ break;
1283
+ case TextAlignment .MIDDLE:
1284
+ max .y = Math .round (max .y);
1285
+ min .y = max .y - text .textBounds_ .y;
1286
+ break;
1287
+ case TextAlignment .END:
1288
+ min .y = Math .floor (min .y);
1289
+ max .y = min .y + text .textBounds_ .y;
1290
+ break;
1291
+ }
1292
+
1293
+ text .origin_ .x = min .x;
1294
+ text .origin_ .y = max .y;
1295
+
1296
+ this .getBBox () .setExtents (min, max);
1297
+ };
1298
+ })(),
1299
+ build: (function ()
1300
+ {
1301
+ var
1302
+ min = new Vector3 (0, 0, 0),
1303
+ max = new Vector3 (1, 1, 0);
1304
+
1305
+ return function ()
1306
+ {
1307
+ var
1308
+ fontStyle = this .getFontStyle (),
1309
+ font = fontStyle .getFont ();
1310
+
1311
+ if (! font)
1312
+ return;
1313
+
1314
+ var
1315
+ text = this .getText (),
1316
+ glyphs = this .getGlyphs (),
1317
+ minorAlignment = this .getMinorAlignment (),
1318
+ translations = this .getTranslations (),
1319
+ charSpacings = this .getCharSpacings (),
1320
+ size = fontStyle .getScale (), // in pixel
1321
+ sizeUnitsPerEm = size / font .unitsPerEm,
1322
+ texCoordArray = this .texCoordArray,
1323
+ normalArray = text .getNormals (),
1324
+ vertexArray = text .getVertices (),
1325
+ canvas = this .canvas [0],
1326
+ cx = this .context;
1327
+
1328
+ // Set texCoord.
1329
+
1330
+ texCoordArray .length = 0;
1331
+
1332
+ text .getMultiTexCoords () .push (texCoordArray);
1333
+
1334
+ // Triangle one and two.
1335
+
1336
+ this .getBBox () .getExtents (min, max);
1337
+
1338
+ normalArray .push (0, 0, 1,
1339
+ 0, 0, 1,
1340
+ 0, 0, 1,
1341
+ 0, 0, 1,
1342
+ 0, 0, 1,
1343
+ 0, 0, 1);
1344
+
1345
+ vertexArray .push (min .x, min .y, 0, 1,
1346
+ max .x, min .y, 0, 1,
1347
+ max .x, max .y, 0, 1,
1348
+ min .x, min .y, 0, 1,
1349
+ max .x, max .y, 0, 1,
1350
+ min .x, max .y, 0, 1);
1351
+
1352
+ // Generate texture.
1353
+
1354
+ var
1355
+ width = text .textBounds_ .x,
1356
+ height = text .textBounds_ .y;
1357
+
1358
+ // Scale canvas.
1359
+
1360
+ canvas .width = Algorithm .nextPowerOfTwo (width),
1361
+ canvas .height = Algorithm .nextPowerOfTwo (height);
1362
+
1363
+ var
1364
+ w = width / canvas .width,
1365
+ h = height / canvas .height,
1366
+ y = 1 - h;
1367
+
1368
+ texCoordArray .push (0, y, 0, 1,
1369
+ w, y, 0, 1,
1370
+ w, 1, 0, 1,
1371
+ 0, y, 0, 1,
1372
+ w, 1, 0, 1,
1373
+ 0, 1, 0, 1);
1374
+
1375
+ // Setup canvas.
1376
+
1377
+ cx .fillStyle = "rgba(255,255,255,0)";
1378
+ cx .fillRect (0, 0, canvas .width, canvas .height);
1379
+ cx .fillStyle = "rgba(255,255,255,1)";
1380
+
1381
+ // Draw glyphs.
1382
+
1383
+ if (fontStyle .horizontal_ .getValue ())
1384
+ {
1385
+ for (var l = 0, length = glyphs .length; l < length; ++ l)
1386
+ {
1387
+ var
1388
+ line = glyphs [l],
1389
+ charSpacing = charSpacings [l],
1390
+ translation = translations [l],
1391
+ advanceWidth = 0;
1392
+
1393
+ for (var g = 0, gl = line .length; g < gl; ++ g)
1394
+ {
1395
+ var
1396
+ glyph = line [g],
1397
+ x = minorAlignment .x + translation .x + advanceWidth + g * charSpacing - min .x,
1398
+ y = minorAlignment .y + translation .y - max .y;
1399
+
1400
+ this .drawGlyph (cx, font, glyph, x, y, size);
1401
+
1402
+ // Calculate advanceWidth.
1403
+
1404
+ var kerning = 0;
1405
+
1406
+ if (g + 1 < line .length)
1407
+ kerning = font .getKerningValue (glyph, line [g + 1]);
1408
+
1409
+ advanceWidth += (glyph .advanceWidth + kerning) * sizeUnitsPerEm;
1410
+ }
1411
+ }
1412
+ }
1413
+ else
1414
+ {
1415
+ var
1416
+ leftToRight = fontStyle .leftToRight_ .getValue (),
1417
+ topToBottom = fontStyle .topToBottom_ .getValue (),
1418
+ first = leftToRight ? 0 : text .string_ .length - 1,
1419
+ last = leftToRight ? text .string_ .length : -1,
1420
+ step = leftToRight ? 1 : -1;
1421
+
1422
+ for (var l = first, t = 0; l !== last; l += step)
1423
+ {
1424
+ var line = glyphs [l];
1425
+
1426
+ var
1427
+ numChars = line .length,
1428
+ firstG = topToBottom ? 0 : numChars - 1,
1429
+ lastG = topToBottom ? numChars : -1,
1430
+ stepG = topToBottom ? 1 : -1;
1431
+
1432
+ for (var g = firstG; g !== lastG; g += stepG, ++ t)
1433
+ {
1434
+ var translation = translations [t];
1435
+
1436
+ var
1437
+ x = minorAlignment .x + translation .x - min .x,
1438
+ y = minorAlignment .y + translation .y - max .y;
1439
+
1440
+ this .drawGlyph (cx, font, line [g], x, y, size);
1441
+ }
1442
+ }
1443
+ }
1444
+
1445
+ // Transfer texture data.
1446
+
1447
+ var imageData = cx .getImageData (0, 0, canvas .width, canvas .height);
1448
+
1449
+ // If the cavas is to large imageData is null.
1450
+ if (imageData)
1451
+ this .textureNode .setTexture (canvas .width, canvas .height, true, new Uint8Array (imageData .data), true);
1452
+ else
1453
+ this .textureNode .clear ();
1454
+ };
1455
+ })(),
1456
+ drawGlyph: function (cx, font, glyph, x, y, size)
1457
+ {
1458
+ //console .log (glyph .name, x, y);
1459
+
1460
+ // Get curves for the current glyph.
1461
+
1462
+ var
1463
+ path = glyph .getPath (x, -y, size),
1464
+ commands = path .commands;
1465
+
1466
+ cx .beginPath ();
1467
+
1468
+ for (var i = 0, cl = commands .length; i < cl; ++ i)
1469
+ {
1470
+ var command = commands [i];
1471
+
1472
+ switch (command .type)
1473
+ {
1474
+ case "M": // Start
1475
+ {
1476
+ cx .moveTo (command .x, command .y);
1477
+ continue;
1478
+ }
1479
+ case "Z": // End
1480
+ {
1481
+ cx .closePath ();
1482
+ continue;
1483
+ }
1484
+ case "L": // Linear
1485
+ {
1486
+ cx .lineTo (command .x, command .y);
1487
+ continue;
1488
+ }
1489
+ case "Q": // Cubic
1490
+ {
1491
+ cx .quadraticCurveTo (command .x1, command .y1, command .x, command .y);
1492
+ continue;
1493
+ }
1494
+ case "C": // Bezier
1495
+ {
1496
+ cx .bezierCurveTo (command .x1, command .y1, command .x2, command .y2, command .x, command .y);
1497
+ continue;
1498
+ }
1499
+ }
1500
+ }
1501
+
1502
+ if (path .fill)
1503
+ cx .fill ();
1504
+
1505
+ if (path .stroke)
1506
+ {
1507
+ cx .lineWidth = path .strokeWidth;
1508
+ cx .stroke ();
1509
+ }
1510
+ },
1511
+ getGlyphExtents: function (font, glyph, primitiveQuality, min, max)
1512
+ {
1513
+ var unitsPerEm = font .unitsPerEm;
1514
+
1515
+ min .set ((glyph .xMin || 0) / unitsPerEm, (glyph .yMin || 0) / unitsPerEm, 0);
1516
+ max .set ((glyph .xMax || 0) / unitsPerEm, (glyph .yMax || 0) / unitsPerEm, 0);
1517
+ },
1518
+ transform: (function ()
1519
+ {
1520
+ var
1521
+ x = new Vector4 (0, 0, 0, 0),
1522
+ y = new Vector4 (0, 0, 0, 0),
1523
+ z = new Vector4 (0, 0, 0, 0),
1524
+ screenPoint = new Vector3 (0, 0, 0),
1525
+ screenMatrix = new Matrix4 (),
1526
+ bbox = new Box3 ();
1527
+
1528
+ return function (renderObject)
1529
+ {
1530
+ // throws an exception
1531
+
1532
+ var
1533
+ text = this .getText (),
1534
+ modelViewMatrix = renderObject .getModelViewMatrix () .get (),
1535
+ projectionMatrix = renderObject .getProjectionMatrix () .get (),
1536
+ viewport = renderObject .getViewVolume () .getViewport ();
1537
+
1538
+ // Determine screenMatrix.
1539
+ // Same as in ScreenGroup.
1540
+
1541
+ var screenScale = renderObject .getViewpoint () .getScreenScale (modelViewMatrix .origin, viewport); // in meter/pixel
1542
+
1543
+ x .set (modelViewMatrix [ 0], modelViewMatrix [ 1], modelViewMatrix [ 2], modelViewMatrix [ 3]);
1544
+ y .set (modelViewMatrix [ 4], modelViewMatrix [ 5], modelViewMatrix [ 6], modelViewMatrix [ 7]);
1545
+ z .set (modelViewMatrix [ 8], modelViewMatrix [ 9], modelViewMatrix [10], modelViewMatrix [11]);
1546
+
1547
+ x .normalize () .multiply (screenScale .x);
1548
+ y .normalize () .multiply (screenScale .y);
1549
+ z .normalize () .multiply (screenScale .z);
1550
+
1551
+ screenMatrix .set (x .x, x .y, x .z, x .w,
1552
+ y .x, y .y, y .z, y .w,
1553
+ z .x, z .y, z .z, z .w,
1554
+ modelViewMatrix [12], modelViewMatrix [13], modelViewMatrix [14], modelViewMatrix [15]);
1555
+
1556
+ // Snap to whole pixel.
1557
+
1558
+ ViewVolume .projectPoint (Vector3 .Zero, screenMatrix, projectionMatrix, viewport, screenPoint);
1559
+
1560
+ screenPoint .x = Math .round (screenPoint .x);
1561
+ screenPoint .y = Math .round (screenPoint .y);
1562
+
1563
+ ViewVolume .unProjectPoint (screenPoint .x, screenPoint .y, screenPoint .z, screenMatrix, projectionMatrix, viewport, screenPoint);
1564
+
1565
+ screenPoint .z = 0;
1566
+ screenMatrix .translate (screenPoint);
1567
+
1568
+ // Assign modelViewMatrix and calculate relative matrix.
1569
+
1570
+ this .matrix .assign (modelViewMatrix) .inverse () .multLeft (screenMatrix);
1571
+
1572
+ // Update Text bbox.
1573
+
1574
+ bbox .assign (this .getBBox ()) .multRight (this .matrix);
1575
+
1576
+ text .setBBox (bbox);
1577
+ };
1578
+ })(),
1579
+ traverse: function (type, renderObject)
1580
+ {
1581
+ this .transform (renderObject);
1582
+ },
1583
+ display: function (gl, context)
1584
+ {
1585
+ Matrix4 .prototype .multLeft .call (context .modelViewMatrix, this .matrix);
1586
+
1587
+ context .textureNode = this .textureNode;
1588
+ },
1589
+ transformLine: function (line)
1590
+ {
1591
+ // Apply sceen nodes transformation in place here.
1592
+ return line .multLineMatrix (Matrix4 .inverse (this .matrix));
1593
+ },
1594
+ transformMatrix: function (matrix)
1595
+ {
1596
+ // Apply sceen nodes transformation in place here.
1597
+ return matrix .multLeft (this .matrix);
1598
+ },
1599
+ });
1600
+
1601
+ return ScreenText;
1602
+ });
1603
+
1604
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
1605
+ *******************************************************************************
1606
+ *
1607
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1608
+ *
1609
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
1610
+ *
1611
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
1612
+ *
1613
+ * The copyright notice above does not evidence any actual of intended
1614
+ * publication of such source code, and is an unpublished work by create3000.
1615
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
1616
+ * create3000.
1617
+ *
1618
+ * No permission is granted to copy, distribute, or create derivative works from
1619
+ * the contents of this software, in whole or in part, without the prior written
1620
+ * permission of create3000.
1621
+ *
1622
+ * NON-MILITARY USE ONLY
1623
+ *
1624
+ * All create3000 software are effectively free software with a non-military use
1625
+ * restriction. It is free. Well commented source is provided. You may reuse the
1626
+ * source in any way you please with the exception anything that uses it must be
1627
+ * marked to indicate is contains 'non-military use only' components.
1628
+ *
1629
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1630
+ *
1631
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
1632
+ *
1633
+ * This file is part of the X_ITE Project.
1634
+ *
1635
+ * X_ITE is free software: you can redistribute it and/or modify it under the
1636
+ * terms of the GNU General Public License version 3 only, as published by the
1637
+ * Free Software Foundation.
1638
+ *
1639
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
1640
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1641
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
1642
+ * details (a copy is included in the LICENSE file that accompanied this code).
1643
+ *
1644
+ * You should have received a copy of the GNU General Public License version 3
1645
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
1646
+ * copy of the GPLv3 License.
1647
+ *
1648
+ * For Silvio, Joy and Adi.
1649
+ *
1650
+ ******************************************************************************/
1651
+
1652
+
1653
+ define ('x_ite/Components/Layout/ScreenFontStyle',[
1654
+ "x_ite/Fields",
1655
+ "x_ite/Basic/X3DFieldDefinition",
1656
+ "x_ite/Basic/FieldDefinitionArray",
1657
+ "x_ite/Components/Text/X3DFontStyleNode",
1658
+ "x_ite/Browser/Layout/ScreenText",
1659
+ "x_ite/Bits/X3DConstants",
1660
+ ],
1661
+ function (Fields,
1662
+ X3DFieldDefinition,
1663
+ FieldDefinitionArray,
1664
+ X3DFontStyleNode,
1665
+ ScreenText,
1666
+ X3DConstants)
1667
+ {
1668
+ "use strict";
1669
+
1670
+ function ScreenFontStyle (executionContext)
1671
+ {
1672
+ X3DFontStyleNode .call (this, executionContext);
1673
+
1674
+ this .addType (X3DConstants .ScreenFontStyle);
1675
+ }
1676
+
1677
+ ScreenFontStyle .prototype = Object .assign (Object .create (X3DFontStyleNode .prototype),
1678
+ {
1679
+ constructor: ScreenFontStyle,
1680
+ fieldDefinitions: new FieldDefinitionArray ([
1681
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
1682
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "language", new Fields .SFString ()),
1683
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "family", new Fields .MFString ("SERIF")),
1684
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "style", new Fields .SFString ("PLAIN")),
1685
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "pointSize", new Fields .SFFloat (12)),
1686
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "spacing", new Fields .SFFloat (1)),
1687
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "horizontal", new Fields .SFBool (true)),
1688
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "leftToRight", new Fields .SFBool (true)),
1689
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "topToBottom", new Fields .SFBool (true)),
1690
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "justify", new Fields .MFString ("BEGIN")),
1691
+ ]),
1692
+ getTypeName: function ()
1693
+ {
1694
+ return "ScreenFontStyle";
1695
+ },
1696
+ getComponentName: function ()
1697
+ {
1698
+ return "Layout";
1699
+ },
1700
+ getContainerField: function ()
1701
+ {
1702
+ return "fontStyle";
1703
+ },
1704
+ getTextGeometry: function (text)
1705
+ {
1706
+ return new ScreenText (text, this);
1707
+ },
1708
+ getScale: function ()
1709
+ {
1710
+ return this .pointSize_ .getValue () * this .getBrowser () .getPointSize ();
1711
+ },
1712
+ });
1713
+
1714
+ return ScreenFontStyle;
1715
+ });
1716
+
1717
+ /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
1718
+ *******************************************************************************
1719
+ *
1720
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1721
+ *
1722
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
1723
+ *
1724
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
1725
+ *
1726
+ * The copyright notice above does not evidence any actual of intended
1727
+ * publication of such source code, and is an unpublished work by create3000.
1728
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
1729
+ * create3000.
1730
+ *
1731
+ * No permission is granted to copy, distribute, or create derivative works from
1732
+ * the contents of this software, in whole or in part, without the prior written
1733
+ * permission of create3000.
1734
+ *
1735
+ * NON-MILITARY USE ONLY
1736
+ *
1737
+ * All create3000 software are effectively free software with a non-military use
1738
+ * restriction. It is free. Well commented source is provided. You may reuse the
1739
+ * source in any way you please with the exception anything that uses it must be
1740
+ * marked to indicate is contains 'non-military use only' components.
1741
+ *
1742
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1743
+ *
1744
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
1745
+ *
1746
+ * This file is part of the X_ITE Project.
1747
+ *
1748
+ * X_ITE is free software: you can redistribute it and/or modify it under the
1749
+ * terms of the GNU General Public License version 3 only, as published by the
1750
+ * Free Software Foundation.
1751
+ *
1752
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
1753
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1754
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
1755
+ * details (a copy is included in the LICENSE file that accompanied this code).
1756
+ *
1757
+ * You should have received a copy of the GNU General Public License version 3
1758
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
1759
+ * copy of the GPLv3 License.
1760
+ *
1761
+ * For Silvio, Joy and Adi.
1762
+ *
1763
+ ******************************************************************************/
1764
+
1765
+
1766
+ define ('x_ite/Components/Layout/ScreenGroup',[
1767
+ "x_ite/Fields",
1768
+ "x_ite/Basic/X3DFieldDefinition",
1769
+ "x_ite/Basic/FieldDefinitionArray",
1770
+ "x_ite/Components/Grouping/X3DGroupingNode",
1771
+ "x_ite/Bits/X3DConstants",
1772
+ "x_ite/Bits/TraverseType",
1773
+ "standard/Math/Numbers/Vector3",
1774
+ "standard/Math/Numbers/Vector4",
1775
+ "standard/Math/Numbers/Matrix4",
1776
+ "standard/Math/Geometry/ViewVolume",
1777
+ ],
1778
+ function (Fields,
1779
+ X3DFieldDefinition,
1780
+ FieldDefinitionArray,
1781
+ X3DGroupingNode,
1782
+ X3DConstants,
1783
+ TraverseType,
1784
+ Vector3,
1785
+ Vector4,
1786
+ Matrix4,
1787
+ ViewVolume)
1788
+ {
1789
+ "use strict";
1790
+
1791
+ function ScreenGroup (executionContext)
1792
+ {
1793
+ X3DGroupingNode .call (this, executionContext);
1794
+
1795
+ this .addType (X3DConstants .ScreenGroup);
1796
+
1797
+ this .matrix = new Matrix4 ();
1798
+ }
1799
+
1800
+ ScreenGroup .prototype = Object .assign (Object .create (X3DGroupingNode .prototype),
1801
+ {
1802
+ constructor: ScreenGroup,
1803
+ fieldDefinitions: new FieldDefinitionArray ([
1804
+ new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
1805
+ new X3DFieldDefinition (X3DConstants .inputOutput, "visible", new Fields .SFBool (true)),
1806
+ new X3DFieldDefinition (X3DConstants .inputOutput, "bboxDisplay", new Fields .SFBool ()),
1807
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxSize", new Fields .SFVec3f (-1, -1, -1)),
1808
+ new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxCenter", new Fields .SFVec3f ()),
1809
+ new X3DFieldDefinition (X3DConstants .inputOnly, "addChildren", new Fields .MFNode ()),
1810
+ new X3DFieldDefinition (X3DConstants .inputOnly, "removeChildren", new Fields .MFNode ()),
1811
+ new X3DFieldDefinition (X3DConstants .inputOutput, "children", new Fields .MFNode ()),
1812
+ ]),
1813
+ getTypeName: function ()
1814
+ {
1815
+ return "ScreenGroup";
1816
+ },
1817
+ getComponentName: function ()
1818
+ {
1819
+ return "Layout";
1820
+ },
1821
+ getContainerField: function ()
1822
+ {
1823
+ return "children";
1824
+ },
1825
+ getBBox: function (bbox, shadow)
1826
+ {
1827
+ return X3DGroupingNode .prototype .getBBox .call (this, bbox, shadow) .multRight (this .matrix);
1828
+ },
1829
+ getMatrix: function ()
1830
+ {
1831
+ return this .matrix;
1832
+ },
1833
+ scale: (function ()
1834
+ {
1835
+ var
1836
+ x = new Vector4 (0, 0, 0, 0),
1837
+ y = new Vector4 (0, 0, 0, 0),
1838
+ z = new Vector4 (0, 0, 0, 0),
1839
+ screenPoint = new Vector3 (0, 0, 0),
1840
+ screenMatrix = new Matrix4 ();
1841
+
1842
+ return function (renderObject)
1843
+ {
1844
+ // throws domain error
1845
+
1846
+ var
1847
+ modelViewMatrix = renderObject .getModelViewMatrix () .get (),
1848
+ projectionMatrix = renderObject .getProjectionMatrix () .get (),
1849
+ viewport = renderObject .getViewVolume () .getViewport ();
1850
+
1851
+ // Determine screenMatrix.
1852
+ // Same as in ScreenText.
1853
+
1854
+ var screenScale = renderObject .getViewpoint () .getScreenScale (modelViewMatrix .origin, viewport); // in meter/pixel
1855
+
1856
+ x .set (modelViewMatrix [ 0], modelViewMatrix [ 1], modelViewMatrix [ 2], modelViewMatrix [ 3]);
1857
+ y .set (modelViewMatrix [ 4], modelViewMatrix [ 5], modelViewMatrix [ 6], modelViewMatrix [ 7]);
1858
+ z .set (modelViewMatrix [ 8], modelViewMatrix [ 9], modelViewMatrix [10], modelViewMatrix [11]);
1859
+
1860
+ x .normalize () .multiply (screenScale .x);
1861
+ y .normalize () .multiply (screenScale .y);
1862
+ z .normalize () .multiply (screenScale .z);
1863
+
1864
+ screenMatrix .set (x .x, x .y, x .z, x .w,
1865
+ y .x, y .y, y .z, y .w,
1866
+ z .x, z .y, z .z, z .w,
1867
+ modelViewMatrix [12], modelViewMatrix [13], modelViewMatrix [14], modelViewMatrix [15]);
1868
+
1869
+ // Snap to whole pixel.
1870
+
1871
+ ViewVolume .projectPoint (Vector3 .Zero, screenMatrix, projectionMatrix, viewport, screenPoint);
1872
+
1873
+ screenPoint .x = Math .round (screenPoint .x);
1874
+ screenPoint .y = Math .round (screenPoint .y);
1875
+
1876
+ ViewVolume .unProjectPoint (screenPoint .x, screenPoint .y, screenPoint .z, screenMatrix, projectionMatrix, viewport, screenPoint);
1877
+
1878
+ screenPoint .z = 0;
1879
+ screenMatrix .translate (screenPoint);
1880
+
1881
+ // Assign relative matrix.
1882
+
1883
+ this .matrix .assign (modelViewMatrix) .inverse () .multLeft (screenMatrix);
1884
+ };
1885
+ })(),
1886
+ traverse: function (type, renderObject)
1887
+ {
1888
+ try
1889
+ {
1890
+ switch (type)
1891
+ {
1892
+ case TraverseType .CAMERA:
1893
+ case TraverseType .PICKING:
1894
+ case TraverseType .SHADOW: // ???
1895
+ // No clone support for shadow, generated cube map texture and bbox
1896
+ break;
1897
+ default:
1898
+ this .scale (renderObject);
1899
+ break;
1900
+ }
1901
+
1902
+ var modelViewMatrix = renderObject .getModelViewMatrix ();
1903
+
1904
+ modelViewMatrix .push ();
1905
+ modelViewMatrix .multLeft (this .matrix);
1906
+
1907
+ X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
1908
+
1909
+ modelViewMatrix .pop ();
1910
+ }
1911
+ catch (error)
1912
+ { }
1913
+ },
1914
+ });
1915
+
1916
+ return ScreenGroup;
1917
+ });
1918
+
1919
+ /*******************************************************************************
1920
+ *
1921
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1922
+ *
1923
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
1924
+ *
1925
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
1926
+ *
1927
+ * The copyright notice above does not evidence any actual of intended
1928
+ * publication of such source code, and is an unpublished work by create3000.
1929
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
1930
+ * create3000.
1931
+ *
1932
+ * No permission is granted to copy, distribute, or create derivative works from
1933
+ * the contents of this software, in whole or in part, without the prior written
1934
+ * permission of create3000.
1935
+ *
1936
+ * NON-MILITARY USE ONLY
1937
+ *
1938
+ * All create3000 software are effectively free software with a non-military use
1939
+ * restriction. It is free. Well commented source is provided. You may reuse the
1940
+ * source in any way you please with the exception anything that uses it must be
1941
+ * marked to indicate is contains 'non-military use only' components.
1942
+ *
1943
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1944
+ *
1945
+ * Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
1946
+ *
1947
+ * This file is part of the X_ITE Project.
1948
+ *
1949
+ * X_ITE is free software: you can redistribute it and/or modify it under the
1950
+ * terms of the GNU General Public License version 3 only, as published by the
1951
+ * Free Software Foundation.
1952
+ *
1953
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
1954
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
1955
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
1956
+ * details (a copy is included in the LICENSE file that accompanied this code).
1957
+ *
1958
+ * You should have received a copy of the GNU General Public License version 3
1959
+ * along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
1960
+ * copy of the GPLv3 License.
1961
+ *
1962
+ * For Silvio, Joy and Adi.
1963
+ *
1964
+ ******************************************************************************/
1965
+
1966
+
1967
+ define ([
1968
+ "x_ite/Components",
1969
+ "x_ite/Browser/Layout/X3DLayoutContext",
1970
+ "x_ite/Components/Layout/Layout",
1971
+ "x_ite/Components/Layout/LayoutGroup",
1972
+ "x_ite/Components/Layout/LayoutLayer",
1973
+ "x_ite/Components/Layout/ScreenFontStyle",
1974
+ "x_ite/Components/Layout/ScreenGroup",
1975
+ "x_ite/Components/Layout/X3DLayoutNode",
1976
+ ],
1977
+ function (Components,
1978
+ X3DLayoutContext,
1979
+ Layout,
1980
+ LayoutGroup,
1981
+ LayoutLayer,
1982
+ ScreenFontStyle,
1983
+ ScreenGroup,
1984
+ X3DLayoutNode)
1985
+ {
1986
+ "use strict";
1987
+
1988
+ Components .addComponent ({
1989
+ name: "Layout",
1990
+ types:
1991
+ {
1992
+ Layout: Layout,
1993
+ LayoutGroup: LayoutGroup,
1994
+ LayoutLayer: LayoutLayer,
1995
+ ScreenFontStyle: ScreenFontStyle,
1996
+ ScreenGroup: ScreenGroup,
1997
+ },
1998
+ abstractTypes:
1999
+ {
2000
+ X3DLayoutNode: X3DLayoutNode,
2001
+ },
2002
+ browser: X3DLayoutContext,
2003
+ });
2004
+ });
2005
+
2006
+
2007
+
2008
+ }());