@zephyr3d/scene 0.9.26 → 0.10.0

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 (506) hide show
  1. package/README.md +60 -27
  2. package/dist/animation/animation_bank.js +634 -0
  3. package/dist/animation/animation_bank.js.map +1 -0
  4. package/dist/animation/animation_bank_gpu.js +256 -0
  5. package/dist/animation/animation_bank_gpu.js.map +1 -0
  6. package/dist/animation/animationset.js +146 -30
  7. package/dist/animation/animationset.js.map +1 -1
  8. package/dist/animation/cloth/gpu_cloth_component.js +406 -0
  9. package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
  10. package/dist/animation/cloth/gpu_cloth_system.js +332 -202
  11. package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
  12. package/dist/animation/gpu_animation_driver.js +289 -0
  13. package/dist/animation/gpu_animation_driver.js.map +1 -0
  14. package/dist/animation/joint_dynamics/collision.js +112 -1
  15. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  16. package/dist/animation/joint_dynamics/controller.js +6 -0
  17. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  18. package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
  19. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  20. package/dist/animation/joint_dynamics/solver.js +50 -12
  21. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  22. package/dist/animation/joint_dynamics/types.js.map +1 -1
  23. package/dist/animation/skeleton.js +300 -56
  24. package/dist/animation/skeleton.js.map +1 -1
  25. package/dist/animation/skin_palette_atlas.js +252 -0
  26. package/dist/animation/skin_palette_atlas.js.map +1 -0
  27. package/dist/animation/spring/multi_chain_spring_system.js +298 -38
  28. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
  29. package/dist/animation/spring/spring_chain.js +2 -0
  30. package/dist/animation/spring/spring_chain.js.map +1 -1
  31. package/dist/animation/spring/spring_collider.js +159 -21
  32. package/dist/animation/spring/spring_collider.js.map +1 -1
  33. package/dist/animation/spring/spring_particle.js +1 -0
  34. package/dist/animation/spring/spring_particle.js.map +1 -1
  35. package/dist/animation/spring/spring_solver.js +173 -0
  36. package/dist/animation/spring/spring_solver.js.map +1 -0
  37. package/dist/animation/spring/spring_system.js +249 -24
  38. package/dist/animation/spring/spring_system.js.map +1 -1
  39. package/dist/animation/spring_modifier.js +32 -1
  40. package/dist/animation/spring_modifier.js.map +1 -1
  41. package/dist/app/app.js +26 -0
  42. package/dist/app/app.js.map +1 -1
  43. package/dist/app/engine.js +86 -15
  44. package/dist/app/engine.js.map +1 -1
  45. package/dist/app/gamepad.js +191 -0
  46. package/dist/app/gamepad.js.map +1 -0
  47. package/dist/app/inputactions.js +271 -0
  48. package/dist/app/inputactions.js.map +1 -0
  49. package/dist/app/inputmgr.js +331 -22
  50. package/dist/app/inputmgr.js.map +1 -1
  51. package/dist/app/loading.js +138 -0
  52. package/dist/app/loading.js.map +1 -0
  53. package/dist/app/pipelinecache.js +209 -0
  54. package/dist/app/pipelinecache.js.map +1 -0
  55. package/dist/app/runtimescript.js +25 -0
  56. package/dist/app/runtimescript.js.map +1 -1
  57. package/dist/app/scriptingsystem.js +54 -0
  58. package/dist/app/scriptingsystem.js.map +1 -1
  59. package/dist/app/scriptregistry.js +7 -2
  60. package/dist/app/scriptregistry.js.map +1 -1
  61. package/dist/asset/asset_manifest.js +59 -0
  62. package/dist/asset/asset_manifest.js.map +1 -0
  63. package/dist/asset/asset_preload.js +258 -0
  64. package/dist/asset/asset_preload.js.map +1 -0
  65. package/dist/asset/assetmanager.js +117 -65
  66. package/dist/asset/assetmanager.js.map +1 -1
  67. package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
  68. package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  69. package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  70. package/dist/asset/loaders/ktx2/basis_location.js +17 -0
  71. package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
  72. package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
  73. package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
  74. package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
  75. package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
  76. package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
  77. package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
  78. package/dist/asset/mesh_lod_builder.js +104 -0
  79. package/dist/asset/mesh_lod_builder.js.map +1 -0
  80. package/dist/asset/mesh_settings.js +111 -0
  81. package/dist/asset/mesh_settings.js.map +1 -0
  82. package/dist/asset/meshopt_decoder.js +18 -0
  83. package/dist/asset/meshopt_decoder.js.map +1 -0
  84. package/dist/asset/meshopt_simplifier.js +26 -0
  85. package/dist/asset/meshopt_simplifier.js.map +1 -0
  86. package/dist/asset/model.js +177 -3
  87. package/dist/asset/model.js.map +1 -1
  88. package/dist/asset/texture_settings.js +231 -0
  89. package/dist/asset/texture_settings.js.map +1 -0
  90. package/dist/asset/zmsh_binary.js +131 -0
  91. package/dist/asset/zmsh_binary.js.map +1 -0
  92. package/dist/asset/zsdf_binary.js +111 -0
  93. package/dist/asset/zsdf_binary.js.map +1 -0
  94. package/dist/blitter/bilateralblur.js +1 -2
  95. package/dist/blitter/bilateralblur.js.map +1 -1
  96. package/dist/blitter/gaussianblur.js +1 -6
  97. package/dist/blitter/gaussianblur.js.map +1 -1
  98. package/dist/camera/base.js +31 -10
  99. package/dist/camera/base.js.map +1 -1
  100. package/dist/camera/camera.js +178 -200
  101. package/dist/camera/camera.js.map +1 -1
  102. package/dist/camera/follow.js +342 -0
  103. package/dist/camera/follow.js.map +1 -0
  104. package/dist/camera/fps.js +9 -7
  105. package/dist/camera/fps.js.map +1 -1
  106. package/dist/camera/orbit.js +46 -19
  107. package/dist/camera/orbit.js.map +1 -1
  108. package/dist/index.d.ts +30475 -19865
  109. package/dist/index.js +67 -12
  110. package/dist/index.js.map +1 -1
  111. package/dist/material/blinn.js +3 -0
  112. package/dist/material/blinn.js.map +1 -1
  113. package/dist/material/eye.js +1 -1
  114. package/dist/material/eye.js.map +1 -1
  115. package/dist/material/hair.js +2 -3
  116. package/dist/material/hair.js.map +1 -1
  117. package/dist/material/hairstrand.js +235 -235
  118. package/dist/material/hairstrand.js.map +1 -1
  119. package/dist/material/lambert.js +4 -1
  120. package/dist/material/lambert.js.map +1 -1
  121. package/dist/material/material.js +362 -300
  122. package/dist/material/material.js.map +1 -1
  123. package/dist/material/meshmaterial.js +118 -45
  124. package/dist/material/meshmaterial.js.map +1 -1
  125. package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
  126. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  127. package/dist/material/mixins/lightmodel/lambert.js +1 -1
  128. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  129. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
  130. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  131. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
  132. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  133. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
  134. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  135. package/dist/material/mixins/lit.js +223 -83
  136. package/dist/material/mixins/lit.js.map +1 -1
  137. package/dist/material/mixins/pbr/common.js +31 -206
  138. package/dist/material/mixins/pbr/common.js.map +1 -1
  139. package/dist/material/mtoon.js +1 -1
  140. package/dist/material/mtoon.js.map +1 -1
  141. package/dist/material/pbrmr.js +3 -0
  142. package/dist/material/pbrmr.js.map +1 -1
  143. package/dist/material/pbrsg.js +3 -0
  144. package/dist/material/pbrsg.js.map +1 -1
  145. package/dist/material/sdf_debug.js +78 -0
  146. package/dist/material/sdf_debug.js.map +1 -0
  147. package/dist/material/shader/helper.js +733 -190
  148. package/dist/material/shader/helper.js.map +1 -1
  149. package/dist/material/shader/terrain_blend.js +204 -43
  150. package/dist/material/shader/terrain_blend.js.map +1 -1
  151. package/dist/material/skin.js +331 -297
  152. package/dist/material/skin.js.map +1 -1
  153. package/dist/material/skinprofile.js +1058 -0
  154. package/dist/material/skinprofile.js.map +1 -0
  155. package/dist/material/sss.js +353 -0
  156. package/dist/material/sss.js.map +1 -0
  157. package/dist/material/sss_kernel.js +265 -0
  158. package/dist/material/sss_kernel.js.map +1 -0
  159. package/dist/material/sssprofile.js +879 -0
  160. package/dist/material/sssprofile.js.map +1 -0
  161. package/dist/material/subsurfaceprofile.js +4 -8
  162. package/dist/material/subsurfaceprofile.js.map +1 -1
  163. package/dist/material/terrain-cm.js +464 -188
  164. package/dist/material/terrain-cm.js.map +1 -1
  165. package/dist/material/unlit.js +3 -0
  166. package/dist/material/unlit.js.map +1 -1
  167. package/dist/material/water.js +2009 -201
  168. package/dist/material/water.js.map +1 -1
  169. package/dist/node_modules/meshoptimizer/LICENSE +21 -0
  170. package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
  171. package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
  172. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
  173. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
  174. package/dist/physics/character.js +226 -0
  175. package/dist/physics/character.js.map +1 -0
  176. package/dist/physics/collider.js +209 -0
  177. package/dist/physics/collider.js.map +1 -0
  178. package/dist/physics/events.js +79 -0
  179. package/dist/physics/events.js.map +1 -0
  180. package/dist/physics/joint.js +272 -0
  181. package/dist/physics/joint.js.map +1 -0
  182. package/dist/physics/node_physics.js +234 -0
  183. package/dist/physics/node_physics.js.map +1 -0
  184. package/dist/physics/part.js +91 -0
  185. package/dist/physics/part.js.map +1 -0
  186. package/dist/physics/rigid_body.js +379 -0
  187. package/dist/physics/rigid_body.js.map +1 -0
  188. package/dist/physics/vehicle.js +335 -0
  189. package/dist/physics/vehicle.js.map +1 -0
  190. package/dist/physics/world.js +25 -0
  191. package/dist/physics/world.js.map +1 -0
  192. package/dist/posteffect/bloom.js +49 -14
  193. package/dist/posteffect/bloom.js.map +1 -1
  194. package/dist/posteffect/motionblur.js +668 -63
  195. package/dist/posteffect/motionblur.js.map +1 -1
  196. package/dist/posteffect/posteffect.js +12 -1
  197. package/dist/posteffect/posteffect.js.map +1 -1
  198. package/dist/posteffect/postsss.js +572 -0
  199. package/dist/posteffect/postsss.js.map +1 -0
  200. package/dist/posteffect/sao.js +48 -50
  201. package/dist/posteffect/sao.js.map +1 -1
  202. package/dist/posteffect/skinsss.js +605 -355
  203. package/dist/posteffect/skinsss.js.map +1 -1
  204. package/dist/posteffect/ssgi.js +91 -162
  205. package/dist/posteffect/ssgi.js.map +1 -1
  206. package/dist/posteffect/ssr.js +3 -11
  207. package/dist/posteffect/ssr.js.map +1 -1
  208. package/dist/posteffect/sss.js +34 -15
  209. package/dist/posteffect/sss.js.map +1 -1
  210. package/dist/posteffect/taa.js +1 -0
  211. package/dist/posteffect/taa.js.map +1 -1
  212. package/dist/render/abuffer_oit.js +40 -39
  213. package/dist/render/abuffer_oit.js.map +1 -1
  214. package/dist/render/clipmap.js +328 -62
  215. package/dist/render/clipmap.js.map +1 -1
  216. package/dist/render/cluster_light.js +958 -224
  217. package/dist/render/cluster_light.js.map +1 -1
  218. package/dist/render/cull_visitor.js +26 -5
  219. package/dist/render/cull_visitor.js.map +1 -1
  220. package/dist/render/debug_views.js +37 -0
  221. package/dist/render/debug_views.js.map +1 -0
  222. package/dist/render/depthpass.js +5 -1
  223. package/dist/render/depthpass.js.map +1 -1
  224. package/dist/render/drawable_mixin.js +53 -6
  225. package/dist/render/drawable_mixin.js.map +1 -1
  226. package/dist/render/dualdepthpeeling_oit.js +53 -53
  227. package/dist/render/dualdepthpeeling_oit.js.map +1 -1
  228. package/dist/render/envlight.js +196 -113
  229. package/dist/render/envlight.js.map +1 -1
  230. package/dist/render/fbm_wavegenerator.js +8 -13
  231. package/dist/render/fbm_wavegenerator.js.map +1 -1
  232. package/dist/render/fft_wavegenerator.js +268 -136
  233. package/dist/render/fft_wavegenerator.js.map +1 -1
  234. package/dist/render/gerstner_wavegenerator.js +113 -28
  235. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  236. package/dist/render/gi/probe_volume.js +1334 -0
  237. package/dist/render/gi/probe_volume.js.map +1 -0
  238. package/dist/render/gi/scene_gi.js +282 -0
  239. package/dist/render/gi/scene_gi.js.map +1 -0
  240. package/dist/render/gi/voxel_atlas.js +198 -0
  241. package/dist/render/gi/voxel_atlas.js.map +1 -0
  242. package/dist/render/gi/voxel_lighting.js +652 -0
  243. package/dist/render/gi/voxel_lighting.js.map +1 -0
  244. package/dist/render/gi/voxel_scene.js +642 -0
  245. package/dist/render/gi/voxel_scene.js.map +1 -0
  246. package/dist/render/gi/voxelize_pass.js +223 -0
  247. package/dist/render/gi/voxelize_pass.js.map +1 -0
  248. package/dist/render/globalbindgroup_allocator.js +3 -2
  249. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  250. package/dist/render/gpu_picking.js +9 -36
  251. package/dist/render/gpu_picking.js.map +1 -1
  252. package/dist/render/hzb.js +80 -22
  253. package/dist/render/hzb.js.map +1 -1
  254. package/dist/render/instance_culling.js +499 -0
  255. package/dist/render/instance_culling.js.map +1 -0
  256. package/dist/render/lightpass.js +23 -9
  257. package/dist/render/lightpass.js.map +1 -1
  258. package/dist/render/lod.js +46 -0
  259. package/dist/render/lod.js.map +1 -0
  260. package/dist/render/oit.js +11 -11
  261. package/dist/render/oit.js.map +1 -1
  262. package/dist/render/primitive.js +301 -9
  263. package/dist/render/primitive.js.map +1 -1
  264. package/dist/render/primitive_readback.js +209 -0
  265. package/dist/render/primitive_readback.js.map +1 -0
  266. package/dist/render/render_queue.js +198 -11
  267. package/dist/render/render_queue.js.map +1 -1
  268. package/dist/render/renderer.js +14 -7
  269. package/dist/render/renderer.js.map +1 -1
  270. package/dist/render/rendergraph/blackboard.js +15 -1
  271. package/dist/render/rendergraph/blackboard.js.map +1 -1
  272. package/dist/render/rendergraph/executor.js +136 -0
  273. package/dist/render/rendergraph/executor.js.map +1 -1
  274. package/dist/render/rendergraph/forward_plus_builder.js +585 -59
  275. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  276. package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
  277. package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
  278. package/dist/render/rendergraph/history_resources.js +8 -1
  279. package/dist/render/rendergraph/history_resources.js.map +1 -1
  280. package/dist/render/rendergraph/scene_render_context.js +31 -2
  281. package/dist/render/rendergraph/scene_render_context.js.map +1 -1
  282. package/dist/render/rendergraph/types.js.map +1 -1
  283. package/dist/render/renderpass.js +28 -5
  284. package/dist/render/renderpass.js.map +1 -1
  285. package/dist/render/sdf/box_allocator.js +98 -0
  286. package/dist/render/sdf/box_allocator.js.map +1 -0
  287. package/dist/render/sdf/global_sdf.js +865 -0
  288. package/dist/render/sdf/global_sdf.js.map +1 -0
  289. package/dist/render/sdf/scene_sdf.js +562 -0
  290. package/dist/render/sdf/scene_sdf.js.map +1 -0
  291. package/dist/render/sdf/sdf_atlas.js +227 -0
  292. package/dist/render/sdf/sdf_atlas.js.map +1 -0
  293. package/dist/render/sdf/sdf_programs.js +42 -0
  294. package/dist/render/sdf/sdf_programs.js.map +1 -0
  295. package/dist/render/sdf/sdf_view.js +199 -0
  296. package/dist/render/sdf/sdf_view.js.map +1 -0
  297. package/dist/render/sdf/waterline.js +610 -0
  298. package/dist/render/sdf/waterline.js.map +1 -0
  299. package/dist/render/shadow_mask_pass.js +142 -25
  300. package/dist/render/shadow_mask_pass.js.map +1 -1
  301. package/dist/render/shore_wave_generator.js +1193 -0
  302. package/dist/render/shore_wave_generator.js.map +1 -0
  303. package/dist/render/sky.js +516 -86
  304. package/dist/render/sky.js.map +1 -1
  305. package/dist/render/transmission_thickness_pass.js +477 -0
  306. package/dist/render/transmission_thickness_pass.js.map +1 -0
  307. package/dist/render/underwater.js +524 -0
  308. package/dist/render/underwater.js.map +1 -0
  309. package/dist/render/virtualtexture/virtual_texture.js +1214 -0
  310. package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
  311. package/dist/render/volumetric_cloud/cloud_common.js +472 -0
  312. package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
  313. package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
  314. package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
  315. package/dist/render/volumetric_cloud/debug_view.js +131 -0
  316. package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
  317. package/dist/render/volumetric_cloud/resources.js +380 -0
  318. package/dist/render/volumetric_cloud/resources.js.map +1 -0
  319. package/dist/render/volumetric_cloud/sky_cache.js +380 -0
  320. package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
  321. package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
  322. package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
  323. package/dist/render/water_caustics.js +1195 -0
  324. package/dist/render/water_caustics.js.map +1 -0
  325. package/dist/render/water_foam.js +627 -0
  326. package/dist/render/water_foam.js.map +1 -0
  327. package/dist/render/water_interaction.js +1795 -0
  328. package/dist/render/water_interaction.js.map +1 -0
  329. package/dist/render/weightedblended_oit.js +36 -36
  330. package/dist/render/weightedblended_oit.js.map +1 -1
  331. package/dist/scene/basesprite.js +9 -4
  332. package/dist/scene/basesprite.js.map +1 -1
  333. package/dist/scene/batchgroup.js +108 -12
  334. package/dist/scene/batchgroup.js.map +1 -1
  335. package/dist/scene/environment.js +28 -7
  336. package/dist/scene/environment.js.map +1 -1
  337. package/dist/scene/foliage.js +1020 -0
  338. package/dist/scene/foliage.js.map +1 -0
  339. package/dist/scene/foliage_buckets.js +147 -0
  340. package/dist/scene/foliage_buckets.js.map +1 -0
  341. package/dist/scene/foliage_mask.js +358 -0
  342. package/dist/scene/foliage_mask.js.map +1 -0
  343. package/dist/scene/hair.js +15 -4
  344. package/dist/scene/hair.js.map +1 -1
  345. package/dist/scene/light.js +179 -13
  346. package/dist/scene/light.js.map +1 -1
  347. package/dist/scene/mesh.js +327 -45
  348. package/dist/scene/mesh.js.map +1 -1
  349. package/dist/scene/meshdrawable.js +6 -0
  350. package/dist/scene/meshdrawable.js.map +1 -1
  351. package/dist/scene/msdftext.js +9 -3
  352. package/dist/scene/msdftext.js.map +1 -1
  353. package/dist/scene/msdftextsprite.js +9 -3
  354. package/dist/scene/msdftextsprite.js.map +1 -1
  355. package/dist/scene/particlesys.js +8 -2
  356. package/dist/scene/particlesys.js.map +1 -1
  357. package/dist/scene/physics_settings.js +157 -0
  358. package/dist/scene/physics_settings.js.map +1 -0
  359. package/dist/scene/scene.js +190 -44
  360. package/dist/scene/scene.js.map +1 -1
  361. package/dist/scene/scene_node.js +147 -6
  362. package/dist/scene/scene_node.js.map +1 -1
  363. package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
  364. package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
  365. package/dist/scene/terrain-cm/grass.js +881 -42
  366. package/dist/scene/terrain-cm/grass.js.map +1 -1
  367. package/dist/scene/terrain-cm/grass_gpu.js +929 -0
  368. package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
  369. package/dist/scene/terrain-cm/grassmaterial.js +180 -9
  370. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  371. package/dist/scene/terrain-cm/terrain-cm.js +465 -36
  372. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  373. package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
  374. package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
  375. package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
  376. package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
  377. package/dist/scene/update_queue.js +54 -0
  378. package/dist/scene/update_queue.js.map +1 -0
  379. package/dist/scene/water.js +997 -96
  380. package/dist/scene/water.js.map +1 -1
  381. package/dist/scene/water_surface_sampler.js +324 -0
  382. package/dist/scene/water_surface_sampler.js.map +1 -0
  383. package/dist/scene/wind.js +317 -0
  384. package/dist/scene/wind.js.map +1 -0
  385. package/dist/shaders/atmosphere.js +388 -166
  386. package/dist/shaders/atmosphere.js.map +1 -1
  387. package/dist/shaders/fog.js +100 -32
  388. package/dist/shaders/fog.js.map +1 -1
  389. package/dist/shaders/gi.js +365 -0
  390. package/dist/shaders/gi.js.map +1 -0
  391. package/dist/shaders/ltc_rect.js +202 -0
  392. package/dist/shaders/ltc_rect.js.map +1 -0
  393. package/dist/shaders/misc.js +1 -10
  394. package/dist/shaders/misc.js.map +1 -1
  395. package/dist/shaders/noise.js +5 -1
  396. package/dist/shaders/noise.js.map +1 -1
  397. package/dist/shaders/probes.js +309 -0
  398. package/dist/shaders/probes.js.map +1 -0
  399. package/dist/shaders/sdf.js +537 -0
  400. package/dist/shaders/sdf.js.map +1 -0
  401. package/dist/shaders/shadow.js +104 -70
  402. package/dist/shaders/shadow.js.map +1 -1
  403. package/dist/shaders/skin_brdf.js +243 -0
  404. package/dist/shaders/skin_brdf.js.map +1 -0
  405. package/dist/shaders/ssr.js +6 -159
  406. package/dist/shaders/ssr.js.map +1 -1
  407. package/dist/shaders/temporal.js +38 -27
  408. package/dist/shaders/temporal.js.map +1 -1
  409. package/dist/shaders/water.js +40 -87
  410. package/dist/shaders/water.js.map +1 -1
  411. package/dist/shaders/water_medium.js +42 -0
  412. package/dist/shaders/water_medium.js.map +1 -0
  413. package/dist/shadow/dom.js +110 -19
  414. package/dist/shadow/dom.js.map +1 -1
  415. package/dist/shadow/esm.js +3 -3
  416. package/dist/shadow/esm.js.map +1 -1
  417. package/dist/shadow/pcf_opt.js +15 -48
  418. package/dist/shadow/pcf_opt.js.map +1 -1
  419. package/dist/shadow/pcf_pd.js +15 -53
  420. package/dist/shadow/pcf_pd.js.map +1 -1
  421. package/dist/shadow/pcss.js +34 -9
  422. package/dist/shadow/pcss.js.map +1 -1
  423. package/dist/shadow/shadow_impl.js +3 -8
  424. package/dist/shadow/shadow_impl.js.map +1 -1
  425. package/dist/shadow/shadow_region.js +87 -49
  426. package/dist/shadow/shadow_region.js.map +1 -1
  427. package/dist/shadow/shadowmapper.js +93 -53
  428. package/dist/shadow/shadowmapper.js.map +1 -1
  429. package/dist/shadow/ssm.js +18 -72
  430. package/dist/shadow/ssm.js.map +1 -1
  431. package/dist/shadow/vsm.js +3 -3
  432. package/dist/shadow/vsm.js.map +1 -1
  433. package/dist/shapes/shape.js +44 -1
  434. package/dist/shapes/shape.js.map +1 -1
  435. package/dist/utility/buoyancy.js +287 -0
  436. package/dist/utility/buoyancy.js.map +1 -0
  437. package/dist/utility/physical.js +10 -1
  438. package/dist/utility/physical.js.map +1 -1
  439. package/dist/utility/pmrem.js +17 -43
  440. package/dist/utility/pmrem.js.map +1 -1
  441. package/dist/utility/sdf/bake.js +435 -0
  442. package/dist/utility/sdf/bake.js.map +1 -0
  443. package/dist/utility/sdf/bvh.js +576 -0
  444. package/dist/utility/sdf/bvh.js.map +1 -0
  445. package/dist/utility/serialization/manager.js +36 -6
  446. package/dist/utility/serialization/manager.js.map +1 -1
  447. package/dist/utility/serialization/scene/animation.js +77 -7
  448. package/dist/utility/serialization/scene/animation.js.map +1 -1
  449. package/dist/utility/serialization/scene/batch.js +11 -4
  450. package/dist/utility/serialization/scene/batch.js.map +1 -1
  451. package/dist/utility/serialization/scene/camera.js +140 -279
  452. package/dist/utility/serialization/scene/camera.js.map +1 -1
  453. package/dist/utility/serialization/scene/cloth.js +25 -0
  454. package/dist/utility/serialization/scene/cloth.js.map +1 -0
  455. package/dist/utility/serialization/scene/common.js +14 -6
  456. package/dist/utility/serialization/scene/common.js.map +1 -1
  457. package/dist/utility/serialization/scene/foliage.js +821 -0
  458. package/dist/utility/serialization/scene/foliage.js.map +1 -0
  459. package/dist/utility/serialization/scene/hair.js +11 -4
  460. package/dist/utility/serialization/scene/hair.js.map +1 -1
  461. package/dist/utility/serialization/scene/light.js +115 -7
  462. package/dist/utility/serialization/scene/light.js.map +1 -1
  463. package/dist/utility/serialization/scene/material.js +388 -220
  464. package/dist/utility/serialization/scene/material.js.map +1 -1
  465. package/dist/utility/serialization/scene/mesh.js +69 -4
  466. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  467. package/dist/utility/serialization/scene/node.js +140 -5
  468. package/dist/utility/serialization/scene/node.js.map +1 -1
  469. package/dist/utility/serialization/scene/node_physics.js +1318 -0
  470. package/dist/utility/serialization/scene/node_physics.js.map +1 -0
  471. package/dist/utility/serialization/scene/particle.js +11 -4
  472. package/dist/utility/serialization/scene/particle.js.map +1 -1
  473. package/dist/utility/serialization/scene/physics.js +120 -0
  474. package/dist/utility/serialization/scene/physics.js.map +1 -0
  475. package/dist/utility/serialization/scene/primitive.js +124 -10
  476. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  477. package/dist/utility/serialization/scene/scene.js +1687 -51
  478. package/dist/utility/serialization/scene/scene.js.map +1 -1
  479. package/dist/utility/serialization/scene/sprite.js +11 -4
  480. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  481. package/dist/utility/serialization/scene/terrain.js +163 -33
  482. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  483. package/dist/utility/serialization/scene/text.js +11 -4
  484. package/dist/utility/serialization/scene/text.js.map +1 -1
  485. package/dist/utility/serialization/scene/water.js +2473 -114
  486. package/dist/utility/serialization/scene/water.js.map +1 -1
  487. package/dist/utility/serialization/types.js.map +1 -1
  488. package/dist/utility/shprojector.js +97 -109
  489. package/dist/utility/shprojector.js.map +1 -1
  490. package/dist/utility/textures/foam.js +170 -0
  491. package/dist/utility/textures/foam.js.map +1 -0
  492. package/dist/utility/textures/ggxlut.js +17 -43
  493. package/dist/utility/textures/ggxlut.js.map +1 -1
  494. package/dist/utility/textures/ltcdata.js +4 -4
  495. package/dist/utility/textures/ltcdata.js.map +1 -1
  496. package/dist/utility/textures/ltclut.js +16 -6
  497. package/dist/utility/textures/ltclut.js.map +1 -1
  498. package/dist/utility/unsupported.js +24 -0
  499. package/dist/utility/unsupported.js.map +1 -0
  500. package/dist/values.js +13 -1
  501. package/dist/values.js.map +1 -1
  502. package/package.json +25 -12
  503. package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
  504. package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  505. package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  506. package/src/asset/meshoptimizer/LICENSE +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_physics.js","sources":["../../../../src/utility/serialization/scene/node_physics.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport type { PropertyAccessor, PropertyValue, SerializableClass } from '../types';\r\nimport { defineProps } from '../types';\r\nimport { RigidBody } from '../../../physics/rigid_body';\r\nimport { Collider, type ColliderShape } from '../../../physics/collider';\r\nimport { Joint, type JointMotorMode, type JointType } from '../../../physics/joint';\r\nimport { CharacterController } from '../../../physics/character';\r\nimport { Vehicle, Wheel, type VehicleForward } from '../../../physics/vehicle';\r\nimport { NodePhysics } from '../../../physics/node_physics';\r\nimport type { MotionType } from '../../../physics/types';\r\n\r\n/** @internal */\r\nexport function getRigidBodyClass(): SerializableClass {\r\n return {\r\n ctor: RigidBody,\r\n name: 'RigidBody',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'MotionType',\r\n description:\r\n 'Dynamic: falls and gets pushed around. Kinematic: follows its node and pushes others aside. Static: never moves',\r\n type: 'string',\r\n default: 'dynamic',\r\n options: {\r\n enum: { labels: ['Dynamic', 'Kinematic', 'Static'], values: ['dynamic', 'kinematic', 'static'] }\r\n },\r\n get(this: RigidBody, value) {\r\n value.str[0] = this.motionType;\r\n },\r\n set(this: RigidBody, value) {\r\n this.motionType = value.str[0] as MotionType;\r\n }\r\n },\r\n {\r\n name: 'Mass',\r\n description: 'Weight in kilograms; heavier bodies push lighter ones aside and are harder to stop',\r\n type: 'float',\r\n default: 1,\r\n options: { minValue: 0.001, maxValue: 10000 },\r\n get(this: RigidBody, value) {\r\n value.num[0] = this.mass;\r\n },\r\n set(this: RigidBody, value) {\r\n this.mass = value.num[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LinearDamping',\r\n description: 'Slows the body down as if moving through air or water; 0 keeps it going',\r\n type: 'float',\r\n default: 0,\r\n options: { minValue: 0, maxValue: 10 },\r\n get(this: RigidBody, value) {\r\n value.num[0] = this.linearDamping;\r\n },\r\n set(this: RigidBody, value) {\r\n this.linearDamping = value.num[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'AngularDamping',\r\n description: 'Makes spinning die down; higher values stop rolling objects sooner',\r\n type: 'float',\r\n default: 0.05,\r\n options: { minValue: 0, maxValue: 10 },\r\n get(this: RigidBody, value) {\r\n value.num[0] = this.angularDamping;\r\n },\r\n set(this: RigidBody, value) {\r\n this.angularDamping = value.num[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'GravityScale',\r\n description: 'How strongly gravity pulls this body: 0 floats, 1 falls normally, negative rises',\r\n type: 'float',\r\n default: 1,\r\n options: { minValue: -10, maxValue: 10 },\r\n get(this: RigidBody, value) {\r\n value.num[0] = this.gravityScale;\r\n },\r\n set(this: RigidBody, value) {\r\n this.gravityScale = value.num[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'CCD',\r\n description: 'Stops small, fast objects from passing through thin walls, at some cost',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.ccd;\r\n },\r\n set(this: RigidBody, value) {\r\n this.ccd = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'CanSleep',\r\n description: 'Lets the body stop being simulated once it comes to rest, saving time',\r\n type: 'bool',\r\n default: true,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.canSleep;\r\n },\r\n set(this: RigidBody, value) {\r\n this.canSleep = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'InitialLinearVelocity',\r\n description:\r\n 'Speed and direction it is already moving in when the game starts, in m/s; e.g. a thrown ball',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n get(this: RigidBody, value) {\r\n const v = this.initialLinearVelocity;\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: RigidBody, value) {\r\n this.initialLinearVelocity = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'InitialAngularVelocity',\r\n description:\r\n 'Spin it already has when the game starts, in radians per second about each world axis; 6.28 is one turn a second',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n get(this: RigidBody, value) {\r\n const v = this.initialAngularVelocity;\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: RigidBody, value) {\r\n this.initialAngularVelocity = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockTranslationX',\r\n description: 'Stops the body sliding along the world X axis, e.g. to keep a 2.5D game on its plane',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockTranslationX;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockTranslationX = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockTranslationY',\r\n description: 'Stops the body sliding along the world Y axis, e.g. to keep a 2.5D game on its plane',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockTranslationY;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockTranslationY = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockTranslationZ',\r\n description: 'Stops the body sliding along the world Z axis, e.g. to keep a 2.5D game on its plane',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockTranslationZ;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockTranslationZ = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockRotationX',\r\n description:\r\n 'Stops the body tipping or spinning about the world X axis, e.g. to keep a character upright',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockRotationX;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockRotationX = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockRotationY',\r\n description:\r\n 'Stops the body tipping or spinning about the world Y axis, e.g. to keep a character upright',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockRotationY;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockRotationY = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n },\r\n {\r\n name: 'LockRotationZ',\r\n description:\r\n 'Stops the body tipping or spinning about the world Z axis, e.g. to keep a character upright',\r\n type: 'bool',\r\n default: false,\r\n get(this: RigidBody, value) {\r\n value.bool[0] = this.lockRotationZ;\r\n },\r\n set(this: RigidBody, value) {\r\n this.lockRotationZ = value.bool[0];\r\n },\r\n isHidden(this: RigidBody) {\r\n return this.motionType !== 'dynamic';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getColliderClass(): SerializableClass {\r\n const usesRadius = (c: Collider) => c.shape === 'sphere' || c.shape === 'capsule' || c.shape === 'cylinder';\r\n const usesMesh = (c: Collider) => c.shape === 'mesh' || c.shape === 'convex';\r\n const usesHeight = (c: Collider) => c.shape === 'capsule' || c.shape === 'cylinder';\r\n return {\r\n ctor: Collider,\r\n name: 'Collider',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Shape',\r\n description: 'Outline used for collisions; pick the simplest one that fits the object',\r\n type: 'string',\r\n default: 'box',\r\n options: {\r\n enum: {\r\n labels: ['Box', 'Sphere', 'Capsule', 'Cylinder', 'Mesh', 'Convex hull', 'Terrain'],\r\n values: ['box', 'sphere', 'capsule', 'cylinder', 'mesh', 'convex', 'terrain']\r\n }\r\n },\r\n get(this: Collider, value) {\r\n value.str[0] = this.shape;\r\n },\r\n set(this: Collider, value) {\r\n this.shape = value.str[0] as ColliderShape;\r\n }\r\n },\r\n {\r\n name: 'Size',\r\n description: 'Width, height and depth of the box',\r\n type: 'vec3',\r\n default: [1, 1, 1],\r\n options: { minValue: 0 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.size.x;\r\n value.num[1] = this.size.y;\r\n value.num[2] = this.size.z;\r\n },\r\n set(this: Collider, value) {\r\n this.size = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: Collider) {\r\n return this.shape !== 'box';\r\n }\r\n },\r\n {\r\n name: 'Radius',\r\n description: 'Radius of the sphere, capsule or cylinder',\r\n type: 'float',\r\n default: 0.5,\r\n options: { minValue: 0 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.radius;\r\n },\r\n set(this: Collider, value) {\r\n this.radius = value.num[0];\r\n },\r\n isHidden(this: Collider) {\r\n return !usesRadius(this);\r\n }\r\n },\r\n {\r\n name: 'Height',\r\n description: \"Total height of the capsule or cylinder along the object's up axis\",\r\n type: 'float',\r\n default: 2,\r\n options: { minValue: 0 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.height;\r\n },\r\n set(this: Collider, value) {\r\n this.height = value.num[0];\r\n },\r\n isHidden(this: Collider) {\r\n return !usesHeight(this);\r\n }\r\n },\r\n {\r\n name: 'MeshLod',\r\n description:\r\n 'Which level of detail of the mesh to collide with; higher levels are rougher but cheaper. 0 is the full mesh',\r\n type: 'int',\r\n default: 0,\r\n options: { minValue: 0, maxValue: 16 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.meshLod;\r\n },\r\n set(this: Collider, value) {\r\n this.meshLod = value.num[0];\r\n },\r\n isHidden(this: Collider) {\r\n return !usesMesh(this);\r\n }\r\n },\r\n {\r\n name: 'TerrainResolution',\r\n description:\r\n 'Spacing of the ground samples in height map texels; larger values follow bumps less closely but use less memory',\r\n type: 'int',\r\n default: 1,\r\n options: { minValue: 1, maxValue: 16 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.terrainResolution;\r\n },\r\n set(this: Collider, value) {\r\n this.terrainResolution = value.num[0];\r\n },\r\n isHidden(this: Collider) {\r\n return this.shape !== 'terrain';\r\n }\r\n },\r\n {\r\n name: 'Offset',\r\n description: \"Moves the shape away from the object's origin, to line it up with the visible mesh\",\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n get(this: Collider, value) {\r\n value.num[0] = this.offset.x;\r\n value.num[1] = this.offset.y;\r\n value.num[2] = this.offset.z;\r\n },\r\n set(this: Collider, value) {\r\n this.offset = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: Collider) {\r\n return this.shape === 'terrain';\r\n }\r\n },\r\n {\r\n name: 'Friction',\r\n description: 'Grip against sliding: 0 is ice, around 1 is rubber',\r\n type: 'float',\r\n default: 0.5,\r\n options: { minValue: 0, maxValue: 2 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.friction;\r\n },\r\n set(this: Collider, value) {\r\n this.friction = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Restitution',\r\n description: 'Bounciness: 0 lands dead, 1 bounces back to the height it fell from',\r\n type: 'float',\r\n default: 0,\r\n options: { minValue: 0, maxValue: 1 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.restitution;\r\n },\r\n set(this: Collider, value) {\r\n this.restitution = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'IsTrigger',\r\n description: 'Detects things entering it without blocking them, e.g. for pickup or alarm zones',\r\n type: 'bool',\r\n default: false,\r\n get(this: Collider, value) {\r\n value.bool[0] = this.isTrigger;\r\n },\r\n set(this: Collider, value) {\r\n this.isTrigger = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Layer',\r\n description:\r\n 'Collision layer 0-15; the world decides which layers pass through each other, and queries can skip layers',\r\n type: 'int',\r\n default: 0,\r\n options: { minValue: 0, maxValue: 15 },\r\n get(this: Collider, value) {\r\n value.num[0] = this.layer;\r\n },\r\n set(this: Collider, value) {\r\n this.layer = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getJointClass(): SerializableClass {\r\n return {\r\n ctor: Joint,\r\n name: 'Joint',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Type',\r\n description:\r\n 'What the two bodies may do: stay together, swing like a door, slide like a drawer, swivel like a shoulder, hang on a rope, or bounce on a spring',\r\n type: 'string',\r\n default: 'hinge',\r\n options: {\r\n enum: {\r\n labels: ['Fixed', 'Hinge', 'Slider', 'Ball', 'Rope', 'Spring'],\r\n values: ['fixed', 'hinge', 'slider', 'ball', 'rope', 'spring']\r\n }\r\n },\r\n get(this: Joint, value) {\r\n value.str[0] = this.type;\r\n },\r\n set(this: Joint, value) {\r\n this.type = value.str[0] as JointType;\r\n }\r\n },\r\n {\r\n name: 'ConnectedBody',\r\n description:\r\n 'The object at the other end of the joint; leave empty to fix it to a point in the world',\r\n type: 'string',\r\n default: '',\r\n options: { sceneNode: { kind: 'node' } },\r\n get(this: Joint, value) {\r\n value.str[0] = this.connectedBodyId;\r\n },\r\n set(this: Joint, value) {\r\n this.connectedBodyId = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Anchor',\r\n description: 'Moves the pivot away from this node, to where the two objects meet',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n get(this: Joint, value) {\r\n value.num[0] = this.anchor.x;\r\n value.num[1] = this.anchor.y;\r\n value.num[2] = this.anchor.z;\r\n },\r\n set(this: Joint, value) {\r\n this.anchor = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'ConnectedAnchor',\r\n description:\r\n 'Where a rope or spring is tied at the other end: a point on the connected object, or in the world when there is none',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n get(this: Joint, value) {\r\n value.num[0] = this.connectedAnchor.x;\r\n value.num[1] = this.connectedAnchor.y;\r\n value.num[2] = this.connectedAnchor.z;\r\n },\r\n set(this: Joint, value) {\r\n this.connectedAnchor = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'rope' && this.type !== 'spring';\r\n }\r\n },\r\n {\r\n name: 'Axis',\r\n description: \"Direction, in this node's space, a hinge turns about or a slider moves along\",\r\n type: 'vec3',\r\n default: [0, 1, 0],\r\n get(this: Joint, value) {\r\n value.num[0] = this.axis.x;\r\n value.num[1] = this.axis.y;\r\n value.num[2] = this.axis.z;\r\n },\r\n set(this: Joint, value) {\r\n this.axis = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'hinge' && this.type !== 'slider';\r\n }\r\n },\r\n {\r\n name: 'CollideConnected',\r\n description:\r\n 'Lets the two joined objects bump into each other; off so a door does not catch on its frame',\r\n type: 'bool',\r\n default: false,\r\n get(this: Joint, value) {\r\n value.bool[0] = this.collideConnected;\r\n },\r\n set(this: Joint, value) {\r\n this.collideConnected = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'LimitsEnabled',\r\n description: 'Stops the joint turning or sliding past set limits',\r\n type: 'bool',\r\n default: false,\r\n get(this: Joint, value) {\r\n value.bool[0] = this.limitsEnabled;\r\n },\r\n set(this: Joint, value) {\r\n this.limitsEnabled = value.bool[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'hinge' && this.type !== 'slider' && this.type !== 'ball';\r\n }\r\n },\r\n {\r\n name: 'LowerLimit',\r\n description: 'How far a hinge may turn one way (degrees) or a slider move back (metres)',\r\n type: 'float',\r\n default: -45,\r\n get(this: Joint, value) {\r\n value.num[0] = this.lowerLimit;\r\n },\r\n set(this: Joint, value) {\r\n this.lowerLimit = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || !this.limitsEnabled;\r\n }\r\n },\r\n {\r\n name: 'UpperLimit',\r\n description: 'How far a hinge may turn the other way (degrees) or a slider move forward (metres)',\r\n type: 'float',\r\n default: 45,\r\n get(this: Joint, value) {\r\n value.num[0] = this.upperLimit;\r\n },\r\n set(this: Joint, value) {\r\n this.upperLimit = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || !this.limitsEnabled;\r\n }\r\n },\r\n {\r\n name: 'SwingLimit',\r\n description: 'How far a ball joint may tilt away from its axis, in degrees',\r\n type: 'float',\r\n default: 45,\r\n options: { minValue: 0, maxValue: 180 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.swingLimit;\r\n },\r\n set(this: Joint, value) {\r\n this.swingLimit = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'ball' || !this.limitsEnabled;\r\n }\r\n },\r\n {\r\n name: 'TwistLimit',\r\n description: 'How far a ball joint may twist about its axis, in degrees',\r\n type: 'float',\r\n default: 45,\r\n options: { minValue: 0, maxValue: 180 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.twistLimit;\r\n },\r\n set(this: Joint, value) {\r\n this.twistLimit = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'ball' || !this.limitsEnabled;\r\n }\r\n },\r\n {\r\n name: 'MotorMode',\r\n description: 'Drives a hinge or slider: to a steady speed, or to a set angle or position',\r\n type: 'string',\r\n default: 'off',\r\n options: {\r\n enum: { labels: ['Off', 'Speed', 'Position'], values: ['off', 'velocity', 'position'] }\r\n },\r\n get(this: Joint, value) {\r\n value.str[0] = this.motorMode;\r\n },\r\n set(this: Joint, value) {\r\n this.motorMode = value.str[0] as JointMotorMode;\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'hinge' && this.type !== 'slider';\r\n }\r\n },\r\n {\r\n name: 'MotorTarget',\r\n description:\r\n 'Speed to turn or slide at, or angle or position to reach (degrees for hinges, metres for sliders)',\r\n type: 'float',\r\n default: 0,\r\n get(this: Joint, value) {\r\n value.num[0] = this.motorTarget;\r\n },\r\n set(this: Joint, value) {\r\n this.motorTarget = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || this.motorMode === 'off';\r\n }\r\n },\r\n {\r\n name: 'MotorStiffness',\r\n description: 'How firmly a position motor pulls to its target',\r\n type: 'float',\r\n default: 1000,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.motorStiffness;\r\n },\r\n set(this: Joint, value) {\r\n this.motorStiffness = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || this.motorMode !== 'position';\r\n }\r\n },\r\n {\r\n name: 'MotorDamping',\r\n description: 'How smoothly a motor settles; for a speed motor, how quickly it gets up to speed',\r\n type: 'float',\r\n default: 100,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.motorDamping;\r\n },\r\n set(this: Joint, value) {\r\n this.motorDamping = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || this.motorMode === 'off';\r\n }\r\n },\r\n {\r\n name: 'MotorMaxForce',\r\n description: 'Strongest push the motor can give; 0 for no limit',\r\n type: 'float',\r\n default: 0,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.motorMaxForce;\r\n },\r\n set(this: Joint, value) {\r\n this.motorMaxForce = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return (this.type !== 'hinge' && this.type !== 'slider') || this.motorMode === 'off';\r\n }\r\n },\r\n {\r\n name: 'Length',\r\n description: 'Longest a rope gets, or the length a spring settles at, in metres',\r\n type: 'float',\r\n default: 1,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.length;\r\n },\r\n set(this: Joint, value) {\r\n this.length = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'rope' && this.type !== 'spring';\r\n }\r\n },\r\n {\r\n name: 'Stiffness',\r\n description: 'How hard the spring pulls back when stretched',\r\n type: 'float',\r\n default: 100,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.stiffness;\r\n },\r\n set(this: Joint, value) {\r\n this.stiffness = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'spring';\r\n }\r\n },\r\n {\r\n name: 'Damping',\r\n description: 'How quickly the spring stops bouncing',\r\n type: 'float',\r\n default: 5,\r\n options: { minValue: 0 },\r\n get(this: Joint, value) {\r\n value.num[0] = this.damping;\r\n },\r\n set(this: Joint, value) {\r\n this.damping = value.num[0];\r\n },\r\n isHidden(this: Joint) {\r\n return this.type !== 'spring';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getCharacterControllerClass(): SerializableClass {\r\n return {\r\n ctor: CharacterController,\r\n name: 'CharacterController',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Height',\r\n description: 'Height of the character, from its feet at this node',\r\n type: 'float',\r\n default: 1.8,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.height;\r\n },\r\n set(this: CharacterController, value) {\r\n this.height = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Radius',\r\n description: 'How wide the character is: radius of its body',\r\n type: 'float',\r\n default: 0.3,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.radius;\r\n },\r\n set(this: CharacterController, value) {\r\n this.radius = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SkinWidth',\r\n description:\r\n 'Small gap kept around the character; too small and it snags in corners, too large and it floats',\r\n type: 'float',\r\n default: 0.02,\r\n options: { minValue: 0, maxValue: 0.5 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.skinWidth;\r\n },\r\n set(this: CharacterController, value) {\r\n this.skinWidth = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SlopeLimit',\r\n description: 'Steepest slope it can walk up, in degrees',\r\n type: 'float',\r\n default: 45,\r\n options: { minValue: 0, maxValue: 90 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.slopeLimit;\r\n },\r\n set(this: CharacterController, value) {\r\n this.slopeLimit = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SlideSlope',\r\n description: 'Slopes steeper than this, in degrees, make it slide down',\r\n type: 'float',\r\n default: 30,\r\n options: { minValue: 0, maxValue: 90 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.slideSlope;\r\n },\r\n set(this: CharacterController, value) {\r\n this.slideSlope = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'StepHeight',\r\n description: 'Highest step it walks up without jumping; 0 to never step up',\r\n type: 'float',\r\n default: 0.3,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.stepHeight;\r\n },\r\n set(this: CharacterController, value) {\r\n this.stepHeight = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'StepMinWidth',\r\n description: 'Narrowest ledge it will step onto',\r\n type: 'float',\r\n default: 0.2,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.stepMinWidth;\r\n },\r\n set(this: CharacterController, value) {\r\n this.stepMinWidth = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SnapToGround',\r\n description:\r\n 'Keeps it on the ground walking down slopes and steps, up to this drop; 0 to let it leave the ground',\r\n type: 'float',\r\n default: 0.2,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.snapToGround;\r\n },\r\n set(this: CharacterController, value) {\r\n this.snapToGround = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'PushBodies',\r\n description: 'Lets the character shove loose objects it walks into',\r\n type: 'bool',\r\n default: true,\r\n get(this: CharacterController, value) {\r\n value.bool[0] = this.pushBodies;\r\n },\r\n set(this: CharacterController, value) {\r\n this.pushBodies = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'CharacterMass',\r\n description: 'How heavy the character is when shoving objects, in kilograms',\r\n type: 'float',\r\n default: 70,\r\n options: { minValue: 0 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.characterMass;\r\n },\r\n set(this: CharacterController, value) {\r\n this.characterMass = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Layer',\r\n description: 'Collision layer 0-15 of the character',\r\n type: 'int',\r\n default: 0,\r\n options: { minValue: 0, maxValue: 15 },\r\n get(this: CharacterController, value) {\r\n value.num[0] = this.layer;\r\n },\r\n set(this: CharacterController, value) {\r\n this.layer = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** A number property backed by a same-named accessor. */\r\nfunction numberProp<T>(\r\n name: string,\r\n key: keyof T & string,\r\n description: string,\r\n defaultValue: number,\r\n options: { minValue?: number; maxValue?: number } = {},\r\n type: 'float' | 'int' = 'float'\r\n): PropertyAccessor<T> {\r\n return {\r\n name,\r\n description,\r\n type,\r\n default: defaultValue,\r\n options,\r\n get(this: T, value: PropertyValue) {\r\n value.num![0] = (this as Record<string, number>)[key];\r\n },\r\n set(this: T, value: PropertyValue) {\r\n (this as Record<string, number>)[key] = value.num![0];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getVehicleClass(): SerializableClass {\r\n return {\r\n ctor: Vehicle,\r\n name: 'Vehicle',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Forward',\r\n description:\r\n 'Which way the front of the vehicle points in this node; wheels roll and steer accordingly',\r\n type: 'string',\r\n default: '+z',\r\n options: {\r\n enum: { labels: ['+Z', '-Z', '+X', '-X'], values: ['+z', '-z', '+x', '-x'] }\r\n },\r\n get(this: Vehicle, value) {\r\n value.str[0] = this.forward;\r\n },\r\n set(this: Vehicle, value) {\r\n this.forward = value.str[0] as VehicleForward;\r\n }\r\n },\r\n numberProp<Vehicle>(\r\n 'MaxEngineForce',\r\n 'maxEngineForce',\r\n \"Push at full throttle in newtons; higher accelerates harder. Shared out by the wheels' Drive\",\r\n 4000,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Vehicle>(\r\n 'MaxBrakeForce',\r\n 'maxBrakeForce',\r\n 'Braking force of each wheel at full brake, in newtons; higher stops sooner, too high locks the wheels',\r\n 3000,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Vehicle>(\r\n 'MaxHandbrakeForce',\r\n 'maxHandbrakeForce',\r\n 'Braking force of each wheel with the handbrake on, in newtons',\r\n 6000,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Vehicle>(\r\n 'MaxSteerAngle',\r\n 'maxSteerAngle',\r\n 'How far the wheels turn at full lock, in degrees; larger turns tighter',\r\n 30,\r\n { minValue: 0, maxValue: 89 }\r\n ),\r\n numberProp<Vehicle>(\r\n 'Layer',\r\n 'layer',\r\n 'Collision layer of the wheels: they only find ground on layers this one collides with',\r\n 0,\r\n { minValue: 0, maxValue: 15 },\r\n 'int'\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getWheelClass(): SerializableClass {\r\n return {\r\n ctor: Wheel,\r\n name: 'Wheel',\r\n getProps() {\r\n return defineProps([\r\n numberProp<Wheel>('Radius', 'radius', 'Radius of the wheel in metres', 0.4, { minValue: 0.01 }),\r\n numberProp<Wheel>(\r\n 'SuspensionRestLength',\r\n 'suspensionRestLength',\r\n 'Length of the suspension at rest, in metres; the wheel is placed at its end',\r\n 0.3,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'SuspensionStiffness',\r\n 'suspensionStiffness',\r\n 'Spring strength, per kilogram of vehicle; higher is firmer and sinks less under its weight',\r\n 30,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'SuspensionCompression',\r\n 'suspensionCompression',\r\n 'Damping as the suspension compresses; higher absorbs bumps more stiffly',\r\n 2.2,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'SuspensionRelaxation',\r\n 'suspensionRelaxation',\r\n 'Damping as the suspension extends again; higher stops the body bouncing sooner',\r\n 3.3,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'MaxSuspensionTravel',\r\n 'maxSuspensionTravel',\r\n 'How far the wheel moves up or down from rest, in metres',\r\n 0.3,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'MaxSuspensionForce',\r\n 'maxSuspensionForce',\r\n 'Strongest push of the suspension in newtons; too low and a heavy vehicle sags to the ground',\r\n 1e6,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'FrictionSlip',\r\n 'frictionSlip',\r\n 'Grip of the tyre, like a friction coefficient; lower makes it spin and slide more easily',\r\n 1.5,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'SideFriction',\r\n 'sideFriction',\r\n 'Scales the sideways grip; below 1 the vehicle drifts out in corners',\r\n 1,\r\n { minValue: 0 }\r\n ),\r\n numberProp<Wheel>(\r\n 'Steer',\r\n 'steer',\r\n 'How much this wheel follows the steering: 1 for front wheels, -1 to steer against it, 0 fixed',\r\n 0,\r\n { minValue: -1, maxValue: 1 }\r\n ),\r\n numberProp<Wheel>(\r\n 'Drive',\r\n 'drive',\r\n 'Share of the engine force this wheel gets, e.g. 0.5 on each rear wheel for rear wheel drive',\r\n 0,\r\n { minValue: 0, maxValue: 1 }\r\n ),\r\n numberProp<Wheel>('Brake', 'brake', 'How much the brake pedal brakes this wheel', 1, {\r\n minValue: 0,\r\n maxValue: 1\r\n }),\r\n numberProp<Wheel>(\r\n 'Handbrake',\r\n 'handbrake',\r\n 'How much the handbrake brakes this wheel, usually 1 on rear wheels',\r\n 0,\r\n { minValue: 0, maxValue: 1 }\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodePhysicsClass(): SerializableClass {\r\n return {\r\n ctor: NodePhysics,\r\n name: 'NodePhysics',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Body',\r\n description:\r\n 'Makes the object move physically: a rigid body that falls and collides, or a character controller that walks',\r\n type: 'object',\r\n default: null,\r\n options: { objectTypes: [RigidBody, CharacterController] },\r\n isNullable() {\r\n return true;\r\n },\r\n // One saved property for both slots, told apart by class name.\r\n get(this: NodePhysics, value) {\r\n value.object[0] = this.body ?? this.character;\r\n },\r\n set(this: NodePhysics, value) {\r\n const body = value?.object[0];\r\n if (body instanceof CharacterController) {\r\n this.character = body;\r\n } else {\r\n this.body = body instanceof RigidBody ? body : null;\r\n this.character = null;\r\n }\r\n }\r\n },\r\n {\r\n name: 'Colliders',\r\n description: 'Shapes the object collides with; without a rigid body above them they never move',\r\n type: 'object_array',\r\n readonly: true,\r\n options: { objectTypes: [Collider] },\r\n getDefaultValue(this: NodePhysics) {\r\n return this.colliders;\r\n },\r\n get(this: NodePhysics, value) {\r\n value.object = [...this.colliders];\r\n },\r\n set(this: NodePhysics, value) {\r\n this.colliders = ((value.object ?? []) as unknown[]).filter(\r\n (c): c is Collider => c instanceof Collider\r\n );\r\n },\r\n add(this: NodePhysics, value, index) {\r\n const collider = value.object?.[0];\r\n if (collider instanceof Collider) {\r\n const colliders = [...this.colliders];\r\n colliders.splice(index ?? colliders.length, 0, collider);\r\n this.colliders = colliders;\r\n }\r\n },\r\n delete(this: NodePhysics, index) {\r\n const collider = this.colliders[index];\r\n if (collider) {\r\n this.removeCollider(collider);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Joint',\r\n description: 'Links this object to another one, or to a point in the world, like a hinge or a rope',\r\n type: 'object',\r\n default: null,\r\n options: { objectTypes: [Joint] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: NodePhysics, value) {\r\n value.object[0] = this.joint;\r\n },\r\n set(this: NodePhysics, value) {\r\n const joint = value?.object[0];\r\n this.joint = joint instanceof Joint ? joint : null;\r\n }\r\n },\r\n {\r\n name: 'Vehicle',\r\n description:\r\n 'Drives the object as a wheeled vehicle; needs a dynamic rigid body and wheels below it',\r\n type: 'object',\r\n default: null,\r\n options: { objectTypes: [Vehicle] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: NodePhysics, value) {\r\n value.object[0] = this.vehicle;\r\n },\r\n set(this: NodePhysics, value) {\r\n const vehicle = value?.object[0];\r\n this.vehicle = vehicle instanceof Vehicle ? vehicle : null;\r\n }\r\n },\r\n {\r\n name: 'Wheel',\r\n description: 'Makes the object a wheel of the vehicle above it',\r\n type: 'object',\r\n default: null,\r\n options: { objectTypes: [Wheel] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: NodePhysics, value) {\r\n value.object[0] = this.wheel;\r\n },\r\n set(this: NodePhysics, value) {\r\n const wheel = value?.object[0];\r\n this.wheel = wheel instanceof Wheel ? wheel : null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getRigidBodyClass","ctor","RigidBody","name","getProps","defineProps","description","type","default","options","enum","labels","values","get","value","str","motionType","set","minValue","maxValue","num","mass","isHidden","linearDamping","angularDamping","gravityScale","bool","ccd","canSleep","v","initialLinearVelocity","x","y","z","Vector3","initialAngularVelocity","lockTranslationX","lockTranslationY","lockTranslationZ","lockRotationX","lockRotationY","lockRotationZ","getColliderClass","usesRadius","c","shape","usesMesh","usesHeight","Collider","size","radius","height","meshLod","terrainResolution","offset","friction","restitution","isTrigger","layer","getJointClass","Joint","sceneNode","kind","connectedBodyId","anchor","connectedAnchor","axis","collideConnected","limitsEnabled","lowerLimit","upperLimit","swingLimit","twistLimit","motorMode","motorTarget","motorStiffness","motorDamping","motorMaxForce","length","stiffness","damping","getCharacterControllerClass","CharacterController","skinWidth","slopeLimit","slideSlope","stepHeight","stepMinWidth","snapToGround","pushBodies","characterMass","numberProp","key","defaultValue","getVehicleClass","Vehicle","forward","getWheelClass","Wheel","getNodePhysicsClass","NodePhysics","objectTypes","isNullable","object","body","character","readonly","getDefaultValue","colliders","filter","add","index","collider","splice","delete","removeCollider","joint","vehicle","wheel"],"mappings":";;;;;;;;;AAWA,iBACO,SAASA,iBAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,SAAAA;QACNC,IAAM,EAAA,WAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,YAAA;oBACNG,WACE,EAAA,iHAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,SAAA;oBACTC,OAAS,EAAA;wBACPC,IAAM,EAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA,WAAA;AAAa,gCAAA;AAAS,6BAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA,WAAA;AAAa,gCAAA;AAAS;AAAC;AACjG,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,UAAU;AAChC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACE,UAAU,GAAGF,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC;AACF,iBAAA;AACA,gBAAA;oBACEZ,IAAM,EAAA,MAAA;oBACNG,WAAa,EAAA,oFAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,KAAA;wBAAOC,QAAU,EAAA;AAAM,qBAAA;AAC5CN,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,IAAI;AAC1B,qBAAA;AACAJ,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACO,IAAI,GAAGP,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,eAAA;oBACNG,WAAa,EAAA,yEAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACG,aAAa;AACnC,qBAAA;AACAN,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACS,aAAa,GAAGT,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACnC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,gBAAA;oBACNG,WAAa,EAAA,oEAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACI,cAAc;AACpC,qBAAA;AACAP,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACU,cAAc,GAAGV,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,cAAA;oBACNG,WAAa,EAAA,kFAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;AAAES,wBAAAA,QAAAA,EAAU,GAAC;wBAAIC,QAAU,EAAA;AAAG,qBAAA;AACvCN,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACK,YAAY;AAClC,qBAAA;AACAR,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACW,YAAY,GAAGX,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,KAAA;oBACNG,WAAa,EAAA,yEAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,GAAG;AAC1B,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACa,GAAG,GAAGb,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AAC1B,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,UAAA;oBACNG,WAAa,EAAA,uEAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,IAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,QAAQ;AAC/B,qBAAA;AACAX,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACc,QAAQ,GAAGd,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AAC/B,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,uBAAA;oBACNG,WACE,EAAA,8FAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;wBACxB,MAAMe,CAAAA,GAAI,IAAI,CAACC,qBAAqB;AACpChB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEE,CAAC;AAClBjB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEG,CAAC;AAClBlB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEI,CAAC;AACpB,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACgB,qBAAqB,GAAG,IAAII,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AACnF,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,wBAAA;oBACNG,WACE,EAAA,kHAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;wBACxB,MAAMe,CAAAA,GAAI,IAAI,CAACM,sBAAsB;AACrCrB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEE,CAAC;AAClBjB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEG,CAAC;AAClBlB,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAE,CAAA,GAAGS,EAAEI,CAAC;AACpB,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACqB,sBAAsB,GAAG,IAAID,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AACpF,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,kBAAA;oBACNG,WAAa,EAAA,sFAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACU,gBAAgB;AACvC,qBAAA;AACAnB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACsB,gBAAgB,GAAGtB,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACvC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,kBAAA;oBACNG,WAAa,EAAA,sFAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACW,gBAAgB;AACvC,qBAAA;AACApB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACuB,gBAAgB,GAAGvB,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACvC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,kBAAA;oBACNG,WAAa,EAAA,sFAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACY,gBAAgB;AACvC,qBAAA;AACArB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACwB,gBAAgB,GAAGxB,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACvC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,eAAA;oBACNG,WACE,EAAA,6FAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,aAAa;AACpC,qBAAA;AACAtB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAACyB,aAAa,GAAGzB,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,eAAA;oBACNG,WACE,EAAA,6FAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACc,aAAa;AACpC,qBAAA;AACAvB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAAC0B,aAAa,GAAG1B,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF,iBAAA;AACA,gBAAA;oBACEb,IAAM,EAAA,eAAA;oBACNG,WACE,EAAA,6FAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAqBC,KAAK,EAAA;AACxBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACe,aAAa;AACpC,qBAAA;AACAxB,oBAAAA,GAAAA,CAAAA,CAAqBH,KAAK,EAAA;AACxB,wBAAA,IAAI,CAAC2B,aAAa,GAAG3B,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACN,UAAU,KAAK,SAAA;AAC7B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAAS0B,gBAAAA,GAAAA;AACd,IAAA,MAAMC,UAAa,GAAA,CAACC,CAAgBA,GAAAA,CAAAA,CAAEC,KAAK,KAAK,QAAYD,IAAAA,CAAAA,CAAEC,KAAK,KAAK,SAAaD,IAAAA,CAAAA,CAAEC,KAAK,KAAK,UAAA;IACjG,MAAMC,QAAAA,GAAW,CAACF,CAAgBA,GAAAA,CAAAA,CAAEC,KAAK,KAAK,MAAA,IAAUD,CAAEC,CAAAA,KAAK,KAAK,QAAA;IACpE,MAAME,UAAAA,GAAa,CAACH,CAAgBA,GAAAA,CAAAA,CAAEC,KAAK,KAAK,SAAA,IAAaD,CAAEC,CAAAA,KAAK,KAAK,UAAA;IACzE,OAAO;QACL5C,IAAM+C,EAAAA,QAAAA;QACN7C,IAAM,EAAA,UAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,OAAA;oBACNG,WAAa,EAAA,yEAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,KAAA;oBACTC,OAAS,EAAA;wBACPC,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,KAAA;AAAO,gCAAA,QAAA;AAAU,gCAAA,SAAA;AAAW,gCAAA,UAAA;AAAY,gCAAA,MAAA;AAAQ,gCAAA,aAAA;AAAe,gCAAA;AAAU,6BAAA;4BAClFC,MAAQ,EAAA;AAAC,gCAAA,KAAA;AAAO,gCAAA,QAAA;AAAU,gCAAA,SAAA;AAAW,gCAAA,UAAA;AAAY,gCAAA,MAAA;AAAQ,gCAAA,QAAA;AAAU,gCAAA;AAAU;AAC/E;AACF,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC8B,KAAK;AAC3B,qBAAA;AACA5B,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAAC+B,KAAK,GAAG/B,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC3B;AACF,iBAAA;AACA,gBAAA;oBACEZ,IAAM,EAAA,MAAA;oBACNG,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBAClBC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;wBACvBA,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6B,IAAI,CAAClB,CAAC;wBAC1BjB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6B,IAAI,CAACjB,CAAC;wBAC1BlB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6B,IAAI,CAAChB,CAAC;AAC5B,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACmC,IAAI,GAAG,IAAIf,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAClE,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACuB,KAAK,KAAK,KAAA;AACxB;AACF,iBAAA;AACA,gBAAA;oBACE1C,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC8B,MAAM;AAC5B,qBAAA;AACAjC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACoC,MAAM,GAAGpC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,CAACqB,WAAW,IAAI,CAAA;AACzB;AACF,iBAAA;AACA,gBAAA;oBACExC,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,oEAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+B,MAAM;AAC5B,qBAAA;AACAlC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACqC,MAAM,GAAGrC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,CAACyB,WAAW,IAAI,CAAA;AACzB;AACF,iBAAA;AACA,gBAAA;oBACE5C,IAAM,EAAA,SAAA;oBACNG,WACE,EAAA,8GAAA;oBACFC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgC,OAAO;AAC7B,qBAAA;AACAnC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACsC,OAAO,GAAGtC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC7B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,CAACwB,SAAS,IAAI,CAAA;AACvB;AACF,iBAAA;AACA,gBAAA;oBACE3C,IAAM,EAAA,mBAAA;oBACNG,WACE,EAAA,iHAAA;oBACFC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,iBAAiB;AACvC,qBAAA;AACApC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACuC,iBAAiB,GAAGvC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACuB,KAAK,KAAK,SAAA;AACxB;AACF,iBAAA;AACA,gBAAA;oBACE1C,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,oFAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;wBACvBA,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACkC,MAAM,CAACvB,CAAC;wBAC5BjB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACkC,MAAM,CAACtB,CAAC;wBAC5BlB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACkC,MAAM,CAACrB,CAAC;AAC9B,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACwC,MAAM,GAAG,IAAIpB,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AACpE,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACuB,KAAK,KAAK,SAAA;AACxB;AACF,iBAAA;AACA,gBAAA;oBACE1C,IAAM,EAAA,UAAA;oBACNG,WAAa,EAAA,oDAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAE,qBAAA;AACpCN,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACmC,QAAQ;AAC9B,qBAAA;AACAtC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAACyC,QAAQ,GAAGzC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC9B;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,aAAA;oBACNG,WAAa,EAAA,qEAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAE,qBAAA;AACpCN,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACoC,WAAW;AACjC,qBAAA;AACAvC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAAC0C,WAAW,GAAG1C,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,WAAA;oBACNG,WAAa,EAAA,kFAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+B,SAAS;AAChC,qBAAA;AACAxC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAAC2C,SAAS,GAAG3C,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AAChC;AACF,iBAAA;AACA,gBAAA;oBACEvB,IAAM,EAAA,OAAA;oBACNG,WACE,EAAA,2GAAA;oBACFC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAAoBC,KAAK,EAAA;AACvBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsC,KAAK;AAC3B,qBAAA;AACAzC,oBAAAA,GAAAA,CAAAA,CAAoBH,KAAK,EAAA;AACvB,wBAAA,IAAI,CAAC4C,KAAK,GAAG5C,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC3B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASuC,aAAAA,GAAAA;IACd,OAAO;QACL1D,IAAM2D,EAAAA,KAAAA;QACNzD,IAAM,EAAA,OAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,MAAA;oBACNG,WACE,EAAA,kJAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,OAAA;oBACTC,OAAS,EAAA;wBACPC,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,MAAA;AAAQ,gCAAA,MAAA;AAAQ,gCAAA;AAAS,6BAAA;4BAC9DC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,MAAA;AAAQ,gCAAA,MAAA;AAAQ,gCAAA;AAAS;AAChE;AACF,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACR,IAAI;AAC1B,qBAAA;AACAU,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACP,IAAI,GAAGO,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1B;AACF,iBAAA;AACA,gBAAA;oBACEZ,IAAM,EAAA,eAAA;oBACNG,WACE,EAAA,yFAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAEoD,SAAW,EAAA;4BAAEC,IAAM,EAAA;AAAO;AAAE,qBAAA;AACvCjD,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgD,eAAe;AACrC,qBAAA;AACA9C,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACiD,eAAe,GAAGjD,MAAMC,GAAG,CAAC,EAAE,IAAI,EAAA;AACzC;AACF,iBAAA;AACA,gBAAA;oBACEZ,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,oEAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;wBACpBA,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC4C,MAAM,CAACjC,CAAC;wBAC5BjB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC4C,MAAM,CAAChC,CAAC;wBAC5BlB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC4C,MAAM,CAAC/B,CAAC;AAC9B,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACkD,MAAM,GAAG,IAAI9B,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AACpE;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,iBAAA;oBACNG,WACE,EAAA,sHAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;wBACpBA,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6C,eAAe,CAAClC,CAAC;wBACrCjB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6C,eAAe,CAACjC,CAAC;wBACrClB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC6C,eAAe,CAAChC,CAAC;AACvC,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACmD,eAAe,GAAG,IAAI/B,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC7E,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,UAAU,IAAI,CAACA,IAAI,KAAK,QAAA;AAC/C;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,MAAA;oBACNG,WAAa,EAAA,8EAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;AAClBK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;wBACpBA,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC8C,IAAI,CAACnC,CAAC;wBAC1BjB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC8C,IAAI,CAAClC,CAAC;wBAC1BlB,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAAC8C,IAAI,CAACjC,CAAC;AAC5B,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACoD,IAAI,GAAG,IAAIhC,OAAQpB,CAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,EAAEN,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAClE,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,WAAW,IAAI,CAACA,IAAI,KAAK,QAAA;AAChD;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,kBAAA;oBACNG,WACE,EAAA,6FAAA;oBACFC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACyC,gBAAgB;AACvC,qBAAA;AACAlD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACqD,gBAAgB,GAAGrD,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACvC;AACF,iBAAA;AACA,gBAAA;oBACEvB,IAAM,EAAA,eAAA;oBACNG,WAAa,EAAA,oDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0C,aAAa;AACpC,qBAAA;AACAnD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACsD,aAAa,GAAGtD,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAJ,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAI,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAY,IAAI,CAACA,IAAI,KAAK,MAAA;AAC1E;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,2EAAA;oBACbC,IAAM,EAAA,OAAA;AACNC,oBAAAA,OAAAA,EAAS,GAAC;AACVK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiD,UAAU;AAChC,qBAAA;AACApD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACuD,UAAU,GAAGvD,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,CAAC,IAAI,CAAC6D,aAAa;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEjE,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,oFAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkD,UAAU;AAChC,qBAAA;AACArD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACwD,UAAU,GAAGxD,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,CAAC,IAAI,CAAC6D,aAAa;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEjE,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,8DAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAI,qBAAA;AACtCN,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACmD,UAAU;AAChC,qBAAA;AACAtD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACyD,UAAU,GAAGzD,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC6D,aAAa;AACpD;AACF,iBAAA;AACA,gBAAA;oBACEjE,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,2DAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAI,qBAAA;AACtCN,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACoD,UAAU;AAChC,qBAAA;AACAvD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC0D,UAAU,GAAG1D,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC6D,aAAa;AACpD;AACF,iBAAA;AACA,gBAAA;oBACEjE,IAAM,EAAA,WAAA;oBACNG,WAAa,EAAA,4EAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,KAAA;oBACTC,OAAS,EAAA;wBACPC,IAAM,EAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,KAAA;AAAO,gCAAA,OAAA;AAAS,gCAAA;AAAW,6BAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,KAAA;AAAO,gCAAA,UAAA;AAAY,gCAAA;AAAW;AAAC;AACxF,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0D,SAAS;AAC/B,qBAAA;AACAxD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC2D,SAAS,GAAG3D,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B,qBAAA;AACAO,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,WAAW,IAAI,CAACA,IAAI,KAAK,QAAA;AAChD;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,aAAA;oBACNG,WACE,EAAA,mGAAA;oBACFC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsD,WAAW;AACjC,qBAAA;AACAzD,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC4D,WAAW,GAAG5D,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,IAAI,CAACkE,SAAS,KAAK,KAAA;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEtE,IAAM,EAAA,gBAAA;oBACNG,WAAa,EAAA,iDAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACuD,cAAc;AACpC,qBAAA;AACA1D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC6D,cAAc,GAAG7D,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,IAAI,CAACkE,SAAS,KAAK,UAAA;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEtE,IAAM,EAAA,cAAA;oBACNG,WAAa,EAAA,kFAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACwD,YAAY;AAClC,qBAAA;AACA3D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC8D,YAAY,GAAG9D,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,IAAI,CAACkE,SAAS,KAAK,KAAA;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEtE,IAAM,EAAA,eAAA;oBACNG,WAAa,EAAA,mDAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACyD,aAAa;AACnC,qBAAA;AACA5D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAAC+D,aAAa,GAAG/D,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACnC,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;AACE,wBAAA,OAAO,IAAK,CAACf,IAAI,KAAK,OAAW,IAAA,IAAI,CAACA,IAAI,KAAK,QAAA,IAAa,IAAI,CAACkE,SAAS,KAAK,KAAA;AACjF;AACF,iBAAA;AACA,gBAAA;oBACEtE,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,mEAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0D,MAAM;AAC5B,qBAAA;AACA7D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACgE,MAAM,GAAGhE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,UAAU,IAAI,CAACA,IAAI,KAAK,QAAA;AAC/C;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,WAAA;oBACNG,WAAa,EAAA,+CAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC2D,SAAS;AAC/B,qBAAA;AACA9D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACiE,SAAS,GAAGjE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,QAAA;AACvB;AACF,iBAAA;AACA,gBAAA;oBACEJ,IAAM,EAAA,SAAA;oBACNG,WAAa,EAAA,uCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAAiBC,KAAK,EAAA;AACpBA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC4D,OAAO;AAC7B,qBAAA;AACA/D,oBAAAA,GAAAA,CAAAA,CAAiBH,KAAK,EAAA;AACpB,wBAAA,IAAI,CAACkE,OAAO,GAAGlE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC7B,qBAAA;AACAE,oBAAAA,QAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACf,IAAI,KAAK,QAAA;AACvB;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAAS0E,2BAAAA,GAAAA;IACd,OAAO;QACLhF,IAAMiF,EAAAA,mBAAAA;QACN/E,IAAM,EAAA,qBAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,qDAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+B,MAAM;AAC5B,qBAAA;AACAlC,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACqC,MAAM,GAAGrC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,QAAA;oBACNG,WAAa,EAAA,+CAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC8B,MAAM;AAC5B,qBAAA;AACAjC,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACoC,MAAM,GAAGpC,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,WAAA;oBACNG,WACE,EAAA,iGAAA;oBACFC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAI,qBAAA;AACtCN,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+D,SAAS;AAC/B,qBAAA;AACAlE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACqE,SAAS,GAAGrE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgE,UAAU;AAChC,qBAAA;AACAnE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACsE,UAAU,GAAGtE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,0DAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiE,UAAU;AAChC,qBAAA;AACApE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACuE,UAAU,GAAGvE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,8DAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkE,UAAU;AAChC,qBAAA;AACArE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACwE,UAAU,GAAGxE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAChC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,cAAA;oBACNG,WAAa,EAAA,mCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACmE,YAAY;AAClC,qBAAA;AACAtE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAACyE,YAAY,GAAGzE,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,cAAA;oBACNG,WACE,EAAA,qGAAA;oBACFC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,GAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACoE,YAAY;AAClC,qBAAA;AACAvE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAAC0E,YAAY,GAAG1E,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,YAAA;oBACNG,WAAa,EAAA,sDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,IAAA;AACTK,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMY,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+D,UAAU;AACjC,qBAAA;AACAxE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAAC2E,UAAU,GAAG3E,KAAMY,CAAAA,IAAI,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACEvB,IAAM,EAAA,eAAA;oBACNG,WAAa,EAAA,+DAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,EAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA;AAAE,qBAAA;AACvBL,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsE,aAAa;AACnC,qBAAA;AACAzE,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAAC4E,aAAa,GAAG5E,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AACnC;AACF,iBAAA;AACA,gBAAA;oBACEjB,IAAM,EAAA,OAAA;oBACNG,WAAa,EAAA,uCAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;oBACTC,OAAS,EAAA;wBAAES,QAAU,EAAA,CAAA;wBAAGC,QAAU,EAAA;AAAG,qBAAA;AACrCN,oBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,wBAAAA,KAAAA,CAAMM,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsC,KAAK;AAC3B,qBAAA;AACAzC,oBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,wBAAA,IAAI,CAAC4C,KAAK,GAAG5C,KAAMM,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC3B;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,0DACA,SAASuE,UAAAA,CACPxF,IAAY,EACZyF,GAAqB,EACrBtF,WAAmB,EACnBuF,YAAoB,EACpBpF,OAAoD,GAAA,EAAE,EACtDF,OAAwB,OAAO,EAAA;IAE/B,OAAO;AACLJ,QAAAA,IAAAA;AACAG,QAAAA,WAAAA;AACAC,QAAAA,IAAAA;QACAC,OAASqF,EAAAA,YAAAA;AACTpF,QAAAA,OAAAA;AACAI,QAAAA,GAAAA,CAAAA,CAAaC,KAAoB,EAAA;YAC/BA,KAAMM,CAAAA,GAAG,CAAE,CAAA,CAAE,GAAG,IAAK,CAA4BwE,GAAI,CAAA;AACvD,SAAA;AACA3E,QAAAA,GAAAA,CAAAA,CAAaH,KAAoB,EAAA;YAC/B,IAAK,CAA4B8E,GAAAA,CAAI,GAAG9E,KAAMM,CAAAA,GAAG,CAAE,CAAE,CAAA;AACvD;AACF,KAAA;AACF;AAEA,iBACO,SAAS0E,eAAAA,GAAAA;IACd,OAAO;QACL7F,IAAM8F,EAAAA,OAAAA;QACN5F,IAAM,EAAA,SAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,SAAA;oBACNG,WACE,EAAA,2FAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBACPC,IAAM,EAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,IAAA;AAAM,gCAAA,IAAA;AAAM,gCAAA,IAAA;AAAM,gCAAA;AAAK,6BAAA;4BAAEC,MAAQ,EAAA;AAAC,gCAAA,IAAA;AAAM,gCAAA,IAAA;AAAM,gCAAA,IAAA;AAAM,gCAAA;AAAK;AAAC;AAC7E,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAmBC,KAAK,EAAA;AACtBA,wBAAAA,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiF,OAAO;AAC7B,qBAAA;AACA/E,oBAAAA,GAAAA,CAAAA,CAAmBH,KAAK,EAAA;AACtB,wBAAA,IAAI,CAACkF,OAAO,GAAGlF,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC7B;AACF,iBAAA;gBACA4E,UACE,CAAA,gBAAA,EACA,gBACA,EAAA,8FAAA,EACA,IACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,eAAA,EACA,eACA,EAAA,uGAAA,EACA,IACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,mBAAA,EACA,mBACA,EAAA,+DAAA,EACA,IACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,eAAA,EACA,eACA,EAAA,wEAAA,EACA,EACA,EAAA;oBAAEzE,QAAU,EAAA,CAAA;oBAAGC,QAAU,EAAA;AAAG,iBAAA,CAAA;gBAE9BwE,UACE,CAAA,OAAA,EACA,OACA,EAAA,uFAAA,EACA,CACA,EAAA;oBAAEzE,QAAU,EAAA,CAAA;oBAAGC,QAAU,EAAA;iBACzB,EAAA,KAAA;AAEH,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAAS8E,aAAAA,GAAAA;IACd,OAAO;QACLhG,IAAMiG,EAAAA,KAAAA;QACN/F,IAAM,EAAA,OAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;gBACjBsF,UAAkB,CAAA,QAAA,EAAU,QAAU,EAAA,+BAAA,EAAiC,GAAK,EAAA;oBAAEzE,QAAU,EAAA;AAAK,iBAAA,CAAA;gBAC7FyE,UACE,CAAA,sBAAA,EACA,sBACA,EAAA,6EAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,qBAAA,EACA,qBACA,EAAA,4FAAA,EACA,EACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,uBAAA,EACA,uBACA,EAAA,yEAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,sBAAA,EACA,sBACA,EAAA,gFAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,qBAAA,EACA,qBACA,EAAA,yDAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,oBAAA,EACA,oBACA,EAAA,6FAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,cAAA,EACA,cACA,EAAA,0FAAA,EACA,GACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,cAAA,EACA,cACA,EAAA,qEAAA,EACA,CACA,EAAA;oBAAEzE,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAEhByE,UACE,CAAA,OAAA,EACA,OACA,EAAA,+FAAA,EACA,CACA,EAAA;AAAEzE,oBAAAA,QAAAA,EAAU,EAAC;oBAAGC,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAE9BwE,UACE,CAAA,OAAA,EACA,OACA,EAAA,6FAAA,EACA,CACA,EAAA;oBAAEzE,QAAU,EAAA,CAAA;oBAAGC,QAAU,EAAA;AAAE,iBAAA,CAAA;gBAE7BwE,UAAkB,CAAA,OAAA,EAAS,OAAS,EAAA,4CAAA,EAA8C,CAAG,EAAA;oBACnFzE,QAAU,EAAA,CAAA;oBACVC,QAAU,EAAA;AACZ,iBAAA,CAAA;gBACAwE,UACE,CAAA,WAAA,EACA,WACA,EAAA,oEAAA,EACA,CACA,EAAA;oBAAEzE,QAAU,EAAA,CAAA;oBAAGC,QAAU,EAAA;AAAE,iBAAA;AAE9B,aAAA,CAAA;AACH;AACF,KAAA;AACF;AAEA,iBACO,SAASgF,mBAAAA,GAAAA;IACd,OAAO;QACLlG,IAAMmG,EAAAA,WAAAA;QACNjG,IAAM,EAAA,aAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,MAAA;oBACNG,WACE,EAAA,8GAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAE4F,WAAa,EAAA;AAACnG,4BAAAA,SAAAA;AAAWgF,4BAAAA;AAAoB;AAAC,qBAAA;AACzDoB,oBAAAA,UAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;;AAEAzF,oBAAAA,GAAAA,CAAAA,CAAuBC,KAAK,EAAA;wBAC1BA,KAAMyF,CAAAA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,IAAI,IAAI,IAAI,CAACC,SAAS;AAC/C,qBAAA;AACAxF,oBAAAA,GAAAA,CAAAA,CAAuBH,KAAK,EAAA;AAC1B,wBAAA,MAAM0F,IAAO1F,GAAAA,KAAAA,EAAOyF,MAAM,CAAC,CAAE,CAAA;AAC7B,wBAAA,IAAIC,gBAAgBtB,mBAAqB,EAAA;4BACvC,IAAI,CAACuB,SAAS,GAAGD,IAAAA;yBACZ,MAAA;AACL,4BAAA,IAAI,CAACA,IAAI,GAAGA,IAAAA,YAAgBtG,YAAYsG,IAAO,GAAA,IAAA;4BAC/C,IAAI,CAACC,SAAS,GAAG,IAAA;AACnB;AACF;AACF,iBAAA;AACA,gBAAA;oBACEtG,IAAM,EAAA,WAAA;oBACNG,WAAa,EAAA,kFAAA;oBACbC,IAAM,EAAA,cAAA;oBACNmG,QAAU,EAAA,IAAA;oBACVjG,OAAS,EAAA;wBAAE4F,WAAa,EAAA;AAACrD,4BAAAA;AAAS;AAAC,qBAAA;AACnC2D,oBAAAA,eAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAI,CAACC,SAAS;AACvB,qBAAA;AACA/F,oBAAAA,GAAAA,CAAAA,CAAuBC,KAAK,EAAA;AAC1BA,wBAAAA,KAAAA,CAAMyF,MAAM,GAAG;AAAI,4BAAA,GAAA,IAAI,CAACK;AAAU,yBAAA;AACpC,qBAAA;AACA3F,oBAAAA,GAAAA,CAAAA,CAAuBH,KAAK,EAAA;AAC1B,wBAAA,IAAI,CAAC8F,SAAS,GAAK9F,CAAAA,KAAMyF,CAAAA,MAAM,IAAI,EAAE,EAAgBM,MAAM,CACzD,CAACjE,IAAqBA,CAAaI,YAAAA,QAAAA,CAAAA;AAEvC,qBAAA;oBACA8D,GAAuBhG,CAAAA,CAAAA,KAAK,EAAEiG,KAAK,EAAA;AACjC,wBAAA,MAAMC,QAAWlG,GAAAA,KAAAA,CAAMyF,MAAM,GAAG,CAAE,CAAA;AAClC,wBAAA,IAAIS,oBAAoBhE,QAAU,EAAA;AAChC,4BAAA,MAAM4D,SAAY,GAAA;AAAI,gCAAA,GAAA,IAAI,CAACA;AAAU,6BAAA;AACrCA,4BAAAA,SAAAA,CAAUK,MAAM,CAACF,KAAAA,IAASH,SAAU9B,CAAAA,MAAM,EAAE,CAAGkC,EAAAA,QAAAA,CAAAA;4BAC/C,IAAI,CAACJ,SAAS,GAAGA,SAAAA;AACnB;AACF,qBAAA;AACAM,oBAAAA,MAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,MAAMC,QAAW,GAAA,IAAI,CAACJ,SAAS,CAACG,KAAM,CAAA;AACtC,wBAAA,IAAIC,QAAU,EAAA;4BACZ,IAAI,CAACG,cAAc,CAACH,QAAAA,CAAAA;AACtB;AACF;AACF,iBAAA;AACA,gBAAA;oBACE7G,IAAM,EAAA,OAAA;oBACNG,WAAa,EAAA,sFAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAE4F,WAAa,EAAA;AAACzC,4BAAAA;AAAM;AAAC,qBAAA;AAChC0C,oBAAAA,UAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzF,oBAAAA,GAAAA,CAAAA,CAAuBC,KAAK,EAAA;AAC1BA,wBAAAA,KAAAA,CAAMyF,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,KAAK;AAC9B,qBAAA;AACAnG,oBAAAA,GAAAA,CAAAA,CAAuBH,KAAK,EAAA;AAC1B,wBAAA,MAAMsG,KAAQtG,GAAAA,KAAAA,EAAOyF,MAAM,CAAC,CAAE,CAAA;AAC9B,wBAAA,IAAI,CAACa,KAAK,GAAGA,KAAAA,YAAiBxD,QAAQwD,KAAQ,GAAA,IAAA;AAChD;AACF,iBAAA;AACA,gBAAA;oBACEjH,IAAM,EAAA,SAAA;oBACNG,WACE,EAAA,wFAAA;oBACFC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAE4F,WAAa,EAAA;AAACN,4BAAAA;AAAQ;AAAC,qBAAA;AAClCO,oBAAAA,UAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzF,oBAAAA,GAAAA,CAAAA,CAAuBC,KAAK,EAAA;AAC1BA,wBAAAA,KAAAA,CAAMyF,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACc,OAAO;AAChC,qBAAA;AACApG,oBAAAA,GAAAA,CAAAA,CAAuBH,KAAK,EAAA;AAC1B,wBAAA,MAAMuG,OAAUvG,GAAAA,KAAAA,EAAOyF,MAAM,CAAC,CAAE,CAAA;AAChC,wBAAA,IAAI,CAACc,OAAO,GAAGA,OAAAA,YAAmBtB,UAAUsB,OAAU,GAAA,IAAA;AACxD;AACF,iBAAA;AACA,gBAAA;oBACElH,IAAM,EAAA,OAAA;oBACNG,WAAa,EAAA,kDAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTC,OAAS,EAAA;wBAAE4F,WAAa,EAAA;AAACH,4BAAAA;AAAM;AAAC,qBAAA;AAChCI,oBAAAA,UAAAA,CAAAA,GAAAA;wBACE,OAAO,IAAA;AACT,qBAAA;AACAzF,oBAAAA,GAAAA,CAAAA,CAAuBC,KAAK,EAAA;AAC1BA,wBAAAA,KAAAA,CAAMyF,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACe,KAAK;AAC9B,qBAAA;AACArG,oBAAAA,GAAAA,CAAAA,CAAuBH,KAAK,EAAA;AAC1B,wBAAA,MAAMwG,KAAQxG,GAAAA,KAAAA,EAAOyF,MAAM,CAAC,CAAE,CAAA;AAC9B,wBAAA,IAAI,CAACe,KAAK,GAAGA,KAAAA,YAAiBpB,QAAQoB,KAAQ,GAAA,IAAA;AAChD;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;;;;"}
@@ -1,18 +1,19 @@
1
1
  import '../../../scene/scene.js';
2
2
  import '@zephyr3d/base';
3
- import '../../../values.js';
4
- import '../../../render/render_queue.js';
5
3
  import '../../../render/primitive.js';
6
4
  import '@zephyr3d/device';
5
+ import '../../../values.js';
6
+ import '../../../render/render_queue.js';
7
7
  import '../../../material/shader/helper.js';
8
8
  import '../../../material/lambert.js';
9
9
  import '../../../material/blinn.js';
10
10
  import '../../../material/unlit.js';
11
+ import '../../../material/meshmaterial.js';
11
12
  import { ParticleMaterial } from '../../../material/particle.js';
12
13
  import '../../../material/subsurfaceprofile.js';
13
- import '../../../material/skin.js';
14
+ import '../../../material/sssprofile.js';
15
+ import '../../../material/sss.js';
14
16
  import '../../../material/eye.js';
15
- import '../../../material/meshmaterial.js';
16
17
  import '../../../material/hair.js';
17
18
  import '../../../material/hairstrand.js';
18
19
  import '../../../material/grassmaterial.js';
@@ -30,9 +31,14 @@ import '../../../render/lightpass.js';
30
31
  import '../../../render/sky.js';
31
32
  import '../../../render/clipmap.js';
32
33
  import '../../../render/envlight.js';
34
+ import '../../../render/lod.js';
33
35
  import '../../../render/dualdepthpeeling_oit.js';
34
36
  import '../../../shaders/atmosphere.js';
37
+ import '../../../render/water_interaction.js';
35
38
  import '../../../render/rendergraph/scene_render_context.js';
39
+ import '../../../render/sdf/scene_sdf.js';
40
+ import '../../../render/sdf/global_sdf.js';
41
+ import '../../../render/gi/voxelize_pass.js';
36
42
  import { GraphNode } from '../../../scene/graph_node.js';
37
43
  import '../../../shadow/shadowmapper.js';
38
44
  import '../../../scene/mesh.js';
@@ -47,6 +53,7 @@ import '../../../scene/batchgroup.js';
47
53
  import '../../../scene/terrain-cm/terrain-cm.js';
48
54
  import '../../../scene/terrain-cm/grass.js';
49
55
  import '../../../scene/raycast_visitor.js';
56
+ import '../../../scene/foliage.js';
50
57
 
51
58
  /** @internal */ function getParticleNodeClass() {
52
59
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"particle.js","sources":["../../../../src/utility/serialization/scene/particle.ts"],"sourcesContent":["import { GraphNode, type EmitterBehavior, type EmitterShape } from '../../../scene';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport { ParticleSystem } from '../../../scene/particlesys';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { ParticleMaterial } from '../../../material';\r\n\r\n/** @internal */\r\nexport function getParticleNodeClass(): SerializableClass {\r\n return {\r\n ctor: ParticleSystem,\r\n name: 'ParticleSystem',\r\n parent: GraphNode,\r\n createFunc(ctx: SceneNode) {\r\n const node = new ParticleSystem(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'WorldSpace',\r\n description: 'If true, particle positions will be calculated in world space',\r\n type: 'bool',\r\n default: true,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.worldSpace;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.worldSpace = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'MaxParticleCount',\r\n description: 'Maximum particle count',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.maxParticleCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.maxParticleCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitInterval',\r\n description: 'Particle emit interval in millionseconds',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitInterval;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitInterval = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitCount',\r\n description: 'How many particles will be emitted at once',\r\n type: 'int',\r\n default: 1,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Gravity',\r\n description: 'Gravity acceleration applied to particles',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const gravity = this.gravity;\r\n value.num[0] = gravity.x;\r\n value.num[1] = gravity.y;\r\n value.num[2] = gravity.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.gravity.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Wind',\r\n description: 'Wind velocity applied to particles',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const wind = this.wind;\r\n value.num[0] = wind.x;\r\n value.num[1] = wind.y;\r\n value.num[2] = wind.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.wind.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scalar',\r\n description: 'Size scale for particles',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.scalar;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.scalar = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Aspect',\r\n description: 'Particle aspect ratio',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.aspect;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.aspect = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AirResistence',\r\n description: 'If true, particles are slowed by air resistance',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.airResistence;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.airResistence = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'JitterSpeed',\r\n description: 'Speed of random particle jitter',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterSpeed;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterSpeed = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'JitterPower',\r\n description: 'Strength of random particle jitter',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterPower;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterPower = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitterShape',\r\n description: 'Shape of the particle emission volume',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Point', 'Sphere', 'Box', 'Cylinder', 'Cone'],\r\n values: ['point', 'sphere', 'box', 'cylinder', 'cone']\r\n }\r\n },\r\n default: 'point',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterShape;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterShape = value.str[0] as EmitterShape;\r\n }\r\n },\r\n {\r\n name: 'EmitterBehavior',\r\n description: 'Whether particles spawn on the surface or throughout the volume',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Surface', 'Volume'],\r\n values: ['surface', 'volume']\r\n }\r\n },\r\n default: 'surface',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterBehavior;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterBehavior = value.str[0] as EmitterBehavior;\r\n }\r\n },\r\n {\r\n name: 'Directional',\r\n description: 'If true, emitted particles follow the emitter direction',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.directional;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.directional = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n description: 'Min/Max value of particle rotation',\r\n type: 'vec2',\r\n default: [0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleRotationMin;\r\n value.num[1] = this.particleRotationMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleRotationMin = value.num[0];\r\n this.particleRotationMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'ConeRadius',\r\n description: 'min/max radius of particle emit cone',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitterConeRadiusMin;\r\n value.num[1] = this.emitterConeRadiusMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterConeRadiusMin = value.num[0];\r\n this.emitterConeRadiusMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Velocity',\r\n description: 'min/max value of initial speed of particles',\r\n type: 'vec2',\r\n default: [2, 3],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleVelocityMin;\r\n value.num[1] = this.particleVelocityMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleVelocityMin = value.num[0];\r\n this.particleVelocityMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Life',\r\n description: 'min/max value of particle life in seconds',\r\n type: 'vec2',\r\n default: [1, 1.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleLifeMin;\r\n value.num[1] = this.particleLifeMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleLifeMin = value.num[0];\r\n this.particleLifeMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size1',\r\n description: 'min/max value of initial size of particles',\r\n type: 'vec2',\r\n default: [0.4, 0.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize1Min;\r\n value.num[1] = this.particleSize1Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize1Min = value.num[0];\r\n this.particleSize1Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size2',\r\n description: 'min/max value of end size of particles',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize2Min;\r\n value.num[1] = this.particleSize2Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize2Min = value.num[0];\r\n this.particleSize2Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Acceleration',\r\n description: 'min/max value of particle speed acceleration',\r\n type: 'vec2',\r\n default: [-0.01, -0.02],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleAccelMin;\r\n value.num[1] = this.particleAccelMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleAccelMin = value.num[0];\r\n this.particleAccelMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n description: 'Material object',\r\n type: 'object',\r\n default: null,\r\n options: {\r\n objectTypes: [ParticleMaterial]\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.object[0] = this.getMaterial();\r\n },\r\n set(this: ParticleSystem, value) {\r\n if (!value.object[0]) {\r\n this.material = null;\r\n } else if (value.object[0] instanceof ParticleMaterial) {\r\n this.material = value.object[0];\r\n } else {\r\n console.error('Invalid material type');\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getParticleNodeClass","ctor","ParticleSystem","name","parent","GraphNode","createFunc","ctx","node","scene","obj","getProps","defineProps","description","type","default","get","value","bool","worldSpace","set","num","maxParticleCount","emitInterval","emitCount","options","animatable","gravity","x","y","z","setXYZ","wind","scalar","aspect","airResistence","jitterSpeed","jitterPower","enum","labels","values","str","emitterShape","emitterBehavior","directional","particleRotationMin","particleRotationMax","emitterConeRadiusMin","emitterConeRadiusMax","particleVelocityMin","particleVelocityMax","particleLifeMin","particleLifeMax","particleSize1Min","particleSize1Max","particleSize2Min","particleSize2Max","particleAccelMin","particleAccelMax","objectTypes","ParticleMaterial","object","getMaterial","material","console","error"],"mappings":"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"}
1
+ {"version":3,"file":"particle.js","sources":["../../../../src/utility/serialization/scene/particle.ts"],"sourcesContent":["import { GraphNode, type EmitterBehavior, type EmitterShape } from '../../../scene';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport { ParticleSystem } from '../../../scene/particlesys';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { ParticleMaterial } from '../../../material';\r\n\r\n/** @internal */\r\nexport function getParticleNodeClass(): SerializableClass {\r\n return {\r\n ctor: ParticleSystem,\r\n name: 'ParticleSystem',\r\n parent: GraphNode,\r\n createFunc(ctx: SceneNode) {\r\n const node = new ParticleSystem(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'WorldSpace',\r\n description: 'If true, particle positions will be calculated in world space',\r\n type: 'bool',\r\n default: true,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.worldSpace;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.worldSpace = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'MaxParticleCount',\r\n description: 'Maximum particle count',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.maxParticleCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.maxParticleCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitInterval',\r\n description: 'Particle emit interval in millionseconds',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitInterval;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitInterval = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitCount',\r\n description: 'How many particles will be emitted at once',\r\n type: 'int',\r\n default: 1,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Gravity',\r\n description: 'Gravity acceleration applied to particles',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const gravity = this.gravity;\r\n value.num[0] = gravity.x;\r\n value.num[1] = gravity.y;\r\n value.num[2] = gravity.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.gravity.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Wind',\r\n description: 'Wind velocity applied to particles',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const wind = this.wind;\r\n value.num[0] = wind.x;\r\n value.num[1] = wind.y;\r\n value.num[2] = wind.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.wind.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scalar',\r\n description: 'Size scale for particles',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.scalar;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.scalar = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Aspect',\r\n description: 'Particle aspect ratio',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.aspect;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.aspect = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AirResistence',\r\n description: 'If true, particles are slowed by air resistance',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.airResistence;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.airResistence = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'JitterSpeed',\r\n description: 'Speed of random particle jitter',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterSpeed;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterSpeed = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'JitterPower',\r\n description: 'Strength of random particle jitter',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterPower;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterPower = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitterShape',\r\n description: 'Shape of the particle emission volume',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Point', 'Sphere', 'Box', 'Cylinder', 'Cone'],\r\n values: ['point', 'sphere', 'box', 'cylinder', 'cone']\r\n }\r\n },\r\n default: 'point',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterShape;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterShape = value.str[0] as EmitterShape;\r\n }\r\n },\r\n {\r\n name: 'EmitterBehavior',\r\n description: 'Whether particles spawn on the surface or throughout the volume',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Surface', 'Volume'],\r\n values: ['surface', 'volume']\r\n }\r\n },\r\n default: 'surface',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterBehavior;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterBehavior = value.str[0] as EmitterBehavior;\r\n }\r\n },\r\n {\r\n name: 'Directional',\r\n description: 'If true, emitted particles follow the emitter direction',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.directional;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.directional = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n description: 'Min/Max value of particle rotation',\r\n type: 'vec2',\r\n default: [0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleRotationMin;\r\n value.num[1] = this.particleRotationMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleRotationMin = value.num[0];\r\n this.particleRotationMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'ConeRadius',\r\n description: 'min/max radius of particle emit cone',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitterConeRadiusMin;\r\n value.num[1] = this.emitterConeRadiusMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterConeRadiusMin = value.num[0];\r\n this.emitterConeRadiusMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Velocity',\r\n description: 'min/max value of initial speed of particles',\r\n type: 'vec2',\r\n default: [2, 3],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleVelocityMin;\r\n value.num[1] = this.particleVelocityMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleVelocityMin = value.num[0];\r\n this.particleVelocityMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Life',\r\n description: 'min/max value of particle life in seconds',\r\n type: 'vec2',\r\n default: [1, 1.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleLifeMin;\r\n value.num[1] = this.particleLifeMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleLifeMin = value.num[0];\r\n this.particleLifeMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size1',\r\n description: 'min/max value of initial size of particles',\r\n type: 'vec2',\r\n default: [0.4, 0.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize1Min;\r\n value.num[1] = this.particleSize1Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize1Min = value.num[0];\r\n this.particleSize1Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size2',\r\n description: 'min/max value of end size of particles',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize2Min;\r\n value.num[1] = this.particleSize2Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize2Min = value.num[0];\r\n this.particleSize2Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Acceleration',\r\n description: 'min/max value of particle speed acceleration',\r\n type: 'vec2',\r\n default: [-0.01, -0.02],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleAccelMin;\r\n value.num[1] = this.particleAccelMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleAccelMin = value.num[0];\r\n this.particleAccelMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n description: 'Material object',\r\n type: 'object',\r\n default: null,\r\n options: {\r\n objectTypes: [ParticleMaterial]\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.object[0] = this.getMaterial();\r\n },\r\n set(this: ParticleSystem, value) {\r\n if (!value.object[0]) {\r\n this.material = null;\r\n } else if (value.object[0] instanceof ParticleMaterial) {\r\n this.material = value.object[0];\r\n } else {\r\n console.error('Invalid material type');\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getParticleNodeClass","ctor","ParticleSystem","name","parent","GraphNode","createFunc","ctx","node","scene","obj","getProps","defineProps","description","type","default","get","value","bool","worldSpace","set","num","maxParticleCount","emitInterval","emitCount","options","animatable","gravity","x","y","z","setXYZ","wind","scalar","aspect","airResistence","jitterSpeed","jitterPower","enum","labels","values","str","emitterShape","emitterBehavior","directional","particleRotationMin","particleRotationMax","emitterConeRadiusMin","emitterConeRadiusMax","particleVelocityMin","particleVelocityMax","particleLifeMin","particleLifeMax","particleSize1Min","particleSize1Max","particleSize2Min","particleSize2Max","particleAccelMin","particleAccelMax","objectTypes","ParticleMaterial","object","getMaterial","material","console","error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,iBACO,SAASA,oBAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,cAAAA;QACNC,IAAM,EAAA,gBAAA;QACNC,MAAQC,EAAAA,SAAAA;AACRC,QAAAA,UAAAA,CAAAA,CAAWC,GAAc,EAAA;AACvB,YAAA,MAAMC,IAAO,GAAA,IAAIN,cAAeK,CAAAA,GAAAA,CAAIE,KAAK,CAAA;AACzCD,YAAAA,IAAAA,CAAKJ,MAAM,GAAGG,GAAAA;YACd,OAAO;gBAAEG,GAAKF,EAAAA;AAAK,aAAA;AACrB,SAAA;AACAG,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACET,IAAM,EAAA,YAAA;oBACNU,WAAa,EAAA,+DAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,IAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,UAAU;AACjC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACE,UAAU,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,kBAAA;oBACNU,WAAa,EAAA,wBAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,GAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,gBAAgB;AACtC,qBAAA;AACAF,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACK,gBAAgB,GAAGL,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,0CAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,GAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,YAAY;AAClC,qBAAA;AACAH,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACM,YAAY,GAAGN,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,WAAA;oBACNU,WAAa,EAAA,4CAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACG,SAAS;AAC/B,qBAAA;AACAJ,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACO,SAAS,GAAGP,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,SAAA;oBACNU,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBAClBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;wBAC7B,MAAMU,OAAAA,GAAU,IAAI,CAACA,OAAO;AAC5BV,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQC,CAAC;AACxBX,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQE,CAAC;AACxBZ,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQG,CAAC;AAC1B,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACU,OAAO,CAACI,MAAM,CAACd,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC9D;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,MAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBAClBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;wBAC7B,MAAMe,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtBf,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKJ,CAAC;AACrBX,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKH,CAAC;AACrBZ,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKF,CAAC;AACvB,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACe,IAAI,CAACD,MAAM,CAACd,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC3D;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,QAAA;oBACNU,WAAa,EAAA,0BAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACY,MAAM;AAC5B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACgB,MAAM,GAAGhB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,QAAA;oBACNU,WAAa,EAAA,uBAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,MAAM;AAC5B,qBAAA;AACAd,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACiB,MAAM,GAAGjB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,eAAA;oBACNU,WAAa,EAAA,iDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiB,aAAa;AACpC,qBAAA;AACAf,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACkB,aAAa,GAAGlB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,iCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACe,WAAW;AACjC,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACmB,WAAW,GAAGnB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgB,WAAW;AACjC,qBAAA;AACAjB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACoB,WAAW,GAAGpB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,uCAAA;oBACbC,IAAM,EAAA,QAAA;oBACNW,OAAS,EAAA;wBACPa,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,KAAA;AAAO,gCAAA,UAAA;AAAY,gCAAA;AAAO,6BAAA;4BACtDC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,KAAA;AAAO,gCAAA,UAAA;AAAY,gCAAA;AAAO;AACxD;AACF,qBAAA;oBACAzB,OAAS,EAAA,OAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMwB,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AAClC,qBAAA;AACAtB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACyB,YAAY,GAAGzB,KAAMwB,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEtC,IAAM,EAAA,iBAAA;oBACNU,WAAa,EAAA,iEAAA;oBACbC,IAAM,EAAA,QAAA;oBACNW,OAAS,EAAA;wBACPa,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA;AAAS,6BAAA;4BAC7BC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA;AAAS;AAC/B;AACF,qBAAA;oBACAzB,OAAS,EAAA,SAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMwB,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,eAAe;AACrC,qBAAA;AACAvB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC0B,eAAe,GAAG1B,KAAMwB,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACEtC,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,yDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0B,WAAW;AAClC,qBAAA;AACAxB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC2B,WAAW,GAAG3B,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBACfU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACwB,mBAAmB;AACvC5B,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACyB,mBAAmB;AACzC,qBAAA;AACA1B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC4B,mBAAmB,GAAG5B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvC,wBAAA,IAAI,CAACyB,mBAAmB,GAAG7B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACzC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,YAAA;oBACNU,WAAa,EAAA,sCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0B,oBAAoB;AACxC9B,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC2B,oBAAoB;AAC1C,qBAAA;AACA5B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC8B,oBAAoB,GAAG9B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACxC,wBAAA,IAAI,CAAC2B,oBAAoB,GAAG/B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1C;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,6CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBACfU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC4B,mBAAmB;AACvChC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC6B,mBAAmB;AACzC,qBAAA;AACA9B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACgC,mBAAmB,GAAGhC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvC,wBAAA,IAAI,CAAC6B,mBAAmB,GAAGjC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACzC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,MAAA;oBACNU,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC8B,eAAe;AACnClC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+B,eAAe;AACrC,qBAAA;AACAhC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACkC,eAAe,GAAGlC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACnC,wBAAA,IAAI,CAAC+B,eAAe,GAAGnC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,OAAA;oBACNU,WAAa,EAAA,4CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,GAAA;AAAK,wBAAA;AAAI,qBAAA;oBACnBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgC,gBAAgB;AACpCpC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,gBAAgB;AACtC,qBAAA;AACAlC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACoC,gBAAgB,GAAGpC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACiC,gBAAgB,GAAGrC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,OAAA;oBACNU,WAAa,EAAA,wCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkC,gBAAgB;AACpCtC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACmC,gBAAgB;AACtC,qBAAA;AACApC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACsC,gBAAgB,GAAGtC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACmC,gBAAgB,GAAGvC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,8CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;wBAAC,KAAC;wBAAM;AAAM,qBAAA;oBACvBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACoC,gBAAgB;AACpCxC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACqC,gBAAgB;AACtC,qBAAA;AACAtC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACwC,gBAAgB,GAAGxC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACqC,gBAAgB,GAAGzC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,iBAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTU,OAAS,EAAA;wBACPkC,WAAa,EAAA;AAACC,4BAAAA;AAAiB;AACjC,qBAAA;AACA5C,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAM4C,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,WAAW,EAAA;AACpC,qBAAA;AACA1C,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACA,KAAAA,CAAM4C,MAAM,CAAC,EAAE,EAAE;4BACpB,IAAI,CAACE,QAAQ,GAAG,IAAA;AAClB,yBAAA,MAAO,IAAI9C,KAAM4C,CAAAA,MAAM,CAAC,CAAA,CAAE,YAAYD,gBAAkB,EAAA;AACtD,4BAAA,IAAI,CAACG,QAAQ,GAAG9C,KAAM4C,CAAAA,MAAM,CAAC,CAAE,CAAA;yBAC1B,MAAA;AACLG,4BAAAA,OAAAA,CAAQC,KAAK,CAAC,uBAAA,CAAA;AAChB;AACF;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;;;;"}
@@ -0,0 +1,120 @@
1
+ import { Vector3 } from '@zephyr3d/base';
2
+ import { ScenePhysicsSettings } from '../../../scene/physics_settings.js';
3
+ import { defineProps } from '../types.js';
4
+
5
+ /** @internal */ function getScenePhysicsSettingsClass() {
6
+ return {
7
+ ctor: ScenePhysicsSettings,
8
+ name: 'ScenePhysicsSettings',
9
+ getProps () {
10
+ return defineProps([
11
+ {
12
+ name: 'Gravity',
13
+ description: 'Pull on everything that falls, in m/s². Earth is 9.81 straight down; a lower value makes things float down like on the moon',
14
+ type: 'vec3',
15
+ default: [
16
+ 0,
17
+ -9.81,
18
+ 0
19
+ ],
20
+ get (value) {
21
+ const g = this.gravity;
22
+ value.num[0] = g.x;
23
+ value.num[1] = g.y;
24
+ value.num[2] = g.z;
25
+ },
26
+ set (value) {
27
+ this.gravity = new Vector3(value.num[0], value.num[1], value.num[2]);
28
+ }
29
+ },
30
+ {
31
+ name: 'StepRate',
32
+ description: 'Simulation steps per second. Higher keeps fast objects and tall stacks steadier but costs more time',
33
+ type: 'int',
34
+ default: 60,
35
+ options: {
36
+ minValue: 10,
37
+ maxValue: 240
38
+ },
39
+ get (value) {
40
+ value.num[0] = Math.round(1 / this.fixedTimeStep);
41
+ },
42
+ set (value) {
43
+ this.fixedTimeStep = 1 / Math.max(1, value.num[0]);
44
+ }
45
+ },
46
+ {
47
+ name: 'MaxSubSteps',
48
+ description: 'Most simulation steps in one frame. When the game runs slower than this allows, objects move in slow motion instead of the game stalling further',
49
+ type: 'int',
50
+ default: 4,
51
+ options: {
52
+ minValue: 1,
53
+ maxValue: 16
54
+ },
55
+ get (value) {
56
+ value.num[0] = this.maxSubSteps;
57
+ },
58
+ set (value) {
59
+ this.maxSubSteps = value.num[0];
60
+ }
61
+ },
62
+ {
63
+ name: 'Interpolation',
64
+ description: 'Smooths moving objects when the frame rate differs from the step rate; without it they may stutter',
65
+ type: 'bool',
66
+ default: true,
67
+ get (value) {
68
+ value.bool[0] = this.interpolation;
69
+ },
70
+ set (value) {
71
+ this.interpolation = value.bool[0];
72
+ }
73
+ },
74
+ {
75
+ name: 'WaitForCollidersOnStart',
76
+ description: 'Holds the simulation until mesh and terrain colliders are ready, so nothing falls through the ground in the first frames',
77
+ type: 'bool',
78
+ default: true,
79
+ get (value) {
80
+ value.bool[0] = this.waitForCollidersOnStart;
81
+ },
82
+ set (value) {
83
+ this.waitForCollidersOnStart = value.bool[0];
84
+ }
85
+ },
86
+ {
87
+ name: 'LayerNames',
88
+ description: 'Names of the 16 collision layers',
89
+ type: 'string',
90
+ isHidden () {
91
+ return true;
92
+ },
93
+ get (value) {
94
+ value.str[0] = this.layerNamesData;
95
+ },
96
+ set (value) {
97
+ this.layerNamesData = value.str[0];
98
+ }
99
+ },
100
+ {
101
+ name: 'LayerMatrix',
102
+ description: 'Which collision layers collide with which',
103
+ type: 'string',
104
+ isHidden () {
105
+ return true;
106
+ },
107
+ get (value) {
108
+ value.str[0] = this.layerMatrixData;
109
+ },
110
+ set (value) {
111
+ this.layerMatrixData = value.str[0];
112
+ }
113
+ }
114
+ ]);
115
+ }
116
+ };
117
+ }
118
+
119
+ export { getScenePhysicsSettingsClass };
120
+ //# sourceMappingURL=physics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics.js","sources":["../../../../src/utility/serialization/scene/physics.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport { ScenePhysicsSettings } from '../../../scene/physics_settings';\r\nimport { defineProps, type SerializableClass } from '../types';\r\n\r\n/** @internal */\r\nexport function getScenePhysicsSettingsClass(): SerializableClass {\r\n return {\r\n ctor: ScenePhysicsSettings,\r\n name: 'ScenePhysicsSettings',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Gravity',\r\n description:\r\n 'Pull on everything that falls, in m/s². Earth is 9.81 straight down; a lower value makes things float down like on the moon',\r\n type: 'vec3',\r\n default: [0, -9.81, 0],\r\n get(this: ScenePhysicsSettings, value) {\r\n const g = this.gravity;\r\n value.num[0] = g.x;\r\n value.num[1] = g.y;\r\n value.num[2] = g.z;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.gravity = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'StepRate',\r\n description:\r\n 'Simulation steps per second. Higher keeps fast objects and tall stacks steadier but costs more time',\r\n type: 'int',\r\n default: 60,\r\n options: { minValue: 10, maxValue: 240 },\r\n get(this: ScenePhysicsSettings, value) {\r\n value.num[0] = Math.round(1 / this.fixedTimeStep);\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.fixedTimeStep = 1 / Math.max(1, value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'MaxSubSteps',\r\n description:\r\n 'Most simulation steps in one frame. When the game runs slower than this allows, objects move in slow motion instead of the game stalling further',\r\n type: 'int',\r\n default: 4,\r\n options: { minValue: 1, maxValue: 16 },\r\n get(this: ScenePhysicsSettings, value) {\r\n value.num[0] = this.maxSubSteps;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.maxSubSteps = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolation',\r\n description:\r\n 'Smooths moving objects when the frame rate differs from the step rate; without it they may stutter',\r\n type: 'bool',\r\n default: true,\r\n get(this: ScenePhysicsSettings, value) {\r\n value.bool[0] = this.interpolation;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.interpolation = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'WaitForCollidersOnStart',\r\n description:\r\n 'Holds the simulation until mesh and terrain colliders are ready, so nothing falls through the ground in the first frames',\r\n type: 'bool',\r\n default: true,\r\n get(this: ScenePhysicsSettings, value) {\r\n value.bool[0] = this.waitForCollidersOnStart;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.waitForCollidersOnStart = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'LayerNames',\r\n description: 'Names of the 16 collision layers',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ScenePhysicsSettings, value) {\r\n value.str[0] = this.layerNamesData;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.layerNamesData = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'LayerMatrix',\r\n description: 'Which collision layers collide with which',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ScenePhysicsSettings, value) {\r\n value.str[0] = this.layerMatrixData;\r\n },\r\n set(this: ScenePhysicsSettings, value) {\r\n this.layerMatrixData = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getScenePhysicsSettingsClass","ctor","ScenePhysicsSettings","name","getProps","defineProps","description","type","default","get","value","g","gravity","num","x","y","z","set","Vector3","options","minValue","maxValue","Math","round","fixedTimeStep","max","maxSubSteps","bool","interpolation","waitForCollidersOnStart","isHidden","str","layerNamesData","layerMatrixData"],"mappings":"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"}