@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.
- package/README.md +60 -27
- package/dist/animation/animation_bank.js +634 -0
- package/dist/animation/animation_bank.js.map +1 -0
- package/dist/animation/animation_bank_gpu.js +256 -0
- package/dist/animation/animation_bank_gpu.js.map +1 -0
- package/dist/animation/animationset.js +146 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_component.js +406 -0
- package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
- package/dist/animation/cloth/gpu_cloth_system.js +332 -202
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/gpu_animation_driver.js +289 -0
- package/dist/animation/gpu_animation_driver.js.map +1 -0
- package/dist/animation/joint_dynamics/collision.js +112 -1
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +6 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +50 -12
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/skeleton.js +300 -56
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skin_palette_atlas.js +252 -0
- package/dist/animation/skin_palette_atlas.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +298 -38
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +2 -0
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +159 -21
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_solver.js +173 -0
- package/dist/animation/spring/spring_solver.js.map +1 -0
- package/dist/animation/spring/spring_system.js +249 -24
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +32 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/app.js +26 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +86 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/gamepad.js +191 -0
- package/dist/app/gamepad.js.map +1 -0
- package/dist/app/inputactions.js +271 -0
- package/dist/app/inputactions.js.map +1 -0
- package/dist/app/inputmgr.js +331 -22
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/loading.js +138 -0
- package/dist/app/loading.js.map +1 -0
- package/dist/app/pipelinecache.js +209 -0
- package/dist/app/pipelinecache.js.map +1 -0
- package/dist/app/runtimescript.js +25 -0
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/scriptingsystem.js +54 -0
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +7 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/asset_manifest.js +59 -0
- package/dist/asset/asset_manifest.js.map +1 -0
- package/dist/asset/asset_preload.js +258 -0
- package/dist/asset/asset_preload.js.map +1 -0
- package/dist/asset/assetmanager.js +117 -65
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/dist/asset/loaders/ktx2/basis_location.js +17 -0
- package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
- package/dist/asset/mesh_lod_builder.js +104 -0
- package/dist/asset/mesh_lod_builder.js.map +1 -0
- package/dist/asset/mesh_settings.js +111 -0
- package/dist/asset/mesh_settings.js.map +1 -0
- package/dist/asset/meshopt_decoder.js +18 -0
- package/dist/asset/meshopt_decoder.js.map +1 -0
- package/dist/asset/meshopt_simplifier.js +26 -0
- package/dist/asset/meshopt_simplifier.js.map +1 -0
- package/dist/asset/model.js +177 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/asset/texture_settings.js +231 -0
- package/dist/asset/texture_settings.js.map +1 -0
- package/dist/asset/zmsh_binary.js +131 -0
- package/dist/asset/zmsh_binary.js.map +1 -0
- package/dist/asset/zsdf_binary.js +111 -0
- package/dist/asset/zsdf_binary.js.map +1 -0
- package/dist/blitter/bilateralblur.js +1 -2
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/gaussianblur.js +1 -6
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +31 -10
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +178 -200
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/follow.js +342 -0
- package/dist/camera/follow.js.map +1 -0
- package/dist/camera/fps.js +9 -7
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +46 -19
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +30475 -19865
- package/dist/index.js +67 -12
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +3 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/eye.js +1 -1
- package/dist/material/eye.js.map +1 -1
- package/dist/material/hair.js +2 -3
- package/dist/material/hair.js.map +1 -1
- package/dist/material/hairstrand.js +235 -235
- package/dist/material/hairstrand.js.map +1 -1
- package/dist/material/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +362 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +118 -45
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +223 -83
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +31 -206
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +1 -1
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrmr.js +3 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +3 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/sdf_debug.js +78 -0
- package/dist/material/sdf_debug.js.map +1 -0
- package/dist/material/shader/helper.js +733 -190
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +204 -43
- package/dist/material/shader/terrain_blend.js.map +1 -1
- package/dist/material/skin.js +331 -297
- package/dist/material/skin.js.map +1 -1
- package/dist/material/skinprofile.js +1058 -0
- package/dist/material/skinprofile.js.map +1 -0
- package/dist/material/sss.js +353 -0
- package/dist/material/sss.js.map +1 -0
- package/dist/material/sss_kernel.js +265 -0
- package/dist/material/sss_kernel.js.map +1 -0
- package/dist/material/sssprofile.js +879 -0
- package/dist/material/sssprofile.js.map +1 -0
- package/dist/material/subsurfaceprofile.js +4 -8
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/terrain-cm.js +464 -188
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js +3 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +2009 -201
- package/dist/material/water.js.map +1 -1
- package/dist/node_modules/meshoptimizer/LICENSE +21 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
- package/dist/physics/character.js +226 -0
- package/dist/physics/character.js.map +1 -0
- package/dist/physics/collider.js +209 -0
- package/dist/physics/collider.js.map +1 -0
- package/dist/physics/events.js +79 -0
- package/dist/physics/events.js.map +1 -0
- package/dist/physics/joint.js +272 -0
- package/dist/physics/joint.js.map +1 -0
- package/dist/physics/node_physics.js +234 -0
- package/dist/physics/node_physics.js.map +1 -0
- package/dist/physics/part.js +91 -0
- package/dist/physics/part.js.map +1 -0
- package/dist/physics/rigid_body.js +379 -0
- package/dist/physics/rigid_body.js.map +1 -0
- package/dist/physics/vehicle.js +335 -0
- package/dist/physics/vehicle.js.map +1 -0
- package/dist/physics/world.js +25 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/posteffect/bloom.js +49 -14
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/motionblur.js +668 -63
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js +12 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +48 -50
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +605 -355
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +91 -162
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -11
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +34 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +1 -0
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +40 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +328 -62
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +958 -224
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +26 -5
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/debug_views.js +37 -0
- package/dist/render/debug_views.js.map +1 -0
- package/dist/render/depthpass.js +5 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +53 -6
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +53 -53
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +196 -113
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +8 -13
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +268 -136
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +113 -28
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/gi/probe_volume.js +1334 -0
- package/dist/render/gi/probe_volume.js.map +1 -0
- package/dist/render/gi/scene_gi.js +282 -0
- package/dist/render/gi/scene_gi.js.map +1 -0
- package/dist/render/gi/voxel_atlas.js +198 -0
- package/dist/render/gi/voxel_atlas.js.map +1 -0
- package/dist/render/gi/voxel_lighting.js +652 -0
- package/dist/render/gi/voxel_lighting.js.map +1 -0
- package/dist/render/gi/voxel_scene.js +642 -0
- package/dist/render/gi/voxel_scene.js.map +1 -0
- package/dist/render/gi/voxelize_pass.js +223 -0
- package/dist/render/gi/voxelize_pass.js.map +1 -0
- package/dist/render/globalbindgroup_allocator.js +3 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/gpu_picking.js +9 -36
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +23 -9
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/lod.js +46 -0
- package/dist/render/lod.js.map +1 -0
- package/dist/render/oit.js +11 -11
- package/dist/render/oit.js.map +1 -1
- package/dist/render/primitive.js +301 -9
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/primitive_readback.js +209 -0
- package/dist/render/primitive_readback.js.map +1 -0
- package/dist/render/render_queue.js +198 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +14 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +15 -1
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/executor.js +136 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +585 -59
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +8 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +31 -2
- package/dist/render/rendergraph/scene_render_context.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +28 -5
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sdf/box_allocator.js +98 -0
- package/dist/render/sdf/box_allocator.js.map +1 -0
- package/dist/render/sdf/global_sdf.js +865 -0
- package/dist/render/sdf/global_sdf.js.map +1 -0
- package/dist/render/sdf/scene_sdf.js +562 -0
- package/dist/render/sdf/scene_sdf.js.map +1 -0
- package/dist/render/sdf/sdf_atlas.js +227 -0
- package/dist/render/sdf/sdf_atlas.js.map +1 -0
- package/dist/render/sdf/sdf_programs.js +42 -0
- package/dist/render/sdf/sdf_programs.js.map +1 -0
- package/dist/render/sdf/sdf_view.js +199 -0
- package/dist/render/sdf/sdf_view.js.map +1 -0
- package/dist/render/sdf/waterline.js +610 -0
- package/dist/render/sdf/waterline.js.map +1 -0
- package/dist/render/shadow_mask_pass.js +142 -25
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/shore_wave_generator.js +1193 -0
- package/dist/render/shore_wave_generator.js.map +1 -0
- package/dist/render/sky.js +516 -86
- package/dist/render/sky.js.map +1 -1
- package/dist/render/transmission_thickness_pass.js +477 -0
- package/dist/render/transmission_thickness_pass.js.map +1 -0
- package/dist/render/underwater.js +524 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/virtualtexture/virtual_texture.js +1214 -0
- package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_common.js +472 -0
- package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
- package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
- package/dist/render/volumetric_cloud/debug_view.js +131 -0
- package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
- package/dist/render/volumetric_cloud/resources.js +380 -0
- package/dist/render/volumetric_cloud/resources.js.map +1 -0
- package/dist/render/volumetric_cloud/sky_cache.js +380 -0
- package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
- package/dist/render/water_caustics.js +1195 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/water_foam.js +627 -0
- package/dist/render/water_foam.js.map +1 -0
- package/dist/render/water_interaction.js +1795 -0
- package/dist/render/water_interaction.js.map +1 -0
- package/dist/render/weightedblended_oit.js +36 -36
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +9 -4
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +108 -12
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +28 -7
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/foliage.js +1020 -0
- package/dist/scene/foliage.js.map +1 -0
- package/dist/scene/foliage_buckets.js +147 -0
- package/dist/scene/foliage_buckets.js.map +1 -0
- package/dist/scene/foliage_mask.js +358 -0
- package/dist/scene/foliage_mask.js.map +1 -0
- package/dist/scene/hair.js +15 -4
- package/dist/scene/hair.js.map +1 -1
- package/dist/scene/light.js +179 -13
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +327 -45
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +9 -3
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +9 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +8 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/physics_settings.js +157 -0
- package/dist/scene/physics_settings.js.map +1 -0
- package/dist/scene/scene.js +190 -44
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +147 -6
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
- package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +881 -42
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grass_gpu.js +929 -0
- package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +180 -9
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +465 -36
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
- package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
- package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
- package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
- package/dist/scene/update_queue.js +54 -0
- package/dist/scene/update_queue.js.map +1 -0
- package/dist/scene/water.js +997 -96
- package/dist/scene/water.js.map +1 -1
- package/dist/scene/water_surface_sampler.js +324 -0
- package/dist/scene/water_surface_sampler.js.map +1 -0
- package/dist/scene/wind.js +317 -0
- package/dist/scene/wind.js.map +1 -0
- package/dist/shaders/atmosphere.js +388 -166
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +100 -32
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/gi.js +365 -0
- package/dist/shaders/gi.js.map +1 -0
- package/dist/shaders/ltc_rect.js +202 -0
- package/dist/shaders/ltc_rect.js.map +1 -0
- package/dist/shaders/misc.js +1 -10
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +5 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/probes.js +309 -0
- package/dist/shaders/probes.js.map +1 -0
- package/dist/shaders/sdf.js +537 -0
- package/dist/shaders/sdf.js.map +1 -0
- package/dist/shaders/shadow.js +104 -70
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/skin_brdf.js +243 -0
- package/dist/shaders/skin_brdf.js.map +1 -0
- package/dist/shaders/ssr.js +6 -159
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +38 -27
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +40 -87
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +42 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +110 -19
- package/dist/shadow/dom.js.map +1 -1
- package/dist/shadow/esm.js +3 -3
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -48
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -53
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +34 -9
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +3 -8
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +87 -49
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +93 -53
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +18 -72
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +3 -3
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/shape.js +44 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/utility/buoyancy.js +287 -0
- package/dist/utility/buoyancy.js.map +1 -0
- package/dist/utility/physical.js +10 -1
- package/dist/utility/physical.js.map +1 -1
- package/dist/utility/pmrem.js +17 -43
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/sdf/bake.js +435 -0
- package/dist/utility/sdf/bake.js.map +1 -0
- package/dist/utility/sdf/bvh.js +576 -0
- package/dist/utility/sdf/bvh.js.map +1 -0
- package/dist/utility/serialization/manager.js +36 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +77 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +11 -4
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +140 -279
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth.js +25 -0
- package/dist/utility/serialization/scene/cloth.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +14 -6
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/foliage.js +821 -0
- package/dist/utility/serialization/scene/foliage.js.map +1 -0
- package/dist/utility/serialization/scene/hair.js +11 -4
- package/dist/utility/serialization/scene/hair.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +115 -7
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +388 -220
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +69 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +140 -5
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/node_physics.js +1318 -0
- package/dist/utility/serialization/scene/node_physics.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +11 -4
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/physics.js +120 -0
- package/dist/utility/serialization/scene/physics.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +124 -10
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +1687 -51
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +11 -4
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +163 -33
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +11 -4
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +2473 -114
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +97 -109
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/foam.js +170 -0
- package/dist/utility/textures/foam.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +17 -43
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +4 -4
- package/dist/utility/textures/ltcdata.js.map +1 -1
- package/dist/utility/textures/ltclut.js +16 -6
- package/dist/utility/textures/ltclut.js.map +1 -1
- package/dist/utility/unsupported.js +24 -0
- package/dist/utility/unsupported.js.map +1 -0
- package/dist/values.js +13 -1
- package/dist/values.js.map +1 -1
- package/package.json +25 -12
- package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/src/asset/meshoptimizer/LICENSE +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sources":["../../../../src/utility/serialization/scene/node.ts"],"sourcesContent":["import { SceneNode } from '../../../scene/scene_node';\r\nimport type { SceneNodeVisible, SerializedMorphTargetGroup } from '../../../scene/scene_node';\r\nimport { Scene } from '../../../scene/scene';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport type { DiffPatch, DiffValue } from '@zephyr3d/base';\r\nimport {\r\n applyPatch,\r\n ASSERT,\r\n degree2radian,\r\n diff,\r\n DRef,\r\n guessMimeType,\r\n mimeTypeOf,\r\n radian2degree\r\n} from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { ResourceManager } from '../manager';\r\nimport {\r\n AnimationClip,\r\n JointDynamicsModifier,\r\n SpringModifier,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack\r\n} from '../../../animation';\r\nimport { JSONArray, JSONData } from '../json';\r\nimport { ScriptAttachment, normalizeScriptAttachmentConfig } from '../../../scene/script_attachment';\r\nimport { parseZABCBlob, attachZABCAnimationsToSceneNode } from '../../../asset/loaders/zabc/zabc_loader';\r\nimport { restoreGeometryCacheMeshBinding } from '../../../animation/geometry_cache_utils';\r\nimport {\r\n getJointDynamicsModifierSkeleton,\r\n getSpringModifierSkeleton,\r\n setJointDynamicsModifierSkeleton,\r\n setSpringModifierSkeleton\r\n} from './animation';\r\nconst geometryCacheBindings = new WeakMap<\r\n SceneNode,\r\n {\r\n assetId: string;\r\n autoPlay: boolean;\r\n animationNames: string[];\r\n }\r\n>();\r\n\r\nfunction normalizeSerializedSceneNodeData(data: DiffValue): Record<string, unknown> {\r\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: {}\r\n };\r\n }\r\n const serialized = data as Record<string, unknown>;\r\n if (typeof serialized.ClassName === 'string') {\r\n return serialized;\r\n }\r\n const objectData =\r\n serialized.Object && typeof serialized.Object === 'object' && !Array.isArray(serialized.Object)\r\n ? (serialized.Object as Record<string, unknown>)\r\n : serialized;\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: objectData\r\n };\r\n}\r\n\r\nfunction normalizePatchData(data: DiffValue): DiffValue {\r\n const serialized = JSON.stringify(data);\r\n ASSERT(serialized !== undefined, 'Prefab patch data is not JSON serializable');\r\n return JSON.parse(serialized) as DiffValue;\r\n}\r\n\r\nfunction createVerifiedPatch(baseData: DiffValue, nodeData: DiffValue): DiffPatch | undefined {\r\n const normalizedBaseData = normalizePatchData(baseData);\r\n const normalizedNodeData = normalizePatchData(nodeData);\r\n const patch = diff(normalizedBaseData, normalizedNodeData);\r\n if (patch.length === 0) {\r\n return undefined;\r\n }\r\n if (diff(applyPatch(normalizedBaseData, patch), normalizedNodeData).length === 0) {\r\n return patch;\r\n }\r\n const fallbackPatch: DiffPatch = [{ kind: 'set', path: [], value: normalizedNodeData }];\r\n ASSERT(\r\n diff(applyPatch(normalizedBaseData, fallbackPatch), normalizedNodeData).length === 0,\r\n 'Fallback patch test failed'\r\n );\r\n return fallbackPatch;\r\n}\r\n\r\nfunction hasMeshDescendants(node: SceneNode) {\r\n let hasMesh = false;\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n hasMesh = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return hasMesh;\r\n}\r\n\r\nasync function restoreGeometryCacheMeshes(node: SceneNode) {\r\n const tasks: Promise<boolean>[] = [];\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n tasks.push(restoreGeometryCacheMeshBinding(child));\r\n }\r\n return false;\r\n });\r\n if (tasks.length > 0) {\r\n await Promise.all(tasks);\r\n }\r\n}\r\n\r\nasync function clearGeometryCacheBinding(node: SceneNode) {\r\n const previous = geometryCacheBindings.get(node);\r\n if (!previous) {\r\n return null;\r\n }\r\n for (const name of previous.animationNames) {\r\n if (node.animationSet.isPlayingAnimation(name)) {\r\n node.animationSet.stopAnimation(name);\r\n }\r\n node.animationSet.deleteAnimation(name);\r\n }\r\n await restoreGeometryCacheMeshes(node);\r\n geometryCacheBindings.delete(node);\r\n return previous;\r\n}\r\n\r\n/** @internal */\r\nexport function getSceneNodeClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: SceneNode,\r\n name: 'SceneNode',\r\n async createFunc(\r\n ctx: Scene | SceneNode,\r\n init?: { prefabId?: string; assetId?: string; patch?: DiffPatch }\r\n ) {\r\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\r\n if (init?.prefabId) {\r\n const prefabContent = await manager.loadPrefabContent(init.prefabId);\r\n if (!prefabContent?.data) {\r\n console.warn(`Skip scene node because prefab asset is missing: ${init.prefabId}`);\r\n return { obj: null, loadProps: false };\r\n }\r\n const prefabData = prefabContent.data as DiffValue;\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(prefabData, init.patch ?? []) as DiffValue\r\n );\r\n const tmpNode = new DRef(new SceneNode(scene));\r\n tmpNode.get()!.remove();\r\n tmpNode.get()!.prefabId = init.prefabId;\r\n const sceneNode = await manager.deserializeObject<SceneNode>(tmpNode.get(), nodeData);\r\n if (sceneNode) {\r\n sceneNode.prefabId = init.prefabId;\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n }\r\n tmpNode.dispose();\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n if (init?.assetId) {\r\n let fetchedModel: SceneNode | null = null;\r\n try {\r\n fetchedModel = (await manager.fetchModel(init.assetId, scene!)) ?? null;\r\n } catch (err) {\r\n console.warn(`Skip scene node because model asset failed to load: ${init.assetId}: ${err}`);\r\n fetchedModel = null;\r\n }\r\n const sceneNode = fetchedModel ?? null;\r\n if (sceneNode) {\r\n const originalAssetId = manager.getAssetId(sceneNode);\r\n try {\r\n manager.setAssetId(sceneNode, null);\r\n const baseNodeData = await manager.serializeObject(sceneNode);\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(baseNodeData as DiffValue, init.patch ?? []) as DiffValue\r\n );\r\n await manager.deserializeObjectProps(sceneNode, nodeData.Object as Record<string, unknown>);\r\n } finally {\r\n manager.setAssetId(sceneNode, originalAssetId ?? init.assetId);\r\n }\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n } else {\r\n console.warn(`Skip scene node because model asset is missing: ${init.assetId}`);\r\n }\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n const node = new SceneNode(scene);\r\n if (ctx instanceof SceneNode) {\r\n node.parent = ctx;\r\n }\r\n return { obj: node };\r\n },\r\n async getInitParams(obj: SceneNode, flags) {\r\n let prefabId = obj.prefabId;\r\n const assetId = manager.getAssetId(obj);\r\n let patch: DiffPatch | undefined = undefined;\r\n if (prefabId && guessMimeType(prefabId) === mimeTypeOf('.zprefab')) {\r\n try {\r\n const prefabData = (await manager.loadPrefabContent(prefabId))!.data as DiffValue;\r\n obj.prefabId = '';\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = createVerifiedPatch(prefabData, nodeData);\r\n } finally {\r\n obj.prefabId = prefabId;\r\n }\r\n flags.saveProps = false;\r\n } else {\r\n prefabId = '';\r\n }\r\n if (!prefabId && assetId) {\r\n const baseNode = (await manager.fetchModel(assetId, obj.scene!)) ?? null;\r\n if (baseNode) {\r\n const originalObjectAssetId = manager.getAssetId(obj);\r\n const originalBaseAssetId = manager.getAssetId(baseNode);\r\n try {\r\n manager.setAssetId(obj, null);\r\n manager.setAssetId(baseNode, null);\r\n const baseNodeData = await manager.serializeObject(baseNode);\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = createVerifiedPatch(baseNodeData, nodeData);\r\n } finally {\r\n manager.setAssetId(obj, originalObjectAssetId);\r\n manager.setAssetId(baseNode, originalBaseAssetId);\r\n baseNode.remove();\r\n }\r\n flags.saveProps = false;\r\n }\r\n }\r\n return prefabId\r\n ? {\r\n prefabId,\r\n patch\r\n }\r\n : assetId\r\n ? {\r\n assetId,\r\n patch\r\n }\r\n : null;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Id',\r\n description: 'Unique persistent id for the node',\r\n type: 'string',\r\n readonly: true,\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.persistentId;\r\n },\r\n set(this: SceneNode, value) {\r\n this.persistentId = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'PrefabId',\r\n description: 'Persistent ID of the prefab source for this node',\r\n type: 'string',\r\n readonly: true,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.prefabId;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n description: 'Display name of the node',\r\n type: 'string',\r\n getDefaultValue() {\r\n return '';\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: SceneNode, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Position',\r\n description: 'Local position of the node',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeT !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.position.x;\r\n value.num[1] = this.position.y;\r\n value.num[2] = this.position.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.position.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scale',\r\n description: 'Local scale of the node',\r\n type: 'vec3',\r\n default: [1, 1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeS !== 'animated';\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera();\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.scale.x;\r\n value.num[1] = this.scale.y;\r\n value.num[2] = this.scale.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scale.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n description: 'Euler rotation of this node in ZYX order',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true,\r\n edit: 'quaternion'\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera() && this.isOrtho();\r\n },\r\n get(this: SceneNode, value) {\r\n const zyx = this.rotation.toEulerAngles();\r\n value.num[0] = Math.round(radian2degree(zyx.x));\r\n value.num[1] = Math.round(radian2degree(zyx.y));\r\n value.num[2] = Math.round(radian2degree(zyx.z));\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.fromEulerAngle(\r\n degree2radian(value.num[0]),\r\n degree2radian(value.num[1]),\r\n degree2radian(value.num[2])\r\n );\r\n }\r\n },\r\n {\r\n name: 'QuatRotation',\r\n description: 'Node rotation quaternion',\r\n type: 'vec4',\r\n default: [0, 0, 0, 1],\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeR !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.rotation.x;\r\n value.num[1] = this.rotation.y;\r\n value.num[2] = this.rotation.z;\r\n value.num[3] = this.rotation.w;\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.setXYZW(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n },\r\n {\r\n name: 'Pickable',\r\n description: 'If true, enable ray-cast for this object',\r\n type: 'bool',\r\n default: false,\r\n get(this: SceneNode, value) {\r\n value.bool[0] = this.pickable;\r\n },\r\n set(this: SceneNode, value) {\r\n this.pickable = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Visible',\r\n description: 'Node visible state',\r\n type: 'string',\r\n default: 'inherit',\r\n options: {\r\n enum: {\r\n labels: ['Visible', 'Hidden', 'Inherit'],\r\n values: ['visible', 'hidden', 'inherit']\r\n }\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.showState;\r\n },\r\n set(this: SceneNode, value) {\r\n this.showState = value.str[0] as SceneNodeVisible;\r\n }\r\n },\r\n {\r\n name: 'Children',\r\n description: 'Children nodes of this node',\r\n type: 'object_array',\r\n phase: 0,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = [];\r\n for (const child of this.children) {\r\n if (!child.sealed) {\r\n value.object.push(child);\r\n }\r\n }\r\n },\r\n set(this: SceneNode, value) {\r\n const children = this.children;\r\n for (let i = children.length - 1; i >= 0; i--) {\r\n const child = children[i];\r\n if (!value.object.includes(child) && !child.sealed) {\r\n child.remove();\r\n }\r\n }\r\n for (const child of value.object) {\r\n if (child instanceof SceneNode) {\r\n child.parent = this;\r\n } else {\r\n console.error(`Invalid scene node: ${child}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphTargetGroups',\r\n description: 'Serialized model-level morph target groups for this node',\r\n type: 'object',\r\n phase: 10,\r\n options: { objectTypes: [JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const groups = this.getSerializedMorphTargetGroups();\r\n value.object[0] = groups.length > 0 ? new JSONArray(null, groups) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | SerializedMorphTargetGroup[] | null | undefined;\r\n if (data) {\r\n this.setSerializedMorphTargetGroups(data instanceof JSONArray ? data.data : data);\r\n }\r\n }\r\n },\r\n {\r\n name: 'GeometryCache',\r\n description: 'Alembic geometry cache asset used by this node',\r\n type: 'string',\r\n options: {\r\n group: 'Animation',\r\n label: 'Geometry Cache',\r\n mimeTypes: [mimeTypeOf('.zabc')]\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = geometryCacheBindings.get(this)?.assetId ?? '';\r\n },\r\n async set(this: SceneNode, value) {\r\n const previous = await clearGeometryCacheBinding(this);\r\n const assetId = value?.str?.[0]?.trim() ?? '';\r\n if (!assetId) {\r\n return;\r\n }\r\n const binary = (await manager.assetManager.fetchBinaryData(assetId)) as ArrayBuffer;\r\n const parsed = await parseZABCBlob(\r\n new Blob([binary], { type: manager.VFS.guessMIMEType(assetId) || 'application/octet-stream' })\r\n );\r\n const autoPlay = previous?.autoPlay ?? false;\r\n const result = await attachZABCAnimationsToSceneNode(this, parsed, {\r\n sourcePath: assetId,\r\n autoPlay,\r\n replaceAnimationNames: []\r\n });\r\n geometryCacheBindings.set(this, {\r\n assetId,\r\n autoPlay,\r\n animationNames: result.animationNames\r\n });\r\n }\r\n },\r\n {\r\n name: 'GeometryCacheAutoPlay',\r\n description: 'If true, plays the geometry cache automatically when loaded',\r\n type: 'bool',\r\n default: false,\r\n options: {\r\n group: 'Animation',\r\n label: 'Cache AutoPlay'\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.bool[0] = geometryCacheBindings.get(this)?.autoPlay ?? false;\r\n },\r\n async set(this: SceneNode, value) {\r\n const current = geometryCacheBindings.get(this);\r\n if (!current) {\r\n return;\r\n }\r\n const autoPlay = !!value.bool[0];\r\n geometryCacheBindings.set(this, {\r\n assetId: current.assetId,\r\n autoPlay,\r\n animationNames: current.animationNames\r\n });\r\n for (const name of current.animationNames) {\r\n const animation = this.animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animation.autoPlay = autoPlay;\r\n if (autoPlay) {\r\n this.animationSet.playAnimation(name, { repeat: 0 });\r\n } else if (this.animationSet.isPlayingAnimation(name)) {\r\n this.animationSet.stopAnimation(name);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Animations',\r\n description: 'Animation clips which affect this object or children',\r\n type: 'object_array',\r\n phase: 2,\r\n readonly: true,\r\n options: {\r\n objectTypes: [AnimationClip]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet\r\n .getAnimationNames()\r\n .map((name) => animationSet.getAnimationClip(name));\r\n },\r\n set(this: SceneNode, value) {\r\n for (const ani of value.object) {\r\n const animation = ani as AnimationClip;\r\n for (const tracks of animation.tracks) {\r\n for (const track of tracks[1]) {\r\n if (!track.embedded) {\r\n animation.addTrack(tracks[0], track);\r\n if (tracks[0] instanceof SceneNode) {\r\n if (track instanceof NodeTranslationTrack) {\r\n tracks[0].jointTypeT = 'animated';\r\n } else if (track instanceof NodeScaleTrack) {\r\n tracks[0].jointTypeS = 'animated';\r\n } else if (track instanceof NodeRotationTrack) {\r\n tracks[0].jointTypeR = 'animated';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!manager.editorMode && animation.autoPlay) {\r\n this.animationSet.playAnimation(animation.name, { repeat: 0 });\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n const name = animationSet.getAnimationNames()[index];\r\n const animation = animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animationSet.deleteAnimation(name);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Shared skeleton rigs used by the node animations',\r\n type: 'object_array',\r\n phase: 1,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n value.object = [...rigs];\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.rigs.forEach((v) => v.dispose());\r\n animationSet.rigs.splice(0, animationSet.rigs.length);\r\n animationSet.rigs.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Skin bindings used by the node animations',\r\n type: 'object_array',\r\n phase: 2,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet.skeletons.map((v) => v.get());\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.skeletons.forEach((v) => v.dispose());\r\n animationSet.skeletons.splice(0, animationSet.skeletons.length);\r\n animationSet.skeletons.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig && !animationSet.rigs.some((ref) => ref.get() === rig)) {\r\n animationSet.rigs.push(new DRef(rig));\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'JointDynamics',\r\n description: 'Joint dynamics systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [JointDynamicsModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n return jdm;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n value.object = jdm;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const sk of animationSet.rigs) {\r\n const modifiers = sk.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof JointDynamicsModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const mod of value.object) {\r\n if (!(mod instanceof JointDynamicsModifier)) {\r\n continue;\r\n }\r\n const skeleton = getJointDynamicsModifierSkeleton(mod);\r\n if (skeleton && animationSet.rigs.some((sk) => sk.get() === skeleton)) {\r\n skeleton.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, skeleton);\r\n continue;\r\n }\r\n for (const sk of animationSet.rigs) {\r\n if (\r\n mod.jointDynamicsSystem.chainConfig.chains.every((chain) =>\r\n sk.get()!.joints.includes(chain.start)\r\n )\r\n ) {\r\n sk.get()!.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, sk.get()!);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let n = 0;\r\n for (const sk of animationSet.rigs) {\r\n for (const mod of sk.get()!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n if (n === index) {\r\n const index = sk.get()!.modifiers.indexOf(mod);\r\n sk.get()!.modifiers.splice(index, 1);\r\n return;\r\n }\r\n n++;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'SpringModifiers',\r\n description: 'Spring systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [SpringModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const springModifiers: SpringModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const rig of rigs) {\r\n for (const modifier of rig!.modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n setSpringModifierSkeleton(modifier, rig!);\r\n springModifiers.push(modifier);\r\n }\r\n }\r\n }\r\n return springModifiers;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const springModifiers: SpringModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const rig of rigs) {\r\n for (const modifier of rig!.modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n setSpringModifierSkeleton(modifier, rig!);\r\n springModifiers.push(modifier);\r\n }\r\n }\r\n }\r\n value.object = springModifiers;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const rigRef of animationSet.rigs) {\r\n const modifiers = rigRef.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof SpringModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const modifier of value.object) {\r\n if (!(modifier instanceof SpringModifier)) {\r\n continue;\r\n }\r\n const skeleton = getSpringModifierSkeleton(modifier);\r\n if (skeleton && animationSet.rigs.some((rigRef) => rigRef.get() === skeleton)) {\r\n skeleton.modifiers.push(modifier);\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n continue;\r\n }\r\n const system = modifier.springSystem as any;\r\n const chains = Array.isArray(system?.chains)\r\n ? system.chains\r\n : system?.chain\r\n ? [system.chain]\r\n : [];\r\n const particleNodes = chains.flatMap((chain: any) =>\r\n (chain?.particles ?? []).map((particle: any) => particle?.node).filter(Boolean)\r\n );\r\n for (const rigRef of animationSet.rigs) {\r\n const rig = rigRef.get()!;\r\n if (\r\n particleNodes.length > 0 &&\r\n particleNodes.every((node: SceneNode) => rig.joints.includes(node))\r\n ) {\r\n rig.modifiers.push(modifier);\r\n setSpringModifierSkeleton(modifier, rig);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let current = 0;\r\n for (const rigRef of animationSet.rigs) {\r\n const modifiers = rigRef.get()!.modifiers;\r\n for (const modifier of modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n if (current === index) {\r\n modifiers.splice(modifiers.indexOf(modifier), 1);\r\n return;\r\n }\r\n current++;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Script',\r\n description: 'First script file path which is attached to this node',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['text/x-typescript']\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.script;\r\n },\r\n set(this: SceneNode, value) {\r\n this.script = value?.str?.[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Scripts',\r\n description: 'All script file paths which are attached to this node',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [ScriptAttachment]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scripts;\r\n },\r\n isNullable() {\r\n return false;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = this.scripts;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scripts = (value.object as ScriptAttachment[]) ?? [];\r\n },\r\n create() {\r\n return new ScriptAttachment();\r\n },\r\n add(this: SceneNode, value, index) {\r\n const attachments = this.scripts;\r\n attachments.splice(\r\n index ?? attachments.length,\r\n 0,\r\n (value.object?.[0] as ScriptAttachment) ?? new ScriptAttachment()\r\n );\r\n this.scripts = attachments;\r\n },\r\n delete(this: SceneNode, index) {\r\n const attachments = this.scripts;\r\n if (index >= 0 && index < attachments.length) {\r\n attachments.splice(index, 1);\r\n this.scripts = attachments;\r\n }\r\n }\r\n },\r\n {\r\n name: 'ScriptConfig',\r\n description: 'Configuration object passed to the attached script',\r\n type: 'object',\r\n options: { objectTypes: [JSONData, JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !!this.script;\r\n },\r\n get(this: SceneNode, value) {\r\n const config = normalizeScriptAttachmentConfig(this.scriptConfig);\r\n value.object[0] =\r\n config == null\r\n ? null\r\n : Array.isArray(config)\r\n ? new JSONArray(null, config)\r\n : new JSONData(null, config);\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as\r\n | JSONData\r\n | JSONArray\r\n | Record<string, unknown>\r\n | unknown[]\r\n | null\r\n | undefined;\r\n this.scriptConfig =\r\n data instanceof JSONData || data instanceof JSONArray\r\n ? normalizeScriptAttachmentConfig(data.data)\r\n : normalizeScriptAttachmentConfig(data);\r\n }\r\n },\r\n {\r\n name: 'ScriptConfigs',\r\n description: 'Per-script configuration array for all attached scripts',\r\n type: 'object',\r\n options: { objectTypes: [JSONArray] },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scriptConfigs;\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.scripts.length > 0;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.scriptConfigs.length > 0 ? new JSONArray(null, this.scriptConfigs) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | unknown[] | null | undefined;\r\n this.scriptConfigs = data instanceof JSONArray ? data.data : Array.isArray(data) ? data : [];\r\n }\r\n },\r\n {\r\n name: 'Metadata',\r\n description: 'Meta data for this node',\r\n type: 'object',\r\n options: { objectTypes: [JSONData] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.metaData ? new JSONData(null, this.metaData) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONData | Record<string, unknown> | null | undefined;\r\n this.metaData = data instanceof JSONData ? data.data : (data ?? null);\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getGraphNodeClass(): SerializableClass {\r\n return {\r\n ctor: GraphNode,\r\n parent: SceneNode,\r\n name: 'GraphNode',\r\n createFunc(ctx: SceneNode) {\r\n const node = new GraphNode(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n"],"names":["geometryCacheBindings","WeakMap","normalizeSerializedSceneNodeData","data","Array","isArray","ClassName","Object","serialized","objectData","normalizePatchData","JSON","stringify","ASSERT","undefined","parse","createVerifiedPatch","baseData","nodeData","normalizedBaseData","normalizedNodeData","patch","diff","length","applyPatch","fallbackPatch","kind","path","value","hasMeshDescendants","node","hasMesh","iterate","child","isMesh","restoreGeometryCacheMeshes","tasks","push","restoreGeometryCacheMeshBinding","Promise","all","clearGeometryCacheBinding","previous","get","name","animationNames","animationSet","isPlayingAnimation","stopAnimation","deleteAnimation","delete","getSceneNodeClass","manager","ctor","SceneNode","createFunc","ctx","init","scene","Scene","prefabId","prefabContent","loadPrefabContent","console","warn","obj","loadProps","prefabData","tmpNode","DRef","remove","sceneNode","deserializeObject","parent","rootNode","dispose","assetId","fetchedModel","fetchModel","err","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","guessMimeType","mimeTypeOf","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","type","readonly","str","persistentId","set","isHidden","getDefaultValue","default","options","animatable","isPersistent","jointTypeT","num","position","x","y","z","setXYZ","jointTypeS","isCamera","scale","edit","isOrtho","zyx","rotation","toEulerAngles","Math","round","radian2degree","fromEulerAngle","degree2radian","jointTypeR","w","setXYZW","bool","pickable","enum","labels","values","showState","phase","_prefabId","object","children","sealed","i","includes","error","objectTypes","JSONArray","groups","getSerializedMorphTargetGroups","setSerializedMorphTargetGroups","group","label","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","rigs","Set","v","binding","skeletons","rig","add","forEach","splice","some","ref","JointDynamicsModifier","jdm","sk","mod","modifiers","setJointDynamicsModifierSkeleton","skeleton","getJointDynamicsModifierSkeleton","jointDynamicsSystem","chainConfig","chains","every","chain","joints","start","n","indexOf","SpringModifier","springModifiers","modifier","setSpringModifierSkeleton","rigRef","getSpringModifierSkeleton","system","springSystem","particleNodes","flatMap","particles","particle","filter","Boolean","isNullable","script","ScriptAttachment","scripts","create","attachments","JSONData","config","normalizeScriptAttachmentConfig","scriptConfig","scriptConfigs","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../../../src/utility/serialization/scene/node.ts"],"sourcesContent":["import { SceneNode } from '../../../scene/scene_node';\r\nimport type { SceneNodeVisible, SerializedMorphTargetGroup } from '../../../scene/scene_node';\r\nimport { Scene } from '../../../scene/scene';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport type { DiffPatch, DiffValue } from '@zephyr3d/base';\r\nimport {\r\n applyPatch,\r\n ASSERT,\r\n degree2radian,\r\n diff,\r\n DRef,\r\n guessMimeType,\r\n mimeTypeOf,\r\n radian2degree\r\n} from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { Mesh } from '../../../scene/mesh';\r\nimport type { ResourceManager } from '../manager';\r\nimport {\r\n AnimationClip,\r\n JointDynamicsModifier,\r\n SpringModifier,\r\n GPUClothComponent,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack\r\n} from '../../../animation';\r\nimport { JSONArray, JSONData } from '../json';\r\nimport { NodePhysics } from '../../../physics/node_physics';\r\nimport { ScriptAttachment, normalizeScriptAttachmentConfig } from '../../../scene/script_attachment';\r\nimport { parseZABCBlob, attachZABCAnimationsToSceneNode } from '../../../asset/loaders/zabc/zabc_loader';\r\nimport { restoreGeometryCacheMeshBinding } from '../../../animation/geometry_cache_utils';\r\nimport {\r\n getJointDynamicsModifierSkeleton,\r\n getSpringModifierSkeleton,\r\n setJointDynamicsModifierSkeleton,\r\n setSpringModifierSkeleton\r\n} from './animation';\r\nconst geometryCacheBindings = new WeakMap<\r\n SceneNode,\r\n {\r\n assetId: string;\r\n autoPlay: boolean;\r\n animationNames: string[];\r\n }\r\n>();\r\n\r\nfunction normalizeSerializedSceneNodeData(data: DiffValue): Record<string, unknown> {\r\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: {}\r\n };\r\n }\r\n const serialized = data as Record<string, unknown>;\r\n if (typeof serialized.ClassName === 'string') {\r\n return serialized;\r\n }\r\n const objectData =\r\n serialized.Object && typeof serialized.Object === 'object' && !Array.isArray(serialized.Object)\r\n ? (serialized.Object as Record<string, unknown>)\r\n : serialized;\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: objectData\r\n };\r\n}\r\n\r\nfunction normalizePatchData(data: DiffValue): DiffValue {\r\n const serialized = JSON.stringify(data);\r\n ASSERT(serialized !== undefined, 'Prefab patch data is not JSON serializable');\r\n return JSON.parse(serialized) as DiffValue;\r\n}\r\n\r\nfunction createVerifiedPatch(baseData: DiffValue, nodeData: DiffValue): DiffPatch | undefined {\r\n const normalizedBaseData = normalizePatchData(baseData);\r\n const normalizedNodeData = normalizePatchData(nodeData);\r\n const patch = diff(normalizedBaseData, normalizedNodeData);\r\n if (patch.length === 0) {\r\n return undefined;\r\n }\r\n if (diff(applyPatch(normalizedBaseData, patch), normalizedNodeData).length === 0) {\r\n return patch;\r\n }\r\n const fallbackPatch: DiffPatch = [{ kind: 'set', path: [], value: normalizedNodeData }];\r\n ASSERT(\r\n diff(applyPatch(normalizedBaseData, fallbackPatch), normalizedNodeData).length === 0,\r\n 'Fallback patch test failed'\r\n );\r\n return fallbackPatch;\r\n}\r\n\r\nfunction hasMeshDescendants(node: SceneNode) {\r\n let hasMesh = false;\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n hasMesh = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return hasMesh;\r\n}\r\n\r\nasync function restoreGeometryCacheMeshes(node: SceneNode) {\r\n const tasks: Promise<boolean>[] = [];\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n tasks.push(restoreGeometryCacheMeshBinding(child));\r\n }\r\n return false;\r\n });\r\n if (tasks.length > 0) {\r\n await Promise.all(tasks);\r\n }\r\n}\r\n\r\nasync function clearGeometryCacheBinding(node: SceneNode) {\r\n const previous = geometryCacheBindings.get(node);\r\n if (!previous) {\r\n return null;\r\n }\r\n for (const name of previous.animationNames) {\r\n if (node.animationSet.isPlayingAnimation(name)) {\r\n node.animationSet.stopAnimation(name);\r\n }\r\n node.animationSet.deleteAnimation(name);\r\n }\r\n await restoreGeometryCacheMeshes(node);\r\n geometryCacheBindings.delete(node);\r\n return previous;\r\n}\r\n\r\n/** @internal */\r\n/** Meshes with a material in the subtree of a node, the node included */\r\nfunction getSubtreeMeshes(node: SceneNode): Mesh[] {\r\n const meshes: Mesh[] = [];\r\n node.iterate((child) => {\r\n if (child.isMesh() && child.material) {\r\n meshes.push(child);\r\n }\r\n return false;\r\n });\r\n return meshes;\r\n}\r\n\r\nexport function getSceneNodeClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: SceneNode,\r\n name: 'SceneNode',\r\n async createFunc(\r\n ctx: Scene | SceneNode,\r\n init?: { prefabId?: string; assetId?: string; patch?: DiffPatch }\r\n ) {\r\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\r\n if (init?.prefabId) {\r\n const prefabContent = await manager.loadPrefabContent(init.prefabId);\r\n if (!prefabContent?.data) {\r\n console.warn(`Skip scene node because prefab asset is missing: ${init.prefabId}`);\r\n return { obj: null, loadProps: false };\r\n }\r\n const prefabData = prefabContent.data as DiffValue;\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(prefabData, init.patch ?? []) as DiffValue\r\n );\r\n const tmpNode = new DRef(new SceneNode(scene));\r\n tmpNode.get()!.remove();\r\n tmpNode.get()!.prefabId = init.prefabId;\r\n const sceneNode = await manager.deserializeObject<SceneNode>(tmpNode.get(), nodeData);\r\n if (sceneNode) {\r\n sceneNode.prefabId = init.prefabId;\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n }\r\n tmpNode.dispose();\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n if (init?.assetId) {\r\n let fetchedModel: SceneNode | null = null;\r\n try {\r\n fetchedModel = (await manager.fetchModel(init.assetId, scene!)) ?? null;\r\n } catch (err) {\r\n console.warn(`Skip scene node because model asset failed to load: ${init.assetId}: ${err}`);\r\n fetchedModel = null;\r\n }\r\n const sceneNode = fetchedModel ?? null;\r\n if (sceneNode) {\r\n const originalAssetId = manager.getAssetId(sceneNode);\r\n try {\r\n manager.setAssetId(sceneNode, null);\r\n const baseNodeData = await manager.serializeObject(sceneNode);\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(baseNodeData as DiffValue, init.patch ?? []) as DiffValue\r\n );\r\n await manager.deserializeObjectProps(sceneNode, nodeData.Object as Record<string, unknown>);\r\n } finally {\r\n manager.setAssetId(sceneNode, originalAssetId ?? init.assetId);\r\n }\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n } else {\r\n console.warn(`Skip scene node because model asset is missing: ${init.assetId}`);\r\n }\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n const node = new SceneNode(scene);\r\n if (ctx instanceof SceneNode) {\r\n node.parent = ctx;\r\n }\r\n return { obj: node };\r\n },\r\n async getInitParams(obj: SceneNode, flags) {\r\n let prefabId = obj.prefabId;\r\n const assetId = manager.getAssetId(obj);\r\n let patch: DiffPatch | undefined = undefined;\r\n if (prefabId && guessMimeType(prefabId) === mimeTypeOf('.zprefab')) {\r\n try {\r\n const prefabData = (await manager.loadPrefabContent(prefabId))!.data as DiffValue;\r\n obj.prefabId = '';\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = createVerifiedPatch(prefabData, nodeData);\r\n } finally {\r\n obj.prefabId = prefabId;\r\n }\r\n flags.saveProps = false;\r\n } else {\r\n prefabId = '';\r\n }\r\n if (!prefabId && assetId) {\r\n const baseNode = (await manager.fetchModel(assetId, obj.scene!)) ?? null;\r\n if (baseNode) {\r\n const originalObjectAssetId = manager.getAssetId(obj);\r\n const originalBaseAssetId = manager.getAssetId(baseNode);\r\n try {\r\n manager.setAssetId(obj, null);\r\n manager.setAssetId(baseNode, null);\r\n const baseNodeData = await manager.serializeObject(baseNode);\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = createVerifiedPatch(baseNodeData, nodeData);\r\n } finally {\r\n manager.setAssetId(obj, originalObjectAssetId);\r\n manager.setAssetId(baseNode, originalBaseAssetId);\r\n baseNode.remove();\r\n }\r\n flags.saveProps = false;\r\n }\r\n }\r\n return prefabId\r\n ? {\r\n prefabId,\r\n patch\r\n }\r\n : assetId\r\n ? {\r\n assetId,\r\n patch\r\n }\r\n : null;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Id',\r\n description: 'Unique persistent id for the node',\r\n type: 'string',\r\n readonly: true,\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.persistentId;\r\n },\r\n set(this: SceneNode, value) {\r\n this.persistentId = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'PrefabId',\r\n description: 'Persistent ID of the prefab source for this node',\r\n type: 'string',\r\n readonly: true,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.prefabId;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n description: 'Display name of the node',\r\n type: 'string',\r\n getDefaultValue() {\r\n return '';\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: SceneNode, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Position',\r\n description: 'Local position of the node',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeT !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.position.x;\r\n value.num[1] = this.position.y;\r\n value.num[2] = this.position.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.position.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scale',\r\n description: 'Local scale of the node',\r\n type: 'vec3',\r\n default: [1, 1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeS !== 'animated';\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera();\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.scale.x;\r\n value.num[1] = this.scale.y;\r\n value.num[2] = this.scale.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scale.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n description: 'Euler rotation of this node in ZYX order',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true,\r\n edit: 'quaternion'\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera() && this.isOrtho();\r\n },\r\n get(this: SceneNode, value) {\r\n const zyx = this.rotation.toEulerAngles();\r\n value.num[0] = Math.round(radian2degree(zyx.x));\r\n value.num[1] = Math.round(radian2degree(zyx.y));\r\n value.num[2] = Math.round(radian2degree(zyx.z));\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.fromEulerAngle(\r\n degree2radian(value.num[0]),\r\n degree2radian(value.num[1]),\r\n degree2radian(value.num[2])\r\n );\r\n }\r\n },\r\n {\r\n name: 'QuatRotation',\r\n description: 'Node rotation quaternion',\r\n type: 'vec4',\r\n default: [0, 0, 0, 1],\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeR !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.rotation.x;\r\n value.num[1] = this.rotation.y;\r\n value.num[2] = this.rotation.z;\r\n value.num[3] = this.rotation.w;\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.setXYZW(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n },\r\n {\r\n name: 'Pickable',\r\n description: 'If true, enable ray-cast for this object',\r\n type: 'bool',\r\n default: false,\r\n get(this: SceneNode, value) {\r\n value.bool[0] = this.pickable;\r\n },\r\n set(this: SceneNode, value) {\r\n this.pickable = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Visible',\r\n description: 'Node visible state',\r\n type: 'string',\r\n default: 'inherit',\r\n options: {\r\n enum: {\r\n labels: ['Visible', 'Hidden', 'Inherit'],\r\n values: ['visible', 'hidden', 'inherit']\r\n }\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.showState;\r\n },\r\n set(this: SceneNode, value) {\r\n this.showState = value.str[0] as SceneNodeVisible;\r\n }\r\n },\r\n {\r\n name: 'GeometryInstanceSubtree',\r\n options: {\r\n label: 'Geometry Instance (Subtree)'\r\n },\r\n description:\r\n 'Turns geometry instancing on or off for every mesh under this node at once, so copies of this model placed in the scene are drawn together in fewer draw calls. Checked when all of those meshes already use it',\r\n type: 'bool',\r\n isPersistent() {\r\n return false;\r\n },\r\n isHidden(this: SceneNode) {\r\n return !getSubtreeMeshes(this).some((mesh) => mesh !== this);\r\n },\r\n get(this: SceneNode, value) {\r\n const meshes = getSubtreeMeshes(this);\r\n value.bool[0] = meshes.length > 0 && meshes.every((mesh) => mesh.material!.$isInstance);\r\n },\r\n set(this: SceneNode, value) {\r\n // Only meshes in the other state are switched, so existing instances keep their uniforms\r\n for (const mesh of getSubtreeMeshes(this)) {\r\n const material = mesh.material!;\r\n if (value.bool[0] && !material.$isInstance) {\r\n mesh.material = material.createInstance();\r\n } else if (!value.bool[0] && material.$isInstance) {\r\n mesh.material = material.coreMaterial;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Children',\r\n description: 'Children nodes of this node',\r\n type: 'object_array',\r\n phase: 0,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = [];\r\n for (const child of this.children) {\r\n if (!child.sealed) {\r\n value.object.push(child);\r\n }\r\n }\r\n },\r\n set(this: SceneNode, value) {\r\n const children = this.children;\r\n for (let i = children.length - 1; i >= 0; i--) {\r\n const child = children[i];\r\n if (!value.object.includes(child) && !child.sealed) {\r\n child.remove();\r\n }\r\n }\r\n for (const child of value.object) {\r\n if (child instanceof SceneNode) {\r\n child.parent = this;\r\n } else {\r\n console.error(`Invalid scene node: ${child}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphTargetGroups',\r\n description: 'Serialized model-level morph target groups for this node',\r\n type: 'object',\r\n phase: 10,\r\n options: { objectTypes: [JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const groups = this.getSerializedMorphTargetGroups();\r\n value.object[0] = groups.length > 0 ? new JSONArray(null, groups) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | SerializedMorphTargetGroup[] | null | undefined;\r\n if (data) {\r\n this.setSerializedMorphTargetGroups(data instanceof JSONArray ? data.data : data);\r\n }\r\n }\r\n },\r\n {\r\n name: 'GeometryCache',\r\n description: 'Alembic geometry cache asset used by this node',\r\n type: 'string',\r\n options: {\r\n group: 'Animation',\r\n label: 'Geometry Cache',\r\n mimeTypes: [mimeTypeOf('.zabc')]\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = geometryCacheBindings.get(this)?.assetId ?? '';\r\n },\r\n async set(this: SceneNode, value) {\r\n const previous = await clearGeometryCacheBinding(this);\r\n const assetId = value?.str?.[0]?.trim() ?? '';\r\n if (!assetId) {\r\n return;\r\n }\r\n const binary = (await manager.assetManager.fetchBinaryData(assetId)) as ArrayBuffer;\r\n const parsed = await parseZABCBlob(\r\n new Blob([binary], { type: manager.VFS.guessMIMEType(assetId) || 'application/octet-stream' })\r\n );\r\n const autoPlay = previous?.autoPlay ?? false;\r\n const result = await attachZABCAnimationsToSceneNode(this, parsed, {\r\n sourcePath: assetId,\r\n autoPlay,\r\n replaceAnimationNames: []\r\n });\r\n geometryCacheBindings.set(this, {\r\n assetId,\r\n autoPlay,\r\n animationNames: result.animationNames\r\n });\r\n }\r\n },\r\n {\r\n name: 'GeometryCacheAutoPlay',\r\n description: 'If true, plays the geometry cache automatically when loaded',\r\n type: 'bool',\r\n default: false,\r\n options: {\r\n group: 'Animation',\r\n label: 'Cache AutoPlay'\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.bool[0] = geometryCacheBindings.get(this)?.autoPlay ?? false;\r\n },\r\n async set(this: SceneNode, value) {\r\n const current = geometryCacheBindings.get(this);\r\n if (!current) {\r\n return;\r\n }\r\n const autoPlay = !!value.bool[0];\r\n geometryCacheBindings.set(this, {\r\n assetId: current.assetId,\r\n autoPlay,\r\n animationNames: current.animationNames\r\n });\r\n for (const name of current.animationNames) {\r\n const animation = this.animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animation.autoPlay = autoPlay;\r\n if (autoPlay) {\r\n this.animationSet.playAnimation(name, { repeat: 0 });\r\n } else if (this.animationSet.isPlayingAnimation(name)) {\r\n this.animationSet.stopAnimation(name);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Animations',\r\n description: 'Animation clips which affect this object or children',\r\n type: 'object_array',\r\n phase: 2,\r\n readonly: true,\r\n options: {\r\n objectTypes: [AnimationClip]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet\r\n .getAnimationNames()\r\n .map((name) => animationSet.getAnimationClip(name));\r\n },\r\n set(this: SceneNode, value) {\r\n for (const ani of value.object) {\r\n const animation = ani as AnimationClip;\r\n for (const tracks of animation.tracks) {\r\n for (const track of tracks[1]) {\r\n if (!track.embedded) {\r\n animation.addTrack(tracks[0], track);\r\n if (tracks[0] instanceof SceneNode) {\r\n if (track instanceof NodeTranslationTrack) {\r\n tracks[0].jointTypeT = 'animated';\r\n } else if (track instanceof NodeScaleTrack) {\r\n tracks[0].jointTypeS = 'animated';\r\n } else if (track instanceof NodeRotationTrack) {\r\n tracks[0].jointTypeR = 'animated';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!manager.editorMode && animation.autoPlay) {\r\n this.animationSet.playAnimation(animation.name, { repeat: 0 });\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n const name = animationSet.getAnimationNames()[index];\r\n const animation = animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animationSet.deleteAnimation(name);\r\n }\r\n }\r\n },\r\n {\r\n name: 'GPUAnimation',\r\n options: {\r\n label: 'GPU Animation'\r\n },\r\n description:\r\n \"Plays this model's skeletal animations from baked poses computed on the GPU, so many copies of it can animate together at little CPU cost. IK, joint dynamics, cloth, items attached to bones and blends between animations keep working by switching back to regular animation while they are in use\",\r\n type: 'bool',\r\n default: false,\r\n isHidden(this: SceneNode) {\r\n return !(this._animationSet.get()?.skinBindings.length ?? 0);\r\n },\r\n get(this: SceneNode, value) {\r\n value.bool[0] = this._animationSet.get()?.gpuAnimation ?? false;\r\n },\r\n set(this: SceneNode, value) {\r\n if (value.bool[0] || this._animationSet.get()) {\r\n this.animationSet.gpuAnimation = value.bool[0];\r\n }\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Shared skeleton rigs used by the node animations',\r\n type: 'object_array',\r\n phase: 1,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n value.object = [...rigs];\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.rigs.forEach((v) => v.dispose());\r\n animationSet.rigs.splice(0, animationSet.rigs.length);\r\n animationSet.rigs.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Skin bindings used by the node animations',\r\n type: 'object_array',\r\n phase: 2,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet.skeletons.map((v) => v.get());\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.skeletons.forEach((v) => v.dispose());\r\n animationSet.skeletons.splice(0, animationSet.skeletons.length);\r\n animationSet.skeletons.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig && !animationSet.rigs.some((ref) => ref.get() === rig)) {\r\n animationSet.rigs.push(new DRef(rig));\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'JointDynamics',\r\n description: 'Joint dynamics systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [JointDynamicsModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n return jdm;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n value.object = jdm;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const sk of animationSet.rigs) {\r\n const modifiers = sk.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof JointDynamicsModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const mod of value.object) {\r\n if (!(mod instanceof JointDynamicsModifier)) {\r\n continue;\r\n }\r\n const skeleton = getJointDynamicsModifierSkeleton(mod);\r\n if (skeleton && animationSet.rigs.some((sk) => sk.get() === skeleton)) {\r\n skeleton.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, skeleton);\r\n continue;\r\n }\r\n for (const sk of animationSet.rigs) {\r\n if (\r\n mod.jointDynamicsSystem.chainConfig.chains.every((chain) =>\r\n sk.get()!.joints.includes(chain.start)\r\n )\r\n ) {\r\n sk.get()!.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, sk.get()!);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let n = 0;\r\n for (const sk of animationSet.rigs) {\r\n for (const mod of sk.get()!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n if (n === index) {\r\n const index = sk.get()!.modifiers.indexOf(mod);\r\n sk.get()!.modifiers.splice(index, 1);\r\n return;\r\n }\r\n n++;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'SpringModifiers',\r\n description: 'Spring systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [SpringModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const springModifiers: SpringModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const rig of rigs) {\r\n for (const modifier of rig!.modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n setSpringModifierSkeleton(modifier, rig!);\r\n springModifiers.push(modifier);\r\n }\r\n }\r\n }\r\n return springModifiers;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const springModifiers: SpringModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const rig of rigs) {\r\n for (const modifier of rig!.modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n setSpringModifierSkeleton(modifier, rig!);\r\n springModifiers.push(modifier);\r\n }\r\n }\r\n }\r\n value.object = springModifiers;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const rigRef of animationSet.rigs) {\r\n const modifiers = rigRef.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof SpringModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const modifier of value.object) {\r\n if (!(modifier instanceof SpringModifier)) {\r\n continue;\r\n }\r\n const skeleton = getSpringModifierSkeleton(modifier);\r\n if (skeleton && animationSet.rigs.some((rigRef) => rigRef.get() === skeleton)) {\r\n skeleton.modifiers.push(modifier);\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n continue;\r\n }\r\n const system = modifier.springSystem as any;\r\n const chains = Array.isArray(system?.chains)\r\n ? system.chains\r\n : system?.chain\r\n ? [system.chain]\r\n : [];\r\n const particleNodes = chains.flatMap((chain: any) =>\r\n (chain?.particles ?? []).map((particle: any) => particle?.node).filter(Boolean)\r\n );\r\n for (const rigRef of animationSet.rigs) {\r\n const rig = rigRef.get()!;\r\n if (\r\n particleNodes.length > 0 &&\r\n particleNodes.every((node: SceneNode) => rig.joints.includes(node))\r\n ) {\r\n rig.modifiers.push(modifier);\r\n setSpringModifierSkeleton(modifier, rig);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let current = 0;\r\n for (const rigRef of animationSet.rigs) {\r\n const modifiers = rigRef.get()!.modifiers;\r\n for (const modifier of modifiers) {\r\n if (modifier instanceof SpringModifier) {\r\n if (current === index) {\r\n modifiers.splice(modifiers.indexOf(modifier), 1);\r\n return;\r\n }\r\n current++;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'GPUClothComponents',\r\n description: 'GPU cloth simulations owned by this object',\r\n type: 'object_array',\r\n phase: 4,\r\n readonly: true,\r\n options: {\r\n objectTypes: [GPUClothComponent],\r\n elementLabel: 'GPU Cloth'\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n return this.gpuClothComponents;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = this.gpuClothComponents;\r\n },\r\n set(this: SceneNode, value) {\r\n this.gpuClothComponents = (value.object as GPUClothComponent[]).filter(\r\n (component) => component instanceof GPUClothComponent\r\n );\r\n },\r\n add(this: SceneNode, value, index) {\r\n const components = [...this.gpuClothComponents];\r\n const component = value.object?.[0];\r\n if (component instanceof GPUClothComponent) {\r\n components.splice(index ?? components.length, 0, component);\r\n this.gpuClothComponents = components;\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const component = this.gpuClothComponents[index];\r\n if (component) {\r\n this.removeGPUClothComponent(component);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Physics',\r\n description:\r\n 'Makes the object take part in physics: a rigid body, collision shapes, a joint, a vehicle or a wheel',\r\n type: 'object',\r\n phase: 4,\r\n default: null,\r\n options: { objectTypes: [NodePhysics] },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.physics;\r\n },\r\n set(this: SceneNode, value) {\r\n const physics = value?.object[0];\r\n this.physics = physics instanceof NodePhysics ? physics : null;\r\n }\r\n },\r\n {\r\n name: 'Script',\r\n description: 'First script file path which is attached to this node',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['text/x-typescript']\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.script;\r\n },\r\n set(this: SceneNode, value) {\r\n this.script = value?.str?.[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Scripts',\r\n description: 'All script file paths which are attached to this node',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [ScriptAttachment]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scripts;\r\n },\r\n isNullable() {\r\n return false;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = this.scripts;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scripts = (value.object as ScriptAttachment[]) ?? [];\r\n },\r\n create() {\r\n return new ScriptAttachment();\r\n },\r\n add(this: SceneNode, value, index) {\r\n const attachments = this.scripts;\r\n attachments.splice(\r\n index ?? attachments.length,\r\n 0,\r\n (value.object?.[0] as ScriptAttachment) ?? new ScriptAttachment()\r\n );\r\n this.scripts = attachments;\r\n },\r\n delete(this: SceneNode, index) {\r\n const attachments = this.scripts;\r\n if (index >= 0 && index < attachments.length) {\r\n attachments.splice(index, 1);\r\n this.scripts = attachments;\r\n }\r\n }\r\n },\r\n {\r\n name: 'ScriptConfig',\r\n description: 'Configuration object passed to the attached script',\r\n type: 'object',\r\n options: { objectTypes: [JSONData, JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !!this.script;\r\n },\r\n get(this: SceneNode, value) {\r\n const config = normalizeScriptAttachmentConfig(this.scriptConfig);\r\n value.object[0] =\r\n config == null\r\n ? null\r\n : Array.isArray(config)\r\n ? new JSONArray(null, config)\r\n : new JSONData(null, config);\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as\r\n | JSONData\r\n | JSONArray\r\n | Record<string, unknown>\r\n | unknown[]\r\n | null\r\n | undefined;\r\n this.scriptConfig =\r\n data instanceof JSONData || data instanceof JSONArray\r\n ? normalizeScriptAttachmentConfig(data.data)\r\n : normalizeScriptAttachmentConfig(data);\r\n }\r\n },\r\n {\r\n name: 'ScriptConfigs',\r\n description: 'Per-script configuration array for all attached scripts',\r\n type: 'object',\r\n options: { objectTypes: [JSONArray] },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scriptConfigs;\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.scripts.length > 0;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.scriptConfigs.length > 0 ? new JSONArray(null, this.scriptConfigs) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | unknown[] | null | undefined;\r\n this.scriptConfigs = data instanceof JSONArray ? data.data : Array.isArray(data) ? data : [];\r\n }\r\n },\r\n {\r\n name: 'Metadata',\r\n description: 'Meta data for this node',\r\n type: 'object',\r\n options: { objectTypes: [JSONData] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.metaData ? new JSONData(null, this.metaData) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONData | Record<string, unknown> | null | undefined;\r\n this.metaData = data instanceof JSONData ? data.data : (data ?? null);\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getGraphNodeClass(): SerializableClass {\r\n return {\r\n ctor: GraphNode,\r\n parent: SceneNode,\r\n name: 'GraphNode',\r\n createFunc(ctx: SceneNode) {\r\n const node = new GraphNode(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n"],"names":["geometryCacheBindings","WeakMap","normalizeSerializedSceneNodeData","data","Array","isArray","ClassName","Object","serialized","objectData","normalizePatchData","JSON","stringify","ASSERT","undefined","parse","createVerifiedPatch","baseData","nodeData","normalizedBaseData","normalizedNodeData","patch","diff","length","applyPatch","fallbackPatch","kind","path","value","hasMeshDescendants","node","hasMesh","iterate","child","isMesh","restoreGeometryCacheMeshes","tasks","push","restoreGeometryCacheMeshBinding","Promise","all","clearGeometryCacheBinding","previous","get","name","animationNames","animationSet","isPlayingAnimation","stopAnimation","deleteAnimation","delete","getSubtreeMeshes","meshes","material","getSceneNodeClass","manager","ctor","SceneNode","createFunc","ctx","init","scene","Scene","prefabId","prefabContent","loadPrefabContent","console","warn","obj","loadProps","prefabData","tmpNode","DRef","remove","sceneNode","deserializeObject","parent","rootNode","dispose","assetId","fetchedModel","fetchModel","err","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","guessMimeType","mimeTypeOf","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","type","readonly","str","persistentId","set","isHidden","getDefaultValue","default","options","animatable","isPersistent","jointTypeT","num","position","x","y","z","setXYZ","jointTypeS","isCamera","scale","edit","isOrtho","zyx","rotation","toEulerAngles","Math","round","radian2degree","fromEulerAngle","degree2radian","jointTypeR","w","setXYZW","bool","pickable","enum","labels","values","showState","label","some","mesh","every","$isInstance","createInstance","coreMaterial","phase","_prefabId","object","children","sealed","i","includes","error","objectTypes","JSONArray","groups","getSerializedMorphTargetGroups","setSerializedMorphTargetGroups","group","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","_animationSet","skinBindings","gpuAnimation","rigs","Set","v","binding","skeletons","rig","add","forEach","splice","ref","JointDynamicsModifier","jdm","sk","mod","modifiers","setJointDynamicsModifierSkeleton","skeleton","getJointDynamicsModifierSkeleton","jointDynamicsSystem","chainConfig","chains","chain","joints","start","n","indexOf","SpringModifier","springModifiers","modifier","setSpringModifierSkeleton","rigRef","getSpringModifierSkeleton","system","springSystem","particleNodes","flatMap","particles","particle","filter","Boolean","GPUClothComponent","elementLabel","gpuClothComponents","component","components","removeGPUClothComponent","NodePhysics","isNullable","physics","script","ScriptAttachment","scripts","create","attachments","JSONData","config","normalizeScriptAttachmentConfig","scriptConfig","scriptConfigs","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
|