@tolokoban/tgd 2.0.18 → 2.0.22

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 (395) hide show
  1. package/lib/dist/buffer/buffer.d.ts +5 -2
  2. package/lib/dist/buffer/buffer.d.ts.map +1 -1
  3. package/lib/dist/buffer/buffer.js +14 -14
  4. package/lib/dist/camera/camera-node.d.ts +2 -2
  5. package/lib/dist/camera/camera-node.d.ts.map +1 -1
  6. package/lib/dist/camera/camera-node.js +4 -5
  7. package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
  8. package/lib/dist/camera/camera-orthographic.js +14 -12
  9. package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
  10. package/lib/dist/camera/camera-perspective.js +20 -38
  11. package/lib/dist/camera/camera.d.ts +9 -56
  12. package/lib/dist/camera/camera.d.ts.map +1 -1
  13. package/lib/dist/camera/camera.js +50 -279
  14. package/lib/dist/camera/index.d.ts +0 -1
  15. package/lib/dist/camera/index.d.ts.map +1 -1
  16. package/lib/dist/camera/index.js +1 -2
  17. package/lib/dist/canvas/gizmo/gizmo.d.ts.map +1 -1
  18. package/lib/dist/canvas/gizmo/gizmo.js +72 -78
  19. package/lib/dist/canvas/gizmo/painter/tips.d.ts +0 -1
  20. package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -1
  21. package/lib/dist/canvas/gizmo/painter/tips.js +38 -36
  22. package/lib/dist/canvas/landscape/landscape.js +4 -11
  23. package/lib/dist/code/color.d.ts +12 -0
  24. package/lib/dist/code/color.d.ts.map +1 -0
  25. package/lib/dist/code/color.js +26 -0
  26. package/lib/dist/code/consts.d.ts +16 -0
  27. package/lib/dist/code/consts.d.ts.map +1 -0
  28. package/lib/dist/code/consts.js +20 -0
  29. package/lib/dist/code/coords.d.ts +46 -0
  30. package/lib/dist/code/coords.d.ts.map +1 -0
  31. package/lib/dist/code/coords.js +95 -0
  32. package/lib/dist/code/index.d.ts +6 -0
  33. package/lib/dist/code/index.d.ts.map +1 -0
  34. package/lib/dist/code/index.js +6 -0
  35. package/lib/dist/code/random.d.ts +8 -0
  36. package/lib/dist/code/random.d.ts.map +1 -0
  37. package/lib/dist/code/random.js +13 -0
  38. package/lib/dist/code/transfo.d.ts +8 -0
  39. package/lib/dist/code/transfo.d.ts.map +1 -0
  40. package/lib/dist/code/transfo.js +19 -0
  41. package/lib/dist/color/color.js +24 -24
  42. package/lib/dist/context/animation/animation-manager.js +9 -6
  43. package/lib/dist/context/context.d.ts +11 -18
  44. package/lib/dist/context/context.d.ts.map +1 -1
  45. package/lib/dist/context/context.js +71 -96
  46. package/lib/dist/controller/camera/orbit.d.ts +33 -4
  47. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  48. package/lib/dist/controller/camera/orbit.js +163 -117
  49. package/lib/dist/dataset/dataset.d.ts +1 -1
  50. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  51. package/lib/dist/dataset/dataset.js +72 -72
  52. package/lib/dist/debug/debug.d.ts +1 -1
  53. package/lib/dist/debug/debug.d.ts.map +1 -1
  54. package/lib/dist/debug/debug.js +8 -7
  55. package/lib/dist/debug/tools.js +3 -3
  56. package/lib/dist/event/event.js +6 -3
  57. package/lib/dist/filter/blur.d.ts.map +1 -1
  58. package/lib/dist/filter/blur.js +9 -8
  59. package/lib/dist/filter/chromatic-aberration.js +10 -10
  60. package/lib/dist/filter/filter.d.ts +2 -1
  61. package/lib/dist/filter/filter.d.ts.map +1 -1
  62. package/lib/dist/filter/filter.js +22 -22
  63. package/lib/dist/filter/hue-rotation.d.ts +1 -1
  64. package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
  65. package/lib/dist/filter/hue-rotation.js +5 -5
  66. package/lib/dist/filter/index.d.ts +1 -0
  67. package/lib/dist/filter/index.d.ts.map +1 -1
  68. package/lib/dist/filter/index.js +2 -1
  69. package/lib/dist/filter/verbatim.d.ts +8 -0
  70. package/lib/dist/filter/verbatim.d.ts.map +1 -0
  71. package/lib/dist/filter/verbatim.js +20 -0
  72. package/lib/dist/filter/zoom.d.ts +3 -1
  73. package/lib/dist/filter/zoom.d.ts.map +1 -1
  74. package/lib/dist/filter/zoom.js +10 -6
  75. package/lib/dist/geometry/box.d.ts +2 -1
  76. package/lib/dist/geometry/box.d.ts.map +1 -1
  77. package/lib/dist/geometry/box.js +103 -115
  78. package/lib/dist/geometry/geometry.d.ts.map +1 -1
  79. package/lib/dist/geometry/geometry.js +38 -48
  80. package/lib/dist/geometry/index.d.ts +1 -0
  81. package/lib/dist/geometry/index.d.ts.map +1 -1
  82. package/lib/dist/geometry/index.js +2 -1
  83. package/lib/dist/geometry/plane.d.ts +12 -0
  84. package/lib/dist/geometry/plane.d.ts.map +1 -0
  85. package/lib/dist/geometry/plane.js +51 -0
  86. package/lib/dist/index.d.ts +6 -1
  87. package/lib/dist/index.d.ts.map +1 -1
  88. package/lib/dist/index.js +7 -2
  89. package/lib/dist/input/inputs.js +3 -4
  90. package/lib/dist/input/keyboard.js +14 -14
  91. package/lib/dist/input/pointer.d.ts.map +1 -1
  92. package/lib/dist/input/pointer.js +85 -112
  93. package/lib/dist/interface/transformable.d.ts +3 -1
  94. package/lib/dist/interface/transformable.d.ts.map +1 -1
  95. package/lib/dist/light/light.js +5 -8
  96. package/lib/dist/loader/asset.js +15 -12
  97. package/lib/dist/loader/binary.js +29 -24
  98. package/lib/dist/loader/image.js +31 -24
  99. package/lib/dist/loader/index.d.ts +1 -0
  100. package/lib/dist/loader/index.d.ts.map +1 -1
  101. package/lib/dist/loader/index.js +2 -1
  102. package/lib/dist/loader/video.d.ts +6 -0
  103. package/lib/dist/loader/video.d.ts.map +1 -0
  104. package/lib/dist/loader/video.js +23 -0
  105. package/lib/dist/log.d.ts +1 -1
  106. package/lib/dist/log.d.ts.map +1 -1
  107. package/lib/dist/log.js +19 -16
  108. package/lib/dist/material/diffuse.d.ts +3 -1
  109. package/lib/dist/material/diffuse.d.ts.map +1 -1
  110. package/lib/dist/material/diffuse.js +17 -20
  111. package/lib/dist/material/ghost.d.ts +2 -1
  112. package/lib/dist/material/ghost.d.ts.map +1 -1
  113. package/lib/dist/material/ghost.js +1 -4
  114. package/lib/dist/material/hull.d.ts +2 -1
  115. package/lib/dist/material/hull.d.ts.map +1 -1
  116. package/lib/dist/material/hull.js +10 -13
  117. package/lib/dist/material/material.d.ts +2 -1
  118. package/lib/dist/material/material.d.ts.map +1 -1
  119. package/lib/dist/material/material.js +14 -20
  120. package/lib/dist/material/normals.d.ts +2 -1
  121. package/lib/dist/material/normals.d.ts.map +1 -1
  122. package/lib/dist/material/normals.js +1 -4
  123. package/lib/dist/material/solid.d.ts +2 -1
  124. package/lib/dist/material/solid.d.ts.map +1 -1
  125. package/lib/dist/material/solid.js +6 -9
  126. package/lib/dist/math/common.test.d.ts +2 -0
  127. package/lib/dist/math/common.test.d.ts.map +1 -0
  128. package/lib/dist/math/common.test.js +22 -0
  129. package/lib/dist/math/index.d.ts +0 -1
  130. package/lib/dist/math/index.d.ts.map +1 -1
  131. package/lib/dist/math/index.js +1 -2
  132. package/lib/dist/math/mat3.d.ts +44 -16
  133. package/lib/dist/math/mat3.d.ts.map +1 -1
  134. package/lib/dist/math/mat3.js +140 -74
  135. package/lib/dist/math/mat3.test.d.ts +2 -0
  136. package/lib/dist/math/mat3.test.d.ts.map +1 -0
  137. package/lib/dist/math/mat3.test.js +32 -0
  138. package/lib/dist/math/mat4.d.ts +54 -121
  139. package/lib/dist/math/mat4.d.ts.map +1 -1
  140. package/lib/dist/math/mat4.js +167 -288
  141. package/lib/dist/math/quat.d.ts +9 -4
  142. package/lib/dist/math/quat.d.ts.map +1 -1
  143. package/lib/dist/math/quat.js +57 -70
  144. package/lib/dist/math/quat.test.d.ts +1 -0
  145. package/lib/dist/math/quat.test.d.ts.map +1 -1
  146. package/lib/dist/math/quat.test.js +81 -27
  147. package/lib/dist/math/transfo.d.ts +32 -5
  148. package/lib/dist/math/transfo.d.ts.map +1 -1
  149. package/lib/dist/math/transfo.js +135 -46
  150. package/lib/dist/math/vec2.js +6 -6
  151. package/lib/dist/math/vec3.d.ts +11 -3
  152. package/lib/dist/math/vec3.d.ts.map +1 -1
  153. package/lib/dist/math/vec3.js +30 -17
  154. package/lib/dist/math/vec3.test.js +20 -1
  155. package/lib/dist/math/vec4.d.ts +12 -3
  156. package/lib/dist/math/vec4.d.ts.map +1 -1
  157. package/lib/dist/math/vec4.js +36 -18
  158. package/lib/dist/painter/{axis/axis.d.ts → axes/axes.d.ts} +4 -4
  159. package/lib/dist/painter/{axis/axis.d.ts.map → axes/axes.d.ts.map} +1 -1
  160. package/lib/dist/painter/{axis/axis.frag → axes/axes.frag} +0 -0
  161. package/lib/dist/painter/axes/axes.js +82 -0
  162. package/lib/dist/painter/{axis/axis.vert → axes/axes.vert} +0 -0
  163. package/lib/dist/painter/axes/index.d.ts +2 -0
  164. package/lib/dist/painter/axes/index.d.ts.map +1 -0
  165. package/lib/dist/painter/axes/index.js +2 -0
  166. package/lib/dist/painter/background/background.d.ts +4 -3
  167. package/lib/dist/painter/background/background.d.ts.map +1 -1
  168. package/lib/dist/painter/background/background.js +15 -17
  169. package/lib/dist/painter/clear.d.ts +4 -3
  170. package/lib/dist/painter/clear.d.ts.map +1 -1
  171. package/lib/dist/painter/clear.js +18 -22
  172. package/lib/dist/painter/debug/index.d.ts +2 -0
  173. package/lib/dist/painter/debug/index.d.ts.map +1 -0
  174. package/lib/dist/painter/debug/index.js +2 -0
  175. package/lib/dist/painter/debug/stencil/index.d.ts +2 -0
  176. package/lib/dist/painter/debug/stencil/index.d.ts.map +1 -0
  177. package/lib/dist/painter/debug/stencil/index.js +2 -0
  178. package/lib/dist/painter/debug/stencil/stencil.d.ts +11 -0
  179. package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -0
  180. package/lib/dist/painter/debug/stencil/stencil.frag +10 -0
  181. package/lib/dist/painter/debug/stencil/stencil.js +53 -0
  182. package/lib/dist/painter/debug/stencil/stencil.vert +7 -0
  183. package/lib/dist/painter/depth.d.ts +7 -5
  184. package/lib/dist/painter/depth.d.ts.map +1 -1
  185. package/lib/dist/painter/depth.js +5 -11
  186. package/lib/dist/painter/filter/filter.d.ts +3 -3
  187. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  188. package/lib/dist/painter/filter/filter.js +44 -46
  189. package/lib/dist/painter/framebuffer.d.ts +25 -4
  190. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  191. package/lib/dist/painter/framebuffer.js +76 -43
  192. package/lib/dist/painter/group.js +11 -12
  193. package/lib/dist/painter/index.d.ts +2 -1
  194. package/lib/dist/painter/index.d.ts.map +1 -1
  195. package/lib/dist/painter/index.js +3 -2
  196. package/lib/dist/painter/logic.js +3 -3
  197. package/lib/dist/painter/mesh/gltf/gltf.d.ts +1 -1
  198. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  199. package/lib/dist/painter/mesh/gltf/gltf.js +9 -10
  200. package/lib/dist/painter/mesh/mesh/mesh.d.ts +2 -2
  201. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  202. package/lib/dist/painter/mesh/mesh/mesh.js +45 -43
  203. package/lib/dist/painter/mesh/normals/normals.d.ts.map +1 -1
  204. package/lib/dist/painter/mesh/normals/normals.js +19 -22
  205. package/lib/dist/painter/node/node.d.ts +12 -12
  206. package/lib/dist/painter/node/node.d.ts.map +1 -1
  207. package/lib/dist/painter/node/node.js +32 -43
  208. package/lib/dist/painter/painter.js +11 -9
  209. package/lib/dist/painter/segments/segments.d.ts +11 -3
  210. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  211. package/lib/dist/painter/segments/segments.js +38 -38
  212. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  213. package/lib/dist/painter/skybox/skybox.js +13 -14
  214. package/lib/dist/painter/state/state.d.ts +4 -6
  215. package/lib/dist/painter/state/state.d.ts.map +1 -1
  216. package/lib/dist/painter/state/state.js +83 -65
  217. package/lib/dist/parser/for-each-line.d.ts.map +1 -1
  218. package/lib/dist/parser/for-each-line.js +5 -5
  219. package/lib/dist/parser/gltf/gltf.d.ts +5 -2
  220. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  221. package/lib/dist/parser/gltf/gltf.js +114 -83
  222. package/lib/dist/parser/gltf/parser.js +10 -11
  223. package/lib/dist/parser/mesh/wavefront.d.ts.map +1 -1
  224. package/lib/dist/parser/mesh/wavefront.js +106 -111
  225. package/lib/dist/program/program.d.ts +2 -2
  226. package/lib/dist/program/program.d.ts.map +1 -1
  227. package/lib/dist/program/program.js +27 -33
  228. package/lib/dist/{ref-map.d.ts → reference-map.d.ts} +4 -4
  229. package/lib/dist/reference-map.d.ts.map +1 -0
  230. package/lib/dist/reference-map.js +52 -0
  231. package/lib/dist/shader/code.d.ts +2 -2
  232. package/lib/dist/shader/code.d.ts.map +1 -1
  233. package/lib/dist/shader/code.js +12 -12
  234. package/lib/dist/shader/fragment.js +7 -19
  235. package/lib/dist/shader/vertex.js +7 -12
  236. package/lib/dist/table/index.d.ts +2 -0
  237. package/lib/dist/table/index.d.ts.map +1 -0
  238. package/lib/dist/table/index.js +2 -0
  239. package/lib/dist/table/table.d.ts +41 -0
  240. package/lib/dist/table/table.d.ts.map +1 -0
  241. package/lib/dist/table/table.js +104 -0
  242. package/lib/dist/texture/index.d.ts +1 -1
  243. package/lib/dist/texture/index.d.ts.map +1 -1
  244. package/lib/dist/texture/index.js +2 -2
  245. package/lib/dist/texture/texture-cube.d.ts +24 -0
  246. package/lib/dist/texture/texture-cube.d.ts.map +1 -0
  247. package/lib/dist/texture/texture-cube.js +69 -0
  248. package/lib/dist/texture/texture2d.d.ts +47 -21
  249. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  250. package/lib/dist/texture/texture2d.js +178 -133
  251. package/lib/dist/types/elements.js +2 -2
  252. package/lib/dist/types/gltf.js +3 -9
  253. package/lib/dist/types/guards.d.ts.map +1 -1
  254. package/lib/dist/types/guards.js +36 -37
  255. package/lib/dist/types/index.d.ts +1 -3
  256. package/lib/dist/types/index.d.ts.map +1 -1
  257. package/lib/dist/types/index.js +2 -4
  258. package/lib/dist/types/program.d.ts +0 -37
  259. package/lib/dist/types/program.d.ts.map +1 -1
  260. package/lib/dist/types/{textureCube.d.ts → texture-cube.d.ts} +7 -16
  261. package/lib/dist/types/texture-cube.d.ts.map +1 -0
  262. package/lib/dist/types/texture-cube.js +2 -0
  263. package/lib/dist/types/webgl.d.ts +15 -5
  264. package/lib/dist/types/webgl.d.ts.map +1 -1
  265. package/lib/dist/types/webgl.js +37 -30
  266. package/lib/dist/utils/action/camera.d.ts.map +1 -1
  267. package/lib/dist/utils/action/camera.js +15 -25
  268. package/lib/dist/utils/action/transfo.d.ts +3 -0
  269. package/lib/dist/utils/action/transfo.d.ts.map +1 -0
  270. package/lib/dist/utils/action/transfo.js +18 -0
  271. package/lib/dist/utils/action/vector.d.ts.map +1 -1
  272. package/lib/dist/utils/action/vector.js +11 -11
  273. package/lib/dist/utils/assert.d.ts.map +1 -1
  274. package/lib/dist/utils/assert.js +2 -2
  275. package/lib/dist/utils/bbox.js +3 -3
  276. package/lib/dist/utils/bbox.test.js +18 -19
  277. package/lib/dist/utils/canvas.d.ts +28 -0
  278. package/lib/dist/utils/canvas.d.ts.map +1 -1
  279. package/lib/dist/utils/canvas.js +59 -5
  280. package/lib/dist/utils/{ease-func/ease-func.d.ts → easing-function/easing-function.d.ts} +1 -1
  281. package/lib/dist/utils/easing-function/easing-function.d.ts.map +1 -0
  282. package/lib/dist/utils/easing-function/easing-function.js +142 -0
  283. package/lib/dist/utils/easing-function/index.d.ts +2 -0
  284. package/lib/dist/utils/easing-function/index.d.ts.map +1 -0
  285. package/lib/dist/utils/easing-function/index.js +2 -0
  286. package/lib/dist/utils/framebuffer.d.ts +2 -0
  287. package/lib/dist/utils/framebuffer.d.ts.map +1 -0
  288. package/lib/dist/utils/framebuffer.js +7 -0
  289. package/lib/dist/utils/fullscreen.d.ts +1 -1
  290. package/lib/dist/utils/fullscreen.d.ts.map +1 -1
  291. package/lib/dist/utils/fullscreen.js +44 -37
  292. package/lib/dist/utils/index.d.ts +4 -1
  293. package/lib/dist/utils/index.d.ts.map +1 -1
  294. package/lib/dist/utils/index.js +5 -2
  295. package/lib/dist/utils/math.d.ts +4 -2
  296. package/lib/dist/utils/math.d.ts.map +1 -1
  297. package/lib/dist/utils/math.js +12 -4
  298. package/lib/dist/utils/pbo.d.ts +9 -0
  299. package/lib/dist/utils/pbo.d.ts.map +1 -0
  300. package/lib/dist/utils/pbo.js +32 -0
  301. package/lib/dist/utils/{ref-map.d.ts → reference-map.d.ts} +4 -4
  302. package/lib/dist/utils/reference-map.d.ts.map +1 -0
  303. package/lib/dist/utils/reference-map.js +52 -0
  304. package/lib/dist/utils/state/blend.d.ts +5 -5
  305. package/lib/dist/utils/state/blend.d.ts.map +1 -1
  306. package/lib/dist/utils/state/blend.js +10 -10
  307. package/lib/dist/utils/state/depth.d.ts +2 -2
  308. package/lib/dist/utils/state/depth.d.ts.map +1 -1
  309. package/lib/dist/utils/state/depth.js +5 -5
  310. package/lib/dist/utils/state/stencil.d.ts +55 -1
  311. package/lib/dist/utils/state/stencil.d.ts.map +1 -1
  312. package/lib/dist/utils/state/stencil.js +28 -46
  313. package/lib/dist/utils/template.js +3 -3
  314. package/lib/dist/utils/webgl.d.ts +1 -1
  315. package/lib/dist/utils/webgl.d.ts.map +1 -1
  316. package/lib/dist/utils/webgl.js +5 -5
  317. package/lib/dist/vao/vao.d.ts +2 -1
  318. package/lib/dist/vao/vao.d.ts.map +1 -1
  319. package/lib/dist/vao/vao.js +19 -19
  320. package/lib/dist/webgl/index.d.ts +2 -0
  321. package/lib/dist/webgl/index.d.ts.map +1 -0
  322. package/lib/dist/webgl/index.js +2 -0
  323. package/lib/dist/webgl/texture/index.d.ts +3 -0
  324. package/lib/dist/webgl/texture/index.d.ts.map +1 -0
  325. package/lib/dist/webgl/texture/index.js +3 -0
  326. package/lib/dist/webgl/texture/texture2d.d.ts +38 -0
  327. package/lib/dist/webgl/texture/texture2d.d.ts.map +1 -0
  328. package/lib/dist/webgl/texture/texture2d.js +35 -0
  329. package/lib/dist/webgl/texture/types.d.ts +4 -0
  330. package/lib/dist/webgl/texture/types.d.ts.map +1 -0
  331. package/lib/dist/webgl/texture/types.js +2 -0
  332. package/package.json +1 -1
  333. package/lib/dist/math/math.d.ts +0 -9
  334. package/lib/dist/math/math.d.ts.map +0 -1
  335. package/lib/dist/math/math.js +0 -13
  336. package/lib/dist/painter/axis/axis.js +0 -84
  337. package/lib/dist/painter/axis/index.d.ts +0 -2
  338. package/lib/dist/painter/axis/index.d.ts.map +0 -1
  339. package/lib/dist/painter/axis/index.js +0 -2
  340. package/lib/dist/painter/framebuffer-old.d.ts +0 -38
  341. package/lib/dist/painter/framebuffer-old.d.ts.map +0 -1
  342. package/lib/dist/painter/framebuffer-old.js +0 -102
  343. package/lib/dist/painter/framebuffer.backup.d.ts +0 -39
  344. package/lib/dist/painter/framebuffer.backup.d.ts.map +0 -1
  345. package/lib/dist/painter/framebuffer.backup.js +0 -125
  346. package/lib/dist/painter/mesh/hull/hull.d.ts +0 -12
  347. package/lib/dist/painter/mesh/hull/hull.d.ts.map +0 -1
  348. package/lib/dist/painter/mesh/hull/hull.js +0 -11
  349. package/lib/dist/painter/node.d.ts +0 -32
  350. package/lib/dist/painter/node.d.ts.map +0 -1
  351. package/lib/dist/painter/node.js +0 -73
  352. package/lib/dist/ref-map.d.ts.map +0 -1
  353. package/lib/dist/ref-map.js +0 -48
  354. package/lib/dist/resource/index.d.ts +0 -5
  355. package/lib/dist/resource/index.d.ts.map +0 -1
  356. package/lib/dist/resource/index.js +0 -5
  357. package/lib/dist/resource/program.d.ts +0 -10
  358. package/lib/dist/resource/program.d.ts.map +0 -1
  359. package/lib/dist/resource/program.js +0 -20
  360. package/lib/dist/resource/resource.d.ts +0 -17
  361. package/lib/dist/resource/resource.d.ts.map +0 -1
  362. package/lib/dist/resource/resource.js +0 -48
  363. package/lib/dist/resource/texture2d.d.ts +0 -10
  364. package/lib/dist/resource/texture2d.d.ts.map +0 -1
  365. package/lib/dist/resource/texture2d.js +0 -20
  366. package/lib/dist/resource/textureCube.d.ts +0 -9
  367. package/lib/dist/resource/textureCube.d.ts.map +0 -1
  368. package/lib/dist/resource/textureCube.js +0 -17
  369. package/lib/dist/scene/scene-node.d.ts +0 -8
  370. package/lib/dist/scene/scene-node.d.ts.map +0 -1
  371. package/lib/dist/scene/scene-node.js +0 -13
  372. package/lib/dist/texture/textureCube.d.ts +0 -17
  373. package/lib/dist/texture/textureCube.d.ts.map +0 -1
  374. package/lib/dist/texture/textureCube.js +0 -87
  375. package/lib/dist/types/context.d.ts +0 -27
  376. package/lib/dist/types/context.d.ts.map +0 -1
  377. package/lib/dist/types/context.js +0 -2
  378. package/lib/dist/types/texture2d.d.ts +0 -36
  379. package/lib/dist/types/texture2d.d.ts.map +0 -1
  380. package/lib/dist/types/texture2d.js +0 -2
  381. package/lib/dist/types/textureCube.d.ts.map +0 -1
  382. package/lib/dist/types/textureCube.js +0 -2
  383. package/lib/dist/utils/ease-func/ease-func.d.ts.map +0 -1
  384. package/lib/dist/utils/ease-func/ease-func.js +0 -142
  385. package/lib/dist/utils/ease-func/index.d.ts +0 -2
  386. package/lib/dist/utils/ease-func/index.d.ts.map +0 -1
  387. package/lib/dist/utils/ease-func/index.js +0 -2
  388. package/lib/dist/utils/fetch/fetch.d.ts +0 -2
  389. package/lib/dist/utils/fetch/fetch.d.ts.map +0 -1
  390. package/lib/dist/utils/fetch/fetch.js +0 -5
  391. package/lib/dist/utils/fetch/index.d.ts +0 -2
  392. package/lib/dist/utils/fetch/index.d.ts.map +0 -1
  393. package/lib/dist/utils/fetch/index.js +0 -2
  394. package/lib/dist/utils/ref-map.d.ts.map +0 -1
  395. package/lib/dist/utils/ref-map.js +0 -48
