@woosh/meep-engine 3.44.0 → 3.46.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/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +5 -1
- package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
- package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
- package/src/core/binary/hash/XXH128Hash.js +4 -55
- package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
- package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
- package/src/core/binary/hash/XXH3_SECRET.js +4 -25
- package/src/core/binary/hash/crc32.d.ts +1 -15
- package/src/core/binary/hash/crc32.d.ts.map +1 -1
- package/src/core/binary/hash/crc32.js +4 -96
- package/src/core/binary/hash/xxh3_128.d.ts +1 -9
- package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_128.js +4 -341
- package/src/core/binary/hash/xxh3_64.d.ts +1 -8
- package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_64.js +4 -241
- package/src/core/binary/hash/xxh3_common.d.ts +1 -223
- package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_common.js +90 -476
- package/src/core/collection/array/array_sort_insertion_ascending.d.ts +19 -0
- package/src/core/collection/array/array_sort_insertion_ascending.d.ts.map +1 -0
- package/src/core/collection/array/array_sort_insertion_ascending.js +31 -0
- package/src/core/collection/array/combine_hash.d.ts +6 -0
- package/src/core/collection/array/combine_hash.d.ts.map +1 -1
- package/src/core/collection/array/combine_hash.js +6 -0
- package/src/core/function/FunctionCompiler.js +2 -2
- package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts +27 -0
- package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts.map +1 -0
- package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.js +39 -0
- package/src/core/geom/3d/aabb/aabb3_from_v3_array.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_from_v3_array.js +4 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +2 -2
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +1 -1
- package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
- package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
- package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts +21 -0
- package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts.map +1 -0
- package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.js +36 -0
- package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts +25 -0
- package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts.map +1 -0
- package/src/core/geom/3d/pose/pose3_apply_point_array.js +40 -0
- package/src/core/geom/3d/pose/pose3_compose_array.d.ts +28 -0
- package/src/core/geom/3d/pose/pose3_compose_array.d.ts.map +1 -0
- package/src/core/geom/3d/pose/pose3_compose_array.js +41 -0
- package/src/core/geom/3d/pose/pose3_to_local_array.d.ts +29 -0
- package/src/core/geom/3d/pose/pose3_to_local_array.d.ts.map +1 -0
- package/src/core/geom/3d/pose/pose3_to_local_array.js +42 -0
- package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts +28 -0
- package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.js +66 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts +22 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.js +30 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts +23 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.js +31 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts +26 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.js +46 -0
- package/src/core/geom/ConicRay.js +2 -2
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +8 -5
- package/src/core/geom/vec3/v3_distance_array.d.ts +11 -0
- package/src/core/geom/vec3/v3_distance_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_distance_array.js +19 -0
- package/src/core/geom/vec3/v3_normalize_array_checked.d.ts +23 -0
- package/src/core/geom/vec3/v3_normalize_array_checked.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_normalize_array_checked.js +49 -0
- package/src/core/geom/vec3/v3_reject_array.d.ts +15 -0
- package/src/core/geom/vec3/v3_reject_array.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_reject_array.js +32 -0
- package/src/core/graph/csr/csr_build_incidence.d.ts +26 -0
- package/src/core/graph/csr/csr_build_incidence.d.ts.map +1 -0
- package/src/core/graph/csr/csr_build_incidence.js +71 -0
- package/src/core/graph/csr/csr_graph_color_greedy.d.ts +25 -0
- package/src/core/graph/csr/csr_graph_color_greedy.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_color_greedy.js +83 -0
- package/src/core/graph/csr/csr_graph_validate_coloring.d.ts +15 -0
- package/src/core/graph/csr/csr_graph_validate_coloring.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_validate_coloring.js +33 -0
- package/src/core/math/hash/XXH128Hash.d.ts +38 -0
- package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
- package/src/core/math/hash/XXH128Hash.js +55 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
- package/src/core/math/hash/XXH3_SECRET.js +25 -0
- package/src/core/math/hash/crc32.d.ts +16 -0
- package/src/core/math/hash/crc32.d.ts.map +1 -0
- package/src/core/math/hash/crc32.js +96 -0
- package/src/core/math/hash/xxh3_128.d.ts +10 -0
- package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_128.js +341 -0
- package/src/core/math/hash/xxh3_64.d.ts +9 -0
- package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_64.js +241 -0
- package/src/core/math/hash/xxh3_common.d.ts +224 -0
- package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_common.js +476 -0
- package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts +26 -0
- package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts.map +1 -0
- package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.js +71 -0
- package/src/core/math/lookup/ParameterLookupTable.js +2 -2
- package/src/core/math/max2_exact.d.ts +15 -0
- package/src/core/math/max2_exact.d.ts.map +1 -0
- package/src/core/math/max2_exact.js +30 -0
- package/src/core/math/min2_exact.d.ts +20 -0
- package/src/core/math/min2_exact.d.ts.map +1 -0
- package/src/core/math/min2_exact.js +35 -0
- package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
- package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
- package/src/engine/asset/AssetDescription.js +2 -2
- package/src/engine/ecs/animation/Animation.js +2 -2
- package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
- package/src/engine/ecs/animation/AnimationClip.js +7 -5
- package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
- package/src/engine/ecs/gui/GUIElement.js +7 -5
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
- package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKGoalSystem.js +3 -19
- package/src/engine/ecs/parent/parent_entity_model_of.d.ts +17 -0
- package/src/engine/ecs/parent/parent_entity_model_of.d.ts.map +1 -0
- package/src/engine/ecs/parent/parent_entity_model_of.js +26 -0
- package/src/engine/ecs/transform/Transform64.d.ts +1 -1
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +5 -4
- package/src/engine/ecs/transform/t64_read_pose_array.d.ts +15 -0
- package/src/engine/ecs/transform/t64_read_pose_array.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_read_pose_array.js +24 -0
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
- package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts +2 -0
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts.map +1 -1
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.js +10 -21
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
- package/src/engine/graphics3/AnimationGraphSystem.d.ts +5 -0
- package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +48 -2
- package/src/engine/graphics3/AnimationSystem.d.ts +5 -0
- package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
- package/src/engine/graphics3/AnimationSystem.js +47 -2
- package/src/engine/graphics3/ParticipatingMedia.js +204 -204
- package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +5 -0
- package/src/engine/graphics3/register_clips.d.ts +29 -0
- package/src/engine/graphics3/register_clips.d.ts.map +1 -1
- package/src/engine/graphics3/register_clips.js +52 -0
- package/src/engine/grid/obstacle/GridObstacle.js +2 -2
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
- package/src/engine/interpolation/Interpolated.js +2 -2
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +9 -0
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -1
- package/src/engine/physics/cloth/PLAN.md +10 -8
- package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts +22 -0
- package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_bind_in_frame.js +51 -19
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +16 -2
- package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.js +19 -24
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +7 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +85 -67
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +19 -101
- package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts +2 -5
- package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_pack.js +7 -15
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +16 -61
- package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.d.ts +0 -1
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +6 -19
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +1 -2
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +3 -12
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothWorld.js +40 -130
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +17 -58
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +3 -3
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +44 -104
- package/src/engine/physics/cloth/ecs/cloth_geodesic.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_geodesic.js +6 -13
- package/src/engine/physics/cloth/ecs/cloth_holds.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_holds.js +15 -40
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +45 -79
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +7 -27
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +30 -62
- package/src/engine/physics/cloth/playground/cloth_playground_build.d.ts.map +1 -1
- package/src/engine/physics/cloth/playground/cloth_playground_build.js +2 -3
- package/src/engine/physics/cloth/playground/collide_main.js +2 -28
- package/src/engine/physics/cloth/playground/garment_main.js +4 -19
- package/src/engine/physics/cloth/playground/main.js +6 -48
- package/src/engine/physics/cloth/playground/rig_main.js +947 -955
- package/src/engine/physics/cloth/playground/wind_main.js +8 -7
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +16 -76
- package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts +10 -8
- package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_color_particles.js +30 -102
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +3 -2
- package/src/engine/physics/cloth/solver/cloth_hold_line.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_hold_line.js +2 -14
- package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts +21 -0
- package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_kinetic_energy.js +45 -0
- package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts +32 -0
- package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_particle_coupling.js +133 -0
- package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts +16 -0
- package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_particle_of_source.js +19 -0
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_self_find.js +6 -55
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +30 -65
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +6 -28
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +2 -3
- package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts +21 -0
- package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_stretch_residual.js +54 -0
- package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts +15 -0
- package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.js +28 -0
- package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts +30 -0
- package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.js +56 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +3 -17
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +2 -1
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -25
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +3 -1
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/cloth_sample_air.js +40 -62
- package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/ContactProbeSystem.js +2 -18
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +9 -50
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +7 -5
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
- package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts +24 -0
- package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.js +42 -0
- package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts +25 -0
- package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts.map +1 -0
- package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.js +40 -0
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +40 -90
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +3 -5
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +2 -14
- package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/hull_sphere_contact.js +2 -5
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +13 -32
- package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_box_contact.js +2 -5
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +12 -7
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
- package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
- package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +23 -13
- package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +7 -5
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +8 -5
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +2 -2
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
- package/src/format/image/png/PNGReader.js +644 -644
- package/src/format/image/png/crc32.d.ts +1 -1
- package/src/format/image/png/crc32.js +7 -8
- package/src/format/texture/basis/transcode/etc1s_to_astc.d.ts.map +1 -1
- package/src/format/texture/basis/transcode/etc1s_to_astc.js +2 -1
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
- package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
- package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
- package/src/shade/descriptor/blend/BlendComponent.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
- package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
- package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
- package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
- package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
- package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
- package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
- package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
- package/src/shade/playground/image_decode_bench/main.js +2 -1
- package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +2 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +2 -1
- package/src/shade/playground/ssr_variance/statistics.d.ts.map +1 -1
- package/src/shade/playground/ssr_variance/statistics.js +2 -1
- package/src/shade/playground/texture_encode/main.d.ts.map +1 -1
- package/src/shade/playground/texture_encode/main.js +2 -1
- package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/measure.js +2 -1
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/buffer/table/gpu_database_check_links.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/gpu_database_check_links.js +2 -1
- package/src/shade/renderer/camera/Camera.js +2 -2
- package/src/shade/renderer/geometry/Attribute.js +2 -2
- package/src/shade/renderer/geometry/Geometry.js +2 -2
- package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.js +3 -2
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.js +2 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.js +2 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.js +2 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.js +3 -2
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.js +2 -1
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.js +2 -1
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +3 -2
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +3 -2
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
- package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
- package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
- package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +17 -10
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
- package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
- package/src/view/common/HTMLElementCacheKey.js +4 -3
- package/src/view/minimap/MinimapMarker.js +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/animation/animator/AnimationClip.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AnimationClip.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/animation/animator/AnimationClip.js"],"names":[],"mappings":"AAOA;IACI;;;OAGG;IACH,6BAAW;IAEX;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,OAFU,MAAM,GAAC,iBAAiB,CAExB;IAEV;;;;;;;;;;;;;;;;;;;OAmBG;IACH,8BALW,MAAM,sCAEN,MAAM,SACN,MAAM,QAoGhB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,iBAAiB,GACtB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,iBAAiB,GACtB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,iBAAiB,SACxB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,iBAAiB,GACtB,OAAO,CAInB;IAGD;;;;OAIG;IACH,cAHW,aAAa,GACX,OAAO,CAYnB;IAED;;OAEG;IACH,QAFa,MAAM,CAWlB;CACJ;kCA3NiC,wBAAwB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
2
3
|
import { min2 } from "../../../../../core/math/min2.js";
|
|
3
4
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
5
|
import { AnimationClipFlag } from "./AnimationClipFlag.js";
|
|
@@ -211,10 +212,12 @@ export class AnimationClip {
|
|
|
211
212
|
* @returns {number}
|
|
212
213
|
*/
|
|
213
214
|
hash() {
|
|
214
|
-
return
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
return hash_mix2(
|
|
216
|
+
hash_mix3(
|
|
217
|
+
this.flags,
|
|
218
|
+
computeHashFloat(this.weight),
|
|
219
|
+
computeHashFloat(this.timeScale)
|
|
220
|
+
),
|
|
218
221
|
this.def.hash()
|
|
219
222
|
);
|
|
220
223
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
2
2
|
import { computeHashArray } from "../../../../../core/collection/array/computeHashArray.js";
|
|
3
3
|
import { isArrayEqual } from "../../../../../core/collection/array/isArrayEqual.js";
|
|
4
4
|
import { invokeObjectHash } from "../../../../../core/model/object/invokeObjectHash.js";
|
|
@@ -106,7 +106,7 @@ export class AnimationClipDefinition {
|
|
|
106
106
|
* @returns {number}
|
|
107
107
|
*/
|
|
108
108
|
hash() {
|
|
109
|
-
return
|
|
109
|
+
return hash_mix3(
|
|
110
110
|
computeStringHash(this.name),
|
|
111
111
|
computeHashArray(this.notifications, invokeObjectHash),
|
|
112
112
|
computeHashArray(this.tags, computeStringHash)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
2
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
3
|
|
|
4
4
|
export class AnimationNotification {
|
|
@@ -33,7 +33,7 @@ export class AnimationNotification {
|
|
|
33
33
|
* @returns {number}
|
|
34
34
|
*/
|
|
35
35
|
hash() {
|
|
36
|
-
return
|
|
36
|
+
return hash_mix2(
|
|
37
37
|
computeHashFloat(this.time),
|
|
38
38
|
this.def.hash()
|
|
39
39
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
2
2
|
import { computeObjectHash } from "../../../../../core/math/hash/computeObjectHash.js";
|
|
3
3
|
import { objectDeepEquals } from "../../../../../core/model/object/objectDeepEquals.js";
|
|
4
4
|
import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
|
|
@@ -34,7 +34,7 @@ export class AnimationNotificationDefinition {
|
|
|
34
34
|
* @returns {number}
|
|
35
35
|
*/
|
|
36
36
|
hash() {
|
|
37
|
-
return
|
|
37
|
+
return hash_mix2(
|
|
38
38
|
computeStringHash(this.event),
|
|
39
39
|
computeObjectHash(this.data)
|
|
40
40
|
);
|
package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix3 } from "../../../../../../../core/math/hash/hash_mix3.js";
|
|
2
2
|
import { computeHashArray } from "../../../../../../../core/collection/array/computeHashArray.js";
|
|
3
3
|
import { isArrayEqual } from "../../../../../../../core/collection/array/isArrayEqual.js";
|
|
4
4
|
import { invokeObjectHash } from "../../../../../../../core/model/object/invokeObjectHash.js";
|
|
@@ -54,7 +54,7 @@ export class AnimationGraphDefinition {
|
|
|
54
54
|
* @returns {number}
|
|
55
55
|
*/
|
|
56
56
|
hash() {
|
|
57
|
-
return
|
|
57
|
+
return hash_mix3(
|
|
58
58
|
this.startingSate.hash(),
|
|
59
59
|
computeHashArray(this.states, invokeObjectHash),
|
|
60
60
|
computeHashArray(this.transitions, invokeObjectHash)
|
package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../../../core/math/hash/hash_mix2.js";
|
|
2
2
|
import { AnimationStateType } from "../AnimationStateType.js";
|
|
3
3
|
|
|
4
4
|
export class AnimationStateDefinition {
|
|
@@ -82,7 +82,7 @@ export class AnimationStateDefinition {
|
|
|
82
82
|
* @returns {number}
|
|
83
83
|
*/
|
|
84
84
|
hash() {
|
|
85
|
-
return
|
|
85
|
+
return hash_mix2(
|
|
86
86
|
this.type,
|
|
87
87
|
this.motion.hash()
|
|
88
88
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationTransitionDefinition.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AnimationTransitionDefinition.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js"],"names":[],"mappings":"AAKA;IACI;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,UAFU,MAAM,CAED;IAEf;;;OAGG;IACH,iCAAc;IAEd;;;OAGG;IACH,iCAAc;IAEd;;;;OAIG;IACH,cAHW,6BAA6B,GAC3B,OAAO,CAYnB;IAED;;OAEG;IACH,QAFa,MAAM,CAWlB;CACJ"}
|
package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hash_mix2 } from "../../../../../../../core/math/hash/hash_mix2.js";
|
|
2
|
+
import { hash_mix3 } from "../../../../../../../core/math/hash/hash_mix3.js";
|
|
2
3
|
import { computeHashFloat } from "../../../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
3
4
|
import { computeStringHash } from "../../../../../../../core/primitives/strings/computeStringHash.js";
|
|
4
5
|
|
|
@@ -48,10 +49,12 @@ export class AnimationTransitionDefinition {
|
|
|
48
49
|
* @returns {number}
|
|
49
50
|
*/
|
|
50
51
|
hash() {
|
|
51
|
-
return
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
return hash_mix2(
|
|
53
|
+
hash_mix3(
|
|
54
|
+
computeStringHash(this.event),
|
|
55
|
+
computeHashFloat(this.duration),
|
|
56
|
+
this.source.hash()
|
|
57
|
+
),
|
|
55
58
|
this.target.hash()
|
|
56
59
|
);
|
|
57
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Decal.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/decal/v2/Decal.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Decal.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/decal/v2/Decal.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAmGI,+BAMC;IAvGD;;;;;;;OAOG;IACH,KAFU,MAAM,CAEP;IAET;;;OAGG;IACH,YAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,YAFU,MAAM,CAEA;IAEhB;;;;;OAKG;IACH,SAFU,MAAM,CAEH;IAEb;;;;OAIG;IACH,cAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,UAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,OAFU,KAAK,CAEe;IAE9B;;;OAGG;IACH,WAFU,MAAM,CAEF;IAEd;;OAEG;IACH,WAFU,MAAM,CAEF;IAEd;;OAEG;IACH,gBAFU,KAAK,CAEwB;IAEvC;;;;OAIG;IACH,oBAFU,MAAM,CAEO;IAEvB;;;;OAIG;IACH,yBAAwB;IAExB;;;;OAIG;IACH,qBAAoB;IAEpB;;;;;;OAMG;IACH,yBAEC;IAUD;;;;;;;;;;;;MAcC;IAED;;;;;;;;;;;;aA+CC;IAED,eAkBC;IAED;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAenB;CACJ;;;;sBApPqB,oCAAoC"}
|
|
@@ -2,7 +2,8 @@ import { Color } from "../../../../../core/color/Color.js";
|
|
|
2
2
|
import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
|
|
3
3
|
import { assert } from "../../../../../core/assert.js";
|
|
4
4
|
import { computeHashFloat } from "../../../../../core/primitives/numbers/computeHashFloat.js";
|
|
5
|
-
import {
|
|
5
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
6
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* A projected surface decal.
|
|
@@ -203,21 +204,21 @@ export class Decal {
|
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
hash() {
|
|
206
|
-
return
|
|
207
|
+
return hash_mix3(
|
|
207
208
|
computeStringHash(this.uri) ^ this.color.hash(),
|
|
208
|
-
|
|
209
|
-
|
|
209
|
+
hash_mix2(
|
|
210
|
+
hash_mix2(
|
|
210
211
|
computeStringHash(this.uri_albedo),
|
|
211
212
|
computeStringHash(this.uri_normal)
|
|
212
213
|
),
|
|
213
|
-
|
|
214
|
+
hash_mix2(
|
|
214
215
|
computeStringHash(this.uri_orm),
|
|
215
216
|
computeStringHash(this.uri_emissive)
|
|
216
217
|
)
|
|
217
218
|
),
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
hash_mix2(
|
|
220
|
+
hash_mix2(computeHashFloat(this.roughness), computeHashFloat(this.metalness)),
|
|
221
|
+
hash_mix2(this.emissive_color.hash(), computeHashFloat(this.emissive_intensity))
|
|
221
222
|
)
|
|
222
223
|
);
|
|
223
224
|
}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
* to synthesise some arbitrary unit vector and hand it over as though it were a
|
|
18
18
|
* measurement.
|
|
19
19
|
*
|
|
20
|
+
* An indexed form of {@link tri3_compute_normal_area_weighted_array}, which holds the arithmetic.
|
|
21
|
+
*
|
|
20
22
|
* Single-face callers — a raycast normal, a plane side test — want
|
|
21
23
|
* {@link geometry_construct_triangle_normal} instead.
|
|
22
24
|
*
|
package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry_construct_triangle_normal_area_weighted.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry_construct_triangle_normal_area_weighted.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,sEARW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,GACnB,IAAI,CAShB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { tri3_compute_normal_area_weighted_array } from "../../../core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* The face normal of an indexed triangle, NOT normalised — the raw
|
|
3
5
|
* `(c - b) × (a - b)`, whose magnitude is twice the triangle's area.
|
|
@@ -17,6 +19,8 @@
|
|
|
17
19
|
* to synthesise some arbitrary unit vector and hand it over as though it were a
|
|
18
20
|
* measurement.
|
|
19
21
|
*
|
|
22
|
+
* An indexed form of {@link tri3_compute_normal_area_weighted_array}, which holds the arithmetic.
|
|
23
|
+
*
|
|
20
24
|
* Single-face callers — a raycast normal, a plane side test — want
|
|
21
25
|
* {@link geometry_construct_triangle_normal} instead.
|
|
22
26
|
*
|
|
@@ -29,25 +33,10 @@
|
|
|
29
33
|
* @returns {void}
|
|
30
34
|
*/
|
|
31
35
|
export function geometry_construct_triangle_normal_area_weighted(out, out_offset, a, b, c, positions) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const by = positions[b_address + 1];
|
|
39
|
-
const bz = positions[b_address + 2];
|
|
40
|
-
|
|
41
|
-
const cb_x = positions[c_address] - bx;
|
|
42
|
-
const cb_y = positions[c_address + 1] - by;
|
|
43
|
-
const cb_z = positions[c_address + 2] - bz;
|
|
44
|
-
|
|
45
|
-
const ab_x = positions[a_address] - bx;
|
|
46
|
-
const ab_y = positions[a_address + 1] - by;
|
|
47
|
-
const ab_z = positions[a_address + 2] - bz;
|
|
48
|
-
|
|
49
|
-
// the same winding `tri3_compute_normal` uses, so the direction agrees
|
|
50
|
-
out[out_offset] = cb_y * ab_z - cb_z * ab_y;
|
|
51
|
-
out[out_offset + 1] = cb_z * ab_x - cb_x * ab_z;
|
|
52
|
-
out[out_offset + 2] = cb_x * ab_y - cb_y * ab_x;
|
|
36
|
+
tri3_compute_normal_area_weighted_array(
|
|
37
|
+
out, out_offset,
|
|
38
|
+
positions, a * 3,
|
|
39
|
+
positions, b * 3,
|
|
40
|
+
positions, c * 3
|
|
41
|
+
);
|
|
53
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureResourceDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextureResourceDescriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js"],"names":[],"mappings":"AAOA;IAsEI;;;;;;kCAiBC;IArFD;;;OAGG;IACH,QAFU,MAAM,CAEL;IACX;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,QAFU,cAAc,CAEM;IAE9B;;;OAGG;IACH,eAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,eAFU,MAAM,CAE0B;IAiB1C;;;;OAIG;IACH,cAHW,yBAAyB,GACvB,OAAO,CAkBnB;CAqBJ;mCA3FkC,yBAAyB;+BAJ7B,mDAAmD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BinaryDataType } from "../../../../../core/binary/type/BinaryDataType.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hash_mix2 } from "../../../../../core/math/hash/hash_mix2.js";
|
|
3
|
+
import { hash_mix3 } from "../../../../../core/math/hash/hash_mix3.js";
|
|
3
4
|
import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
|
|
4
5
|
import { ResourceDescriptor } from "./ResourceDescriptor.js";
|
|
5
6
|
import { TextureInitialState } from "./TextureInitialState.js";
|
|
@@ -40,11 +41,13 @@ export class TextureResourceDescriptor extends ResourceDescriptor {
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
hash() {
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
return hash_mix2(
|
|
45
|
+
hash_mix3(
|
|
46
|
+
this.width,
|
|
47
|
+
this.height,
|
|
48
|
+
computeStringHash(this.format)
|
|
49
|
+
),
|
|
50
|
+
this.channel_count
|
|
48
51
|
)
|
|
49
52
|
}
|
|
50
53
|
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
* components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
|
|
7
7
|
* clips are a new component, which this system sees as the entity leaving and coming back.
|
|
8
8
|
*
|
|
9
|
+
* **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the graph being
|
|
10
|
+
* bound to the clips until they go. A clip binds only once all of them do, and a keyed node outside
|
|
11
|
+
* every skin with nothing drawn under it — a socket, say — is held by no other system.
|
|
12
|
+
*
|
|
9
13
|
* **It is the CPU that plays the animation and the GPU that draws it.** Shade can advance a clip
|
|
10
14
|
* itself, and this never asks it to — `AnimationClipFlags.Playing` is left clear and every audible
|
|
11
15
|
* clip's time is written down each frame from the controller's own clock. That is I-4: the pose
|
|
@@ -66,6 +70,7 @@ export class AnimationGraphSystem extends System<any> {
|
|
|
66
70
|
* @param {number} entity
|
|
67
71
|
*/
|
|
68
72
|
unlink(controller: AnimationGraphController, clips: AnimationClips, entity: number): void;
|
|
73
|
+
startup(entityManager: any): Promise<void>;
|
|
69
74
|
shutdown(entityManager: any): Promise<void>;
|
|
70
75
|
#private;
|
|
71
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationGraphSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationGraphSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AnimationGraphSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationGraphSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAyBI;;;OAGG;IACH,oDAgBC;IAPG,0EAA8D;IAI9D,gFAEC;IAGL;;;;;;;;;OASG;IACH,iBAJW,wBAAwB,SACxB,cAAc,UACd,MAAM,QAehB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,6BANW,YAAY,EAAE,UACd,MAAM,GACJ,OAAO,CAgDnB;IAED;;;;OAIG;IACH,mBAJW,wBAAwB,SACxB,cAAc,UACd,MAAM,QAkBhB;IAED,2CAaC;IAED,4CAWC;;CA2JJ;uBAvXsB,kBAAkB;yCAEA,yCAAyC;+BADnD,+BAA+B;4CAHlB,iDAAiD;6BAChE,qDAAqD"}
|
|
@@ -6,7 +6,8 @@ import { System } from "../ecs/System.js";
|
|
|
6
6
|
import { AnimationClips } from "./animation/AnimationClips.js";
|
|
7
7
|
import { AnimationGraphController } from "./animation/AnimationGraphController.js";
|
|
8
8
|
import { write_graph_playback } from "./animation/write_graph_playback.js";
|
|
9
|
-
import { register_clips, unregister_clips } from "./register_clips.js";
|
|
9
|
+
import { hold_clip_targets, register_clips, release_clip_targets, unregister_clips } from "./register_clips.js";
|
|
10
|
+
import { RowChains } from "./RowChains.js";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Drives every entity's {@link AnimationGraphController}: runs its clock, and tells the renderer
|
|
@@ -16,6 +17,10 @@ import { register_clips, unregister_clips } from "./register_clips.js";
|
|
|
16
17
|
* components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
|
|
17
18
|
* clips are a new component, which this system sees as the entity leaving and coming back.
|
|
18
19
|
*
|
|
20
|
+
* **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the graph being
|
|
21
|
+
* bound to the clips until they go. A clip binds only once all of them do, and a keyed node outside
|
|
22
|
+
* every skin with nothing drawn under it — a socket, say — is held by no other system.
|
|
23
|
+
*
|
|
19
24
|
* **It is the CPU that plays the animation and the GPU that draws it.** Shade can advance a clip
|
|
20
25
|
* itself, and this never asks it to — `AnimationClipFlags.Playing` is left clear and every audible
|
|
21
26
|
* clip's time is written down each frame from the controller's own clock. That is I-4: the pose
|
|
@@ -41,10 +46,17 @@ export class AnimationGraphSystem extends System {
|
|
|
41
46
|
#scene;
|
|
42
47
|
|
|
43
48
|
/**
|
|
44
|
-
* @type {Map<number, {controller: AnimationGraphController, clips: ShadeAnimationClip[], bound: boolean, clip_registration: ClipRegistration|null, slots: Int32Array, played_slots: Int32Array, clip_ids: Int32Array, weights: Float32Array, poses: PosePlayback[]}>}
|
|
49
|
+
* @type {Map<number, {controller: AnimationGraphController, clips: ShadeAnimationClip[], bound: boolean, held: boolean, clip_registration: ClipRegistration|null, slots: Int32Array, played_slots: Int32Array, clip_ids: Int32Array, weights: Float32Array, poses: PosePlayback[]}>}
|
|
45
50
|
*/
|
|
46
51
|
#entries = new Map();
|
|
47
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The chains of the nodes the clips key. Null until the system has a dataset.
|
|
55
|
+
*
|
|
56
|
+
* @type {RowChains|null}
|
|
57
|
+
*/
|
|
58
|
+
#chains = null;
|
|
59
|
+
|
|
48
60
|
/**
|
|
49
61
|
* @param {GraphicsEngine} graphics
|
|
50
62
|
* @param {Scene} scene
|
|
@@ -82,6 +94,7 @@ export class AnimationGraphSystem extends System {
|
|
|
82
94
|
controller,
|
|
83
95
|
clips: clips.clips,
|
|
84
96
|
bound: false,
|
|
97
|
+
held: false,
|
|
85
98
|
clip_registration: null,
|
|
86
99
|
slots: new Int32Array(0),
|
|
87
100
|
played_slots: new Int32Array(0),
|
|
@@ -172,11 +185,32 @@ export class AnimationGraphSystem extends System {
|
|
|
172
185
|
|
|
173
186
|
if (entry !== undefined) {
|
|
174
187
|
this.#release_clips(entry);
|
|
188
|
+
|
|
189
|
+
if (entry.held) {
|
|
190
|
+
release_clip_targets(this.#chains, entry.clips);
|
|
191
|
+
|
|
192
|
+
entry.held = false;
|
|
193
|
+
}
|
|
175
194
|
}
|
|
176
195
|
|
|
177
196
|
this.#entries.delete(entity);
|
|
178
197
|
}
|
|
179
198
|
|
|
199
|
+
async startup(entityManager) {
|
|
200
|
+
// the scene's rows are this dataset's entities; the first system to place one says so
|
|
201
|
+
const dataset = entityManager.dataset;
|
|
202
|
+
const scene = this.#scene;
|
|
203
|
+
|
|
204
|
+
assert.ok(
|
|
205
|
+
scene.dataset === null || scene.dataset === undefined || scene.dataset === dataset,
|
|
206
|
+
'the scene is bound to another dataset'
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
scene.dataset = dataset;
|
|
210
|
+
|
|
211
|
+
this.#chains = new RowChains(dataset);
|
|
212
|
+
}
|
|
213
|
+
|
|
180
214
|
async shutdown(entityManager) {
|
|
181
215
|
for (const entry of this.#entries.values()) {
|
|
182
216
|
entry.controller.unlink();
|
|
@@ -185,6 +219,9 @@ export class AnimationGraphSystem extends System {
|
|
|
185
219
|
}
|
|
186
220
|
|
|
187
221
|
this.#entries.clear();
|
|
222
|
+
|
|
223
|
+
this.#chains.destroy();
|
|
224
|
+
this.#chains = null;
|
|
188
225
|
}
|
|
189
226
|
|
|
190
227
|
/**
|
|
@@ -223,6 +260,9 @@ export class AnimationGraphSystem extends System {
|
|
|
223
260
|
// that fires an ability while the renderer is being replaced still fires it.
|
|
224
261
|
const manager = context === null ? null : context.animation_manager;
|
|
225
262
|
|
|
263
|
+
// a new context after a restart is acquired in whole; until there is one, holds are recorded
|
|
264
|
+
this.#chains.bind(context === null ? null : context.rows);
|
|
265
|
+
|
|
226
266
|
for (const [entity, entry] of this.#entries) {
|
|
227
267
|
if (!entry.bound) {
|
|
228
268
|
this.#bind_clips(entry, entity, ecd);
|
|
@@ -302,6 +342,12 @@ export class AnimationGraphSystem extends System {
|
|
|
302
342
|
entry.poses = clips.map(() => new PosePlayback());
|
|
303
343
|
|
|
304
344
|
entry.bound = true;
|
|
345
|
+
|
|
346
|
+
// past the throw above, so a graph that cannot be bound holds nothing; and before anything
|
|
347
|
+
// registers, so the clips bind in the update that registers them
|
|
348
|
+
hold_clip_targets(this.#chains, clips);
|
|
349
|
+
|
|
350
|
+
entry.held = true;
|
|
305
351
|
}
|
|
306
352
|
|
|
307
353
|
/**
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
* components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
|
|
12
12
|
* clips are a new component, which this system sees as the entity leaving and coming back.
|
|
13
13
|
*
|
|
14
|
+
* **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the clips being
|
|
15
|
+
* taken up until they go. A clip binds only once all of them do, and a keyed node outside every skin
|
|
16
|
+
* with nothing drawn under it is held by no other system.
|
|
17
|
+
*
|
|
14
18
|
* **It is the CPU that plays the animation and the GPU that draws it.** Shade can advance a clip
|
|
15
19
|
* itself, and this never asks it to — `AnimationClipFlags.Playing` is left clear and every audible
|
|
16
20
|
* clip's time is written down each frame from the player's own clock. That is I-4: the pose
|
|
@@ -76,6 +80,7 @@ export class AnimationSystem extends System<any> {
|
|
|
76
80
|
* @param {number} entity
|
|
77
81
|
*/
|
|
78
82
|
unlink(component: Animation, clips: AnimationClips, entity: number): void;
|
|
83
|
+
startup(entityManager: any): Promise<void>;
|
|
79
84
|
shutdown(entityManager: any): Promise<void>;
|
|
80
85
|
#private;
|
|
81
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationSystem.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAyBI;;;OAGG;IACH,oDAgBC;IAPG,2DAA+C;IAI/C,iEAEC;IAGL;;;;;;;;OAQG;IACH,qBAHW,MAAM,GACJ,cAAc,CAU1B;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,6BANW,YAAY,EAAE,UACd,MAAM,GACJ,OAAO,CAyCnB;IAED;;;;;;;;OAQG;IACH,gBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAahB;IAED;;;;OAIG;IACH,kBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAgBhB;IAED,2CAaC;IAED,4CASC;;CA8KJ;uBArZsB,kBAAkB;0BADf,+BAA+B;+BAE1B,+BAA+B;4CAJlB,iDAAiD;6BAChE,qDAAqD"}
|
|
@@ -7,7 +7,8 @@ import { System } from "../ecs/System.js";
|
|
|
7
7
|
import { AnimationClips } from "./animation/AnimationClips.js";
|
|
8
8
|
import { ClipListPlayer } from "./animation/ClipListPlayer.js";
|
|
9
9
|
import { write_clip_playback } from "./animation/write_clip_playback.js";
|
|
10
|
-
import { register_clips, unregister_clips } from "./register_clips.js";
|
|
10
|
+
import { hold_clip_targets, register_clips, release_clip_targets, unregister_clips } from "./register_clips.js";
|
|
11
|
+
import { RowChains } from "./RowChains.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @type {ClipPlayback[]}
|
|
@@ -27,6 +28,10 @@ const NOTHING = Object.freeze([]);
|
|
|
27
28
|
* components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
|
|
28
29
|
* clips are a new component, which this system sees as the entity leaving and coming back.
|
|
29
30
|
*
|
|
31
|
+
* **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the clips being
|
|
32
|
+
* taken up until they go. A clip binds only once all of them do, and a keyed node outside every skin
|
|
33
|
+
* with nothing drawn under it is held by no other system.
|
|
34
|
+
*
|
|
30
35
|
* **It is the CPU that plays the animation and the GPU that draws it.** Shade can advance a clip
|
|
31
36
|
* itself, and this never asks it to — `AnimationClipFlags.Playing` is left clear and every audible
|
|
32
37
|
* clip's time is written down each frame from the player's own clock. That is I-4: the pose
|
|
@@ -51,10 +56,17 @@ export class AnimationSystem extends System {
|
|
|
51
56
|
#scene;
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
|
-
* @type {Map<number, {player: ClipListPlayer, clips: ShadeAnimationClip[], bound: boolean, clip_registration: ClipRegistration|null, played_slots: Int32Array, written: Float32Array, poses: PosePlayback[]}>}
|
|
59
|
+
* @type {Map<number, {player: ClipListPlayer, clips: ShadeAnimationClip[], bound: boolean, held: boolean, clip_registration: ClipRegistration|null, played_slots: Int32Array, written: Float32Array, poses: PosePlayback[]}>}
|
|
55
60
|
*/
|
|
56
61
|
#entries = new Map();
|
|
57
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The chains of the nodes the clips key. Null until the system has a dataset.
|
|
65
|
+
*
|
|
66
|
+
* @type {RowChains|null}
|
|
67
|
+
*/
|
|
68
|
+
#chains = null;
|
|
69
|
+
|
|
58
70
|
/**
|
|
59
71
|
* @param {GraphicsEngine} graphics
|
|
60
72
|
* @param {Scene} scene
|
|
@@ -169,6 +181,7 @@ export class AnimationSystem extends System {
|
|
|
169
181
|
player: ClipListPlayer.from(component),
|
|
170
182
|
clips: clips.clips,
|
|
171
183
|
bound: false,
|
|
184
|
+
held: false,
|
|
172
185
|
clip_registration: null,
|
|
173
186
|
played_slots: new Int32Array(0),
|
|
174
187
|
written: new Float32Array(0),
|
|
@@ -186,17 +199,41 @@ export class AnimationSystem extends System {
|
|
|
186
199
|
|
|
187
200
|
if (entry !== undefined) {
|
|
188
201
|
this.#release_clips(entry);
|
|
202
|
+
|
|
203
|
+
if (entry.held) {
|
|
204
|
+
release_clip_targets(this.#chains, entry.clips);
|
|
205
|
+
|
|
206
|
+
entry.held = false;
|
|
207
|
+
}
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
this.#entries.delete(entity);
|
|
192
211
|
}
|
|
193
212
|
|
|
213
|
+
async startup(entityManager) {
|
|
214
|
+
// the scene's rows are this dataset's entities; the first system to place one says so
|
|
215
|
+
const dataset = entityManager.dataset;
|
|
216
|
+
const scene = this.#scene;
|
|
217
|
+
|
|
218
|
+
assert.ok(
|
|
219
|
+
scene.dataset === null || scene.dataset === undefined || scene.dataset === dataset,
|
|
220
|
+
'the scene is bound to another dataset'
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
scene.dataset = dataset;
|
|
224
|
+
|
|
225
|
+
this.#chains = new RowChains(dataset);
|
|
226
|
+
}
|
|
227
|
+
|
|
194
228
|
async shutdown(entityManager) {
|
|
195
229
|
for (const entry of this.#entries.values()) {
|
|
196
230
|
this.#release_clips(entry);
|
|
197
231
|
}
|
|
198
232
|
|
|
199
233
|
this.#entries.clear();
|
|
234
|
+
|
|
235
|
+
this.#chains.destroy();
|
|
236
|
+
this.#chains = null;
|
|
200
237
|
}
|
|
201
238
|
|
|
202
239
|
/**
|
|
@@ -328,6 +365,11 @@ export class AnimationSystem extends System {
|
|
|
328
365
|
entry.poses = clips.map(() => new PosePlayback());
|
|
329
366
|
|
|
330
367
|
entry.bound = true;
|
|
368
|
+
|
|
369
|
+
// before anything registers, so the clips bind in the update that registers them
|
|
370
|
+
hold_clip_targets(this.#chains, clips);
|
|
371
|
+
|
|
372
|
+
entry.held = true;
|
|
331
373
|
}
|
|
332
374
|
|
|
333
375
|
/**
|
|
@@ -342,6 +384,9 @@ export class AnimationSystem extends System {
|
|
|
342
384
|
// that ends while the renderer is being replaced still says so.
|
|
343
385
|
const manager = context === null ? null : context.animation_manager;
|
|
344
386
|
|
|
387
|
+
// a new context after a restart is acquired in whole; until there is one, holds are recorded
|
|
388
|
+
this.#chains.bind(context === null ? null : context.rows);
|
|
389
|
+
|
|
345
390
|
for (const [entity, entry] of this.#entries) {
|
|
346
391
|
if (!entry.bound) {
|
|
347
392
|
this.#bind(entry, entity, ecd);
|