@zephyr3d/scene 0.9.5 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1350 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/msdf_text.js +3 -3
  57. package/dist/material/msdf_text.js.map +1 -1
  58. package/dist/material/mtoon.js +574 -0
  59. package/dist/material/mtoon.js.map +1 -0
  60. package/dist/material/pbrblueprint.js +499 -336
  61. package/dist/material/pbrblueprint.js.map +1 -1
  62. package/dist/material/pbrmr.js +118 -100
  63. package/dist/material/pbrmr.js.map +1 -1
  64. package/dist/material/pbrsg.js +1 -1
  65. package/dist/material/pbrsg.js.map +1 -1
  66. package/dist/material/shader/helper.js +324 -294
  67. package/dist/material/shader/helper.js.map +1 -1
  68. package/dist/material/subsurfaceprofile.js +812 -0
  69. package/dist/material/subsurfaceprofile.js.map +1 -0
  70. package/dist/material/unlit.js +1 -1
  71. package/dist/material/unlit.js.map +1 -1
  72. package/dist/posteffect/compositor.js +46 -11
  73. package/dist/posteffect/compositor.js.map +1 -1
  74. package/dist/posteffect/ssr.js +422 -96
  75. package/dist/posteffect/ssr.js.map +1 -1
  76. package/dist/posteffect/sss.js +1053 -0
  77. package/dist/posteffect/sss.js.map +1 -0
  78. package/dist/posteffect/taa.js +61 -60
  79. package/dist/posteffect/taa.js.map +1 -1
  80. package/dist/render/abuffer_oit.js +63 -12
  81. package/dist/render/abuffer_oit.js.map +1 -1
  82. package/dist/render/cluster_light.js +6 -5
  83. package/dist/render/cluster_light.js.map +1 -1
  84. package/dist/render/drawable.js +1 -5
  85. package/dist/render/drawable.js.map +1 -1
  86. package/dist/render/drawable_mixin.js +2 -1
  87. package/dist/render/drawable_mixin.js.map +1 -1
  88. package/dist/render/fbm_wavegenerator.js +2 -1
  89. package/dist/render/fbm_wavegenerator.js.map +1 -1
  90. package/dist/render/gerstner_wavegenerator.js +2 -1
  91. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  92. package/dist/render/globalbindgroup_allocator.js +2 -1
  93. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  94. package/dist/render/lightpass.js +110 -23
  95. package/dist/render/lightpass.js.map +1 -1
  96. package/dist/render/render_queue.js +51 -8
  97. package/dist/render/render_queue.js.map +1 -1
  98. package/dist/render/renderer.js +80 -66
  99. package/dist/render/renderer.js.map +1 -1
  100. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  101. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  102. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  103. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  104. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  105. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  106. package/dist/render/rendergraph/history_resources.js +3 -1
  107. package/dist/render/rendergraph/history_resources.js.map +1 -1
  108. package/dist/render/rendergraph/types.js.map +1 -1
  109. package/dist/render/renderpass.js +10 -4
  110. package/dist/render/renderpass.js.map +1 -1
  111. package/dist/render/sky.js +31 -1
  112. package/dist/render/sky.js.map +1 -1
  113. package/dist/render/weightedblended_oit.js +23 -5
  114. package/dist/render/weightedblended_oit.js.map +1 -1
  115. package/dist/scene/basesprite.js +4 -2
  116. package/dist/scene/basesprite.js.map +1 -1
  117. package/dist/scene/batchgroup.js +3 -1
  118. package/dist/scene/batchgroup.js.map +1 -1
  119. package/dist/scene/environment.js +11 -1
  120. package/dist/scene/environment.js.map +1 -1
  121. package/dist/scene/light.js +21 -3
  122. package/dist/scene/light.js.map +1 -1
  123. package/dist/scene/mesh.js +29 -14
  124. package/dist/scene/mesh.js.map +1 -1
  125. package/dist/scene/meshdrawable.js +6 -0
  126. package/dist/scene/meshdrawable.js.map +1 -1
  127. package/dist/scene/msdftext.js +5 -2
  128. package/dist/scene/msdftext.js.map +1 -1
  129. package/dist/scene/msdftextsprite.js +5 -3
  130. package/dist/scene/msdftextsprite.js.map +1 -1
  131. package/dist/scene/particlesys.js +3 -1
  132. package/dist/scene/particlesys.js.map +1 -1
  133. package/dist/scene/scene.js +6 -5
  134. package/dist/scene/scene.js.map +1 -1
  135. package/dist/scene/terrain-cm/grass.js +4 -2
  136. package/dist/scene/terrain-cm/grass.js.map +1 -1
  137. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  138. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  139. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  140. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  141. package/dist/scene/water.js +4 -2
  142. package/dist/scene/water.js.map +1 -1
  143. package/dist/shaders/shadow.js +26 -393
  144. package/dist/shaders/shadow.js.map +1 -1
  145. package/dist/shadow/esm.js +112 -12
  146. package/dist/shadow/esm.js.map +1 -1
  147. package/dist/shadow/pcf_opt.js +2 -2
  148. package/dist/shadow/pcf_opt.js.map +1 -1
  149. package/dist/shadow/pcf_pd.js +19 -10
  150. package/dist/shadow/pcf_pd.js.map +1 -1
  151. package/dist/shadow/shader.js +58 -7
  152. package/dist/shadow/shader.js.map +1 -1
  153. package/dist/shadow/shadow_impl.js +6 -0
  154. package/dist/shadow/shadow_impl.js.map +1 -1
  155. package/dist/shadow/shadow_region.js +229 -0
  156. package/dist/shadow/shadow_region.js.map +1 -0
  157. package/dist/shadow/shadowmapper.js +67 -59
  158. package/dist/shadow/shadowmapper.js.map +1 -1
  159. package/dist/shadow/vsm.js +45 -19
  160. package/dist/shadow/vsm.js.map +1 -1
  161. package/dist/text/font/cff_font.js +890 -0
  162. package/dist/text/font/cff_font.js.map +1 -0
  163. package/dist/text/font/font_asset.js +17 -3
  164. package/dist/text/font/font_asset.js.map +1 -1
  165. package/dist/utility/blueprint/common/constants.js +8 -8
  166. package/dist/utility/blueprint/common/constants.js.map +1 -1
  167. package/dist/utility/blueprint/material/pbr.js +31 -4
  168. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  169. package/dist/utility/blueprint/material/texture.js +1 -17
  170. package/dist/utility/blueprint/material/texture.js.map +1 -1
  171. package/dist/utility/serialization/manager.js +327 -359
  172. package/dist/utility/serialization/manager.js.map +1 -1
  173. package/dist/utility/serialization/scene/animation.js +5 -2
  174. package/dist/utility/serialization/scene/animation.js.map +1 -1
  175. package/dist/utility/serialization/scene/batch.js +4 -1
  176. package/dist/utility/serialization/scene/batch.js.map +1 -1
  177. package/dist/utility/serialization/scene/camera.js +249 -54
  178. package/dist/utility/serialization/scene/camera.js.map +1 -1
  179. package/dist/utility/serialization/scene/common.js +37 -1
  180. package/dist/utility/serialization/scene/common.js.map +1 -1
  181. package/dist/utility/serialization/scene/light.js +42 -3
  182. package/dist/utility/serialization/scene/light.js.map +1 -1
  183. package/dist/utility/serialization/scene/material.js +1112 -646
  184. package/dist/utility/serialization/scene/material.js.map +1 -1
  185. package/dist/utility/serialization/scene/mesh.js +7 -4
  186. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  187. package/dist/utility/serialization/scene/node.js +31 -12
  188. package/dist/utility/serialization/scene/node.js.map +1 -1
  189. package/dist/utility/serialization/scene/particle.js +4 -1
  190. package/dist/utility/serialization/scene/particle.js.map +1 -1
  191. package/dist/utility/serialization/scene/primitive.js +3 -1
  192. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  193. package/dist/utility/serialization/scene/scene.js +18 -0
  194. package/dist/utility/serialization/scene/scene.js.map +1 -1
  195. package/dist/utility/serialization/scene/sprite.js +6 -3
  196. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  197. package/dist/utility/serialization/scene/terrain.js +5 -2
  198. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  199. package/dist/utility/serialization/scene/text.js +3 -1
  200. package/dist/utility/serialization/scene/text.js.map +1 -1
  201. package/dist/utility/serialization/scene/water.js +4 -1
  202. package/dist/utility/serialization/scene/water.js.map +1 -1
  203. package/dist/utility/textures/ltcdata.js +6 -0
  204. package/dist/utility/textures/ltcdata.js.map +1 -0
  205. package/dist/utility/textures/ltclut.js +61 -0
  206. package/dist/utility/textures/ltclut.js.map +1 -0
  207. package/dist/values.js +9 -1
  208. package/dist/values.js.map +1 -1
  209. package/package.json +3 -3
  210. package/dist/animation/ik/ik_chain_builder.js +0 -68
  211. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  212. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  213. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  214. package/dist/animation/ik/ik_track.js +0 -96
  215. package/dist/animation/ik/ik_track.js.map +0 -1
  216. package/dist/animation/ik_postprocessor.js +0 -71
  217. package/dist/animation/ik_postprocessor.js.map +0 -1
  218. package/dist/animation/joint_dynamics/math.js +0 -16
  219. package/dist/animation/joint_dynamics/math.js.map +0 -1
  220. package/dist/animation/manual_transform_processor.js +0 -156
  221. package/dist/animation/manual_transform_processor.js.map +0 -1
  222. package/dist/animation/skeleton_postprocessor.js +0 -50
  223. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  224. package/dist/animation/spring2/collision.js +0 -469
  225. package/dist/animation/spring2/collision.js.map +0 -1
  226. package/dist/animation/spring2/constraints.js +0 -329
  227. package/dist/animation/spring2/constraints.js.map +0 -1
  228. package/dist/animation/spring2/controller.js +0 -434
  229. package/dist/animation/spring2/controller.js.map +0 -1
  230. package/dist/animation/spring2/math.js +0 -16
  231. package/dist/animation/spring2/math.js.map +0 -1
  232. package/dist/animation/spring2/solver.js +0 -624
  233. package/dist/animation/spring2/solver.js.map +0 -1
  234. package/dist/animation/spring2/spring_system.js +0 -118
  235. package/dist/animation/spring2/spring_system.js.map +0 -1
  236. package/dist/animation/spring2/types.js +0 -19
  237. package/dist/animation/spring2/types.js.map +0 -1
  238. package/dist/animation/spring_postprocessor.js +0 -54
  239. package/dist/animation/spring_postprocessor.js.map +0 -1
  240. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
  241. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  242. package/dist/asset/loaders/gltf/helpers.js +0 -331
  243. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  244. package/dist/material/sprite3d.js +0 -301
  245. package/dist/material/sprite3d.js.map +0 -1
  246. package/dist/material/sprite3d_std.js +0 -116
  247. package/dist/material/sprite3d_std.js.map +0 -1
  248. package/dist/material/sprite3dblueprint.js +0 -235
  249. package/dist/material/sprite3dblueprint.js.map +0 -1
  250. package/dist/material/sprite_sdf.js +0 -106
  251. package/dist/material/sprite_sdf.js.map +0 -1
  252. package/dist/material/terrainmaterial.js +0 -368
  253. package/dist/material/terrainmaterial.js.map +0 -1
  254. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  255. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  256. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  257. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  258. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  259. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  260. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  261. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  262. package/dist/render/deferredlightpass.js +0 -510
  263. package/dist/render/deferredlightpass.js.map +0 -1
  264. package/dist/render/deferredshadowlightpass.js +0 -428
  265. package/dist/render/deferredshadowlightpass.js.map +0 -1
  266. package/dist/render/gbufferpass.js +0 -50
  267. package/dist/render/gbufferpass.js.map +0 -1
  268. package/dist/scene/sdftextsprite.js +0 -322
  269. package/dist/scene/sdftextsprite.js.map +0 -1
  270. package/dist/scene/sprite3d.js +0 -18
  271. package/dist/scene/sprite3d.js.map +0 -1
  272. package/dist/scene/terrain/grass.js +0 -280
  273. package/dist/scene/terrain/grass.js.map +0 -1
  274. package/dist/scene/terrain/heightfield.js +0 -475
  275. package/dist/scene/terrain/heightfield.js.map +0 -1
  276. package/dist/scene/terrain/patch.js +0 -532
  277. package/dist/scene/terrain/patch.js.map +0 -1
  278. package/dist/scene/terrain/quadtree.js +0 -461
  279. package/dist/scene/terrain/quadtree.js.map +0 -1
  280. package/dist/scene/terrain/terrain.js +0 -231
  281. package/dist/scene/terrain/terrain.js.map +0 -1
  282. package/dist/src/animation/animation.js +0 -127
  283. package/dist/src/animation/animation.js.map +0 -1
  284. package/dist/src/animation/animationset.js +0 -255
  285. package/dist/src/animation/animationset.js.map +0 -1
  286. package/dist/src/animation/animationtrack.js +0 -34
  287. package/dist/src/animation/animationtrack.js.map +0 -1
  288. package/dist/src/animation/eulerrotationtrack.js +0 -52
  289. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  290. package/dist/src/animation/morphtarget.js +0 -93
  291. package/dist/src/animation/morphtarget.js.map +0 -1
  292. package/dist/src/animation/morphtrack.js +0 -70
  293. package/dist/src/animation/morphtrack.js.map +0 -1
  294. package/dist/src/animation/proptrack.js +0 -161
  295. package/dist/src/animation/proptrack.js.map +0 -1
  296. package/dist/src/animation/rotationtrack.js +0 -51
  297. package/dist/src/animation/rotationtrack.js.map +0 -1
  298. package/dist/src/animation/scaletrack.js +0 -50
  299. package/dist/src/animation/scaletrack.js.map +0 -1
  300. package/dist/src/animation/skeleton.js +0 -204
  301. package/dist/src/animation/skeleton.js.map +0 -1
  302. package/dist/src/animation/translationtrack.js +0 -50
  303. package/dist/src/animation/translationtrack.js.map +0 -1
  304. package/dist/src/app/app.js +0 -129
  305. package/dist/src/app/app.js.map +0 -1
  306. package/dist/src/app/inputmgr.js +0 -267
  307. package/dist/src/app/inputmgr.js.map +0 -1
  308. package/dist/src/asset/assetmanager.js +0 -404
  309. package/dist/src/asset/assetmanager.js.map +0 -1
  310. package/dist/src/asset/builtin.js +0 -337
  311. package/dist/src/asset/builtin.js.map +0 -1
  312. package/dist/src/asset/loaders/dds/dds.js +0 -470
  313. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  314. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  315. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  316. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  317. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  318. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  319. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  320. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  321. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  322. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  323. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  324. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  325. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  326. package/dist/src/asset/loaders/loader.js +0 -45
  327. package/dist/src/asset/loaders/loader.js.map +0 -1
  328. package/dist/src/asset/model.js +0 -414
  329. package/dist/src/asset/model.js.map +0 -1
  330. package/dist/src/blitter/bilateralblur.js +0 -221
  331. package/dist/src/blitter/bilateralblur.js.map +0 -1
  332. package/dist/src/blitter/blitter.js +0 -390
  333. package/dist/src/blitter/blitter.js.map +0 -1
  334. package/dist/src/blitter/box.js +0 -118
  335. package/dist/src/blitter/box.js.map +0 -1
  336. package/dist/src/blitter/copy.js +0 -22
  337. package/dist/src/blitter/copy.js.map +0 -1
  338. package/dist/src/blitter/gaussianblur.js +0 -228
  339. package/dist/src/blitter/gaussianblur.js.map +0 -1
  340. package/dist/src/camera/base.js +0 -92
  341. package/dist/src/camera/base.js.map +0 -1
  342. package/dist/src/camera/camera.js +0 -1005
  343. package/dist/src/camera/camera.js.map +0 -1
  344. package/dist/src/camera/fps.js +0 -238
  345. package/dist/src/camera/fps.js.map +0 -1
  346. package/dist/src/camera/orbit.js +0 -245
  347. package/dist/src/camera/orbit.js.map +0 -1
  348. package/dist/src/camera/orthocamera.js +0 -167
  349. package/dist/src/camera/orthocamera.js.map +0 -1
  350. package/dist/src/camera/perspectivecamera.js +0 -141
  351. package/dist/src/camera/perspectivecamera.js.map +0 -1
  352. package/dist/src/index.js +0 -120
  353. package/dist/src/index.js.map +0 -1
  354. package/dist/src/material/blinn.js +0 -81
  355. package/dist/src/material/blinn.js.map +0 -1
  356. package/dist/src/material/grassmaterial.js +0 -113
  357. package/dist/src/material/grassmaterial.js.map +0 -1
  358. package/dist/src/material/lambert.js +0 -92
  359. package/dist/src/material/lambert.js.map +0 -1
  360. package/dist/src/material/material.js +0 -301
  361. package/dist/src/material/material.js.map +0 -1
  362. package/dist/src/material/meshmaterial.js +0 -704
  363. package/dist/src/material/meshmaterial.js.map +0 -1
  364. package/dist/src/material/mixins/albedocolor.js +0 -76
  365. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  366. package/dist/src/material/mixins/foliage.js +0 -47
  367. package/dist/src/material/mixins/foliage.js.map +0 -1
  368. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  369. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  370. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  371. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  372. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  373. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  374. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  375. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  376. package/dist/src/material/mixins/lit.js +0 -476
  377. package/dist/src/material/mixins/lit.js.map +0 -1
  378. package/dist/src/material/mixins/pbr/common.js +0 -918
  379. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  380. package/dist/src/material/mixins/texture.js +0 -172
  381. package/dist/src/material/mixins/texture.js.map +0 -1
  382. package/dist/src/material/mixins/vertexcolor.js +0 -56
  383. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  384. package/dist/src/material/particle.js +0 -178
  385. package/dist/src/material/particle.js.map +0 -1
  386. package/dist/src/material/pbrmr.js +0 -97
  387. package/dist/src/material/pbrmr.js.map +0 -1
  388. package/dist/src/material/pbrsg.js +0 -97
  389. package/dist/src/material/pbrsg.js.map +0 -1
  390. package/dist/src/material/shader/helper.js +0 -1209
  391. package/dist/src/material/shader/helper.js.map +0 -1
  392. package/dist/src/material/terrain-cm.js +0 -606
  393. package/dist/src/material/terrain-cm.js.map +0 -1
  394. package/dist/src/material/terrainmaterial.js +0 -375
  395. package/dist/src/material/terrainmaterial.js.map +0 -1
  396. package/dist/src/material/unlit.js +0 -41
  397. package/dist/src/material/unlit.js.map +0 -1
  398. package/dist/src/material/water.js +0 -417
  399. package/dist/src/material/water.js.map +0 -1
  400. package/dist/src/posteffect/bloom.js +0 -361
  401. package/dist/src/posteffect/bloom.js.map +0 -1
  402. package/dist/src/posteffect/compositor.js +0 -226
  403. package/dist/src/posteffect/compositor.js.map +0 -1
  404. package/dist/src/posteffect/fxaa.js +0 -273
  405. package/dist/src/posteffect/fxaa.js.map +0 -1
  406. package/dist/src/posteffect/grayscale.js +0 -69
  407. package/dist/src/posteffect/grayscale.js.map +0 -1
  408. package/dist/src/posteffect/motionblur.js +0 -96
  409. package/dist/src/posteffect/motionblur.js.map +0 -1
  410. package/dist/src/posteffect/posteffect.js +0 -126
  411. package/dist/src/posteffect/posteffect.js.map +0 -1
  412. package/dist/src/posteffect/sao.js +0 -324
  413. package/dist/src/posteffect/sao.js.map +0 -1
  414. package/dist/src/posteffect/ssr.js +0 -489
  415. package/dist/src/posteffect/ssr.js.map +0 -1
  416. package/dist/src/posteffect/taa.js +0 -172
  417. package/dist/src/posteffect/taa.js.map +0 -1
  418. package/dist/src/posteffect/tonemap.js +0 -94
  419. package/dist/src/posteffect/tonemap.js.map +0 -1
  420. package/dist/src/render/abuffer_oit.js +0 -361
  421. package/dist/src/render/abuffer_oit.js.map +0 -1
  422. package/dist/src/render/clipmap.js +0 -851
  423. package/dist/src/render/clipmap.js.map +0 -1
  424. package/dist/src/render/cluster_light.js +0 -333
  425. package/dist/src/render/cluster_light.js.map +0 -1
  426. package/dist/src/render/cull_visitor.js +0 -187
  427. package/dist/src/render/cull_visitor.js.map +0 -1
  428. package/dist/src/render/depthpass.js +0 -68
  429. package/dist/src/render/depthpass.js.map +0 -1
  430. package/dist/src/render/drawable_mixin.js +0 -227
  431. package/dist/src/render/drawable_mixin.js.map +0 -1
  432. package/dist/src/render/envlight.js +0 -463
  433. package/dist/src/render/envlight.js.map +0 -1
  434. package/dist/src/render/fbm_wavegenerator.js +0 -251
  435. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  436. package/dist/src/render/fft_wavegenerator.js +0 -1006
  437. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  438. package/dist/src/render/fullscreenquad.js +0 -38
  439. package/dist/src/render/fullscreenquad.js.map +0 -1
  440. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  441. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  442. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  443. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  444. package/dist/src/render/hzb.js +0 -273
  445. package/dist/src/render/hzb.js.map +0 -1
  446. package/dist/src/render/lightpass.js +0 -172
  447. package/dist/src/render/lightpass.js.map +0 -1
  448. package/dist/src/render/objectcolorpass.js +0 -51
  449. package/dist/src/render/objectcolorpass.js.map +0 -1
  450. package/dist/src/render/primitive.js +0 -364
  451. package/dist/src/render/primitive.js.map +0 -1
  452. package/dist/src/render/render_queue.js +0 -467
  453. package/dist/src/render/render_queue.js.map +0 -1
  454. package/dist/src/render/renderbundle_wrapper.js +0 -152
  455. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  456. package/dist/src/render/renderer.js +0 -455
  457. package/dist/src/render/renderer.js.map +0 -1
  458. package/dist/src/render/renderpass.js +0 -200
  459. package/dist/src/render/renderpass.js.map +0 -1
  460. package/dist/src/render/shadowmap_pass.js +0 -56
  461. package/dist/src/render/shadowmap_pass.js.map +0 -1
  462. package/dist/src/render/sky.js +0 -1103
  463. package/dist/src/render/sky.js.map +0 -1
  464. package/dist/src/render/weightedblended_oit.js +0 -168
  465. package/dist/src/render/weightedblended_oit.js.map +0 -1
  466. package/dist/src/scene/batchgroup.js +0 -162
  467. package/dist/src/scene/batchgroup.js.map +0 -1
  468. package/dist/src/scene/environment.js +0 -209
  469. package/dist/src/scene/environment.js.map +0 -1
  470. package/dist/src/scene/graph_node.js +0 -72
  471. package/dist/src/scene/graph_node.js.map +0 -1
  472. package/dist/src/scene/light.js +0 -416
  473. package/dist/src/scene/light.js.map +0 -1
  474. package/dist/src/scene/mesh.js +0 -341
  475. package/dist/src/scene/mesh.js.map +0 -1
  476. package/dist/src/scene/octree.js +0 -649
  477. package/dist/src/scene/octree.js.map +0 -1
  478. package/dist/src/scene/particlesys.js +0 -738
  479. package/dist/src/scene/particlesys.js.map +0 -1
  480. package/dist/src/scene/raycast_visitor.js +0 -103
  481. package/dist/src/scene/raycast_visitor.js.map +0 -1
  482. package/dist/src/scene/scene.js +0 -284
  483. package/dist/src/scene/scene.js.map +0 -1
  484. package/dist/src/scene/scene_node.js +0 -732
  485. package/dist/src/scene/scene_node.js.map +0 -1
  486. package/dist/src/scene/terrain/grass.js +0 -278
  487. package/dist/src/scene/terrain/grass.js.map +0 -1
  488. package/dist/src/scene/terrain/heightfield.js +0 -475
  489. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  490. package/dist/src/scene/terrain/patch.js +0 -530
  491. package/dist/src/scene/terrain/patch.js.map +0 -1
  492. package/dist/src/scene/terrain/quadtree.js +0 -461
  493. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  494. package/dist/src/scene/terrain/terrain.js +0 -246
  495. package/dist/src/scene/terrain/terrain.js.map +0 -1
  496. package/dist/src/scene/terrain-cm/grass.js +0 -594
  497. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  498. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  499. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  500. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  501. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  502. package/dist/src/scene/water.js +0 -374
  503. package/dist/src/scene/water.js.map +0 -1
  504. package/dist/src/shaders/atmosphere.js +0 -957
  505. package/dist/src/shaders/atmosphere.js.map +0 -1
  506. package/dist/src/shaders/fog.js +0 -112
  507. package/dist/src/shaders/fog.js.map +0 -1
  508. package/dist/src/shaders/misc.js +0 -266
  509. package/dist/src/shaders/misc.js.map +0 -1
  510. package/dist/src/shaders/noise.js +0 -222
  511. package/dist/src/shaders/noise.js.map +0 -1
  512. package/dist/src/shaders/pbr.js +0 -51
  513. package/dist/src/shaders/pbr.js.map +0 -1
  514. package/dist/src/shaders/shadow.js +0 -636
  515. package/dist/src/shaders/shadow.js.map +0 -1
  516. package/dist/src/shaders/ssr.js +0 -490
  517. package/dist/src/shaders/ssr.js.map +0 -1
  518. package/dist/src/shaders/temporal.js +0 -215
  519. package/dist/src/shaders/temporal.js.map +0 -1
  520. package/dist/src/shaders/water.js +0 -756
  521. package/dist/src/shaders/water.js.map +0 -1
  522. package/dist/src/shadow/esm.js +0 -237
  523. package/dist/src/shadow/esm.js.map +0 -1
  524. package/dist/src/shadow/pcf_opt.js +0 -181
  525. package/dist/src/shadow/pcf_opt.js.map +0 -1
  526. package/dist/src/shadow/pcf_pd.js +0 -189
  527. package/dist/src/shadow/pcf_pd.js.map +0 -1
  528. package/dist/src/shadow/shader.js +0 -37
  529. package/dist/src/shadow/shader.js.map +0 -1
  530. package/dist/src/shadow/shadow_impl.js +0 -15
  531. package/dist/src/shadow/shadow_impl.js.map +0 -1
  532. package/dist/src/shadow/shadowmapper.js +0 -790
  533. package/dist/src/shadow/shadowmapper.js.map +0 -1
  534. package/dist/src/shadow/ssm.js +0 -159
  535. package/dist/src/shadow/ssm.js.map +0 -1
  536. package/dist/src/shadow/vsm.js +0 -297
  537. package/dist/src/shadow/vsm.js.map +0 -1
  538. package/dist/src/shapes/box.js +0 -386
  539. package/dist/src/shapes/box.js.map +0 -1
  540. package/dist/src/shapes/cylinder.js +0 -125
  541. package/dist/src/shapes/cylinder.js.map +0 -1
  542. package/dist/src/shapes/plane.js +0 -88
  543. package/dist/src/shapes/plane.js.map +0 -1
  544. package/dist/src/shapes/shape.js +0 -87
  545. package/dist/src/shapes/shape.js.map +0 -1
  546. package/dist/src/shapes/sphere.js +0 -114
  547. package/dist/src/shapes/sphere.js.map +0 -1
  548. package/dist/src/shapes/tetrahedron.js +0 -188
  549. package/dist/src/shapes/tetrahedron.js.map +0 -1
  550. package/dist/src/shapes/torus.js +0 -111
  551. package/dist/src/shapes/torus.js.map +0 -1
  552. package/dist/src/utility/aabbtree.js +0 -400
  553. package/dist/src/utility/aabbtree.js.map +0 -1
  554. package/dist/src/utility/bounding_volume.js +0 -29
  555. package/dist/src/utility/bounding_volume.js.map +0 -1
  556. package/dist/src/utility/debug.js +0 -28
  557. package/dist/src/utility/debug.js.map +0 -1
  558. package/dist/src/utility/draco/decoder.js +0 -116
  559. package/dist/src/utility/draco/decoder.js.map +0 -1
  560. package/dist/src/utility/misc.js +0 -105
  561. package/dist/src/utility/misc.js.map +0 -1
  562. package/dist/src/utility/panorama.js +0 -163
  563. package/dist/src/utility/panorama.js.map +0 -1
  564. package/dist/src/utility/pmrem.js +0 -354
  565. package/dist/src/utility/pmrem.js.map +0 -1
  566. package/dist/src/utility/rendermipmap.js +0 -115
  567. package/dist/src/utility/rendermipmap.js.map +0 -1
  568. package/dist/src/utility/serialization/json.js +0 -402
  569. package/dist/src/utility/serialization/json.js.map +0 -1
  570. package/dist/src/utility/serialization/manager.js +0 -623
  571. package/dist/src/utility/serialization/manager.js.map +0 -1
  572. package/dist/src/utility/serialization/scene/animation.js +0 -248
  573. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  574. package/dist/src/utility/serialization/scene/batch.js +0 -59
  575. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  576. package/dist/src/utility/serialization/scene/camera.js +0 -790
  577. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  578. package/dist/src/utility/serialization/scene/common.js +0 -222
  579. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  580. package/dist/src/utility/serialization/scene/light.js +0 -575
  581. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  582. package/dist/src/utility/serialization/scene/material.js +0 -1111
  583. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  584. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  585. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  586. package/dist/src/utility/serialization/scene/misc.js +0 -39
  587. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  588. package/dist/src/utility/serialization/scene/node.js +0 -451
  589. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  590. package/dist/src/utility/serialization/scene/particle.js +0 -425
  591. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  592. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  593. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  594. package/dist/src/utility/serialization/scene/scene.js +0 -704
  595. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  596. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  597. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  598. package/dist/src/utility/serialization/scene/water.js +0 -465
  599. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  600. package/dist/src/utility/shprojector.js +0 -297
  601. package/dist/src/utility/shprojector.js.map +0 -1
  602. package/dist/src/utility/textures/ggxlut.js +0 -213
  603. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  604. package/dist/src/utility/textures/gradientnoise.js +0 -62
  605. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  606. package/dist/src/utility/textures/randomnoise.js +0 -41
  607. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  608. package/dist/src/values.js +0 -162
  609. package/dist/src/values.js.map +0 -1
  610. package/dist/utility/blueprint/material/common.js +0 -7
  611. package/dist/utility/blueprint/material/common.js.map +0 -1
  612. package/dist/utility/serialization/blueprint/constants.js +0 -255
  613. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  614. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  615. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  616. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  617. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  618. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  619. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  620. package/dist/utility/serialization/scene/spring_script.js +0 -596
  621. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -1,416 +0,0 @@