@@ -1,76 +1,33 @@
1
1
  import { TgdPainterGroup } from "../group.js";
2
2
  import { webglBlendGet, webglBlendSet, webglDepthGet, webglDepthSet, webglCullGet, webglCullSet, webglStencilGet, webglStencilSet, } from "./../../utils/state/index.js";
3
3
  export class TgdPainterState extends TgdPainterGroup {
4
- _color;
5
- _blend;
6
- _depth;
7
- _cull;
8
- _stencil;
9
- constructor(context, { color, blend, depth, cull, stencil, name, children = [], onEnter, onExit, } = {}) {
4
+ static do(options, action) {
5
+ const { onEnterActions, onExitActions } = prepareActions(options.gl, options);
6
+ for (const action of onEnterActions)
7
+ action();
8
+ action();
9
+ for (const action of onExitActions)
10
+ action();
11
+ }
12
+ constructor(context, options = {}) {
13
+ var _a;
10
14
  const { gl } = context;
11
- const onEnterActions = [];
12
- const onExitActions = [];
13
- const colorMask = figureOutColorMask(color);
14
- if (Array.isArray(colorMask)) {
15
- onEnterActions.push(() => {
16
- this._color = gl.getParameter(gl.COLOR_WRITEMASK);
17
- gl.colorMask(...colorMask);
18
- });
19
- onExitActions.push(() => {
20
- gl.colorMask(...(this._color ?? [true, true, true, true]));
21
- });
22
- }
23
- if (blend) {
24
- onEnterActions.push(() => {
25
- this._blend = webglBlendGet(gl);
26
- webglBlendSet(gl, blend);
27
- });
28
- onExitActions.push(() => {
29
- if (this._blend)
30
- webglBlendSet(gl, this._blend);
31
- });
32
- }
33
- if (depth) {
34
- onEnterActions.push(() => {
35
- this._depth = webglDepthGet(gl);
36
- webglDepthSet(gl, depth);
37
- });
38
- onExitActions.push(() => {
39
- if (this._depth)
40
- webglDepthSet(gl, this._depth);
41
- });
42
- }
43
- if (cull) {
44
- onEnterActions.push(() => {
45
- this._cull = webglCullGet(gl);
46
- webglCullSet(gl, cull);
47
- });
48
- onExitActions.push(() => {
49
- if (this._cull)
50
- webglCullSet(gl, this._cull);
51
- });
52
- }
53
- if (stencil) {
54
- onEnterActions.push(() => {
55
- this._stencil = webglStencilGet(gl);
56
- webglStencilSet(gl, stencil);
57
- });
58
- onExitActions.push(() => {
59
- if (this._stencil)
60
- webglStencilSet(gl, this._stencil);
61
- });
62
- }
63
- super(children, {
15
+ const { onEnterActions, onExitActions } = prepareActions(gl, options);
16
+ super(options.children, {
64
17
  onEnter(time, delay) {
65
- onEnter?.(time, delay);
66
- onEnterActions.forEach(f => f());
18
+ var _a;
19
+ (_a = options.onEnter) === null || _a === void 0 ? void 0 : _a.call(options, time, delay);
20
+ for (const f of onEnterActions)
21
+ f();
67
22
  },
68
23
  onExit(time, delay) {
69
- onExitActions.forEach(f => f());
70
- onExit?.(time, delay);
24
+ var _a;
25
+ for (const f of onExitActions)
26
+ f();
27
+ (_a = options.onExit) === null || _a === void 0 ? void 0 : _a.call(options, time, delay);
71
28
  },
72
29
  });
73
- this.name = name ?? `State/${this.name}`;
30
+ this.name = (_a = options.name) !== null && _a !== void 0 ? _a : `State/${this.name}`;
74
31
  }
75
32
  }
76
33
  function figureOutColorMask(color) {
@@ -80,4 +37,65 @@ function figureOutColorMask(color) {
80
37
  return [false, false, false, false];
81
38
  return color;
82
39
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zdGF0ZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTFDLE9BQU8sRUFDSCxhQUFhLEVBRWIsYUFBYSxFQUNiLGFBQWEsRUFFYixhQUFhLEVBQ2IsWUFBWSxFQUVaLFlBQVksRUFFWixlQUFlLEVBQ2YsZUFBZSxHQUNsQixNQUFNLGtCQUFrQixDQUFBO0FBcUJ6QixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0lBQ3hDLE1BQU0sQ0FBdUM7SUFDN0MsTUFBTSxDQUFvQjtJQUMxQixNQUFNLENBQW9CO0lBQzFCLEtBQUssQ0FBbUI7SUFDeEIsUUFBUSxDQUFzQjtJQUV0QyxZQUNJLE9BQW1CLEVBQ25CLEVBQ0ksS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsSUFBSSxFQUNKLE9BQU8sRUFDUCxJQUFJLEVBQ0osUUFBUSxHQUFHLEVBQUUsRUFDYixPQUFPLEVBQ1AsTUFBTSxNQUMyQixFQUFFO1FBRXZDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdEIsTUFBTSxjQUFjLEdBQXNCLEVBQUUsQ0FBQTtRQUM1QyxNQUFNLGFBQWEsR0FBc0IsRUFBRSxDQUFBO1FBQzNDLE1BQU0sU0FBUyxHQUNYLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNCLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FLL0MsQ0FBQTtnQkFDRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7WUFDOUIsQ0FBQyxDQUFD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
40
+ function prepareActions(gl, options) {
41
+ const { color, blend, depth, cull, stencil } = options;
42
+ const onEnterActions = [];
43
+ const onExitActions = [];
44
+ const colorMask = figureOutColorMask(color);
45
+ if (Array.isArray(colorMask)) {
46
+ let savedColorMask;
47
+ onEnterActions.push(() => {
48
+ savedColorMask = gl.getParameter(gl.COLOR_WRITEMASK);
49
+ gl.colorMask(...colorMask);
50
+ });
51
+ onExitActions.push(() => {
52
+ gl.colorMask(...(savedColorMask !== null && savedColorMask !== void 0 ? savedColorMask : [true, true, true, true]));
53
+ });
54
+ }
55
+ if (blend) {
56
+ let savedBlend;
57
+ onEnterActions.push(() => {
58
+ savedBlend = webglBlendGet(gl);
59
+ webglBlendSet(gl, blend);
60
+ });
61
+ onExitActions.push(() => {
62
+ if (savedBlend)
63
+ webglBlendSet(gl, savedBlend);
64
+ });
65
+ }
66
+ if (depth) {
67
+ let savedDepth;
68
+ onEnterActions.push(() => {
69
+ savedDepth = webglDepthGet(gl);
70
+ webglDepthSet(gl, depth);
71
+ });
72
+ onExitActions.push(() => {
73
+ if (savedDepth)
74
+ webglDepthSet(gl, savedDepth);
75
+ });
76
+ }
77
+ if (cull) {
78
+ let savedCull;
79
+ onEnterActions.push(() => {
80
+ savedCull = webglCullGet(gl);
81
+ webglCullSet(gl, cull);
82
+ });
83
+ onExitActions.push(() => {
84
+ if (savedCull)
85
+ webglCullSet(gl, savedCull);
86
+ });
87
+ }
88
+ if (stencil) {
89
+ let savedStencil;
90
+ onEnterActions.push(() => {
91
+ savedStencil = webglStencilGet(gl);
92
+ webglStencilSet(gl, stencil);
93
+ });
94
+ onExitActions.push(() => {
95
+ if (savedStencil)
96
+ webglStencilSet(gl, savedStencil);
97
+ });
98
+ }
99
+ return { onEnterActions, onExitActions };
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9zdGF0ZS9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTFDLE9BQU8sRUFDSCxhQUFhLEVBRWIsYUFBYSxFQUNiLGFBQWEsRUFFYixhQUFhLEVBQ2IsWUFBWSxFQUVaLFlBQVksRUFFWixlQUFlLEVBQ2YsZUFBZSxHQUNsQixNQUFNLGtCQUFrQixDQUFBO0FBcUJ6QixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0lBQ3pDLE1BQU0sQ0FBQyxFQUFFLENBQ1osT0FLQyxFQUNELE1BQWtCO1FBRWxCLE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLEdBQUcsY0FBYyxDQUNwRCxPQUFPLENBQUMsRUFBRSxFQUNWLE9BQU8sQ0FDVixDQUFBO1FBQ0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxjQUFjO1lBQUUsTUFBTSxFQUFFLENBQUE7UUFDN0MsTUFBTSxFQUFFLENBQUE7UUFDUixLQUFLLE1BQU0sTUFBTSxJQUFJLGFBQWE7WUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsWUFDSSxPQUFtQixFQUNuQixVQUEyQyxFQUFFOztRQUU3QyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLEdBQUcsY0FBYyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNyRSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUs7O2dCQUNmLE1BQUEsT0FBTyxDQUFDLE9BQU8sd0RBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWM7b0JBQUUsQ0FBQyxFQUFFLENBQUE7WUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"for-each-line.d.ts","sourceRoot":"","sources":["../../src/parser/for-each-line.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW,YAAuB,MAAM,uCAYpD,CAAA"}
1
+ {"version":3,"file":"for-each-line.d.ts","sourceRoot":"","sources":["../../src/parser/for-each-line.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAc,SAAS,MAAM,uCAYpD,CAAA"}
@@ -2,16 +2,16 @@
2
2
  * Generator to iterate on each lines of a big string content.
3
3
  */
4
4
  export const forEachLine = function* (content) {
5
- const len = content.length;
5
+ const length = content.length;
6
6
  let index = 0;
7
7
  let cursor = 0;
8
- while (index > -1 && index < len) {
8
+ while (index > -1 && index < length) {
9
9
  index = content.indexOf("\n", cursor);
10
10
  if (index < 0)
11
11
  break;
12
- yield content.substring(cursor, index).trim();
12
+ yield content.slice(cursor, index).trim();
13
13
  cursor = index + 1;
14
14
  }
15
- return content.substring(cursor).trim();
15
+ return content.slice(cursor).trim();
16
16
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWVhY2gtbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXIvZm9yLWVhY2gtbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsRUFBRSxPQUFlO0lBQ2pELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDMUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQy9CLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBQUUsTUFBSztRQUVwQixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzdDLE1BQU0sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDM0MsQ0FBQyxDQUFBIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLWVhY2gtbGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXIvZm9yLWVhY2gtbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsRUFBRSxPQUFlO0lBQ2pELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDN0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBQUUsTUFBSztRQUVwQixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3pDLE1BQU0sR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDdkMsQ0FBQyxDQUFBIn0=
@@ -4,8 +4,9 @@
4
4
  */
5
5
  import { TgdDataset } from "../../dataset";
6
6
  import { TgdFormatGltf, TgdFormatGltfAccessor, TgdFormatGltfMaterial, TgdFormatGltfMesh, TgdFormatGltfMeshPrimitive, TgdFormatGltfNode, TgdFormatGltfScene } from "../../types/gltf";
7
- import { TgdTexture2DOptions, TgdTypeArrayForElements } from "../../types";
7
+ import { TgdTypeArrayForElements } from "../../types";
8
8
  import { TgdGeometry } from "../../geometry";
9
+ import { TgdTexture2D } from "../../texture";
9
10
  export declare class TgdParserGLTransfertFormatBinary {
10
11
  readonly gltf: Readonly<TgdFormatGltf>;
11
12
  private readonly chunks;
@@ -27,7 +28,9 @@ export declare class TgdParserGLTransfertFormatBinary {
27
28
  };
28
29
  getMeshPrimitiveIndices(meshIndex?: number, primitiveIndex?: number): TgdTypeArrayForElements;
29
30
  getAccessorByAttributeName(primitive: TgdFormatGltfMeshPrimitive, attribName: string): TgdFormatGltfAccessor;
30
- getTexture2DOptions(textureIndex: number): TgdTexture2DOptions;
31
+ createTexture2D(context: {
32
+ gl: WebGL2RenderingContext;
33
+ }, textureIndex: number): TgdTexture2D;
31
34
  loadImage(imageIndex: number): Promise<HTMLImageElement | undefined>;
32
35
  getImageURL(imageIndex: number): string | undefined;
33
36
  getBufferViewData(accessor: TgdFormatGltfAccessor): Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"gltf.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/gltf.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAwB,MAAM,cAAc,CAAA;AAE/D,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEH,mBAAmB,EACnB,uBAAuB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,qBAAa,gCAAgC;IACzC,SAAgB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGzB;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAQlC;gBAES,OAAO,EAAE,WAAW;IAYhC,SAAS,IAAI,kBAAkB,EAAE;IAIjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAShD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAS7C,WAAW,CAAC,aAAa,SAAI,GAAG,qBAAqB;IASrD,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IASzD,OAAO,CAAC,SAAS,SAAI,GAAG,iBAAiB;IASzC,gBAAgB,CACZ,SAAS,SAAI,EACb,cAAc,SAAI,GACnB;QACC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB;IAYD,uBAAuB,CACnB,SAAS,SAAI,EACb,cAAc,SAAI,GACnB,uBAAuB;IAW1B,0BAA0B,CACtB,SAAS,EAAE,0BAA0B,EACrC,UAAU,EAAE,MAAM,GACnB,qBAAqB;IAwBxB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;IAexD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA2B1E,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAsBnD,iBAAiB,CACb,QAAQ,EAAE,qBAAqB,GAE7B,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,YAAY;IAClB,iBAAiB,CACb,eAAe,EAAE,MAAM,EACvB,IAAI,CAAC,EACC,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,SAAS,GAEb,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,YAAY;IAoDlB,yBAAyB,CACrB,eAAe,EAAE,MAAM,GACxB,qBAAqB,GAAG,SAAS;IAMpC,SAAS,CACL,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAI,EACb,cAAc,SAAI,EAClB,mBAAmB,CAAC,EAAE,MAAM;IAgChC,YAAY,CAAC,EACT,cAAc,EACd,SAAa,EACb,cAAkB,EAClB,eAA4B,EAC5B,aAAwB,EACxB,oBAAmC,GACtC,GAAE;QACC,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAC3B,GAAG,WAAW;CAuEvB"}
1
+ {"version":3,"file":"gltf.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/gltf.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { __awaiter } from "tslib";
1
2
  /**
2
3
  * GLTF specs can be found here:
3
4
  * https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
@@ -6,58 +7,63 @@ import { TgdDataset } from "./../../dataset/index.js";
6
7
  import { parseGLB } from "./parser.js";
7
8
  import { assertTgdTypeArrayForElements, } from "./../../types/index.js";
8
9
  import { TgdGeometry } from "./../../geometry/index.js";
10
+ import { TgdTexture2D } from "./../../texture/index.js";
9
11
  export class TgdParserGLTransfertFormatBinary {
10
- gltf;
11
- chunks;
12
- cacheImages = new Map();
13
- cacheImageURLs = new Map();
14
- cacheBufferViewDatas = new Map();
15
12
  constructor(content) {
13
+ this.cacheImages = new Map();
14
+ this.cacheImageURLs = new Map();
15
+ this.cacheBufferViewDatas = new Map();
16
16
  try {
17
17
  const data = parseGLB(content);
18
18
  this.gltf = data.gltf;
19
19
  this.chunks = data.chunks;
20
20
  }
21
- catch (ex) {
22
- const message = ex instanceof Error ? ex.message : JSON.stringify(ex);
23
- throw Error(`[TgdParserGLTransfertFormatBinary] ${message}`);
21
+ catch (error) {
22
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
23
+ throw new Error(`[TgdParserGLTransfertFormatBinary] ${message}`);
24
24
  }
25
25
  }
26
26
  getScenes() {
27
- return this.gltf.scenes ?? [];
27
+ var _a;
28
+ return (_a = this.gltf.scenes) !== null && _a !== void 0 ? _a : [];
28
29
  }
29
30
  getScene(sceneIndex) {
30
- const scene = this.gltf.scenes?.[sceneIndex];
31
+ var _a;
32
+ const scene = (_a = this.gltf.scenes) === null || _a === void 0 ? void 0 : _a[sceneIndex];
31
33
  if (!scene) {
32
- throw Error(`Asset has no scene with index #${sceneIndex}!`);
34
+ throw new Error(`Asset has no scene with index #${sceneIndex}!`);
33
35
  }
34
36
  return scene;
35
37
  }
36
38
  getNode(nodeIndex) {
37
- const node = this.gltf.nodes?.[nodeIndex];
39
+ var _a;
40
+ const node = (_a = this.gltf.nodes) === null || _a === void 0 ? void 0 : _a[nodeIndex];
38
41
  if (!node) {
39
- throw Error(`Asset has no node with index #${nodeIndex}!`);
42
+ throw new Error(`Asset has no node with index #${nodeIndex}!`);
40
43
  }
41
44
  return node;
42
45
  }
43
46
  getAccessor(accessorIndex = 0) {
44
- const accessor = this.gltf.accessors?.[accessorIndex];
47
+ var _a;
48
+ const accessor = (_a = this.gltf.accessors) === null || _a === void 0 ? void 0 : _a[accessorIndex];
45
49
  if (!accessor) {
46
- throw Error(`Asset has no accessor with index #${accessorIndex}!`);
50
+ throw new Error(`Asset has no accessor with index #${accessorIndex}!`);
47
51
  }
48
52
  return accessor;
49
53
  }
50
54
  getMaterial(materialIndex) {
51
- const material = this.gltf.materials?.[materialIndex];
55
+ var _a;
56
+ const material = (_a = this.gltf.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
52
57
  if (!material) {
53
- throw Error(`Asset has no material with index #${materialIndex}!`);
58
+ throw new Error(`Asset has no material with index #${materialIndex}!`);
54
59
  }
55
60
  return material;
56
61
  }
57
62
  getMesh(meshIndex = 0) {
58
- const mesh = this.gltf.meshes?.[meshIndex];
63
+ var _a;
64
+ const mesh = (_a = this.gltf.meshes) === null || _a === void 0 ? void 0 : _a[meshIndex];
59
65
  if (!mesh) {
60
- throw Error(`Asset has no mesh with index #${meshIndex}!`);
66
+ throw new Error(`Asset has no mesh with index #${meshIndex}!`);
61
67
  }
62
68
  return mesh;
63
69
  }
@@ -65,74 +71,91 @@ export class TgdParserGLTransfertFormatBinary {
65
71
  const mesh = this.getMesh(meshIndex);
66
72
  const primitive = mesh.primitives[primitiveIndex];
67
73
  if (!primitive) {
68
- throw Error(`Asset has no primitive #${primitiveIndex} in mesh #${meshIndex}!`);
74
+ throw new Error(`Asset has no primitive #${primitiveIndex} in mesh #${meshIndex}!`);
69
75
  }
70
76
  return primitive;
71
77
  }
72
78
  getMeshPrimitiveIndices(meshIndex = 0, primitiveIndex = 0) {
79
+ var _a, _b;
73
80
  const primitive = this.getMeshPrimitive(meshIndex, primitiveIndex);
74
- const accessor = this.getAccessor(primitive.indices ?? 0);
75
- const elements = this.getBufferViewData(accessor.bufferView ?? 0, accessor.componentType);
81
+ const accessor = this.getAccessor((_a = primitive.indices) !== null && _a !== void 0 ? _a : 0);
82
+ const elements = this.getBufferViewData((_b = accessor.bufferView) !== null && _b !== void 0 ? _b : 0, accessor.componentType);
76
83
  assertTgdTypeArrayForElements(elements);
77
84
  return elements;
78
85
  }
79
86
  getAccessorByAttributeName(primitive, attribName) {
80
87
  const { attributes } = primitive;
81
88
  if (!attributes || Object.keys(attributes).length === 0)
82
- throw Error("No attributes found!");
89
+ throw new Error("No attributes found!");
83
90
  const accessorIndex = attributes[attribName];
84
91
  if (typeof accessorIndex !== "number") {
85
- throw Error(`No attribute with name "${attribName}"!\nAvailable names are: ${Object.keys(attributes)
92
+ throw new TypeError(`No attribute with name "${attribName}"!\nAvailable names are: ${Object.keys(attributes)
86
93
  .map(name => JSON.stringify(name))
87
94
  .join(", ")}.`);
88
95
  }
89
96
  try {
90
97
  return this.getAccessor(accessorIndex);
91
98
  }
92
- catch (ex) {
93
- const msg = ex instanceof Error ? ex.message : JSON.stringify(ex);
94
- throw Error(`Attribute "${attribName}" pointed to an inexisting accessor!\n${msg}`);
99
+ catch (error) {
100
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
101
+ throw new Error(`Attribute "${attribName}" pointed to an inexisting accessor!\n${message}`);
95
102
  }
96
103
  }
97
- getTexture2DOptions(textureIndex) {
98
- const texture = this.gltf.textures?.[textureIndex];
99
- if (!texture) {
100
- throw Error(`Asset has no texture with index #${textureIndex}!`);
104
+ createTexture2D(context, textureIndex) {
105
+ var _a, _b, _c, _d, _e;
106
+ const gltfTex = (_a = this.gltf.textures) === null || _a === void 0 ? void 0 : _a[textureIndex];
107
+ if (!gltfTex) {
108
+ throw new Error(`Asset has no texture with index #${textureIndex}!`);
101
109
  }
102
- const source = texture.source ?? texture.extensions?.EXT_texture_webp?.source ?? 0;
110
+ const source = (_e = (_b = gltfTex.source) !== null && _b !== void 0 ? _b : (_d = (_c = gltfTex.extensions) === null || _c === void 0 ? void 0 : _c.EXT_texture_webp) === null || _d === void 0 ? void 0 : _d.source) !== null && _e !== void 0 ? _e : 0;
103
111
  const url = this.getImageURL(source);
104
- const options = {
105
- image: url,
106
- };
107
- return options;
112
+ const texture = new TgdTexture2D(context);
113
+ if (url) {
114
+ loadImage(url)
115
+ .then(bmp => {
116
+ if (bmp)
117
+ texture.loadBitmap(bmp);
118
+ else
119
+ console.error("Unable to load this file:", url);
120
+ })
121
+ .catch(console.error);
122
+ }
123
+ else {
124
+ console.error(`[GLTF] texture index #${textureIndex} is empty!`);
125
+ }
126
+ return texture;
108
127
  }
109
- async loadImage(imageIndex) {
110
- const fromCache = this.cacheImages.get(imageIndex);
111
- if (fromCache)
112
- return fromCache;
113
- const url = this.getImageURL(imageIndex);
114
- if (!url)
115
- return;
116
- const promise = new Promise((resolve, reject) => {
117
- const img = new Image();
118
- img.src = url;
119
- img.onload = () => {
120
- resolve(img);
121
- };
122
- img.onerror = () => {
123
- console.error(`Unable to load image #${imageIndex}!`, this.gltf.images?.[imageIndex]);
124
- reject();
125
- };
128
+ loadImage(imageIndex) {
129
+ return __awaiter(this, void 0, void 0, function* () {
130
+ const fromCache = this.cacheImages.get(imageIndex);
131
+ if (fromCache)
132
+ return fromCache;
133
+ const url = this.getImageURL(imageIndex);
134
+ if (!url)
135
+ return;
136
+ const promise = new Promise((resolve, reject) => {
137
+ const img = new Image();
138
+ img.src = url;
139
+ img.addEventListener("load", () => {
140
+ resolve(img);
141
+ });
142
+ img.addEventListener("error", () => {
143
+ var _a;
144
+ console.error(`Unable to load image #${imageIndex}!`, (_a = this.gltf.images) === null || _a === void 0 ? void 0 : _a[imageIndex]);
145
+ reject();
146
+ });
147
+ });
148
+ this.cacheImages.set(imageIndex, promise);
149
+ return promise;
126
150
  });
127
- this.cacheImages.set(imageIndex, promise);
128
- return promise;
129
151
  }
130
152
  getImageURL(imageIndex) {
153
+ var _a;
131
154
  const fromCache = this.cacheImageURLs.get(imageIndex);
132
155
  if (fromCache)
133
156
  return fromCache;
134
157
  const { gltf } = this;
135
- const image = gltf.images?.[imageIndex];
158
+ const image = (_a = gltf.images) === null || _a === void 0 ? void 0 : _a[imageIndex];
136
159
  if (!image)
137
160
  return;
138
161
  if (image.uri)
@@ -149,42 +172,42 @@ export class TgdParserGLTransfertFormatBinary {
149
172
  this.cacheImageURLs.set(imageIndex, url);
150
173
  return url;
151
174
  }
152
- getBufferViewData(arg, type = "Float32") {
153
- if (typeof arg !== "number") {
154
- return this.getBufferViewData(arg.bufferView ?? 0, arg.componentType);
175
+ getBufferViewData(accessor, type = "Float32") {
176
+ var _a, _b, _c, _d, _e;
177
+ if (typeof accessor !== "number") {
178
+ return this.getBufferViewData((_a = accessor.bufferView) !== null && _a !== void 0 ? _a : 0, accessor.componentType);
155
179
  }
156
- const bufferViewIndex = arg;
180
+ const bufferViewIndex = accessor;
157
181
  const fromCache = this.cacheBufferViewDatas.get(bufferViewIndex);
158
182
  if (fromCache)
159
183
  return fromCache;
160
184
  const { gltf } = this;
161
- const bufferView = gltf.bufferViews?.[bufferViewIndex];
185
+ const bufferView = (_b = gltf.bufferViews) === null || _b === void 0 ? void 0 : _b[bufferViewIndex];
162
186
  if (!bufferView)
163
- throw Error(`No bufferView with index #${bufferViewIndex}!`);
187
+ throw new Error(`No bufferView with index #${bufferViewIndex}!`);
164
188
  const buffer = this.chunks[bufferView.buffer];
165
- const byteOffset = bufferView.byteOffset ?? 0;
189
+ const byteOffset = (_c = bufferView.byteOffset) !== null && _c !== void 0 ? _c : 0;
166
190
  const data = buffer.slice(byteOffset, byteOffset + bufferView.byteLength);
167
- const view = figureOutView(data, convertTypeToNumber(type ??
168
- this.findAccessorForBufferView(bufferViewIndex)
169
- ?.componentType ??
170
- "Float32"));
191
+ const view = figureOutView(data, convertTypeToNumber((_e = type !== null && type !== void 0 ? type : (_d = this.findAccessorForBufferView(bufferViewIndex)) === null || _d === void 0 ? void 0 : _d.componentType) !== null && _e !== void 0 ? _e : "Float32"));
171
192
  this.cacheBufferViewDatas.set(bufferViewIndex, view);
172
193
  return view;
173
194
  }
174
195
  findAccessorForBufferView(bufferViewIndex) {
175
- return (this.gltf.accessors ?? []).find(accessor => accessor.bufferView === bufferViewIndex);
196
+ var _a;
197
+ return ((_a = this.gltf.accessors) !== null && _a !== void 0 ? _a : []).find(accessor => accessor.bufferView === bufferViewIndex);
176
198
  }
177
199
  setAttrib(dataset, attribName, meshIndex = 0, primitiveIndex = 0, primitiveAttribName) {
200
+ var _a, _b, _c, _d, _e;
178
201
  const { gltf } = this;
179
- const accessorIndex = gltf.meshes?.[meshIndex].primitives[primitiveIndex].attributes[primitiveAttribName ?? attribName] ?? -1;
180
- const accessor = gltf.accessors?.[accessorIndex];
202
+ const accessorIndex = (_b = (_a = gltf.meshes) === null || _a === void 0 ? void 0 : _a[meshIndex].primitives[primitiveIndex].attributes[primitiveAttribName !== null && primitiveAttribName !== void 0 ? primitiveAttribName : attribName]) !== null && _b !== void 0 ? _b : -1;
203
+ const accessor = (_c = gltf.accessors) === null || _c === void 0 ? void 0 : _c[accessorIndex];
181
204
  if (!accessor) {
182
- throw Error(`No attribute "${primitiveAttribName ?? attribName}" for primitive #${primitiveIndex} of mesh #${meshIndex}!`);
205
+ throw new Error(`No attribute "${primitiveAttribName !== null && primitiveAttribName !== void 0 ? primitiveAttribName : attribName}" for primitive #${primitiveIndex} of mesh #${meshIndex}!`);
183
206
  }
184
- const bufferViewIndex = accessor.bufferView ?? 0;
185
- const bufferView = gltf.bufferViews?.[bufferViewIndex];
207
+ const bufferViewIndex = (_d = accessor.bufferView) !== null && _d !== void 0 ? _d : 0;
208
+ const bufferView = (_e = gltf.bufferViews) === null || _e === void 0 ? void 0 : _e[bufferViewIndex];
186
209
  if (!bufferView) {
187
- throw Error(`No bufferView with index #${bufferViewIndex}!`);
210
+ throw new Error(`No bufferView with index #${bufferViewIndex}!`);
188
211
  }
189
212
  const view = this.getBufferViewData(bufferViewIndex, accessor.componentType);
190
213
  dataset.set(attribName, view, {
@@ -198,18 +221,18 @@ export class TgdParserGLTransfertFormatBinary {
198
221
  try {
199
222
  const { attributes } = primitive;
200
223
  if (!attributes)
201
- throw Error("No attributes found!");
224
+ throw new Error("No attributes found!");
202
225
  const elements = this.getMeshPrimitiveIndices(meshIndex, primitiveIndex);
203
- const def = {
226
+ const definition = {
204
227
  [attPositionName]: "vec3",
205
228
  };
206
229
  if (typeof attributes[attNormalName] === "string") {
207
- def[attNormalName] = "vec3";
230
+ definition[attNormalName] = "vec3";
208
231
  }
209
232
  if (typeof attributes[attTextureCoordsName] === "string") {
210
- def[attTextureCoordsName] = "vec2";
233
+ definition[attTextureCoordsName] = "vec2";
211
234
  }
212
- const dataset = new TgdDataset(def);
235
+ const dataset = new TgdDataset(definition);
213
236
  dataset.set(attPositionName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attPositionName))));
214
237
  if (typeof attributes[attNormalName] === "string") {
215
238
  dataset.set(attNormalName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attNormalName))));
@@ -226,9 +249,9 @@ export class TgdParserGLTransfertFormatBinary {
226
249
  attUV: attTextureCoordsName,
227
250
  });
228
251
  }
229
- catch (ex) {
230
- const msg = ex instanceof Error ? ex.message : JSON.stringify(ex);
231
- throw Error(`Error in primitive #${primitiveIndex} of mesh #${meshIndex}:\n${msg}`);
252
+ catch (error) {
253
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
254
+ throw new Error(`Error in primitive #${primitiveIndex} of mesh #${meshIndex}:\n${message}`);
232
255
  }
233
256
  }
234
257
  }
@@ -272,4 +295,12 @@ function returnFloat32Array(data) {
272
295
  return data;
273
296
  throw new Error("We were expecting a Float32Array!");
274
297
  }
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxVQUFVLEVBQXdCLE1BQU0sY0FBYyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFVbkMsT0FBTyxFQUNILDZCQUE2QixHQUdoQyxNQUFNLFlBQVksQ0FBQTtBQUNuQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTNDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekIsSUFBSSxDQUF5QjtJQUU1QixNQUFNLENBQWU7SUFDckIsV0FBVyxHQUFHLElBQUksR0FBRyxFQUduQyxDQUFBO0lBQ2MsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBQzFDLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQVE1QyxDQUFBO0lBRUgsWUFBWSxPQUFvQjtRQUM1QixJQUFJLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM3QixDQUFDO1FBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNWLE1BQU0sT0FBTyxHQUNULEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDekQsTUFBTSxLQUFLLENBQUMsc0NBQXNDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDaEUsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFB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
298
+ function loadImage(url) {
299
+ return new Promise(resolve => {
300
+ const img = new Image();
301
+ img.src = url;
302
+ img.addEventListener("load", () => resolve(img));
303
+ img.addEventListener("error", () => resolve(null));
304
+ });
305
+ }
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUF3QixNQUFNLGNBQWMsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBVW5DLE9BQU8sRUFDSCw2QkFBNkIsR0FFaEMsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTNDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFtQnpDLFlBQVksT0FBb0I7UUFmZixnQkFBVyxHQUFHLElBQUksR0FBRyxFQUduQyxDQUFBO1FBQ2MsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtRQUMxQyx5QkFBb0IsR0FBRyxJQUFJLEdBQUcsRUFRNUMsQ0FBQTtRQUdDLElBQUksQ0FBQztZQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzdCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxPQUFPLEdBQ1QsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUzs7UUFDTCxPQUFPLE1BQUEsSUFBSSxD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