Add tiger mob

This commit is contained in:
Snowram
2020-06-11 00:29:16 +02:00
committed by jshipsey
parent 5e2aa81aba
commit 12ca502a1d
37 changed files with 289 additions and 86 deletions

View File

@ -262,6 +262,10 @@
"tarasque": { "tarasque": {
"keyword": "tarasque", "keyword": "tarasque",
"generic": "Tarasque" "generic": "Tarasque"
},
"tiger": {
"keyword": "tiger",
"generic": "Tiger"
} }
} }
}, },

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -300,4 +300,64 @@
central: ("npc.tarasque.male.tail"), central: ("npc.tarasque.male.tail"),
), ),
), ),
(Tiger, Male): (
upper: (
offset: (-4.0, -5.5, -6.5),
central: ("npc.tiger.male.head_upper"),
),
lower: (
offset: (-4.0, -5.5, -4.0),
central: ("npc.tiger.male.head_lower"),
),
jaw: (
offset: (-2.0, -2.5, -1.0),
central: ("npc.tiger.male.jaw"),
),
torso_f: (
offset: (-6.0, -6.0, -5.5),
central: ("npc.tiger.male.torso_front"),
),
torso_b: (
offset: (-6.0, -6.0, -5.0),
central: ("npc.tiger.male.torso_back"),
),
ears: (
offset: (-5.0, -0.5, -1.5),
central: ("npc.tiger.male.ears"),
),
tail: (
offset: (-1.0, -3.0, -4.0),
central: ("npc.tiger.male.tail"),
),
),
(Tiger, Female): (
upper: (
offset: (-4.0, -5.5, -6.5),
central: ("npc.tiger.female.head_upper"),
),
lower: (
offset: (-4.0, -5.5, -4.0),
central: ("npc.tiger.female.head_lower"),
),
jaw: (
offset: (-2.0, -2.5, -1.0),
central: ("npc.tiger.female.jaw"),
),
torso_f: (
offset: (-6.0, -6.0, -5.5),
central: ("npc.tiger.female.torso_front"),
),
torso_b: (
offset: (-6.0, -6.0, -5.0),
central: ("npc.tiger.female.torso_back"),
),
ears: (
offset: (-5.0, -0.5, -1.5),
central: ("npc.tiger.female.ears"),
),
tail: (
offset: (-1.0, -3.0, -4.0),
central: ("npc.tiger.female.tail"),
),
),
}) })

View File

@ -339,4 +339,72 @@
lateral: ("npc.tarasque.female.foot_rb"), lateral: ("npc.tarasque.female.foot_rb"),
), ),
), ),
(Tiger, Male): (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.male.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.male.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.male.leg_lb"),
),
leg_rb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.male.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.male.foot_lf"),
),
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.male.foot_rf"),
),
foot_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.male.foot_lb"),
),
foot_rb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.male.foot_rb"),
),
),
(Tiger, Female): (
leg_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.female.leg_lf"),
),
leg_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.female.leg_rf"),
),
leg_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.female.leg_lb"),
),
leg_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tiger.female.leg_rb"),
),
foot_lf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.female.foot_lf"),
),
foot_rf: (
offset: (-1.5, -1.5, -2.5),
lateral: ("npc.tiger.female.foot_rf"),
),
foot_lb: (
offset: (-1.5, -4.0, -3.5),
lateral: ("npc.tiger.female.foot_lb"),
),
foot_rb: (
offset: (-1.5, -2.0, -3.5),
lateral: ("npc.tiger.female.foot_rb"),
),
),
}) })

View File

