mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
69 lines
1.8 KiB
Rust
69 lines
1.8 KiB
Rust
|
|
||
|
pub mod run;
|
||
|
|
||
|
// Reexports
|
||
|
pub use self::run::RunAnimation;
|
||
|
// Crate
|
||
|
use crate::render::FigureBoneData;
|
||
|
|
||
|
// Local
|
||
|
use super::{Bone, Skeleton};
|
||
|
|
||
|
const SCALE: f32 = 11.0;
|
||
|
|
||
|
#[derive(Clone)]
|
||
|
pub struct QuadrupedSkeleton {
|
||
|
head: Bone,
|
||
|
chest: Bone,
|
||
|
lf_leg: Bone,
|
||
|
rf_leg: Bone,
|
||
|
lb_leg: Bone,
|
||
|
rb_leg: Bone,
|
||
|
|
||
|
}
|
||
|
|
||
|
impl QuadrupedSkeleton {
|
||
|
pub fn new() -> Self {
|
||
|
Self {
|
||
|
head: Bone::default(),
|
||
|
chest: Bone::default(),
|
||
|
lf_leg: Bone::default(),
|
||
|
rf_leg: Bone::default(),
|
||
|
lb_leg: Bone::default(),
|
||
|
rb_leg: Bone::default(),
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Skeleton for QuadrupedSkeleton {
|
||
|
fn compute_matrices(&self) -> [FigureBoneData; 16] {
|
||
|
[
|
||
|
FigureBoneData::new(self.head.compute_base_matrix()),
|
||
|
FigureBoneData::new(self.chest.compute_base_matrix()),
|
||
|
FigureBoneData::new(self.lf_leg.compute_base_matrix()),
|
||
|
FigureBoneData::new(self.rf_leg.compute_base_matrix()),
|
||
|
FigureBoneData::new(self.lb_leg.compute_base_matrix()),
|
||
|
FigureBoneData::new(self.rb_leg.compute_base_matrix()),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
FigureBoneData::default(),
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn interpolate(&mut self, target: &Self) {
|
||
|
self.head.interpolate(&target.head);
|
||
|
self.chest.interpolate(&target.chest);
|
||
|
self.lf_leg.interpolate(&target.lf_leg);
|
||
|
self.rf_leg.interpolate(&target.rf_leg);
|
||
|
self.lb_leg.interpolate(&target.lb_leg);
|
||
|
self.rb_leg.interpolate(&target.rb_leg);
|
||
|
}
|
||
|
}
|