Add legs to quadruped_medium

This commit is contained in:
Snowram 2020-06-03 02:56:42 +02:00 committed by jshipsey
parent 72eb03ceb5
commit fe1656931c
6 changed files with 480 additions and 89 deletions

View File

@ -1,288 +1,544 @@
({
(Grolgar, Male): (
left_front: (
leg_lf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.male.leg_lf"),
),
leg_rf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.male.leg_rf"),
),
leg_lb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.male.leg_lb"),
),
leg_rb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.male.leg_rb"),
),
foot_lf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.male.foot_rb"),
),
),
(Grolgar, Female): (
left_front: (
leg_lf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.female.leg_lf"),
),
leg_rf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.female.leg_rf"),
),
leg_lb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.female.leg_lb"),
),
leg_rb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.female.leg_rb"),
),
foot_lf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-2.5, -4.0, -1.5),
lateral: ("npc.grolgar.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-2.5, -4.0, -3.0),
lateral: ("npc.grolgar.female.foot_rb"),
),
),
(Saber, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.male.foot_rb"),
),
),
(Saber, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.saber.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.saber.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.saber.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.saber.female.foot_rb"),
),
),
(Viper, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.male.foot_rb"),
),
),
(Viper, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.viper.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.viper.female.foot_rb"),
),
),
(Tuskram, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.male.foot_rb"),
),
),
(Tuskram, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -4.5),
lateral: ("npc.tuskram.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -4.0, -5.5),
lateral: ("npc.tuskram.female.foot_rb"),
),
),
(Alligator, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.male.foot_rb"),
),
),
(Alligator, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.alligator.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.alligator.female.foot_rb"),
),
),
(Monitor, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.male.foot_rb"),
),
),
(Monitor, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.monitor.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.monitor.female.foot_rb"),
),
),
(Lion, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.male.foot_rb"),
),
),
(Lion, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.lion.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.lion.female.foot_rb"),
),
),
(Tarasque, Male): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.male.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.male.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.male.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.male.foot_rb"),
),
),
(Tarasque, Female): (
left_front: (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.female.foot_lf"),
),
right_front: (
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tarasque.female.foot_rf"),
),
left_back: (
foot_lb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.female.foot_lb"),
),
right_back: (
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tarasque.female.foot_rb"),
),

View File

@ -18,6 +18,10 @@ pub struct QuadrupedMediumSkeleton {
torso_back: Bone,
torso_mid: Bone,
ears: Bone,
leg_lf: Bone,
leg_rf: Bone,
leg_lb: Bone,
leg_rb: Bone,
foot_lf: Bone,
foot_rf: Bone,
foot_lb: Bone,
@ -31,10 +35,7 @@ impl QuadrupedMediumSkeleton {
impl Skeleton for QuadrupedMediumSkeleton {
type Attr = SkeletonAttr;
#[cfg(feature = "use-dyn-lib")]
const COMPUTE_FN: &'static [u8] = b"quadruped_medium_compute_mats\0";
fn bone_count(&self) -> usize { 11 }
fn bone_count(&self) -> usize { 15 }
#[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_compute_mats")]
fn compute_matrices_inner(&self) -> ([FigureBoneData; 16], Vec3<f32>) {
@ -51,15 +52,15 @@ impl Skeleton for QuadrupedMediumSkeleton {
FigureBoneData::new(self.torso_back.compute_base_matrix()),
FigureBoneData::new(torso_mid_mat),
FigureBoneData::new(head_upper_mat * ears_mat),
FigureBoneData::new(self.leg_lf.compute_base_matrix()),
FigureBoneData::new(self.leg_rf.compute_base_matrix()),
FigureBoneData::new(self.leg_lb.compute_base_matrix()),
FigureBoneData::new(self.leg_rb.compute_base_matrix()),
FigureBoneData::new(self.foot_lf.compute_base_matrix()),
FigureBoneData::new(self.foot_rf.compute_base_matrix()),
FigureBoneData::new(self.foot_lb.compute_base_matrix()),
FigureBoneData::new(self.foot_rb.compute_base_matrix()),
FigureBoneData::default(),
FigureBoneData::default(),
FigureBoneData::default(),
FigureBoneData::default(),
FigureBoneData::default(),
],
Vec3::default(),
)
@ -73,6 +74,10 @@ impl Skeleton for QuadrupedMediumSkeleton {
self.torso_back.interpolate(&target.torso_back, dt);
self.torso_mid.interpolate(&target.torso_mid, dt);
self.ears.interpolate(&target.ears, dt);
self.leg_lf.interpolate(&target.leg_lf, dt);
self.leg_rf.interpolate(&target.leg_rf, dt);
self.leg_lb.interpolate(&target.leg_lb, dt);
self.leg_rb.interpolate(&target.leg_rb, dt);
self.foot_lf.interpolate(&target.foot_lf, dt);
self.foot_rf.interpolate(&target.foot_rf, dt);
self.foot_lb.interpolate(&target.foot_lb, dt);
@ -88,6 +93,8 @@ pub struct SkeletonAttr {
torso_back: (f32, f32),
torso_mid: (f32, f32),
ears: (f32, f32),
leg_f: (f32, f32, f32),
leg_b: (f32, f32, f32),
feet_f: (f32, f32, f32),
feet_b: (f32, f32, f32),
height: f32,
@ -114,6 +121,8 @@ impl Default for SkeletonAttr {
torso_back: (0.0, 0.0),
torso_mid: (0.0, 0.0),
ears: (0.0, 0.0),
leg_f: (0.0, 0.0, 0.0),
leg_b: (0.0, 0.0, 0.0),
feet_f: (0.0, 0.0, 0.0),
feet_b: (0.0, 0.0, 0.0),
height: (0.0),
@ -195,6 +204,26 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Lion, _) => (-2.0, 4.0),
(Tarasque, _) => (1.5, -2.0),
},
leg_f: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 6.0, 2.0),
(Saber, _) => (4.0, 6.0, 3.0),
(Viper, _) => (4.0, 6.0, 3.0),
(Tuskram, _) => (4.0, 6.0, 4.5),
(Alligator, _) => (4.0, 6.0, 3.0),
(Monitor, _) => (4.0, 6.0, 3.0),
(Lion, _) => (5.0, 6.0, 3.0),
(Tarasque, _) => (4.0, 6.0, 3.0),
},
leg_b: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, -4.0, 3.0),
(Saber, _) => (4.0, -6.0, 3.5),
(Viper, _) => (4.0, -4.0, 3.5),
(Tuskram, _) => (4.0, -8.0, 5.5),
(Alligator, _) => (4.0, -4.0, 3.5),
(Monitor, _) => (4.0, -6.0, 3.5),
(Lion, _) => (5.5, -8.0, 3.5),
(Tarasque, _) => (4.0, -8.0, 3.5),
},
feet_f: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 6.0, 2.0),
(Saber, _) => (4.0, 6.0, 3.0),