1
- import { Vector4, DWeakRef, Vector3 } from '@zephyr3d/base';
2
- import { GraphNode } from './graph_node.js';
3
- import { BoundingBox } from '../utility/bounding_volume.js';
4
- import { ShadowMapper } from '../shadow/shadowmapper.js';
5
- import { LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values.js';
6
-
7
- /**
8
- * Base class for any kind of light node
9
- * @public
10
- */ class BaseLight extends GraphNode {
11
- /** @internal */ _type;
12
- /** @internal */ _intensity;
13
- /** @internal */ _positionRange;
14
- /** @internal */ _directionCutoff;
15
- /** @internal */ _diffuseIntensity;
16
- /**
17
- * Creates a light node
18
- * @param scene - The scene to which the light node belongs
19
- * @param type - Type of the light node
20
- */ constructor(scene, type){
21
- super(scene);
22
- this._intensity = 1;
23
- this._type = type;
24
- this._positionRange = null;
25
- this._directionCutoff = null;
26
- this._diffuseIntensity = null;
27
- }
28
- /**
29
- * Copy from another BaseLight
30
- * @param other - Other BaseLight to copy from
31
- * @param method - Copy method
32
- */ copyFrom(other, method, recursive) {
33
- super.copyFrom(other, method, recursive);
34
- this.intensity = other.intensity;
35
- }
36
- /** Gets the light type */ get lightType() {
37
- return this._type;
38
- }
39
- /** Intensity of the light */ get intensity() {
40
- return this._intensity;
41
- }
42
- set intensity(val) {
43
- this.setIntensity(val);
44
- }
45
- /**
46
- * Position and range of the light
47
- *
48
- * @remarks
49
- * Gets the position in world space of the light.
50
- * Light range is encoded into the W component.
51
- */ get positionAndRange() {
52
- if (!this._positionRange) {
53
- this.computeUniforms();
54
- }
55
- return this._positionRange;
56
- }
57
- /**
58
- * Direction and cutoff of the light
59
- *
60
- * @remarks
61
- * Gets the direction in world space of the light
62
- * Light cutoff (for spot light only) is encoded into the W component.
63
- */ get directionAndCutoff() {
64
- if (!this._directionCutoff) {
65
- this.computeUniforms();
66
- }
67
- return this._directionCutoff;
68
- }
69
- /**
70
- * Color and intensity of the light
71
- *
72
- * @remarks
73
- * Gets the color of the light.
74
- * Light intensity is encoded into the W component.
75
- */ get diffuseAndIntensity() {
76
- if (!this._diffuseIntensity) {
77
- this.computeUniforms();
78
- }
79
- return this._diffuseIntensity;
80
- }
81
- /**
82
- * View matrix of the light
83
- *
84
- * @remarks
85
- * The view matrix of the light is used to transform a point
86
- * from the world space to the light space.
87
- */ get viewMatrix() {
88
- return this.invWorldMatrix;
89
- }
90
- /**
91
- * Sets the intensity of the light
92
- * @param val - Intensity of the light
93
- * @returns self
94
- */ setIntensity(val) {
95
- if (this._intensity !== val) {
96
- this._intensity = val;
97
- this.invalidateUniforms();
98
- }
99
- return this;
100
- }
101
- /** @internal */ invalidateUniforms() {
102
- this._positionRange = null;
103
- this._directionCutoff = null;
104
- this._diffuseIntensity = null;
105
- }
106
- /** {@inheritDoc SceneNode.isLight} */ isLight() {
107
- return true;
108
- }
109
- /** {@inheritDoc SceneNode.isPunctualLight} */ isPunctualLight() {
110
- return false;
111
- }
112
- /** returns true if this is a directional light */ isDirectionLight() {
113
- return false;
114
- }
115
- /** returns true if this is a point light */ isPointLight() {
116
- return false;
117
- }
118
- /** returns true if this is a spot light */ isSpotLight() {
119
- return false;
120
- }
121
- }
122
- /*
123
- export abstract class AmbientLight extends BaseLight {
124
- constructor(scene: Scene, type: number) {
125
- super(scene, type);
126
- }
127
- isAmbientLight(): this is AmbientLight {
128
- return true;
129
- }
130
- }
131
- */ /**
132
- * Base class for any kind of puncual light
133
- * @public
134
- */ class PunctualLight extends BaseLight {
135
- /** @internal */ _color;
136
- /** @internal */ _castShadow;
137
- /** @internal */ _shadowMapper;
138
- /**
139
- * Creates an instance of punctual light
140
- * @param scene - The scene to which the punctual light belongs
141
- * @param type - The light type
142
- */ constructor(scene, type){
143
- super(scene, type);
144
- this._color = Vector4.one();
145
- this._castShadow = false;
146
- this._shadowMapper = new ShadowMapper(this);
147
- }
148
- copyFrom(other, method, recursive) {
149
- super.copyFrom(other, method, recursive);
150
- this.color = other.color;
151
- this.castShadow = other.castShadow;
152
- this.shadow.copyFrom(other.shadow);
153
- }
154
- /** Color of the light */ get color() {
155
- return this._color.clone();
156
- }
157
- set color(clr) {
158
- this.setColor(clr);
159
- }
160
- /**
161
- * Sets color of the light
162
- * @param color - The color to set
163
- * @returns self
164
- */ setColor(color) {
165
- this._color.set(color);
166
- this.invalidateUniforms();
167
- return this;
168
- }
169
- /** Whether this light casts shadows */ get castShadow() {
170
- return this._castShadow;
171
- }
172
- set castShadow(b) {
173
- this.setCastShadow(b);
174
- }
175
- /**
176
- * Sets whether this light casts shadows
177
- * @param b - true if the light casts shadows
178
- * @returns self
179
- */ setCastShadow(b) {
180
- this._castShadow = b;
181
- return this;
182
- }
183
- /** The shadow mapper for this light */ get shadow() {
184
- return this._shadowMapper;
185
- }
186
- /**
187
- * {@inheritDoc BaseLight.isPunctualLight}
188
- * @override
189
- */ isPunctualLight() {
190
- return true;
191
- }
192
- /** @internal */ _onTransformChanged(invalidateLocal) {
193
- super._onTransformChanged(invalidateLocal);
194
- this.invalidateUniforms();
195
- // this._transformCallback(true, false);
196
- }
197
- /** @internal */ computeUniforms() {}
198
- }
199
- /**
200
- * Directional light
201
- * @public
202
- */ class DirectionalLight extends PunctualLight {
203
- static _currentSunLight = new WeakMap();
204
- /**
205
- * Creates an instance of directional light
206
- * @param scene - The scene to which the light belongs
207
- */ constructor(scene){
208
- super(scene, LIGHT_TYPE_DIRECTIONAL);
209
- this.intensity = 10;
210
- if (!DirectionalLight.getSunLight(scene)) {
211
- DirectionalLight.setSunLight(scene, this);
212
- }
213
- }
214
- static getSunLight(scene) {
215
- return this._currentSunLight.get(scene)?.get() ?? null;
216
- }
217
- static setSunLight(scene, light) {
218
- if (light && scene !== light.scene) {
219
- throw new Error('setSunLight(): Light does not belongs to scene');
220
- }
221
- const ref = this._currentSunLight.get(scene);
222
- if (!ref) {
223
- this._currentSunLight.set(scene, new DWeakRef(light));
224
- } else {
225
- ref.set(light);
226
- }
227
- }
228
- clone(method, recursive) {
229
- const other = new DirectionalLight(this.scene);
230
- other.copyFrom(this, method, recursive);
231
- other.parent = this.parent;
232
- return other;
233
- }
234
- /**
235
- * true if the light was defined as sun light
236
- *
237
- * @remarks
238
- * Only one directional light will be marked as sun light.
239
- **/ get sunLight() {
240
- return DirectionalLight.getSunLight(this.scene) === this;
241
- }
242
- set sunLight(val) {
243
- if (val) {
244
- DirectionalLight.setSunLight(this.scene, this);
245
- } else if (DirectionalLight.getSunLight(this.scene) === this) {
246
- DirectionalLight.setSunLight(this.scene, null);
247
- }
248
- }
249
- /**
250
- * {@inheritDoc BaseLight.isDirectionLight}
251
- * @override
252
- */ isDirectionLight() {
253
- return true;
254
- }
255
- /** @internal */ computeBoundingVolume() {
256
- return null;
257
- }
258
- /** @internal */ computeUniforms() {
259
- const a = this.worldMatrix.getRow(3);
260
- const b = this.worldMatrix.getRow(2).scaleBy(-1);
261
- this._positionRange = new Vector4(a.x, a.y, a.z, -1);
262
- this._directionCutoff = new Vector4(b.x, b.y, b.z, 0);
263
- this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);
264
- }
265
- }
266
- /**
267
- * Point light
268
- * @public
269
- */ class PointLight extends PunctualLight {
270
- /** @internal */ _range;
271
- /**
272
- * Creates an instance of point light
273
- * @param scene - The scene to which the light belongs
274
- */ constructor(scene){
275
- super(scene, LIGHT_TYPE_POINT);
276
- this._range = 10;
277
- this.invalidateBoundingVolume();
278
- }
279
- clone(method, recursive) {
280
- const other = new PointLight(this.scene);
281
- other.copyFrom(this, method, recursive);
282
- other.parent = this.parent;
283
- return other;
284
- }
285
- copyFrom(other, method, recursive) {
286
- super.copyFrom(other, method, recursive);
287
- this.range = other.range;
288
- }
289
- /** The range of the light */ get range() {
290
- return this._range;
291
- }
292
- set range(val) {
293
- this.setRange(val);
294
- }
295
- /**
296
- * Sets the range of the light
297
- * @param val - The value to set
298
- * @returns self
299
- */ setRange(val) {
300
- val = val < 0 ? 0 : val;
301
- if (this._range !== val) {
302
- this._range = val;
303
- this.invalidateUniforms();
304
- this.invalidateBoundingVolume();
305
- }
306
- return this;
307
- }
308
- /**
309
- * {@inheritDoc BaseLight.isPointLight}
310
- * @override
311
- */ isPointLight() {
312
- return true;
313
- }
314
- /** @internal */ computeBoundingVolume() {
315
- const bbox = new BoundingBox();
316
- bbox.minPoint = new Vector3(-this._range, -this._range, -this._range);
317
- bbox.maxPoint = new Vector3(this._range, this._range, this._range);
318
- return bbox;
319
- }
320
- /** @internal */ computeUniforms() {
321
- const a = this.worldMatrix.getRow(3);
322
- const b = this.worldMatrix.getRow(2);
323
- this._positionRange = new Vector4(a.x, a.y, a.z, this.range);
324
- this._directionCutoff = new Vector4(b.x, b.y, b.z, -1);
325
- this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);
326
- }
327
- }
328
- /**
329
- * Spot light
330
- * @public
331
- */ class SpotLight extends PunctualLight {
332
- /** @internal */ _range;
333
- /** @internal */ _cutoff;
334
- /**
335
- * Creates an instance of spot light
336
- * @param scene - The scene to which the light belongs
337
- */ constructor(scene){
338
- super(scene, LIGHT_TYPE_SPOT);
339
- this._range = 10;
340
- this._cutoff = Math.cos(Math.PI / 4);
341
- this.invalidateBoundingVolume();
342
- }
343
- clone(method, recursive) {
344
- const other = new SpotLight(this.scene);
345
- other.copyFrom(this, method, recursive);
346
- other.parent = this.parent;
347
- return other;
348
- }
349
- copyFrom(other, method, recursive) {
350
- super.copyFrom(other, method, recursive);
351
- this.range = other.range;
352
- this.cutoff = other.cutoff;
353
- }
354
- /** The range of the light */ get range() {
355
- return this._range;
356
- }
357
- set range(val) {
358
- this.setRange(val);
359
- }
360
- /**
361
- * Sets the range of the light
362
- * @param val - The value to set
363
- * @returns self
364
- */ setRange(val) {
365
- val = val < 0 ? 0 : val;
366
- if (this._range !== val) {
367
- this._range = val;
368
- this.invalidateUniforms();
369
- this.invalidateBoundingVolume();
370
- }
371
- return this;
372
- }
373
- /** The cutoff of the light */ get cutoff() {
374
- return this._cutoff;
375
- }
376
- set cutoff(val) {
377
- this.setCutoff(val);
378
- }
379
- /**
380
- * Sets the cutoff of the light
381
- * @param val - The value to set
382
- * @returns self
383
- */ setCutoff(val) {
384
- val = val < 0 ? 0 : val;
385
- if (this._cutoff !== val) {
386
- this._cutoff = val;
387
- this.invalidateUniforms();
388
- this.invalidateBoundingVolume();
389
- }
390
- return this;
391
- }
392
- /**
393
- * {@inheritDoc BaseLight.isSpotLight}
394
- * @override
395
- */ isSpotLight() {
396
- return true;
397
- }
398
- /** @internal */ computeBoundingVolume() {
399
- const bbox = new BoundingBox();
400
- const cosCutoff = Math.cos(this._cutoff);
401
- const r = this._range / cosCutoff * Math.sqrt(1 - cosCutoff * cosCutoff);
402
- bbox.minPoint = new Vector3(-r, -r, 0);
403
- bbox.maxPoint = new Vector3(r, r, this._range);
404
- return bbox;
405
- }
406
- /** @internal */ computeUniforms() {
407
- const a = this.worldMatrix.getRow(3);
408
- const b = this.worldMatrix.getRow(2).scaleBy(-1);
409
- this._positionRange = new Vector4(a.x, a.y, a.z, this.range);
410
- this._directionCutoff = new Vector4(b.x, b.y, b.z, this.cutoff);
411
- this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);
412
- }
413
- }
414
-
415
- export { BaseLight, DirectionalLight, PointLight, PunctualLight, SpotLight };
416
- //# sourceMappingURL=light.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"light.js","sources":["../../../src/scene/light.ts"],"sourcesContent":["import type { Matrix4x4 } from '@zephyr3d/base';\r\nimport { Vector3, Vector4, DWeakRef } from '@zephyr3d/base';\r\nimport { GraphNode } from './graph_node';\r\nimport type { BoundingVolume } from '../utility/bounding_volume';\r\nimport { BoundingBox } from '../utility/bounding_volume';\r\nimport { ShadowMapper } from '../shadow/shadowmapper';\r\nimport { LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values';\r\nimport type { Scene } from './scene';\r\nimport type { NodeClonable, NodeCloneMethod } from '.';\r\n\r\n/**\r\n * Base class for any kind of light node\r\n * @public\r\n */\r\nexport abstract class BaseLight extends GraphNode {\r\n /** @internal */\r\n protected _type: number;\r\n /** @internal */\r\n protected _intensity: number;\r\n /** @internal */\r\n protected _positionRange: Vector4;\r\n /** @internal */\r\n protected _directionCutoff: Vector4;\r\n /** @internal */\r\n protected _diffuseIntensity: Vector4;\r\n /**\r\n * Creates a light node\r\n * @param scene - The scene to which the light node belongs\r\n * @param type - Type of the light node\r\n */\r\n constructor(scene: Scene, type: number) {\r\n super(scene);\r\n this._intensity = 1;\r\n this._type = type;\r\n this._positionRange = null;\r\n this._directionCutoff = null;\r\n this._diffuseIntensity = null;\r\n }\r\n /**\r\n * Copy from another BaseLight\r\n * @param other - Other BaseLight to copy from\r\n * @param method - Copy method\r\n */\r\n copyFrom(other: this, method: NodeCloneMethod, recursive: boolean) {\r\n super.copyFrom(other, method, recursive);\r\n this.intensity = other.intensity;\r\n }\r\n /** Gets the light type */\r\n get lightType(): number {\r\n return this._type;\r\n }\r\n /** Intensity of the light */\r\n get intensity() {\r\n return this._intensity;\r\n }\r\n set intensity(val: number) {\r\n this.setIntensity(val);\r\n }\r\n /**\r\n * Position and range of the light\r\n *\r\n * @remarks\r\n * Gets the position in world space of the light.\r\n * Light range is encoded into the W component.\r\n */\r\n get positionAndRange(): Vector4 {\r\n if (!this._positionRange) {\r\n this.computeUniforms();\r\n }\r\n return this._positionRange;\r\n }\r\n /**\r\n * Direction and cutoff of the light\r\n *\r\n * @remarks\r\n * Gets the direction in world space of the light\r\n * Light cutoff (for spot light only) is encoded into the W component.\r\n */\r\n get directionAndCutoff() {\r\n if (!this._directionCutoff) {\r\n this.computeUniforms();\r\n }\r\n return this._directionCutoff;\r\n }\r\n /**\r\n * Color and intensity of the light\r\n *\r\n * @remarks\r\n * Gets the color of the light.\r\n * Light intensity is encoded into the W component.\r\n */\r\n get diffuseAndIntensity() {\r\n if (!this._diffuseIntensity) {\r\n this.computeUniforms();\r\n }\r\n return this._diffuseIntensity;\r\n }\r\n /**\r\n * View matrix of the light\r\n *\r\n * @remarks\r\n * The view matrix of the light is used to transform a point\r\n * from the world space to the light space.\r\n */\r\n get viewMatrix(): Matrix4x4 {\r\n return this.invWorldMatrix;\r\n }\r\n /**\r\n * Sets the intensity of the light\r\n * @param val - Intensity of the light\r\n * @returns self\r\n */\r\n setIntensity(val: number) {\r\n if (this._intensity !== val) {\r\n this._intensity = val;\r\n this.invalidateUniforms();\r\n }\r\n return this;\r\n }\r\n /** @internal */\r\n invalidateUniforms() {\r\n this._positionRange = null;\r\n this._directionCutoff = null;\r\n this._diffuseIntensity = null;\r\n }\r\n /** {@inheritDoc SceneNode.isLight} */\r\n isLight(): this is BaseLight {\r\n return true;\r\n }\r\n /** {@inheritDoc SceneNode.isPunctualLight} */\r\n isPunctualLight(): this is PunctualLight {\r\n return false;\r\n }\r\n /** returns true if this is a directional light */\r\n isDirectionLight(): this is DirectionalLight {\r\n return false;\r\n }\r\n /** returns true if this is a point light */\r\n isPointLight(): this is PointLight {\r\n return false;\r\n }\r\n /** returns true if this is a spot light */\r\n isSpotLight(): this is SpotLight {\r\n return false;\r\n }\r\n /** @internal */\r\n abstract computeUniforms(): void;\r\n}\r\n\r\n/*\r\nexport abstract class AmbientLight extends BaseLight {\r\n constructor(scene: Scene, type: number) {\r\n super(scene, type);\r\n }\r\n isAmbientLight(): this is AmbientLight {\r\n return true;\r\n }\r\n}\r\n*/\r\n\r\n/**\r\n * Base class for any kind of puncual light\r\n * @public\r\n */\r\nexport class PunctualLight extends BaseLight {\r\n /** @internal */\r\n protected _color: Vector4;\r\n /** @internal */\r\n protected _castShadow: boolean;\r\n /** @internal */\r\n protected _shadowMapper: ShadowMapper;\r\n /**\r\n * Creates an instance of punctual light\r\n * @param scene - The scene to which the punctual light belongs\r\n * @param type - The light type\r\n */\r\n constructor(scene: Scene, type: number) {\r\n super(scene, type);\r\n this._color = Vector4.one();\r\n this._castShadow = false;\r\n this._shadowMapper = new ShadowMapper(this);\r\n }\r\n copyFrom(other: this, method: NodeCloneMethod, recursive: boolean): void {\r\n super.copyFrom(other, method, recursive);\r\n this.color = other.color;\r\n this.castShadow = other.castShadow;\r\n this.shadow.copyFrom(other.shadow);\r\n }\r\n /** Color of the light */\r\n get color(): Vector4 {\r\n return this._color.clone();\r\n }\r\n set color(clr: Vector4) {\r\n this.setColor(clr);\r\n }\r\n /**\r\n * Sets color of the light\r\n * @param color - The color to set\r\n * @returns self\r\n */\r\n setColor(color: Vector4 | Vector3) {\r\n this._color.set(color);\r\n this.invalidateUniforms();\r\n return this;\r\n }\r\n /** Whether this light casts shadows */\r\n get castShadow(): boolean {\r\n return this._castShadow;\r\n }\r\n set castShadow(b: boolean) {\r\n this.setCastShadow(b);\r\n }\r\n /**\r\n * Sets whether this light casts shadows\r\n * @param b - true if the light casts shadows\r\n * @returns self\r\n */\r\n setCastShadow(b: boolean): this {\r\n this._castShadow = b;\r\n return this;\r\n }\r\n /** The shadow mapper for this light */\r\n get shadow(): ShadowMapper {\r\n return this._shadowMapper;\r\n }\r\n /**\r\n * {@inheritDoc BaseLight.isPunctualLight}\r\n * @override\r\n */\r\n isPunctualLight(): this is PunctualLight {\r\n return true;\r\n }\r\n /** @internal */\r\n protected _onTransformChanged(invalidateLocal: boolean) {\r\n super._onTransformChanged(invalidateLocal);\r\n this.invalidateUniforms();\r\n // this._transformCallback(true, false);\r\n }\r\n /** @internal */\r\n computeUniforms(): void {}\r\n}\r\n\r\n/**\r\n * Directional light\r\n * @public\r\n */\r\nexport class DirectionalLight extends PunctualLight implements NodeClonable<DirectionalLight> {\r\n private static readonly _currentSunLight: WeakMap<Scene, DWeakRef<DirectionalLight>> = new WeakMap();\r\n /**\r\n * Creates an instance of directional light\r\n * @param scene - The scene to which the light belongs\r\n */\r\n constructor(scene: Scene) {\r\n super(scene, LIGHT_TYPE_DIRECTIONAL);\r\n this.intensity = 10;\r\n if (!DirectionalLight.getSunLight(scene)) {\r\n DirectionalLight.setSunLight(scene, this);\r\n }\r\n }\r\n static getSunLight(scene: Scene) {\r\n return this._currentSunLight.get(scene)?.get() ?? null;\r\n }\r\n static setSunLight(scene: Scene, light: DirectionalLight) {\r\n if (light && scene !== light.scene) {\r\n throw new Error('setSunLight(): Light does not belongs to scene');\r\n }\r\n const ref = this._currentSunLight.get(scene);\r\n if (!ref) {\r\n this._currentSunLight.set(scene, new DWeakRef(light));\r\n } else {\r\n ref.set(light);\r\n }\r\n }\r\n clone(method: NodeCloneMethod, recursive: boolean) {\r\n const other = new DirectionalLight(this.scene);\r\n other.copyFrom(this, method, recursive);\r\n other.parent = this.parent;\r\n return other;\r\n }\r\n /**\r\n * true if the light was defined as sun light\r\n *\r\n * @remarks\r\n * Only one directional light will be marked as sun light.\r\n **/\r\n get sunLight(): boolean {\r\n return DirectionalLight.getSunLight(this.scene) === this;\r\n }\r\n set sunLight(val: boolean) {\r\n if (val) {\r\n DirectionalLight.setSunLight(this.scene, this);\r\n } else if (DirectionalLight.getSunLight(this.scene) === this) {\r\n DirectionalLight.setSunLight(this.scene, null);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc BaseLight.isDirectionLight}\r\n * @override\r\n */\r\n isDirectionLight(): this is DirectionalLight {\r\n return true;\r\n }\r\n /** @internal */\r\n computeBoundingVolume(): BoundingVolume {\r\n return null;\r\n }\r\n /** @internal */\r\n computeUniforms() {\r\n const a = this.worldMatrix.getRow(3);\r\n const b = this.worldMatrix.getRow(2).scaleBy(-1);\r\n this._positionRange = new Vector4(a.x, a.y, a.z, -1);\r\n this._directionCutoff = new Vector4(b.x, b.y, b.z, 0);\r\n this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);\r\n }\r\n // adapt from DXSDK\r\n /*\r\n private _computeNearAndFar(\r\n frustumMin: Vector3,\r\n frustumMax: Vector3,\r\n aabbLightSpace: Vector3[]\r\n ): [number, number] {\r\n type Triangle = { pt: [Vector3, Vector3, Vector3]; culled: boolean };\r\n function dupTriangle(src: Triangle): Triangle {\r\n return {\r\n pt: [\r\n src.pt[0] ? new Vector3(src.pt[0]) : null,\r\n src.pt[1] ? new Vector3(src.pt[1]) : null,\r\n src.pt[2] ? new Vector3(src.pt[2]) : null\r\n ],\r\n culled: src.culled\r\n };\r\n }\r\n let nearPlane = Number.MAX_VALUE;\r\n let farPlane = -Number.MAX_VALUE;\r\n const triangleList: Triangle[] = Array.from({ length: 16 }).map((val) => ({\r\n pt: [null, null, null],\r\n culled: false\r\n }));\r\n let triangleCount = 1;\r\n triangleList[0].pt[0] = aabbLightSpace[0];\r\n triangleList[0].pt[1] = aabbLightSpace[1];\r\n triangleList[0].pt[2] = aabbLightSpace[2];\r\n const triIndices = [\r\n 0, 1, 2, 1, 2, 3, 4, 5, 6, 5, 6, 7, 0, 2, 4, 2, 4, 6, 1, 3, 5, 3, 5, 7, 0, 1, 4, 1, 4, 5, 2, 3, 6, 3, 6,\r\n 7\r\n ];\r\n const pointPassesCollision: number[] = [0, 0, 0];\r\n const minx = frustumMin.x;\r\n const maxx = frustumMax.x;\r\n const miny = frustumMin.y;\r\n const maxy = frustumMax.y;\r\n for (let i = 0; i < 12; i++) {\r\n triangleList[0].pt[0] = aabbLightSpace[triIndices[i * 3 + 0]];\r\n triangleList[0].pt[1] = aabbLightSpace[triIndices[i * 3 + 1]];\r\n triangleList[0].pt[2] = aabbLightSpace[triIndices[i * 3 + 2]];\r\n triangleList[0].culled = false;\r\n triangleCount = 1;\r\n for (let j = 0; j < 4; j++) {\r\n let edge: number, comp: number;\r\n if (j === 0) {\r\n edge = minx;\r\n comp = 0;\r\n } else if (j === 1) {\r\n edge = maxx;\r\n comp = 0;\r\n } else if (j === 2) {\r\n edge = miny;\r\n comp = 1;\r\n } else {\r\n edge = maxy;\r\n comp = 1;\r\n }\r\n let k = 0;\r\n while (k < triangleCount) {\r\n if (!triangleList[k].culled) {\r\n let insideVertCount = 0;\r\n let tempOrder: Vector3 = null;\r\n if (j === 0) {\r\n for (let t = 0; t < 3; t++) {\r\n if (triangleList[k].pt[t].x > minx) {\r\n pointPassesCollision[t] = 1;\r\n } else {\r\n pointPassesCollision[t] = 0;\r\n }\r\n insideVertCount += pointPassesCollision[t];\r\n }\r\n } else if (j === 1) {\r\n for (let t = 0; t < 3; t++) {\r\n if (triangleList[k].pt[t].x < maxx) {\r\n pointPassesCollision[t] = 1;\r\n } else {\r\n pointPassesCollision[t] = 0;\r\n }\r\n insideVertCount += pointPassesCollision[t];\r\n }\r\n } else if (j === 2) {\r\n for (let t = 0; t < 3; t++) {\r\n if (triangleList[k].pt[t].y > miny) {\r\n pointPassesCollision[t] = 1;\r\n } else {\r\n pointPassesCollision[t] = 0;\r\n }\r\n insideVertCount += pointPassesCollision[t];\r\n }\r\n } else {\r\n for (let t = 0; t < 3; t++) {\r\n if (triangleList[k].pt[t].y < maxy) {\r\n pointPassesCollision[t] = 1;\r\n } else {\r\n pointPassesCollision[t] = 0;\r\n }\r\n insideVertCount += pointPassesCollision[t];\r\n }\r\n }\r\n if (pointPassesCollision[1] && !pointPassesCollision[0]) {\r\n tempOrder = triangleList[k].pt[0];\r\n triangleList[k].pt[0] = triangleList[k].pt[1];\r\n triangleList[k].pt[1] = tempOrder;\r\n pointPassesCollision[0] = 1;\r\n pointPassesCollision[1] = 0;\r\n }\r\n if (pointPassesCollision[2] && !pointPassesCollision[1]) {\r\n tempOrder = triangleList[k].pt[1];\r\n triangleList[k].pt[1] = triangleList[k].pt[2];\r\n triangleList[k].pt[2] = tempOrder;\r\n pointPassesCollision[1] = 1;\r\n pointPassesCollision[2] = 0;\r\n }\r\n if (pointPassesCollision[1] && !pointPassesCollision[0]) {\r\n tempOrder = triangleList[k].pt[0];\r\n triangleList[k].pt[0] = triangleList[k].pt[1];\r\n triangleList[k].pt[1] = tempOrder;\r\n pointPassesCollision[0] = 1;\r\n pointPassesCollision[1] = 0;\r\n }\r\n if (insideVertCount === 0) {\r\n triangleList[k].culled = true;\r\n } else if (insideVertCount === 1) {\r\n triangleList[k].culled = false;\r\n const v0Tov1 = Vector3.sub(triangleList[k].pt[1], triangleList[k].pt[0]);\r\n const v0Tov2 = Vector3.sub(triangleList[k].pt[2], triangleList[k].pt[0]);\r\n const hitPointTimeRatio = edge - triangleList[k].pt[0][comp];\r\n const distanceAlongV1 = hitPointTimeRatio / v0Tov1[comp];\r\n const distanceAloneV2 = hitPointTimeRatio / v0Tov2[comp];\r\n v0Tov1.scaleBy(distanceAlongV1);\r\n v0Tov1.addBy(triangleList[k].pt[0]);\r\n v0Tov2.scaleBy(distanceAloneV2);\r\n v0Tov2.addBy(triangleList[k].pt[0]);\r\n triangleList[k].pt[1] = v0Tov2;\r\n triangleList[k].pt[2] = v0Tov1;\r\n } else if (insideVertCount === 2) {\r\n triangleList[triangleCount] = dupTriangle(triangleList[k + 1]);\r\n triangleList[k].culled = false;\r\n triangleList[k + 1].culled = false;\r\n const v2Tov0 = Vector3.sub(triangleList[k].pt[0], triangleList[k].pt[2]);\r\n const v2Tov1 = Vector3.sub(triangleList[k].pt[1], triangleList[k].pt[2]);\r\n const hitPointTime_2_0 = edge - triangleList[k].pt[2][comp];\r\n const distanceAloneVec_2_0 = hitPointTime_2_0 / v2Tov0[comp];\r\n v2Tov0.scaleBy(distanceAloneVec_2_0);\r\n v2Tov0.addBy(triangleList[k].pt[2]);\r\n triangleList[k + 1].pt[0] = new Vector3(triangleList[k].pt[0]);\r\n triangleList[k + 1].pt[1] = new Vector3(triangleList[k].pt[1]);\r\n triangleList[k + 1].pt[2] = v2Tov0;\r\n const hitPointTime_2_1 = edge - triangleList[k].pt[2][comp];\r\n const distanceAloneVec_2_1 = hitPointTime_2_1 / v2Tov1[comp];\r\n v2Tov1.scaleBy(distanceAloneVec_2_1);\r\n v2Tov1.addBy(triangleList[k].pt[2]);\r\n triangleList[k].pt[0] = new Vector3(triangleList[k + 1].pt[1]);\r\n triangleList[k].pt[1] = new Vector3(triangleList[k + 1].pt[2]);\r\n triangleList[k].pt[2] = v2Tov1;\r\n triangleCount++;\r\n k++;\r\n } else {\r\n triangleList[k].culled = false;\r\n }\r\n }\r\n k++;\r\n }\r\n }\r\n for (let index = 0; index < triangleCount; index++) {\r\n if (!triangleList[index].culled) {\r\n for (let v = 0; v < 3; v++) {\r\n const z = triangleList[index].pt[v].z;\r\n if (nearPlane > z) {\r\n nearPlane = z;\r\n }\r\n if (farPlane < z) {\r\n farPlane = z;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return [nearPlane, farPlane];\r\n }\r\n */\r\n}\r\n\r\n/**\r\n * Point light\r\n * @public\r\n */\r\nexport class PointLight extends PunctualLight implements NodeClonable<PointLight> {\r\n /** @internal */\r\n protected _range: number;\r\n /**\r\n * Creates an instance of point light\r\n * @param scene - The scene to which the light belongs\r\n */\r\n constructor(scene: Scene) {\r\n super(scene, LIGHT_TYPE_POINT);\r\n this._range = 10;\r\n this.invalidateBoundingVolume();\r\n }\r\n clone(method: NodeCloneMethod, recursive: boolean) {\r\n const other = new PointLight(this.scene);\r\n other.copyFrom(this, method, recursive);\r\n other.parent = this.parent;\r\n return other;\r\n }\r\n copyFrom(other: this, method: NodeCloneMethod, recursive: boolean): void {\r\n super.copyFrom(other, method, recursive);\r\n this.range = other.range;\r\n }\r\n /** The range of the light */\r\n get range() {\r\n return this._range;\r\n }\r\n set range(val: number) {\r\n this.setRange(val);\r\n }\r\n /**\r\n * Sets the range of the light\r\n * @param val - The value to set\r\n * @returns self\r\n */\r\n setRange(val: number) {\r\n val = val < 0 ? 0 : val;\r\n if (this._range !== val) {\r\n this._range = val;\r\n this.invalidateUniforms();\r\n this.invalidateBoundingVolume();\r\n }\r\n return this;\r\n }\r\n /**\r\n * {@inheritDoc BaseLight.isPointLight}\r\n * @override\r\n */\r\n isPointLight(): this is PointLight {\r\n return true;\r\n }\r\n /** @internal */\r\n computeBoundingVolume(): BoundingVolume {\r\n const bbox = new BoundingBox();\r\n bbox.minPoint = new Vector3(-this._range, -this._range, -this._range);\r\n bbox.maxPoint = new Vector3(this._range, this._range, this._range);\r\n return bbox;\r\n }\r\n /** @internal */\r\n computeUniforms() {\r\n const a = this.worldMatrix.getRow(3);\r\n const b = this.worldMatrix.getRow(2);\r\n this._positionRange = new Vector4(a.x, a.y, a.z, this.range);\r\n this._directionCutoff = new Vector4(b.x, b.y, b.z, -1);\r\n this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);\r\n }\r\n}\r\n\r\n/**\r\n * Spot light\r\n * @public\r\n */\r\nexport class SpotLight extends PunctualLight implements NodeClonable<SpotLight> {\r\n /** @internal */\r\n protected _range: number;\r\n /** @internal */\r\n protected _cutoff: number;\r\n /**\r\n * Creates an instance of spot light\r\n * @param scene - The scene to which the light belongs\r\n */\r\n constructor(scene: Scene) {\r\n super(scene, LIGHT_TYPE_SPOT);\r\n this._range = 10;\r\n this._cutoff = Math.cos(Math.PI / 4);\r\n this.invalidateBoundingVolume();\r\n }\r\n clone(method: NodeCloneMethod, recursive: boolean) {\r\n const other = new SpotLight(this.scene);\r\n other.copyFrom(this, method, recursive);\r\n other.parent = this.parent;\r\n return other;\r\n }\r\n copyFrom(other: this, method: NodeCloneMethod, recursive): void {\r\n super.copyFrom(other, method, recursive);\r\n this.range = other.range;\r\n this.cutoff = other.cutoff;\r\n }\r\n /** The range of the light */\r\n get range() {\r\n return this._range;\r\n }\r\n set range(val: number) {\r\n this.setRange(val);\r\n }\r\n /**\r\n * Sets the range of the light\r\n * @param val - The value to set\r\n * @returns self\r\n */\r\n setRange(val: number) {\r\n val = val < 0 ? 0 : val;\r\n if (this._range !== val) {\r\n this._range = val;\r\n this.invalidateUniforms();\r\n this.invalidateBoundingVolume();\r\n }\r\n return this;\r\n }\r\n /** The cutoff of the light */\r\n get cutoff() {\r\n return this._cutoff;\r\n }\r\n set cutoff(val: number) {\r\n this.setCutoff(val);\r\n }\r\n /**\r\n * Sets the cutoff of the light\r\n * @param val - The value to set\r\n * @returns self\r\n */\r\n setCutoff(val: number) {\r\n val = val < 0 ? 0 : val;\r\n if (this._cutoff !== val) {\r\n this._cutoff = val;\r\n this.invalidateUniforms();\r\n this.invalidateBoundingVolume();\r\n }\r\n return this;\r\n }\r\n /**\r\n * {@inheritDoc BaseLight.isSpotLight}\r\n * @override\r\n */\r\n isSpotLight(): this is SpotLight {\r\n return true;\r\n }\r\n /** @internal */\r\n computeBoundingVolume(): BoundingVolume {\r\n const bbox = new BoundingBox();\r\n const cosCutoff = Math.cos(this._cutoff);\r\n const r = (this._range / cosCutoff) * Math.sqrt(1 - cosCutoff * cosCutoff);\r\n bbox.minPoint = new Vector3(-r, -r, 0);\r\n bbox.maxPoint = new Vector3(r, r, this._range);\r\n return bbox;\r\n }\r\n /** @internal */\r\n computeUniforms() {\r\n const a = this.worldMatrix.getRow(3);\r\n const b = this.worldMatrix.getRow(2).scaleBy(-1);\r\n this._positionRange = new Vector4(a.x, a.y, a.z, this.range);\r\n this._directionCutoff = new Vector4(b.x, b.y, b.z, this.cutoff);\r\n this._diffuseIntensity = new Vector4(this.color.x, this.color.y, this.color.z, this.intensity);\r\n }\r\n}\r\n"],"names":["BaseLight","GraphNode","scene","type","_intensity","_type","_positionRange","_directionCutoff","_diffuseIntensity","copyFrom","other","method","recursive","intensity","lightType","val","setIntensity","positionAndRange","computeUniforms","directionAndCutoff","diffuseAndIntensity","viewMatrix","invWorldMatrix","invalidateUniforms","isLight","isPunctualLight","isDirectionLight","isPointLight","isSpotLight","PunctualLight","_color","Vector4","one","_castShadow","_shadowMapper","ShadowMapper","color","castShadow","shadow","clone","clr","setColor","set","b","setCastShadow","_onTransformChanged","invalidateLocal","DirectionalLight","_currentSunLight","WeakMap","LIGHT_TYPE_DIRECTIONAL","getSunLight","setSunLight","get","light","Error","ref","DWeakRef","parent","sunLight","computeBoundingVolume","a","worldMatrix","getRow","scaleBy","x","y","z","PointLight","LIGHT_TYPE_POINT","_range","invalidateBoundingVolume","range","setRange","bbox","BoundingBox","minPoint","Vector3","maxPoint","SpotLight","LIGHT_TYPE_SPOT","_cutoff","Math","cos","PI","cutoff","setCutoff","cosCutoff","r","sqrt"],"mappings":";;;;;;AAUA;;;IAIO,MAAeA,SAAkBC,SAAAA,SAAAA,CAAAA;qBAEtC,KAAwB;qBAExB,UAA6B;qBAE7B,cAAkC;qBAElC,gBAAoC;qBAEpC,iBAAqC;AACrC;;;;AAIC,MACD,WAAYC,CAAAA,KAAY,EAAEC,IAAY,CAAE;AACtC,QAAA,KAAK,CAACD,KAAAA,CAAAA;QACN,IAAI,CAACE,UAAU,GAAG,CAAA;QAClB,IAAI,CAACC,KAAK,GAAGF,IAAAA;QACb,IAAI,CAACG,cAAc,GAAG,IAAA;QACtB,IAAI,CAACC,gBAAgB,GAAG,IAAA;QACxB,IAAI,CAACC,iBAAiB,GAAG,IAAA;AAC3B;AACA;;;;AAIC,MACDC,SAASC,KAAW,EAAEC,MAAuB,EAAEC,SAAkB,EAAE;QACjE,KAAK,CAACH,QAASC,CAAAA,KAAAA,EAAOC,MAAQC,EAAAA,SAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACC,SAAS,GAAGH,KAAAA,CAAMG,SAAS;AAClC;+BAEA,IAAIC,SAAoB,GAAA;QACtB,OAAO,IAAI,CAACT,KAAK;AACnB;kCAEA,IAAIQ,SAAY,GAAA;QACd,OAAO,IAAI,CAACT,UAAU;AACxB;IACA,IAAIS,SAAAA,CAAUE,GAAW,EAAE;QACzB,IAAI,CAACC,YAAY,CAACD,GAAAA,CAAAA;AACpB;AACA;;;;;;AAMC,MACD,IAAIE,gBAA4B,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAACX,cAAc,EAAE;AACxB,YAAA,IAAI,CAACY,eAAe,EAAA;AACtB;QACA,OAAO,IAAI,CAACZ,cAAc;AAC5B;AACA;;;;;;AAMC,MACD,IAAIa,kBAAqB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAACZ,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAACW,eAAe,EAAA;AACtB;QACA,OAAO,IAAI,CAACX,gBAAgB;AAC9B;AACA;;;;;;AAMC,MACD,IAAIa,mBAAsB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAACZ,iBAAiB,EAAE;AAC3B,YAAA,IAAI,CAACU,eAAe,EAAA;AACtB;QACA,OAAO,IAAI,CAACV,iBAAiB;AAC/B;AACA;;;;;;AAMC,MACD,IAAIa,UAAwB,GAAA;QAC1B,OAAO,IAAI,CAACC,cAAc;AAC5B;AACA;;;;MAKAN,YAAAA,CAAaD,GAAW,EAAE;AACxB,QAAA,IAAI,IAAI,CAACX,UAAU,KAAKW,GAAK,EAAA;YAC3B,IAAI,CAACX,UAAU,GAAGW,GAAAA;AAClB,YAAA,IAAI,CAACQ,kBAAkB,EAAA;AACzB;AACA,QAAA,OAAO,IAAI;AACb;AACA,qBACAA,kBAAqB,GAAA;QACnB,IAAI,CAACjB,cAAc,GAAG,IAAA;QACtB,IAAI,CAACC,gBAAgB,GAAG,IAAA;QACxB,IAAI,CAACC,iBAAiB,GAAG,IAAA;AAC3B;AACA,2CACAgB,OAA6B,GAAA;QAC3B,OAAO,IAAA;AACT;AACA,mDACAC,eAAyC,GAAA;QACvC,OAAO,KAAA;AACT;AACA,uDACAC,gBAA6C,GAAA;QAC3C,OAAO,KAAA;AACT;AACA,iDACAC,YAAmC,GAAA;QACjC,OAAO,KAAA;AACT;AACA,gDACAC,WAAiC,GAAA;QAC/B,OAAO,KAAA;AACT;AAGF;AAEA;;;;;;;;;AASA;;;IAMO,MAAMC,aAAsB7B,SAAAA,SAAAA,CAAAA;qBAEjC,MAA0B;qBAE1B,WAA+B;qBAE/B,aAAsC;AACtC;;;;AAIC,MACD,WAAYE,CAAAA,KAAY,EAAEC,IAAY,CAAE;AACtC,QAAA,KAAK,CAACD,KAAOC,EAAAA,IAAAA,CAAAA;AACb,QAAA,IAAI,CAAC2B,MAAM,GAAGC,OAAAA,CAAQC,GAAG,EAAA;QACzB,IAAI,CAACC,WAAW,GAAG,KAAA;AACnB,QAAA,IAAI,CAACC,aAAa,GAAG,IAAIC,aAAa,IAAI,CAAA;AAC5C;AACA1B,IAAAA,QAAAA,CAASC,KAAW,EAAEC,MAAuB,EAAEC,SAAkB,EAAQ;QACvE,KAAK,CAACH,QAASC,CAAAA,KAAAA,EAAOC,MAAQC,EAAAA,SAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACwB,KAAK,GAAG1B,KAAAA,CAAM0B,KAAK;AACxB,QAAA,IAAI,CAACC,UAAU,GAAG3B,KAAAA,CAAM2B,UAAU;AAClC,QAAA,IAAI,CAACC,MAAM,CAAC7B,QAAQ,CAACC,MAAM4B,MAAM,CAAA;AACnC;8BAEA,IAAIF,KAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAACN,MAAM,CAACS,KAAK,EAAA;AAC1B;IACA,IAAIH,KAAAA,CAAMI,GAAY,EAAE;QACtB,IAAI,CAACC,QAAQ,CAACD,GAAAA,CAAAA;AAChB;AACA;;;;MAKAC,QAAAA,CAASL,KAAwB,EAAE;AACjC,QAAA,IAAI,CAACN,MAAM,CAACY,GAAG,CAACN,KAAAA,CAAAA;AAChB,QAAA,IAAI,CAACb,kBAAkB,EAAA;AACvB,QAAA,OAAO,IAAI;AACb;4CAEA,IAAIc,UAAsB,GAAA;QACxB,OAAO,IAAI,CAACJ,WAAW;AACzB;IACA,IAAII,UAAAA,CAAWM,CAAU,EAAE;QACzB,IAAI,CAACC,aAAa,CAACD,CAAAA,CAAAA;AACrB;AACA;;;;MAKAC,aAAAA,CAAcD,CAAU,EAAQ;QAC9B,IAAI,CAACV,WAAW,GAAGU,CAAAA;AACnB,QAAA,OAAO,IAAI;AACb;4CAEA,IAAIL,MAAuB,GAAA;QACzB,OAAO,IAAI,CAACJ,aAAa;AAC3B;AACA;;;AAGC,MACDT,eAAyC,GAAA;QACvC,OAAO,IAAA;AACT;AACA,qBACUoB,mBAAoBC,CAAAA,eAAwB,EAAE;AACtD,QAAA,KAAK,CAACD,mBAAoBC,CAAAA,eAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACvB,kBAAkB,EAAA;;AAEzB;qBAEAL,kBAAwB;AAC1B;AAEA;;;IAIO,MAAM6B,gBAAyBlB,SAAAA,aAAAA,CAAAA;IACpC,OAAwBmB,gBAAAA,GAA+D,IAAIC,OAAU,EAAA;AACrG;;;MAIA,WAAA,CAAY/C,KAAY,CAAE;AACxB,QAAA,KAAK,CAACA,KAAOgD,EAAAA,sBAAAA,CAAAA;QACb,IAAI,CAACrC,SAAS,GAAG,EAAA;AACjB,QAAA,IAAI,CAACkC,gBAAAA,CAAiBI,WAAW,CAACjD,KAAQ,CAAA,EAAA;YACxC6C,gBAAiBK,CAAAA,WAAW,CAAClD,KAAAA,EAAO,IAAI,CAAA;AAC1C;AACF;IACA,OAAOiD,WAAAA,CAAYjD,KAAY,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC8C,gBAAgB,CAACK,GAAG,CAACnD,QAAQmD,GAAS,EAAA,IAAA,IAAA;AACpD;AACA,IAAA,OAAOD,WAAYlD,CAAAA,KAAY,EAAEoD,KAAuB,EAAE;AACxD,QAAA,IAAIA,KAASpD,IAAAA,KAAAA,KAAUoD,KAAMpD,CAAAA,KAAK,EAAE;AAClC,YAAA,MAAM,IAAIqD,KAAM,CAAA,gDAAA,CAAA;AAClB;AACA,QAAA,MAAMC,MAAM,IAAI,CAACR,gBAAgB,CAACK,GAAG,CAACnD,KAAAA,CAAAA;AACtC,QAAA,IAAI,CAACsD,GAAK,EAAA;AACR,YAAA,IAAI,CAACR,gBAAgB,CAACN,GAAG,CAACxC,KAAAA,EAAO,IAAIuD,QAASH,CAAAA,KAAAA,CAAAA,CAAAA;SACzC,MAAA;AACLE,YAAAA,GAAAA,CAAId,GAAG,CAACY,KAAAA,CAAAA;AACV;AACF;IACAf,KAAM5B,CAAAA,MAAuB,EAAEC,SAAkB,EAAE;AACjD,QAAA,MAAMF,KAAQ,GAAA,IAAIqC,gBAAiB,CAAA,IAAI,CAAC7C,KAAK,CAAA;AAC7CQ,QAAAA,KAAAA,CAAMD,QAAQ,CAAC,IAAI,EAAEE,MAAQC,EAAAA,SAAAA,CAAAA;AAC7BF,QAAAA,KAAAA,CAAMgD,MAAM,GAAG,IAAI,CAACA,MAAM;QAC1B,OAAOhD,KAAAA;AACT;AACA;;;;;AAKE,OACF,IAAIiD,QAAoB,GAAA;AACtB,QAAA,OAAOZ,iBAAiBI,WAAW,CAAC,IAAI,CAACjD,KAAK,MAAM,IAAI;AAC1D;IACA,IAAIyD,QAAAA,CAAS5C,GAAY,EAAE;AACzB,QAAA,IAAIA,GAAK,EAAA;AACPgC,YAAAA,gBAAAA,CAAiBK,WAAW,CAAC,IAAI,CAAClD,KAAK,EAAE,IAAI,CAAA;SACxC,MAAA,IAAI6C,iBAAiBI,WAAW,CAAC,IAAI,CAACjD,KAAK,CAAM,KAAA,IAAI,EAAE;AAC5D6C,YAAAA,gBAAAA,CAAiBK,WAAW,CAAC,IAAI,CAAClD,KAAK,EAAE,IAAA,CAAA;AAC3C;AACF;AACA;;;AAGC,MACDwB,gBAA6C,GAAA;QAC3C,OAAO,IAAA;AACT;AACA,qBACAkC,qBAAwC,GAAA;QACtC,OAAO,IAAA;AACT;AACA,qBACA1C,eAAkB,GAAA;AAChB,QAAA,MAAM2C,IAAI,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA;QAClC,MAAMpB,CAAAA,GAAI,IAAI,CAACmB,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA,CAAGC,OAAO,CAAC,EAAC,CAAA;AAC9C,QAAA,IAAI,CAAC1D,cAAc,GAAG,IAAIyB,QAAQ8B,CAAEI,CAAAA,CAAC,EAAEJ,CAAAA,CAAEK,CAAC,EAAEL,CAAEM,CAAAA,CAAC,EAAE,EAAC,CAAA;AAClD,QAAA,IAAI,CAAC5D,gBAAgB,GAAG,IAAIwB,OAAQY,CAAAA,CAAAA,CAAEsB,CAAC,EAAEtB,CAAEuB,CAAAA,CAAC,EAAEvB,CAAAA,CAAEwB,CAAC,EAAE,CAAA,CAAA;QACnD,IAAI,CAAC3D,iBAAiB,GAAG,IAAIuB,OAAAA,CAAQ,IAAI,CAACK,KAAK,CAAC6B,CAAC,EAAE,IAAI,CAAC7B,KAAK,CAAC8B,CAAC,EAAE,IAAI,CAAC9B,KAAK,CAAC+B,CAAC,EAAE,IAAI,CAACtD,SAAS,CAAA;AAC/F;AAuLF;AAEA;;;IAIO,MAAMuD,UAAmBvC,SAAAA,aAAAA,CAAAA;qBAE9B,MAAyB;AACzB;;;MAIA,WAAA,CAAY3B,KAAY,CAAE;AACxB,QAAA,KAAK,CAACA,KAAOmE,EAAAA,gBAAAA,CAAAA;QACb,IAAI,CAACC,MAAM,GAAG,EAAA;AACd,QAAA,IAAI,CAACC,wBAAwB,EAAA;AAC/B;IACAhC,KAAM5B,CAAAA,MAAuB,EAAEC,SAAkB,EAAE;AACjD,QAAA,MAAMF,KAAQ,GAAA,IAAI0D,UAAW,CAAA,IAAI,CAAClE,KAAK,CAAA;AACvCQ,QAAAA,KAAAA,CAAMD,QAAQ,CAAC,IAAI,EAAEE,MAAQC,EAAAA,SAAAA,CAAAA;AAC7BF,QAAAA,KAAAA,CAAMgD,MAAM,GAAG,IAAI,CAACA,MAAM;QAC1B,OAAOhD,KAAAA;AACT;AACAD,IAAAA,QAAAA,CAASC,KAAW,EAAEC,MAAuB,EAAEC,SAAkB,EAAQ;QACvE,KAAK,CAACH,QAASC,CAAAA,KAAAA,EAAOC,MAAQC,EAAAA,SAAAA,CAAAA;AAC9B,QAAA,IAAI,CAAC4D,KAAK,GAAG9D,KAAAA,CAAM8D,KAAK;AAC1B;kCAEA,IAAIA,KAAQ,GAAA;QACV,OAAO,IAAI,CAACF,MAAM;AACpB;IACA,IAAIE,KAAAA,CAAMzD,GAAW,EAAE;QACrB,IAAI,CAAC0D,QAAQ,CAAC1D,GAAAA,CAAAA;AAChB;AACA;;;;MAKA0D,QAAAA,CAAS1D,GAAW,EAAE;QACpBA,GAAMA,GAAAA,GAAAA,GAAM,IAAI,CAAIA,GAAAA,GAAAA;AACpB,QAAA,IAAI,IAAI,CAACuD,MAAM,KAAKvD,GAAK,EAAA;YACvB,IAAI,CAACuD,MAAM,GAAGvD,GAAAA;AACd,YAAA,IAAI,CAACQ,kBAAkB,EAAA;AACvB,YAAA,IAAI,CAACgD,wBAAwB,EAAA;AAC/B;AACA,QAAA,OAAO,IAAI;AACb;AACA;;;AAGC,MACD5C,YAAmC,GAAA;QACjC,OAAO,IAAA;AACT;AACA,qBACAiC,qBAAwC,GAAA;AACtC,QAAA,MAAMc,OAAO,IAAIC,WAAAA,EAAAA;AACjBD,QAAAA,IAAAA,CAAKE,QAAQ,GAAG,IAAIC,OAAQ,CAAA,CAAC,IAAI,CAACP,MAAM,EAAE,CAAC,IAAI,CAACA,MAAM,EAAE,CAAC,IAAI,CAACA,MAAM,CAAA;AACpEI,QAAAA,IAAAA,CAAKI,QAAQ,GAAG,IAAID,OAAAA,CAAQ,IAAI,CAACP,MAAM,EAAE,IAAI,CAACA,MAAM,EAAE,IAAI,CAACA,MAAM,CAAA;QACjE,OAAOI,IAAAA;AACT;AACA,qBACAxD,eAAkB,GAAA;AAChB,QAAA,MAAM2C,IAAI,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA;AAClC,QAAA,MAAMpB,IAAI,IAAI,CAACmB,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA;AAClC,QAAA,IAAI,CAACzD,cAAc,GAAG,IAAIyB,OAAAA,CAAQ8B,EAAEI,CAAC,EAAEJ,CAAEK,CAAAA,CAAC,EAAEL,CAAEM,CAAAA,CAAC,EAAE,IAAI,CAACK,KAAK,CAAA;AAC3D,QAAA,IAAI,CAACjE,gBAAgB,GAAG,IAAIwB,QAAQY,CAAEsB,CAAAA,CAAC,EAAEtB,CAAAA,CAAEuB,CAAC,EAAEvB,CAAEwB,CAAAA,CAAC,EAAE,EAAC,CAAA;QACpD,IAAI,CAAC3D,iBAAiB,GAAG,IAAIuB,OAAAA,CAAQ,IAAI,CAACK,KAAK,CAAC6B,CAAC,EAAE,IAAI,CAAC7B,KAAK,CAAC8B,CAAC,EAAE,IAAI,CAAC9B,KAAK,CAAC+B,CAAC,EAAE,IAAI,CAACtD,SAAS,CAAA;AAC/F;AACF;AAEA;;;IAIO,MAAMkE,SAAkBlD,SAAAA,aAAAA,CAAAA;qBAE7B,MAAyB;qBAEzB,OAA0B;AAC1B;;;MAIA,WAAA,CAAY3B,KAAY,CAAE;AACxB,QAAA,KAAK,CAACA,KAAO8E,EAAAA,eAAAA,CAAAA;QACb,IAAI,CAACV,MAAM,GAAG,EAAA;QACd,IAAI,CAACW,OAAO,GAAGC,IAAAA,CAAKC,GAAG,CAACD,IAAAA,CAAKE,EAAE,GAAG,CAAA,CAAA;AAClC,QAAA,IAAI,CAACb,wBAAwB,EAAA;AAC/B;IACAhC,KAAM5B,CAAAA,MAAuB,EAAEC,SAAkB,EAAE;AACjD,QAAA,MAAMF,KAAQ,GAAA,IAAIqE,SAAU,CAAA,IAAI,CAAC7E,KAAK,CAAA;AACtCQ,QAAAA,KAAAA,CAAMD,QAAQ,CAAC,IAAI,EAAEE,MAAQC,EAAAA,SAAAA,CAAAA;AAC7BF,QAAAA,KAAAA,CAAMgD,MAAM,GAAG,IAAI,CAACA,MAAM;QAC1B,OAAOhD,KAAAA;AACT;AACAD,IAAAA,QAAAA,CAASC,KAAW,EAAEC,MAAuB,EAAEC,SAAS,EAAQ;QAC9D,KAAK,CAACH,QAASC,CAAAA,KAAAA,EAAOC,MAAQC,EAAAA,SAAAA,CAAAA;AAC9B,QAAA,IAAI,CAAC4D,KAAK,GAAG9D,KAAAA,CAAM8D,KAAK;AACxB,QAAA,IAAI,CAACa,MAAM,GAAG3E,KAAAA,CAAM2E,MAAM;AAC5B;kCAEA,IAAIb,KAAQ,GAAA;QACV,OAAO,IAAI,CAACF,MAAM;AACpB;IACA,IAAIE,KAAAA,CAAMzD,GAAW,EAAE;QACrB,IAAI,CAAC0D,QAAQ,CAAC1D,GAAAA,CAAAA;AAChB;AACA;;;;MAKA0D,QAAAA,CAAS1D,GAAW,EAAE;QACpBA,GAAMA,GAAAA,GAAAA,GAAM,IAAI,CAAIA,GAAAA,GAAAA;AACpB,QAAA,IAAI,IAAI,CAACuD,MAAM,KAAKvD,GAAK,EAAA;YACvB,IAAI,CAACuD,MAAM,GAAGvD,GAAAA;AACd,YAAA,IAAI,CAACQ,kBAAkB,EAAA;AACvB,YAAA,IAAI,CAACgD,wBAAwB,EAAA;AAC/B;AACA,QAAA,OAAO,IAAI;AACb;mCAEA,IAAIc,MAAS,GAAA;QACX,OAAO,IAAI,CAACJ,OAAO;AACrB;IACA,IAAII,MAAAA,CAAOtE,GAAW,EAAE;QACtB,IAAI,CAACuE,SAAS,CAACvE,GAAAA,CAAAA;AACjB;AACA;;;;MAKAuE,SAAAA,CAAUvE,GAAW,EAAE;QACrBA,GAAMA,GAAAA,GAAAA,GAAM,IAAI,CAAIA,GAAAA,GAAAA;AACpB,QAAA,IAAI,IAAI,CAACkE,OAAO,KAAKlE,GAAK,EAAA;YACxB,IAAI,CAACkE,OAAO,GAAGlE,GAAAA;AACf,YAAA,IAAI,CAACQ,kBAAkB,EAAA;AACvB,YAAA,IAAI,CAACgD,wBAAwB,EAAA;AAC/B;AACA,QAAA,OAAO,IAAI;AACb;AACA;;;AAGC,MACD3C,WAAiC,GAAA;QAC/B,OAAO,IAAA;AACT;AACA,qBACAgC,qBAAwC,GAAA;AACtC,QAAA,MAAMc,OAAO,IAAIC,WAAAA,EAAAA;AACjB,QAAA,MAAMY,YAAYL,IAAKC,CAAAA,GAAG,CAAC,IAAI,CAACF,OAAO,CAAA;QACvC,MAAMO,CAAAA,GAAI,IAAK,CAAClB,MAAM,GAAGiB,SAAAA,GAAaL,IAAKO,CAAAA,IAAI,CAAC,CAAA,GAAIF,SAAYA,GAAAA,SAAAA,CAAAA;AAChEb,QAAAA,IAAAA,CAAKE,QAAQ,GAAG,IAAIC,QAAQ,CAACW,CAAAA,EAAG,CAACA,CAAG,EAAA,CAAA,CAAA;QACpCd,IAAKI,CAAAA,QAAQ,GAAG,IAAID,OAAAA,CAAQW,GAAGA,CAAG,EAAA,IAAI,CAAClB,MAAM,CAAA;QAC7C,OAAOI,IAAAA;AACT;AACA,qBACAxD,eAAkB,GAAA;AAChB,QAAA,MAAM2C,IAAI,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA;QAClC,MAAMpB,CAAAA,GAAI,IAAI,CAACmB,WAAW,CAACC,MAAM,CAAC,CAAA,CAAA,CAAGC,OAAO,CAAC,EAAC,CAAA;AAC9C,QAAA,IAAI,CAAC1D,cAAc,GAAG,IAAIyB,OAAAA,CAAQ8B,EAAEI,CAAC,EAAEJ,CAAEK,CAAAA,CAAC,EAAEL,CAAEM,CAAAA,CAAC,EAAE,IAAI,CAACK,KAAK,CAAA;AAC3D,QAAA,IAAI,CAACjE,gBAAgB,GAAG,IAAIwB,OAAAA,CAAQY,EAAEsB,CAAC,EAAEtB,CAAEuB,CAAAA,CAAC,EAAEvB,CAAEwB,CAAAA,CAAC,EAAE,IAAI,CAACkB,MAAM,CAAA;QAC9D,IAAI,CAAC7E,iBAAiB,GAAG,IAAIuB,OAAAA,CAAQ,IAAI,CAACK,KAAK,CAAC6B,CAAC,EAAE,IAAI,CAAC7B,KAAK,CAAC8B,CAAC,EAAE,IAAI,CAAC9B,KAAK,CAAC+B,CAAC,EAAE,IAAI,CAACtD,SAAS,CAAA;AAC/F;AACF;;;;"}