use std::sync::Arc;
pub use gizmo_animation::skeletal::{
ActiveBlend, AnimationClip, AnimationPlayer, AnimationState, AnimationStateMachine,
AnimationTransition, BoneAttachment, SkeletonHierarchy,
};
#[derive(Clone)]
pub struct Skeleton {
pub bind_group: Arc<wgpu::BindGroup>,
pub buffer: Arc<wgpu::Buffer>,
pub hierarchy: Arc<gizmo_animation::skeletal::SkeletonHierarchy>,
pub local_poses: Vec<gizmo_math::Mat4>,
pub global_poses: Vec<gizmo_math::Mat4>,
}
impl Skeleton {
pub fn new(
bind_group: Arc<wgpu::BindGroup>,
buffer: Arc<wgpu::Buffer>,
hierarchy: Arc<gizmo_animation::skeletal::SkeletonHierarchy>,
local_poses: Vec<gizmo_math::Mat4>,
) -> Self {
assert_eq!(
hierarchy.joints.len(),
local_poses.len(),
"Skeleton joints uzunlugu ile local_poses esit olmali"
);
let global_poses = local_poses.clone(); Self {
bind_group,
buffer,
hierarchy,
local_poses,
global_poses,
}
}
}