@ -29,6 +29,7 @@ impl From<Body> for super::Body {
pub enum Species { pub enum Species {
Grolgar = 0, Grolgar = 0,
Saber = 1, Saber = 1,
Tiger = 2,
Tuskram = 3, Tuskram = 3,
Lion = 6, Lion = 6,
Tarasque = 7, Tarasque = 7,
@ -41,6 +42,7 @@ pub enum Species {
pub struct AllSpecies<SpeciesMeta> { pub struct AllSpecies<SpeciesMeta> {
pub grolgar: SpeciesMeta, pub grolgar: SpeciesMeta,
pub saber: SpeciesMeta, pub saber: SpeciesMeta,
pub tiger: SpeciesMeta,
pub tuskram: SpeciesMeta, pub tuskram: SpeciesMeta,
pub lion: SpeciesMeta, pub lion: SpeciesMeta,
pub tarasque: SpeciesMeta, pub tarasque: SpeciesMeta,
@ -54,6 +56,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
match index { match index {
Species::Grolgar => &self.grolgar, Species::Grolgar => &self.grolgar,
Species::Saber => &self.saber, Species::Saber => &self.saber,
Species::Tiger => &self.tiger,
Species::Tuskram => &self.tuskram, Species::Tuskram => &self.tuskram,
Species::Lion => &self.lion, Species::Lion => &self.lion,
Species::Tarasque => &self.tarasque, Species::Tarasque => &self.tarasque,
@ -61,9 +64,10 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
} }
} }
pub const ALL_SPECIES: [Species; 5] = [ pub const ALL_SPECIES: [Species; 6] = [
Species::Grolgar, Species::Grolgar,
Species::Saber, Species::Saber,
Species::Tiger,
Species::Tuskram, Species::Tuskram,
Species::Lion, Species::Lion,
Species::Tarasque, Species::Tarasque,

View File

@ -28,6 +28,60 @@ pub struct QuadrupedMediumSkeleton {
foot_rb: Bone, foot_rb: Bone,
} }
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const HEAD_UPPER_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const HEAD_UPPER_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const HEAD_LOWER_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const HEAD_LOWER_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const JAW_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const JAW_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TAIL_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TAIL_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TORSO_BACK_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TORSO_BACK_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TORSO_MID_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const TORSO_MID_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const EARS_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const EARS_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_FRONT_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_FRONT_Y: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_FRONT_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_BACK_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_BACK_Y: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const LEG_BACK_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_FRONT_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_FRONT_Y: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_FRONT_Z: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_BACK_X: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_BACK_Y: f32 = 0.0;
#[const_tweaker::tweak(min = -20.0, max = 20.0, step = 0.5)]
const FEET_BACK_Z: f32 = 0.0;
impl QuadrupedMediumSkeleton { impl QuadrupedMediumSkeleton {
pub fn new() -> Self { Self::default() } pub fn new() -> Self { Self::default() }
} }
@ -140,6 +194,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (9.0, 12.0), (Tuskram, _) => (9.0, 12.0),
(Lion, _) => (12.5, 14.0), (Lion, _) => (12.5, 14.0),
(Tarasque, _) => (12.0, 19.0), (Tarasque, _) => (12.0, 19.0),
(Tiger, _) => (*HEAD_UPPER_X, *HEAD_UPPER_Z),
}, },
head_lower: match (body.species, body.body_type) { head_lower: match (body.species, body.body_type) {
(Grolgar, _) => (-4.0, -7.0), (Grolgar, _) => (-4.0, -7.0),
@ -147,6 +202,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (-3.0, -1.0), (Tuskram, _) => (-3.0, -1.0),
(Lion, _) => (-5.0, -1.0), (Lion, _) => (-5.0, -1.0),
(Tarasque, _) => (-5.0, -6.0), (Tarasque, _) => (-5.0, -6.0),
(Tiger, _) => (*HEAD_LOWER_X, *HEAD_LOWER_Z),
}, },
jaw: match (body.species, body.body_type) { jaw: match (body.species, body.body_type) {
(Grolgar, _) => (3.0, -5.0), (Grolgar, _) => (3.0, -5.0),
@ -154,6 +210,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (2.0, -2.0), (Tuskram, _) => (2.0, -2.0),
(Lion, _) => (2.0, -3.0), (Lion, _) => (2.0, -3.0),
(Tarasque, _) => (4.0, -9.0), (Tarasque, _) => (4.0, -9.0),
(Tiger, _) => (*JAW_X, *JAW_Z),
}, },
tail: match (body.species, body.body_type) { tail: match (body.species, body.body_type) {
(Grolgar, _) => (-6.0, -2.0), (Grolgar, _) => (-6.0, -2.0),
@ -161,6 +218,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (-6.0, -2.0), (Tuskram, _) => (-6.0, -2.0),
(Lion, _) => (-8.0, -6.0), (Lion, _) => (-8.0, -6.0),
(Tarasque, _) => (-7.0, -2.0), (Tarasque, _) => (-7.0, -2.0),
(Tiger, _) => (*TAIL_X, *TAIL_Z),
}, },
torso_back: match (body.species, body.body_type) { torso_back: match (body.species, body.body_type) {
(Grolgar, _) => (4.0, 11.0), (Grolgar, _) => (4.0, 11.0),
@ -168,6 +226,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (4.0, 9.0), (Tuskram, _) => (4.0, 9.0),
(Lion, _) => (4.0, 10.0), (Lion, _) => (4.0, 10.0),
(Tarasque, _) => (4.0, 9.0), (Tarasque, _) => (4.0, 9.0),
(Tiger, _) => (*TORSO_BACK_X, *TORSO_BACK_Z),
}, },
torso_mid: match (body.species, body.body_type) { torso_mid: match (body.species, body.body_type) {
(Grolgar, _) => (-7.0, 10.5), (Grolgar, _) => (-7.0, 10.5),
@ -175,6 +234,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (-7.0, 9.0), (Tuskram, _) => (-7.0, 9.0),
(Lion, _) => (-9.0, 9.0), (Lion, _) => (-9.0, 9.0),
(Tarasque, _) => (-7.0, 8.0), (Tarasque, _) => (-7.0, 8.0),
(Tiger, _) => (*TORSO_MID_X, *TORSO_MID_Z),
}, },
ears: match (body.species, body.body_type) { ears: match (body.species, body.body_type) {
(Grolgar, _) => (-1.0, 5.0), (Grolgar, _) => (-1.0, 5.0),
@ -182,6 +242,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (10.0, 2.0), (Tuskram, _) => (10.0, 2.0),
(Lion, _) => (-2.0, 4.0), (Lion, _) => (-2.0, 4.0),
(Tarasque, _) => (1.5, -2.0), (Tarasque, _) => (1.5, -2.0),
(Tiger, _) => (*EARS_X, *EARS_Z),
}, },
leg_f: match (body.species, body.body_type) { leg_f: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 6.0, 2.0), (Grolgar, _) => (5.0, 6.0, 2.0),
@ -189,6 +250,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (4.0, 6.0, 4.5), (Tuskram, _) => (4.0, 6.0, 4.5),
(Lion, _) => (5.0, 6.0, 3.0), (Lion, _) => (5.0, 6.0, 3.0),
(Tarasque, _) => (4.0, 6.0, 3.0), (Tarasque, _) => (4.0, 6.0, 3.0),
(Tiger, _) => (*LEG_FRONT_X, *LEG_FRONT_Y, *LEG_FRONT_Z),
}, },
leg_b: match (body.species, body.body_type) { leg_b: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, -4.0, 3.0), (Grolgar, _) => (5.0, -4.0, 3.0),
@ -196,6 +258,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (4.0, -8.0, 5.5), (Tuskram, _) => (4.0, -8.0, 5.5),
(Lion, _) => (5.5, -8.0, 3.5), (Lion, _) => (5.5, -8.0, 3.5),
(Tarasque, _) => (4.0, -8.0, 3.5), (Tarasque, _) => (4.0, -8.0, 3.5),
(Tiger, _) => (*LEG_BACK_X, *LEG_BACK_Y, *LEG_BACK_Z),
}, },
feet_f: match (body.species, body.body_type) { feet_f: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, 6.0, 2.0), (Grolgar, _) => (5.0, 6.0, 2.0),
@ -203,6 +266,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (4.0, 6.0, 4.5), (Tuskram, _) => (4.0, 6.0, 4.5),
(Lion, _) => (5.0, 6.0, 3.0), (Lion, _) => (5.0, 6.0, 3.0),
(Tarasque, _) => (4.0, 6.0, 3.0), (Tarasque, _) => (4.0, 6.0, 3.0),
(Tiger, _) => (*FEET_FRONT_X, *FEET_FRONT_Y, *FEET_FRONT_Z),
}, },
feet_b: match (body.species, body.body_type) { feet_b: match (body.species, body.body_type) {
(Grolgar, _) => (5.0, -4.0, 3.0), (Grolgar, _) => (5.0, -4.0, 3.0),
@ -210,6 +274,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (4.0, -8.0, 5.5), (Tuskram, _) => (4.0, -8.0, 5.5),
(Lion, _) => (5.5, -8.0, 3.5), (Lion, _) => (5.5, -8.0, 3.5),
(Tarasque, _) => (4.0, -8.0, 3.5), (Tarasque, _) => (4.0, -8.0, 3.5),
(Tiger, _) => (*FEET_BACK_X, *FEET_BACK_Y, *FEET_BACK_Z),
}, },
height: match (body.species, body.body_type) { height: match (body.species, body.body_type) {
(Grolgar, _) => (1.2), (Grolgar, _) => (1.2),
@ -217,6 +282,7 @@ impl<'a> From<&'a comp::quadruped_medium::Body> for SkeletonAttr {
(Tuskram, _) => (1.0), (Tuskram, _) => (1.0),
(Lion, _) => (1.4), (Lion, _) => (1.4),
(Tarasque, _) => (1.1), (Tarasque, _) => (1.1),
(Tiger, _) => (1.0),
}, },
} }
} }