View File

@ -66,6 +66,7 @@ impl EventMapper for MovementEventMapper {
Body::Humanoid(_) => Self::map_movement_event(character, physics, state, vel.0),
Body::QuadrupedMedium(_)
| Body::QuadrupedSmall(_)
| Body::QuadrupedLow(_)
| Body::BirdMedium(_)
| Body::BirdSmall(_)
| Body::BipedLarge(_) => Self::map_non_humanoid_movement_event(physics, vel.0),
@ -190,6 +191,7 @@ impl MovementEventMapper {
Body::Humanoid(_) => 0.9,
Body::QuadrupedSmall(_) => 0.3,
Body::QuadrupedMedium(_) => 0.7,
Body::QuadrupedLow(_) => 0.7,
Body::BirdMedium(_) => 0.3,
Body::BirdSmall(_) => 0.2,
Body::BipedLarge(_) => 1.0,

View File

@ -295,6 +295,26 @@ impl<Skel: Skeleton> FigureModelCache<Skel> {
body.body_type,
generate_mesh,
)),
Some(quadruped_medium_lateral_spec.mesh_leg_lf(
body.species,
body.body_type,
generate_mesh,
)),
Some(quadruped_medium_lateral_spec.mesh_leg_rf(
body.species,
body.body_type,
generate_mesh,
)),
Some(quadruped_medium_lateral_spec.mesh_leg_lb(
body.species,
body.body_type,
generate_mesh,
)),
Some(quadruped_medium_lateral_spec.mesh_leg_rb(
body.species,
body.body_type,
generate_mesh,
)),
Some(quadruped_medium_lateral_spec.mesh_foot_lf(
body.species,
body.body_type,
@ -316,10 +336,6 @@ impl<Skel: Skeleton> FigureModelCache<Skel> {
generate_mesh,
)),
None,
None,
None,
None,
None,
]
},
Body::BirdMedium(body) => {

View File

@ -1231,10 +1231,14 @@ struct QuadrupedMediumCentralSubSpec {
pub struct QuadrupedMediumLateralSpec(HashMap<(QMSpecies, QMBodyType), SidedQMLateralVoxSpec>);
#[derive(Serialize, Deserialize)]
struct SidedQMLateralVoxSpec {
left_front: QuadrupedMediumLateralSubSpec,
right_front: QuadrupedMediumLateralSubSpec,
left_back: QuadrupedMediumLateralSubSpec,
right_back: QuadrupedMediumLateralSubSpec,
leg_lf: QuadrupedMediumLateralSubSpec,
leg_rf: QuadrupedMediumLateralSubSpec,
leg_lb: QuadrupedMediumLateralSubSpec,
leg_rb: QuadrupedMediumLateralSubSpec,
foot_lf: QuadrupedMediumLateralSubSpec,
foot_rf: QuadrupedMediumLateralSubSpec,
foot_lb: QuadrupedMediumLateralSubSpec,
foot_rb: QuadrupedMediumLateralSubSpec,
}
#[derive(Serialize, Deserialize)]
struct QuadrupedMediumLateralSubSpec {
@ -1434,9 +1438,9 @@ impl QuadrupedMediumLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.left_front.lateral.0);
let lateral = graceful_load_segment(&spec.foot_lf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.left_front.offset))
generate_mesh(&lateral, Vec3::from(spec.foot_lf.offset))
}
pub fn mesh_foot_rf(
@ -1455,9 +1459,9 @@ impl QuadrupedMediumLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.right_front.lateral.0);
let lateral = graceful_load_segment(&spec.foot_rf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.right_front.offset))
generate_mesh(&lateral, Vec3::from(spec.foot_rf.offset))
}
pub fn mesh_foot_lb(
@ -1476,9 +1480,9 @@ impl QuadrupedMediumLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.left_back.lateral.0);
let lateral = graceful_load_segment(&spec.foot_lb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.left_back.offset))
generate_mesh(&lateral, Vec3::from(spec.foot_lb.offset))
}
pub fn mesh_foot_rb(
@ -1497,9 +1501,93 @@ impl QuadrupedMediumLateralSpec {
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.right_back.lateral.0);
let lateral = graceful_load_segment(&spec.foot_rb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.right_back.offset))
generate_mesh(&lateral, Vec3::from(spec.foot_rb.offset))
}
pub fn mesh_leg_lf(
&self,
species: QMSpecies,
body_type: QMBodyType,
generate_mesh: impl FnOnce(&Segment, Vec3<f32>) -> Mesh<FigurePipeline>,
) -> Mesh<FigurePipeline> {
let spec = match self.0.get(&(species, body_type)) {
Some(spec) => spec,
None => {
error!(
"No leg specification exists for the combination of {:?} and {:?}",
species, body_type
);
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.leg_lf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.leg_lf.offset))
}
pub fn mesh_leg_rf(
&self,
species: QMSpecies,
body_type: QMBodyType,
generate_mesh: impl FnOnce(&Segment, Vec3<f32>) -> Mesh<FigurePipeline>,
) -> Mesh<FigurePipeline> {
let spec = match self.0.get(&(species, body_type)) {
Some(spec) => spec,
None => {
error!(
"No leg specification exists for the combination of {:?} and {:?}",
species, body_type
);
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.leg_rf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.leg_rf.offset))
}
pub fn mesh_leg_lb(
&self,
species: QMSpecies,
body_type: QMBodyType,
generate_mesh: impl FnOnce(&Segment, Vec3<f32>) -> Mesh<FigurePipeline>,
) -> Mesh<FigurePipeline> {
let spec = match self.0.get(&(species, body_type)) {
Some(spec) => spec,
None => {
error!(
"No leg specification exists for the combination of {:?} and {:?}",
species, body_type
);
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.leg_lb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.leg_lb.offset))
}
pub fn mesh_leg_rb(
&self,
species: QMSpecies,
body_type: QMBodyType,
generate_mesh: impl FnOnce(&Segment, Vec3<f32>) -> Mesh<FigurePipeline>,
) -> Mesh<FigurePipeline> {
let spec = match self.0.get(&(species, body_type)) {
Some(spec) => spec,
None => {
error!(
"No foot specification exists for the combination of {:?} and {:?}",
species, body_type
);
return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5), generate_mesh);
},
};
let lateral = graceful_load_segment(&spec.leg_rb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.leg_rb.offset))
}
}

View File

@ -394,7 +394,7 @@ impl FigureMgr {
.quadruped_medium_states
.get(&entity)
.map(|state| state.lpindex),
Body::QuadrupedLow(_) => self
Body::QuadrupedLow(_) => self
.quadruped_low_states
.get(&entity)
.map(|state| state.lpindex),