View File

@ -1422,90 +1422,6 @@ impl QuadrupedMediumLateralSpec {
.unwrap() .unwrap()
} }
pub fn mesh_foot_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 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.foot_lf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_lf.offset))
}
pub fn mesh_foot_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 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.foot_rf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_rf.offset))
}
pub fn mesh_foot_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 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.foot_lb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_lb.offset))
}
pub fn mesh_foot_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.foot_rb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_rb.offset))
}
pub fn mesh_leg_lf( pub fn mesh_leg_lf(
&self, &self,
species: QMSpecies, species: QMSpecies,
@ -1589,6 +1505,90 @@ impl QuadrupedMediumLateralSpec {
generate_mesh(&lateral, Vec3::from(spec.leg_rb.offset)) generate_mesh(&lateral, Vec3::from(spec.leg_rb.offset))
} }
pub fn mesh_foot_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 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.foot_lf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_lf.offset))
}
pub fn mesh_foot_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 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.foot_rf.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_rf.offset))
}
pub fn mesh_foot_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 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.foot_lb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_lb.offset))
}
pub fn mesh_foot_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.foot_rb.lateral.0);
generate_mesh(&lateral, Vec3::from(spec.foot_rb.offset))
}
} }
//// ////

View File

@ -936,7 +936,7 @@ impl FigureMgr {
is_player, is_player,
); );
}, },
Body::QuadrupedMedium(_) => { Body::QuadrupedMedium(quadruped_body) => {
let skeleton_attr = &self let skeleton_attr = &self
.quadruped_medium_model_cache .quadruped_medium_model_cache
.get_or_create_model( .get_or_create_model(
@ -948,6 +948,7 @@ impl FigureMgr {
None, None,
) )
.1; .1;
let ref skeleton_attr = quadruped_body.into();
let state = self let state = self
.quadruped_medium_states .quadruped_medium_states