From bd1984bf28ca01706bb805501f87816050be80a4 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 23 Aug 2020 03:39:18 -0400 Subject: [PATCH 01/28] golem addition, fix for axe attack --- common/src/comp/body/theropod.rs | 73 +++++++++++++ voxygen/src/anim/Cargo.toml | 2 +- voxygen/src/anim/src/character/alpha.rs | 66 ++++++------ voxygen/src/anim/src/golem/alpha.rs | 132 ++++++++++++++++++++++++ voxygen/src/anim/src/golem/idle.rs | 42 +++++--- voxygen/src/anim/src/golem/mod.rs | 45 +++++--- voxygen/src/anim/src/golem/run.rs | 103 +++++++++++------- voxygen/src/scene/figure/cache.rs | 7 -- voxygen/src/scene/figure/load.rs | 22 ++++ voxygen/src/scene/figure/mod.rs | 16 ++- 10 files changed, 392 insertions(+), 116 deletions(-) create mode 100644 common/src/comp/body/theropod.rs create mode 100644 voxygen/src/anim/src/golem/alpha.rs diff --git a/common/src/comp/body/theropod.rs b/common/src/comp/body/theropod.rs new file mode 100644 index 0000000000..cee07dd02d --- /dev/null +++ b/common/src/comp/body/theropod.rs @@ -0,0 +1,73 @@ +use rand::{seq::SliceRandom, thread_rng}; +use serde::{Deserialize, Serialize}; + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub struct Body { + pub species: Species, + pub body_type: BodyType, +} + +impl Body { + pub fn random() -> Self { + let mut rng = thread_rng(); + let species = *(&ALL_SPECIES).choose(&mut rng).unwrap(); + Self::random_with(&mut rng, &species) + } + + #[inline] + pub fn random_with(rng: &mut impl rand::Rng, &species: &Species) -> Self { + let body_type = *(&ALL_BODY_TYPES).choose(rng).unwrap(); + Self { species, body_type } + } +} + +impl From for super::Body { + fn from(body: Body) -> Self { super::Body::Critter(body) } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[repr(u32)] +pub enum Species { + Archaeos = 0, + Odontotyrannos = 1, + +} + +/// Data representing per-species generic data. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct AllSpecies { + pub archaeos: SpeciesMeta, + pub odontotyrannos: SpeciesMeta, +} + +impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { + type Output = SpeciesMeta; + + #[inline] + fn index(&self, &index: &'a Species) -> &Self::Output { + match index { + Species::Archaeos => &self.archaeos, + Species::Odontotyrannos => &self.odontotyrannos, + } + } +} + +pub const ALL_SPECIES: [Species; 2] = [ + Species::Archaeos, + Species::Odontotyrannos, +]; + +impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { + type IntoIter = std::iter::Copied>; + type Item = Species; + + fn into_iter(self) -> Self::IntoIter { ALL_SPECIES.iter().copied() } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[repr(u32)] +pub enum BodyType { + Female = 0, + Male = 1, +} +pub const ALL_BODY_TYPES: [BodyType; 2] = [BodyType::Female, BodyType::Male]; diff --git a/voxygen/src/anim/Cargo.toml b/voxygen/src/anim/Cargo.toml index 75bb0ecbe3..10869c6cc3 100644 --- a/voxygen/src/anim/Cargo.toml +++ b/voxygen/src/anim/Cargo.toml @@ -8,7 +8,7 @@ version = "0.7.0" name = "voxygen_anim" # Uncomment to use animation hot reloading # Note: this breaks `cargo test` -# crate-type = ["lib", "cdylib"] +crate-type = ["lib", "cdylib"] [features] be-dyn-lib = [] diff --git a/voxygen/src/anim/src/character/alpha.rs b/voxygen/src/anim/src/character/alpha.rs index 697c369581..cf04b1309f 100644 --- a/voxygen/src/anim/src/character/alpha.rs +++ b/voxygen/src/anim/src/character/alpha.rs @@ -48,14 +48,14 @@ impl Animation for AlphaAnimation { / (0.4 + 4.6 * ((anim_time as f32 * lab as f32 * 18.0).sin()).powf(2.0 as f32))) .sqrt()) * ((anim_time as f32 * lab as f32 * 18.0).sin()); + let axe = (((1.0) + / (0.05 + 0.95 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 8.0).sin()); let slower = (((1.0) / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powf(2.0 as f32))) .sqrt()) * ((anim_time as f32 * lab as f32 * 4.0).sin()); - let slowax = (((5.0) - / (0.1 + 4.9 * ((anim_time as f32 * lab as f32 * 4.0 + 1.9).cos()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * lab as f32 * 4.0 + 1.9).cos()); match active_tool_kind { //TODO: Inventory @@ -216,51 +216,45 @@ impl Animation for AlphaAnimation { next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, Some(ToolKind::Axe(_)) => { - next.head.position = Vec3::new( - 0.0 + slowax * 2.0, - 0.0 + skeleton_attr.head.0 + slowax * -2.0, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(slowax * 0.25) - * Quaternion::rotation_x(0.0 + slowax * 0.2) - * Quaternion::rotation_y(slowax * 0.2); + next.head.position = + Vec3::new(0.0, 0.0 + skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_z(0.1 + axe * 0.2) + * Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(0.2); next.head.scale = Vec3::one() * skeleton_attr.head_scale; next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(slowax * 0.2) - * Quaternion::rotation_x(0.0 + slowax * 0.2) - * Quaternion::rotation_y(slowax * 0.2); + next.chest.orientation = Quaternion::rotation_z(0.2 + axe * 0.2); next.chest.scale = Vec3::one(); next.belt.position = Vec3::new(0.0, 0.0, -2.0); - next.belt.orientation = next.chest.orientation * -0.2; + next.belt.orientation = Quaternion::rotation_z(0.2 + axe * -0.1); next.shorts.position = Vec3::new(0.0, 0.0, -5.0); - next.shorts.orientation = next.chest.orientation * -0.15; + next.shorts.orientation = Quaternion::rotation_z(0.2 + axe * -0.2); - next.l_hand.position = Vec3::new(-4.0, 3.0, 2.0); - next.l_hand.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_z(3.14 - 0.3) - * Quaternion::rotation_y(-0.8); + next.l_hand.position = Vec3::new(-0.5, 0.0, 4.0); + next.l_hand.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_z(0.0) + * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.08; - next.r_hand.position = Vec3::new(-2.5, 9.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_z(3.14 - 0.3) - * Quaternion::rotation_y(-0.8); + next.r_hand.position = Vec3::new(0.5, 0.0, -2.5); + next.r_hand.orientation = Quaternion::rotation_x(PI / 2.0) + * Quaternion::rotation_z(0.0) + * Quaternion::rotation_y(0.0); next.r_hand.scale = Vec3::one() * 1.06; - next.main.position = Vec3::new(-6.0, 10.0, -5.0); - next.main.orientation = Quaternion::rotation_x(1.27) - * Quaternion::rotation_y(-0.3) - * Quaternion::rotation_z(-0.8); + next.main.position = Vec3::new(-0.0, -2.0, -1.0); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); - next.lantern.orientation = Quaternion::rotation_x(slowax * -0.7 + 0.4) - * Quaternion::rotation_y(slowax * 0.4); + next.control.position = Vec3::new(2.0 + axe * -7.0, 11.0, 3.0); + next.control.orientation = Quaternion::rotation_x(1.6) + * Quaternion::rotation_y(-2.0 + axe * 0.5) + * Quaternion::rotation_z(PI * 0.4); + next.lantern.orientation = + Quaternion::rotation_x(0.4) * Quaternion::rotation_y(0.0); - next.control.position = Vec3::new(0.0, 0.0 + slowax * 8.2, 6.0); - next.control.orientation = Quaternion::rotation_x(0.8) - * Quaternion::rotation_y(-0.3) - * Quaternion::rotation_z(-0.7 + slowax * -1.9); - next.control.scale = Vec3::one(); next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0) diff --git a/voxygen/src/anim/src/golem/alpha.rs b/voxygen/src/anim/src/golem/alpha.rs new file mode 100644 index 0000000000..d4bfbde173 --- /dev/null +++ b/voxygen/src/anim/src/golem/alpha.rs @@ -0,0 +1,132 @@ +use super::{ + super::{vek::*, Animation}, + GolemSkeleton, SkeletonAttr, +}; +use std::f32::consts::PI; + +pub struct AlphaAnimation; + +impl Animation for AlphaAnimation { + type Dependency = (f32, f64); + type Skeleton = GolemSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"golem_alpha\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "golem_alpha")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, _global_time): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let lab = 1.0; + + let slower = (((1.0) + / (0.05 + + 0.95 + * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 8.0 - 0.5 * PI).sin()) + + 1.0; + let twist = (anim_time as f32 * lab as f32 * 4.0).sin() + 0.5; + + let slowersmooth = (anim_time as f32 * lab as f32 * 8.0).sin(); + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; + next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.head.scale = Vec3::one() * 1.02; + + next.upper_torso.position = Vec3::new( + 0.0, + skeleton_attr.upper_torso.0, + skeleton_attr.upper_torso.1, + ) / 8.0; + next.upper_torso.orientation = + Quaternion::rotation_z(twist * 1.5) * Quaternion::rotation_x(0.0); + next.upper_torso.scale = Vec3::one() / 8.0; + + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1, + ); + next.lower_torso.orientation = + Quaternion::rotation_z(twist * -1.5) * Quaternion::rotation_x(0.0); + next.lower_torso.scale = Vec3::one(); + + next.shoulder_l.position = Vec3::new( + -skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.shoulder_l.scale = Vec3::one(); + + next.shoulder_r.position = Vec3::new( + skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.9); + next.shoulder_r.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.hand_l.scale = Vec3::one() * 1.02; + + next.hand_r.position = Vec3::new( + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 1.5); + next.hand_r.scale = Vec3::one() * 1.02; + /* + next.leg_l.position = Vec3::new( + -skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, + ) * 1.02; + next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_l.scale = Vec3::one() * 1.02; + + next.leg_r.position = Vec3::new( + skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, + ) * 1.02; + next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_r.scale = Vec3::one() * 1.02; + + next.foot_l.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, + ); + next.foot_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.foot_l.scale = Vec3::one(); + + next.foot_r.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, + ); + next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.foot_r.scale = Vec3::one(); + */ + next.torso.position = Vec3::new(0.0, 0.0, 0.0); + next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.torso.scale = Vec3::one(); + next + } +} diff --git a/voxygen/src/anim/src/golem/idle.rs b/voxygen/src/anim/src/golem/idle.rs index da453d4629..c6c2d485b5 100644 --- a/voxygen/src/anim/src/golem/idle.rs +++ b/voxygen/src/anim/src/golem/idle.rs @@ -25,7 +25,7 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let lab = 1.0; - let torso = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let breathe = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); let look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) @@ -43,7 +43,7 @@ impl Animation for IdleAnimation { next.head.position = Vec3::new( 0.0, skeleton_attr.head.0, - skeleton_attr.head.1 + torso * 0.2, + skeleton_attr.head.1 + breathe * 0.2, ) * 1.02; next.head.orientation = Quaternion::rotation_z(look.x * 0.6) * Quaternion::rotation_x(look.y * 0.6); @@ -52,17 +52,25 @@ impl Animation for IdleAnimation { next.upper_torso.position = Vec3::new( 0.0, skeleton_attr.upper_torso.0, - skeleton_attr.upper_torso.1 + torso * 0.5, + skeleton_attr.upper_torso.1 + breathe * 0.5, ) / 8.0; next.upper_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.upper_torso.scale = Vec3::one() / 8.0; + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1 + breathe * -0.2, + ); + next.lower_torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.lower_torso.scale = Vec3::one(); + next.shoulder_l.position = Vec3::new( -skeleton_attr.shoulder.0, skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); next.shoulder_l.scale = Vec3::one(); next.shoulder_r.position = Vec3::new( @@ -70,29 +78,29 @@ impl Animation for IdleAnimation { skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.shoulder_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); next.shoulder_r.scale = Vec3::one(); next.hand_l.position = Vec3::new( -skeleton_attr.hand.0, skeleton_attr.hand.1, - skeleton_attr.hand.2 + torso * 0.6, + skeleton_attr.hand.2 + breathe * 0.6, ); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); next.hand_l.scale = Vec3::one() * 1.02; next.hand_r.position = Vec3::new( skeleton_attr.hand.0, skeleton_attr.hand.1, - skeleton_attr.hand.2 + torso * 0.6, + skeleton_attr.hand.2 + breathe * 0.6, ); - next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.2); next.hand_r.scale = Vec3::one() * 1.02; next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2 + breathe * -0.2, ) * 1.02; next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.leg_l.scale = Vec3::one() * 1.02; @@ -100,7 +108,7 @@ impl Animation for IdleAnimation { next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2 + breathe * -0.2, ) * 1.02; next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.leg_r.scale = Vec3::one() * 1.02; @@ -108,18 +116,18 @@ impl Animation for IdleAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, - ) / 8.0; + skeleton_attr.foot.2 + breathe * -0.2, + ); next.foot_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.foot_l.scale = Vec3::one() / 8.0; + next.foot_l.scale = Vec3::one(); next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, - ) / 8.0; + skeleton_attr.foot.2 + breathe * -0.2, + ); next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.foot_r.scale = Vec3::one() / 8.0; + next.foot_r.scale = Vec3::one(); next.torso.position = Vec3::new(0.0, 0.0, 0.0); next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); diff --git a/voxygen/src/anim/src/golem/mod.rs b/voxygen/src/anim/src/golem/mod.rs index 8a39b74dec..5d5079f721 100644 --- a/voxygen/src/anim/src/golem/mod.rs +++ b/voxygen/src/anim/src/golem/mod.rs @@ -1,9 +1,12 @@ +pub mod alpha; pub mod idle; pub mod jump; pub mod run; // Reexports -pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; +pub use self::{ + alpha::AlphaAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, +}; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; use common::comp::{self}; @@ -14,6 +17,7 @@ pub type Body = comp::golem::Body; skeleton_impls!(struct GolemSkeleton { + head, + upper_torso, + + lower_torso, + shoulder_l, + shoulder_r, + hand_l, @@ -29,7 +33,7 @@ impl Skeleton for GolemSkeleton { type Attr = SkeletonAttr; type Body = Body; - const BONE_COUNT: usize = 10; + const BONE_COUNT: usize = 11; #[cfg(feature = "use-dyn-lib")] const COMPUTE_FN: &'static [u8] = b"golem_compute_mats\0"; @@ -40,21 +44,25 @@ impl Skeleton for GolemSkeleton { buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], ) -> Vec3 { let torso_mat = base_mat * Mat4::::from(self.torso); - let foot_l_mat = base_mat * Mat4::::from(self.foot_l); - let foot_r_mat = base_mat * Mat4::::from(self.foot_r); let upper_torso_mat = torso_mat * Mat4::::from(self.upper_torso); + let lower_torso_mat = upper_torso_mat * Mat4::::from(self.lower_torso); + let leg_l_mat = lower_torso_mat * Mat4::::from(self.leg_l); + let leg_r_mat = lower_torso_mat * Mat4::::from(self.leg_r); + let shoulder_l_mat = upper_torso_mat * Mat4::::from(self.shoulder_l); + let shoulder_r_mat = upper_torso_mat * Mat4::::from(self.shoulder_r); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(upper_torso_mat * Mat4::::from(self.head)), make_bone(upper_torso_mat), + make_bone(lower_torso_mat), make_bone(upper_torso_mat * Mat4::::from(self.shoulder_l)), make_bone(upper_torso_mat * Mat4::::from(self.shoulder_r)), - make_bone(upper_torso_mat * Mat4::::from(self.hand_l)), - make_bone(upper_torso_mat * Mat4::::from(self.hand_r)), - make_bone(foot_l_mat * Mat4::::from(self.leg_l)), - make_bone(foot_r_mat * Mat4::::from(self.leg_r)), - make_bone(foot_l_mat), - make_bone(foot_r_mat), + make_bone(shoulder_l_mat * Mat4::::from(self.hand_l)), + make_bone(shoulder_r_mat * Mat4::::from(self.hand_r)), + make_bone(leg_l_mat), + make_bone(leg_r_mat), + make_bone(leg_l_mat * Mat4::::from(self.foot_l)), + make_bone(leg_r_mat * Mat4::::from(self.foot_r)), ]; Vec3::default() } @@ -63,6 +71,7 @@ impl Skeleton for GolemSkeleton { pub struct SkeletonAttr { head: (f32, f32), upper_torso: (f32, f32), + lower_torso: (f32, f32), shoulder: (f32, f32, f32), hand: (f32, f32, f32), leg: (f32, f32, f32), @@ -85,6 +94,7 @@ impl Default for SkeletonAttr { Self { head: (0.0, 0.0), upper_torso: (0.0, 0.0), + lower_torso: (0.0, 0.0), shoulder: (0.0, 0.0, 0.0), hand: (0.0, 0.0, 0.0), leg: (0.0, 0.0, 0.0), @@ -98,22 +108,25 @@ impl<'a> From<&'a Body> for SkeletonAttr { use comp::golem::Species::*; Self { head: match (body.species, body.body_type) { - (StoneGolem, _) => (0.0, 16.0), + (StoneGolem, _) => (0.0, 2.0), }, upper_torso: match (body.species, body.body_type) { - (StoneGolem, _) => (0.0, 33.0), + (StoneGolem, _) => (0.0, 34.5), + }, + lower_torso: match (body.species, body.body_type) { + (StoneGolem, _) => (0.0, -10.5), }, shoulder: match (body.species, body.body_type) { - (StoneGolem, _) => (8.0, -0.5, 7.5), + (StoneGolem, _) => (8.0, -1.5, 4.0), }, hand: match (body.species, body.body_type) { - (StoneGolem, _) => (9.5, -1.0, 4.5), + (StoneGolem, _) => (12.5, -1.0, -7.0), }, leg: match (body.species, body.body_type) { - (StoneGolem, _) => (-1.0, 0.0, 9.0), + (StoneGolem, _) => (4.0, 0.0, -3.5), }, foot: match (body.species, body.body_type) { - (StoneGolem, _) => (4.0, 0.5, 11.0), + (StoneGolem, _) => (3.5, 0.5, -9.5), }, } } diff --git a/voxygen/src/anim/src/golem/run.rs b/voxygen/src/anim/src/golem/run.rs index 63761bb1a2..c1226293ed 100644 --- a/voxygen/src/anim/src/golem/run.rs +++ b/voxygen/src/anim/src/golem/run.rs @@ -24,46 +24,68 @@ impl Animation for RunAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let lab = 10.0; - - let belt = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); - - let foothoril = (anim_time as f32 * lab as f32 + PI * 1.4).sin(); - let foothorir = (anim_time as f32 * lab as f32 + PI * 0.4).sin(); - - let footvertl = (anim_time as f32 * lab as f32).sin().max(0.1); - let footvertr = (anim_time as f32 * lab as f32 + PI).sin().max(0.1); + let lab = 0.45; //.65 + let foothoril = (((1.0) + / (0.4 + + (0.6) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + let foothorir = (((1.0) + / (0.4 + + (0.6) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + let footvertl = (anim_time as f32 * 16.0 * lab as f32).sin(); + let footvertr = (anim_time as f32 * 16.0 * lab as f32 + PI).sin(); let footrotl = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) + / (2.5 + + (2.5) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * lab as f32 + PI * 1.4).sin()); + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); let footrotr = (((5.0) - / (1.0 + (4.0) * ((anim_time as f32 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) + / (1.0 + + (4.0) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * lab as f32 + PI * 0.4).sin()); + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + + let short = (anim_time as f32 * lab as f32 * 16.0).sin(); + let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(belt * -0.3) * Quaternion::rotation_x(0.3); + next.head.orientation = Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2); next.head.scale = Vec3::one() * 1.02; next.upper_torso.position = Vec3::new( 0.0, skeleton_attr.upper_torso.0, - skeleton_attr.upper_torso.1 + belt * 1.0, + skeleton_attr.upper_torso.1 + short * 1.0, ) / 8.0; next.upper_torso.orientation = - Quaternion::rotation_z(belt * 0.40) * Quaternion::rotation_x(0.0); + Quaternion::rotation_z(short * 0.40) * Quaternion::rotation_x(0.0); next.upper_torso.scale = Vec3::one() / 8.0; + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1, + ); + next.lower_torso.orientation = Quaternion::rotation_z(shortalt * 0.60); + next.lower_torso.scale = Vec3::one(); + next.shoulder_l.position = Vec3::new( -skeleton_attr.shoulder.0, skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_l.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotl * -0.15); + next.shoulder_l.orientation = Quaternion::rotation_z(footrotl * 0.5) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_x(footrotl * -0.95); next.shoulder_l.scale = Vec3::one(); next.shoulder_r.position = Vec3::new( @@ -71,8 +93,9 @@ impl Animation for RunAnimation { skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * -0.15); + next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.5) + * Quaternion::rotation_y(-0.15) + * Quaternion::rotation_x(footrotr * -0.95); next.shoulder_r.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -80,8 +103,9 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.3 + footrotl * -0.8); + next.hand_l.orientation = Quaternion::rotation_x(0.5 + footrotl * -1.1) + * Quaternion::rotation_y(0.5) + * Quaternion::rotation_z(-0.35 + footrotl * -1.0); next.hand_l.scale = Vec3::one() * 1.02; next.hand_r.position = Vec3::new( @@ -89,8 +113,9 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.3 + footrotr * -0.8); + next.hand_r.orientation = Quaternion::rotation_x(0.5 + footrotr * -1.1) + * Quaternion::rotation_y(-0.5) + * Quaternion::rotation_z(0.35 + footrotr * 1.0); next.hand_r.scale = Vec3::one() * 1.02; next.leg_l.position = Vec3::new( @@ -98,7 +123,9 @@ impl Animation for RunAnimation { skeleton_attr.leg.1, skeleton_attr.leg.2, ) * 1.02; - next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_l.orientation = Quaternion::rotation_x(footrotl * 1.5) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(footrotl * -0.5); next.leg_l.scale = Vec3::one() * 1.02; next.leg_r.position = Vec3::new( @@ -107,27 +134,29 @@ impl Animation for RunAnimation { skeleton_attr.leg.2, ) * 1.02; - next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_r.orientation = Quaternion::rotation_x(footrotr * 1.5) + * Quaternion::rotation_y(0.3) + * Quaternion::rotation_z(footrotr * 0.5); next.leg_r.scale = Vec3::one() * 1.02; next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1 + foothoril * 8.0 + 3.0, - skeleton_attr.foot.2 + footvertl * 4.0, - ) / 8.0; - next.foot_l.orientation = Quaternion::rotation_x(footrotl * 0.7); - next.foot_l.scale = Vec3::one() / 8.0 * 0.98; + skeleton_attr.foot.1 + foothoril * 13.0, + skeleton_attr.foot.2 - 3.0 + (footvertl * 15.0).max(-2.0), + ); + next.foot_l.orientation = Quaternion::rotation_x(footrotl * 1.8); + next.foot_l.scale = Vec3::one() * 0.98; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1 + foothorir * 8.0 + 3.0, - skeleton_attr.foot.2 + footvertr * 4.0, - ) / 8.0; + skeleton_attr.foot.1 + foothorir * 13.0, + skeleton_attr.foot.2 - 3.0 + (footvertr * 15.0).max(-2.0), + ); next.foot_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * 0.7); - next.foot_r.scale = Vec3::one() / 8.0 * 0.98; + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * 1.8); + next.foot_r.scale = Vec3::one() * 0.98; - next.torso.position = Vec3::new(0.0, 0.0, belt * 0.15); + next.torso.position = Vec3::new(0.0, 0.0, short * 0.15); next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); next.torso.scale = Vec3::one(); next diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index 421b3259eb..60d723a4d5 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -254,7 +254,6 @@ where manifest_indicator, } } - /// NOTE: Intended for render time (useful with systems like wgpu that /// expect data used by the rendering pipelines to be stable throughout /// the render pass). @@ -284,12 +283,6 @@ where }), }; - if let Some(((FigureModelEntryFuture::Done(model), _), _)) = self.models.get(&key) { - Some(model) - } else { - None - } - } pub fn get_or_create_model<'c>( &'c mut self, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 1c73ddb797..4fb0025440 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -2777,6 +2777,7 @@ struct GolemCenterSpec(HashMap<(GSpecies, GBodyType), SidedGCenterVoxSpec>); struct SidedGCenterVoxSpec { head: GolemCenterSubSpec, torso_upper: GolemCenterSubSpec, + torso_lower: GolemCenterSubSpec, } #[derive(Deserialize)] struct GolemCenterSubSpec { @@ -2894,6 +2895,27 @@ impl GolemCenterSpec { (center, Vec3::from(spec.torso_upper.offset)) } + + pub fn mesh_torso_lower( + &self, + species: GSpecies, + body_type: GBodyType, + generate_mesh: impl FnOnce(Segment, Vec3) -> BoneMeshes, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No torso lower 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 center = graceful_load_segment(&spec.torso_lower.center.0); + + generate_mesh(center, Vec3::from(spec.torso_lower.offset)) + } } impl GolemLateralSpec { fn mesh_shoulder_l(&self, species: GSpecies, body_type: GBodyType) -> BoneMeshes { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index e02d6df6a0..b7d4dd9c10 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2053,7 +2053,6 @@ impl FigureMgr { skeleton_attr, ), - // TODO! _ => anim::golem::IdleAnimation::update_skeleton( &GolemSkeleton::default(), time, @@ -2062,8 +2061,21 @@ impl FigureMgr { skeleton_attr, ), }; + let target_bones = match &character { + CharacterState::BasicMelee(_) => { + anim::golem::AlphaAnimation::update_skeleton( + &target_base, + (vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, + // TODO! + _ => target_base, + }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_bones, dt); state.update( renderer, pos.0, From 412495e5fc8050cacddc6f0459905be07e491373 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 23 Aug 2020 03:41:35 -0400 Subject: [PATCH 02/28] assets/manifests --- .../voxygen/voxel/golem_center_manifest.ron | 20 ++++++++---- .../voxygen/voxel/golem_lateral_manifest.ron | 32 +++++++++---------- .../voxel/npc/stonegolem/male/chest.vox | 3 ++ .../voxel/npc/stonegolem/male/chest_lower.vox | 3 ++ .../voxel/npc/stonegolem/male/chest_upper.vox | 3 ++ .../voxel/npc/stonegolem/male/foot_l.vox | 4 +-- .../voxel/npc/stonegolem/male/foot_r.vox | 4 +-- .../voxel/npc/stonegolem/male/hand_l.vox | 4 +-- .../voxel/npc/stonegolem/male/hand_r.vox | 4 +-- .../voxel/npc/stonegolem/male/head.vox | 4 +-- .../voxel/npc/stonegolem/male/leg_l.vox | 4 +-- .../voxel/npc/stonegolem/male/leg_r.vox | 4 +-- .../voxel/npc/stonegolem/male/shoulder_l.vox | 4 +-- .../voxel/npc/stonegolem/male/shoulder_r.vox | 4 +-- .../voxel/npc/stonegolem/male/torso_upper.vox | 3 -- common/src/states/utils.rs | 2 +- 16 files changed, 58 insertions(+), 44 deletions(-) create mode 100644 assets/voxygen/voxel/npc/stonegolem/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/stonegolem/male/chest_lower.vox create mode 100644 assets/voxygen/voxel/npc/stonegolem/male/chest_upper.vox delete mode 100644 assets/voxygen/voxel/npc/stonegolem/male/torso_upper.vox diff --git a/assets/voxygen/voxel/golem_center_manifest.ron b/assets/voxygen/voxel/golem_center_manifest.ron index 2fe084ca44..12d3161079 100644 --- a/assets/voxygen/voxel/golem_center_manifest.ron +++ b/assets/voxygen/voxel/golem_center_manifest.ron @@ -1,22 +1,30 @@ ({ (StoneGolem, Male): ( head: ( - offset: (-5.0, -5.5, -7.5), + offset: (-3.5, -4.0, -0.0), center: ("npc.stonegolem.male.head"), ), torso_upper: ( - offset: (-6.0, -3.5, -10.0), - center: ("npc.stonegolem.male.torso_upper"), + offset: (-10.5, -10.5, -10.5), + center: ("npc.stonegolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-4.5, -4.5, -7.0), + center: ("npc.stonegolem.male.chest_lower"), ), ), (StoneGolem, Female): ( head: ( - offset: (-5.0, -5.5, -7.5), + offset: (-3.5, -4.0, -0.0), center: ("npc.stonegolem.male.head"), ), torso_upper: ( - offset: (-6.0, -3.5, -10.0), - center: ("npc.stonegolem.male.torso_upper"), + offset: (-10.5, -10.5, -10.5), + center: ("npc.stonegolem.male.chest_upper"), + ), + torso_lower: ( + offset: (-4.5, -4.5, -7.0), + center: ("npc.stonegolem.male.chest_lower"), ), ), }) diff --git a/assets/voxygen/voxel/golem_lateral_manifest.ron b/assets/voxygen/voxel/golem_lateral_manifest.ron index 5945b66c37..4504476042 100644 --- a/assets/voxygen/voxel/golem_lateral_manifest.ron +++ b/assets/voxygen/voxel/golem_lateral_manifest.ron @@ -1,69 +1,69 @@ ({ (StoneGolem, Male): ( shoulder_l: ( - offset: (-4.5, -4.0, -5.0), + offset: (-18.0, -7.5, -7.0), lateral: ("npc.stonegolem.male.shoulder_l"), ), shoulder_r: ( - offset: (-4.5, -4.0, -5.0), + offset: (0.0, -7.5, -7.0), lateral: ("npc.stonegolem.male.shoulder_r"), ), hand_l: ( - offset: (-3.0, -3.5, -14.0), + offset: (-9.0, -11.5, -26.0), lateral: ("npc.stonegolem.male.hand_l"), ), hand_r: ( - offset: (-3.0, -3.5, -14.0), + offset: (-9.0, -11.5, -26.0), lateral: ("npc.stonegolem.male.hand_r"), ), leg_l: ( - offset: (-2.5, -2.5, -6.0), + offset: (-7.0, -3.5, -9.0), lateral: ("npc.stonegolem.male.leg_l"), ), leg_r: ( - offset: (-2.5, -2.5, -6.0), + offset: (0.0, -3.5, -9.0), lateral: ("npc.stonegolem.male.leg_r"), ), foot_l: ( - offset: (-3.0, -3.5, -9.5), + offset: (-4.5, -4.5, -11.0), lateral: ("npc.stonegolem.male.foot_l"), ), foot_r: ( - offset: (-3.0, -3.5, -9.5), + offset: (-4.5, -4.5, -11.0), lateral: ("npc.stonegolem.male.foot_r"), ) ), (StoneGolem, Female): ( shoulder_l: ( - offset: (-4.5, -4.0, -5.0), + offset: (-18.0, -7.5, -7.0), lateral: ("npc.stonegolem.male.shoulder_l"), ), shoulder_r: ( - offset: (-4.5, -4.0, -5.0), + offset: (0.0, -7.5, -7.0), lateral: ("npc.stonegolem.male.shoulder_r"), ), hand_l: ( - offset: (-3.0, -3.5, -14.0), + offset: (-9.0, -11.5, -26.0), lateral: ("npc.stonegolem.male.hand_l"), ), hand_r: ( - offset: (-3.0, -3.5, -14.0), + offset: (-9.0, -11.5, -26.0), lateral: ("npc.stonegolem.male.hand_r"), ), leg_l: ( - offset: (-2.5, -2.5, -6.0), + offset: (-7.0, -3.5, -9.0), lateral: ("npc.stonegolem.male.leg_l"), ), leg_r: ( - offset: (-2.5, -2.5, -6.0), + offset: (0.0, -3.5, -9.0), lateral: ("npc.stonegolem.male.leg_r"), ), foot_l: ( - offset: (-3.0, -3.5, -10.5), + offset: (-4.5, -4.5, -11.0), lateral: ("npc.stonegolem.male.foot_l"), ), foot_r: ( - offset: (-3.0, -3.5, -10.5), + offset: (-4.5, -4.5, -11.0), lateral: ("npc.stonegolem.male.foot_r"), ) ), diff --git a/assets/voxygen/voxel/npc/stonegolem/male/chest.vox b/assets/voxygen/voxel/npc/stonegolem/male/chest.vox new file mode 100644 index 0000000000..5109dd2fcd --- /dev/null +++ b/assets/voxygen/voxel/npc/stonegolem/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee1cce31c8a0d3298724cee1c1a504f1f92ba2313937aef3c102b45e0d9dcb0f +size 14332 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/chest_lower.vox b/assets/voxygen/voxel/npc/stonegolem/male/chest_lower.vox new file mode 100644 index 0000000000..2e9bfbdb62 --- /dev/null +++ b/assets/voxygen/voxel/npc/stonegolem/male/chest_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ec7224ce0376f10601fab51b1239a12a7cea53d6663f0fb641e71cba734994b +size 2612 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/chest_upper.vox b/assets/voxygen/voxel/npc/stonegolem/male/chest_upper.vox new file mode 100644 index 0000000000..52033d5b97 --- /dev/null +++ b/assets/voxygen/voxel/npc/stonegolem/male/chest_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf24e59d46be096a82934628d9e44784247d67a37bd07783b5a8908c26feb233 +size 12816 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/foot_l.vox b/assets/voxygen/voxel/npc/stonegolem/male/foot_l.vox index 700a31c805..1085b4dfb8 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/foot_l.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/foot_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10db272e5f302fd26f51139dfdacd783c150eaccf8705370bd33f0b21f14008d -size 2404 +oid sha256:148999ab67d4604610bf70175744e649d14c5602e55411448ebc2c5f5bb11f1b +size 3200 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/foot_r.vox b/assets/voxygen/voxel/npc/stonegolem/male/foot_r.vox index 5041daff8b..aea68648f7 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/foot_r.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/foot_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:00e20e90eb259a284ad6bf91573028d6f8deab2dc086d38bef930117a3dc5109 -size 2404 +oid sha256:c30cd8b50d4b8d62e6e22401f568f8c3e77543adaa49b57ba2c11e8345c35dda +size 3200 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/hand_l.vox b/assets/voxygen/voxel/npc/stonegolem/male/hand_l.vox index 7cb66e7158..e73c941172 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/hand_l.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/hand_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c11a7d552ebe65c3a5d4b06d3f9cee9cbed7fdad12d82773a522878eda4df2b7 -size 2452 +oid sha256:2e409bafdd5acb62b12473363b510fdd16b6ca5ff4c23d665fb5ab5559d674d1 +size 18496 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/hand_r.vox b/assets/voxygen/voxel/npc/stonegolem/male/hand_r.vox index 10221619db..537178a75a 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/hand_r.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/hand_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dba068b223ccd71b4eb59b07febae18a20b86e134c15e952ab85018ee3ad70d3 -size 2452 +oid sha256:aa419954b20fd8258f6dee16abd1750ea8dd1fe9866c0043f99fc3d2e89619a1 +size 18496 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/head.vox b/assets/voxygen/voxel/npc/stonegolem/male/head.vox index 5da9120aae..8fc25a7217 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/head.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:18a0701635787abd3772651a64a3a9d722e6697a3fbf5f448f5d115d1adbe3aa -size 4360 +oid sha256:bf455e79056b7ac04758c6a7ed396d227a0303dd623b38c06610cd8e1ab165f7 +size 2588 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/leg_l.vox b/assets/voxygen/voxel/npc/stonegolem/male/leg_l.vox index 446a1c62f6..8702ceb08e 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/leg_l.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/leg_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ff971f0aedbccabcbac6007dd9314928d73afea519733bf00adecfabba309ed -size 1680 +oid sha256:26b8a2656fb58e75468ffe673c60ce78e2c10b31190687cfcd065cc064d6a7fa +size 1788 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/leg_r.vox b/assets/voxygen/voxel/npc/stonegolem/male/leg_r.vox index 4ef5c9f6fd..8bb2d4465b 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/leg_r.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/leg_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd34a48b5d067a6d3e069ee12a75e38ab79db1a3030e2e8e3fff3732f87bbd46 -size 1680 +oid sha256:9517cc33bc4f2d9982bbb9061404ed9076bc77e6beab0b123b02f13ab944290c +size 1788 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/shoulder_l.vox b/assets/voxygen/voxel/npc/stonegolem/male/shoulder_l.vox index 0cf2050377..4632fd5ea4 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/shoulder_l.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/shoulder_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3e04c17d1baae98107f7bb92d9b2c1ffb384325ccabf9393571545128aa4508 -size 2344 +oid sha256:af76b0f8937ee48ff52a76ec19a27b2fdb88e5cc0785737fd1085cd381149084 +size 9736 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/shoulder_r.vox b/assets/voxygen/voxel/npc/stonegolem/male/shoulder_r.vox index 2b3ce41ea8..06f271e2dd 100644 --- a/assets/voxygen/voxel/npc/stonegolem/male/shoulder_r.vox +++ b/assets/voxygen/voxel/npc/stonegolem/male/shoulder_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d5b9f18d0e7c58f942998e6989ec933284232b90fd9a6c1ad888f1cad95c5d7 -size 2344 +oid sha256:2b3de5e6525eef09f777bf0aa6f3e2b81004c545e187b4da06eee8087684a8f7 +size 9736 diff --git a/assets/voxygen/voxel/npc/stonegolem/male/torso_upper.vox b/assets/voxygen/voxel/npc/stonegolem/male/torso_upper.vox deleted file mode 100644 index b7afe03540..0000000000 --- a/assets/voxygen/voxel/npc/stonegolem/male/torso_upper.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd21aec7c477abe485d2c7e7d598747f6222af6ead01270c239623e7c6d2a4de -size 4832 diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index aaa583f374..765c1177e6 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -91,7 +91,7 @@ fn basic_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32) { pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_attack() || update.character.is_block() { + let ori_dir = if update.character.is_block() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir From 7525479a4c48f7ff737a2c21b86893c1f346aa4e Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 23 Aug 2020 14:57:09 -0400 Subject: [PATCH 03/28] fit dt issue --- voxygen/src/scene/figure/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index b7d4dd9c10..6d62da3d16 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2075,7 +2075,7 @@ impl FigureMgr { _ => target_base, }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_bones, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_bones, dt_lerp); state.update( renderer, pos.0, From ecae71c0163a01f96fc492399a3bf72a89fec0bf Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 23 Aug 2020 21:31:05 -0400 Subject: [PATCH 04/28] gliders as items. anim improvements --- assets/common/items/armor/starter/glider.ron | 9 + common/src/comp/ability.rs | 1 + common/src/comp/inventory/item/mod.rs | 7 + common/src/comp/inventory/slot.rs | 4 + common/src/loadout_builder.rs | 10 ++ common/src/states/utils.rs | 7 +- server/src/sys/terrain.rs | 3 + voxygen/src/anim/src/character/alpha.rs | 100 ++++------- voxygen/src/anim/src/character/charge.rs | 20 +-- voxygen/src/anim/src/character/shoot.rs | 19 +-- voxygen/src/anim/src/character/wield.rs | 99 +++-------- voxygen/src/anim/src/golem/alpha.rs | 169 +++++++++++++------ voxygen/src/anim/src/golem/run.rs | 72 ++++---- voxygen/src/hud/item_imgs.rs | 4 +- voxygen/src/hud/slots.rs | 1 + voxygen/src/scene/figure/mod.rs | 12 +- 16 files changed, 286 insertions(+), 251 deletions(-) create mode 100644 assets/common/items/armor/starter/glider.ron diff --git a/assets/common/items/armor/starter/glider.ron b/assets/common/items/armor/starter/glider.ron new file mode 100644 index 0000000000..71b5c99ab7 --- /dev/null +++ b/assets/common/items/armor/starter/glider.ron @@ -0,0 +1,9 @@ +Item( + name: "Swift Glider", + description: "Thank goodness for big pockets", + kind: Glider( + ( + kind: Blue, + ) + ), +) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 8505ef2797..3f4931de89 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -192,6 +192,7 @@ pub struct Loadout { pub second_item: Option, pub lantern: Option, + pub glider: Option, #[in_array(get_armor)] pub shoulder: Option, diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 448be8e1f6..5bf5f8cdba 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -58,12 +58,18 @@ impl Lantern { pub fn color(&self) -> Rgb { self.color.map(|c| c as f32 / 255.0) } } +#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub struct Glider { + pub kind: String, +} + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub enum ItemKind { /// Something wieldable Tool(tool::Tool), Lantern(Lantern), Armor(armor::Armor), + Glider(Glider), Consumable { kind: String, effect: Effect, @@ -317,6 +323,7 @@ impl Item { (ItemKind::Tool(a), ItemKind::Tool(b)) => a.superficially_eq(b), // TODO: Differentiate between lantern colors? (ItemKind::Lantern(_), ItemKind::Lantern(_)) => true, + (ItemKind::Glider(_), ItemKind::Glider(_)) => true, (ItemKind::Armor(a), ItemKind::Armor(b)) => a.superficially_eq(b), (ItemKind::Consumable { kind: a, .. }, ItemKind::Consumable { kind: b, .. }) => a == b, (ItemKind::Throwable { kind: a, .. }, ItemKind::Throwable { kind: b, .. }) => a == b, diff --git a/common/src/comp/inventory/slot.rs b/common/src/comp/inventory/slot.rs index 02de138f85..b199c7417e 100644 --- a/common/src/comp/inventory/slot.rs +++ b/common/src/comp/inventory/slot.rs @@ -18,6 +18,7 @@ pub enum EquipSlot { Mainhand, Offhand, Lantern, + Glider, } #[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)] @@ -57,6 +58,7 @@ impl EquipSlot { (Self::Mainhand, ItemKind::Tool(_)) => true, (Self::Offhand, ItemKind::Tool(_)) => true, (Self::Lantern, ItemKind::Lantern(_)) => true, + (Self::Glider, ItemKind::Glider(_)) => true, _ => false, } } @@ -103,6 +105,7 @@ fn loadout_replace( EquipSlot::Armor(ArmorSlot::Feet) => replace(&mut loadout.foot, item), EquipSlot::Armor(ArmorSlot::Tabard) => replace(&mut loadout.tabard, item), EquipSlot::Lantern => replace(&mut loadout.lantern, item), + EquipSlot::Glider => replace(&mut loadout.glider, item), EquipSlot::Mainhand => { replace(&mut loadout.active_item, item.map(ItemConfig::from)).map(|i| i.item) }, @@ -278,6 +281,7 @@ pub fn equip(slot: usize, inventory: &mut Inventory, loadout: &mut Loadout) { ArmorKind::Tabard(_) => ArmorSlot::Tabard, })), ItemKind::Lantern(_) => Some(EquipSlot::Lantern), + ItemKind::Glider(_) => Some(EquipSlot::Glider), _ => None, }); diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs index eb4dd66d37..da149f4458 100644 --- a/common/src/loadout_builder.rs +++ b/common/src/loadout_builder.rs @@ -34,6 +34,7 @@ impl LoadoutBuilder { ring: None, neck: None, lantern: None, + glider: None, head: None, tabard: None, }) @@ -54,6 +55,9 @@ impl LoadoutBuilder { .lantern(Some(Item::new_from_asset_expect( "common.items.armor.starter.lantern", ))) + .glider(Some(assets::load_expect_cloned( + "common.items.armor.starter.glider", + ))) } /// Default animal configuration @@ -85,6 +89,7 @@ impl LoadoutBuilder { ring: None, neck: None, lantern: None, + glider: None, head: None, tabard: None, }) @@ -170,6 +175,11 @@ impl LoadoutBuilder { self } + pub fn glider(mut self, item: Option) -> Self { + self.0.glider = item; + self + } + pub fn head(mut self, item: Option) -> Self { self.0.head = item; self diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 765c1177e6..579b1becb8 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -91,7 +91,7 @@ fn basic_move(data: &JoinData, update: &mut StateUpdate, efficiency: f32) { pub fn handle_orientation(data: &JoinData, update: &mut StateUpdate, rate: f32) { // Set direction based on move direction - let ori_dir = if update.character.is_block() { + let ori_dir = if update.character.is_attack() | update.character.is_block() { data.inputs.look_dir.xy() } else if !data.inputs.move_dir.is_approx_zero() { data.inputs.move_dir @@ -176,6 +176,11 @@ pub fn handle_climb(data: &JoinData, update: &mut StateUpdate) { if data.inputs.climb.is_some() && data.physics.on_wall.is_some() && !data.physics.on_ground + && !data + .physics + .in_fluid + .map(|depth| depth > 1.0) + .unwrap_or(false) //&& update.vel.0.z < 0.0 && data.body.is_humanoid() && update.energy.current() > 100 diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index 8cec2c23cd..6ba5401ac7 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -193,6 +193,7 @@ impl<'a> System<'a> for Sys { ring: None, neck: None, lantern: None, + glider: None, head: None, tabard: None, }, @@ -225,6 +226,7 @@ impl<'a> System<'a> for Sys { lantern: Some(comp::Item::new_from_asset_expect( "common.items.lantern.black_0", )), + glider: None, head: None, tabard: None, }, @@ -306,6 +308,7 @@ impl<'a> System<'a> for Sys { ring: None, neck: None, lantern: None, + glider: None, head: None, tabard: None, }; diff --git a/voxygen/src/anim/src/character/alpha.rs b/voxygen/src/anim/src/character/alpha.rs index cf04b1309f..f9cd1a33c5 100644 --- a/voxygen/src/anim/src/character/alpha.rs +++ b/voxygen/src/anim/src/character/alpha.rs @@ -52,6 +52,10 @@ impl Animation for AlphaAnimation { / (0.05 + 0.95 * ((anim_time as f32 * lab as f32 * 8.0).sin()).powf(2.0 as f32))) .sqrt()) * ((anim_time as f32 * lab as f32 * 8.0).sin()); + let staff = (((1.0) + / (0.05 + 0.95 * ((anim_time as f32 * lab as f32 * 10.0).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 10.0).sin()); let slower = (((1.0) / (0.0001 + 0.999 * ((anim_time as f32 * lab as f32 * 4.0).sin()).powf(2.0 as f32))) .sqrt()) @@ -346,10 +350,6 @@ impl Animation for AlphaAnimation { next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; } - //next.control.position = Vec3::new(-4.0, 3.0 + slower * 2.0, 5.0 + slower * - // 5.0); next.control.orientation = Quaternion::rotation_x() - // * Quaternion::rotation_y(0.0) - // * Quaternion::rotation_z(1.4); next.control.scale = Vec3::one(); next.control.position = Vec3::new(-8.0, 7.0, 1.0); next.control.orientation = Quaternion::rotation_x(-1.5 + slower * 1.5) @@ -362,44 +362,29 @@ impl Animation for AlphaAnimation { next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, Some(ToolKind::Staff(_)) => { - next.head.position = Vec3::new( - 0.0, - 0.0 + skeleton_attr.head.0, /* + decel * 0.8 */ - // Had some clipping issues - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_z(decel * 0.25) - * Quaternion::rotation_x(0.0 + decel * 0.1) - * Quaternion::rotation_y(decel * -0.1); - - next.chest.orientation = Quaternion::rotation_z(decel * -0.2) - * Quaternion::rotation_x(0.0 + decel * -0.2) - * Quaternion::rotation_y(decel * 0.2); - - next.belt.orientation = Quaternion::rotation_z(decel * -0.1) - * Quaternion::rotation_x(0.0 + decel * -0.1) - * Quaternion::rotation_y(decel * 0.1); - - next.shorts.position = Vec3::new(0.0, 0.0, -5.0); - next.shorts.orientation = Quaternion::rotation_z(decel * -0.08) - * Quaternion::rotation_x(0.0 + decel * -0.08) - * Quaternion::rotation_y(decel * 0.08); - next.l_hand.position = Vec3::new(0.0, 1.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(1.27); + next.head.orientation = + Quaternion::rotation_x(staff * 0.2) * Quaternion::rotation_z(staff * 0.2); + next.l_hand.position = Vec3::new(11.0, 5.0, -4.0); + next.l_hand.orientation = + Quaternion::rotation_x(1.27) * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.05; - next.r_hand.position = Vec3::new(0.0, 0.0, 10.0); - next.r_hand.orientation = Quaternion::rotation_x(1.27); + next.r_hand.position = Vec3::new(12.0, 5.5, 2.0); + next.r_hand.orientation = + Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.2); next.r_hand.scale = Vec3::one() * 1.05; - next.main.position = Vec3::new(0.0, 6.0, -4.0); - next.main.orientation = Quaternion::rotation_x(-0.3); + next.main.position = Vec3::new(12.0, 8.5, 13.2); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(3.14) + * Quaternion::rotation_z(0.0); + next.chest.orientation = Quaternion::rotation_z(staff * 0.3); + next.belt.orientation = Quaternion::rotation_z(staff * 0.2); + next.shorts.orientation = Quaternion::rotation_z(staff * 0.4); - next.control.position = Vec3::new(-8.0 - slow * 1.0, 3.0 - slow * 5.0, 0.0); - next.control.orientation = Quaternion::rotation_x(-1.2) - * Quaternion::rotation_y(slow * 1.5) - * Quaternion::rotation_z(1.4 + slow * 0.5); + next.control.position = Vec3::new(-20.0, 5.0 + staff * 3.0, 1.0); + next.control.orientation = Quaternion::rotation_x(staff * 1.2) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.control.scale = Vec3::one(); - next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, Some(ToolKind::Shield(_)) => { next.head.position = Vec3::new( @@ -454,38 +439,15 @@ impl Animation for AlphaAnimation { next.second.orientation = Quaternion::rotation_x(0.0); }, Some(ToolKind::Debug(_)) => { - next.head.position = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0 + decel * 0.8, - skeleton_attr.head.1, - ); - next.head.orientation = Quaternion::rotation_x(0.0); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.position = Vec3::new(0.0, 0.0, 7.0); - next.chest.orientation = Quaternion::rotation_z(decel * -0.2) - * Quaternion::rotation_x(0.0 + decel * -0.2) - * Quaternion::rotation_y(decel * 0.2); - - next.l_hand.position = - Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_z(-0.8) - * Quaternion::rotation_x(accel_med * -0.8) - * Quaternion::rotation_y(accel_med * -0.4); + next.l_hand.position = Vec3::new(-7.0, 4.0, 3.0); + next.l_hand.orientation = Quaternion::rotation_x(1.27) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); next.l_hand.scale = Vec3::one() * 1.01; - - next.r_hand.position = - Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, -2.0); - next.r_hand.orientation = Quaternion::rotation_z(-0.8) - * Quaternion::rotation_x(accel_med * -0.8) - * Quaternion::rotation_y(accel_med * -0.4); - next.r_hand.scale = Vec3::one() * 1.01; - - next.main.position = - Vec3::new(-8.0 + accel_slow * 10.0, 8.0 + accel_fast * 3.0, 0.0); - next.main.orientation = Quaternion::rotation_z(-0.8) - * Quaternion::rotation_x(0.0 + accel_med * -0.8) - * Quaternion::rotation_y(0.0 + accel_med * -0.4); + next.main.position = Vec3::new(-5.0, 5.0, 23.0); + next.main.orientation = Quaternion::rotation_z(0.0) + * Quaternion::rotation_x(PI) + * Quaternion::rotation_y(0.0); next.main.scale = Vec3::one(); next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; next.torso.orientation = Quaternion::rotation_x(0.0); diff --git a/voxygen/src/anim/src/character/charge.rs b/voxygen/src/anim/src/character/charge.rs index 5589299236..3e8ec67db1 100644 --- a/voxygen/src/anim/src/character/charge.rs +++ b/voxygen/src/anim/src/character/charge.rs @@ -98,19 +98,17 @@ impl Animation for ChargeAnimation { match active_tool_kind { //TODO: Inventory Some(ToolKind::Staff(_)) => { - next.l_hand.position = Vec3::new(1.0, -2.0, -5.0); - next.l_hand.orientation = - Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.3); + next.l_hand.position = Vec3::new(11.0, 5.0, -4.0); + next.l_hand.orientation = Quaternion::rotation_x(1.27); next.l_hand.scale = Vec3::one() * 1.05; - next.r_hand.position = Vec3::new(9.0, 1.0, 0.0); - next.r_hand.orientation = Quaternion::rotation_x(1.8) - * Quaternion::rotation_y(0.5) - * Quaternion::rotation_z(-0.27); + next.r_hand.position = Vec3::new(12.0, 5.5, 2.0); + next.r_hand.orientation = + Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.2); next.r_hand.scale = Vec3::one() * 1.05; - next.main.position = Vec3::new(9.2, 8.4, 13.2); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(3.14 + 0.3) - * Quaternion::rotation_z(0.9); + next.main.position = Vec3::new(12.0, 8.5, 13.2); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(3.14) + * Quaternion::rotation_z(0.0); next.control.position = Vec3::new( -7.0 + quick * 3.5 * (1.0 / (stopa + 0.1)), diff --git a/voxygen/src/anim/src/character/shoot.rs b/voxygen/src/anim/src/character/shoot.rs index 1fe4dfc856..508d7cb367 100644 --- a/voxygen/src/anim/src/character/shoot.rs +++ b/voxygen/src/anim/src/character/shoot.rs @@ -66,19 +66,18 @@ impl Animation for ShootAnimation { match active_tool_kind { //TODO: Inventory Some(ToolKind::Staff(_)) => { - next.l_hand.position = Vec3::new(1.5, 0.5, -4.0); + next.l_hand.position = Vec3::new(11.0, 5.0, -4.0); next.l_hand.orientation = - Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.3); + Quaternion::rotation_x(1.27) * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.05; - next.r_hand.position = Vec3::new(8.0, 4.0, 2.0); - next.r_hand.orientation = Quaternion::rotation_x(1.8) - * Quaternion::rotation_y(0.5) - * Quaternion::rotation_z(-0.27); + next.r_hand.position = Vec3::new(12.0, 5.5, 2.0); + next.r_hand.orientation = + Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.2); next.r_hand.scale = Vec3::one() * 1.05; - next.main.position = Vec3::new(9.2, 8.4, 13.2); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(3.14 + 0.3) - * Quaternion::rotation_z(0.9); + next.main.position = Vec3::new(12.0, 8.5, 13.2); + next.main.orientation = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(3.14) + * Quaternion::rotation_z(0.0); next.control.position = Vec3::new(-7.0, 6.0, 6.0 - exp * 5.0); next.control.orientation = Quaternion::rotation_x(exp * 1.3) diff --git a/voxygen/src/anim/src/character/wield.rs b/voxygen/src/anim/src/character/wield.rs index 375ce073b7..8ba6f64531 100644 --- a/voxygen/src/anim/src/character/wield.rs +++ b/voxygen/src/anim/src/character/wield.rs @@ -120,13 +120,10 @@ impl Animation for WieldAnimation { Quaternion::rotation_x(1.47) * Quaternion::rotation_y(0.3); next.r_hand.scale = Vec3::one() * 1.05; next.main.position = Vec3::new(0.0, 0.0, -3.0); - next.main.orientation = Quaternion::rotation_x(-0.1) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); + next.main.orientation = Quaternion::rotation_x(-0.1); next.control.position = Vec3::new(-7.0, 6.0, 6.0); next.control.orientation = Quaternion::rotation_x(u_slow * 0.15) - * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(u_slowalt * 0.08); next.control.scale = Vec3::one(); }, @@ -136,10 +133,6 @@ impl Animation for WieldAnimation { let hand_scale = 1.12; next.control.position = Vec3::new(0.0, 0.0, 0.0); - //next.control.orientation = Quaternion::rotation_x(slow * 1.0); - // * Quaternion::rotation_y(0.0) - // * Quaternion::rotation_z(u_slowalt * 0.08); - // next.control.scale = Vec3::one(); next.l_hand.position = Vec3::new(0.0, 0.0, 0.0); next.l_hand.orientation = Quaternion::rotation_x(0.0 * PI) @@ -153,10 +146,6 @@ impl Animation for WieldAnimation { * Quaternion::rotation_z(0.0 * PI); next.l_control.position = Vec3::new(-7.0, 0.0, 0.0); - // next.l_control.orientation = Quaternion::rotation_x(u_slow * 0.15 + 1.0) - // * Quaternion::rotation_y(0.0) - // * Quaternion::rotation_z(u_slowalt * 0.08); - // next.l_control.scale = Vec3::one(); next.r_hand.position = Vec3::new(0.0, 0.0, 0.0); next.r_hand.orientation = Quaternion::rotation_x(0.0 * PI) @@ -171,10 +160,6 @@ impl Animation for WieldAnimation { next.second.scale = Vec3::one(); next.r_control.position = Vec3::new(7.0, 0.0, 0.0); - // next.r_control.orientation = Quaternion::rotation_x(0.0 * PI) - // * Quaternion::rotation_y(0.0 * PI) - // * Quaternion::rotation_z(0.0 * PI); - // next.r_control.scale = Vec3::one(); }, Some(ToolKind::Axe(_)) => { if velocity < 0.5 { @@ -234,9 +219,8 @@ impl Animation for WieldAnimation { next.r_hand.orientation = Quaternion::rotation_x(0.0) * Quaternion::rotation_y(0.0); next.r_hand.scale = Vec3::one() * 1.06; next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(-1.57) - * Quaternion::rotation_z(1.57); + next.main.orientation = + Quaternion::rotation_y(-1.57) * Quaternion::rotation_z(1.57); next.control.position = Vec3::new(6.0, 7.0, 1.0); next.control.orientation = Quaternion::rotation_x(0.3 + u_slow * 0.15) @@ -245,24 +229,21 @@ impl Animation for WieldAnimation { next.control.scale = Vec3::one(); }, Some(ToolKind::Staff(_)) => { - next.l_hand.position = Vec3::new(1.5, 0.5, -4.0); + next.l_hand.position = Vec3::new(11.0, 5.0, -4.0); next.l_hand.orientation = - Quaternion::rotation_x(1.47) * Quaternion::rotation_y(-0.3); + Quaternion::rotation_x(1.27) * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.05; - next.r_hand.position = Vec3::new(8.0, 4.0, 2.0); - next.r_hand.orientation = Quaternion::rotation_x(1.8) - * Quaternion::rotation_y(0.5) - * Quaternion::rotation_z(-0.27); + next.r_hand.position = Vec3::new(12.0, 5.5, 2.0); + next.r_hand.orientation = + Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.2); next.r_hand.scale = Vec3::one() * 1.05; - next.main.position = Vec3::new(12.0, 8.4, 13.2); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(3.14 + 0.3) - * Quaternion::rotation_z(0.9); + next.main.position = Vec3::new(12.0, 8.5, 13.2); + next.main.orientation = Quaternion::rotation_y(3.14); - next.control.position = Vec3::new(-14.0, 1.8, 3.0); - next.control.orientation = Quaternion::rotation_x(u_slow * 0.2) - * Quaternion::rotation_y(-0.2) - * Quaternion::rotation_z(u_slowalt * 0.1); + next.control.position = Vec3::new(-18.0, 1.0, 6.0); + next.control.orientation = Quaternion::rotation_x(-0.3 + u_slow * 0.1) + * Quaternion::rotation_y(0.15) + * Quaternion::rotation_z(u_slowalt * 0.08); next.control.scale = Vec3::one(); }, Some(ToolKind::Shield(_)) => { @@ -271,27 +252,15 @@ impl Animation for WieldAnimation { let hand_scale = 1.12; next.control.position = Vec3::new(0.0, 0.0, 0.0); - // next.control.orientation = Quaternion::rotation_x(u_slow * 0.15 + 1.0) - // * Quaternion::rotation_y(0.0) - // * Quaternion::rotation_z(u_slowalt * 0.08); - // next.control.scale = Vec3::one(); next.l_hand.position = Vec3::new(0.0, 0.0, 0.0); - next.l_hand.orientation = Quaternion::rotation_x(0.0 * PI) - * Quaternion::rotation_y(0.0 * PI) - * Quaternion::rotation_z(0.0 * PI); + next.l_hand.orientation = Quaternion::rotation_x(0.0 * PI); next.l_hand.scale = Vec3::one() * hand_scale; next.main.position = Vec3::new(0.0, 0.0, 0.0); - next.main.orientation = Quaternion::rotation_x(0.0 * PI) - * Quaternion::rotation_y(0.0 * PI) - * Quaternion::rotation_z(0.0 * PI); + next.main.orientation = Quaternion::rotation_x(0.0 * PI); next.l_control.position = Vec3::new(-7.0, 0.0, 0.0); - // next.l_control.orientation = Quaternion::rotation_x(u_slow * 0.15 + 1.0) - // * Quaternion::rotation_y(0.0) - // * Quaternion::rotation_z(u_slowalt * 0.08); - // next.l_control.scale = Vec3::one(); next.r_hand.position = Vec3::new(0.0, 0.0, 0.0); next.r_hand.orientation = Quaternion::rotation_x(0.0 * PI) @@ -300,16 +269,10 @@ impl Animation for WieldAnimation { next.r_hand.scale = Vec3::one() * hand_scale; next.second.position = Vec3::new(0.0, 0.0, 0.0); - next.second.orientation = Quaternion::rotation_x(0.0 * PI) - * Quaternion::rotation_y(0.0 * PI) - * Quaternion::rotation_z(0.0 * PI); + next.second.orientation = Quaternion::rotation_x(0.0 * PI); next.second.scale = Vec3::one(); next.r_control.position = Vec3::new(7.0, 0.0, 0.0); - // next.r_control.orientation = Quaternion::rotation_x(0.0 * PI) - // * Quaternion::rotation_y(0.0 * PI) - // * Quaternion::rotation_z(0.0 * PI); - // next.r_control.scale = Vec3::one(); }, Some(ToolKind::Bow(_)) => { next.l_hand.position = Vec3::new(2.0, 1.5, 0.0); @@ -344,20 +307,14 @@ impl Animation for WieldAnimation { * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); next.l_hand.scale = Vec3::one() * 1.01; - next.r_hand.position = Vec3::new(7.0, 2.5, -1.25); - next.r_hand.orientation = Quaternion::rotation_x(1.27) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(-0.3); - next.r_hand.scale = Vec3::one() * 1.01; - next.main.position = Vec3::new(5.0, 8.75, -2.0); - next.main.orientation = Quaternion::rotation_x(-0.3) - * Quaternion::rotation_y(-1.27) - * Quaternion::rotation_z(0.0); + next.main.position = Vec3::new(-5.0, 5.0, 23.0); + next.main.orientation = Quaternion::rotation_z(0.0) + * Quaternion::rotation_x(PI) + * Quaternion::rotation_y(0.0); next.main.scale = Vec3::one(); - next.control.position = Vec3::new(0.0, 6.0, 6.0); - next.control.orientation = - Quaternion::rotation_x(u_slow * 0.2) * Quaternion::rotation_z(u_slowalt * 0.1); - next.control.scale = Vec3::one(); + next.torso.position = Vec3::new(0.0, 0.0, 0.1) * skeleton_attr.scaler; + next.torso.orientation = Quaternion::rotation_x(0.0); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; }, Some(ToolKind::Farming(_)) => { if velocity < 0.5 { @@ -370,14 +327,10 @@ impl Animation for WieldAnimation { Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.0); next.l_hand.scale = Vec3::one() * 1.05; next.r_hand.position = Vec3::new(9.0, 1.0, 11.0); - next.r_hand.orientation = Quaternion::rotation_x(1.57) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(0.0); + next.r_hand.orientation = Quaternion::rotation_x(1.57); next.r_hand.scale = Vec3::one() * 1.05; next.main.position = Vec3::new(7.5, 7.5, 13.2); - next.main.orientation = Quaternion::rotation_x(0.0) - * Quaternion::rotation_y(3.14) - * Quaternion::rotation_z(0.0); + next.main.orientation = Quaternion::rotation_y(3.14); next.control.position = Vec3::new(-11.0 + slow * 2.0, 1.8, 4.0); next.control.orientation = Quaternion::rotation_x(u_slow * 0.1) diff --git a/voxygen/src/anim/src/golem/alpha.rs b/voxygen/src/anim/src/golem/alpha.rs index d4bfbde173..b20487e2d7 100644 --- a/voxygen/src/anim/src/golem/alpha.rs +++ b/voxygen/src/anim/src/golem/alpha.rs @@ -17,7 +17,7 @@ impl Animation for AlphaAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, _global_time): Self::Dependency, + (_velocity, global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -35,62 +35,129 @@ impl Animation for AlphaAnimation { + 1.0; let twist = (anim_time as f32 * lab as f32 * 4.0).sin() + 0.5; - let slowersmooth = (anim_time as f32 * lab as f32 * 8.0).sin(); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; - next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); - next.head.scale = Vec3::one() * 1.02; + let random = ((((2.0 + * (((global_time as f32 - anim_time as f32) * 10.0) + - (((global_time as f32 - anim_time as f32) * 10.0).round()))) + .abs()) + * 10.0) + .round()) + / 10.0; - next.upper_torso.position = Vec3::new( - 0.0, - skeleton_attr.upper_torso.0, - skeleton_attr.upper_torso.1, - ) / 8.0; - next.upper_torso.orientation = - Quaternion::rotation_z(twist * 1.5) * Quaternion::rotation_x(0.0); - next.upper_torso.scale = Vec3::one() / 8.0; + let switch = if random > 0.5 { 1.0 } else { -1.0 }; + println!("{:?}", random); + if switch > 0.0 { + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; + next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.head.scale = Vec3::one() * 1.02; - next.lower_torso.position = Vec3::new( - 0.0, - skeleton_attr.lower_torso.0, - skeleton_attr.lower_torso.1, - ); - next.lower_torso.orientation = - Quaternion::rotation_z(twist * -1.5) * Quaternion::rotation_x(0.0); - next.lower_torso.scale = Vec3::one(); + next.upper_torso.position = Vec3::new( + 0.0, + skeleton_attr.upper_torso.0, + skeleton_attr.upper_torso.1, + ) / 8.0; + next.upper_torso.orientation = + Quaternion::rotation_z(twist * 1.1) * Quaternion::rotation_x(0.0); + next.upper_torso.scale = Vec3::one() / 8.0; - next.shoulder_l.position = Vec3::new( - -skeleton_attr.shoulder.0, - skeleton_attr.shoulder.1, - skeleton_attr.shoulder.2, - ); - next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.shoulder_l.scale = Vec3::one(); + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1, + ); + next.lower_torso.orientation = + Quaternion::rotation_z(twist * -1.1) * Quaternion::rotation_x(0.0); + next.lower_torso.scale = Vec3::one(); - next.shoulder_r.position = Vec3::new( - skeleton_attr.shoulder.0, - skeleton_attr.shoulder.1, - skeleton_attr.shoulder.2, - ); - next.shoulder_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.9); - next.shoulder_r.scale = Vec3::one(); + next.shoulder_l.position = Vec3::new( + -skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.shoulder_l.scale = Vec3::one(); - next.hand_l.position = Vec3::new( - -skeleton_attr.hand.0, - skeleton_attr.hand.1, - skeleton_attr.hand.2, - ); - next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.hand_l.scale = Vec3::one() * 1.02; + next.shoulder_r.position = Vec3::new( + skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.4); + next.shoulder_r.scale = Vec3::one(); - next.hand_r.position = Vec3::new( - skeleton_attr.hand.0, - skeleton_attr.hand.1, - skeleton_attr.hand.2, - ); - next.hand_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 1.5); - next.hand_r.scale = Vec3::one() * 1.02; + next.hand_l.position = Vec3::new( + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.hand_l.scale = Vec3::one() * 1.02; + + next.hand_r.position = Vec3::new( + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.35); + next.hand_r.scale = Vec3::one() * 1.02; + } else { + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; + next.head.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); + next.head.scale = Vec3::one() * 1.02; + + next.upper_torso.position = Vec3::new( + 0.0, + skeleton_attr.upper_torso.0, + skeleton_attr.upper_torso.1, + ) / 8.0; + next.upper_torso.orientation = + Quaternion::rotation_z(twist * -1.1) * Quaternion::rotation_x(0.0); + next.upper_torso.scale = Vec3::one() / 8.0; + + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1, + ); + next.lower_torso.orientation = + Quaternion::rotation_z(twist * 1.1) * Quaternion::rotation_x(0.0); + next.lower_torso.scale = Vec3::one(); + + next.shoulder_l.position = Vec3::new( + -skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.4); + next.shoulder_l.scale = Vec3::one(); + + next.shoulder_r.position = Vec3::new( + skeleton_attr.shoulder.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2, + ); + next.shoulder_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.shoulder_r.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_x(slower * 0.35); + next.hand_l.scale = Vec3::one() * 1.02; + + next.hand_r.position = Vec3::new( + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, + ); + next.hand_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.hand_r.scale = Vec3::one() * 1.02; + }; /* next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, diff --git a/voxygen/src/anim/src/golem/run.rs b/voxygen/src/anim/src/golem/run.rs index c1226293ed..2a9797dc7c 100644 --- a/voxygen/src/anim/src/golem/run.rs +++ b/voxygen/src/anim/src/golem/run.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct RunAnimation; impl Animation for RunAnimation { - type Dependency = (f32, f64); + type Dependency = (f32, Vec3, Vec3, f64); type Skeleton = GolemSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,7 +17,7 @@ impl Animation for RunAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, _global_time): Self::Dependency, + (_velocity, orientation, last_ori, _global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -56,7 +56,19 @@ impl Animation for RunAnimation { let short = (anim_time as f32 * lab as f32 * 16.0).sin(); let shortalt = (anim_time as f32 * lab as f32 * 16.0 + PI / 2.0).sin(); - + let ori: Vec2 = Vec2::from(orientation); + let last_ori = Vec2::from(last_ori); + let tilt = if ::vek::Vec2::new(ori, last_ori) + .map(|o| o.magnitude_squared()) + .map(|m| m > 0.001 && m.is_finite()) + .reduce_and() + && ori.angle_between(last_ori).is_finite() + { + ori.angle_between(last_ori).min(0.2) + * last_ori.determine_side(Vec2::zero(), ori).signum() + } else { + 0.0 + } * 1.3; next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; next.head.orientation = Quaternion::rotation_z(short * -0.3) * Quaternion::rotation_x(-0.2); next.head.scale = Vec3::one() * 1.02; @@ -67,7 +79,7 @@ impl Animation for RunAnimation { skeleton_attr.upper_torso.1 + short * 1.0, ) / 8.0; next.upper_torso.orientation = - Quaternion::rotation_z(short * 0.40) * Quaternion::rotation_x(0.0); + Quaternion::rotation_z(tilt * -4.0 + short * 0.40) * Quaternion::rotation_x(0.0); next.upper_torso.scale = Vec3::one() / 8.0; next.lower_torso.position = Vec3::new( @@ -75,7 +87,7 @@ impl Animation for RunAnimation { skeleton_attr.lower_torso.0, skeleton_attr.lower_torso.1, ); - next.lower_torso.orientation = Quaternion::rotation_z(shortalt * 0.60); + next.lower_torso.orientation = Quaternion::rotation_z(tilt * 4.0 + shortalt * 0.2); next.lower_torso.scale = Vec3::one(); next.shoulder_l.position = Vec3::new( @@ -83,9 +95,9 @@ impl Animation for RunAnimation { skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_l.orientation = Quaternion::rotation_z(footrotl * 0.5) + next.shoulder_l.orientation = Quaternion::rotation_z(footrotl * 0.07) * Quaternion::rotation_y(0.15) - * Quaternion::rotation_x(footrotl * -0.95); + * Quaternion::rotation_x(footrotl * -0.25); next.shoulder_l.scale = Vec3::one(); next.shoulder_r.position = Vec3::new( @@ -93,9 +105,9 @@ impl Animation for RunAnimation { skeleton_attr.shoulder.1, skeleton_attr.shoulder.2, ); - next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.5) + next.shoulder_r.orientation = Quaternion::rotation_z(footrotr * -0.07) * Quaternion::rotation_y(-0.15) - * Quaternion::rotation_x(footrotr * -0.95); + * Quaternion::rotation_x(footrotr * -0.25); next.shoulder_r.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -103,9 +115,9 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_x(0.5 + footrotl * -1.1) - * Quaternion::rotation_y(0.5) - * Quaternion::rotation_z(-0.35 + footrotl * -1.0); + next.hand_l.orientation = Quaternion::rotation_x(0.3 + footrotl * -0.06) + * Quaternion::rotation_y(0.1) + * Quaternion::rotation_z(-0.35 + footrotl * -0.1); next.hand_l.scale = Vec3::one() * 1.02; next.hand_r.position = Vec3::new( @@ -113,9 +125,9 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_x(0.5 + footrotr * -1.1) - * Quaternion::rotation_y(-0.5) - * Quaternion::rotation_z(0.35 + footrotr * 1.0); + next.hand_r.orientation = Quaternion::rotation_x(0.3 + footrotr * -0.06) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(0.35 + footrotr * 0.1); next.hand_r.scale = Vec3::one() * 1.02; next.leg_l.position = Vec3::new( @@ -123,9 +135,9 @@ impl Animation for RunAnimation { skeleton_attr.leg.1, skeleton_attr.leg.2, ) * 1.02; - next.leg_l.orientation = Quaternion::rotation_x(footrotl * 1.5) - * Quaternion::rotation_y(-0.3) - * Quaternion::rotation_z(footrotl * -0.5); + next.leg_l.orientation = Quaternion::rotation_x(footrotl * 0.3) + * Quaternion::rotation_y(0.1) + * Quaternion::rotation_z(footrotl * -0.2); next.leg_l.scale = Vec3::one() * 1.02; next.leg_r.position = Vec3::new( @@ -134,29 +146,31 @@ impl Animation for RunAnimation { skeleton_attr.leg.2, ) * 1.02; - next.leg_r.orientation = Quaternion::rotation_x(footrotr * 1.5) - * Quaternion::rotation_y(0.3) - * Quaternion::rotation_z(footrotr * 0.5); + next.leg_r.orientation = Quaternion::rotation_x(footrotr * 0.3) + * Quaternion::rotation_y(-0.1) + * Quaternion::rotation_z(footrotr * 0.2); next.leg_r.scale = Vec3::one() * 1.02; next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1 + foothoril * 13.0, - skeleton_attr.foot.2 - 3.0 + (footvertl * 15.0).max(-2.0), + skeleton_attr.foot.1 + foothoril * 2.0, + skeleton_attr.foot.2 + (footvertl * 3.0).max(0.0), ); - next.foot_l.orientation = Quaternion::rotation_x(footrotl * 1.8); + next.foot_l.orientation = + Quaternion::rotation_x(footrotl * 0.2) * Quaternion::rotation_y(-0.08); next.foot_l.scale = Vec3::one() * 0.98; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1 + foothorir * 13.0, - skeleton_attr.foot.2 - 3.0 + (footvertr * 15.0).max(-2.0), + skeleton_attr.foot.1 + foothorir * 2.0, + skeleton_attr.foot.2 + (footvertr * 3.0).max(0.0), ); - next.foot_r.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(footrotr * 1.8); + next.foot_r.orientation = Quaternion::rotation_z(0.0) + * Quaternion::rotation_x(footrotr * 0.2) + * Quaternion::rotation_y(0.08); next.foot_r.scale = Vec3::one() * 0.98; - next.torso.position = Vec3::new(0.0, 0.0, short * 0.15); + next.torso.position = Vec3::new(0.0, 0.0, 0.0); next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(-0.2); next.torso.scale = Vec3::one(); next diff --git a/voxygen/src/hud/item_imgs.rs b/voxygen/src/hud/item_imgs.rs index 4cda77f2ce..1d15a24e5d 100644 --- a/voxygen/src/hud/item_imgs.rs +++ b/voxygen/src/hud/item_imgs.rs @@ -4,7 +4,7 @@ use common::{ comp::item::{ armor::{Armor, ArmorKind}, tool::{Tool, ToolKind}, - Item, ItemKind, Lantern, Throwable, Utility, + Glider, Item, ItemKind, Lantern, Throwable, Utility, }, figure::Segment, }; @@ -21,6 +21,7 @@ use vek::*; pub enum ItemKey { Tool(ToolKind), Lantern(String), + Glider(String), Armor(ArmorKind), Utility(Utility), Consumable(String), @@ -33,6 +34,7 @@ impl From<&Item> for ItemKey { match &item.kind() { ItemKind::Tool(Tool { kind, .. }) => ItemKey::Tool(kind.clone()), ItemKind::Lantern(Lantern { kind, .. }) => ItemKey::Lantern(kind.clone()), + ItemKind::Glider(Glider { kind, .. }) => ItemKey::Glider(kind.clone()), ItemKind::Armor(Armor { kind, .. }) => ItemKey::Armor(kind.clone()), ItemKind::Utility { kind, .. } => ItemKey::Utility(*kind), ItemKind::Consumable { kind, .. } => ItemKey::Consumable(kind.clone()), diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index 3e32e7cc3d..534d0f3f50 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -66,6 +66,7 @@ impl SlotKey for EquipSlot { EquipSlot::Mainhand => source.active_item.as_ref().map(|i| &i.item), EquipSlot::Offhand => source.second_item.as_ref().map(|i| &i.item), EquipSlot::Lantern => source.lantern.as_ref(), + EquipSlot::Glider => source.glider.as_ref(), }; item.map(|i| (i.into(), None)) diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 6d62da3d16..2fa6bd7e4a 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1537,7 +1537,7 @@ impl FigureMgr { ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); state.update( renderer, pos.0, @@ -1619,7 +1619,7 @@ impl FigureMgr { ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); state.update( renderer, pos.0, @@ -1702,7 +1702,7 @@ impl FigureMgr { ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); state.update( renderer, pos.0, @@ -1788,7 +1788,7 @@ impl FigureMgr { ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); state.update( renderer, pos.0, @@ -1874,7 +1874,7 @@ impl FigureMgr { ), }; - state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt); + state.skeleton = anim::vek::Lerp::lerp(&state.skeleton, &target_base, dt_lerp); state.update( renderer, pos.0, @@ -2039,7 +2039,7 @@ impl FigureMgr { // Running (true, true, false) => anim::golem::RunAnimation::update_skeleton( &GolemSkeleton::default(), - (vel.0.magnitude(), time), + (vel.0.magnitude(), ori, state.last_ori, time), state.state_time, &mut state_animation_rate, skeleton_attr, From b514fb415991f7a3b4e4def29412e1cf53166bcc Mon Sep 17 00:00:00 2001 From: jshipsey Date: Mon, 24 Aug 2020 17:37:23 -0400 Subject: [PATCH 05/28] fix for animal attack motion bug --- voxygen/src/anim/src/character/glidewield.rs | 1 + voxygen/src/anim/src/quadruped_low/alpha.rs | 65 ++++----- .../src/anim/src/quadruped_medium/alpha.rs | 134 +++++++++--------- voxygen/src/scene/figure/mod.rs | 4 +- 4 files changed, 104 insertions(+), 100 deletions(-) diff --git a/voxygen/src/anim/src/character/glidewield.rs b/voxygen/src/anim/src/character/glidewield.rs index c9e5bc36b1..70052d6647 100644 --- a/voxygen/src/anim/src/character/glidewield.rs +++ b/voxygen/src/anim/src/character/glidewield.rs @@ -370,6 +370,7 @@ impl Animation for GlideWieldAnimation { ); next.lantern.orientation = Quaternion::rotation_x(0.1) * Quaternion::rotation_y(0.1); next.lantern.scale = Vec3::one() * 0.65; + next.hold.scale = Vec3::one() * 0.0; next.torso.position = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; next.torso.orientation = Quaternion::rotation_x(0.0); diff --git a/voxygen/src/anim/src/quadruped_low/alpha.rs b/voxygen/src/anim/src/quadruped_low/alpha.rs index 87eedd579b..49ecfe54c6 100644 --- a/voxygen/src/anim/src/quadruped_low/alpha.rs +++ b/voxygen/src/anim/src/quadruped_low/alpha.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct AlphaAnimation; impl Animation for AlphaAnimation { - type Dependency = f64; + type Dependency = (f32, f64); type Skeleton = QuadrupedLowSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,7 +16,7 @@ impl Animation for AlphaAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_low_alpha")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - _global_time: Self::Dependency, + (velocity, _global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -66,39 +66,40 @@ impl Animation for AlphaAnimation { * Quaternion::rotation_x(-0.12) * Quaternion::rotation_z(short * 0.3); next.tail_rear.scale = Vec3::one() * 0.98; + if velocity < 1.0 { + next.foot_fl.position = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ); + next.foot_fl.orientation = Quaternion::rotation_y(short * 0.12); + next.foot_fl.scale = Vec3::one(); - next.foot_fl.position = Vec3::new( - -skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2, - ); - next.foot_fl.orientation = Quaternion::rotation_y(short * 0.12); - next.foot_fl.scale = Vec3::one(); + next.foot_fr.position = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ); + next.foot_fr.orientation = Quaternion::rotation_y(short * 0.12); + next.foot_fr.scale = Vec3::one(); - next.foot_fr.position = Vec3::new( - skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2, - ); - next.foot_fr.orientation = Quaternion::rotation_y(short * 0.12); - next.foot_fr.scale = Vec3::one(); - - next.foot_bl.position = Vec3::new( - -skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2, - ); - next.foot_bl.orientation = Quaternion::rotation_y(short * 0.12); - next.foot_bl.scale = Vec3::one(); - - next.foot_br.position = Vec3::new( - skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2, - ); - next.foot_br.orientation = Quaternion::rotation_y(short * 0.12); - next.foot_br.scale = Vec3::one(); + next.foot_bl.position = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ); + next.foot_bl.orientation = Quaternion::rotation_y(short * 0.12); + next.foot_bl.scale = Vec3::one(); + next.foot_br.position = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ); + next.foot_br.orientation = Quaternion::rotation_y(short * 0.12); + next.foot_br.scale = Vec3::one(); + } else { + }; next } } diff --git a/voxygen/src/anim/src/quadruped_medium/alpha.rs b/voxygen/src/anim/src/quadruped_medium/alpha.rs index ae84f5f8ce..d323e9ecfe 100644 --- a/voxygen/src/anim/src/quadruped_medium/alpha.rs +++ b/voxygen/src/anim/src/quadruped_medium/alpha.rs @@ -7,7 +7,7 @@ use std::f32::consts::PI; pub struct AlphaAnimation; impl Animation for AlphaAnimation { - type Dependency = f64; + type Dependency = (f32, f64); type Skeleton = QuadrupedMediumSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -16,7 +16,7 @@ impl Animation for AlphaAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_alpha")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - _global_time: Self::Dependency, + (velocity, _global_time): Self::Dependency, anim_time: f64, _rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -70,78 +70,80 @@ impl Animation for AlphaAnimation { next.ears.position = Vec3::new(0.0, skeleton_attr.ears.0, skeleton_attr.ears.1); next.ears.orientation = Quaternion::rotation_x(0.0); next.ears.scale = Vec3::one() * 1.02; + if velocity < 1.0 { + next.leg_fl.position = Vec3::new( + -skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1, + skeleton_attr.leg_f.2, + ); - next.leg_fl.position = Vec3::new( - -skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1, - skeleton_attr.leg_f.2, - ); + next.leg_fl.orientation = + Quaternion::rotation_x(short * -0.1) * Quaternion::rotation_y(short * 0.15); + next.leg_fl.scale = Vec3::one(); - next.leg_fl.orientation = - Quaternion::rotation_x(short * -0.1) * Quaternion::rotation_y(short * 0.15); - next.leg_fl.scale = Vec3::one(); + next.leg_fr.position = Vec3::new( + skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1, + skeleton_attr.leg_f.2, + ); + next.leg_fr.orientation = + Quaternion::rotation_x(short * 0.3) * Quaternion::rotation_y(short * -0.2); + next.leg_fr.scale = Vec3::one(); - next.leg_fr.position = Vec3::new( - skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1, - skeleton_attr.leg_f.2, - ); - next.leg_fr.orientation = - Quaternion::rotation_x(short * 0.3) * Quaternion::rotation_y(short * -0.2); - next.leg_fr.scale = Vec3::one(); + next.leg_bl.position = Vec3::new( + -skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1, + skeleton_attr.leg_b.2 + 1.0, + ); + next.leg_bl.orientation = + Quaternion::rotation_x(-0.1 + short * -0.2) * Quaternion::rotation_y(short * 0.2); + next.leg_bl.scale = Vec3::one(); - next.leg_bl.position = Vec3::new( - -skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1, - skeleton_attr.leg_b.2 + 1.0, - ); - next.leg_bl.orientation = - Quaternion::rotation_x(-0.1 + short * -0.2) * Quaternion::rotation_y(short * 0.2); - next.leg_bl.scale = Vec3::one(); + next.leg_br.position = Vec3::new( + skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1, + skeleton_attr.leg_b.2 + 1.0, + ); + next.leg_br.orientation = Quaternion::rotation_x(-0.1 + short * -0.2) + * Quaternion::rotation_y(0.1 + short * 0.2); + next.leg_br.scale = Vec3::one(); - next.leg_br.position = Vec3::new( - skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1, - skeleton_attr.leg_b.2 + 1.0, - ); - next.leg_br.orientation = - Quaternion::rotation_x(-0.1 + short * -0.2) * Quaternion::rotation_y(0.1 + short * 0.2); - next.leg_br.scale = Vec3::one(); + next.foot_fl.position = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2 + short * -0.2, + ); + next.foot_fl.orientation = Quaternion::rotation_x(short * -0.05); + next.foot_fl.scale = Vec3::one(); - next.foot_fl.position = Vec3::new( - -skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 + short * -0.2, - ); - next.foot_fl.orientation = Quaternion::rotation_x(short * -0.05); - next.foot_fl.scale = Vec3::one(); + next.foot_fr.position = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2, + ); + next.foot_fr.orientation = + Quaternion::rotation_x(short * -0.4) * Quaternion::rotation_y(short * 0.15); + next.foot_fr.scale = Vec3::one(); - next.foot_fr.position = Vec3::new( - skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2, - ); - next.foot_fr.orientation = - Quaternion::rotation_x(short * -0.4) * Quaternion::rotation_y(short * 0.15); - next.foot_fr.scale = Vec3::one(); + next.foot_bl.position = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2 + short * -0.8, + ); + next.foot_bl.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(short * 0.15); + next.foot_bl.scale = Vec3::one(); - next.foot_bl.position = Vec3::new( - -skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + short * -0.8, - ); - next.foot_bl.orientation = - Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(short * 0.15); - next.foot_bl.scale = Vec3::one(); - - next.foot_br.position = Vec3::new( - skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2, - ); - next.foot_br.orientation = - Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(short * 0.15); - next.foot_br.scale = Vec3::one(); + next.foot_br.position = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2, + ); + next.foot_br.orientation = + Quaternion::rotation_x(-0.2 + short * 0.2) * Quaternion::rotation_y(short * 0.15); + next.foot_br.scale = Vec3::one(); + } else { + }; next } } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 2fa6bd7e4a..b6a16f0f9e 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1244,7 +1244,7 @@ impl FigureMgr { CharacterState::BasicMelee(_) => { anim::quadruped_medium::AlphaAnimation::update_skeleton( &target_base, - time, + (vel.0.magnitude(), time), state.state_time, &mut state_animation_rate, skeleton_attr, @@ -1344,7 +1344,7 @@ impl FigureMgr { CharacterState::BasicMelee(_) => { anim::quadruped_low::AlphaAnimation::update_skeleton( &target_base, - time, + (vel.0.magnitude(), time), state.state_time, &mut state_animation_rate, skeleton_attr, From 47d5c635dee6020e63579b4390bb4712572841be Mon Sep 17 00:00:00 2001 From: jshipsey Date: Tue, 25 Aug 2020 02:57:13 -0400 Subject: [PATCH 06/28] first attempt at adaptive stride system --- voxygen/src/anim/src/quadruped_medium/run.rs | 413 ++++++++----------- 1 file changed, 165 insertions(+), 248 deletions(-) diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 8e12e0ee01..73dbc40717 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -25,39 +25,72 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; let lab = 0.6; //6 - - let speedmult = if speed > 8.0 { + let amplitude = (speed / 24.0).max(0.25); + let amplitude2 = (speed * 1.4 / 24.0).min(0.8); + let amplitude3 = (speed / 24.0).min(0.7); + let speedmult = if speed > 0.0 { 1.2 * (1.0 * skeleton_attr.tempo) } else { 0.9 * (1.0 * skeleton_attr.tempo) }; - + //println!("{:?}", avg_speed); + let canceler = speed / 24.0; let short = (((1.0) / (0.72 + 0.28 - * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.0).sin()) + * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * -0.15).sin()) .powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.0).sin()); + * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * -0.15).sin()); // + let shortalt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.35).sin(); - let shortalt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.5).sin(); + let noisify1 = (anim_time as f32 * 13.0 * lab as f32 * speedmult).sin() * 0.1; + let noisify2 = (anim_time as f32 * 17.0 * lab as f32 * speedmult).sin() * 0.1; - let footvert = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.0).sin(); - let footvertt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.4).sin(); - let footvertalt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.2).sin(); - let footverttalt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.6).sin(); + let speedadjust = if speed < 5.0 { 0.0 } else { speed }; + let shift1 = speedadjust / 24.0 * 0.0; + let shift2 = speedadjust / 24.0 * PI / -4.0; + let shift3 = speedadjust / 24.0 * PI / 2.0; + let shift4 = speedadjust / 24.0 * PI / 4.0; - let footvertf = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.3).sin(); - let footverttf = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.7).sin(); - let footvertaltf = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.5).sin(); - let footverttaltf = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.9).sin(); + //FL + let foot1a = + (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.0 + shift1)) + .sin(); //1.5 + let foot1b = + (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.4 + shift1)) + .sin(); //1.9 + + //FR + let foot2a = (anim_time as f32 * 16.0 * lab as f32 * speedmult + + noisify2 + + PI * (PI / 4.0 + shift2)) + .sin(); //1.2 + let foot2b = (anim_time as f32 * 16.0 * lab as f32 * speedmult + + noisify2 + + PI * (0.4 + PI / 4.0 + shift2)) + .sin(); //1.6 + + //BL + let foot3a = + (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.0 + shift3)) + .sin(); //0.0 + let foot3b = + (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.4 + shift3)) + .sin(); //0.4 + + //BR + let foot4a = (anim_time as f32 * 16.0 * lab as f32 * speedmult + + noisify2 + + PI * (0.0 + PI / 4.0 + shift4)) + .sin(); //0.3 + let foot4b = (anim_time as f32 * 16.0 * lab as f32 * speedmult + + noisify2 + + PI * (0.4 + PI / 4.0 + shift4)) + .sin(); //0.7 - let footvertfslow = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.6).sin(); - let footverttfslow = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.0).sin(); - let footvertaltfslow = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 1.8).sin(); - let footverttaltfslow = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 2.2).sin(); // let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -73,253 +106,137 @@ impl Animation for RunAnimation { 0.0 } * 1.3; let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); - if speed < 8.0 { - //Trot - next.head_upper.position = - Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = - Quaternion::rotation_x(short * -0.03 - 0.1 + x_tilt * -0.5) - * Quaternion::rotation_z(tilt * -1.2); - next.head_upper.scale = Vec3::one(); - next.head_lower.position = - Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(tilt * -0.8) - * Quaternion::rotation_x(short * -0.05 + x_tilt * -0.5); - next.head_lower.scale = Vec3::one() * 1.02; + //Gallop + next.head_upper.position = + Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); + next.head_upper.orientation = Quaternion::rotation_x(amplitude * short * -0.03 - 0.1) + * Quaternion::rotation_z(tilt * -1.2) + * Quaternion::rotation_y(tilt * 0.8); + next.head_upper.scale = Vec3::one(); - next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(0.0); - next.jaw.scale = Vec3::one() * 1.02; + next.head_lower.position = + Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); + next.head_lower.orientation = Quaternion::rotation_z(tilt * -0.8) + * Quaternion::rotation_x(amplitude * short * -0.05) + * Quaternion::rotation_y(tilt * 0.3); + next.head_lower.scale = Vec3::one() * 1.02; - next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); - next.tail.orientation = - Quaternion::rotation_x(shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); - next.tail.scale = Vec3::one(); + next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); + next.jaw.orientation = Quaternion::rotation_x(0.0); + next.jaw.scale = Vec3::one() * 1.02; - next.torso_front.position = Vec3::new( - 0.0, - skeleton_attr.torso_front.0, - skeleton_attr.torso_front.1 + shortalt * 1.0 + x_tilt, - ) * skeleton_attr.scaler - / 11.0; - next.torso_front.orientation = Quaternion::rotation_x(short * 0.03 + x_tilt) - * Quaternion::rotation_y(0.0) - * Quaternion::rotation_z(tilt * -1.5); - next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; + next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); + next.tail.orientation = + Quaternion::rotation_x(shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); + next.tail.scale = Vec3::one(); - next.torso_back.position = Vec3::new( - 0.0, - skeleton_attr.torso_back.0, - skeleton_attr.torso_back.1 + shortalt * 0.04 - 0.2, - ); - next.torso_back.orientation = - Quaternion::rotation_x(short * 0.06) * Quaternion::rotation_z(tilt * 1.8); - next.torso_back.scale = Vec3::one(); + next.torso_front.position = Vec3::new( + 0.0, + skeleton_attr.torso_front.0, + skeleton_attr.torso_front.1 + canceler * shortalt * 2.5 + x_tilt * 10.0, + ) * skeleton_attr.scaler + / 11.0; + next.torso_front.orientation = Quaternion::rotation_x(amplitude * short * -0.13 + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(tilt * -1.5); + next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; - next.ears.position = Vec3::new(0.0, skeleton_attr.ears.0, skeleton_attr.ears.1); - next.ears.orientation = Quaternion::rotation_x(shortalt * 0.04 + 0.2); - next.ears.scale = Vec3::one() * 1.02; + next.torso_back.position = Vec3::new( + 0.0, + skeleton_attr.torso_back.0, + skeleton_attr.torso_back.1 + amplitude * shortalt * 0.2 - 0.2, + ); + next.torso_back.orientation = Quaternion::rotation_x(amplitude * short * -0.1) + * Quaternion::rotation_z(tilt * 1.8) + * Quaternion::rotation_y(tilt * 0.6); + next.torso_back.scale = Vec3::one(); - next.leg_fl.position = Vec3::new( - -skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + footvertaltfslow * -1.4, - skeleton_attr.leg_f.2 + 1.0 + footverttaltfslow * -0.3, - ); - next.leg_fl.orientation = Quaternion::rotation_x(footverttaltfslow * -0.35) - * Quaternion::rotation_z(tilt * -0.5); - next.leg_fl.scale = Vec3::one() * 1.02; + next.ears.position = Vec3::new(0.0, skeleton_attr.ears.0, skeleton_attr.ears.1); + next.ears.orientation = Quaternion::rotation_x(amplitude * shortalt * 0.2 + 0.2); + next.ears.scale = Vec3::one() * 1.02; - next.leg_fr.position = Vec3::new( - skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + footvertalt * -1.4, - skeleton_attr.leg_f.2 + 1.0 + footverttalt * -0.3, - ); - next.leg_fr.orientation = - Quaternion::rotation_x(footverttalt * -0.35) * Quaternion::rotation_z(tilt * -0.5); - next.leg_fr.scale = Vec3::one() * 1.02; + next.leg_fl.position = Vec3::new( + -skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1 + amplitude3 * foot1a * -1.3, + skeleton_attr.leg_f.2 + canceler + amplitude3 * foot1b * -1.9, + ); + next.leg_fl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * -0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); + next.leg_fl.scale = Vec3::one() * 1.02; - next.leg_bl.position = Vec3::new( - -skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + footvertalt * -1.0, - skeleton_attr.leg_b.2 + 1.0 + footverttalt * -0.3, - ); - next.leg_bl.orientation = - Quaternion::rotation_x(footverttalt * -0.2) * Quaternion::rotation_z(tilt * -1.5); - next.leg_bl.scale = Vec3::one() * 1.02; + next.leg_fr.position = Vec3::new( + skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1 + amplitude3 * foot2a * -1.3, + skeleton_attr.leg_f.2 + canceler + amplitude3 * foot2b * -1.9, + ); + next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.65) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); + next.leg_fr.scale = Vec3::one() * 1.02; - next.leg_br.position = Vec3::new( - skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + footvertaltfslow * -1.0, - skeleton_attr.leg_b.2 + 1.0 + footverttaltfslow * -0.3, - ); - next.leg_br.orientation = Quaternion::rotation_x(footverttaltfslow * -0.2) - * Quaternion::rotation_z(tilt * -1.5); - next.leg_br.scale = Vec3::one() * 1.02; + next.leg_bl.position = Vec3::new( + -skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1 + amplitude3 * foot3a * -1.7, + skeleton_attr.leg_b.2 + canceler + amplitude3 * foot3b * -1.9, + ); + next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot3b * -0.45 - 0.2) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.scale = Vec3::one() * 1.02; - next.foot_fl.position = Vec3::new( - -skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 + ((footvertfslow * -1.0 * skeleton_attr.maximize).max(0.0)), - ); - next.foot_fl.orientation = - Quaternion::rotation_x((1.0 - skeleton_attr.dampen) * -1.0 + footverttfslow * 0.5); - next.foot_fl.scale = Vec3::one() * 0.96; + next.leg_br.position = Vec3::new( + skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1 + amplitude3 * foot4a * -1.7, + skeleton_attr.leg_b.2 + canceler + amplitude3 * foot4b * -1.9, + ); + next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot4b * -0.45 - 0.2) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.scale = Vec3::one() * 1.02; - next.foot_fr.position = Vec3::new( - skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 + ((footvert * -1.0 * skeleton_attr.maximize).max(0.0)), - ); - next.foot_fr.orientation = - Quaternion::rotation_x((1.0 - skeleton_attr.dampen) * -1.0 + footvertt * 0.5); - next.foot_fr.scale = Vec3::one() * 0.96; + next.foot_fl.position = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2 + + ((amplitude2 * foot1a * 2.7 * skeleton_attr.maximize).max(0.0)), + ); + next.foot_fl.orientation = Quaternion::rotation_x( + (1.0 - skeleton_attr.dampen) * -1.0 + amplitude2 * foot1b * -0.9, + ) * Quaternion::rotation_y(tilt * -1.0); + next.foot_fl.scale = Vec3::one() * 0.96; - next.foot_bl.position = Vec3::new( - -skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((footvert * -1.8).max(0.0)), - ); - next.foot_bl.orientation = Quaternion::rotation_x(footvertt * 0.5 - 0.2); - next.foot_bl.scale = Vec3::one() * 0.96; + next.foot_fr.position = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2 + + ((amplitude2 * foot2a * 2.7 * skeleton_attr.maximize).max(0.0)), + ); + next.foot_fr.orientation = Quaternion::rotation_x( + (1.0 - skeleton_attr.dampen) * -1.0 + amplitude2 * foot2b * -0.9, + ) * Quaternion::rotation_y(tilt * -1.0); + next.foot_fr.scale = Vec3::one() * 0.96; - next.foot_br.position = Vec3::new( - skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((footvertfslow * -0.8).max(-0.0)), - ); - next.foot_br.orientation = Quaternion::rotation_x(footverttfslow * 0.5 - 0.2); - next.foot_br.scale = Vec3::one() * 0.96; - } else { - let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); - - //Gallop - next.head_upper.position = - Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = Quaternion::rotation_x(short * -0.03 - 0.1) - * Quaternion::rotation_z(tilt * -1.2) - * Quaternion::rotation_y(tilt * 0.8); - next.head_upper.scale = Vec3::one(); - - next.head_lower.position = - Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(tilt * -0.8) - * Quaternion::rotation_x(short * -0.05) - * Quaternion::rotation_y(tilt * 0.3); - next.head_lower.scale = Vec3::one() * 1.02; - - next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(0.0); - next.jaw.scale = Vec3::one() * 1.02; - - next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); - next.tail.orientation = - Quaternion::rotation_x(shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); - next.tail.scale = Vec3::one(); - - next.torso_front.position = Vec3::new( - 0.0, - skeleton_attr.torso_front.0, - skeleton_attr.torso_front.1 + shortalt * 2.5 + x_tilt * 10.0, - ) * skeleton_attr.scaler - / 11.0; - next.torso_front.orientation = Quaternion::rotation_x(short * 0.13 + x_tilt) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.5); - next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; - - next.torso_back.position = Vec3::new( - 0.0, - skeleton_attr.torso_back.0, - skeleton_attr.torso_back.1 + shortalt * 0.2 - 0.2, - ); - next.torso_back.orientation = Quaternion::rotation_x(short * 0.1) - * Quaternion::rotation_z(tilt * 1.8) - * Quaternion::rotation_y(tilt * 0.6); - next.torso_back.scale = Vec3::one(); - - next.ears.position = Vec3::new(0.0, skeleton_attr.ears.0, skeleton_attr.ears.1); - next.ears.orientation = Quaternion::rotation_x(shortalt * 0.2 + 0.2); - next.ears.scale = Vec3::one() * 1.02; - - next.leg_fl.position = Vec3::new( - -skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + footvertaltf * -1.3, - skeleton_attr.leg_f.2 + 1.0 + footverttaltf * -1.9, - ); - next.leg_fl.orientation = Quaternion::rotation_x(footverttaltf * -0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); - next.leg_fl.scale = Vec3::one() * 1.02; - - next.leg_fr.position = Vec3::new( - skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + footvertalt * -1.3, - skeleton_attr.leg_f.2 + 1.0 + footverttalt * -1.9, - ); - next.leg_fr.orientation = Quaternion::rotation_x(footverttalt * -0.65) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); - next.leg_fr.scale = Vec3::one() * 1.02; - - next.leg_bl.position = Vec3::new( - -skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + footvert * -1.7, - skeleton_attr.leg_b.2 + 1.0 + footvertt * -1.5, - ); - next.leg_bl.orientation = Quaternion::rotation_x(footvertt * -0.45 - 0.2) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); - next.leg_bl.scale = Vec3::one() * 1.02; - - next.leg_br.position = Vec3::new( - skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + footvertf * -1.7, - skeleton_attr.leg_b.2 + 1.0 + footverttf * -1.5, - ); - next.leg_br.orientation = Quaternion::rotation_x(footverttf * -0.45 - 0.2) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); - next.leg_br.scale = Vec3::one() * 1.02; - - next.foot_fl.position = Vec3::new( - -skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 + ((footvertf * -2.7 * skeleton_attr.maximize).max(0.0)), - ); - next.foot_fl.orientation = - Quaternion::rotation_x((1.0 - skeleton_attr.dampen) * -1.0 + footverttf * 0.9) - * Quaternion::rotation_y(tilt * -1.0); - next.foot_fl.scale = Vec3::one() * 0.96; - - next.foot_fr.position = Vec3::new( - skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 + ((footvert * -2.7 * skeleton_attr.maximize).max(0.0)), - ); - next.foot_fr.orientation = - Quaternion::rotation_x((1.0 - skeleton_attr.dampen) * -1.0 + footvertt * 0.9) - * Quaternion::rotation_y(tilt * -1.0); - next.foot_fr.scale = Vec3::one() * 0.96; - - next.foot_bl.position = Vec3::new( - -skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((footvert * 1.3).max(0.0)), - ); - next.foot_bl.orientation = Quaternion::rotation_x(footvertt * -0.9 - 0.2) + next.foot_bl.position = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2 + ((amplitude2 * foot3a * 1.8).max(-0.0)), + ); + next.foot_bl.orientation = + Quaternion::rotation_x(amplitude2 * foot3b * -1.3 - 0.2 * speed / 24.0) * Quaternion::rotation_y(tilt * -1.0); - next.foot_bl.scale = Vec3::one() * 0.96; + next.foot_bl.scale = Vec3::one() * 0.96; - next.foot_br.position = Vec3::new( - skeleton_attr.feet_b.0, - skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((footvertf * 1.3).max(-0.0)), - ); - next.foot_br.orientation = Quaternion::rotation_x(footverttf * -0.9 - 0.2) + next.foot_br.position = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2 + ((amplitude2 * foot4a * 1.8).max(0.0)), + ); + next.foot_br.orientation = + Quaternion::rotation_x(amplitude2 * foot4b * -1.3 - 0.2 * speed / 24.0) * Quaternion::rotation_y(tilt * -1.0); - next.foot_br.scale = Vec3::one() * 0.96; - } + next.foot_br.scale = Vec3::one() * 0.96; next } } From 883aa1754b85c5ff1bbf5b0a7ffc904d4c63a77d Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 26 Aug 2020 02:47:21 -0400 Subject: [PATCH 07/28] refining pace setup. refined species anim variables --- voxygen/src/anim/src/quadruped_medium/mod.rs | 6 +- voxygen/src/anim/src/quadruped_medium/run.rs | 133 ++++++++++--------- 2 files changed, 76 insertions(+), 63 deletions(-) diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 78311579d3..abc6a4b275 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -229,7 +229,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Lion, _) => (6.5, -6.5, -2.0), (Tarasque, _) => (7.0, -8.0, -6.0), (Tiger, _) => (6.0, -5.0, -3.0), - (Wolf, _) => (4.5, -6.5, -1.0), + (Wolf, _) => (4.5, -6.5, -1.5), (Frostfang, _) => (5.5, -5.5, -2.0), (Mouflon, _) => (4.0, -5.0, -5.0), (Catoblepas, _) => (7.0, 2.0, -6.0), @@ -242,7 +242,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Lion, _) => (6.0, -6.0, -2.0), (Tarasque, _) => (6.0, -6.5, -6.5), (Tiger, _) => (6.0, -7.5, -3.0), - (Wolf, _) => (5.0, -6.5, -2.5), + (Wolf, _) => (5.0, -6.5, -3.0), (Frostfang, _) => (3.5, -4.5, -2.0), (Mouflon, _) => (3.5, -8.0, -4.5), (Catoblepas, _) => (6.0, -2.5, -2.5), @@ -310,7 +310,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Wolf, _) => (1.0), (Frostfang, _) => (1.2), (Mouflon, _) => (1.1), - (Catoblepas, _) => (0.9), + (Catoblepas, _) => (0.0), (Bonerattler, _) => (0.8), }, tempo: match (body.species, body.body_type) { diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 73dbc40717..699d478c98 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -2,7 +2,7 @@ use super::{ super::{vek::*, Animation}, QuadrupedMediumSkeleton, SkeletonAttr, }; -use std::f32::consts::PI; +use std::{f32::consts::PI, ops::Mul}; pub struct RunAnimation; @@ -16,7 +16,7 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (velocity, orientation, last_ori, _global_time, avg_vel): Self::Dependency, + (velocity, orientation, last_ori, global_time, avg_vel): Self::Dependency, anim_time: f64, rate: &mut f32, skeleton_attr: &SkeletonAttr, @@ -24,30 +24,39 @@ impl Animation for RunAnimation { let mut next = (*skeleton).clone(); let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; + //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); let lab = 0.6; //6 let amplitude = (speed / 24.0).max(0.25); - let amplitude2 = (speed * 1.4 / 24.0).min(0.8); - let amplitude3 = (speed / 24.0).min(0.7); + let amplitude2 = (speed * 1.4 / 24.0).max(0.6); + let amplitude3 = (speed / 24.0).max(0.35); let speedmult = if speed > 0.0 { 1.2 * (1.0 * skeleton_attr.tempo) } else { 0.9 * (1.0 * skeleton_attr.tempo) }; - //println!("{:?}", avg_speed); let canceler = speed / 24.0; let short = (((1.0) / (0.72 + 0.28 - * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * -0.15).sin()) + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin()) .powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * -0.15).sin()); + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin()); // - let shortalt = (anim_time as f32 * 16.0 * lab as f32 * speedmult + PI * 0.35).sin(); - - let noisify1 = (anim_time as f32 * 13.0 * lab as f32 * speedmult).sin() * 0.1; - let noisify2 = (anim_time as f32 * 17.0 * lab as f32 * speedmult).sin() * 0.1; + let shortalt = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 0.35).sin(); + let look = Vec2::new( + ((global_time + anim_time) as f32 / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + ((global_time + anim_time) as f32 / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, + ); let speedadjust = if speed < 5.0 { 0.0 } else { speed }; let shift1 = speedadjust / 24.0 * 0.0; @@ -56,39 +65,32 @@ impl Animation for RunAnimation { let shift4 = speedadjust / 24.0 * PI / 4.0; //FL - let foot1a = - (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.0 + shift1)) - .sin(); //1.5 - let foot1b = - (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.4 + shift1)) - .sin(); //1.9 + let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + + PI * (0.0 + canceler * 0.08 + shift1)) + .sin(); //1.5 + let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + + PI * (0.4 + canceler * 0.08 + shift1)) + .sin(); //1.9 //FR - let foot2a = (anim_time as f32 * 16.0 * lab as f32 * speedmult - + noisify2 - + PI * (PI / 4.0 + shift2)) - .sin(); //1.2 - let foot2b = (anim_time as f32 * 16.0 * lab as f32 * speedmult - + noisify2 + let foot2a = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (PI / 4.0 + shift2)).sin(); //1.2 + let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (0.4 + PI / 4.0 + shift2)) .sin(); //1.6 //BL let foot3a = - (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.0 + shift3)) - .sin(); //0.0 + (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (0.0 + shift3)).sin(); //0.0 let foot3b = - (anim_time as f32 * 16.0 * lab as f32 * speedmult + noisify1 + PI * (0.4 + shift3)) - .sin(); //0.4 + (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (0.4 + shift3)).sin(); //0.4 //BR - let foot4a = (anim_time as f32 * 16.0 * lab as f32 * speedmult - + noisify2 - + PI * (0.0 + PI / 4.0 + shift4)) + let foot4a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + + PI * (0.0 + canceler * 0.15 + PI / 4.0 + shift4)) .sin(); //0.3 - let foot4b = (anim_time as f32 * 16.0 * lab as f32 * speedmult - + noisify2 - + PI * (0.4 + PI / 4.0 + shift4)) + let foot4b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + + PI * (0.4 + canceler * 0.15 + PI / 4.0 + shift4)) .sin(); //0.7 // @@ -110,9 +112,10 @@ impl Animation for RunAnimation { //Gallop next.head_upper.position = Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = Quaternion::rotation_x(amplitude * short * -0.03 - 0.1) - * Quaternion::rotation_z(tilt * -1.2) - * Quaternion::rotation_y(tilt * 0.8); + next.head_upper.orientation = + Quaternion::rotation_x(look.y * 0.1 / canceler + amplitude * short * -0.03 - 0.1) + * Quaternion::rotation_z(look.x * 0.1 / canceler + tilt * -1.2) + * Quaternion::rotation_y(tilt * 0.8); next.head_upper.scale = Vec3::one(); next.head_lower.position = @@ -134,12 +137,16 @@ impl Animation for RunAnimation { next.torso_front.position = Vec3::new( 0.0, skeleton_attr.torso_front.0, - skeleton_attr.torso_front.1 + canceler * shortalt * 2.5 + x_tilt * 10.0, + skeleton_attr.torso_front.1 + + canceler * 1.0 + + canceler * shortalt * 2.5 + + x_tilt * 10.0, ) * skeleton_attr.scaler / 11.0; - next.torso_front.orientation = Quaternion::rotation_x(amplitude * short * -0.13 + x_tilt) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.5); + next.torso_front.orientation = + Quaternion::rotation_x((amplitude * (short * -0.13).max(-0.2)) + x_tilt) + * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(tilt * -1.5); next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; next.torso_back.position = Vec3::new( @@ -161,7 +168,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_f.1 + amplitude3 * foot1a * -1.3, skeleton_attr.leg_f.2 + canceler + amplitude3 * foot1b * -1.9, ); - next.leg_fl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * -0.65) + next.leg_fl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * -0.55) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fl.scale = Vec3::one() * 1.02; @@ -171,39 +178,43 @@ impl Animation for RunAnimation { skeleton_attr.leg_f.1 + amplitude3 * foot2a * -1.3, skeleton_attr.leg_f.2 + canceler + amplitude3 * foot2b * -1.9, ); - next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.65) + next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.55) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.scale = Vec3::one() * 1.02; next.leg_bl.position = Vec3::new( -skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + amplitude3 * foot3a * -1.7, - skeleton_attr.leg_b.2 + canceler + amplitude3 * foot3b * -1.9, + skeleton_attr.leg_b.1 + amplitude3 * foot3a * -1.9, + skeleton_attr.leg_b.2 + canceler + amplitude3 * ((foot3b * -2.6).min(1.0)), ); - next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot3b * -0.45 - 0.2) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.orientation = + Quaternion::rotation_x(amplitude3 * foot3b * -0.5 - 0.2 * canceler) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_bl.scale = Vec3::one() * 1.02; next.leg_br.position = Vec3::new( skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + amplitude3 * foot4a * -1.7, - skeleton_attr.leg_b.2 + canceler + amplitude3 * foot4b * -1.9, + skeleton_attr.leg_b.1 + amplitude3 * foot4a * -1.9, + skeleton_attr.leg_b.2 + canceler + amplitude3 * ((foot4b * -2.6).min(1.0)), ); - next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot4b * -0.45 - 0.2) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.orientation = + Quaternion::rotation_x(amplitude3 * foot4b * -0.5 - 0.2 * canceler) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_br.scale = Vec3::one() * 1.02; next.foot_fl.position = Vec3::new( -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2 - + ((amplitude2 * foot1a * 2.7 * skeleton_attr.maximize).max(0.0)), + + ((amplitude2 * foot1a * 2.7 + + amplitude2 * foot1a * skeleton_attr.maximize * canceler) + .max(0.0)), ); next.foot_fl.orientation = Quaternion::rotation_x( - (1.0 - skeleton_attr.dampen) * -1.0 + amplitude2 * foot1b * -0.9, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fl.scale = Vec3::one() * 0.96; @@ -211,30 +222,32 @@ impl Animation for RunAnimation { skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2 - + ((amplitude2 * foot2a * 2.7 * skeleton_attr.maximize).max(0.0)), + + ((amplitude2 * foot2a * 2.7 + + amplitude2 * foot2a * skeleton_attr.maximize * canceler) + .max(0.0)), ); next.foot_fr.orientation = Quaternion::rotation_x( - (1.0 - skeleton_attr.dampen) * -1.0 + amplitude2 * foot2b * -0.9, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fr.scale = Vec3::one() * 0.96; next.foot_bl.position = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((amplitude2 * foot3a * 1.8).max(-0.0)), + skeleton_attr.feet_b.2 + ((amplitude2 * foot3a * 2.5).max(-1.0)), ); next.foot_bl.orientation = - Quaternion::rotation_x(amplitude2 * foot3b * -1.3 - 0.2 * speed / 24.0) + Quaternion::rotation_x(amplitude2 * foot3b * -0.5 - 0.2 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_bl.scale = Vec3::one() * 0.96; next.foot_br.position = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((amplitude2 * foot4a * 1.8).max(0.0)), + skeleton_attr.feet_b.2 + ((amplitude2 * foot4a * 2.5).max(-1.0)), ); next.foot_br.orientation = - Quaternion::rotation_x(amplitude2 * foot4b * -1.3 - 0.2 * speed / 24.0) + Quaternion::rotation_x(amplitude2 * foot4b * -0.5 - 0.2 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_br.scale = Vec3::one() * 0.96; next From 1097dbcc25c8bd47a7f47f6cc62e22b47352bce9 Mon Sep 17 00:00:00 2001 From: Snowram Date: Thu, 27 Aug 2020 03:40:57 +0200 Subject: [PATCH 08/28] Improve adaptative quadmed run --- voxygen/src/anim/src/quadruped_medium/run.rs | 61 +++++++++++--------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 699d478c98..c9c39061e6 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -34,7 +34,7 @@ impl Animation for RunAnimation { } else { 0.9 * (1.0 * skeleton_attr.tempo) }; - let canceler = speed / 24.0; + let canceler = speed / 25.0; let short = (((1.0) / (0.72 + 0.28 @@ -44,7 +44,7 @@ impl Animation for RunAnimation { * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin()); // - let shortalt = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 0.35).sin(); + let shortalt = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0).sin(); let look = Vec2::new( ((global_time + anim_time) as f32 / 2.0) .floor() @@ -58,39 +58,40 @@ impl Animation for RunAnimation { * 0.25, ); - let speedadjust = if speed < 5.0 { 0.0 } else { speed }; - let shift1 = speedadjust / 24.0 * 0.0; - let shift2 = speedadjust / 24.0 * PI / -4.0; - let shift3 = speedadjust / 24.0 * PI / 2.0; - let shift4 = speedadjust / 24.0 * PI / 4.0; + let speedadjust = if speed < 5.0 { 0.0 } else { speed / 25.0 }; + let shift1 = speedadjust - PI / 2.0 - speedadjust * PI * 3.0 / 4.0; + let shift2 = speedadjust + PI / 2.0 + speedadjust * PI / 2.0; + let shift3 = speedadjust + PI / 4.0 - speedadjust * PI / 4.0; + let shift4 = speedadjust - PI * 3.0 / 4.0 + speedadjust * PI / 2.0; //FL let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + PI * (0.0 + canceler * 0.08 + shift1)) + + 0.0 + canceler * 0.08 + shift1) .sin(); //1.5 let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + PI * (0.4 + canceler * 0.08 + shift1)) + + 0.4 + canceler * 0.08 + shift1) .sin(); //1.9 //FR let foot2a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (PI / 4.0 + shift2)).sin(); //1.2 + (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + PI * (0.4 + PI / 4.0 + shift2)) + + 0.4 + shift2) .sin(); //1.6 //BL let foot3a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (0.0 + shift3)).sin(); //0.0 + (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 let foot3b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * (0.4 + shift3)).sin(); //0.4 + (anim_time as f32 * (16.0) * lab as f32 * speedmult + + 0.4 + shift3).sin(); //0.4 //BR let foot4a = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + PI * (0.0 + canceler * 0.15 + PI / 4.0 + shift4)) + + 0.0 + canceler * 0.15 + shift4) .sin(); //0.3 let foot4b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + PI * (0.4 + canceler * 0.15 + PI / 4.0 + shift4)) + + 0.4 + canceler * 0.15 + shift4) .sin(); //0.7 // @@ -131,7 +132,7 @@ impl Animation for RunAnimation { next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); next.tail.orientation = - Quaternion::rotation_x(shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); + Quaternion::rotation_x(amplitude * shortalt * 0.3) * Quaternion::rotation_z(tilt * 1.5); next.tail.scale = Vec3::one(); next.torso_front.position = Vec3::new( @@ -178,7 +179,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_f.1 + amplitude3 * foot2a * -1.3, skeleton_attr.leg_f.2 + canceler + amplitude3 * foot2b * -1.9, ); - next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.55) + next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.5) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.scale = Vec3::one() * 1.02; @@ -209,9 +210,10 @@ impl Animation for RunAnimation { -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, skeleton_attr.feet_f.2 - + ((amplitude2 * foot1a * 2.7 - + amplitude2 * foot1a * skeleton_attr.maximize * canceler) - .max(0.0)), + - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot2a.sin()).min(0.0)) + + ((amplitude2 * foot1a + + amplitude2 * foot1a * skeleton_attr.maximize * canceler) + .max(0.0)), ); next.foot_fl.orientation = Quaternion::rotation_x( ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.7, @@ -221,10 +223,11 @@ impl Animation for RunAnimation { next.foot_fr.position = Vec3::new( skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 - + ((amplitude2 * foot2a * 2.7 - + amplitude2 * foot2a * skeleton_attr.maximize * canceler) - .max(0.0)), + skeleton_attr.feet_f.2 + - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot4a.sin()).min(0.0)) + + ((amplitude2 * foot2a + + amplitude2 * foot2a * skeleton_attr.maximize * canceler) + .max(0.0)), ); next.foot_fr.orientation = Quaternion::rotation_x( ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.7, @@ -234,17 +237,21 @@ impl Animation for RunAnimation { next.foot_bl.position = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((amplitude2 * foot3a * 2.5).max(-1.0)), + skeleton_attr.feet_b.2 + + ((amplitude2 * foot3a * 0.5).max(-1.0)) + - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot1a.sin()).min(0.0)), ); next.foot_bl.orientation = Quaternion::rotation_x(amplitude2 * foot3b * -0.5 - 0.2 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_bl.scale = Vec3::one() * 0.96; - + next.foot_br.position = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + ((amplitude2 * foot4a * 2.5).max(-1.0)), + skeleton_attr.feet_b.2 + + ((amplitude2 * foot4a * 0.5).max(-1.0)) + - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot3a.sin()).min(0.0)), ); next.foot_br.orientation = Quaternion::rotation_x(amplitude2 * foot4b * -0.5 - 0.2 * canceler) From aa440c02bb5f9a65a086b652ee021ce92e2fba76 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Fri, 28 Aug 2020 03:12:25 -0400 Subject: [PATCH 09/28] proper cycles on quadmed movement --- voxygen/src/anim/src/quadruped_medium/run.rs | 128 ++++++++----------- 1 file changed, 54 insertions(+), 74 deletions(-) diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index c9c39061e6..310e6d2105 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -25,7 +25,7 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); - let lab = 0.6; //6 + let lab = 0.1; //6 let amplitude = (speed / 24.0).max(0.25); let amplitude2 = (speed * 1.4 / 24.0).max(0.6); let amplitude3 = (speed / 24.0).max(0.35); @@ -38,13 +38,15 @@ impl Animation for RunAnimation { let short = (((1.0) / (0.72 + 0.28 - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin()) - .powf(2.0 as f32))) + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5) + .sin()) + .powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15).sin()); + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()); // - let shortalt = (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0).sin(); + let shortalt = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); let look = Vec2::new( ((global_time + anim_time) as f32 / 2.0) .floor() @@ -65,35 +67,25 @@ impl Animation for RunAnimation { let shift4 = speedadjust - PI * 3.0 / 4.0 + speedadjust * PI / 2.0; //FL - let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.0 + canceler * 0.08 + shift1) - .sin(); //1.5 - let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.4 + canceler * 0.08 + shift1) - .sin(); //1.9 - + let foot1a = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.08 + shift1) + .sin(); //1.5 + let foot1b = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.08 + shift1) + .sin(); //1.9 //FR - let foot2a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.4 + shift2) - .sin(); //1.6 - + let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 + let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift2).sin(); //1.6 //BL - let foot3a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.4 + shift3).sin(); //0.4 - + let foot3a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 + let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift3).sin(); //0.4 //BR - let foot4a = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.0 + canceler * 0.15 + shift4) - .sin(); //0.3 - let foot4b = (anim_time as f32 * (16.0) * lab as f32 * speedmult - + 0.4 + canceler * 0.15 + shift4) - .sin(); //0.7 - + let foot4a = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.15 + shift4) + .sin(); //0.3 + let foot4b = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.15 + shift4) + .sin(); //0.7 // let ori: Vec2 = Vec2::from(orientation); let last_ori = Vec2::from(last_ori); @@ -166,95 +158,83 @@ impl Animation for RunAnimation { next.leg_fl.position = Vec3::new( -skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + amplitude3 * foot1a * -1.3, - skeleton_attr.leg_f.2 + canceler + amplitude3 * foot1b * -1.9, + skeleton_attr.leg_f.1 + amplitude3 * foot1b * -1.6, + skeleton_attr.leg_f.2 + amplitude3 * foot1a * 2.3, ); - next.leg_fl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * -0.55) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fl.orientation = + Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot1a * 0.35) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_fl.scale = Vec3::one() * 1.02; next.leg_fr.position = Vec3::new( skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + amplitude3 * foot2a * -1.3, - skeleton_attr.leg_f.2 + canceler + amplitude3 * foot2b * -1.9, + skeleton_attr.leg_f.1 + amplitude3 * foot2b * -2.2, + skeleton_attr.leg_f.2 + amplitude3 * foot2a * 2.8, ); - next.leg_fr.orientation = Quaternion::rotation_x(amplitude3 * foot2b * -0.5) - * Quaternion::rotation_z(tilt * -0.5) - * Quaternion::rotation_y(tilt * 1.5); + next.leg_fr.orientation = + Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot2a * 0.35) + * Quaternion::rotation_z(tilt * -0.5) + * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.scale = Vec3::one() * 1.02; next.leg_bl.position = Vec3::new( -skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + amplitude3 * foot3a * -1.9, - skeleton_attr.leg_b.2 + canceler + amplitude3 * ((foot3b * -2.6).min(1.0)), + skeleton_attr.leg_b.1 + amplitude3 * foot3b * -1.1, + skeleton_attr.leg_b.2 + canceler + amplitude3 * foot3a * 1.6, ); - next.leg_bl.orientation = - Quaternion::rotation_x(amplitude3 * foot3b * -0.5 - 0.2 * canceler) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot3a * 0.12) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_bl.scale = Vec3::one() * 1.02; next.leg_br.position = Vec3::new( skeleton_attr.leg_b.0, - skeleton_attr.leg_b.1 + amplitude3 * foot4a * -1.9, - skeleton_attr.leg_b.2 + canceler + amplitude3 * ((foot4b * -2.6).min(1.0)), + skeleton_attr.leg_b.1 + amplitude3 * foot4b * -1.1, + skeleton_attr.leg_b.2 + canceler + amplitude3 * foot4a * 1.6, ); - next.leg_br.orientation = - Quaternion::rotation_x(amplitude3 * foot4b * -0.5 - 0.2 * canceler) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot4b * 0.12) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_br.scale = Vec3::one() * 1.02; next.foot_fl.position = Vec3::new( -skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 - - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot2a.sin()).min(0.0)) - + ((amplitude2 * foot1a - + amplitude2 * foot1a * skeleton_attr.maximize * canceler) - .max(0.0)), + skeleton_attr.feet_f.2 + (foot1a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fl.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.7, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.8, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fl.scale = Vec3::one() * 0.96; next.foot_fr.position = Vec3::new( skeleton_attr.feet_f.0, skeleton_attr.feet_f.1, - skeleton_attr.feet_f.2 - - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot4a.sin()).min(0.0)) - + ((amplitude2 * foot2a - + amplitude2 * foot2a * skeleton_attr.maximize * canceler) - .max(0.0)), + skeleton_attr.feet_f.2 + (foot2a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fr.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.7, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.8, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fr.scale = Vec3::one() * 0.96; next.foot_bl.position = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 - + ((amplitude2 * foot3a * 0.5).max(-1.0)) - - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot1a.sin()).min(0.0)), + skeleton_attr.feet_b.2 + (foot3a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, ); next.foot_bl.orientation = - Quaternion::rotation_x(amplitude2 * foot3b * -0.5 - 0.2 * canceler) + Quaternion::rotation_x(amplitude2 * foot3b * -0.9 - 0.5 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_bl.scale = Vec3::one() * 0.96; - + next.foot_br.position = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 - + ((amplitude2 * foot4a * 0.5).max(-1.0)) - - ((-6.0 * speedadjust + 3.0).max(0.0) * (foot3a.sin()).min(0.0)), + skeleton_attr.feet_b.2 + (foot4a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, ); next.foot_br.orientation = - Quaternion::rotation_x(amplitude2 * foot4b * -0.5 - 0.2 * canceler) + Quaternion::rotation_x(amplitude2 * foot4b * -0.9 - 0.5 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_br.scale = Vec3::one() * 0.96; next From cd6e1ad45feb88bed15297ce124a7c4e876b0470 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 29 Aug 2020 04:23:12 -0400 Subject: [PATCH 10/28] haul out the critter skele, add theropod --- assets/common/npc_names.json | 56 ++-- .../voxygen/voxel/critter_center_manifest.ron | 266 --------------- .../voxel/npc/archaeos/male/chest_back.vox | 3 + .../voxel/npc/archaeos/male/chest_front.vox | 3 + .../voxel/npc/archaeos/male/foot_l.vox | 3 + .../voxel/npc/archaeos/male/foot_r.vox | 3 + .../voxel/npc/archaeos/male/hand_l.vox | 3 + .../voxel/npc/archaeos/male/hand_r.vox | 3 + .../voxygen/voxel/npc/archaeos/male/head.vox | 3 + .../voxygen/voxel/npc/archaeos/male/jaw.vox | 3 + .../voxygen/voxel/npc/archaeos/male/leg_l.vox | 3 + .../voxygen/voxel/npc/archaeos/male/leg_r.vox | 3 + .../voxygen/voxel/npc/archaeos/male/neck.vox | 3 + .../voxel/npc/archaeos/male/tail_back.vox | 3 + .../voxel/npc/archaeos/male/tail_front.vox | 3 + .../voxygen/voxel/npc/axolotl/male/chest.vox | 4 +- .../voxygen/voxel/npc/axolotl/male/feet_b.vox | 3 - .../voxygen/voxel/npc/axolotl/male/feet_f.vox | 3 - .../feet_b.vox => axolotl/male/foot_bl.vox} | 0 .../feet_f.vox => axolotl/male/foot_br.vox} | 0 .../voxel/npc/axolotl/male/foot_fl.vox | 3 + .../voxel/npc/axolotl/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/axolotl/male/head.vox | 4 +- .../voxygen/voxel/npc/axolotl/male/tail.vox | 4 +- .../voxygen/voxel/npc/fungome/male/chest.vox | 4 +- .../voxygen/voxel/npc/fungome/male/feet_b.vox | 3 - .../voxygen/voxel/npc/fungome/male/feet_f.vox | 3 - .../voxel/npc/fungome/male/foot_bl.vox | 3 + .../voxel/npc/fungome/male/foot_br.vox | 3 + .../voxel/npc/fungome/male/foot_fl.vox | 3 + .../voxel/npc/fungome/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/fungome/male/head.vox | 4 +- .../voxygen/voxel/npc/fungome/male/tail.vox | 4 +- assets/voxygen/voxel/npc/gecko/male/chest.vox | 4 +- .../voxygen/voxel/npc/gecko/male/feet_b.vox | 3 - .../voxygen/voxel/npc/gecko/male/feet_f.vox | 3 - .../voxygen/voxel/npc/gecko/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/gecko/male/foot_br.vox | 3 + .../voxygen/voxel/npc/gecko/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/gecko/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/gecko/male/head.vox | 4 +- assets/voxygen/voxel/npc/gecko/male/tail.vox | 4 +- .../npc/odontotyrannos/Odontotyrannos-0.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-1.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-10.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-11.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-2.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-3.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-4.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-5.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-6.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-7.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-8.vox | 3 + .../npc/odontotyrannos/Odontotyrannos-9.vox | 3 + assets/voxygen/voxel/npc/rat/male/chest.vox | 4 +- assets/voxygen/voxel/npc/rat/male/feet_b.vox | 3 - assets/voxygen/voxel/npc/rat/male/feet_f.vox | 3 - assets/voxygen/voxel/npc/rat/male/feet_r.vox | 3 - assets/voxygen/voxel/npc/rat/male/foot_bl.vox | 3 + assets/voxygen/voxel/npc/rat/male/foot_br.vox | 3 + assets/voxygen/voxel/npc/rat/male/foot_fl.vox | 3 + assets/voxygen/voxel/npc/rat/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/rat/male/head.vox | 4 +- assets/voxygen/voxel/npc/rat/male/tail.vox | 4 +- .../voxygen/voxel/npc/squirrel/male/chest.vox | 4 +- .../voxel/npc/squirrel/male/feet_b.vox | 3 - .../voxel/npc/squirrel/male/feet_f.vox | 3 - .../voxel/npc/squirrel/male/foot_bl.vox | 3 + .../voxel/npc/squirrel/male/foot_br.vox | 3 + .../voxel/npc/squirrel/male/foot_fl.vox | 3 + .../voxel/npc/squirrel/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/squirrel/male/head.vox | 4 +- .../voxygen/voxel/npc/squirrel/male/tail.vox | 4 +- .../voxygen/voxel/npc/turtle/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/turtle/male/foot_br.vox | 3 + .../voxygen/voxel/npc/turtle/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/turtle/male/foot_fr.vox | 3 + .../quadruped_small_central_manifest.ron | 168 ++++++++++ .../quadruped_small_lateral_manifest.ron | 217 ++++++++++++- .../voxel/theropod_central_manifest.ron | 122 +++++++ .../voxel/theropod_lateral_manifest.ron | 106 ++++++ common/src/comp/agent.rs | 8 +- common/src/comp/body.rs | 26 +- common/src/comp/body/quadruped_small.rs | 69 ++-- common/src/comp/body/theropod.rs | 8 +- common/src/comp/mod.rs | 4 +- common/src/generation.rs | 2 +- common/src/loadout_builder.rs | 2 +- common/src/npc.rs | 12 +- common/src/states/utils.rs | 4 +- server/src/events/entity_manipulation.rs | 4 +- voxygen/src/anim/src/critter/idle.rs | 68 ---- voxygen/src/anim/src/critter/jump.rs | 48 --- voxygen/src/anim/src/critter/mod.rs | 136 -------- voxygen/src/anim/src/critter/run.rs | 59 ---- voxygen/src/anim/src/lib.rs | 2 +- voxygen/src/anim/src/quadruped_small/mod.rs | 66 ++++ voxygen/src/anim/src/theropod/idle.rs | 109 +++++++ voxygen/src/anim/src/theropod/jump.rs | 111 +++++++ voxygen/src/anim/src/theropod/mod.rs | 177 ++++++++++ voxygen/src/anim/src/theropod/run.rs | 114 +++++++ voxygen/src/scene/figure/cache.rs | 7 + voxygen/src/scene/figure/load.rs | 306 +++++++++++++++--- voxygen/src/scene/figure/mod.rs | 69 ++-- world/src/layer/mod.rs | 10 +- world/src/lib.rs | 6 +- 106 files changed, 1771 insertions(+), 825 deletions(-) delete mode 100644 assets/voxygen/voxel/critter_center_manifest.ron create mode 100644 assets/voxygen/voxel/npc/archaeos/male/chest_back.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/chest_front.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/foot_l.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/foot_r.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/hand_l.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/hand_r.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/head.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/leg_l.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/leg_r.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/neck.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/tail_back.vox create mode 100644 assets/voxygen/voxel/npc/archaeos/male/tail_front.vox delete mode 100644 assets/voxygen/voxel/npc/axolotl/male/feet_b.vox delete mode 100644 assets/voxygen/voxel/npc/axolotl/male/feet_f.vox rename assets/voxygen/voxel/npc/{turtle/male/feet_b.vox => axolotl/male/foot_bl.vox} (100%) rename assets/voxygen/voxel/npc/{turtle/male/feet_f.vox => axolotl/male/foot_br.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox delete mode 100644 assets/voxygen/voxel/npc/fungome/male/feet_b.vox delete mode 100644 assets/voxygen/voxel/npc/fungome/male/feet_f.vox create mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/fungome/male/foot_fr.vox delete mode 100644 assets/voxygen/voxel/npc/gecko/male/feet_b.vox delete mode 100644 assets/voxygen/voxel/npc/gecko/male/feet_f.vox create mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/gecko/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox delete mode 100644 assets/voxygen/voxel/npc/rat/male/feet_b.vox delete mode 100644 assets/voxygen/voxel/npc/rat/male/feet_f.vox delete mode 100644 assets/voxygen/voxel/npc/rat/male/feet_r.vox create mode 100644 assets/voxygen/voxel/npc/rat/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/rat/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/rat/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/rat/male/foot_fr.vox delete mode 100644 assets/voxygen/voxel/npc/squirrel/male/feet_b.vox delete mode 100644 assets/voxygen/voxel/npc/squirrel/male/feet_f.vox create mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/turtle/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/theropod_central_manifest.ron create mode 100644 assets/voxygen/voxel/theropod_lateral_manifest.ron delete mode 100644 voxygen/src/anim/src/critter/idle.rs delete mode 100644 voxygen/src/anim/src/critter/jump.rs delete mode 100644 voxygen/src/anim/src/critter/mod.rs delete mode 100644 voxygen/src/anim/src/critter/run.rs create mode 100644 voxygen/src/anim/src/theropod/idle.rs create mode 100644 voxygen/src/anim/src/theropod/jump.rs create mode 100644 voxygen/src/anim/src/theropod/mod.rs create mode 100644 voxygen/src/anim/src/theropod/run.rs diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index d24db1222a..d8d7b341f8 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -461,6 +461,30 @@ "frog": { "keyword": "frog", "generic": "Frog" + }, + "rat": { + "keyword": "rat", + "generic": "Rat" + }, + "axolotl": { + "keyword": "axolotl", + "generic": "Axolotl" + }, + "gecko": { + "keyword": "gecko", + "generic": "Gecko" + }, + "turtle": { + "keyword": "turtle", + "generic": "Turtle" + }, + "squirrel": { + "keyword": "squirrel", + "generic": "Squirrel" + }, + "fungome": { + "keyword": "fungome", + "generic": "Fungome" } } }, @@ -550,37 +574,21 @@ } } }, - "critter": { + "theropod": { "body": { - "keyword": "critter", + "keyword": "theropod", "names": [ "Remy" ] }, "species": { - "rat": { - "keyword": "rat", - "generic": "Rat" + "archaeos": { + "keyword": "archaeos", + "generic": "Archaeos" }, - "axolotl": { - "keyword": "axolotl", - "generic": "Axolotl" - }, - "gecko": { - "keyword": "gecko", - "generic": "Gecko" - }, - "turtle": { - "keyword": "turtle", - "generic": "Turtle" - }, - "squirrel": { - "keyword": "squirrel", - "generic": "Squirrel" - }, - "fungome": { - "keyword": "fungome", - "generic": "Fungome" + "odontotyrannos": { + "keyword": "odontotyrannos", + "generic": "Odontotyrannos" } } }, diff --git a/assets/voxygen/voxel/critter_center_manifest.ron b/assets/voxygen/voxel/critter_center_manifest.ron deleted file mode 100644 index 038fcfc611..0000000000 --- a/assets/voxygen/voxel/critter_center_manifest.ron +++ /dev/null @@ -1,266 +0,0 @@ -({ - (Rat, Male): ( - head: ( - offset: (-4.5, -4.0, -4.0), - center: ("npc.rat.male.head"), - ), - chest: ( - offset: (-4.5, -6.0, -4.0), - center: ("npc.rat.male.chest"), - ), - feet_f: ( - offset: (-4.0, -1.5, -1.0), - center: ("npc.rat.male.feet_f"), - ), - feet_b: ( - offset: (-4.0, -1.5, -1.0), - center: ("npc.rat.male.feet_b"), - ), - tail: ( - offset: (-0.5, -4.0, -1.5), - center: ("npc.rat.male.tail"), - ), - ), - (Rat, Female): ( - head: ( - offset: (-4.5, -4.0, -4.0), - center: ("npc.rat.male.head"), - ), - chest: ( - offset: (-4.5, -6.0, -4.0), - center: ("npc.rat.male.chest"), - ), - feet_f: ( - offset: (-4.0, -1.5, -1.0), - center: ("npc.rat.male.feet_f"), - ), - feet_b: ( - offset: (-4.0, -1.5, -1.0), - center: ("npc.rat.male.feet_b"), - ), - tail: ( - offset: (-0.5, -4.0, -1.5), - center: ("npc.rat.male.tail"), - ), - ), - (Axolotl, Male): ( - head: ( - offset: (-3.5, -4.0, -2.0), - center: ("npc.axolotl.male.head"), - ), - chest: ( - offset: (-2.5, -4.0, -1.5), - center: ("npc.axolotl.male.chest"), - ), - feet_f: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.axolotl.male.feet_f"), - ), - feet_b: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.axolotl.male.feet_b"), - ), - tail: ( - offset: (-1.5, -2.5, -1.5), - center: ("npc.axolotl.male.tail"), - ), - ), - (Axolotl, Female): ( - head: ( - offset: (-3.5, -4.0, -2.0), - center: ("npc.axolotl.male.head"), - ), - chest: ( - offset: (-2.5, -4.0, -1.5), - center: ("npc.axolotl.male.chest"), - ), - feet_f: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.axolotl.male.feet_f"), - ), - feet_b: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.axolotl.male.feet_b"), - ), - tail: ( - offset: (-1.5, -2.5, -1.5), - center: ("npc.axolotl.male.tail"), - ), - ), - (Gecko, Male): ( - head: ( - offset: (-2.5, -3.0, -2.0), - center: ("npc.gecko.male.head"), - ), - chest: ( - offset: (-1.5, -4.0, -2.0), - center: ("npc.gecko.male.chest"), - ), - feet_f: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.gecko.male.feet_f"), - ), - feet_b: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.gecko.male.feet_b"), - ), - tail: ( - offset: (-0.5, -2.5, -1.0), - center: ("npc.gecko.male.tail"), - ), - ), - (Gecko, Female): ( - head: ( - offset: (-2.5, -3.0, -2.0), - center: ("npc.gecko.male.head"), - ), - chest: ( - offset: (-1.5, -4.0, -1.5), - center: ("npc.gecko.male.chest"), - ), - feet_f: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.gecko.male.feet_f"), - ), - feet_b: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.gecko.male.feet_b"), - ), - tail: ( - offset: (-0.5, -2.5, -1.0), - center: ("npc.gecko.male.tail"), - ), - ), - (Turtle, Male): ( - head: ( - offset: (-2.5, -2.5, -2.5), - center: ("npc.turtle.male.head"), - ), - chest: ( - offset: (-6.0, -6.0, -4.0), - center: ("npc.turtle.male.chest"), - ), - feet_f: ( - offset: (-5.0, -0.5, -1.0), - center: ("npc.turtle.male.feet_f"), - ), - feet_b: ( - offset: (-5.0, -0.5, -1.0), - center: ("npc.turtle.male.feet_b"), - ), - tail: ( - offset: (-0.5, -2.0, -1.0), - center: ("npc.turtle.male.tail"), - ), - ), - (Turtle, Female): ( - head: ( - offset: (-2.5, -2.5, -2.5), - center: ("npc.turtle.male.head"), - ), - chest: ( - offset: (-6.0, -6.0, -4.0), - center: ("npc.turtle.male.chest"), - ), - feet_f: ( - offset: (-5.0, -0.5, -1.0), - center: ("npc.turtle.male.feet_f"), - ), - feet_b: ( - offset: (-5.0, -0.5, -1.0), - center: ("npc.turtle.male.feet_b"), - ), - tail: ( - offset: (-0.5, -2.0, -1.0), - center: ("npc.turtle.male.tail"), - ), - ), - (Squirrel, Male): ( - head: ( - offset: (-1.5, -2.0, -2.0), - center: ("npc.squirrel.male.head"), - ), - chest: ( - offset: (-1.5, -3.0, -1.5), - center: ("npc.squirrel.male.chest"), - ), - feet_f: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.squirrel.male.feet_f"), - ), - feet_b: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.squirrel.male.feet_b"), - ), - tail: ( - offset: (-1.5, -1.5, -3.0), - center: ("npc.squirrel.male.tail"), - ), - ), - (Squirrel, Female): ( - head: ( - offset: (-1.5, -2.0, -2.0), - center: ("npc.squirrel.male.head"), - ), - chest: ( - offset: (-1.5, -3.0, -1.5), - center: ("npc.squirrel.male.chest"), - ), - feet_f: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.squirrel.male.feet_f"), - ), - feet_b: ( - offset: (-2.0, -0.5, -1.0), - center: ("npc.squirrel.male.feet_b"), - ), - tail: ( - offset: (-1.5, -1.5, -3.0), - center: ("npc.squirrel.male.tail"), - ), - ), - (Fungome, Male): ( - head: ( - offset: (-2.5, -1.5, -2.0), - center: ("npc.fungome.male.head"), - ), - chest: ( - offset: (-6.0, -6.0, -4.0), - center: ("npc.fungome.male.chest"), - ), - feet_f: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.fungome.male.feet_f"), - ), - feet_b: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.fungome.male.feet_b"), - ), - tail: ( - offset: (-1.0, -0.5, -1.0), - center: ("npc.fungome.male.tail"), - ), - ), - (Fungome, Female): ( - head: ( - offset: (-2.5, -1.5, -2.0), - center: ("npc.fungome.male.head"), - ), - chest: ( - offset: (-6.0, -6.0, -4.0), - center: ("npc.fungome.male.chest"), - ), - feet_f: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.fungome.male.feet_f"), - ), - feet_b: ( - offset: (-3.0, -0.5, -1.0), - center: ("npc.fungome.male.feet_b"), - ), - tail: ( - offset: (-1.0, -0.5, -1.0), - center: ("npc.fungome.male.tail"), - ), - ), -}) diff --git a/assets/voxygen/voxel/npc/archaeos/male/chest_back.vox b/assets/voxygen/voxel/npc/archaeos/male/chest_back.vox new file mode 100644 index 0000000000..4fd232a069 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/chest_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c85abf7d62872c13073d1c9ba2722a788c05c74843a2fa7aabd8512058287b8 +size 3580 diff --git a/assets/voxygen/voxel/npc/archaeos/male/chest_front.vox b/assets/voxygen/voxel/npc/archaeos/male/chest_front.vox new file mode 100644 index 0000000000..811b5409bb --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/chest_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f468da4caa09bb6cbb0e782cd70fc326b767fc27faad63c1fad1b1dd1de5e6b +size 5608 diff --git a/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox b/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox new file mode 100644 index 0000000000..03a9710acd --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/foot_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00268caa63742ad6b6ecec52881a67bf1efc4cb914d0f95e3e42610b25a71685 +size 2204 diff --git a/assets/voxygen/voxel/npc/archaeos/male/foot_r.vox b/assets/voxygen/voxel/npc/archaeos/male/foot_r.vox new file mode 100644 index 0000000000..9fe3eed0d0 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:855290c70bc7926c9c95c2e0ab4cc4d0c6a99bd6f3c037ff9548f5d6726dfdaa +size 2204 diff --git a/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox b/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox new file mode 100644 index 0000000000..1151e23ba6 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/hand_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db3c129d96bf431c65c7e8f3ac4049c82682a630806a616ba57f7d844f355a7a +size 1316 diff --git a/assets/voxygen/voxel/npc/archaeos/male/hand_r.vox b/assets/voxygen/voxel/npc/archaeos/male/hand_r.vox new file mode 100644 index 0000000000..495a897c9a --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/hand_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:430c1c47e72e031a20e7ee67de569918584c2d434121961f1b160346ab91146d +size 1316 diff --git a/assets/voxygen/voxel/npc/archaeos/male/head.vox b/assets/voxygen/voxel/npc/archaeos/male/head.vox new file mode 100644 index 0000000000..ee2d960dac --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e7420c1ff8494b9025a963b48f8caf8e7db2b92fa15032983022c9b3a45a907 +size 2884 diff --git a/assets/voxygen/voxel/npc/archaeos/male/jaw.vox b/assets/voxygen/voxel/npc/archaeos/male/jaw.vox new file mode 100644 index 0000000000..3642958e4f --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b8e90768bb66034e1cc6cfec2ef9db70448821eef438d4e9a7c278252ae4344 +size 2300 diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox new file mode 100644 index 0000000000..3d553d3f5c --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cfad23ebce2f98a450497f430e2733c013697144f4550ff2bf4375b8744ca90 +size 2540 diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox new file mode 100644 index 0000000000..f9ce12f95f --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f75106d357c8c677f3f19d8febd9ed399e23e6572372df601af16ab4dc38cb22 +size 2540 diff --git a/assets/voxygen/voxel/npc/archaeos/male/neck.vox b/assets/voxygen/voxel/npc/archaeos/male/neck.vox new file mode 100644 index 0000000000..694e43c092 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34b4900065f932ce51df7a3c9683bd2f5840f9fae14a5ab682c7ff12a9f577d8 +size 2836 diff --git a/assets/voxygen/voxel/npc/archaeos/male/tail_back.vox b/assets/voxygen/voxel/npc/archaeos/male/tail_back.vox new file mode 100644 index 0000000000..0e7c854337 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/tail_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94c532de8ab002976e71f300003b1d7d6c82794a436de7e4232cce56b9e8b50c +size 2624 diff --git a/assets/voxygen/voxel/npc/archaeos/male/tail_front.vox b/assets/voxygen/voxel/npc/archaeos/male/tail_front.vox new file mode 100644 index 0000000000..21221ff729 --- /dev/null +++ b/assets/voxygen/voxel/npc/archaeos/male/tail_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1254eaadefcb5c5125ed421dcab79588a203719bab20c7303afa63c7a8dc3234 +size 1960 diff --git a/assets/voxygen/voxel/npc/axolotl/male/chest.vox b/assets/voxygen/voxel/npc/axolotl/male/chest.vox index d0079e149c..f69772001d 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/chest.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ddc9f5687ec55dd25e98cf4f4fddca222585f9788e2480fc0d04b4095222c93d -size 1352 +oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 +size 3736 diff --git a/assets/voxygen/voxel/npc/axolotl/male/feet_b.vox b/assets/voxygen/voxel/npc/axolotl/male/feet_b.vox deleted file mode 100644 index 8fe0d4abc5..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/feet_b.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:382afa56ac6638a27743553618aef968203572ff558ed09da06b324178fa888c -size 1128 diff --git a/assets/voxygen/voxel/npc/axolotl/male/feet_f.vox b/assets/voxygen/voxel/npc/axolotl/male/feet_f.vox deleted file mode 100644 index 8fe0d4abc5..0000000000 --- a/assets/voxygen/voxel/npc/axolotl/male/feet_f.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:382afa56ac6638a27743553618aef968203572ff558ed09da06b324178fa888c -size 1128 diff --git a/assets/voxygen/voxel/npc/turtle/male/feet_b.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox similarity index 100% rename from assets/voxygen/voxel/npc/turtle/male/feet_b.vox rename to assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox diff --git a/assets/voxygen/voxel/npc/turtle/male/feet_f.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_br.vox similarity index 100% rename from assets/voxygen/voxel/npc/turtle/male/feet_f.vox rename to assets/voxygen/voxel/npc/axolotl/male/foot_br.vox diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/axolotl/male/head.vox b/assets/voxygen/voxel/npc/axolotl/male/head.vox index 2f44cbc2c7..9a5982b2de 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/head.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cdb4af85c499c53e786c9ae7591e051b951bf0c6d568b24c97b01476626c4c2 -size 1420 +oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +size 1376 diff --git a/assets/voxygen/voxel/npc/axolotl/male/tail.vox b/assets/voxygen/voxel/npc/axolotl/male/tail.vox index f16e5c2c63..20bbc2175d 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/tail.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:778e3722d185f4fda349efde9e31e48c0d3e257294e1874a4b6ba2422b72001f -size 1168 +oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab +size 1116 diff --git a/assets/voxygen/voxel/npc/fungome/male/chest.vox b/assets/voxygen/voxel/npc/fungome/male/chest.vox index b3c3001ead..f69772001d 100644 --- a/assets/voxygen/voxel/npc/fungome/male/chest.vox +++ b/assets/voxygen/voxel/npc/fungome/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6266cf063932bde665aebe3708e65300a1f929205225418d0e17985dff82e908 -size 2840 +oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 +size 3736 diff --git a/assets/voxygen/voxel/npc/fungome/male/feet_b.vox b/assets/voxygen/voxel/npc/fungome/male/feet_b.vox deleted file mode 100644 index 2aebd5d5c1..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/feet_b.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f56c8a2c4fcbb3a495cad034de59840078c4613447874876e22e5f442658a20a -size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/feet_f.vox b/assets/voxygen/voxel/npc/fungome/male/feet_f.vox deleted file mode 100644 index 2aebd5d5c1..0000000000 --- a/assets/voxygen/voxel/npc/fungome/male/feet_f.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f56c8a2c4fcbb3a495cad034de59840078c4613447874876e22e5f442658a20a -size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_br.vox b/assets/voxygen/voxel/npc/fungome/male/foot_br.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/fungome/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/fungome/male/head.vox b/assets/voxygen/voxel/npc/fungome/male/head.vox index 68d5137b0b..9a5982b2de 100644 --- a/assets/voxygen/voxel/npc/fungome/male/head.vox +++ b/assets/voxygen/voxel/npc/fungome/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e3e2257aad4e4b5ba7bc43206ce8e3e19ebf4f96758a20f927589a9795197426 -size 1300 +oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +size 1376 diff --git a/assets/voxygen/voxel/npc/fungome/male/tail.vox b/assets/voxygen/voxel/npc/fungome/male/tail.vox index c0d69871b7..20bbc2175d 100644 --- a/assets/voxygen/voxel/npc/fungome/male/tail.vox +++ b/assets/voxygen/voxel/npc/fungome/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56c4dc3e1de0732fd1e1cbdb5b8bcaf0df7f7549130624d4d6cf82d9fe0132df -size 1108 +oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab +size 1116 diff --git a/assets/voxygen/voxel/npc/gecko/male/chest.vox b/assets/voxygen/voxel/npc/gecko/male/chest.vox index 5bfce4e9b0..f69772001d 100644 --- a/assets/voxygen/voxel/npc/gecko/male/chest.vox +++ b/assets/voxygen/voxel/npc/gecko/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0f3c9de244922e529ecf3b5be4f2c5b59030d5ec3cc4d31647d3b294645390f -size 1268 +oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 +size 3736 diff --git a/assets/voxygen/voxel/npc/gecko/male/feet_b.vox b/assets/voxygen/voxel/npc/gecko/male/feet_b.vox deleted file mode 100644 index 0e6ac3aaf0..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/feet_b.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c27fa19b797d1c973c6e6155b47df80caeed8c3e1f793f0854b603198e57ea5 -size 1112 diff --git a/assets/voxygen/voxel/npc/gecko/male/feet_f.vox b/assets/voxygen/voxel/npc/gecko/male/feet_f.vox deleted file mode 100644 index 450e1421c7..0000000000 --- a/assets/voxygen/voxel/npc/gecko/male/feet_f.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d5f09fb478759d81983e61609c461c87f8e79e533e067533306e25b941c3e15 -size 1112 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_br.vox b/assets/voxygen/voxel/npc/gecko/male/foot_br.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gecko/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/gecko/male/head.vox b/assets/voxygen/voxel/npc/gecko/male/head.vox index 95b106dbed..9a5982b2de 100644 --- a/assets/voxygen/voxel/npc/gecko/male/head.vox +++ b/assets/voxygen/voxel/npc/gecko/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35891c200c205b7848f2dbf40fe2074d1ce0b1543cb7a6075fb22be589b98c2e -size 1372 +oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +size 1376 diff --git a/assets/voxygen/voxel/npc/gecko/male/tail.vox b/assets/voxygen/voxel/npc/gecko/male/tail.vox index bb8a7563f9..20bbc2175d 100644 --- a/assets/voxygen/voxel/npc/gecko/male/tail.vox +++ b/assets/voxygen/voxel/npc/gecko/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:451f6c6a9d83da6acd25d9048e69c40cd3b9b3ff312267a988aae35df37ab238 -size 1124 +oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab +size 1116 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox new file mode 100644 index 0000000000..e0159b79c2 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d020f6462cc68320888396f85094a4f322c57ce41c1817e9d9e4cf1c3616fd0f +size 4416 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox new file mode 100644 index 0000000000..40925e41d1 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e5b872c14997786fc6e9fdf071f113720198bc126e90335a16c7f25f3d38c3a +size 2788 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox new file mode 100644 index 0000000000..42189b7f0b --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7e3cab3f2a990ee083b02a292b972844e05124ace87575f72adc6b4c683fcf +size 2952 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox new file mode 100644 index 0000000000..47a9744a10 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:067074f802303741d404e130b5e9ac0ee859c0199ecfff9a46e52c97dffd8150 +size 1228 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox new file mode 100644 index 0000000000..f284891dbd --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3163d19b490d5fb52e2d144ae8a7b9acb27f87ecc0d02d7a32b5f3998c02f5cf +size 5624 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox new file mode 100644 index 0000000000..86a229eee4 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74cf342ba8615e629de169785cc4d381be30e3989a2a1432255392e12425b99e +size 4244 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox new file mode 100644 index 0000000000..42189b7f0b --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7e3cab3f2a990ee083b02a292b972844e05124ace87575f72adc6b4c683fcf +size 2952 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox new file mode 100644 index 0000000000..3e2578dbc3 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc3d9f3b008cf8ab7e32a0923a3744c3b7354ef8da305b7d21f6f40601e8d63 +size 2476 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox new file mode 100644 index 0000000000..4f7f97380c --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6912093b51066d2c34c51fcb3db6ebd90f77090becb2c64e0ef9b1114084471e +size 1228 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox new file mode 100644 index 0000000000..c4fc4fa756 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5de93f6ad8b5d6631d0a2d3290a7fc42c4ac182a77802c311fc20f60f10c83d2 +size 2272 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox new file mode 100644 index 0000000000..876627ff0d --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4225127e6a0b8d14d06652c665ef7334bcfd9a440c73e3bd5a8507fbf66ee34a +size 1932 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox new file mode 100644 index 0000000000..3e2578dbc3 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc3d9f3b008cf8ab7e32a0923a3744c3b7354ef8da305b7d21f6f40601e8d63 +size 2476 diff --git a/assets/voxygen/voxel/npc/rat/male/chest.vox b/assets/voxygen/voxel/npc/rat/male/chest.vox index b52ca54ea4..f69772001d 100644 --- a/assets/voxygen/voxel/npc/rat/male/chest.vox +++ b/assets/voxygen/voxel/npc/rat/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c46d59e54f15dd391deffd416050ed7da07fc4bdd9440fa956ab3f65078d1fac -size 3636 +oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 +size 3736 diff --git a/assets/voxygen/voxel/npc/rat/male/feet_b.vox b/assets/voxygen/voxel/npc/rat/male/feet_b.vox deleted file mode 100644 index b5792500cd..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/feet_b.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f27898b0c3795da3c958f15146921d3baa8191a7d73961285e78d48a5d240af1 -size 1168 diff --git a/assets/voxygen/voxel/npc/rat/male/feet_f.vox b/assets/voxygen/voxel/npc/rat/male/feet_f.vox deleted file mode 100644 index b5792500cd..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/feet_f.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f27898b0c3795da3c958f15146921d3baa8191a7d73961285e78d48a5d240af1 -size 1168 diff --git a/assets/voxygen/voxel/npc/rat/male/feet_r.vox b/assets/voxygen/voxel/npc/rat/male/feet_r.vox deleted file mode 100644 index b5792500cd..0000000000 --- a/assets/voxygen/voxel/npc/rat/male/feet_r.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f27898b0c3795da3c958f15146921d3baa8191a7d73961285e78d48a5d240af1 -size 1168 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_br.vox b/assets/voxygen/voxel/npc/rat/male/foot_br.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/rat/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fr.vox b/assets/voxygen/voxel/npc/rat/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/rat/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/rat/male/head.vox b/assets/voxygen/voxel/npc/rat/male/head.vox index 6e680d1028..9a5982b2de 100644 --- a/assets/voxygen/voxel/npc/rat/male/head.vox +++ b/assets/voxygen/voxel/npc/rat/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61fb2a387492fd6aef77b26184e90afd712316aa21090617ee621d6fd76be722 -size 1656 +oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +size 1376 diff --git a/assets/voxygen/voxel/npc/rat/male/tail.vox b/assets/voxygen/voxel/npc/rat/male/tail.vox index 43015d4188..20bbc2175d 100644 --- a/assets/voxygen/voxel/npc/rat/male/tail.vox +++ b/assets/voxygen/voxel/npc/rat/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52e33f3f0b42eae270513d68e8bfd39f70d2e838789dc83156ea4c5b4b3e33f3 -size 1136 +oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab +size 1116 diff --git a/assets/voxygen/voxel/npc/squirrel/male/chest.vox b/assets/voxygen/voxel/npc/squirrel/male/chest.vox index d3ef9e4e8d..f69772001d 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/chest.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:77b379b111e3e4c629b49b653310070d4a91f4cd40aef58f36c176ec7c2acafc -size 1212 +oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 +size 3736 diff --git a/assets/voxygen/voxel/npc/squirrel/male/feet_b.vox b/assets/voxygen/voxel/npc/squirrel/male/feet_b.vox deleted file mode 100644 index 016a819839..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/feet_b.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce618962f93c5a5e53d09fcb3b1410565d6a3a8a10868011a869e7b886dca05a -size 1112 diff --git a/assets/voxygen/voxel/npc/squirrel/male/feet_f.vox b/assets/voxygen/voxel/npc/squirrel/male/feet_f.vox deleted file mode 100644 index 016a819839..0000000000 --- a/assets/voxygen/voxel/npc/squirrel/male/feet_f.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce618962f93c5a5e53d09fcb3b1410565d6a3a8a10868011a869e7b886dca05a -size 1112 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/squirrel/male/head.vox b/assets/voxygen/voxel/npc/squirrel/male/head.vox index c0f7b856db..9a5982b2de 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/head.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5ab082812e15cccf183525025bcec751e6c1995fcd4756b919eda82c53c76a9b -size 1264 +oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +size 1376 diff --git a/assets/voxygen/voxel/npc/squirrel/male/tail.vox b/assets/voxygen/voxel/npc/squirrel/male/tail.vox index 648f09505f..20bbc2175d 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/tail.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3faa8bfd0bedaea5cf14b3d5ca69e47848c0cbe40938e8caa9ca0c0d57aa5edf -size 1208 +oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab +size 1116 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_br.vox b/assets/voxygen/voxel/npc/turtle/male/foot_br.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/turtle/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox new file mode 100644 index 0000000000..aabf0927e7 --- /dev/null +++ b/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 +size 1128 diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index d1d5628738..d8fdc201fe 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -462,4 +462,172 @@ central: ("armor.empty"), ), ), + (Rat, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.frog.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Rat, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.frog.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Axolotl, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.frog.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Axolotl, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.frog.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Gecko, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.frog.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Gecko, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.frog.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.gecko.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Turtle, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.turtle.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.turtle.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Turtle, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.turtle.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.turtle.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Squirrel, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.squirrel.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.squirrel.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Squirrel, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.squirrel.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.squirrel.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Fungome, Male):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.fungome.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.fungome.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Fungome, Female):( + head: ( + offset: (-3.5, 0.0, -3.0), + central: ("npc.fungome.male.head"), + ), + chest: ( + offset: (-3.5, -5.0, -3.0), + central: ("npc.fungome.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index d89037e22b..2d2399e6c0 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -575,7 +575,6 @@ lateral: ("npc.frog.male.foot_br"), ), ), - (Frog, Female): ( left_front: ( offset: (-2.5, -2.5, -4.0), @@ -594,4 +593,220 @@ lateral: ("npc.frog.male.foot_br"), ), ), + (Rat, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.rat.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.rat.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.rat.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.rat.male.foot_br"), + ), + ), + (Rat, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.rat.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.rat.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.rat.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.rat.male.foot_br"), + ), + ), + (Axolotl, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.axolotl.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.axolotl.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.axolotl.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.axolotl.male.foot_br"), + ), + ), + (Axolotl, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.axolotl.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.axolotl.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.axolotl.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.axolotl.male.foot_br"), + ), + ), + (Gecko, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.gecko.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.gecko.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.gecko.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.gecko.male.foot_br"), + ), + ), + (Gecko, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.gecko.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.gecko.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.gecko.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.gecko.male.foot_br"), + ), + ), + (Turtle, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.turtle.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.turtle.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.turtle.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.turtle.male.foot_br"), + ), + ), + (Turtle, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.turtle.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.turtle.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.turtle.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.turtle.male.foot_br"), + ), + ), + (Squirrel, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.squirrel.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.squirrel.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.squirrel.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.squirrel.male.foot_br"), + ), + ), + (Squirrel, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.squirrel.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.squirrel.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.squirrel.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.squirrel.male.foot_br"), + ), + ), + (Fungome, Male): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.fungome.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.fungome.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.fungome.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.fungome.male.foot_br"), + ), + ), + (Fungome, Female): ( + left_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.fungome.male.foot_fl"), + ), + right_front: ( + offset: (-2.5, -2.5, -4.0), + lateral: ("npc.fungome.male.foot_fr"), + ), + left_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.fungome.male.foot_bl"), + ), + right_back: ( + offset: (-2.5, -3.5, -4.0), + lateral: ("npc.fungome.male.foot_br"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron new file mode 100644 index 0000000000..1b21ef0838 --- /dev/null +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -0,0 +1,122 @@ +({ + (Archaeos, Male): ( + head: ( + offset: (-4.5, 0.0, -5.0), + central: ("npc.archaeos.male.head"), + ), + jaw: ( + offset: (-4.5, -9.0, -3.0), + central: ("npc.archaeos.male.jaw"), + ), + neck: ( + offset: (-4.5, 0.0, -3.0), + central: ("npc.archaeos.male.neck"), + ), + chest_front: ( + offset: (-7.5, -5.5, -7.0), + central: ("npc.archaeos.male.chest_front"), + ), + chest_back: ( + offset: (-4.5, -9.0, -7.0), + central: ("npc.archaeos.male.chest_back"), + ), + tail_front: ( + offset: (-3.5, -8.0, -3.5), + central: ("npc.archaeos.male.tail_front"), + ), + tail_back: ( + offset: (-7.5, -11.0, -3.0), + central: ("npc.archaeos.male.tail_back"), + ), + ), + (Archaeos, Female): ( + head: ( + offset: (-4.5, 0.0, -5.0), + central: ("npc.archaeos.male.head"), + ), + jaw: ( + offset: (-4.5, -9.0, -3.0), + central: ("npc.archaeos.male.jaw"), + ), + neck: ( + offset: (-4.5, 0.0, -3.0), + central: ("npc.archaeos.male.neck"), + ), + chest_front: ( + offset: (-7.5, -5.5, -7.0), + central: ("npc.archaeos.male.chest_front"), + ), + chest_back: ( + offset: (-4.5, -9.0, -7.0), + central: ("npc.archaeos.male.chest_back"), + ), + tail_front: ( + offset: (-3.5, -8.0, -3.5), + central: ("npc.archaeos.male.tail_front"), + ), + tail_back: ( + offset: (-7.5, -11.0, -3.0), + central: ("npc.archaeos.male.tail_back"), + ), + ), + (Odontotyrannos, Male): ( + head: ( + offset: (-4.5, -4.0, -4.0), + central: ("npc.rat.male.head"), + ), + jaw: ( + offset: (-4.5, -6.0, -4.0), + central: ("npc.rat.male.chest"), + ), + neck: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + chest_front: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + chest_back: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + tail_front: ( + offset: (-0.5, -4.0, -1.5), + central: ("npc.rat.male.chest"), + ), + tail_back: ( + offset: (-0.5, -4.0, -1.5), + central: ("npc.rat.male.chest"), + ), + ), + (Odontotyrannos, Female): ( + head: ( + offset: (-4.5, -4.0, -4.0), + central: ("npc.rat.male.head"), + ), + jaw: ( + offset: (-4.5, -6.0, -4.0), + central: ("npc.rat.male.chest"), + ), + neck: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + chest_front: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + chest_back: ( + offset: (-4.0, -1.5, -1.0), + central: ("npc.rat.male.chest"), + ), + tail_front: ( + offset: (-0.5, -4.0, -1.5), + central: ("npc.rat.male.chest"), + ), + tail_back: ( + offset: (-0.5, -4.0, -1.5), + central: ("npc.rat.male.chest"), + ), + ), +}) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron new file mode 100644 index 0000000000..67e48db670 --- /dev/null +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -0,0 +1,106 @@ +({ + (Archaeos, Male): ( + hand_l: ( + offset: (-4.0, 2.0, -9.0), + lateral: ("npc.archaeos.male.hand_l"), + ), + hand_r: ( + offset: (0.0, -2.0, -4.0), + lateral: ("npc.archaeos.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -4.5, -8.0), + lateral: ("npc.archaeos.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.5, -8.0), + lateral: ("npc.archaeos.male.leg_r"), + ), + foot_l: ( + offset: (-11.0, -1.0, -8.0), + lateral: ("npc.archaeos.male.foot_l"), + ), + foot_r: ( + offset: (0.0, -1.0, -8.0), + lateral: ("npc.archaeos.male.foot_r"), + ), + ), + (Archaeos, Female): ( + hand_l: ( + offset: (-4.0, 2.0, -9.0), + lateral: ("npc.archaeos.male.hand_l"), + ), + hand_r: ( + offset: (0.0, -2.0, -4.0), + lateral: ("npc.archaeos.male.hand_r"), + ), + leg_l: ( + offset: (-6.0, -4.5, -8.0), + lateral: ("npc.archaeos.male.leg_l"), + ), + leg_r: ( + offset: (0.0, -4.5, -8.0), + lateral: ("npc.archaeos.male.leg_r"), + ), + foot_l: ( + offset: (-11.0, -1.0, -8.0), + lateral: ("npc.archaeos.male.foot_l"), + ), + foot_r: ( + offset: (0.0, -1.0, -8.0), + lateral: ("npc.archaeos.male.foot_r"), + ), + ), + (Odontotyrannos, Male): ( + hand_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + hand_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + leg_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + foot_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + foot_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + ), + (Odontotyrannos, Female): ( + hand_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + hand_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + leg_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + leg_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + foot_l: ( + offset: (-6.0, -3.5, -4.0), + lateral: ("npc.ogre.male.shoulder_l"), + ), + foot_r: ( + offset: (-6.0, -4.5, -4.0), + lateral: ("npc.ogre.male.shoulder_r"), + ), + ), +}) diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 218d12240d..1fc7b53371 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -1,5 +1,5 @@ use crate::{ - comp::{critter, humanoid, quadruped_low, quadruped_medium, quadruped_small, Body}, + comp::{humanoid, quadruped_low, quadruped_medium, quadruped_small, theropod, Body}, path::Chaser, sync::Uid, }; @@ -97,6 +97,7 @@ impl<'a> From<&'a Body> for Psyche { quadruped_small::Species::Rabbit => 0.1, quadruped_small::Species::Truffler => 0.8, quadruped_small::Species::Frog => 0.6, + _ => 1.0, }, Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { quadruped_medium::Species::Tuskram => 0.8, @@ -123,10 +124,7 @@ impl<'a> From<&'a Body> for Psyche { Body::BipedLarge(_) => 1.0, Body::Object(_) => 1.0, Body::Golem(_) => 1.0, - Body::Critter(critter) => match critter.species { - critter::Species::Axolotl => 1.0, - critter::Species::Turtle => 1.0, - critter::Species::Fungome => 1.0, + Body::Theropod(theropod) => match theropod.species { _ => 0.4, }, Body::Dragon(_) => 1.0, diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index ce9895893a..986bc6647d 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -1,7 +1,6 @@ pub mod biped_large; pub mod bird_medium; pub mod bird_small; -pub mod critter; pub mod dragon; pub mod fish_medium; pub mod fish_small; @@ -11,6 +10,7 @@ pub mod object; pub mod quadruped_low; pub mod quadruped_medium; pub mod quadruped_small; +pub mod theropod; use crate::{ assets::{self, Asset}, @@ -39,7 +39,7 @@ make_case_elim!( BipedLarge(body: biped_large::Body)= 8, Object(body: object::Body) = 9, Golem(body: golem::Body) = 10, - Critter(body: critter::Body) = 11, + Theropod(body: theropod::Body) = 11, QuadrupedLow(body: quadruped_low::Body) = 12, } ); @@ -72,7 +72,7 @@ pub struct AllBodies { pub biped_large: BodyData>, pub object: BodyData, pub golem: BodyData>, - pub critter: BodyData>, + pub theropod: BodyData>, pub quadruped_low: BodyData>, } @@ -89,7 +89,7 @@ impl core::ops::Index for AllBodies &self.bird_medium.body, NpcKind::Ogre => &self.biped_large.body, NpcKind::StoneGolem => &self.golem.body, - NpcKind::Rat => &self.critter.body, + NpcKind::Archaeos => &self.theropod.body, NpcKind::Reddragon => &self.dragon.body, NpcKind::Crocodile => &self.quadruped_low.body, } @@ -114,7 +114,7 @@ impl<'a, BodyMeta, SpeciesMeta> core::ops::Index<&'a Body> for AllBodies &self.biped_large.body, Body::Object(_) => &self.object.body, Body::Golem(_) => &self.golem.body, - Body::Critter(_) => &self.critter.body, + Body::Theropod(_) => &self.theropod.body, Body::QuadrupedLow(_) => &self.quadruped_low.body, } } @@ -158,7 +158,7 @@ impl Body { quadruped_low::Species::Pangolin => 1.3, _ => 1.6, }, - Body::Critter(_) => 0.3, + Body::Theropod(_) => 0.3, Body::BirdMedium(_) => 0.35, Body::FishMedium(_) => 0.35, Body::Dragon(_) => 8.0, @@ -198,7 +198,7 @@ impl Body { quadruped_low::Species::Maneater => 4.0, _ => 1.3, }, - Body::Critter(_) => 0.7, + Body::Theropod(_) => 0.7, Body::BirdMedium(body) => match body.species { bird_medium::Species::Cockatrice => 1.8, _ => 1.1, @@ -264,7 +264,7 @@ impl Body { }, Body::Object(_) => 10000, Body::Golem(_) => 1500, - Body::Critter(_) => 50, + Body::Theropod(_) => 50, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 600, quadruped_low::Species::Alligator => 600, @@ -331,7 +331,7 @@ impl Body { }, Body::Object(_) => 10, Body::Golem(_) => 150, - Body::Critter(_) => 20, + Body::Theropod(_) => 20, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 20, quadruped_low::Species::Alligator => 20, @@ -396,7 +396,7 @@ impl Body { }, Body::Object(_) => 1, Body::Golem(_) => 75, - Body::Critter(_) => 2, + Body::Theropod(_) => 2, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 10, quadruped_low::Species::Alligator => 10, @@ -426,7 +426,7 @@ impl Body { Body::BipedLarge(_) => 2, Body::Object(_) => 0, Body::Golem(_) => 5, - Body::Critter(_) => 1, + Body::Theropod(_) => 1, Body::QuadrupedLow(_) => 1, } } @@ -473,7 +473,7 @@ impl Body { }, Body::Object(_) => 0, Body::Golem(_) => 250, - Body::Critter(_) => 10, + Body::Theropod(_) => 10, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 50, quadruped_low::Species::Alligator => 50, @@ -502,7 +502,7 @@ impl Body { Body::BipedLarge(_) => 10.0, Body::Object(_) => 3.0, Body::Golem(_) => 7.5, - Body::Critter(_) => 3.0, + Body::Theropod(_) => 3.0, Body::QuadrupedLow(_) => 4.5, } } diff --git a/common/src/comp/body/quadruped_small.rs b/common/src/comp/body/quadruped_small.rs index b0829352f6..7844997cf3 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -29,29 +29,32 @@ impl From for super::Body { fn from(body: Body) -> Self { super::Body::QuadrupedSmall(body) } } -make_case_elim!( - species, - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] - #[repr(u32)] - pub enum Species { - Pig = 0, - Fox = 1, - Sheep = 2, - Boar = 3, - Jackalope = 4, - Skunk = 5, - Cat = 6, - Batfox = 7, - Raccoon = 8, - Quokka = 9, - Dodarock = 10, - Holladon = 11, - Hyena = 12, - Rabbit = 13, - Truffler = 14, - Frog = 15, - } -); +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[repr(u32)] +pub enum Species { + Pig = 0, + Fox = 1, + Sheep = 2, + Boar = 3, + Jackalope = 4, + Skunk = 5, + Cat = 6, + Batfox = 7, + Raccoon = 8, + Quokka = 9, + Dodarock = 10, + Holladon = 11, + Hyena = 12, + Rabbit = 13, + Truffler = 14, + Frog = 15, + Rat = 16, + Axolotl = 17, + Gecko = 18, + Turtle = 19, + Squirrel = 20, + Fungome = 21, +} /// Data representing per-species generic data. /// @@ -74,6 +77,12 @@ pub struct AllSpecies { pub rabbit: SpeciesMeta, pub truffler: SpeciesMeta, pub frog: SpeciesMeta, + pub rat: SpeciesMeta, + pub axolotl: SpeciesMeta, + pub gecko: SpeciesMeta, + pub turtle: SpeciesMeta, + pub squirrel: SpeciesMeta, + pub fungome: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -98,11 +107,17 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Rabbit => &self.rabbit, Species::Truffler => &self.truffler, Species::Frog => &self.frog, + Species::Rat => &self.rat, + Species::Axolotl => &self.axolotl, + Species::Gecko => &self.gecko, + Species::Turtle => &self.turtle, + Species::Squirrel => &self.squirrel, + Species::Fungome => &self.fungome, } } } -pub const ALL_SPECIES: [Species; 16] = [ +pub const ALL_SPECIES: [Species; 22] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -119,6 +134,12 @@ pub const ALL_SPECIES: [Species; 16] = [ Species::Rabbit, Species::Truffler, Species::Frog, + Species::Rat, + Species::Axolotl, + Species::Gecko, + Species::Turtle, + Species::Squirrel, + Species::Fungome, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/theropod.rs b/common/src/comp/body/theropod.rs index cee07dd02d..446034a128 100644 --- a/common/src/comp/body/theropod.rs +++ b/common/src/comp/body/theropod.rs @@ -22,7 +22,7 @@ impl Body { } impl From for super::Body { - fn from(body: Body) -> Self { super::Body::Critter(body) } + fn from(body: Body) -> Self { super::Body::Theropod(body) } } #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -30,7 +30,6 @@ impl From for super::Body { pub enum Species { Archaeos = 0, Odontotyrannos = 1, - } /// Data representing per-species generic data. @@ -52,10 +51,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies } } -pub const ALL_SPECIES: [Species; 2] = [ - Species::Archaeos, - Species::Odontotyrannos, -]; +pub const ALL_SPECIES: [Species; 2] = [Species::Archaeos, Species::Odontotyrannos]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/common/src/comp/mod.rs b/common/src/comp/mod.rs index 6deb364dff..322d5025e7 100644 --- a/common/src/comp/mod.rs +++ b/common/src/comp/mod.rs @@ -25,8 +25,8 @@ pub use ability::{CharacterAbility, CharacterAbilityType, ItemConfig, Loadout}; pub use admin::{Admin, AdminList}; pub use agent::{Agent, Alignment}; pub use body::{ - biped_large, bird_medium, bird_small, critter, dragon, fish_medium, fish_small, golem, - humanoid, object, quadruped_low, quadruped_medium, quadruped_small, AllBodies, Body, BodyData, + biped_large, bird_medium, bird_small, dragon, fish_medium, fish_small, golem, humanoid, object, + quadruped_low, quadruped_medium, quadruped_small, theropod, AllBodies, Body, BodyData, }; pub use character_state::{Attacking, CharacterState, StateUpdate}; pub use chat::{ diff --git a/common/src/generation.rs b/common/src/generation.rs index e5d19437ab..65a70e6bf8 100644 --- a/common/src/generation.rs +++ b/common/src/generation.rs @@ -110,7 +110,7 @@ impl EntityInfo { Some(get_npc_name(&NPC_NAMES.quadruped_medium, body.species)) }, Body::BirdMedium(body) => Some(get_npc_name(&NPC_NAMES.bird_medium, body.species)), - Body::Critter(body) => Some(get_npc_name(&NPC_NAMES.critter, body.species)), + Body::Theropod(body) => Some(get_npc_name(&NPC_NAMES.theropod, body.species)), Body::QuadrupedSmall(body) => { Some(get_npc_name(&NPC_NAMES.quadruped_small, body.species)) }, diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs index da149f4458..6ce34b0e8e 100644 --- a/common/src/loadout_builder.rs +++ b/common/src/loadout_builder.rs @@ -55,7 +55,7 @@ impl LoadoutBuilder { .lantern(Some(Item::new_from_asset_expect( "common.items.armor.starter.lantern", ))) - .glider(Some(assets::load_expect_cloned( + .glider(Some(ItemAsset::load_expect_cloned( "common.items.armor.starter.glider", ))) } diff --git a/common/src/npc.rs b/common/src/npc.rs index 815aa1e35f..881aea55fa 100644 --- a/common/src/npc.rs +++ b/common/src/npc.rs @@ -14,7 +14,7 @@ pub enum NpcKind { Pig, Duck, Ogre, - Rat, + Archaeos, StoneGolem, Reddragon, Crocodile, @@ -26,7 +26,7 @@ pub const ALL_NPCS: [NpcKind; 9] = [ NpcKind::Pig, NpcKind::Duck, NpcKind::Ogre, - NpcKind::Rat, + NpcKind::Archaeos, NpcKind::StoneGolem, NpcKind::Reddragon, NpcKind::Crocodile, @@ -94,7 +94,7 @@ pub fn kind_to_body(kind: NpcKind) -> Body { NpcKind::Wolf => comp::quadruped_medium::Body::random().into(), NpcKind::Duck => comp::bird_medium::Body::random().into(), NpcKind::Ogre => comp::biped_large::Body::random().into(), - NpcKind::Rat => comp::critter::Body::random().into(), + NpcKind::Archaeos => comp::theropod::Body::random().into(), NpcKind::StoneGolem => comp::golem::Body::random().into(), NpcKind::Reddragon => comp::dragon::Body::random().into(), NpcKind::Crocodile => comp::quadruped_low::Body::random().into(), @@ -206,9 +206,9 @@ impl NpcBody { .or_else(|| { parse( s, - NpcKind::Rat, - &npc_names.critter, - comp::critter::Body::random_with, + NpcKind::Archaeos, + &npc_names.theropod, + comp::theropod::Body::random_with, ) }) .or_else(|| { diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 579b1becb8..02cd6ebfd4 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -41,7 +41,7 @@ impl Body { Body::BipedLarge(_) => 75.0, Body::Object(_) => 40.0, Body::Golem(_) => 60.0, - Body::Critter(_) => 85.0, + Body::Theropod(_) => 85.0, Body::QuadrupedLow(_) => 120.0, } } @@ -59,7 +59,7 @@ impl Body { Body::BipedLarge(_) => 12.0, Body::Object(_) => 5.0, Body::Golem(_) => 8.0, - Body::Critter(_) => 35.0, + Body::Theropod(_) => 35.0, Body::QuadrupedLow(_) => 12.0, } } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index b499b3dd6f..cef530ce5d 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -317,9 +317,7 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc 7 => "common.loot_tables.loot_table_weapon_rare", _ => "common.loot_tables.loot_table", }, - Some(common::comp::Body::Critter(_)) => { - "common.loot_tables.loot_table_animal_parts" - }, + Some(common::comp::Body::Theropod(_)) => "common.loot_tables.loot_table_animal_parts", Some(common::comp::Body::Dragon(_)) => "common.loot_tables.loot_table_weapon_rare", Some(common::comp::Body::QuadrupedLow(_)) => match rng.gen_range(0, 3) { 0 => "common.loot_tables.loot_table_food", diff --git a/voxygen/src/anim/src/critter/idle.rs b/voxygen/src/anim/src/critter/idle.rs deleted file mode 100644 index 192a89cab0..0000000000 --- a/voxygen/src/anim/src/critter/idle.rs +++ /dev/null @@ -1,68 +0,0 @@ -use super::{super::Animation, CritterAttr, CritterSkeleton}; -//use std::{f32::consts::PI, ops::Mul}; -use super::super::vek::*; -use std::{f32::consts::PI, ops::Mul}; - -pub struct IdleAnimation; - -impl Animation for IdleAnimation { - type Dependency = f64; - type Skeleton = CritterSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"critter_idle\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "critter_idle")] - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - global_time: Self::Dependency, - anim_time: f64, - _rate: &mut f32, - skeleton_attr: &CritterAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - let wave = (anim_time as f32 * 10.0).sin(); - let wave_slow = (anim_time as f32 * 5.5 + PI).sin(); - - let rat_head_look = Vec2::new( - ((global_time + anim_time) as f32 / 3.0) - .floor() - .mul(7331.0) - .sin() - * 0.5, - ((global_time + anim_time) as f32 / 3.0) - .floor() - .mul(1337.0) - .sin() - * 0.25, - ); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = Quaternion::rotation_z(rat_head_look.x) - * Quaternion::rotation_x(rat_head_look.y + wave * 0.03); - next.head.scale = Vec3::one(); - - next.chest.position = Vec3::new( - 0.0, - skeleton_attr.chest.0, - skeleton_attr.chest.1 + wave * 0.3, - ) / 18.0; - next.chest.orientation = Quaternion::rotation_y(wave_slow * 0.06); - next.chest.scale = Vec3::one() / 18.0; - - next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1); - next.feet_f.orientation = Quaternion::rotation_z(0.0); - next.feet_f.scale = Vec3::one(); - - next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1); - next.feet_b.orientation = Quaternion::rotation_x(0.0); - next.feet_b.scale = Vec3::one(); - - next.tail.position = - Vec3::new(0.0, skeleton_attr.tail.0 + wave * 0.2, skeleton_attr.tail.1); - next.tail.orientation = Quaternion::rotation_y(wave_slow * 0.05); - next.tail.scale = Vec3::one(); - - next - } -} diff --git a/voxygen/src/anim/src/critter/jump.rs b/voxygen/src/anim/src/critter/jump.rs deleted file mode 100644 index 7630744289..0000000000 --- a/voxygen/src/anim/src/critter/jump.rs +++ /dev/null @@ -1,48 +0,0 @@ -use super::{super::Animation, CritterAttr, CritterSkeleton}; -//use std::f32::consts::PI; -use super::super::vek::*; - -pub struct JumpAnimation; - -impl Animation for JumpAnimation { - type Dependency = (f32, f64); - type Skeleton = CritterSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"critter_jump\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "critter_jump")] - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - _global_time: Self::Dependency, - _anim_time: f64, - _rate: &mut f32, - skeleton_attr: &CritterAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - let wave = (_anim_time as f32 * 1.0).sin(); - - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = Quaternion::rotation_z(0.8) * Quaternion::rotation_x(0.5); - next.head.scale = Vec3::one(); - - next.chest.position = Vec3::new(0.0, skeleton_attr.chest.0, skeleton_attr.chest.1) / 18.0; - next.chest.orientation = Quaternion::rotation_y(0.0); - next.chest.scale = Vec3::one() / 18.0; - - next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1); - next.feet_f.orientation = Quaternion::rotation_x(wave * 0.4); - next.feet_f.scale = Vec3::one(); - - next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1); - next.feet_b.orientation = Quaternion::rotation_x(wave * 0.4); - next.feet_b.scale = Vec3::one(); - - next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); - next.tail.orientation = Quaternion::rotation_y(0.0); - next.tail.scale = Vec3::one(); - - next - } -} diff --git a/voxygen/src/anim/src/critter/mod.rs b/voxygen/src/anim/src/critter/mod.rs deleted file mode 100644 index f83461a23b..0000000000 --- a/voxygen/src/anim/src/critter/mod.rs +++ /dev/null @@ -1,136 +0,0 @@ -pub mod idle; -pub mod jump; -pub mod run; - -// Reexports -pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; - -use super::{make_bone, vek::*, FigureBoneData, Skeleton}; -use common::comp::{self}; -use core::convert::TryFrom; - -pub type Body = comp::critter::Body; - -skeleton_impls!(struct CritterSkeleton { - + head, - + chest, - + feet_f, - + feet_b, - + tail, -}); - -pub struct CritterAttr { - head: (f32, f32), - chest: (f32, f32), - feet_f: (f32, f32), - feet_b: (f32, f32), - tail: (f32, f32), -} - -impl Skeleton for CritterSkeleton { - type Attr = CritterAttr; - type Body = Body; - - const BONE_COUNT: usize = 5; - #[cfg(feature = "use-dyn-lib")] - const COMPUTE_FN: &'static [u8] = b"critter_compute_mats\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "critter_compute_mats")] - - fn compute_matrices_inner( - &self, - base_mat: Mat4, - buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], - ) -> Vec3 { - let chest_mat = base_mat * Mat4::::from(self.chest); - - *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ - make_bone(chest_mat * Mat4::::from(self.head)), - make_bone(chest_mat), - make_bone(chest_mat * Mat4::::from(self.feet_f)), - make_bone(chest_mat * Mat4::::from(self.feet_b)), - make_bone(chest_mat * Mat4::::from(self.tail)), - ]; - Vec3::default() - } -} - -impl<'a> std::convert::TryFrom<&'a comp::Body> for CritterAttr { - type Error = (); - - fn try_from(body: &'a comp::Body) -> Result { - match body { - comp::Body::Critter(body) => Ok(CritterAttr::from(body)), - _ => Err(()), - } - } -} - -impl CritterAttr { - #[allow(clippy::match_single_binding)] // TODO: Pending review in #587 - pub fn calculate_scale(body: &comp::critter::Body) -> f32 { - match (body.species, body.body_type) { - (_, _) => 0.0, - } - } -} - -impl Default for CritterAttr { - fn default() -> Self { - Self { - head: (0.0, 0.0), - chest: (0.0, 0.0), - feet_f: (0.0, 0.0), - feet_b: (0.0, 0.0), - tail: (0.0, 0.0), - } - } -} - -impl<'a> From<&'a Body> for CritterAttr { - fn from(body: &'a Body) -> Self { - use comp::critter::Species::*; - Self { - head: match (body.species, body.body_type) { - (Rat, _) => (6.5, 3.0), - (Axolotl, _) => (5.0, 1.0), - (Gecko, _) => (5.0, 0.0), - (Turtle, _) => (8.0, 3.0), - (Squirrel, _) => (5.0, 0.0), - (Fungome, _) => (4.0, 0.0), - }, - chest: match (body.species, body.body_type) { - (Rat, _) => (0.0, 6.0), - (Axolotl, _) => (-1.0, 3.0), - (Gecko, _) => (-2.0, 3.0), - (Turtle, _) => (0.0, 6.0), - (Squirrel, _) => (0.0, 3.0), - (Fungome, _) => (0.0, 5.0), - }, - feet_f: match (body.species, body.body_type) { - (Rat, _) => (2.0, -5.0), - (Axolotl, _) => (2.0, -5.0), - (Gecko, _) => (1.0, -2.0), - (Turtle, _) => (3.0, -5.0), - (Squirrel, _) => (1.0, -2.0), - (Fungome, _) => (1.0, -4.0), - }, - feet_b: match (body.species, body.body_type) { - (Rat, _) => (-2.0, -5.0), - (Axolotl, _) => (-2.0, -5.0), - (Gecko, _) => (-2.0, -2.0), - (Turtle, _) => (-2.0, -5.0), - (Squirrel, _) => (-1.0, -2.0), - (Fungome, _) => (-2.0, -4.0), - }, - tail: match (body.species, body.body_type) { - (Rat, _) => (-8.0, -1.0), - (Axolotl, _) => (-7.0, -1.0), - (Gecko, _) => (-6.5, -2.0), - (Turtle, _) => (-6.0, 0.0), - (Squirrel, _) => (-3.0, 0.0), - (Fungome, _) => (-6.0, -1.0), - }, - } - } -} diff --git a/voxygen/src/anim/src/critter/run.rs b/voxygen/src/anim/src/critter/run.rs deleted file mode 100644 index 2f342e28bd..0000000000 --- a/voxygen/src/anim/src/critter/run.rs +++ /dev/null @@ -1,59 +0,0 @@ -use super::{super::Animation, CritterAttr, CritterSkeleton}; -//use std::{f32::consts::PI, ops::Mul}; -use super::super::vek::*; -use std::f32::consts::PI; - -pub struct RunAnimation; - -impl Animation for RunAnimation { - type Dependency = (f32, f64); - type Skeleton = CritterSkeleton; - - #[cfg(feature = "use-dyn-lib")] - const UPDATE_FN: &'static [u8] = b"critter_run\0"; - - #[cfg_attr(feature = "be-dyn-lib", export_name = "critter_run")] - fn update_skeleton_inner( - skeleton: &Self::Skeleton, - (_velocity, _global_time): Self::Dependency, - anim_time: f64, - _rate: &mut f32, - skeleton_attr: &CritterAttr, - ) -> Self::Skeleton { - let mut next = (*skeleton).clone(); - - let wave = (anim_time as f32 * 8.0).sin(); - let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); - let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); - - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = - Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0 + wave * 0.03); - next.head.scale = Vec3::one(); - - next.chest.position = Vec3::new( - 0.0, - skeleton_attr.chest.0 + wave * 1.0, - skeleton_attr.chest.1, - ) / 18.0; - next.chest.orientation = Quaternion::rotation_x(wave * 0.1); - next.chest.scale = Vec3::one() / 18.0; - - next.feet_f.position = Vec3::new(0.0, skeleton_attr.feet_f.0, skeleton_attr.feet_f.1); - next.feet_f.orientation = - Quaternion::rotation_x(wave * 0.8) * Quaternion::rotation_z(wavealt / 6.0); - next.feet_f.scale = Vec3::one(); - - next.feet_b.position = Vec3::new(0.0, skeleton_attr.feet_b.0, skeleton_attr.feet_b.1); - next.feet_b.orientation = - Quaternion::rotation_x(wavealt * 0.8) * Quaternion::rotation_z(wavealt / 6.0); - next.feet_b.scale = Vec3::one(); - - next.tail.position = - Vec3::new(0.0, skeleton_attr.tail.0 + wave * 1.0, skeleton_attr.tail.1); - next.tail.orientation = Quaternion::rotation_y(wave_slow * 0.08); - next.tail.scale = Vec3::one(); - - next - } -} diff --git a/voxygen/src/anim/src/lib.rs b/voxygen/src/anim/src/lib.rs index 833227ae5f..ffe1380b00 100644 --- a/voxygen/src/anim/src/lib.rs +++ b/voxygen/src/anim/src/lib.rs @@ -43,7 +43,6 @@ pub mod biped_large; pub mod bird_medium; pub mod bird_small; pub mod character; -pub mod critter; pub mod dragon; #[cfg(feature = "use-dyn-lib")] pub mod dyn_lib; pub mod fish_medium; @@ -54,6 +53,7 @@ pub mod object; pub mod quadruped_low; pub mod quadruped_medium; pub mod quadruped_small; +pub mod theropod; pub mod vek; #[cfg(feature = "use-dyn-lib")] diff --git a/voxygen/src/anim/src/quadruped_small/mod.rs b/voxygen/src/anim/src/quadruped_small/mod.rs index 5d5de9e931..0c49563099 100644 --- a/voxygen/src/anim/src/quadruped_small/mod.rs +++ b/voxygen/src/anim/src/quadruped_small/mod.rs @@ -114,6 +114,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (4.0, 3.0), (Truffler, _) => (7.5, -9.0), (Frog, _) => (4.0, 2.0), + (Rat, _) => (6.0, -2.0), + (Axolotl, _) => (7.0, 1.0), + (Gecko, _) => (7.5, 2.0), + (Turtle, _) => (4.0, 3.0), + (Squirrel, _) => (7.5, -9.0), + (Fungome, _) => (4.0, 2.0), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 6.0), @@ -132,6 +138,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (-2.0, 6.0), (Truffler, _) => (-2.0, 16.0), (Frog, _) => (-2.0, 4.5), + (Rat, _) => (6.0, -2.0), + (Axolotl, _) => (7.0, 1.0), + (Gecko, _) => (7.5, 2.0), + (Turtle, _) => (4.0, 3.0), + (Squirrel, _) => (7.5, -9.0), + (Fungome, _) => (4.0, 2.0), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (4.5, 3.5, -1.0), @@ -150,6 +162,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (3.0, 3.0, -3.0), (Truffler, _) => (2.5, 5.0, -9.0), (Frog, _) => (4.5, 6.5, 0.0), + (Rat, _) => (6.0, -2.0, 0.0), + (Axolotl, _) => (7.0, 1.0, 0.0), + (Gecko, _) => (7.5, 2.0, 0.0), + (Turtle, _) => (4.0, 3.0, 0.0), + (Squirrel, _) => (7.5, -9.0, 0.0), + (Fungome, _) => (4.0, 2.0, 0.0), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.5, -2.0, 0.0), @@ -168,6 +186,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (3.5, -2.0, -1.0), (Truffler, _) => (3.0, -5.0, -9.5), (Frog, _) => (5.0, -3.5, 0.0), + (Rat, _) => (6.0, -2.0, 0.0), + (Axolotl, _) => (7.0, 1.0, 0.0), + (Gecko, _) => (7.5, 2.0, 0.0), + (Turtle, _) => (4.0, 3.0, 0.0), + (Squirrel, _) => (7.5, -9.0, 0.0), + (Fungome, _) => (4.0, 2.0, 0.0), }, tail: match (body.species, body.body_type) { (Pig, _) => (-4.5, 2.5), @@ -186,6 +210,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (-4.0, -0.0), (Truffler, _) => (0.0, 0.0), (Frog, _) => (0.0, -0.0), + (Rat, _) => (6.0, -2.0), + (Axolotl, _) => (7.0, 1.0), + (Gecko, _) => (7.5, 2.0), + (Turtle, _) => (4.0, 3.0), + (Squirrel, _) => (7.5, -9.0), + (Fungome, _) => (4.0, 2.0), }, scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), @@ -204,6 +234,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (0.7), (Truffler, _) => (1.0), (Frog, _) => (0.7), + (Rat, _) => (6.0), + (Axolotl, _) => (7.0), + (Gecko, _) => (7.5), + (Turtle, _) => (4.0), + (Squirrel, _) => (7.5), + (Fungome, _) => (4.0), }, tempo: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -222,6 +258,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.15), (Truffler, _) => (1.0), (Frog, _) => (1.15), + (Rat, _) => (6.0), + (Axolotl, _) => (7.0), + (Gecko, _) => (7.5), + (Turtle, _) => (4.0), + (Squirrel, _) => (7.5), + (Fungome, _) => (4.0), }, maximize: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -240,6 +282,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.3), (Truffler, _) => (1.0), (Frog, _) => (1.3), + (Rat, _) => (0.1), + (Axolotl, _) => (0.1), + (Gecko, _) => (0.1), + (Turtle, _) => (0.1), + (Squirrel, _) => (0.1), + (Fungome, _) => (0.1), }, minimize: match (body.species, body.body_type) { (Pig, _) => (0.6), @@ -258,6 +306,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (0.8), (Truffler, _) => (1.0), (Frog, _) => (0.8), + (Rat, _) => (0.1), + (Axolotl, _) => (0.1), + (Gecko, _) => (0.1), + (Turtle, _) => (0.1), + (Squirrel, _) => (0.1), + (Fungome, _) => (0.1), }, spring: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -276,6 +330,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (2.5), (Truffler, _) => (0.8), (Frog, _) => (2.5), + (Rat, _) => (0.1), + (Axolotl, _) => (0.1), + (Gecko, _) => (0.1), + (Turtle, _) => (0.1), + (Squirrel, _) => (0.1), + (Fungome, _) => (0.1), }, feed: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -294,6 +354,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.2), (Truffler, _) => (0.6), (Frog, _) => (0.7), + (Rat, _) => (0.1), + (Axolotl, _) => (0.1), + (Gecko, _) => (0.1), + (Turtle, _) => (0.1), + (Squirrel, _) => (0.1), + (Fungome, _) => (0.1), }, } } diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs new file mode 100644 index 0000000000..f82a9575a1 --- /dev/null +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -0,0 +1,109 @@ +use super::{super::Animation, SkeletonAttr, TheropodSkeleton}; +//use std::{f32::consts::PI, ops::Mul}; +use super::super::vek::*; +use std::{f32::consts::PI, ops::Mul}; + +pub struct IdleAnimation; + +impl Animation for IdleAnimation { + type Dependency = f64; + type Skeleton = TheropodSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"theropod_idle\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_idle")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + global_time: Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_z(0.0); + next.head.scale = Vec3::one(); + + next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); + next.jaw.orientation = Quaternion::rotation_z(0.0); + next.jaw.scale = Vec3::one(); + + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(0.0); + next.neck.scale = Vec3::one(); + + next.chest_front.position = Vec3::new( + 0.0, + skeleton_attr.chest_front.0, + skeleton_attr.chest_front.1, + ); + next.chest_front.orientation = Quaternion::rotation_z(0.0); + next.chest_front.scale = Vec3::one(); + + next.chest_back.position = + Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); + next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.scale = Vec3::one(); + + next.tail_front.position = + Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); + next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.scale = Vec3::one(); + + next.tail_back.position = + Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); + next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.1, + ); + next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.hand_r.position = Vec3::new( + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.1, + ); + next.hand_r.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.leg_l.position = Vec3::new( + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.1, + ); + next.leg_l.orientation = Quaternion::rotation_z(0.0); + next.leg_l.scale = Vec3::one(); + + next.leg_r.position = Vec3::new( + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.1, + ); + next.leg_r.orientation = Quaternion::rotation_z(0.0); + next.leg_r.scale = Vec3::one(); + + next.foot_l.position = Vec3::new( + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.1, + ); + next.foot_l.orientation = Quaternion::rotation_z(0.0); + next.foot_l.scale = Vec3::one(); + + next.foot_r.position = Vec3::new( + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.1, + ); + next.foot_r.orientation = Quaternion::rotation_z(0.0); + next.foot_r.scale = Vec3::one(); + next + } +} diff --git a/voxygen/src/anim/src/theropod/jump.rs b/voxygen/src/anim/src/theropod/jump.rs new file mode 100644 index 0000000000..a18778e6a6 --- /dev/null +++ b/voxygen/src/anim/src/theropod/jump.rs @@ -0,0 +1,111 @@ +use super::{super::Animation, SkeletonAttr, TheropodSkeleton}; +//use std::f32::consts::PI; +use super::super::vek::*; + +pub struct JumpAnimation; + +impl Animation for JumpAnimation { + type Dependency = (f32, f64); + type Skeleton = TheropodSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"theropod_jump\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_jump")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + _global_time: Self::Dependency, + _anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let wave = (_anim_time as f32 * 1.0).sin(); + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_z(0.0); + next.head.scale = Vec3::one(); + + next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); + next.jaw.orientation = Quaternion::rotation_z(0.0); + next.jaw.scale = Vec3::one(); + + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(0.0); + next.neck.scale = Vec3::one(); + + next.chest_front.position = Vec3::new( + 0.0, + skeleton_attr.chest_front.0, + skeleton_attr.chest_front.1, + ); + next.chest_front.orientation = Quaternion::rotation_z(0.0); + next.chest_front.scale = Vec3::one(); + + next.chest_back.position = + Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); + next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.scale = Vec3::one(); + + next.tail_front.position = + Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); + next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.scale = Vec3::one(); + + next.tail_back.position = + Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); + next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.1, + ); + next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.hand_r.position = Vec3::new( + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.1, + ); + next.hand_r.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.leg_l.position = Vec3::new( + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.1, + ); + next.leg_l.orientation = Quaternion::rotation_z(0.0); + next.leg_l.scale = Vec3::one(); + + next.leg_r.position = Vec3::new( + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.1, + ); + next.leg_r.orientation = Quaternion::rotation_z(0.0); + next.leg_r.scale = Vec3::one(); + + next.foot_l.position = Vec3::new( + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.1, + ); + next.foot_l.orientation = Quaternion::rotation_z(0.0); + next.foot_l.scale = Vec3::one(); + + next.foot_r.position = Vec3::new( + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.1, + ); + next.foot_r.orientation = Quaternion::rotation_z(0.0); + next.foot_r.scale = Vec3::one(); + + next + } +} diff --git a/voxygen/src/anim/src/theropod/mod.rs b/voxygen/src/anim/src/theropod/mod.rs new file mode 100644 index 0000000000..4a024f8663 --- /dev/null +++ b/voxygen/src/anim/src/theropod/mod.rs @@ -0,0 +1,177 @@ +pub mod idle; +pub mod jump; +pub mod run; + +// Reexports +pub use self::{idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation}; + +use super::{make_bone, vek::*, FigureBoneData, Skeleton}; +use common::comp::{self}; +use core::convert::TryFrom; + +pub type Body = comp::theropod::Body; + +skeleton_impls!(struct TheropodSkeleton { + + head, + + jaw, + + neck, + + chest_front, + + chest_back, + + tail_front, + + tail_back, + + hand_l, + + hand_r, + + leg_l, + + leg_r, + + foot_l, + + foot_r, +}); + +impl Skeleton for TheropodSkeleton { + type Attr = SkeletonAttr; + type Body = Body; + + const BONE_COUNT: usize = 13; + #[cfg(feature = "use-dyn-lib")] + const COMPUTE_FN: &'static [u8] = b"theropod_compute_mats\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_compute_mats")] + + fn compute_matrices_inner( + &self, + base_mat: Mat4, + buf: &mut [FigureBoneData; super::MAX_BONE_COUNT], + ) -> Vec3 { + let chest_front_mat = base_mat * Mat4::::from(self.chest_front); + let neck_mat = chest_front_mat * Mat4::::from(self.neck); + let head_mat = neck_mat * Mat4::::from(self.head); + let chest_back_mat = chest_front_mat * Mat4::::from(self.chest_back); + let tail_front_mat = chest_back_mat * Mat4::::from(self.tail_front); + let leg_l_mat = chest_front_mat * Mat4::::from(self.leg_l); + let leg_r_mat = chest_front_mat * Mat4::::from(self.leg_r); + + *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ + make_bone(head_mat), + make_bone(head_mat * Mat4::::from(self.jaw)), + make_bone(neck_mat), + make_bone(chest_front_mat), + make_bone(chest_back_mat), + make_bone(tail_front_mat), + make_bone(tail_front_mat * Mat4::::from(self.tail_back)), + make_bone(chest_front_mat * Mat4::::from(self.hand_l)), + make_bone(chest_front_mat * Mat4::::from(self.hand_r)), + make_bone(leg_l_mat), + make_bone(leg_r_mat), + make_bone(leg_l_mat * Mat4::::from(self.foot_l)), + make_bone(leg_r_mat * Mat4::::from(self.foot_r)), + ]; + Vec3::default() + } +} + +pub struct SkeletonAttr { + head: (f32, f32), + neck: (f32, f32), + jaw: (f32, f32), + chest_front: (f32, f32), + chest_back: (f32, f32), + tail_front: (f32, f32), + tail_back: (f32, f32), + hand_l: (f32, f32, f32), + hand_r: (f32, f32, f32), + leg_l: (f32, f32, f32), + leg_r: (f32, f32, f32), + foot_l: (f32, f32, f32), + foot_r: (f32, f32, f32), +} + +impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { + type Error = (); + + fn try_from(body: &'a comp::Body) -> Result { + match body { + comp::Body::Theropod(body) => Ok(SkeletonAttr::from(body)), + _ => Err(()), + } + } +} + +impl Default for SkeletonAttr { + fn default() -> Self { + Self { + head: (0.0, 0.0), + neck: (0.0, 0.0), + jaw: (0.0, 0.0), + chest_front: (0.0, 0.0), + chest_back: (0.0, 0.0), + tail_front: (0.0, 0.0), + tail_back: (0.0, 0.0), + hand_l: (0.0, 0.0, 0.0), + hand_r: (0.0, 0.0, 0.0), + leg_l: (0.0, 0.0, 0.0), + leg_r: (0.0, 0.0, 0.0), + foot_l: (0.0, 0.0, 0.0), + foot_r: (0.0, 0.0, 0.0), + } + } +} + +impl<'a> From<&'a Body> for SkeletonAttr { + fn from(body: &'a Body) -> Self { + use comp::theropod::Species::*; + Self { + head: match (body.species, body.body_type) { + (Archaeos, _) => (6.5, 3.0), + (Odontotyrannos, _) => (5.0, 1.0), + }, + jaw: match (body.species, body.body_type) { + (Archaeos, _) => (0.0, 6.0), + (Odontotyrannos, _) => (-1.0, 3.0), + }, + neck: match (body.species, body.body_type) { + (Archaeos, _) => (0.0, 6.0), + (Odontotyrannos, _) => (-1.0, 3.0), + }, + chest_front: match (body.species, body.body_type) { + (Archaeos, _) => (0.0, 6.0), + (Odontotyrannos, _) => (-1.0, 3.0), + }, + chest_back: match (body.species, body.body_type) { + (Archaeos, _) => (0.0, 6.0), + (Odontotyrannos, _) => (-1.0, 3.0), + }, + tail_front: match (body.species, body.body_type) { + (Archaeos, _) => (-8.0, -1.0), + (Odontotyrannos, _) => (-7.0, -1.0), + }, + tail_back: match (body.species, body.body_type) { + (Archaeos, _) => (-8.0, -1.0), + (Odontotyrannos, _) => (-7.0, -1.0), + }, + hand_l: match (body.species, body.body_type) { + (Archaeos, _) => (-8.0, -1.0, 0.0), + (Odontotyrannos, _) => (-7.0, -1.0, 0.0), + }, + hand_r: match (body.species, body.body_type) { + (Archaeos, _) => (8.0, -1.0, 0.0), + (Odontotyrannos, _) => (7.0, -1.0, 0.0), + }, + leg_l: match (body.species, body.body_type) { + (Archaeos, _) => (-8.0, -1.0, 0.0), + (Odontotyrannos, _) => (-7.0, -1.0, 0.0), + }, + leg_r: match (body.species, body.body_type) { + (Archaeos, _) => (8.0, -1.0, 0.0), + (Odontotyrannos, _) => (7.0, -1.0, 0.0), + }, + foot_l: match (body.species, body.body_type) { + (Archaeos, _) => (-8.0, -1.0, 0.0), + (Odontotyrannos, _) => (-7.0, -1.0, 0.0), + }, + foot_r: match (body.species, body.body_type) { + (Archaeos, _) => (8.0, -1.0, 0.0), + (Odontotyrannos, _) => (7.0, -1.0, 0.0), + }, + } + } +} diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs new file mode 100644 index 0000000000..4ca88632a4 --- /dev/null +++ b/voxygen/src/anim/src/theropod/run.rs @@ -0,0 +1,114 @@ +use super::{super::Animation, SkeletonAttr, TheropodSkeleton}; +//use std::{f32::consts::PI, ops::Mul}; +use super::super::vek::*; +use std::f32::consts::PI; + +pub struct RunAnimation; + +impl Animation for RunAnimation { + type Dependency = (f32, f64); + type Skeleton = TheropodSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"theropod_run\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_run")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (_velocity, _global_time): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let wave = (anim_time as f32 * 8.0).sin(); + let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); + let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_z(0.0); + next.head.scale = Vec3::one(); + + next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); + next.jaw.orientation = Quaternion::rotation_z(0.0); + next.jaw.scale = Vec3::one(); + + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(0.0); + next.neck.scale = Vec3::one(); + + next.chest_front.position = Vec3::new( + 0.0, + skeleton_attr.chest_front.0, + skeleton_attr.chest_front.1, + ); + next.chest_front.orientation = Quaternion::rotation_z(0.0); + next.chest_front.scale = Vec3::one(); + + next.chest_back.position = + Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); + next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.scale = Vec3::one(); + + next.tail_front.position = + Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); + next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.scale = Vec3::one(); + + next.tail_back.position = + Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); + next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.0, + skeleton_attr.hand_l.1, + ); + next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.hand_r.position = Vec3::new( + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.0, + skeleton_attr.hand_r.1, + ); + next.hand_r.orientation = Quaternion::rotation_z(0.0); + next.hand_l.scale = Vec3::one(); + + next.leg_l.position = Vec3::new( + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.0, + skeleton_attr.leg_l.1, + ); + next.leg_l.orientation = Quaternion::rotation_z(0.0); + next.leg_l.scale = Vec3::one(); + + next.leg_r.position = Vec3::new( + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.0, + skeleton_attr.leg_r.1, + ); + next.leg_r.orientation = Quaternion::rotation_z(0.0); + next.leg_r.scale = Vec3::one(); + + next.foot_l.position = Vec3::new( + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.0, + skeleton_attr.foot_l.1, + ); + next.foot_l.orientation = Quaternion::rotation_z(0.0); + next.foot_l.scale = Vec3::one(); + + next.foot_r.position = Vec3::new( + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.0, + skeleton_attr.foot_r.1, + ); + next.foot_r.orientation = Quaternion::rotation_z(0.0); + next.foot_r.scale = Vec3::one(); + + next + } +} diff --git a/voxygen/src/scene/figure/cache.rs b/voxygen/src/scene/figure/cache.rs index 60d723a4d5..421b3259eb 100644 --- a/voxygen/src/scene/figure/cache.rs +++ b/voxygen/src/scene/figure/cache.rs @@ -254,6 +254,7 @@ where manifest_indicator, } } + /// NOTE: Intended for render time (useful with systems like wgpu that /// expect data used by the rendering pipelines to be stable throughout /// the render pass). @@ -283,6 +284,12 @@ where }), }; + if let Some(((FigureModelEntryFuture::Done(model), _), _)) = self.models.get(&key) { + Some(model) + } else { + None + } + } pub fn get_or_create_model<'c>( &'c mut self, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 4fb0025440..09f0e40edc 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -5,7 +5,6 @@ use common::{ biped_large::{self, BodyType as BLBodyType, Species as BLSpecies}, bird_medium::{self, BodyType as BMBodyType, Species as BMSpecies}, bird_small, - critter::{self, BodyType as CBodyType, Species as CSpecies}, dragon::{self, BodyType as DBodyType, Species as DSpecies}, fish_medium, fish_small, golem::{self, BodyType as GBodyType, Species as GSpecies}, @@ -15,6 +14,7 @@ use common::{ quadruped_low::{self, BodyType as QLBodyType, Species as QLSpecies}, quadruped_medium::{self, BodyType as QMBodyType, Species as QMSpecies}, quadruped_small::{self, BodyType as QSBodyType, Species as QSSpecies}, + theropod::{self, BodyType as TBodyType, Species as TSpecies}, }, figure::{DynaUnionizer, MatSegment, Material, Segment}, }; @@ -1734,57 +1734,100 @@ impl BirdMediumLateralSpec { } //// #[derive(Deserialize)] -struct CritterCenterSpec(HashMap<(CSpecies, CBodyType), SidedCCenterVoxSpec>); +struct TheropodCentralSpec(HashMap<(TSpecies, TBodyType), SidedTCentralVoxSpec>); #[derive(Deserialize)] -struct SidedCCenterVoxSpec { - head: CritterCenterSubSpec, - chest: CritterCenterSubSpec, - feet_f: CritterCenterSubSpec, - feet_b: CritterCenterSubSpec, - tail: CritterCenterSubSpec, +struct SidedTCentralVoxSpec { + head: TheropodCentralSubSpec, + jaw: TheropodCentralSubSpec, + neck: TheropodCentralSubSpec, + chest_front: TheropodCentralSubSpec, + chest_back: TheropodCentralSubSpec, + tail_front: TheropodCentralSubSpec, + tail_back: TheropodCentralSubSpec, } #[derive(Deserialize)] -struct CritterCenterSubSpec { +struct TheropodCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin - center: VoxSimple, + central: VoxSimple, } +#[derive(Deserialize)] +struct TheropodLateralSpec(HashMap<(TSpecies, TBodyType), SidedTLateralVoxSpec>); +#[derive(Deserialize)] +struct SidedTLateralVoxSpec { + hand_l: TheropodLateralSubSpec, + hand_r: TheropodLateralSubSpec, + leg_l: TheropodLateralSubSpec, + leg_r: TheropodLateralSubSpec, + foot_l: TheropodLateralSubSpec, + foot_r: TheropodLateralSubSpec, +} +#[derive(Deserialize)] +struct TheropodLateralSubSpec { + offset: [f32; 3], // Should be relative to initial origin + lateral: VoxSimple, +} make_vox_spec!( - critter::Body, - struct CritterSpec { - center: CritterCenterSpec = "voxygen.voxel.critter_center_manifest", + theropod::Body, + struct TheropodSpec { + central: TheropodCentralSpec = "voxygen.voxel.theropod_central_manifest", + lateral: TheropodLateralSpec = "voxygen.voxel.theropod_lateral_manifest", }, |FigureKey { body, .. }, spec| { [ - Some(spec.center.asset.mesh_head( + Some(spec.central.asset.mesh_head( body.species, body.body_type, )), - Some(spec.center.asset.mesh_chest( + Some(spec.central.asset.mesh_jaw( body.species, body.body_type, )), - Some(spec.center.asset.mesh_feet_f( + Some(spec.central.asset.mesh_neck( body.species, body.body_type, )), - Some(spec.center.asset.mesh_feet_b( + Some(spec.central.asset.mesh_chest_front( body.species, body.body_type, )), - Some(spec.center.asset.mesh_tail( + Some(spec.central.asset.mesh_chest_back( + body.species, + body.body_type, + )), + Some(spec.central.asset.mesh_tail_front( + body.species, + body.body_type, + )), + Some(spec.central.asset.mesh_tail_back( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_hand_l( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_hand_r( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_leg_l( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_leg_r( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_foot_l( + body.species, + body.body_type, + )), + Some(spec.lateral.asset.mesh_foot_r( body.species, body.body_type, )), - None, - None, - None, - None, - None, - None, - None, - None, None, None, None, @@ -1792,8 +1835,8 @@ make_vox_spec!( }, ); -impl CritterCenterSpec { - fn mesh_head(&self, species: CSpecies, body_type: CBodyType) -> BoneMeshes { +impl TheropodCentralSpec { + fn mesh_head(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -1804,73 +1847,234 @@ impl CritterCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.head.center.0); + let central = graceful_load_segment(&spec.head.central.0); - (center, Vec3::from(spec.head.offset)) + (central, Vec3::from(spec.head.offset)) } - fn mesh_chest(&self, species: CSpecies, body_type: CBodyType) -> BoneMeshes { + fn mesh_jaw(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No chest specification exists for the combination of {:?} and {:?}", + "No jaw specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.chest.center.0); + let central = graceful_load_segment(&spec.jaw.central.0); - (center, Vec3::from(spec.chest.offset)) + (central, Vec3::from(spec.jaw.offset)) } - fn mesh_feet_f(&self, species: CSpecies, body_type: CBodyType) -> BoneMeshes { + fn mesh_neck(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No feet specification exists for the combination of {:?} and {:?}", + "No jaw specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.feet_f.center.0); + let central = graceful_load_segment(&spec.neck.central.0); - (center, Vec3::from(spec.feet_f.offset)) + (central, Vec3::from(spec.neck.offset)) } - fn mesh_feet_b(&self, species: CSpecies, body_type: CBodyType) -> BoneMeshes { + fn mesh_chest_front(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No feet specification exists for the combination of {:?} and {:?}", + "No front chest specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.feet_b.center.0); + let central = graceful_load_segment(&spec.chest_front.central.0); - (center, Vec3::from(spec.feet_b.offset)) + (central, Vec3::from(spec.chest_front.offset)) } - fn mesh_tail(&self, species: CSpecies, body_type: CBodyType) -> BoneMeshes { + fn mesh_chest_back(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No tail specification exists for the combination of {:?} and {:?}", + "No back chest specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.tail.center.0); + let central = graceful_load_segment(&spec.chest_back.central.0); - (center, Vec3::from(spec.tail.offset)) + (central, Vec3::from(spec.chest_back.offset)) + } + + fn mesh_tail_front( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No front tail specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.tail_front.central.0); + + (central, Vec3::from(spec.tail_front.offset)) + } + + fn mesh_tail_back( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No back tail specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let central = graceful_load_segment(&spec.tail_back.central.0); + + (central, Vec3::from(spec.tail_back.offset)) + } +} +impl TheropodLateralSpec { + fn mesh_hand_l( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No left hand specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.hand_l.lateral.0); + + (lateral, Vec3::from(spec.hand_l.offset)) + } + + fn mesh_hand_r( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No right hand specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.hand_r.lateral.0); + + (lateral, Vec3::from(spec.hand_r.offset)) + } + + fn mesh_leg_l( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No left leg specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.leg_l.lateral.0); + + (lateral, Vec3::from(spec.leg_l.offset)) + } + + fn mesh_leg_r( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No right leg specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.leg_r.lateral.0); + + (lateral, Vec3::from(spec.leg_r.offset)) + } + + fn mesh_foot_l( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No left foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.foot_l.lateral.0); + + (lateral, Vec3::from(spec.foot_l.offset)) + } + + fn mesh_foot_r( + &self, + species: TSpecies, + body_type: TBodyType, + ) -> BoneMeshes { + let spec = match self.0.get(&(species, body_type)) { + Some(spec) => spec, + None => { + error!( + "No right foot specification exists for the combination of {:?} and {:?}", + species, body_type + ); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); + }, + }; + let lateral = graceful_load_segment(&spec.foot_r.lateral.0); + + (lateral, Vec3::from(spec.foot_r.offset)) } } //// @@ -2821,6 +3025,10 @@ make_vox_spec!( body.species, body.body_type, )), + Some(spec.center.asset.mesh_torso_lower( + body.species, + body.body_type, + )), Some(spec.lateral.asset.mesh_shoulder_l( body.species, body.body_type, @@ -2858,7 +3066,6 @@ make_vox_spec!( None, None, None, - None, ] }, ); @@ -2900,7 +3107,6 @@ impl GolemCenterSpec { &self, species: GSpecies, body_type: GBodyType, - generate_mesh: impl FnOnce(Segment, Vec3) -> BoneMeshes, ) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -2909,12 +3115,12 @@ impl GolemCenterSpec { "No torso lower 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); + return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; let center = graceful_load_segment(&spec.torso_lower.center.0); - generate_mesh(center, Vec3::from(spec.torso_lower.offset)) + (center, Vec3::from(spec.torso_lower.offset)) } } impl GolemLateralSpec { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index b6a16f0f9e..eda6fa8fb5 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -17,11 +17,11 @@ use crate::{ }; use anim::{ biped_large::BipedLargeSkeleton, bird_medium::BirdMediumSkeleton, - bird_small::BirdSmallSkeleton, character::CharacterSkeleton, critter::CritterSkeleton, - dragon::DragonSkeleton, fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, - golem::GolemSkeleton, object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, - quadruped_medium::QuadrupedMediumSkeleton, quadruped_small::QuadrupedSmallSkeleton, Animation, - Skeleton, + bird_small::BirdSmallSkeleton, character::CharacterSkeleton, dragon::DragonSkeleton, + fish_medium::FishMediumSkeleton, fish_small::FishSmallSkeleton, golem::GolemSkeleton, + object::ObjectSkeleton, quadruped_low::QuadrupedLowSkeleton, + quadruped_medium::QuadrupedMediumSkeleton, quadruped_small::QuadrupedSmallSkeleton, + theropod::TheropodSkeleton, Animation, Skeleton, }; use common::{ comp::{ @@ -87,7 +87,7 @@ struct FigureMgrStates { quadruped_low_states: HashMap>, bird_medium_states: HashMap>, fish_medium_states: HashMap>, - critter_states: HashMap>, + theropod_states: HashMap>, dragon_states: HashMap>, bird_small_states: HashMap>, fish_small_states: HashMap>, @@ -105,7 +105,7 @@ impl FigureMgrStates { quadruped_low_states: HashMap::new(), bird_medium_states: HashMap::new(), fish_medium_states: HashMap::new(), - critter_states: HashMap::new(), + theropod_states: HashMap::new(), dragon_states: HashMap::new(), bird_small_states: HashMap::new(), fish_small_states: HashMap::new(), @@ -149,8 +149,8 @@ impl FigureMgrStates { .fish_medium_states .get_mut(&entity) .map(DerefMut::deref_mut), - Body::Critter(_) => self - .critter_states + Body::Theropod(_) => self + .theropod_states .get_mut(&entity) .map(DerefMut::deref_mut), Body::Dragon(_) => self.dragon_states.get_mut(&entity).map(DerefMut::deref_mut), @@ -185,7 +185,7 @@ impl FigureMgrStates { Body::QuadrupedLow(_) => self.quadruped_low_states.remove(&entity).map(|e| e.meta), Body::BirdMedium(_) => self.bird_medium_states.remove(&entity).map(|e| e.meta), Body::FishMedium(_) => self.fish_medium_states.remove(&entity).map(|e| e.meta), - Body::Critter(_) => self.critter_states.remove(&entity).map(|e| e.meta), + Body::Theropod(_) => self.theropod_states.remove(&entity).map(|e| e.meta), Body::Dragon(_) => self.dragon_states.remove(&entity).map(|e| e.meta), Body::BirdSmall(_) => self.bird_small_states.remove(&entity).map(|e| e.meta), Body::FishSmall(_) => self.fish_small_states.remove(&entity).map(|e| e.meta), @@ -203,7 +203,7 @@ impl FigureMgrStates { self.quadruped_low_states.retain(|k, v| f(k, &mut *v)); self.bird_medium_states.retain(|k, v| f(k, &mut *v)); self.fish_medium_states.retain(|k, v| f(k, &mut *v)); - self.critter_states.retain(|k, v| f(k, &mut *v)); + self.theropod_states.retain(|k, v| f(k, &mut *v)); self.dragon_states.retain(|k, v| f(k, &mut *v)); self.bird_small_states.retain(|k, v| f(k, &mut *v)); self.fish_small_states.retain(|k, v| f(k, &mut *v)); @@ -220,7 +220,7 @@ impl FigureMgrStates { + self.quadruped_low_states.len() + self.bird_medium_states.len() + self.fish_medium_states.len() - + self.critter_states.len() + + self.theropod_states.len() + self.dragon_states.len() + self.bird_small_states.len() + self.fish_small_states.len() @@ -255,7 +255,7 @@ impl FigureMgrStates { .filter(|(_, c)| c.visible()) .count() + self - .critter_states + .theropod_states .iter() .filter(|(_, c)| c.visible()) .count() @@ -300,7 +300,7 @@ impl FigureMgrStates { pub struct FigureMgr { col_lights: FigureColLights, model_cache: FigureModelCache, - critter_model_cache: FigureModelCache, + theropod_model_cache: FigureModelCache, quadruped_small_model_cache: FigureModelCache, quadruped_medium_model_cache: FigureModelCache, quadruped_low_model_cache: FigureModelCache, @@ -320,7 +320,7 @@ impl FigureMgr { Self { col_lights: FigureColLights::new(renderer), model_cache: FigureModelCache::new(), - critter_model_cache: FigureModelCache::new(), + theropod_model_cache: FigureModelCache::new(), quadruped_small_model_cache: FigureModelCache::new(), quadruped_medium_model_cache: FigureModelCache::new(), quadruped_low_model_cache: FigureModelCache::new(), @@ -341,7 +341,7 @@ impl FigureMgr { pub fn clean(&mut self, tick: u64) { span!(_guard, "clean", "FigureManager::clean"); self.model_cache.clean(&mut self.col_lights, tick); - self.critter_model_cache.clean(&mut self.col_lights, tick); + self.theropod_model_cache.clean(&mut self.col_lights, tick); self.quadruped_small_model_cache .clean(&mut self.col_lights, tick); self.quadruped_medium_model_cache @@ -1636,8 +1636,8 @@ impl FigureMgr { &mut update_buf, ); }, - Body::Critter(body) => { - let (model, skeleton_attr) = self.critter_model_cache.get_or_create_model( + Body::Theropod(body) => { + let (model, skeleton_attr) = self.theropod_model_cache.get_or_create_model( renderer, &mut self.col_lights, *body, @@ -1648,10 +1648,11 @@ impl FigureMgr { scene_data.thread_pool, ); - let state = - self.states.critter_states.entry(entity).or_insert_with(|| { - FigureState::new(renderer, CritterSkeleton::default()) - }); + let state = self + .states + .theropod_states + .entry(entity) + .or_insert_with(|| FigureState::new(renderer, TheropodSkeleton::default())); let (character, last_character) = match (character, last_character) { (Some(c), Some(l)) => (c, l), @@ -1668,24 +1669,24 @@ impl FigureMgr { physics.in_fluid.is_some(), // In water ) { // Standing - (true, false, false) => anim::critter::IdleAnimation::update_skeleton( - &CritterSkeleton::default(), + (true, false, false) => anim::theropod::IdleAnimation::update_skeleton( + &TheropodSkeleton::default(), time, state.state_time, &mut state_animation_rate, skeleton_attr, ), // Running - (true, true, false) => anim::critter::RunAnimation::update_skeleton( - &CritterSkeleton::default(), + (true, true, false) => anim::theropod::RunAnimation::update_skeleton( + &TheropodSkeleton::default(), (vel.0.magnitude(), time), state.state_time, &mut state_animation_rate, skeleton_attr, ), // In air - (false, _, false) => anim::critter::JumpAnimation::update_skeleton( - &CritterSkeleton::default(), + (false, _, false) => anim::theropod::JumpAnimation::update_skeleton( + &TheropodSkeleton::default(), (vel.0.magnitude(), time), state.state_time, &mut state_animation_rate, @@ -1693,8 +1694,8 @@ impl FigureMgr { ), // TODO! - _ => anim::critter::IdleAnimation::update_skeleton( - &CritterSkeleton::default(), + _ => anim::theropod::IdleAnimation::update_skeleton( + &TheropodSkeleton::default(), time, state.state_time, &mut state_animation_rate, @@ -2321,7 +2322,7 @@ impl FigureMgr { let FigureMgr { col_lights: ref col_lights_, model_cache, - critter_model_cache, + theropod_model_cache, quadruped_small_model_cache, quadruped_medium_model_cache, quadruped_low_model_cache, @@ -2341,7 +2342,7 @@ impl FigureMgr { quadruped_low_states, bird_medium_states, fish_medium_states, - critter_states, + theropod_states, dragon_states, bird_small_states, fish_small_states, @@ -2454,14 +2455,14 @@ impl FigureMgr { ), ) }), - Body::Critter(body) => critter_states + Body::Theropod(body) => theropod_states .get(&entity) .filter(|state| filter_state(&*state)) .map(move |state| { ( state.locals(), state.bone_consts(), - critter_model_cache.get_model( + theropod_model_cache.get_model( col_lights, *body, loadout, diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index 4ab7406b02..1f56cb27b6 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -281,7 +281,7 @@ pub fn apply_caves_supplement<'a>( }; comp::quadruped_low::Body::random_with(rng, &species).into() }, - 3 => { + _ => { is_hostile = true; let species = match rng.gen_range(0, 8) { 0 => comp::biped_large::Species::Ogre, @@ -291,14 +291,6 @@ pub fn apply_caves_supplement<'a>( }; comp::biped_large::Body::random_with(rng, &species).into() }, - _ => { - is_hostile = false; - let species = match rng.gen_range(0, 5) { - 0 => comp::critter::Species::Fungome, - _ => comp::critter::Species::Rat, - }; - comp::critter::Body::random_with(rng, &species).into() - }, }) .with_alignment(if is_hostile { comp::Alignment::Enemy diff --git a/world/src/lib.rs b/world/src/lib.rs index a992cc9188..e698f714e8 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -35,7 +35,7 @@ use crate::{ util::{Grid, Sampler}, }; use common::{ - comp::{self, bird_medium, critter, quadruped_low, quadruped_medium, quadruped_small}, + comp::{self, bird_medium, quadruped_low, quadruped_medium, quadruped_small, theropod}, generation::{ChunkSupplement, EntityInfo}, msg::server::WorldMapMsg, terrain::{Block, BlockKind, TerrainChunk, TerrainChunkMeta, TerrainChunkSize}, @@ -256,8 +256,8 @@ impl World { comp::Body::BirdMedium(bird_medium::Body::random()) }, 2 => { - is_hostile = false; - comp::Body::Critter(critter::Body::random()) + is_hostile = true; + comp::Body::Theropod(theropod::Body::random()) }, 3 => { match quadlow { From ee95550355518148b2198b007363e70f2390a39e Mon Sep 17 00:00:00 2001 From: Snowram Date: Sat, 29 Aug 2020 16:11:48 +0200 Subject: [PATCH 11/28] Tweak offsets for theropods --- .../voxygen/voxel/npc/archaeos/male/leg_l.vox | 2 +- .../voxygen/voxel/npc/archaeos/male/leg_r.vox | 2 +- .../voxygen/voxel/npc/archaeos/male/neck.vox | 2 +- .../npc/odontotyrannos/Odontotyrannos-4.vox | 3 - .../npc/odontotyrannos/Odontotyrannos-9.vox | 3 - .../chest_back.vox} | 0 .../chest_front.vox} | 0 .../foot_l.vox} | 0 .../voxel/npc/odontotyrannos/male/foot_r.vox | 3 + .../{Odontotyrannos-6.vox => male/hand_l.vox} | 0 .../hand_r.vox} | 0 .../{Odontotyrannos-0.vox => male/head.vox} | 0 .../{Odontotyrannos-1.vox => male/jaw.vox} | 0 .../{Odontotyrannos-5.vox => male/leg_l.vox} | 0 .../voxel/npc/odontotyrannos/male/leg_r.vox | 3 + .../tail_back.vox} | 0 .../tail_front.vox} | 0 .../voxel/theropod_central_manifest.ron | 60 +++++++-------- .../voxel/theropod_lateral_manifest.ron | 52 ++++++------- voxygen/src/anim/src/quadruped_medium/run.rs | 4 +- voxygen/src/anim/src/theropod/idle.rs | 39 +++++----- voxygen/src/anim/src/theropod/jump.rs | 36 ++++----- voxygen/src/anim/src/theropod/mod.rs | 76 +++++++------------ voxygen/src/anim/src/theropod/run.rs | 42 +++++----- 24 files changed, 155 insertions(+), 172 deletions(-) delete mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox delete mode 100644 assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-3.vox => male/chest_back.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-2.vox => male/chest_front.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-10.vox => male/foot_l.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-6.vox => male/hand_l.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-11.vox => male/hand_r.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-0.vox => male/head.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-1.vox => male/jaw.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-5.vox => male/leg_l.vox} (100%) create mode 100644 assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-8.vox => male/tail_back.vox} (100%) rename assets/voxygen/voxel/npc/odontotyrannos/{Odontotyrannos-7.vox => male/tail_front.vox} (100%) diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox index 3d553d3f5c..bc82319cbb 100644 --- a/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox +++ b/assets/voxygen/voxel/npc/archaeos/male/leg_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4cfad23ebce2f98a450497f430e2733c013697144f4550ff2bf4375b8744ca90 +oid sha256:eb4161119dbb651beefd80d1baa3f4d293970c30605999380786f771b74c406d size 2540 diff --git a/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox b/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox index f9ce12f95f..80e54cd267 100644 --- a/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox +++ b/assets/voxygen/voxel/npc/archaeos/male/leg_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f75106d357c8c677f3f19d8febd9ed399e23e6572372df601af16ab4dc38cb22 +oid sha256:7f406a2bac435814ff96aadd2dc3a54de3a0ebf43c686fd40e5d925dd4a171f5 size 2540 diff --git a/assets/voxygen/voxel/npc/archaeos/male/neck.vox b/assets/voxygen/voxel/npc/archaeos/male/neck.vox index 694e43c092..a48a8998e9 100644 --- a/assets/voxygen/voxel/npc/archaeos/male/neck.vox +++ b/assets/voxygen/voxel/npc/archaeos/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34b4900065f932ce51df7a3c9683bd2f5840f9fae14a5ab682c7ff12a9f577d8 +oid sha256:334d175000dc06822f6951ab972689168b4b43fa64dda69fecc78b527f6748f2 size 2836 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox deleted file mode 100644 index 42189b7f0b..0000000000 --- a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-4.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d7e3cab3f2a990ee083b02a292b972844e05124ace87575f72adc6b4c683fcf -size 2952 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox b/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox deleted file mode 100644 index 3e2578dbc3..0000000000 --- a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-9.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5bc3d9f3b008cf8ab7e32a0923a3744c3b7354ef8da305b7d21f6f40601e8d63 -size 2476 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/chest_back.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-3.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/chest_back.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/chest_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-2.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/chest_front.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/foot_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-10.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/foot_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox new file mode 100644 index 0000000000..e9713bb1a9 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c487e338a72e162090b7e6a0b61f2d894d2b704888040c4560307694ef0e7ebd +size 2952 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/hand_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-6.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/hand_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/hand_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-11.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/hand_r.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-0.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/head.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/jaw.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-1.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/jaw.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/leg_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-5.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/leg_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox new file mode 100644 index 0000000000..f988d02205 --- /dev/null +++ b/assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c22f115019822bca948555959ce6066450fce7716ca61b96e1652e6730970fe +size 2476 diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/tail_back.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-8.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/tail_back.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox b/assets/voxygen/voxel/npc/odontotyrannos/male/tail_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/Odontotyrannos-7.vox rename to assets/voxygen/voxel/npc/odontotyrannos/male/tail_front.vox diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index 1b21ef0838..d859b44337 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -5,7 +5,7 @@ central: ("npc.archaeos.male.head"), ), jaw: ( - offset: (-4.5, -9.0, -3.0), + offset: (-5.5, -9.0, -3.0), central: ("npc.archaeos.male.jaw"), ), neck: ( @@ -35,7 +35,7 @@ central: ("npc.archaeos.male.head"), ), jaw: ( - offset: (-4.5, -9.0, -3.0), + offset: (-5.5, -9.0, -3.0), central: ("npc.archaeos.male.jaw"), ), neck: ( @@ -61,62 +61,62 @@ ), (Odontotyrannos, Male): ( head: ( - offset: (-4.5, -4.0, -4.0), - central: ("npc.rat.male.head"), + offset: (-10.5, 0.0, -8.0), + central: ("npc.odontotyrannos.male.head"), ), jaw: ( - offset: (-4.5, -6.0, -4.0), - central: ("npc.rat.male.chest"), + offset: (-6.5, -7.0, -3.0), + central: ("npc.odontotyrannos.male.jaw"), ), neck: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), ), chest_front: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (-5.5, -5.0, -6.0), + central: ("npc.odontotyrannos.male.chest_front"), ), chest_back: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (-6.5, -8.0, -8.5), + central: ("npc.odontotyrannos.male.chest_back"), ), tail_front: ( - offset: (-0.5, -4.0, -1.5), - central: ("npc.rat.male.chest"), + offset: (-3.5, -8.0, -5.5), + central: ("npc.odontotyrannos.male.tail_front"), ), tail_back: ( - offset: (-0.5, -4.0, -1.5), - central: ("npc.rat.male.chest"), + offset: (-2.5, -8.0, -3.0), + central: ("npc.odontotyrannos.male.tail_back"), ), ), (Odontotyrannos, Female): ( head: ( - offset: (-4.5, -4.0, -4.0), - central: ("npc.rat.male.head"), + offset: (-10.5, 0.0, -8.0), + central: ("npc.odontotyrannos.male.head"), ), jaw: ( - offset: (-4.5, -6.0, -4.0), - central: ("npc.rat.male.chest"), + offset: (-6.5, -7.0, -3.0), + central: ("npc.odontotyrannos.male.jaw"), ), neck: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), ), chest_front: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (-5.5, -5.0, -6.0), + central: ("npc.odontotyrannos.male.chest_front"), ), chest_back: ( - offset: (-4.0, -1.5, -1.0), - central: ("npc.rat.male.chest"), + offset: (-6.5, -8.0, -8.5), + central: ("npc.odontotyrannos.male.chest_back"), ), tail_front: ( - offset: (-0.5, -4.0, -1.5), - central: ("npc.rat.male.chest"), + offset: (-3.5, -8.0, -5.5), + central: ("npc.odontotyrannos.male.tail_front"), ), tail_back: ( - offset: (-0.5, -4.0, -1.5), - central: ("npc.rat.male.chest"), + offset: (-2.5, -8.0, -3.0), + central: ("npc.odontotyrannos.male.tail_back"), ), ), }) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index 67e48db670..9c4db7376e 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -5,7 +5,7 @@ lateral: ("npc.archaeos.male.hand_l"), ), hand_r: ( - offset: (0.0, -2.0, -4.0), + offset: (0.0, -2.0, -9.0), lateral: ("npc.archaeos.male.hand_r"), ), leg_l: ( @@ -31,7 +31,7 @@ lateral: ("npc.archaeos.male.hand_l"), ), hand_r: ( - offset: (0.0, -2.0, -4.0), + offset: (0.0, -2.0, -9.0), lateral: ("npc.archaeos.male.hand_r"), ), leg_l: ( @@ -53,54 +53,54 @@ ), (Odontotyrannos, Male): ( hand_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-3.0, -3.0, -7.0), + lateral: ("npc.odontotyrannos.male.hand_l"), ), hand_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (0.0, -3.0, -7.0), + lateral: ("npc.odontotyrannos.male.hand_r"), ), leg_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-7.0, -4.5, -4.0), + lateral: ("npc.odontotyrannos.male.leg_l"), ), leg_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (0.0, -4.5, -4.0), + lateral: ("npc.odontotyrannos.male.leg_r"), ), foot_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-14.0, -1.0, -8.0), + lateral: ("npc.odontotyrannos.male.foot_l"), ), foot_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (-6.0, -1.0, -8.0), + lateral: ("npc.odontotyrannos.male.foot_r"), ), ), (Odontotyrannos, Female): ( hand_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-3.0, -3.0, -7.0), + lateral: ("npc.odontotyrannos.male.hand_l"), ), hand_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (0.0, -3.0, -7.0), + lateral: ("npc.odontotyrannos.male.hand_r"), ), leg_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-7.0, -4.5, -4.0), + lateral: ("npc.odontotyrannos.male.leg_l"), ), leg_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (0.0, -4.5, -4.0), + lateral: ("npc.odontotyrannos.male.leg_r"), ), foot_l: ( - offset: (-6.0, -3.5, -4.0), - lateral: ("npc.ogre.male.shoulder_l"), + offset: (-14.0, -1.0, -8.0), + lateral: ("npc.odontotyrannos.male.foot_l"), ), foot_r: ( - offset: (-6.0, -4.5, -4.0), - lateral: ("npc.ogre.male.shoulder_r"), + offset: (-6.0, -1.0, -8.0), + lateral: ("npc.odontotyrannos.male.foot_r"), ), ), }) diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 310e6d2105..23af24cfd3 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -133,11 +133,11 @@ impl Animation for RunAnimation { skeleton_attr.torso_front.1 + canceler * 1.0 + canceler * shortalt * 2.5 - + x_tilt * 10.0, + + x_tilt * 10.0 * canceler, ) * skeleton_attr.scaler / 11.0; next.torso_front.orientation = - Quaternion::rotation_x((amplitude * (short * -0.13).max(-0.2)) + x_tilt) + Quaternion::rotation_x((amplitude * (short * -0.13).max(-0.2)) + x_tilt * (canceler * 6.0).min(1.0)) * Quaternion::rotation_y(tilt * 0.8) * Quaternion::rotation_z(tilt * -1.5); next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs index f82a9575a1..7fc5ea3121 100644 --- a/voxygen/src/anim/src/theropod/idle.rs +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -58,52 +58,53 @@ impl Animation for IdleAnimation { next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.1, + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_l.orientation = Quaternion::rotation_z(0.0); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.1, + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_r.orientation = Quaternion::rotation_z(0.0); - next.hand_l.scale = Vec3::one(); + next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.1, + -skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); next.leg_r.position = Vec3::new( - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.1, + skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); next.foot_l.position = Vec3::new( - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.1, + -skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); next.foot_l.scale = Vec3::one(); next.foot_r.position = Vec3::new( - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.1, + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); next.foot_r.scale = Vec3::one(); + next } } diff --git a/voxygen/src/anim/src/theropod/jump.rs b/voxygen/src/anim/src/theropod/jump.rs index a18778e6a6..fe6be33a0b 100644 --- a/voxygen/src/anim/src/theropod/jump.rs +++ b/voxygen/src/anim/src/theropod/jump.rs @@ -59,49 +59,49 @@ impl Animation for JumpAnimation { next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.1, + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_l.orientation = Quaternion::rotation_z(0.0); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.1, + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_r.orientation = Quaternion::rotation_z(0.0); next.hand_l.scale = Vec3::one(); next.leg_l.position = Vec3::new( - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.1, + -skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); next.leg_r.position = Vec3::new( - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.1, + skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); next.foot_l.position = Vec3::new( - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.1, + -skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); next.foot_l.scale = Vec3::one(); next.foot_r.position = Vec3::new( - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.1, + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); next.foot_r.scale = Vec3::one(); diff --git a/voxygen/src/anim/src/theropod/mod.rs b/voxygen/src/anim/src/theropod/mod.rs index 4a024f8663..86b08cfb5a 100644 --- a/voxygen/src/anim/src/theropod/mod.rs +++ b/voxygen/src/anim/src/theropod/mod.rs @@ -77,12 +77,9 @@ pub struct SkeletonAttr { chest_back: (f32, f32), tail_front: (f32, f32), tail_back: (f32, f32), - hand_l: (f32, f32, f32), - hand_r: (f32, f32, f32), - leg_l: (f32, f32, f32), - leg_r: (f32, f32, f32), - foot_l: (f32, f32, f32), - foot_r: (f32, f32, f32), + hand: (f32, f32, f32), + leg: (f32, f32, f32), + foot: (f32, f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -106,12 +103,9 @@ impl Default for SkeletonAttr { chest_back: (0.0, 0.0), tail_front: (0.0, 0.0), tail_back: (0.0, 0.0), - hand_l: (0.0, 0.0, 0.0), - hand_r: (0.0, 0.0, 0.0), - leg_l: (0.0, 0.0, 0.0), - leg_r: (0.0, 0.0, 0.0), - foot_l: (0.0, 0.0, 0.0), - foot_r: (0.0, 0.0, 0.0), + hand: (0.0, 0.0, 0.0), + leg: (0.0, 0.0, 0.0), + foot: (0.0, 0.0, 0.0), } } } @@ -121,56 +115,44 @@ impl<'a> From<&'a Body> for SkeletonAttr { use comp::theropod::Species::*; Self { head: match (body.species, body.body_type) { - (Archaeos, _) => (6.5, 3.0), - (Odontotyrannos, _) => (5.0, 1.0), + (Archaeos, _) => (8.0, 4.0), + (Odontotyrannos, _) => (-2.5, 3.0), }, jaw: match (body.species, body.body_type) { - (Archaeos, _) => (0.0, 6.0), - (Odontotyrannos, _) => (-1.0, 3.0), + (Archaeos, _) => (10.0, -7.0), + (Odontotyrannos, _) => (10.0, -7.0), }, neck: match (body.species, body.body_type) { - (Archaeos, _) => (0.0, 6.0), - (Odontotyrannos, _) => (-1.0, 3.0), + (Archaeos, _) => (4.5, -2.0), + (Odontotyrannos, _) => (4.5, -2.0), }, chest_front: match (body.species, body.body_type) { - (Archaeos, _) => (0.0, 6.0), - (Odontotyrannos, _) => (-1.0, 3.0), + (Archaeos, _) => (4.5, 20.0), + (Odontotyrannos, _) => (4.0, 13.0), }, chest_back: match (body.species, body.body_type) { - (Archaeos, _) => (0.0, 6.0), - (Odontotyrannos, _) => (-1.0, 3.0), + (Archaeos, _) => (-5.5, -1.0), + (Odontotyrannos, _) => (-5.0, 2.0), }, tail_front: match (body.species, body.body_type) { - (Archaeos, _) => (-8.0, -1.0), - (Odontotyrannos, _) => (-7.0, -1.0), + (Archaeos, _) => (-9.0, -1.5), + (Odontotyrannos, _) => (-8.0, -1.0), }, tail_back: match (body.species, body.body_type) { - (Archaeos, _) => (-8.0, -1.0), - (Odontotyrannos, _) => (-7.0, -1.0), + (Archaeos, _) => (-20.0, -0.5), + (Odontotyrannos, _) => (-19.0, -1.5), }, - hand_l: match (body.species, body.body_type) { - (Archaeos, _) => (-8.0, -1.0, 0.0), - (Odontotyrannos, _) => (-7.0, -1.0, 0.0), + hand: match (body.species, body.body_type) { + (Archaeos, _) => (2.5, -2.5, -4.0), + (Odontotyrannos, _) => (3.5, 3.0, -4.0), }, - hand_r: match (body.species, body.body_type) { - (Archaeos, _) => (8.0, -1.0, 0.0), - (Odontotyrannos, _) => (7.0, -1.0, 0.0), + leg: match (body.species, body.body_type) { + (Archaeos, _) => (4.5, -9.0, -4.0), + (Odontotyrannos, _) => (5.5, -6.5, -2.0), }, - leg_l: match (body.species, body.body_type) { - (Archaeos, _) => (-8.0, -1.0, 0.0), - (Odontotyrannos, _) => (-7.0, -1.0, 0.0), - }, - leg_r: match (body.species, body.body_type) { - (Archaeos, _) => (8.0, -1.0, 0.0), - (Odontotyrannos, _) => (7.0, -1.0, 0.0), - }, - foot_l: match (body.species, body.body_type) { - (Archaeos, _) => (-8.0, -1.0, 0.0), - (Odontotyrannos, _) => (-7.0, -1.0, 0.0), - }, - foot_r: match (body.species, body.body_type) { - (Archaeos, _) => (8.0, -1.0, 0.0), - (Odontotyrannos, _) => (7.0, -1.0, 0.0), + foot: match (body.species, body.body_type) { + (Archaeos, _) => (1.0, -0.5, -8.0), + (Odontotyrannos, _) => (-1.0, -6.5, -3.0), }, } } diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index 4ca88632a4..c607a53f8f 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -22,9 +22,9 @@ impl Animation for RunAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let wave = (anim_time as f32 * 8.0).sin(); - let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); - let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); + //let wave = (anim_time as f32 * 8.0).sin(); + //let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); + //let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); next.head.orientation = Quaternion::rotation_z(0.0); @@ -62,49 +62,49 @@ impl Animation for RunAnimation { next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.0, - skeleton_attr.hand_l.1, + -skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_l.orientation = Quaternion::rotation_z(0.0); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.0, - skeleton_attr.hand_r.1, + skeleton_attr.hand.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2, ); next.hand_r.orientation = Quaternion::rotation_z(0.0); next.hand_l.scale = Vec3::one(); next.leg_l.position = Vec3::new( - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.0, - skeleton_attr.leg_l.1, + -skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); next.leg_r.position = Vec3::new( - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.0, - skeleton_attr.leg_r.1, + skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); next.foot_l.position = Vec3::new( - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.0, - skeleton_attr.foot_l.1, + -skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); next.foot_l.scale = Vec3::one(); next.foot_r.position = Vec3::new( - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.0, - skeleton_attr.foot_r.1, + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); next.foot_r.scale = Vec3::one(); From 3eeaf7e8c96fe7ec74e22122f9e4d2d6c3e2b442 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 29 Aug 2020 19:46:05 -0400 Subject: [PATCH 12/28] idle for theropod, corrections to swimming --- voxygen/src/anim/src/quadruped_medium/run.rs | 6 +- voxygen/src/anim/src/theropod/idle.rs | 50 +++++----- voxygen/src/anim/src/theropod/jump.rs | 53 +++++------ voxygen/src/anim/src/theropod/mod.rs | 24 ++--- voxygen/src/anim/src/theropod/run.rs | 96 ++++++++++++++------ voxygen/src/scene/figure/mod.rs | 40 +++++++- 6 files changed, 173 insertions(+), 96 deletions(-) diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 23af24cfd3..8fa866c4d3 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -25,7 +25,7 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); - let lab = 0.1; //6 + let lab = 0.6; //6 let amplitude = (speed / 24.0).max(0.25); let amplitude2 = (speed * 1.4 / 24.0).max(0.6); let amplitude3 = (speed / 24.0).max(0.35); @@ -106,8 +106,8 @@ impl Animation for RunAnimation { next.head_upper.position = Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); next.head_upper.orientation = - Quaternion::rotation_x(look.y * 0.1 / canceler + amplitude * short * -0.03 - 0.1) - * Quaternion::rotation_z(look.x * 0.1 / canceler + tilt * -1.2) + Quaternion::rotation_x(look.y*0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1) + * Quaternion::rotation_z(look.x*0.3 / ((canceler).max(0.5)) + tilt * -1.2) * Quaternion::rotation_y(tilt * 0.8); next.head_upper.scale = Vec3::one(); diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs index 7fc5ea3121..b6c35f5d0c 100644 --- a/voxygen/src/anim/src/theropod/idle.rs +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -22,39 +22,43 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = Quaternion::rotation_z(0.0); - next.head.scale = Vec3::one(); + + let breathe = (anim_time as f32 * 0.8).sin(); + + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); + next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); + next.head.scale = Vec3::one()*1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_z(0.0); - next.jaw.scale = Vec3::one(); + next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); + next.jaw.scale = Vec3::one()*0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); - next.neck.orientation = Quaternion::rotation_z(0.0); - next.neck.scale = Vec3::one(); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); + next.neck.orientation = Quaternion::rotation_x(-0.1); + next.neck.scale = Vec3::one()*0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1, - ); - next.chest_front.orientation = Quaternion::rotation_z(0.0); - next.chest_front.scale = Vec3::one(); + skeleton_attr.chest_front.1+breathe * 0.3, + )/3.0; + next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); + next.chest_front.scale = Vec3::one()/3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); - next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.orientation = Quaternion::rotation_x(breathe * -0.04); next.chest_back.scale = Vec3::one(); next.tail_front.position = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.orientation = Quaternion::rotation_x(0.1); next.tail_front.scale = Vec3::one(); next.tail_back.position = Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); - next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.orientation = Quaternion::rotation_x(0.1); next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -62,7 +66,7 @@ impl Animation for IdleAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.orientation = Quaternion::rotation_x(breathe * 0.2); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( @@ -70,13 +74,13 @@ impl Animation for IdleAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_z(0.0); + next.hand_r.orientation = Quaternion::rotation_x(breathe * 0.2); next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); @@ -84,7 +88,7 @@ impl Animation for IdleAnimation { next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); @@ -92,18 +96,18 @@ impl Animation for IdleAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.35, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); - next.foot_l.scale = Vec3::one(); + next.foot_l.scale = Vec3::one()*1.02; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.45, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); - next.foot_r.scale = Vec3::one(); + next.foot_r.scale = Vec3::one()*1.02; next } diff --git a/voxygen/src/anim/src/theropod/jump.rs b/voxygen/src/anim/src/theropod/jump.rs index fe6be33a0b..23c2a5f958 100644 --- a/voxygen/src/anim/src/theropod/jump.rs +++ b/voxygen/src/anim/src/theropod/jump.rs @@ -15,47 +15,48 @@ impl Animation for JumpAnimation { fn update_skeleton_inner( skeleton: &Self::Skeleton, _global_time: Self::Dependency, - _anim_time: f64, + anim_time: f64, _rate: &mut f32, skeleton_attr: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let wave = (_anim_time as f32 * 1.0).sin(); + let breathe = (anim_time as f32 * 0.8).sin(); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = Quaternion::rotation_z(0.0); - next.head.scale = Vec3::one(); + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); + next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); + next.head.scale = Vec3::one()*1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_z(0.0); - next.jaw.scale = Vec3::one(); + next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); + next.jaw.scale = Vec3::one()*0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); - next.neck.orientation = Quaternion::rotation_z(0.0); - next.neck.scale = Vec3::one(); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); + next.neck.orientation = Quaternion::rotation_x(-0.1); + next.neck.scale = Vec3::one()*0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1, - ); - next.chest_front.orientation = Quaternion::rotation_z(0.0); - next.chest_front.scale = Vec3::one(); + skeleton_attr.chest_front.1+breathe * 0.3, + )/3.0; + next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); + next.chest_front.scale = Vec3::one()/3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); - next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.orientation = Quaternion::rotation_x(breathe * -0.04); next.chest_back.scale = Vec3::one(); next.tail_front.position = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.orientation = Quaternion::rotation_x(0.1); next.tail_front.scale = Vec3::one(); next.tail_back.position = Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); - next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.orientation = Quaternion::rotation_x(0.1); next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -63,7 +64,7 @@ impl Animation for JumpAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.orientation = Quaternion::rotation_x(breathe * 0.2); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( @@ -71,13 +72,13 @@ impl Animation for JumpAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_z(0.0); - next.hand_l.scale = Vec3::one(); + next.hand_r.orientation = Quaternion::rotation_x(breathe * 0.2); + next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); @@ -85,7 +86,7 @@ impl Animation for JumpAnimation { next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); @@ -93,18 +94,18 @@ impl Animation for JumpAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.35, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); - next.foot_l.scale = Vec3::one(); + next.foot_l.scale = Vec3::one()*1.02; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.45, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); - next.foot_r.scale = Vec3::one(); + next.foot_r.scale = Vec3::one()*1.02; next } diff --git a/voxygen/src/anim/src/theropod/mod.rs b/voxygen/src/anim/src/theropod/mod.rs index 86b08cfb5a..d14642c740 100644 --- a/voxygen/src/anim/src/theropod/mod.rs +++ b/voxygen/src/anim/src/theropod/mod.rs @@ -47,8 +47,8 @@ impl Skeleton for TheropodSkeleton { let head_mat = neck_mat * Mat4::::from(self.head); let chest_back_mat = chest_front_mat * Mat4::::from(self.chest_back); let tail_front_mat = chest_back_mat * Mat4::::from(self.tail_front); - let leg_l_mat = chest_front_mat * Mat4::::from(self.leg_l); - let leg_r_mat = chest_front_mat * Mat4::::from(self.leg_r); + let leg_l_mat = chest_back_mat * Mat4::::from(self.leg_l); + let leg_r_mat = chest_back_mat * Mat4::::from(self.leg_r); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(head_mat), @@ -119,16 +119,16 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Odontotyrannos, _) => (-2.5, 3.0), }, jaw: match (body.species, body.body_type) { - (Archaeos, _) => (10.0, -7.0), - (Odontotyrannos, _) => (10.0, -7.0), + (Archaeos, _) => (1.0, -7.0), + (Odontotyrannos, _) => (1.0, -7.0), }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), (Odontotyrannos, _) => (4.5, -2.0), }, chest_front: match (body.species, body.body_type) { - (Archaeos, _) => (4.5, 20.0), - (Odontotyrannos, _) => (4.0, 13.0), + (Archaeos, _) => (0.0, 20.0), + (Odontotyrannos, _) => (0.0, 9.0), }, chest_back: match (body.species, body.body_type) { (Archaeos, _) => (-5.5, -1.0), @@ -139,19 +139,19 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Odontotyrannos, _) => (-8.0, -1.0), }, tail_back: match (body.species, body.body_type) { - (Archaeos, _) => (-20.0, -0.5), - (Odontotyrannos, _) => (-19.0, -1.5), + (Archaeos, _) => (-8.0, -0.5), + (Odontotyrannos, _) => (-12.0, -1.5), }, hand: match (body.species, body.body_type) { - (Archaeos, _) => (2.5, -2.5, -4.0), + (Archaeos, _) => (3.0, 0.0, -4.0), (Odontotyrannos, _) => (3.5, 3.0, -4.0), }, leg: match (body.species, body.body_type) { - (Archaeos, _) => (4.5, -9.0, -4.0), - (Odontotyrannos, _) => (5.5, -6.5, -2.0), + (Archaeos, _) => (4.5, -3.0, -4.0), + (Odontotyrannos, _) => (5.5, -2.5, -2.0), }, foot: match (body.species, body.body_type) { - (Archaeos, _) => (1.0, -0.5, -8.0), + (Archaeos, _) => (1.0, -0.5, -7.0), (Odontotyrannos, _) => (-1.0, -6.5, -3.0), }, } diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index c607a53f8f..95e55f6050 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -26,39 +26,74 @@ impl Animation for RunAnimation { //let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); //let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); - next.head.orientation = Quaternion::rotation_z(0.0); - next.head.scale = Vec3::one(); + let breathe = (anim_time as f32 * 0.8).sin(); + + let lab = 0.55; //.65 + let foothoril = (((1.0) + / (0.4 + + (0.6) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + let foothorir = (((1.0) + / (0.4 + + (0.6) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + + + let footrotl = (((5.0) + / (2.5 + + (2.5) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); + + let footrotr = (((5.0) + / (1.0 + + (4.0) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); + + let short = (anim_time as f32 * lab as f32 * 16.0).sin(); + + + + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); + next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); + next.head.scale = Vec3::one()*1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_z(0.0); - next.jaw.scale = Vec3::one(); + next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); + next.jaw.scale = Vec3::one()*0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); - next.neck.orientation = Quaternion::rotation_z(0.0); - next.neck.scale = Vec3::one(); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); + next.neck.orientation = Quaternion::rotation_x(-0.1); + next.neck.scale = Vec3::one()*0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1, - ); - next.chest_front.orientation = Quaternion::rotation_z(0.0); - next.chest_front.scale = Vec3::one(); + skeleton_attr.chest_front.1+breathe * 0.3, + )/3.0; + next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); + next.chest_front.scale = Vec3::one()/3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); - next.chest_back.orientation = Quaternion::rotation_z(0.0); + next.chest_back.orientation = Quaternion::rotation_x(breathe * -0.04); next.chest_back.scale = Vec3::one(); next.tail_front.position = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_z(0.0); + next.tail_front.orientation = Quaternion::rotation_x(0.1); next.tail_front.scale = Vec3::one(); next.tail_back.position = Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); - next.tail_back.orientation = Quaternion::rotation_z(0.0); + next.tail_back.orientation = Quaternion::rotation_x(0.1); next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -66,7 +101,7 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_z(0.0); + next.hand_l.orientation = Quaternion::rotation_x(breathe * 0.2); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( @@ -74,40 +109,43 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_z(0.0); - next.hand_l.scale = Vec3::one(); + next.hand_r.orientation = Quaternion::rotation_x(breathe * 0.2); + next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); - next.leg_l.orientation = Quaternion::rotation_z(0.0); - next.leg_l.scale = Vec3::one(); + next.leg_l.orientation = + Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothoril * 0.3); next.leg_l.scale = Vec3::one(); next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2, + skeleton_attr.leg.2+breathe * 0.05, ); - next.leg_r.orientation = Quaternion::rotation_z(0.0); + next.leg_r.orientation = + Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothorir * 0.3); next.leg_r.scale = Vec3::one(); next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.35, ); - next.foot_l.orientation = Quaternion::rotation_z(0.0); - next.foot_l.scale = Vec3::one(); + next.foot_l.orientation = + Quaternion::rotation_x(-0.1 + footrotl * 0.25); + next.foot_l.scale = Vec3::one()*1.02; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2, + skeleton_attr.foot.2+breathe * -0.45, ); - next.foot_r.orientation = Quaternion::rotation_z(0.0); - next.foot_r.scale = Vec3::one(); + next.foot_r.orientation = + Quaternion::rotation_x(-0.1 + footrotr * 0.25); + next.foot_r.scale = Vec3::one()*1.02; next } diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index eda6fa8fb5..99cd5b040b 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1122,6 +1122,16 @@ impl FigureMgr { skeleton_attr, ) }, + // Running + (false, _, true) => { + anim::quadruped_small::RunAnimation::update_skeleton( + &QuadrupedSmallSkeleton::default(), + (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, // In air (false, _, false) => anim::quadruped_small::JumpAnimation::update_skeleton( &QuadrupedSmallSkeleton::default(), @@ -1215,7 +1225,15 @@ impl FigureMgr { ) }, // Running - (true, true, _) => anim::quadruped_medium::RunAnimation::update_skeleton( + (true, true, false) => anim::quadruped_medium::RunAnimation::update_skeleton( + &QuadrupedMediumSkeleton::default(), + (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + //Swimming + (false, _, true) => anim::quadruped_medium::RunAnimation::update_skeleton( &QuadrupedMediumSkeleton::default(), (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), state.state_time, @@ -1317,7 +1335,15 @@ impl FigureMgr { ) }, // Running - (true, true, _) => anim::quadruped_low::RunAnimation::update_skeleton( + (true, true, false) => anim::quadruped_low::RunAnimation::update_skeleton( + &QuadrupedLowSkeleton::default(), + (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Swimming + (false, _, true) => anim::quadruped_low::RunAnimation::update_skeleton( &QuadrupedLowSkeleton::default(), (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), state.state_time, @@ -1414,7 +1440,15 @@ impl FigureMgr { skeleton_attr, ), // Running - (true, true, _) => anim::bird_medium::RunAnimation::update_skeleton( + (true, true, false) => anim::bird_medium::RunAnimation::update_skeleton( + &BirdMediumSkeleton::default(), + (vel.0.magnitude(), time), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), + // Running + (false, _, true) => anim::bird_medium::RunAnimation::update_skeleton( &BirdMediumSkeleton::default(), (vel.0.magnitude(), time), state.state_time, From 9308cabeb8e762a8e229f3e6e4868cb8784a1e71 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 30 Aug 2020 02:14:36 +0200 Subject: [PATCH 13/28] add deer, beaver and porcupine npcs --- assets/common/npc_names.json | 16 +++ .../voxygen/voxel/npc/beaver/male/chest.vox | 3 + .../voxygen/voxel/npc/beaver/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/beaver/male/foot_br.vox | 3 + .../voxygen/voxel/npc/beaver/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/beaver/male/foot_fr.vox | 3 + assets/voxygen/voxel/npc/beaver/male/head.vox | 3 + assets/voxygen/voxel/npc/beaver/male/tail.vox | 3 + .../voxygen/voxel/npc/deer/female/foot_bl.vox | 3 + .../voxygen/voxel/npc/deer/female/foot_br.vox | 3 + .../voxygen/voxel/npc/deer/female/foot_fl.vox | 3 + .../voxygen/voxel/npc/deer/female/foot_fr.vox | 3 + .../voxel/npc/deer/female/head_lower.vox | 3 + .../voxel/npc/deer/female/head_upper.vox | 3 + assets/voxygen/voxel/npc/deer/female/jaw.vox | 3 + .../voxygen/voxel/npc/deer/female/leg_bl.vox | 3 + .../voxygen/voxel/npc/deer/female/leg_br.vox | 3 + .../voxygen/voxel/npc/deer/female/leg_fl.vox | 3 + .../voxygen/voxel/npc/deer/female/leg_fr.vox | 3 + assets/voxygen/voxel/npc/deer/female/tail.vox | 3 + .../voxel/npc/deer/female/torso_back.vox | 3 + .../voxel/npc/deer/female/torso_front.vox | 3 + .../voxygen/voxel/npc/deer/male/foot_bl.vox | 3 + .../voxygen/voxel/npc/deer/male/foot_br.vox | 3 + .../voxygen/voxel/npc/deer/male/foot_fl.vox | 3 + .../voxygen/voxel/npc/deer/male/foot_fr.vox | 3 + .../voxel/npc/deer/male/head_lower.vox | 3 + .../voxel/npc/deer/male/head_upper.vox | 3 + assets/voxygen/voxel/npc/deer/male/jaw.vox | 3 + assets/voxygen/voxel/npc/deer/male/leg_bl.vox | 3 + assets/voxygen/voxel/npc/deer/male/leg_br.vox | 3 + assets/voxygen/voxel/npc/deer/male/leg_fl.vox | 3 + assets/voxygen/voxel/npc/deer/male/leg_fr.vox | 3 + assets/voxygen/voxel/npc/deer/male/tail.vox | 3 + .../voxel/npc/deer/male/torso_back.vox | 3 + .../voxel/npc/deer/male/torso_front.vox | 3 + .../voxel/npc/hirdrassil/male/foot_bl.vox | 3 + .../voxel/npc/hirdrassil/male/foot_br.vox | 3 + .../voxel/npc/hirdrassil/male/foot_fl.vox | 3 + .../voxel/npc/hirdrassil/male/foot_fr.vox | 3 + .../voxel/npc/hirdrassil/male/head_lower.vox | 3 + .../voxel/npc/hirdrassil/male/head_upper.vox | 3 + .../voxygen/voxel/npc/hirdrassil/male/jaw.vox | 3 + .../voxel/npc/hirdrassil/male/leg_bl.vox | 3 + .../voxel/npc/hirdrassil/male/leg_br.vox | 3 + .../voxel/npc/hirdrassil/male/leg_fl.vox | 3 + .../voxel/npc/hirdrassil/male/leg_fr.vox | 3 + .../voxel/npc/hirdrassil/male/tail.vox | 3 + .../voxel/npc/hirdrassil/male/torso_back.vox | 3 + .../voxel/npc/hirdrassil/male/torso_front.vox | 3 + .../voxel/npc/porcupine/male/chest.vox | 3 + .../voxel/npc/porcupine/male/foot_bl.vox | 3 + .../voxel/npc/porcupine/male/foot_br.vox | 3 + .../voxel/npc/porcupine/male/foot_fl.vox | 3 + .../voxel/npc/porcupine/male/foot_fr.vox | 3 + .../voxygen/voxel/npc/porcupine/male/head.vox | 3 + .../quadruped_medium_central_manifest.ron | 120 ++++++++++++++++ .../quadruped_medium_lateral_manifest.ron | 136 ++++++++++++++++++ .../quadruped_small_central_manifest.ron | 56 ++++++++ .../quadruped_small_lateral_manifest.ron | 72 ++++++++++ common/src/comp/body/quadruped_medium.rs | 43 +++--- common/src/comp/body/quadruped_small.rs | 10 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 34 ++++- voxygen/src/anim/src/quadruped_small/mod.rs | 22 +++ 64 files changed, 653 insertions(+), 21 deletions(-) create mode 100644 assets/voxygen/voxel/npc/beaver/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/head.vox create mode 100644 assets/voxygen/voxel/npc/beaver/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/jaw.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/tail.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/deer/female/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/deer/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/tail.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox create mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/chest.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_br.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/foot_fr.vox create mode 100644 assets/voxygen/voxel/npc/porcupine/male/head.vox diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index d8d7b341f8..2484cb4486 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -286,6 +286,14 @@ "bonerattler": { "keyword": "bonerattler", "generic": "Bonerattler" + }, + "deer": { + "keyword": "deer", + "generic": "Deer" + }, + "hirdrassil": { + "keyword": "hirdrassil", + "generic": "Hirdrassil" } } }, @@ -485,6 +493,14 @@ "fungome": { "keyword": "fungome", "generic": "Fungome" + }, + "porcupine": { + "keyword": "porcupine", + "generic": "Porcupine" + }, + "beaver": { + "keyword": "beaver", + "generic": "Beaver" } } }, diff --git a/assets/voxygen/voxel/npc/beaver/male/chest.vox b/assets/voxygen/voxel/npc/beaver/male/chest.vox new file mode 100644 index 0000000000..e02d87d9be --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e87d102c59461852a6764d43f9829674fd494b647edea9316ad40a1f6cf457a2 +size 3080 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox new file mode 100644 index 0000000000..3a87ce60eb --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0396d67d40f031393caf6f74784aa8b53edd465012c64a4bc589cc0925fd3297 +size 1356 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_br.vox b/assets/voxygen/voxel/npc/beaver/male/foot_br.vox new file mode 100644 index 0000000000..8e6567e58d --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:484d230c5ededc5e3d7613fa2873f29c9a63a87c9e8e27f6b1d2bfb0c26d2b26 +size 1356 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox b/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox new file mode 100644 index 0000000000..c848036f75 --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2ae142495e09cb599f9cd97c2be908931c126e5e4aa09a96266d66dda8dddd +size 1216 diff --git a/assets/voxygen/voxel/npc/beaver/male/foot_fr.vox b/assets/voxygen/voxel/npc/beaver/male/foot_fr.vox new file mode 100644 index 0000000000..d5f0a71c09 --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96852f43b409e058bb15b359aacb59031e2a642d594edf18f27a42a820fd92e9 +size 1216 diff --git a/assets/voxygen/voxel/npc/beaver/male/head.vox b/assets/voxygen/voxel/npc/beaver/male/head.vox new file mode 100644 index 0000000000..a3efaccad7 --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae85bad705d925efd5a1ceb74bd176fb2139e6dba59c28ec1e8f7b0be2fcd9e2 +size 1920 diff --git a/assets/voxygen/voxel/npc/beaver/male/tail.vox b/assets/voxygen/voxel/npc/beaver/male/tail.vox new file mode 100644 index 0000000000..2e6887dbe2 --- /dev/null +++ b/assets/voxygen/voxel/npc/beaver/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98306d9bfef42e4ec03322a7355ae418ee84d4c0c9f473f96cf16e014e97d61f +size 1336 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_bl.vox b/assets/voxygen/voxel/npc/deer/female/foot_bl.vox new file mode 100644 index 0000000000..5d0acc172d --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8a6343692a3b0b307d210ddaa32810d51f8577723a49fb8821ba212fd420d54 +size 1284 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_br.vox b/assets/voxygen/voxel/npc/deer/female/foot_br.vox new file mode 100644 index 0000000000..c4401a8efe --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f390d5d9133ac17e1ed463ff16c52ba797d10e6cd8261a4380bbac312c46c3a +size 1284 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_fl.vox b/assets/voxygen/voxel/npc/deer/female/foot_fl.vox new file mode 100644 index 0000000000..9ef54c93e1 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11b9589b90fa7e122eaaa2cb8af330c99001d334866f2fbe4ee1e9ff322f9b8d +size 1224 diff --git a/assets/voxygen/voxel/npc/deer/female/foot_fr.vox b/assets/voxygen/voxel/npc/deer/female/foot_fr.vox new file mode 100644 index 0000000000..eaf6dd9698 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693b39a95bad975d4ad391fd5df73bd96e5e63edca884616f1feb7f66fbd3e87 +size 1224 diff --git a/assets/voxygen/voxel/npc/deer/female/head_lower.vox b/assets/voxygen/voxel/npc/deer/female/head_lower.vox new file mode 100644 index 0000000000..4ed9d3a208 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/head_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2dd296cb5fcd9ce29c5e5c9b785ee5d4edb482efb2542880bcf4abd8e9513a9 +size 1832 diff --git a/assets/voxygen/voxel/npc/deer/female/head_upper.vox b/assets/voxygen/voxel/npc/deer/female/head_upper.vox new file mode 100644 index 0000000000..ce3dcf5874 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae6f9c307ee8c2aff2d6479780789fd04b4ab072f40cea0507b8f928a10bc2af +size 2084 diff --git a/assets/voxygen/voxel/npc/deer/female/jaw.vox b/assets/voxygen/voxel/npc/deer/female/jaw.vox new file mode 100644 index 0000000000..3fff4d0318 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f2f5f3aa63ec62578b904aa4db0c0dcf9405c1aeb5224c2b376937828e74797 +size 1120 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_bl.vox b/assets/voxygen/voxel/npc/deer/female/leg_bl.vox new file mode 100644 index 0000000000..b388daeb23 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c85f159166e7a57ebbdfdca4d42cdfbc4d581f45f88b48ea3617d8f2df6d9b7 +size 1528 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_br.vox b/assets/voxygen/voxel/npc/deer/female/leg_br.vox new file mode 100644 index 0000000000..fe57b70e38 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64ddf655a6ffca04b5491196ebe3b55497bd08c5ab1d7146af79df88b6591f00 +size 1528 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_fl.vox b/assets/voxygen/voxel/npc/deer/female/leg_fl.vox new file mode 100644 index 0000000000..bd52c4ece4 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2ad57a269866bb8c39357886a88fa6de0199045dfda70ae17604308116d036c +size 1444 diff --git a/assets/voxygen/voxel/npc/deer/female/leg_fr.vox b/assets/voxygen/voxel/npc/deer/female/leg_fr.vox new file mode 100644 index 0000000000..aa8b6e3e37 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e0697f4764c50e85f7bd45ed9f088b4e8ee90858526fdd166fc72fa11e58db +size 1444 diff --git a/assets/voxygen/voxel/npc/deer/female/tail.vox b/assets/voxygen/voxel/npc/deer/female/tail.vox new file mode 100644 index 0000000000..7fdd6cdb98 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feb74d75d8b960d349f0a01de9f2feb0186dfa05ac785602addeef87c1616c17 +size 1232 diff --git a/assets/voxygen/voxel/npc/deer/female/torso_back.vox b/assets/voxygen/voxel/npc/deer/female/torso_back.vox new file mode 100644 index 0000000000..495bbbe200 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:422f8d686732c524a17e4bd6799995c24a18f88822dc75d9b05e608bb29b55a6 +size 2832 diff --git a/assets/voxygen/voxel/npc/deer/female/torso_front.vox b/assets/voxygen/voxel/npc/deer/female/torso_front.vox new file mode 100644 index 0000000000..261120798b --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/female/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab830bb1ffefde9af5c7418e31a6867f9741ceba1d033e81b4d8d9d425f507ae +size 2840 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_bl.vox b/assets/voxygen/voxel/npc/deer/male/foot_bl.vox new file mode 100644 index 0000000000..3d5c156854 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6923910d5875a533bca256a88e906b819d1902bee8093f4580e6003e256525 +size 1284 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_br.vox b/assets/voxygen/voxel/npc/deer/male/foot_br.vox new file mode 100644 index 0000000000..2c3504a239 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ba2a9e2503c0b9d7b5117ec2b3f9af83b871c534e47d3f736e6e0184de9f925 +size 1284 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_fl.vox b/assets/voxygen/voxel/npc/deer/male/foot_fl.vox new file mode 100644 index 0000000000..2b539b930d --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ece09099cabfb54a3057106ca9665909f16bce545b50f094a3130d6b336f8bd +size 1224 diff --git a/assets/voxygen/voxel/npc/deer/male/foot_fr.vox b/assets/voxygen/voxel/npc/deer/male/foot_fr.vox new file mode 100644 index 0000000000..e78f76722e --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:589f5178e855a2aa543c410fa77849c4cc7ce1f0bc47d731764f24ba2506a504 +size 1224 diff --git a/assets/voxygen/voxel/npc/deer/male/head_lower.vox b/assets/voxygen/voxel/npc/deer/male/head_lower.vox new file mode 100644 index 0000000000..adba965a99 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/head_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aac8d4e1e5fb1b43850a711a38f67c401ae7a4ffc9516f431715216a3a24c2c +size 1832 diff --git a/assets/voxygen/voxel/npc/deer/male/head_upper.vox b/assets/voxygen/voxel/npc/deer/male/head_upper.vox new file mode 100644 index 0000000000..306543a70f --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb95980cb5e60b0d169c3b0e47f37fd3ab9097c7f3085a56c60b7694b6de9e3a +size 2324 diff --git a/assets/voxygen/voxel/npc/deer/male/jaw.vox b/assets/voxygen/voxel/npc/deer/male/jaw.vox new file mode 100644 index 0000000000..fcd0b34cda --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b89160704115f8238ced8d594eb6f91b537ea80b3f9b8684dcae9d8b6bf96491 +size 1120 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_bl.vox b/assets/voxygen/voxel/npc/deer/male/leg_bl.vox new file mode 100644 index 0000000000..902bbce745 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d46e63796b7c93cced2649f77e50980c012b1189e6e4418e6741a3f692cd6365 +size 1528 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_br.vox b/assets/voxygen/voxel/npc/deer/male/leg_br.vox new file mode 100644 index 0000000000..8c02167dc5 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e521b3f754ba6e899f73aecda8bcda24e2430ccf897bbe96853d647969f3a6d +size 1528 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_fl.vox b/assets/voxygen/voxel/npc/deer/male/leg_fl.vox new file mode 100644 index 0000000000..bd05cf9582 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da910f17abc20f6063ad155ee6f848ea42cf2206b7a28604083266555873cddb +size 1444 diff --git a/assets/voxygen/voxel/npc/deer/male/leg_fr.vox b/assets/voxygen/voxel/npc/deer/male/leg_fr.vox new file mode 100644 index 0000000000..437b65a888 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a0008d3043ce4a65eb40bd7e65ed97a22d64309c9a2c1835ae6e784f512419d +size 1444 diff --git a/assets/voxygen/voxel/npc/deer/male/tail.vox b/assets/voxygen/voxel/npc/deer/male/tail.vox new file mode 100644 index 0000000000..abf12e5ae9 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46488983cb96091dc4ae87959919014ca45c2466cef051979f2a11eb542a7647 +size 1232 diff --git a/assets/voxygen/voxel/npc/deer/male/torso_back.vox b/assets/voxygen/voxel/npc/deer/male/torso_back.vox new file mode 100644 index 0000000000..205b16dc61 --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e1e1c05b387233552d9bb72fc27c9a66b40c4dd213941179f1ea77b96c87c9b +size 2832 diff --git a/assets/voxygen/voxel/npc/deer/male/torso_front.vox b/assets/voxygen/voxel/npc/deer/male/torso_front.vox new file mode 100644 index 0000000000..c7de9beb2e --- /dev/null +++ b/assets/voxygen/voxel/npc/deer/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bf95e1723ff23a2ed9d5537acd89260d0f36731b91d14a8f2fb4d75dcde237e +size 2840 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox b/assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox new file mode 100644 index 0000000000..8f3f184635 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96b1a32f3449c5ccf0c6774ab7007406d1b151ee049b4358bef4a108c22071e2 +size 1304 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox b/assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox new file mode 100644 index 0000000000..8f3f184635 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96b1a32f3449c5ccf0c6774ab7007406d1b151ee049b4358bef4a108c22071e2 +size 1304 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox b/assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox new file mode 100644 index 0000000000..2c4aa49d4f --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8f9cf762310517e7b0198bb4a103b38b535439840e8cddaf594958e2fca3167 +size 1428 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox b/assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox new file mode 100644 index 0000000000..f598be9ca5 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:845e071e1821d3bb8963d9adb2b75f4208f6bace4722c1cbb7f054285cdbe9da +size 1428 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox b/assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox new file mode 100644 index 0000000000..e38e9e4dee --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:974a71aacf4c20b7bcb8891828be573756748fb3f50942e790e0b62994ee6f15 +size 2784 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox b/assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox new file mode 100644 index 0000000000..73e735ec91 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d73c268da0598b72676a8cd669a1b981d53c82d24c4c54fa038314526bbce18a +size 3780 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox b/assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox new file mode 100644 index 0000000000..dae07a23b5 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfa736cd8c259ad892b57982fd4c44d50c377b82c4a30777e1bcda2fd9584668 +size 1216 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox b/assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox new file mode 100644 index 0000000000..6b6940a91c --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34f887f932dcdf72d3634683a707d28d63509dd5ce9be38bef8a1f701c57fe09 +size 1580 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox b/assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox new file mode 100644 index 0000000000..405f1e3134 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:776264da58fe9c9c75d818d68ae392e34dbf7ce6ca39457891644860ba8a51a8 +size 1580 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox b/assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox new file mode 100644 index 0000000000..b99ebfcf7b --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24c6e497990ef4c2e235e521b5b310b309617184bb6935ff936c289fb2b6e35c +size 1564 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox b/assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox new file mode 100644 index 0000000000..6dda5d6ea7 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6e37a1120d0332c1a8677df3efce66e2171f919a2a26f30fac8581fa84f547e +size 1548 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/tail.vox b/assets/voxygen/voxel/npc/hirdrassil/male/tail.vox new file mode 100644 index 0000000000..26b2b8898e --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582746dd1a096d883353562483295f08c0c8d706621e1be73a3eb858e2301d08 +size 1256 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox b/assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox new file mode 100644 index 0000000000..1e6e9d6ca9 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f48a952134364d846eda690a0e898e5b002aeced62e7923dcce2d28f17b7999 +size 3256 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox b/assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox new file mode 100644 index 0000000000..16e0e58d91 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d15e4ffabe5854e0508d61268290c9631a72689b32bdba7ee5472ee53b4508ba +size 3520 diff --git a/assets/voxygen/voxel/npc/porcupine/male/chest.vox b/assets/voxygen/voxel/npc/porcupine/male/chest.vox new file mode 100644 index 0000000000..e867ebb16f --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1103c3ce46d02e2ec1bd1c688389574b7307c330e9eb21f510dde598edf263d +size 4572 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox new file mode 100644 index 0000000000..3267ff5831 --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44ef9ce3bf3d4569165abf5d4e99be8329be52cef7b199be7313cc851a3d9c2 +size 1384 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_br.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_br.vox new file mode 100644 index 0000000000..534e162332 --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb61e2f3582b9942b95477445d1f6983e4715e9ed46fbd9fe95fcf145769fd12 +size 1384 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox new file mode 100644 index 0000000000..7d24707fc7 --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22c25095db066285c8b55a0038f1e8c280df22198b6ad5577791518af4d7374a +size 1308 diff --git a/assets/voxygen/voxel/npc/porcupine/male/foot_fr.vox b/assets/voxygen/voxel/npc/porcupine/male/foot_fr.vox new file mode 100644 index 0000000000..4cff4e9128 --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af54f4cfb97b38b1f9223552d1ef91a06cd07022a4427b905be7452d52cf2f0 +size 1308 diff --git a/assets/voxygen/voxel/npc/porcupine/male/head.vox b/assets/voxygen/voxel/npc/porcupine/male/head.vox new file mode 100644 index 0000000000..7bd04c960d --- /dev/null +++ b/assets/voxygen/voxel/npc/porcupine/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e3f034853353a85b28c1e7a297c86ce0cb3eeb0be928db3b7e607fa4f686b4 +size 1552 diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 0a88edcb1c..b0f12840b0 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -659,4 +659,124 @@ central: ("npc.bonerattler.male.tail"), ), ), + (Deer, Male): ( + upper: ( + offset: (-6.0, 0.0, -8.0), + central: ("npc.deer.male.head_upper"), + ), + lower: ( + offset: (-3.0, -3.5, -4.0), + central: ("npc.deer.male.head_lower"), + ), + jaw: ( + offset: (-1.0, 0.0, -0.5), + central: ("npc.deer.male.jaw"), + ), + torso_front: ( + offset: (-4.0, -9.0, -4.0), + central: ("npc.deer.male.torso_front"), + ), + torso_back: ( + offset: (-4.0, -10.0, -3.5), + central: ("npc.deer.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.0, -3.0, -6.0), + central: ("npc.deer.male.tail"), + ), + ), + (Deer, Female): ( + upper: ( + offset: (-6.0, 0.0, -4.5), + central: ("npc.deer.female.head_upper"), + ), + lower: ( + offset: (-3.0, -3.5, -4.0), + central: ("npc.deer.female.head_lower"), + ), + jaw: ( + offset: (-1.0, 0.0, -0.5), + central: ("npc.deer.female.jaw"), + ), + torso_front: ( + offset: (-4.0, -9.0, -4.0), + central: ("npc.deer.female.torso_front"), + ), + torso_back: ( + offset: (-4.0, -10.0, -3.5), + central: ("npc.deer.female.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.0, -3.0, -6.0), + central: ("npc.deer.female.tail"), + ), + ), + (Hirdrassil, Male): ( + upper: ( + offset: (-9.0, 0.0, -11.5), + central: ("npc.hirdrassil.male.head_upper"), + ), + lower: ( + offset: (-4.0, -4.0, -6.0), + central: ("npc.hirdrassil.male.head_lower"), + ), + jaw: ( + offset: (-1.0, 0.0, -1.0), + central: ("npc.hirdrassil.male.jaw"), + ), + torso_front: ( + offset: (-4.0, -10.0, -5.5), + central: ("npc.hirdrassil.male.torso_front"), + ), + torso_back: ( + offset: (-4.0, -11.0, -4.0), + central: ("npc.hirdrassil.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.0, -4.0, -3.0), + central: ("npc.hirdrassil.male.tail"), + ), + ), + (Hirdrassil, Female): ( + upper: ( + offset: (-9.0, 0.0, -11.5), + central: ("npc.hirdrassil.male.head_upper"), + ), + lower: ( + offset: (-4.0, -4.0, -6.0), + central: ("npc.hirdrassil.male.head_lower"), + ), + jaw: ( + offset: (-1.0, 0.0, -1.0), + central: ("npc.hirdrassil.male.jaw"), + ), + torso_front: ( + offset: (-4.0, -10.0, -5.5), + central: ("npc.hirdrassil.male.torso_front"), + ), + torso_back: ( + offset: (-4.0, -11.0, -4.0), + central: ("npc.hirdrassil.male.torso_back"), + ), + ears: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + tail: ( + offset: (-2.0, -4.0, -3.0), + central: ("npc.hirdrassil.male.tail"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 77d283c7a6..6bf06e42cc 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -747,4 +747,140 @@ lateral: ("npc.bonerattler.male.foot_br"), ), ), + (Deer, Male): ( + leg_fl: ( + offset: (-1.5, -2.5, -2.5), + lateral: ("npc.deer.male.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -2.5, -2.5), + lateral: ("npc.deer.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.deer.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.deer.male.leg_br"), + ), + foot_fl: ( + offset: (-1.0, -1.0, -8.0), + lateral: ("npc.deer.male.foot_fl"), + ), + foot_fr: ( + offset: (-1.0, -1.0, -8.0), + lateral: ("npc.deer.male.foot_fr"), + ), + foot_bl: ( + offset: (-1.0, -2.0, -9.0), + lateral: ("npc.deer.male.foot_bl"), + ), + foot_br: ( + offset: (-1.0, -2.0, -9.0), + lateral: ("npc.deer.male.foot_br"), + ), + ), + (Deer, Female): ( + leg_fl: ( + offset: (-1.5, -2.5, -2.5), + lateral: ("npc.deer.female.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -2.5, -2.5), + lateral: ("npc.deer.female.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.deer.female.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.deer.female.leg_br"), + ), + foot_fl: ( + offset: (-1.0, -1.0, -8.0), + lateral: ("npc.deer.female.foot_fl"), + ), + foot_fr: ( + offset: (-1.0, -1.0, -8.0), + lateral: ("npc.deer.female.foot_fr"), + ), + foot_bl: ( + offset: (-1.0, -2.0, -9.0), + lateral: ("npc.deer.female.foot_bl"), + ), + foot_br: ( + offset: (-1.0, -2.0, -9.0), + lateral: ("npc.deer.female.foot_br"), + ), + ), + (Hirdrassil, Male): ( + leg_fl: ( + offset: (-1.5, -3.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -3.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_br"), + ), + foot_fl: ( + offset: (-2.0, -1.0, -9.0), + lateral: ("npc.hirdrassil.male.foot_fl"), + ), + foot_fr: ( + offset: (-2.0, -1.0, -9.0), + lateral: ("npc.hirdrassil.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.0, -2.5, -7.0), + lateral: ("npc.hirdrassil.male.foot_bl"), + ), + foot_br: ( + offset: (-2.0, -2.5, -7.0), + lateral: ("npc.hirdrassil.male.foot_br"), + ), + ), + (Hirdrassil, Female): ( + leg_fl: ( + offset: (-1.5, -3.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_fl"), + ), + leg_fr: ( + offset: (-1.5, -3.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_fr"), + ), + leg_bl: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_bl"), + ), + leg_br: ( + offset: (-2.0, -1.0, -2.5), + lateral: ("npc.hirdrassil.male.leg_br"), + ), + foot_fl: ( + offset: (-2.0, -1.0, -9.0), + lateral: ("npc.hirdrassil.male.foot_fl"), + ), + foot_fr: ( + offset: (-2.0, -1.0, -9.0), + lateral: ("npc.hirdrassil.male.foot_fr"), + ), + foot_bl: ( + offset: (-2.0, -2.5, -7.0), + lateral: ("npc.hirdrassil.male.foot_bl"), + ), + foot_br: ( + offset: (-2.0, -2.5, -7.0), + lateral: ("npc.hirdrassil.male.foot_br"), + ), + ), }) diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index d8fdc201fe..bd4954de7a 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -630,4 +630,60 @@ central: ("armor.empty"), ), ), + (Porcupine, Male):( + head: ( + offset: (-2.5, 0.0, -7.0), + central: ("npc.porcupine.male.head"), + ), + chest: ( + offset: (-7.5, -10.0, -8.0), + central: ("npc.porcupine.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Porcupine, Female):( + head: ( + offset: (-2.5, 0.0, -7.0), + central: ("npc.porcupine.male.head"), + ), + chest: ( + offset: (-7.5, -10.0, -8.0), + central: ("npc.porcupine.male.chest"), + ), + tail: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ), + ), + (Beaver, Male):( + head: ( + offset: (-4.0, 0.0, -3.0), + central: ("npc.beaver.male.head"), + ), + chest: ( + offset: (-4.0, -6.0, -4.0), + central: ("npc.beaver.male.chest"), + ), + tail: ( + offset: (-3.0, -9.0, -2.0), + central: ("npc.beaver.male.tail"), + ), + ), + (Beaver, Female):( + head: ( + offset: (-4.0, 0.0, -3.0), + central: ("npc.beaver.male.head"), + ), + chest: ( + offset: (-4.0, -6.0, -4.0), + central: ("npc.beaver.male.chest"), + ), + tail: ( + offset: (-3.0, -9.0, -2.0), + central: ("npc.beaver.male.tail"), + ), + ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index 2d2399e6c0..b7dea48055 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -809,4 +809,76 @@ lateral: ("npc.fungome.male.foot_br"), ), ), + (Porcupine, Male): ( + left_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.porcupine.male.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.porcupine.male.foot_fr"), + ), + left_back: ( + offset: (-2.0, -3.0, -3.0), + lateral: ("npc.porcupine.male.foot_bl"), + ), + right_back: ( + offset: (-2.0, -3.0, -3.0), + lateral: ("npc.porcupine.male.foot_br"), + ), + ), + (Porcupine, Female): ( + left_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.porcupine.male.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.porcupine.male.foot_fr"), + ), + left_back: ( + offset: (-2.0, -3.0, -3.0), + lateral: ("npc.porcupine.male.foot_bl"), + ), + right_back: ( + offset: (-2.0, -3.0, -3.0), + lateral: ("npc.porcupine.male.foot_br"), + ), + ), + (Beaver, Male): ( + left_front: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.beaver.male.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.beaver.male.foot_fr"), + ), + left_back: ( + offset: (-2.0, -2.5, -3.0), + lateral: ("npc.beaver.male.foot_bl"), + ), + right_back: ( + offset: (-2.0, -2.5, -3.0), + lateral: ("npc.beaver.male.foot_br"), + ), + ), + (Beaver, Female): ( + left_front: ( + offset: (-1.5, -2.0, -2.0), + lateral: ("npc.beaver.male.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.5, -2.0), + lateral: ("npc.beaver.male.foot_fr"), + ), + left_back: ( + offset: (-2.0, -2.5, -3.0), + lateral: ("npc.beaver.male.foot_bl"), + ), + right_back: ( + offset: (-2.0, -2.5, -3.0), + lateral: ("npc.beaver.male.foot_br"), + ), + ), }) \ No newline at end of file diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index 191c36fb02..25f144292b 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -29,24 +29,23 @@ impl From for super::Body { fn from(body: Body) -> Self { super::Body::QuadrupedMedium(body) } } -make_case_elim!( - species, - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] - #[repr(u32)] - pub enum Species { - Grolgar = 0, - Saber = 1, - Tiger = 2, - Tuskram = 3, - Lion = 6, - Tarasque = 7, - Wolf = 8, - Frostfang = 9, - Mouflon = 10, - Catoblepas = 11, - Bonerattler = 12, - } -); +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[repr(u32)] +pub enum Species { + Grolgar = 0, + Saber = 1, + Tiger = 2, + Tuskram = 3, + Lion = 6, + Tarasque = 7, + Wolf = 8, + Frostfang = 9, + Mouflon = 10, + Catoblepas = 11, + Bonerattler = 12, + Deer = 13, + Hirdrassil = 14, +} /// Data representing per-species generic data. /// @@ -64,6 +63,8 @@ pub struct AllSpecies { pub mouflon: SpeciesMeta, pub catoblepas: SpeciesMeta, pub bonerattler: SpeciesMeta, + pub deer: SpeciesMeta, + pub hirdrassil: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -83,11 +84,13 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Mouflon => &self.mouflon, Species::Catoblepas => &self.catoblepas, Species::Bonerattler => &self.bonerattler, + Species::Deer => &self.deer, + Species::Hirdrassil => &self.hirdrassil, } } } -pub const ALL_SPECIES: [Species; 11] = [ +pub const ALL_SPECIES: [Species; 13] = [ Species::Grolgar, Species::Saber, Species::Tiger, @@ -99,6 +102,8 @@ pub const ALL_SPECIES: [Species; 11] = [ Species::Mouflon, Species::Catoblepas, Species::Bonerattler, + Species::Deer, + Species::Hirdrassil, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/common/src/comp/body/quadruped_small.rs b/common/src/comp/body/quadruped_small.rs index 7844997cf3..50cb6ae531 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -54,6 +54,8 @@ pub enum Species { Turtle = 19, Squirrel = 20, Fungome = 21, + Porcupine = 22, + Beaver = 23, } /// Data representing per-species generic data. @@ -83,6 +85,8 @@ pub struct AllSpecies { pub turtle: SpeciesMeta, pub squirrel: SpeciesMeta, pub fungome: SpeciesMeta, + pub porcupine: SpeciesMeta, + pub beaver: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -113,11 +117,13 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Turtle => &self.turtle, Species::Squirrel => &self.squirrel, Species::Fungome => &self.fungome, + Species::Porcupine => &self.porcupine, + Species::Beaver => &self.beaver, } } } -pub const ALL_SPECIES: [Species; 22] = [ +pub const ALL_SPECIES: [Species; 24] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -140,6 +146,8 @@ pub const ALL_SPECIES: [Species; 22] = [ Species::Turtle, Species::Squirrel, Species::Fungome, + Species::Porcupine, + Species::Beaver, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index abc6a4b275..a8746a3178 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -129,7 +129,7 @@ impl Default for SkeletonAttr { impl<'a> From<&'a Body> for SkeletonAttr { fn from(body: &'a Body) -> Self { - use comp::quadruped_medium::Species::*; + use comp::quadruped_medium::{BodyType::*, Species::*}; Self { head_upper: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -1.0), @@ -143,6 +143,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-2.5, 6.0), (Catoblepas, _) => (-1.0, -6.5), (Bonerattler, _) => (-1.0, 2.5), + (Deer, Male) => (-4.5, 11.0), + (Deer, Female) => (-2.5, 8.0), + (Hirdrassil, _) => (-12.0, 16.0), }, head_lower: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -156,6 +159,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-1.0, 0.5), (Catoblepas, _) => (19.5, -2.0), (Bonerattler, _) => (7.0, -1.5), + (Deer, _) => (-0.5, 1.0), + (Hirdrassil, _) => (-1.0, 0.5), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 1.5), @@ -169,6 +174,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (10.5, -4.0), (Catoblepas, _) => (1.0, -4.0), (Bonerattler, _) => (3.0, -3.0), + (Deer, Male) => (9.0, -5.5), + (Deer, Female) => (7.0, -2.0), + (Hirdrassil, _) => (14.5, -15.0), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -182,6 +190,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-10.5, 3.0), (Catoblepas, _) => (-8.5, -2.0), (Bonerattler, _) => (-10.0, 1.5), + (Deer, _) => (-8.5, 6.5), + (Hirdrassil, _) => (-9.0, 5.0), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), @@ -195,6 +205,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (11.0, 13.5), (Catoblepas, _) => (7.5, 19.5), (Bonerattler, _) => (6.0, 12.5), + (Deer, _) => (11.0, 13.5), + (Hirdrassil, _) => (11.0, 14.5), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), @@ -208,6 +220,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-8.5, -0.5), (Catoblepas, _) => (-8.5, -4.5), (Bonerattler, _) => (-5.0, 0.0), + (Deer, _) => (-9.0, 0.5), + (Hirdrassil, _) => (-9.0, -0.5), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), @@ -221,6 +235,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (2.5, 5.0), (Catoblepas, _) => (11.0, -3.0), (Bonerattler, _) => (2.0, 3.5), + (Deer, _) => (2.5, 5.0), + (Hirdrassil, _) => (2.5, 5.0), }, leg_f: match (body.species, body.body_type) { (Grolgar, _) => (-7.0, 4.0, 0.0), @@ -234,6 +250,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (4.0, -5.0, -5.0), (Catoblepas, _) => (7.0, 2.0, -6.0), (Bonerattler, _) => (5.5, 5.0, -4.0), + (Deer, _) => (3.5, -4.5, -3.5), + (Hirdrassil, _) => (4.5, -6.0, -3.5), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -5.5), @@ -247,6 +265,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (3.5, -8.0, -4.5), (Catoblepas, _) => (6.0, -2.5, -2.5), (Bonerattler, _) => (6.0, -8.0, -4.0), + (Deer, _) => (3.0, -8.0, -5.0), + (Hirdrassil, _) => (4.0, -8.0, -6.0), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -9.0, -7.0), @@ -260,6 +280,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-0.5, -0.5, -1.5), (Catoblepas, _) => (1.0, 4.0, -3.0), (Bonerattler, _) => (-0.5, -3.0, -2.5), + (Deer, _) => (-0.5, -0.5, -2.5), + (Hirdrassil, _) => (-0.5, -3.0, -2.5), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -5.0), @@ -273,6 +295,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-1.0, 0.0, -2.5), (Catoblepas, _) => (0.5, 0.5, -3.0), (Bonerattler, _) => (0.0, 3.0, -2.5), + (Deer, _) => (-1.0, 0.0, -0.5), + (Hirdrassil, _) => (-1.0, 0.0, -1.5), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), @@ -286,6 +310,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (1.0), (Catoblepas, _) => (1.3), (Bonerattler, _) => (1.0), + (Deer, _) => (1.0), + (Hirdrassil, _) => (1.0), }, dampen: match (body.species, body.body_type) { (Grolgar, _) => (0.5), @@ -299,6 +325,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (1.0), (Catoblepas, _) => (0.6), (Bonerattler, _) => (0.6), + (Deer, _) => (1.0), + (Hirdrassil, _) => (1.0), }, maximize: match (body.species, body.body_type) { (Grolgar, _) => (2.0), @@ -312,6 +340,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (1.1), (Catoblepas, _) => (0.0), (Bonerattler, _) => (0.8), + (Deer, _) => (1.1), + (Hirdrassil, _) => (1.1), }, tempo: match (body.species, body.body_type) { (Grolgar, _) => (0.95), @@ -325,6 +355,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (0.85), (Catoblepas, _) => (0.8), (Bonerattler, _) => (1.0), + (Deer, _) => (0.85), + (Hirdrassil, _) => (0.85), }, } } diff --git a/voxygen/src/anim/src/quadruped_small/mod.rs b/voxygen/src/anim/src/quadruped_small/mod.rs index 0c49563099..49e90ccbee 100644 --- a/voxygen/src/anim/src/quadruped_small/mod.rs +++ b/voxygen/src/anim/src/quadruped_small/mod.rs @@ -120,6 +120,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0, 3.0), (Squirrel, _) => (7.5, -9.0), (Fungome, _) => (4.0, 2.0), + (Porcupine, _) => (6.0, 1.0), + (Beaver, _) => (5.5, 0.0), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 6.0), @@ -144,6 +146,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0, 3.0), (Squirrel, _) => (7.5, -9.0), (Fungome, _) => (4.0, 2.0), + (Porcupine, _) => (2.0, 11.0), + (Beaver, _) => (2.0, 6.0), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (4.5, 3.5, -1.0), @@ -168,6 +172,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0, 3.0, 0.0), (Squirrel, _) => (7.5, -9.0, 0.0), (Fungome, _) => (4.0, 2.0, 0.0), + (Porcupine, _) => (4.0, 6.5, -9.0), + (Beaver, _) => (4.5, 4.5, -4.0), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.5, -2.0, 0.0), @@ -192,6 +198,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0, 3.0, 0.0), (Squirrel, _) => (7.5, -9.0, 0.0), (Fungome, _) => (4.0, 2.0, 0.0), + (Porcupine, _) => (4.5, -1.0, -8.0), + (Beaver, _) => (4.0, -2.5, -3.0), }, tail: match (body.species, body.body_type) { (Pig, _) => (-4.5, 2.5), @@ -216,6 +224,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0, 3.0), (Squirrel, _) => (7.5, -9.0), (Fungome, _) => (4.0, 2.0), + (Porcupine, _) => (-6.0, 1.0), + (Beaver, _) => (-6.5, -1.0), }, scaler: match (body.species, body.body_type) { (Pig, _) => (0.9), @@ -240,6 +250,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0), (Squirrel, _) => (7.5), (Fungome, _) => (4.0), + (Porcupine, _) => (1.0), + (Beaver, _) => (1.0), }, tempo: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -264,6 +276,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (4.0), (Squirrel, _) => (7.5), (Fungome, _) => (4.0), + (Porcupine, _) => (1.2), + (Beaver, _) => (1.2), }, maximize: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -288,6 +302,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (0.1), (Squirrel, _) => (0.1), (Fungome, _) => (0.1), + (Porcupine, _) => (1.0), + (Beaver, _) => (1.0), }, minimize: match (body.species, body.body_type) { (Pig, _) => (0.6), @@ -312,6 +328,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (0.1), (Squirrel, _) => (0.1), (Fungome, _) => (0.1), + (Porcupine, _) => (0.9), + (Beaver, _) => (0.9), }, spring: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -336,6 +354,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (0.1), (Squirrel, _) => (0.1), (Fungome, _) => (0.1), + (Porcupine, _) => (1.3), + (Beaver, _) => (1.3), }, feed: match (body.species, body.body_type) { (Pig, _) => (1.0), @@ -360,6 +380,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Turtle, _) => (0.1), (Squirrel, _) => (0.1), (Fungome, _) => (0.1), + (Porcupine, _) => (1.0), + (Beaver, _) => (1.0), }, } } From 2589c0cfc6704be584445de166b249afa0596dfe Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 30 Aug 2020 01:14:12 -0400 Subject: [PATCH 14/28] thropod manifest changes --- assets/voxygen/voxel/theropod_central_manifest.ron | 14 +++++++------- assets/voxygen/voxel/theropod_lateral_manifest.ron | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index d859b44337..f0bc769355 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -5,7 +5,7 @@ central: ("npc.archaeos.male.head"), ), jaw: ( - offset: (-5.5, -9.0, -3.0), + offset: (-5.5, 0.0, -3.0), central: ("npc.archaeos.male.jaw"), ), neck: ( @@ -25,7 +25,7 @@ central: ("npc.archaeos.male.tail_front"), ), tail_back: ( - offset: (-7.5, -11.0, -3.0), + offset: (-7.5, -23.0, -3.0), central: ("npc.archaeos.male.tail_back"), ), ), @@ -35,7 +35,7 @@ central: ("npc.archaeos.male.head"), ), jaw: ( - offset: (-5.5, -9.0, -3.0), + offset: (-5.5, 0.0, -3.0), central: ("npc.archaeos.male.jaw"), ), neck: ( @@ -55,7 +55,7 @@ central: ("npc.archaeos.male.tail_front"), ), tail_back: ( - offset: (-7.5, -11.0, -3.0), + offset: (-7.5, -23.0, -3.0), central: ("npc.archaeos.male.tail_back"), ), ), @@ -65,7 +65,7 @@ central: ("npc.odontotyrannos.male.head"), ), jaw: ( - offset: (-6.5, -7.0, -3.0), + offset: (-6.5, 0.0, -3.0), central: ("npc.odontotyrannos.male.jaw"), ), neck: ( @@ -85,7 +85,7 @@ central: ("npc.odontotyrannos.male.tail_front"), ), tail_back: ( - offset: (-2.5, -8.0, -3.0), + offset: (-2.5, -23.0, -3.0), central: ("npc.odontotyrannos.male.tail_back"), ), ), @@ -95,7 +95,7 @@ central: ("npc.odontotyrannos.male.head"), ), jaw: ( - offset: (-6.5, -7.0, -3.0), + offset: (-6.5, 0.0, -3.0), central: ("npc.odontotyrannos.male.jaw"), ), neck: ( diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index 9c4db7376e..ca4cc8cd0f 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -1,7 +1,7 @@ ({ (Archaeos, Male): ( hand_l: ( - offset: (-4.0, 2.0, -9.0), + offset: (-4.0, -2.0, -9.0), lateral: ("npc.archaeos.male.hand_l"), ), hand_r: ( @@ -27,7 +27,7 @@ ), (Archaeos, Female): ( hand_l: ( - offset: (-4.0, 2.0, -9.0), + offset: (-4.0, -2.0, -9.0), lateral: ("npc.archaeos.male.hand_l"), ), hand_r: ( From b781a1765b91d049758092e5cf5e99fa5be9dc11 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 30 Aug 2020 03:40:40 -0400 Subject: [PATCH 15/28] theropod run --- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/quadruped_medium/run.rs | 2 +- voxygen/src/anim/src/theropod/run.rs | 134 ++++++++++--------- 3 files changed, 76 insertions(+), 62 deletions(-) diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 02cd6ebfd4..1b50424c2e 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -41,7 +41,7 @@ impl Body { Body::BipedLarge(_) => 75.0, Body::Object(_) => 40.0, Body::Golem(_) => 60.0, - Body::Theropod(_) => 85.0, + Body::Theropod(_) => 135.0, Body::QuadrupedLow(_) => 120.0, } } diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 8fa866c4d3..5a99759441 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -169,7 +169,7 @@ impl Animation for RunAnimation { next.leg_fr.position = Vec3::new( skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + amplitude3 * foot2b * -2.2, + skeleton_attr.leg_f.1 + amplitude3 * foot2b * -2.2,////////////fix skeleton_attr.leg_f.2 + amplitude3 * foot2a * 2.8, ); next.leg_fr.orientation = diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index 95e55f6050..edf9745990 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -15,85 +15,92 @@ impl Animation for RunAnimation { #[cfg_attr(feature = "be-dyn-lib", export_name = "theropod_run")] fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_velocity, _global_time): Self::Dependency, + (velocity, _global_time): Self::Dependency, anim_time: f64, - _rate: &mut f32, + rate: &mut f32, skeleton_attr: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - + let speed = Vec2::::from(velocity).magnitude(); + *rate = 1.0; //let wave = (anim_time as f32 * 8.0).sin(); //let wavealt = (anim_time as f32 * 8.0 + PI / 2.0).sin(); //let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); let breathe = (anim_time as f32 * 0.8).sin(); + let topspeed = 18.0; - let lab = 0.55; //.65 - let foothoril = (((1.0) - / (0.4 - + (0.6) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) + let canceler = speed / topspeed; + let lab = 0.5; //6 + let amplitude = (speed / topspeed).max(0.25); + let amplitude2 = (speed * 1.4 / topspeed).max(0.6); + let amplitude3 = (speed / topspeed).max(0.35); + let speedmult = if speed > 0.0 { + 1.2 * (1.0 * 1.0) + } else { + 0.9 * (1.0 * 1.0) + }; + + let speedadjust = if speed < 5.0 { 0.0 } else { speed / 25.0 }; + let short = (((1.0) + / (0.72 + + 0.28 + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5) + .sin()) + .powf(2.0 as f32))) .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - let foothorir = (((1.0) - / (0.4 - + (0.6) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - - - let footrotl = (((5.0) - / (2.5 - + (2.5) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 1.4).sin()); - - let footrotr = (((5.0) - / (1.0 - + (4.0) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()).powf(2.0 as f32))) - .sqrt()) - * ((anim_time as f32 * 16.0 * lab as f32 + PI * 0.4).sin()); - - let short = (anim_time as f32 * lab as f32 * 16.0).sin(); + * ((anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * -0.15 - 0.5).sin()); + // + let shortalt = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); + //FL + let foot1a = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0+PI ) + .sin(); //1.5 + let foot1b = + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57+PI ) + .sin(); //1.9 + //FR + let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult ).sin(); //1.2 + let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 ).sin(); //1.6 + //BL + //BR next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); - next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); + next.head.orientation = Quaternion::rotation_x(-0.1+short*-0.05)*Quaternion::rotation_z(shortalt*-0.2); next.head.scale = Vec3::one()*1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); + next.jaw.orientation = Quaternion::rotation_x(short*-0.03); next.jaw.scale = Vec3::one()*0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); - next.neck.orientation = Quaternion::rotation_x(-0.1); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_x(-0.1+short*-0.04)*Quaternion::rotation_z(shortalt*-0.1); next.neck.scale = Vec3::one()*0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1+breathe * 0.3, + skeleton_attr.chest_front.1+short * 0.5, )/3.0; - next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); + next.chest_front.orientation = Quaternion::rotation_x(short * 0.07)*Quaternion::rotation_z(shortalt * 0.15); next.chest_front.scale = Vec3::one()/3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); - next.chest_back.orientation = Quaternion::rotation_x(breathe * -0.04); + next.chest_back.orientation = Quaternion::rotation_x(short * -0.04)*Quaternion::rotation_z(shortalt * -0.15);; next.chest_back.scale = Vec3::one(); next.tail_front.position = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_x(0.1); + next.tail_front.orientation = Quaternion::rotation_x(0.1+short * -0.02)*Quaternion::rotation_z(shortalt*-0.1); next.tail_front.scale = Vec3::one(); next.tail_back.position = Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); - next.tail_back.orientation = Quaternion::rotation_x(0.1); + next.tail_back.orientation = Quaternion::rotation_x(0.2+short * -0.2)*Quaternion::rotation_z(shortalt*-0.2); next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -101,7 +108,7 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_x(breathe * 0.2); + next.hand_l.orientation = Quaternion::rotation_x( -0.2+amplitude3 * foot2a * 0.3); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( @@ -109,43 +116,50 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_x(breathe * 0.2); + next.hand_r.orientation = Quaternion::rotation_x( -0.2+amplitude3 * foot1a * 0.3); next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, - skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.1 + amplitude3 * foot1b * -1.3, + skeleton_attr.leg.2 + amplitude3 * foot1a * 1.4, ); next.leg_l.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothoril * 0.3); next.leg_l.scale = Vec3::one(); + Quaternion::rotation_x( -0.2+amplitude3 * foot1a * 0.2) + * Quaternion::rotation_z(foot1a*-0.3) + * Quaternion::rotation_y(0.0); + next.leg_l.scale = Vec3::one() * 1.0; next.leg_r.position = Vec3::new( skeleton_attr.leg.0, - skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.1 + amplitude3 * foot2b * -1.3, + skeleton_attr.leg.2 + amplitude3 * foot2a * 1.4, ); next.leg_r.orientation = - Quaternion::rotation_z(short * 0.18) * Quaternion::rotation_x(foothorir * 0.3); - next.leg_r.scale = Vec3::one(); + Quaternion::rotation_x( -0.2+amplitude3 * foot2a * 0.2) + * Quaternion::rotation_z(foot2a*0.3) + * Quaternion::rotation_y(0.0); + next.leg_r.scale = Vec3::one() * 1.0; next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.35, + skeleton_attr.foot.1+canceler*-2.0+ amplitude3 * foot1b * -2.0, + skeleton_attr.foot.2 +canceler*2.0+ (foot1a * 2.0).max(0.0) * amplitude2 , ); - next.foot_l.orientation = - Quaternion::rotation_x(-0.1 + footrotl * 0.25); - next.foot_l.scale = Vec3::one()*1.02; + next.foot_l.orientation = Quaternion::rotation_x(-0.3+ + amplitude2 * foot1b * -0.35, + ) * Quaternion::rotation_y(0.0); + next.foot_l.scale = Vec3::one() * 0.96; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.45, + skeleton_attr.foot.1+canceler*-2.0+ amplitude3 * foot2b * -2.0, + skeleton_attr.foot.2 +canceler*2.0+ (foot2a * 2.0).max(0.0) * amplitude2 , ); - next.foot_r.orientation = - Quaternion::rotation_x(-0.1 + footrotr * 0.25); - next.foot_r.scale = Vec3::one()*1.02; + next.foot_r.orientation = Quaternion::rotation_x(-0.3+ + amplitude2 * foot2b * -0.35, + ) * Quaternion::rotation_y(0.0); + next.foot_r.scale = Vec3::one() * 0.96; next } From 6a16268ff0870d5c3260ef7e9db4ef7ee05223c5 Mon Sep 17 00:00:00 2001 From: Snowram Date: Tue, 1 Sep 2020 01:28:09 +0200 Subject: [PATCH 16/28] Quadmed run anim tweaks and deers offsets tweaks --- .../quadruped_medium_central_manifest.ron | 22 +++++----- .../quadruped_medium_lateral_manifest.ron | 44 +++++++++---------- voxygen/src/anim/src/quadruped_medium/idle.rs | 4 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 27 ++++++------ voxygen/src/anim/src/quadruped_medium/run.rs | 16 +++---- 5 files changed, 56 insertions(+), 57 deletions(-) diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index b0f12840b0..b02b199395 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -661,7 +661,7 @@ ), (Deer, Male): ( upper: ( - offset: (-6.0, 0.0, -8.0), + offset: (-6.0, -5.0, 0.0), central: ("npc.deer.male.head_upper"), ), lower: ( @@ -685,13 +685,13 @@ central: ("armor.empty"), ), tail: ( - offset: (-2.0, -3.0, -6.0), + offset: (-2.0, -2.0, 0.0), central: ("npc.deer.male.tail"), ), ), (Deer, Female): ( upper: ( - offset: (-6.0, 0.0, -4.5), + offset: (-6.0, -3.0, 0.0), central: ("npc.deer.female.head_upper"), ), lower: ( @@ -715,13 +715,13 @@ central: ("armor.empty"), ), tail: ( - offset: (-2.0, -3.0, -6.0), - central: ("npc.deer.female.tail"), + offset: (-2.0, -2.0, 0.0), + central: ("npc.deer.male.tail"), ), ), (Hirdrassil, Male): ( upper: ( - offset: (-9.0, 0.0, -11.5), + offset: (-9.0, -12.0, 0.0), central: ("npc.hirdrassil.male.head_upper"), ), lower: ( @@ -729,7 +729,7 @@ central: ("npc.hirdrassil.male.head_lower"), ), jaw: ( - offset: (-1.0, 0.0, -1.0), + offset: (-1.0, 0.0, -7.0), central: ("npc.hirdrassil.male.jaw"), ), torso_front: ( @@ -745,13 +745,13 @@ central: ("armor.empty"), ), tail: ( - offset: (-2.0, -4.0, -3.0), + offset: (-2.0, -2.0, 0.0), central: ("npc.hirdrassil.male.tail"), ), ), (Hirdrassil, Female): ( upper: ( - offset: (-9.0, 0.0, -11.5), + offset: (-9.0, -12.0, 0.0), central: ("npc.hirdrassil.male.head_upper"), ), lower: ( @@ -759,7 +759,7 @@ central: ("npc.hirdrassil.male.head_lower"), ), jaw: ( - offset: (-1.0, 0.0, -1.0), + offset: (-1.0, 0.0, -7.0), central: ("npc.hirdrassil.male.jaw"), ), torso_front: ( @@ -775,7 +775,7 @@ central: ("armor.empty"), ), tail: ( - offset: (-2.0, -4.0, -3.0), + offset: (-2.0, -2.0, 0.0), central: ("npc.hirdrassil.male.tail"), ), ), diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 6bf06e42cc..19f77b2e19 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -545,11 +545,11 @@ ), (Mouflon, Male): ( leg_fl: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_fl"), ), leg_fr: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_fr"), ), leg_bl: ( @@ -579,19 +579,19 @@ ), (Mouflon, Female): ( leg_fl: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_fl"), ), leg_fr: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.mouflon.male.leg_br"), ), foot_fl: ( @@ -749,19 +749,19 @@ ), (Deer, Male): ( leg_fl: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -3.5), lateral: ("npc.deer.male.leg_fl"), ), leg_fr: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -3.5), lateral: ("npc.deer.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.deer.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.deer.male.leg_br"), ), foot_fl: ( @@ -783,19 +783,19 @@ ), (Deer, Female): ( leg_fl: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -3.5), lateral: ("npc.deer.female.leg_fl"), ), leg_fr: ( - offset: (-1.5, -2.5, -2.5), + offset: (-1.5, -2.5, -3.5), lateral: ("npc.deer.female.leg_fr"), ), leg_bl: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.deer.female.leg_bl"), ), leg_br: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.deer.female.leg_br"), ), foot_fl: ( @@ -817,19 +817,19 @@ ), (Hirdrassil, Male): ( leg_fl: ( - offset: (-1.5, -3.0, -2.5), + offset: (-1.5, -3.0, -4.0), lateral: ("npc.hirdrassil.male.leg_fl"), ), leg_fr: ( - offset: (-1.5, -3.0, -2.5), + offset: (-1.5, -3.0, -4.0), lateral: ("npc.hirdrassil.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -5.0), lateral: ("npc.hirdrassil.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -5.0), lateral: ("npc.hirdrassil.male.leg_br"), ), foot_fl: ( @@ -851,19 +851,19 @@ ), (Hirdrassil, Female): ( leg_fl: ( - offset: (-1.5, -3.0, -2.5), + offset: (-1.5, -3.0, -4.0), lateral: ("npc.hirdrassil.male.leg_fl"), ), leg_fr: ( - offset: (-1.5, -3.0, -2.5), + offset: (-1.5, -3.0, -4.0), lateral: ("npc.hirdrassil.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -5.0), lateral: ("npc.hirdrassil.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -1.0, -2.5), + offset: (-2.0, -2.5, -5.0), lateral: ("npc.hirdrassil.male.leg_br"), ), foot_fl: ( diff --git a/voxygen/src/anim/src/quadruped_medium/idle.rs b/voxygen/src/anim/src/quadruped_medium/idle.rs index 193bb3aa6e..226f42951f 100644 --- a/voxygen/src/anim/src/quadruped_medium/idle.rs +++ b/voxygen/src/anim/src/quadruped_medium/idle.rs @@ -71,9 +71,9 @@ impl Animation for IdleAnimation { next.jaw.position = Vec3::new( 0.0, skeleton_attr.jaw.0 - slower * 0.12, - skeleton_attr.jaw.1 + slow * 0.2, + skeleton_attr.jaw.1 + slow * 0.2 + 0.5, ); - next.jaw.orientation = Quaternion::rotation_x(slow * 0.05); + next.jaw.orientation = Quaternion::rotation_x(slow * 0.05 - 0.08); next.jaw.scale = Vec3::one() * 1.02; next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index a8746a3178..5de8fd9920 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -143,9 +143,9 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-2.5, 6.0), (Catoblepas, _) => (-1.0, -6.5), (Bonerattler, _) => (-1.0, 2.5), - (Deer, Male) => (-4.5, 11.0), - (Deer, Female) => (-2.5, 8.0), - (Hirdrassil, _) => (-12.0, 16.0), + (Deer, Male) => (0.5, 3.5), + (Deer, Female) => (0.5, 3.5), + (Hirdrassil, _) => (0.0, 5.0), }, head_lower: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -174,9 +174,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (10.5, -4.0), (Catoblepas, _) => (1.0, -4.0), (Bonerattler, _) => (3.0, -3.0), - (Deer, Male) => (9.0, -5.5), - (Deer, Female) => (7.0, -2.0), - (Hirdrassil, _) => (14.5, -15.0), + (Deer, _) => (3.5, 2.0), + (Hirdrassil, _) => (2.5, 2.5), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -190,8 +189,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-10.5, 3.0), (Catoblepas, _) => (-8.5, -2.0), (Bonerattler, _) => (-10.0, 1.5), - (Deer, _) => (-8.5, 6.5), - (Hirdrassil, _) => (-9.0, 5.0), + (Deer, _) => (-8.5, 0.5), + (Hirdrassil, _) => (-11.0, 2.0), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), @@ -251,7 +250,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (7.0, 2.0, -6.0), (Bonerattler, _) => (5.5, 5.0, -4.0), (Deer, _) => (3.5, -4.5, -3.5), - (Hirdrassil, _) => (4.5, -6.0, -3.5), + (Hirdrassil, _) => (4.5, -5.0, -2.5), }, leg_b: match (body.species, body.body_type) { (Grolgar, _) => (6.0, -6.5, -5.5), @@ -265,8 +264,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (3.5, -8.0, -4.5), (Catoblepas, _) => (6.0, -2.5, -2.5), (Bonerattler, _) => (6.0, -8.0, -4.0), - (Deer, _) => (3.0, -8.0, -5.0), - (Hirdrassil, _) => (4.0, -8.0, -6.0), + (Deer, _) => (3.0, -6.5, -3.5), + (Hirdrassil, _) => (4.0, -6.5, -3.0), }, feet_f: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -9.0, -7.0), @@ -281,7 +280,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (1.0, 4.0, -3.0), (Bonerattler, _) => (-0.5, -3.0, -2.5), (Deer, _) => (-0.5, -0.5, -2.5), - (Hirdrassil, _) => (-0.5, -3.0, -2.5), + (Hirdrassil, _) => (-0.5, -3.0, -3.5), }, feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.0, 0.0, -5.0), @@ -295,8 +294,8 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Mouflon, _) => (-1.0, 0.0, -2.5), (Catoblepas, _) => (0.5, 0.5, -3.0), (Bonerattler, _) => (0.0, 3.0, -2.5), - (Deer, _) => (-1.0, 0.0, -0.5), - (Hirdrassil, _) => (-1.0, 0.0, -1.5), + (Deer, _) => (-1.0, -0.5, -2.0), + (Hirdrassil, _) => (-1.0, -2.0, -4.5), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 5a99759441..962498f883 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -162,7 +162,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_f.2 + amplitude3 * foot1a * 2.3, ); next.leg_fl.orientation = - Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot1a * 0.35) + Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot1a * 0.85) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fl.scale = Vec3::one() * 1.02; @@ -173,7 +173,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_f.2 + amplitude3 * foot2a * 2.8, ); next.leg_fr.orientation = - Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot2a * 0.35) + Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot2a * 0.85) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fr.scale = Vec3::one() * 1.02; @@ -183,7 +183,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_b.1 + amplitude3 * foot3b * -1.1, skeleton_attr.leg_b.2 + canceler + amplitude3 * foot3a * 1.6, ); - next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot3a * 0.12) + next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * 0.85) * Quaternion::rotation_y(tilt * 1.5) * Quaternion::rotation_z(tilt * -1.5); next.leg_bl.scale = Vec3::one() * 1.02; @@ -193,7 +193,7 @@ impl Animation for RunAnimation { skeleton_attr.leg_b.1 + amplitude3 * foot4b * -1.1, skeleton_attr.leg_b.2 + canceler + amplitude3 * foot4a * 1.6, ); - next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot4b * 0.12) + next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot2b * 0.85) * Quaternion::rotation_y(tilt * 1.5) * Quaternion::rotation_z(tilt * -1.5); next.leg_br.scale = Vec3::one() * 1.02; @@ -204,7 +204,7 @@ impl Animation for RunAnimation { skeleton_attr.feet_f.2 + (foot1a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fl.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.8, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fl.scale = Vec3::one() * 0.96; @@ -214,7 +214,7 @@ impl Animation for RunAnimation { skeleton_attr.feet_f.2 + (foot2a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fr.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.8, + ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fr.scale = Vec3::one() * 0.96; @@ -224,7 +224,7 @@ impl Animation for RunAnimation { skeleton_attr.feet_b.2 + (foot3a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, ); next.foot_bl.orientation = - Quaternion::rotation_x(amplitude2 * foot3b * -0.9 - 0.5 * canceler) + Quaternion::rotation_x(amplitude2 * foot3b * -0.5 - 0.5 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_bl.scale = Vec3::one() * 0.96; @@ -234,7 +234,7 @@ impl Animation for RunAnimation { skeleton_attr.feet_b.2 + (foot4a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, ); next.foot_br.orientation = - Quaternion::rotation_x(amplitude2 * foot4b * -0.9 - 0.5 * canceler) + Quaternion::rotation_x(amplitude2 * foot4b * -0.5 - 0.5 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_br.scale = Vec3::one() * 0.96; next From 06b39b9072861d7cef418f5e4f82292577727ba7 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 2 Sep 2020 01:14:50 -0400 Subject: [PATCH 17/28] species specific improvement --- .../quadruped_medium_central_manifest.ron | 4 +- .../quadruped_medium_lateral_manifest.ron | 40 ++++----- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 78 +++++++++------- voxygen/src/anim/src/quadruped_medium/run.rs | 74 ++++++++-------- voxygen/src/anim/src/theropod/idle.rs | 40 +++++---- voxygen/src/anim/src/theropod/jump.rs | 39 ++++---- voxygen/src/anim/src/theropod/run.rs | 88 ++++++++++--------- voxygen/src/scene/figure/mod.rs | 32 +++---- 9 files changed, 215 insertions(+), 182 deletions(-) diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index b02b199395..e3baa21581 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -325,7 +325,7 @@ central: ("npc.tiger.male.ears"), ), tail: ( - offset: (-1.5, -12.0, -1.0), + offset: (-1.5, -12.0, -10.0), central: ("npc.tiger.male.tail"), ), ), @@ -355,7 +355,7 @@ central: ("npc.tiger.male.ears"), ), tail: ( - offset: (-1.5, -12.0, -1.0), + offset: (-1.5, -12.0, -10.0), central: ("npc.tiger.male.tail"), ), ), diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 19f77b2e19..3eefeef7c1 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -1,11 +1,11 @@ ({ (Grolgar, Male): ( leg_fl: ( - offset: (-2.5, -12.0, -7.5),//these are done very case by case + offset: (-2.5, -5.0, -10.0),//these are done very case by case lateral: ("npc.grolgar.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -12.0, -7.5), + offset: (-2.5, -5.0, -10.0), lateral: ("npc.grolgar.male.leg_fr"), ), leg_bl: ( @@ -17,11 +17,11 @@ lateral: ("npc.grolgar.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -3.0, -6.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -2.0, -6.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -3.0, -6.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -2.0, -6.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fr"), ), foot_bl: ( @@ -35,11 +35,11 @@ ), (Grolgar, Female): ( leg_fl: ( - offset: (-2.5, -12.0, -7.5), + offset: (-2.5, -5.0, -10.0), lateral: ("npc.grolgar.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -12.0, -7.5), + offset: (-2.5, -5.0, -10.0), lateral: ("npc.grolgar.male.leg_fr"), ), leg_bl: ( @@ -51,11 +51,11 @@ lateral: ("npc.grolgar.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -3.0, -6.0), + offset: (-2.5, -2.0, -6.0), lateral: ("npc.grolgar.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -3.0, -6.0), + offset: (-2.5, -2.0, -6.0), lateral: ("npc.grolgar.male.foot_fr"), ), foot_bl: ( @@ -341,19 +341,19 @@ ), (Tiger, Male): ( leg_fl: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_br"), ), foot_fl: ( @@ -375,19 +375,19 @@ ), (Tiger, Female): ( leg_fl: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -5.0), + offset: (-2.0, -3.0, -10.0), lateral: ("npc.tiger.male.leg_br"), ), foot_fl: ( @@ -569,11 +569,11 @@ lateral: ("npc.mouflon.male.foot_fr"), ), foot_bl: ( - offset: (-1.0, -2.0, -6.0), + offset: (-1.0, -2.0, -10.0), lateral: ("npc.mouflon.male.foot_bl"), ), foot_br: ( - offset: (-1.0, -2.0, -6.0), + offset: (-1.0, -2.0, -10.0), lateral: ("npc.mouflon.male.foot_br"), ), ), @@ -603,11 +603,11 @@ lateral: ("npc.mouflon.male.foot_fr"), ), foot_bl: ( - offset: (-1.0, -2.0, -6.0), + offset: (-1.0, -2.0, -10.0), lateral: ("npc.mouflon.male.foot_bl"), ), foot_br: ( - offset: (-1.0, -2.0, -6.0), + offset: (-1.0, -2.0, -10.0), lateral: ("npc.mouflon.male.foot_br"), ), ), diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index 1b50424c2e..dfbd747cce 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -32,7 +32,7 @@ impl Body { match self { Body::Humanoid(_) => 100.0, Body::QuadrupedSmall(_) => 125.0, - Body::QuadrupedMedium(_) => 180.0, + Body::QuadrupedMedium(_) => 30.0, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 50.0, Body::Dragon(_) => 250.0, diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 5de8fd9920..2fb77232a1 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -89,9 +89,10 @@ pub struct SkeletonAttr { feet_f: (f32, f32, f32), feet_b: (f32, f32, f32), scaler: f32, - dampen: f32, + startangle: f32, maximize: f32, tempo: f32, + spring: f32, } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -120,9 +121,10 @@ impl Default for SkeletonAttr { feet_f: (0.0, 0.0, 0.0), feet_b: (0.0, 0.0, 0.0), scaler: 0.0, - dampen: 0.0, + startangle: 0.0, maximize: 0.0, tempo: 0.0, + spring: 0.0, } } } @@ -183,7 +185,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (-9.0, 2.0), (Lion, _) => (-11.0, 1.0), (Tarasque, _) => (-11.0, 0.0), - (Tiger, _) => (-13.5, -7.0), + (Tiger, _) => (-13.5, 3.0), (Wolf, _) => (-11.0, 0.0), (Frostfang, _) => (-7.0, -3.5), (Mouflon, _) => (-10.5, 3.0), @@ -238,15 +240,15 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Hirdrassil, _) => (2.5, 5.0), }, leg_f: match (body.species, body.body_type) { - (Grolgar, _) => (-7.0, 4.0, 0.0), + (Grolgar, _) => (7.0, -2.0, 2.0), (Saber, _) => (7.0, -4.0, -3.5), (Tuskram, _) => (6.0, -6.5, -0.5), (Lion, _) => (6.5, -6.5, -2.0), (Tarasque, _) => (7.0, -8.0, -6.0), - (Tiger, _) => (6.0, -5.0, -3.0), + (Tiger, _) => (6.0, -5.0, 1.0), (Wolf, _) => (4.5, -6.5, -1.5), (Frostfang, _) => (5.5, -5.5, -2.0), - (Mouflon, _) => (4.0, -5.0, -5.0), + (Mouflon, _) => (4.0, -5.0, -4.0), (Catoblepas, _) => (7.0, 2.0, -6.0), (Bonerattler, _) => (5.5, 5.0, -4.0), (Deer, _) => (3.5, -4.5, -3.5), @@ -258,41 +260,41 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (5.0, -5.5, -3.5), (Lion, _) => (6.0, -6.0, -2.0), (Tarasque, _) => (6.0, -6.5, -6.5), - (Tiger, _) => (6.0, -7.5, -3.0), + (Tiger, _) => (6.0, -7.5, 1.0), (Wolf, _) => (5.0, -6.5, -3.0), (Frostfang, _) => (3.5, -4.5, -2.0), - (Mouflon, _) => (3.5, -8.0, -4.5), + (Mouflon, _) => (3.5, -8.0, -3.5), (Catoblepas, _) => (6.0, -2.5, -2.5), (Bonerattler, _) => (6.0, -8.0, -4.0), (Deer, _) => (3.0, -6.5, -3.5), (Hirdrassil, _) => (4.0, -6.5, -3.0), }, feet_f: match (body.species, body.body_type) { - (Grolgar, _) => (0.0, -9.0, -7.0), + (Grolgar, _) => (0.0, -3.0, -9.0), (Saber, _) => (1.0, -3.5, -2.5), (Tuskram, _) => (0.5, 0.5, -9.0), (Lion, _) => (0.0, 0.0, -7.0), (Tarasque, _) => (1.0, 0.0, -3.0), - (Tiger, _) => (0.5, 0.0, -5.0), + (Tiger, _) => (0.5, 0.0, -9.0), (Wolf, _) => (0.5, 0.0, -2.0), (Frostfang, _) => (0.5, 1.5, -3.5), - (Mouflon, _) => (-0.5, -0.5, -1.5), + (Mouflon, _) => (-0.5, -0.5, -3.0), (Catoblepas, _) => (1.0, 4.0, -3.0), (Bonerattler, _) => (-0.5, -3.0, -2.5), (Deer, _) => (-0.5, -0.5, -2.5), (Hirdrassil, _) => (-0.5, -3.0, -3.5), }, feet_b: match (body.species, body.body_type) { - (Grolgar, _) => (0.0, 0.0, -5.0), + (Grolgar, _) => (0.0, -1.0, -5.0), (Saber, _) => (1.0, -1.0, -1.0), - (Tuskram, _) => (0.5, 0.0, -3.0), + (Tuskram, _) => (0.5, 0.0, -3.5), (Lion, _) => (0.5, 0.5, -5.5), (Tarasque, _) => (1.5, -1.0, -2.5), - (Tiger, _) => (1.0, 0.5, -4.0), + (Tiger, _) => (1.0, 0.5, -8.0), (Wolf, _) => (0.0, -1.0, -1.5), (Frostfang, _) => (0.0, -1.5, -3.5), - (Mouflon, _) => (-1.0, 0.0, -2.5), - (Catoblepas, _) => (0.5, 0.5, -3.0), + (Mouflon, _) => (-1.0, 0.0, -0.5), + (Catoblepas, _) => (0.5, 0.5, -4.0), (Bonerattler, _) => (0.0, 3.0, -2.5), (Deer, _) => (-1.0, -0.5, -2.0), (Hirdrassil, _) => (-1.0, -2.0, -4.5), @@ -312,20 +314,21 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Deer, _) => (1.0), (Hirdrassil, _) => (1.0), }, - dampen: match (body.species, body.body_type) { - (Grolgar, _) => (0.5), - (Saber, _) => (0.5), - (Tuskram, _) => (0.6), - (Lion, _) => (0.8), - (Tarasque, _) => (0.6), - (Tiger, _) => (0.6), - (Wolf, _) => (1.0), - (Frostfang, _) => (1.0), - (Mouflon, _) => (1.0), - (Catoblepas, _) => (0.6), - (Bonerattler, _) => (0.6), - (Deer, _) => (1.0), - (Hirdrassil, _) => (1.0), + startangle: match (body.species, body.body_type) { + //changes the default angle of front feet + (Grolgar, _) => (-0.3), + (Saber, _) => (-0.2), + (Tuskram, _) => (0.3), + (Lion, _) => (0.2), + (Tarasque, _) => (0.2), + (Tiger, _) => (0.0), + (Wolf, _) => (0.0), + (Frostfang, _) => (0.0), + (Mouflon, _) => (0.0), + (Catoblepas, _) => (0.2), + (Bonerattler, _) => (0.2), + (Deer, _) => (0.0), + (Hirdrassil, _) => (0.0), }, maximize: match (body.species, body.body_type) { (Grolgar, _) => (2.0), @@ -357,6 +360,21 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Deer, _) => (0.85), (Hirdrassil, _) => (0.85), }, + spring: match (body.species, body.body_type) { + (Grolgar, _) => (1.0), + (Saber, _) => (0.9), + (Tuskram, _) => (0.9), + (Lion, _) => (1.0), + (Tarasque, _) => (1.0), + (Tiger, _) => (1.0), + (Wolf, _) => (1.2), + (Frostfang, _) => (1.0), + (Mouflon, _) => (0.6), + (Catoblepas, _) => (0.7), + (Bonerattler, _) => (1.1), + (Deer, _) => (0.9), + (Hirdrassil, _) => (1.1), + }, } } } diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 962498f883..eac5d982fd 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -25,16 +25,12 @@ impl Animation for RunAnimation { let speed = Vec2::::from(velocity).magnitude(); *rate = 1.0; //let increasefreqtest = (((1.0/speed)*3.0).round()).min(5.0); - let lab = 0.6; //6 + let lab = 0.72; //0.72 let amplitude = (speed / 24.0).max(0.25); let amplitude2 = (speed * 1.4 / 24.0).max(0.6); let amplitude3 = (speed / 24.0).max(0.35); - let speedmult = if speed > 0.0 { - 1.2 * (1.0 * skeleton_attr.tempo) - } else { - 0.9 * (1.0 * skeleton_attr.tempo) - }; - let canceler = speed / 25.0; + let speedmult = skeleton_attr.tempo; + let canceler = speed / 24.0; let short = (((1.0) / (0.72 + 0.28 @@ -60,7 +56,7 @@ impl Animation for RunAnimation { * 0.25, ); - let speedadjust = if speed < 5.0 { 0.0 } else { speed / 25.0 }; + let speedadjust = if speed < 5.0 { 0.0 } else { speed / 24.0 }; let shift1 = speedadjust - PI / 2.0 - speedadjust * PI * 3.0 / 4.0; let shift2 = speedadjust + PI / 2.0 + speedadjust * PI / 2.0; let shift3 = speedadjust + PI / 4.0 - speedadjust * PI / 4.0; @@ -68,10 +64,10 @@ impl Animation for RunAnimation { //FL let foot1a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.08 + shift1) + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1) .sin(); //1.5 let foot1b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.08 + shift1) + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift1) .sin(); //1.9 //FR let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 @@ -81,10 +77,10 @@ impl Animation for RunAnimation { let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift3).sin(); //0.4 //BR let foot4a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.15 + shift4) + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4) .sin(); //0.3 let foot4b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.15 + shift4) + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift4) .sin(); //0.7 // let ori: Vec2 = Vec2::from(orientation); @@ -105,10 +101,11 @@ impl Animation for RunAnimation { //Gallop next.head_upper.position = Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = - Quaternion::rotation_x(look.y*0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1) - * Quaternion::rotation_z(look.x*0.3 / ((canceler).max(0.5)) + tilt * -1.2) - * Quaternion::rotation_y(tilt * 0.8); + next.head_upper.orientation = Quaternion::rotation_x( + look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1, + ) * Quaternion::rotation_z( + look.x * 0.3 / ((canceler).max(0.5)) + tilt * -1.2, + ) * Quaternion::rotation_y(tilt * 0.8); next.head_upper.scale = Vec3::one(); next.head_lower.position = @@ -132,14 +129,15 @@ impl Animation for RunAnimation { skeleton_attr.torso_front.0, skeleton_attr.torso_front.1 + canceler * 1.0 - + canceler * shortalt * 2.5 + + canceler * shortalt * 2.5 * skeleton_attr.spring + x_tilt * 10.0 * canceler, ) * skeleton_attr.scaler / 11.0; - next.torso_front.orientation = - Quaternion::rotation_x((amplitude * (short * -0.13).max(-0.2)) + x_tilt * (canceler * 6.0).min(1.0)) - * Quaternion::rotation_y(tilt * 0.8) - * Quaternion::rotation_z(tilt * -1.5); + next.torso_front.orientation = Quaternion::rotation_x( + (amplitude * (short * -0.13).max(-0.2)) * skeleton_attr.spring + + x_tilt * (canceler * 6.0).min(1.0), + ) * Quaternion::rotation_y(tilt * 0.8) + * Quaternion::rotation_z(tilt * -1.5); next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; next.torso_back.position = Vec3::new( @@ -169,8 +167,8 @@ impl Animation for RunAnimation { next.leg_fr.position = Vec3::new( skeleton_attr.leg_f.0, - skeleton_attr.leg_f.1 + amplitude3 * foot2b * -2.2,////////////fix - skeleton_attr.leg_f.2 + amplitude3 * foot2a * 2.8, + skeleton_attr.leg_f.1 + amplitude3 * foot2b * -1.6, + skeleton_attr.leg_f.2 + amplitude3 * foot2a * 2.3, ); next.leg_fr.orientation = Quaternion::rotation_x(0.2 * canceler + amplitude3 * foot2a * 0.85) @@ -181,21 +179,23 @@ impl Animation for RunAnimation { next.leg_bl.position = Vec3::new( -skeleton_attr.leg_b.0, skeleton_attr.leg_b.1 + amplitude3 * foot3b * -1.1, - skeleton_attr.leg_b.2 + canceler + amplitude3 * foot3a * 1.6, + skeleton_attr.leg_b.2 + amplitude3 * foot3a * 1.1, ); - next.leg_bl.orientation = Quaternion::rotation_x(amplitude3 * foot1b * 0.85) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_bl.orientation = + Quaternion::rotation_x(canceler * -0.2 + amplitude3 * foot3b * -0.55) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_bl.scale = Vec3::one() * 1.02; next.leg_br.position = Vec3::new( skeleton_attr.leg_b.0, skeleton_attr.leg_b.1 + amplitude3 * foot4b * -1.1, - skeleton_attr.leg_b.2 + canceler + amplitude3 * foot4a * 1.6, + skeleton_attr.leg_b.2 + amplitude3 * foot4a * 1.1, ); - next.leg_br.orientation = Quaternion::rotation_x(amplitude3 * foot2b * 0.85) - * Quaternion::rotation_y(tilt * 1.5) - * Quaternion::rotation_z(tilt * -1.5); + next.leg_br.orientation = + Quaternion::rotation_x(canceler * -0.2 + amplitude3 * foot4b * -0.55) + * Quaternion::rotation_y(tilt * 1.5) + * Quaternion::rotation_z(tilt * -1.5); next.leg_br.scale = Vec3::one() * 1.02; next.foot_fl.position = Vec3::new( @@ -204,7 +204,7 @@ impl Animation for RunAnimation { skeleton_attr.feet_f.2 + (foot1a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fl.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot1b * -0.7, + skeleton_attr.startangle * canceler + amplitude2 * foot1b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fl.scale = Vec3::one() * 0.96; @@ -214,27 +214,27 @@ impl Animation for RunAnimation { skeleton_attr.feet_f.2 + (foot2a * 2.0).max(-1.0) * amplitude2 + 1.0 * canceler, ); next.foot_fr.orientation = Quaternion::rotation_x( - ((1.0 - skeleton_attr.dampen) * -1.0) * canceler + amplitude2 * foot2b * -0.7, + skeleton_attr.startangle * canceler + amplitude2 * foot2b * -0.7, ) * Quaternion::rotation_y(tilt * -1.0); next.foot_fr.scale = Vec3::one() * 0.96; next.foot_bl.position = Vec3::new( -skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + (foot3a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, + skeleton_attr.feet_b.2 + (foot3a * 0.8).max(0.0) * amplitude2 + 1.0 * canceler, ); next.foot_bl.orientation = - Quaternion::rotation_x(amplitude2 * foot3b * -0.5 - 0.5 * canceler) + Quaternion::rotation_x(amplitude2 * foot3b * -0.7 - 0.2 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_bl.scale = Vec3::one() * 0.96; next.foot_br.position = Vec3::new( skeleton_attr.feet_b.0, skeleton_attr.feet_b.1, - skeleton_attr.feet_b.2 + (foot4a * 0.5).max(0.0) * amplitude2 + 2.0 * canceler, + skeleton_attr.feet_b.2 + (foot4a * 0.8).max(0.0) * amplitude2 + 1.0 * canceler, ); next.foot_br.orientation = - Quaternion::rotation_x(amplitude2 * foot4b * -0.5 - 0.5 * canceler) + Quaternion::rotation_x(amplitude2 * foot4b * -0.7 - 0.2 * canceler) * Quaternion::rotation_y(tilt * -1.0); next.foot_br.scale = Vec3::one() * 0.96; next diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs index b6c35f5d0c..62c4e8d03d 100644 --- a/voxygen/src/anim/src/theropod/idle.rs +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -22,29 +22,35 @@ impl Animation for IdleAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - let breathe = (anim_time as f32 * 0.8).sin(); - - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); - next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); - next.head.scale = Vec3::one()*1.02; + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0, + skeleton_attr.head.1 + breathe * 0.3, + ); + next.head.orientation = Quaternion::rotation_x(breathe * 0.1 - 0.1); + next.head.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); - next.jaw.scale = Vec3::one()*0.98; + next.jaw.scale = Vec3::one() * 0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); + next.neck.position = Vec3::new( + 0.0, + skeleton_attr.neck.0, + skeleton_attr.neck.1 + breathe * 0.2, + ); next.neck.orientation = Quaternion::rotation_x(-0.1); - next.neck.scale = Vec3::one()*0.98; + next.neck.scale = Vec3::one() * 0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1+breathe * 0.3, - )/3.0; + skeleton_attr.chest_front.1 + breathe * 0.3, + ) / 3.0; next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); - next.chest_front.scale = Vec3::one()/3.0; + next.chest_front.scale = Vec3::one() / 3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); @@ -80,7 +86,7 @@ impl Animation for IdleAnimation { next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.2 + breathe * 0.05, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); @@ -88,7 +94,7 @@ impl Animation for IdleAnimation { next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.2 + breathe * 0.05, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); @@ -96,18 +102,18 @@ impl Animation for IdleAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.35, + skeleton_attr.foot.2 + breathe * -0.35, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); - next.foot_l.scale = Vec3::one()*1.02; + next.foot_l.scale = Vec3::one() * 1.02; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.45, + skeleton_attr.foot.2 + breathe * -0.45, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); - next.foot_r.scale = Vec3::one()*1.02; + next.foot_r.scale = Vec3::one() * 1.02; next } diff --git a/voxygen/src/anim/src/theropod/jump.rs b/voxygen/src/anim/src/theropod/jump.rs index 23c2a5f958..2fbb22287f 100644 --- a/voxygen/src/anim/src/theropod/jump.rs +++ b/voxygen/src/anim/src/theropod/jump.rs @@ -23,26 +23,33 @@ impl Animation for JumpAnimation { let breathe = (anim_time as f32 * 0.8).sin(); - - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); - next.head.orientation = Quaternion::rotation_x(breathe * 0.1-0.1); - next.head.scale = Vec3::one()*1.02; + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0, + skeleton_attr.head.1 + breathe * 0.3, + ); + next.head.orientation = Quaternion::rotation_x(breathe * 0.1 - 0.1); + next.head.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.orientation = Quaternion::rotation_x(breathe * 0.05); - next.jaw.scale = Vec3::one()*0.98; + next.jaw.scale = Vec3::one() * 0.98; - next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1+breathe * 0.2); + next.neck.position = Vec3::new( + 0.0, + skeleton_attr.neck.0, + skeleton_attr.neck.1 + breathe * 0.2, + ); next.neck.orientation = Quaternion::rotation_x(-0.1); - next.neck.scale = Vec3::one()*0.98; + next.neck.scale = Vec3::one() * 0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1+breathe * 0.3, - )/3.0; + skeleton_attr.chest_front.1 + breathe * 0.3, + ) / 3.0; next.chest_front.orientation = Quaternion::rotation_x(breathe * 0.04); - next.chest_front.scale = Vec3::one()/3.0; + next.chest_front.scale = Vec3::one() / 3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); @@ -78,7 +85,7 @@ impl Animation for JumpAnimation { next.leg_l.position = Vec3::new( -skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.2 + breathe * 0.05, ); next.leg_l.orientation = Quaternion::rotation_z(0.0); next.leg_l.scale = Vec3::one(); @@ -86,7 +93,7 @@ impl Animation for JumpAnimation { next.leg_r.position = Vec3::new( skeleton_attr.leg.0, skeleton_attr.leg.1, - skeleton_attr.leg.2+breathe * 0.05, + skeleton_attr.leg.2 + breathe * 0.05, ); next.leg_r.orientation = Quaternion::rotation_z(0.0); next.leg_r.scale = Vec3::one(); @@ -94,18 +101,18 @@ impl Animation for JumpAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.35, + skeleton_attr.foot.2 + breathe * -0.35, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); - next.foot_l.scale = Vec3::one()*1.02; + next.foot_l.scale = Vec3::one() * 1.02; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2+breathe * -0.45, + skeleton_attr.foot.2 + breathe * -0.45, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); - next.foot_r.scale = Vec3::one()*1.02; + next.foot_r.scale = Vec3::one() * 1.02; next } diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index edf9745990..a0f4868a26 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -28,7 +28,7 @@ impl Animation for RunAnimation { //let wave_slow = (anim_time as f32 * 6.5 + PI).sin(); let breathe = (anim_time as f32 * 0.8).sin(); - let topspeed = 18.0; + let topspeed = 18.0; let canceler = speed / topspeed; let lab = 0.5; //6 @@ -56,51 +56,57 @@ impl Animation for RunAnimation { (anim_time as f32 * (16.0) * lab as f32 * speedmult + PI * 3.0 / 8.0 - 0.5).sin(); //FL - let foot1a = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0+PI ) - .sin(); //1.5 - let foot1b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57+PI ) - .sin(); //1.9 + let foot1a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + PI).sin(); //1.5 + let foot1b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + PI).sin(); //1.9 //FR - let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult ).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 ).sin(); //1.6 + let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult).sin(); //1.2 + let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57).sin(); //1.6 //BL //BR - next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1+breathe * 0.3); - next.head.orientation = Quaternion::rotation_x(-0.1+short*-0.05)*Quaternion::rotation_z(shortalt*-0.2); - next.head.scale = Vec3::one()*1.02; + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0, + skeleton_attr.head.1 + breathe * 0.3, + ); + next.head.orientation = + Quaternion::rotation_x(-0.1 + short * -0.05) * Quaternion::rotation_z(shortalt * -0.2); + next.head.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); - next.jaw.orientation = Quaternion::rotation_x(short*-0.03); - next.jaw.scale = Vec3::one()*0.98; + next.jaw.orientation = Quaternion::rotation_x(short * -0.03); + next.jaw.scale = Vec3::one() * 0.98; next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); - next.neck.orientation = Quaternion::rotation_x(-0.1+short*-0.04)*Quaternion::rotation_z(shortalt*-0.1); - next.neck.scale = Vec3::one()*0.98; + next.neck.orientation = + Quaternion::rotation_x(-0.1 + short * -0.04) * Quaternion::rotation_z(shortalt * -0.1); + next.neck.scale = Vec3::one() * 0.98; next.chest_front.position = Vec3::new( 0.0, skeleton_attr.chest_front.0, - skeleton_attr.chest_front.1+short * 0.5, - )/3.0; - next.chest_front.orientation = Quaternion::rotation_x(short * 0.07)*Quaternion::rotation_z(shortalt * 0.15); - next.chest_front.scale = Vec3::one()/3.0; + skeleton_attr.chest_front.1 + short * 0.5, + ) / 3.0; + next.chest_front.orientation = + Quaternion::rotation_x(short * 0.07) * Quaternion::rotation_z(shortalt * 0.15); + next.chest_front.scale = Vec3::one() / 3.0; next.chest_back.position = Vec3::new(0.0, skeleton_attr.chest_back.0, skeleton_attr.chest_back.1); - next.chest_back.orientation = Quaternion::rotation_x(short * -0.04)*Quaternion::rotation_z(shortalt * -0.15);; + next.chest_back.orientation = + Quaternion::rotation_x(short * -0.04) * Quaternion::rotation_z(shortalt * -0.15); next.chest_back.scale = Vec3::one(); next.tail_front.position = Vec3::new(0.0, skeleton_attr.tail_front.0, skeleton_attr.tail_front.1); - next.tail_front.orientation = Quaternion::rotation_x(0.1+short * -0.02)*Quaternion::rotation_z(shortalt*-0.1); + next.tail_front.orientation = + Quaternion::rotation_x(0.1 + short * -0.02) * Quaternion::rotation_z(shortalt * -0.1); next.tail_front.scale = Vec3::one(); next.tail_back.position = Vec3::new(0.0, skeleton_attr.tail_back.0, skeleton_attr.tail_back.1); - next.tail_back.orientation = Quaternion::rotation_x(0.2+short * -0.2)*Quaternion::rotation_z(shortalt*-0.2); + next.tail_back.orientation = + Quaternion::rotation_x(0.2 + short * -0.2) * Quaternion::rotation_z(shortalt * -0.2); next.tail_back.scale = Vec3::one(); next.hand_l.position = Vec3::new( @@ -108,7 +114,7 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_l.orientation = Quaternion::rotation_x( -0.2+amplitude3 * foot2a * 0.3); + next.hand_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.3); next.hand_l.scale = Vec3::one(); next.hand_r.position = Vec3::new( @@ -116,7 +122,7 @@ impl Animation for RunAnimation { skeleton_attr.hand.1, skeleton_attr.hand.2, ); - next.hand_r.orientation = Quaternion::rotation_x( -0.2+amplitude3 * foot1a * 0.3); + next.hand_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.3); next.hand_r.scale = Vec3::one(); next.leg_l.position = Vec3::new( @@ -124,10 +130,9 @@ impl Animation for RunAnimation { skeleton_attr.leg.1 + amplitude3 * foot1b * -1.3, skeleton_attr.leg.2 + amplitude3 * foot1a * 1.4, ); - next.leg_l.orientation = - Quaternion::rotation_x( -0.2+amplitude3 * foot1a * 0.2) - * Quaternion::rotation_z(foot1a*-0.3) - * Quaternion::rotation_y(0.0); + next.leg_l.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot1a * 0.2) + * Quaternion::rotation_z(foot1a * -0.3) + * Quaternion::rotation_y(0.0); next.leg_l.scale = Vec3::one() * 1.0; next.leg_r.position = Vec3::new( @@ -135,30 +140,27 @@ impl Animation for RunAnimation { skeleton_attr.leg.1 + amplitude3 * foot2b * -1.3, skeleton_attr.leg.2 + amplitude3 * foot2a * 1.4, ); - next.leg_r.orientation = - Quaternion::rotation_x( -0.2+amplitude3 * foot2a * 0.2) - * Quaternion::rotation_z(foot2a*0.3) - * Quaternion::rotation_y(0.0); + next.leg_r.orientation = Quaternion::rotation_x(-0.2 + amplitude3 * foot2a * 0.2) + * Quaternion::rotation_z(foot2a * 0.3) + * Quaternion::rotation_y(0.0); next.leg_r.scale = Vec3::one() * 1.0; next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, - skeleton_attr.foot.1+canceler*-2.0+ amplitude3 * foot1b * -2.0, - skeleton_attr.foot.2 +canceler*2.0+ (foot1a * 2.0).max(0.0) * amplitude2 , + skeleton_attr.foot.1 + canceler * -2.0 + amplitude3 * foot1b * -2.0, + skeleton_attr.foot.2 + canceler * 2.0 + (foot1a * 2.0).max(0.0) * amplitude2, ); - next.foot_l.orientation = Quaternion::rotation_x(-0.3+ - amplitude2 * foot1b * -0.35, - ) * Quaternion::rotation_y(0.0); + next.foot_l.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot1b * -0.35) + * Quaternion::rotation_y(0.0); next.foot_l.scale = Vec3::one() * 0.96; next.foot_r.position = Vec3::new( skeleton_attr.foot.0, - skeleton_attr.foot.1+canceler*-2.0+ amplitude3 * foot2b * -2.0, - skeleton_attr.foot.2 +canceler*2.0+ (foot2a * 2.0).max(0.0) * amplitude2 , + skeleton_attr.foot.1 + canceler * -2.0 + amplitude3 * foot2b * -2.0, + skeleton_attr.foot.2 + canceler * 2.0 + (foot2a * 2.0).max(0.0) * amplitude2, ); - next.foot_r.orientation = Quaternion::rotation_x(-0.3+ - amplitude2 * foot2b * -0.35, - ) * Quaternion::rotation_y(0.0); + next.foot_r.orientation = Quaternion::rotation_x(-0.3 + amplitude2 * foot2b * -0.35) + * Quaternion::rotation_y(0.0); next.foot_r.scale = Vec3::one() * 0.96; next diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 99cd5b040b..3fcce08a08 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1123,15 +1123,13 @@ impl FigureMgr { ) }, // Running - (false, _, true) => { - anim::quadruped_small::RunAnimation::update_skeleton( - &QuadrupedSmallSkeleton::default(), - (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ) - }, + (false, _, true) => anim::quadruped_small::RunAnimation::update_skeleton( + &QuadrupedSmallSkeleton::default(), + (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ), // In air (false, _, false) => anim::quadruped_small::JumpAnimation::update_skeleton( &QuadrupedSmallSkeleton::default(), @@ -1225,13 +1223,15 @@ impl FigureMgr { ) }, // Running - (true, true, false) => anim::quadruped_medium::RunAnimation::update_skeleton( - &QuadrupedMediumSkeleton::default(), - (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), - state.state_time, - &mut state_animation_rate, - skeleton_attr, - ), + (true, true, false) => { + anim::quadruped_medium::RunAnimation::update_skeleton( + &QuadrupedMediumSkeleton::default(), + (vel.0.magnitude(), ori, state.last_ori, time, state.avg_vel), + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, //Swimming (false, _, true) => anim::quadruped_medium::RunAnimation::update_skeleton( &QuadrupedMediumSkeleton::default(), From 03b7320b4b52a6852b5da0760f95ff6e7ad35dbc Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 2 Sep 2020 02:03:14 -0400 Subject: [PATCH 18/28] general housekeeping --- ...t.ron => biped_large_central_manifest.ron} | 140 +++++------ ...t.ron => bird_medium_central_manifest.ron} | 96 ++++---- ...nifest.ron => dragon_central_manifest.ron} | 28 +-- ...anifest.ron => golem_central_manifest.ron} | 12 +- .../male/{head_upper.vox => head.vox} | 0 .../male/{head_lower.vox => neck.vox} | 0 .../male/{head_upper.vox => head.vox} | 0 .../male/{head_lower.vox => neck.vox} | 0 .../deer/female/{head_upper.vox => head.vox} | 0 .../deer/female/{head_lower.vox => neck.vox} | 0 .../deer/male/{head_upper.vox => head.vox} | 0 .../deer/male/{head_lower.vox => neck.vox} | 0 .../male/{head_upper.vox => head.vox} | 0 .../male/{head_lower.vox => neck.vox} | 0 .../grolgar/male/{head_upper.vox => head.vox} | 0 .../grolgar/male/{head_lower.vox => neck.vox} | 0 .../male/{head_upper.vox => head.vox} | 0 .../male/{head_lower.vox => neck.vox} | 0 .../lion/male/{head_upper.vox => head.vox} | 0 .../lion/male/{head_lower.vox => neck.vox} | 0 .../mouflon/male/{head_upper.vox => head.vox} | 0 .../mouflon/male/{head_lower.vox => neck.vox} | 0 .../saber/male/{head_upper.vox => head.vox} | 0 .../saber/male/{head_lower.vox => neck.vox} | 0 .../male/{head_upper.vox => head.vox} | 0 .../male/{head_lower.vox => neck.vox} | 0 .../tiger/male/{head_upper.vox => head.vox} | 0 .../tiger/male/{head_lower.vox => neck.vox} | 0 .../tuskram/male/{head_upper.vox => head.vox} | 0 .../tuskram/male/{head_lower.vox => neck.vox} | 0 .../wolf/male/{head_upper.vox => head.vox} | 0 .../wolf/male/{head_lower.vox => neck.vox} | 0 .../quadruped_medium_central_manifest.ron | 208 ++++++++-------- .../src/anim/src/quadruped_medium/alpha.rs | 16 +- voxygen/src/anim/src/quadruped_medium/idle.rs | 20 +- voxygen/src/anim/src/quadruped_medium/jump.rs | 16 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 28 +-- voxygen/src/anim/src/quadruped_medium/run.rs | 16 +- voxygen/src/anim/src/theropod/run.rs | 1 - voxygen/src/scene/figure/load.rs | 226 +++++++++--------- voxygen/src/scene/figure/mod.rs | 2 +- 41 files changed, 404 insertions(+), 405 deletions(-) rename assets/voxygen/voxel/{biped_large_center_manifest.ron => biped_large_central_manifest.ron} (60%) rename assets/voxygen/voxel/{bird_medium_center_manifest.ron => bird_medium_central_manifest.ron} (61%) rename assets/voxygen/voxel/{dragon_center_manifest.ron => dragon_central_manifest.ron} (58%) rename assets/voxygen/voxel/{golem_center_manifest.ron => golem_central_manifest.ron} (60%) rename assets/voxygen/voxel/npc/bonerattler/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/bonerattler/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/catoblepas/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/catoblepas/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/deer/female/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/deer/female/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/deer/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/deer/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/frostfang/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/frostfang/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/grolgar/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/grolgar/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/hirdrassil/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/hirdrassil/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/lion/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/lion/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/mouflon/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/mouflon/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/saber/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/saber/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/tarasque/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/tarasque/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/tiger/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/tiger/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/tuskram/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/tuskram/male/{head_lower.vox => neck.vox} (100%) rename assets/voxygen/voxel/npc/wolf/male/{head_upper.vox => head.vox} (100%) rename assets/voxygen/voxel/npc/wolf/male/{head_lower.vox => neck.vox} (100%) diff --git a/assets/voxygen/voxel/biped_large_center_manifest.ron b/assets/voxygen/voxel/biped_large_central_manifest.ron similarity index 60% rename from assets/voxygen/voxel/biped_large_center_manifest.ron rename to assets/voxygen/voxel/biped_large_central_manifest.ron index ff6e86fb2c..1be2239118 100644 --- a/assets/voxygen/voxel/biped_large_center_manifest.ron +++ b/assets/voxygen/voxel/biped_large_central_manifest.ron @@ -2,241 +2,241 @@ (Ogre, Male): ( head: ( offset: (-8.0, -6.0, -6.5), - center: ("npc.ogre.male.head"), + central: ("npc.ogre.male.head"), ), torso_upper: ( offset: (-8.0, -6.0, -8.0), - center: ("npc.ogre.male.torso_upper"), + central: ("npc.ogre.male.torso_upper"), ), torso_lower: ( offset: (-6.0, -5.5, -10.0), - center: ("npc.ogre.male.torso_lower"), + central: ("npc.ogre.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -5.5, -5.0), - center: ("npc.ogre.male.hammer"), + central: ("npc.ogre.male.hammer"), ) ), (Ogre, Female): ( head: ( offset: (-9.0, -5.5, -6.0), - center: ("npc.ogre.female..head"), + central: ("npc.ogre.female..head"), ), torso_upper: ( offset: (-6.0, -5.0, -6.0), - center: ("npc.ogre.female.torso_upper"), + central: ("npc.ogre.female.torso_upper"), ), torso_lower: ( offset: (-5.0, -4.5, -6.0), - center: ("npc.ogre.female.torso_lower"), + central: ("npc.ogre.female.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-2.5, -5.5, -5.0), - center: ("npc.ogre.female.main"), + central: ("npc.ogre.female.main"), ) ), (Cyclops, Male): ( head: ( offset: (-7.0, -7.0, -6.5), - center: ("npc.cyclops.male.head"), + central: ("npc.cyclops.male.head"), ), torso_upper: ( offset: (-8.0, -6.0, -6.0), - center: ("npc.cyclops.male.torso_upper"), + central: ("npc.cyclops.male.torso_upper"), ), torso_lower: ( offset: (-6.0, -5.5, -12.0), - center: ("npc.cyclops.male.torso_lower"), + central: ("npc.cyclops.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.cyclops.male.hammer"), + central: ("npc.cyclops.male.hammer"), ) ), (Cyclops, Female): ( head: ( offset: (-7.0, -7.0, -6.5), - center: ("npc.cyclops.male.head"), + central: ("npc.cyclops.male.head"), ), torso_upper: ( offset: (-8.0, -6.0, -6.0), - center: ("npc.cyclops.male.torso_upper"), + central: ("npc.cyclops.male.torso_upper"), ), torso_lower: ( offset: (-6.0, -5.5, -12.0), - center: ("npc.cyclops.male.torso_lower"), + central: ("npc.cyclops.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.cyclops.female.hammer"), + central: ("npc.cyclops.female.hammer"), ) ), (Wendigo, Male): ( head: ( offset: (-15.0, -4.5, -9.5), - center: ("npc.wendigo.male.head"), + central: ("npc.wendigo.male.head"), ), torso_upper: ( offset: (-6.0, -5.5, -6.5), - center: ("npc.wendigo.male.torso_upper"), + central: ("npc.wendigo.male.torso_upper"), ), torso_lower: ( offset: (-4.0, -2.0, -4.0), - center: ("npc.wendigo.male.torso_lower"), + central: ("npc.wendigo.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.wendigo.male.hammer"), + central: ("npc.wendigo.male.hammer"), ) ), (Wendigo, Female): ( head: ( offset: (-15.0, -4.5, -9.5), - center: ("npc.wendigo.male.head"), + central: ("npc.wendigo.male.head"), ), torso_upper: ( offset: (-6.0, -5.5, -6.5), - center: ("npc.wendigo.male.torso_upper"), + central: ("npc.wendigo.male.torso_upper"), ), torso_lower: ( offset: (-4.0, -2.0, -4.0), - center: ("npc.wendigo.male.torso_lower"), + central: ("npc.wendigo.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.wendigo.male.hammer"), + central: ("npc.wendigo.male.hammer"), ) ), (Troll, Male): ( head: ( offset: (-8.0, -8.5, -9.0), - center: ("npc.troll.male.head"), + central: ("npc.troll.male.head"), ), torso_upper: ( offset: (-8.0, -7.5, -11.0), - center: ("npc.troll.male.torso_upper"), + central: ("npc.troll.male.torso_upper"), ), torso_lower: ( offset: (-6.0, -3.5, -5.0), - center: ("npc.troll.male.torso_lower"), + central: ("npc.troll.male.torso_lower"), ), jaw: ( offset: (-4.0, 0.0, -4.5), - center: ("npc.troll.male.jaw"), + central: ("npc.troll.male.jaw"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.troll.male.hammer"), + central: ("npc.troll.male.hammer"), ) ), (Troll, Female): ( head: ( offset: (-8.0, -8.5, -9.0), - center: ("npc.troll.male.head"), + central: ("npc.troll.male.head"), ), torso_upper: ( offset: (-8.0, -7.5, -11.0), - center: ("npc.troll.male.torso_upper"), + central: ("npc.troll.male.torso_upper"), ), torso_lower: ( offset: (-6.0, -3.5, -5.0), - center: ("npc.troll.male.torso_lower"), + central: ("npc.troll.male.torso_lower"), ), jaw: ( offset: (-4.0, 0.0, -4.5), - center: ("npc.troll.male.jaw"), + central: ("npc.troll.male.jaw"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.troll.female.hammer"), + central: ("npc.troll.female.hammer"), ) ), @@ -244,62 +244,62 @@ (Dullahan, Male): ( head: ( offset: (-8.0, -5.0, -6.0), - center: ("armor.empty"), + central: ("armor.empty"), ), torso_upper: ( offset: (-9.0, -7.5, -7.0), - center: ("npc.dullahan.male.torso_upper"), + central: ("npc.dullahan.male.torso_upper"), ), torso_lower: ( offset: (-8.0, -6.0, -9.0), - center: ("npc.dullahan.male.torso_lower"), + central: ("npc.dullahan.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.cyclops.male.hammer"), + central: ("npc.cyclops.male.hammer"), ) ), (Dullahan, Female): ( head: ( offset: (-8.0, -5.0, -6.0), - center: ("armor.empty"), + central: ("armor.empty"), ), torso_upper: ( offset: (-9.0, -7.5, -7.0), - center: ("npc.dullahan.male.torso_upper"), + central: ("npc.dullahan.male.torso_upper"), ), torso_lower: ( offset: (-8.0, -6.0, -9.0), - center: ("npc.dullahan.male.torso_lower"), + central: ("npc.dullahan.male.torso_lower"), ), jaw: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), tail: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), second: ( offset: (0.0, 0.0, 0.0), - center: ("armor.empty"), + central: ("armor.empty"), ), main: ( offset: (-5.0, -6.5, -4.0), - center: ("npc.cyclops.male.hammer"), + central: ("npc.cyclops.male.hammer"), ) ), }) diff --git a/assets/voxygen/voxel/bird_medium_center_manifest.ron b/assets/voxygen/voxel/bird_medium_central_manifest.ron similarity index 61% rename from assets/voxygen/voxel/bird_medium_center_manifest.ron rename to assets/voxygen/voxel/bird_medium_central_manifest.ron index 6657154280..87bf41bdf7 100644 --- a/assets/voxygen/voxel/bird_medium_center_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_central_manifest.ron @@ -2,225 +2,225 @@ (Duck, Male): ( head: ( offset: (-1.5, -2.0, -1.5), - center: ("npc.duck.male.head"), + central: ("npc.duck.male.head"), ), torso: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.duck.male.torso"), + central: ("npc.duck.male.torso"), ), tail: ( offset: (-1.5, -0.5, -2.5), - center: ("npc.duck.male.tail"), + central: ("npc.duck.male.tail"), ) ), (Duck, Female): ( head: ( offset: (-1.5, -2.0, -1.5), - center: ("npc.duck.female.head"), + central: ("npc.duck.female.head"), ), torso: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.duck.female.torso"), + central: ("npc.duck.female.torso"), ), tail: ( offset: (-1.5, -0.5, -2.5), - center: ("npc.duck.female.tail"), + central: ("npc.duck.female.tail"), ) ), (Chicken, Male): ( head: ( offset: (-1.5, -2.0, -3.5), - center: ("npc.chicken.male.head"), + central: ("npc.chicken.male.head"), ), torso: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.chicken.male.torso"), + central: ("npc.chicken.male.torso"), ), tail: ( offset: (-1.5, -2.5, -3.5), - center: ("npc.chicken.male.tail"), + central: ("npc.chicken.male.tail"), ) ), (Chicken, Female): ( head: ( offset: (-1.5, -2.0, -2.5), - center: ("npc.chicken.female.head"), + central: ("npc.chicken.female.head"), ), torso: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.chicken.female.torso"), + central: ("npc.chicken.female.torso"), ), tail: ( offset: (-1.5, -0.5, -2.5), - center: ("npc.chicken.female.tail"), + central: ("npc.chicken.female.tail"), ) ), (Goose, Male): ( head: ( offset: (-2.0, -3.5, -0.0), - center: ("npc.goose.male.head"), + central: ("npc.goose.male.head"), ), torso: ( offset: (-3.5, -4.5, -3.0), - center: ("npc.goose.male.torso"), + central: ("npc.goose.male.torso"), ), tail: ( offset: (-2.0, -1.0, -3.5), - center: ("npc.goose.male.tail"), + central: ("npc.goose.male.tail"), ) ), (Goose, Female): ( head: ( offset: (-2.0, -3.5, -0.0), - center: ("npc.goose.male.head"), + central: ("npc.goose.male.head"), ), torso: ( offset: (-3.5, -4.5, -3.0), - center: ("npc.goose.male.torso"), + central: ("npc.goose.male.torso"), ), tail: ( offset: (-2.0, -1.0, -3.5), - center: ("npc.goose.male.tail"), + central: ("npc.goose.male.tail"), ) ), (Peacock, Male): ( head: ( offset: (-2.0, -1.5, -0.0), - center: ("npc.peacock.male.head"), + central: ("npc.peacock.male.head"), ), torso: ( offset: (-2.5, -5.5, -4.5), - center: ("npc.peacock.male.torso"), + central: ("npc.peacock.male.torso"), ), tail: ( offset: (-3.0, -1.5, -5.0), - center: ("npc.peacock.male.tail"), + central: ("npc.peacock.male.tail"), ) ), (Peacock, Female): ( head: ( offset: (-2.0, -1.5, -0.0), - center: ("npc.peacock.female.head"), + central: ("npc.peacock.female.head"), ), torso: ( offset: (-2.5, -5.5, -4.5), - center: ("npc.peacock.female.torso"), + central: ("npc.peacock.female.torso"), ), tail: ( offset: (-3.0, -1.5, -5.0), - center: ("npc.peacock.female.tail"), + central: ("npc.peacock.female.tail"), ) ), (Eagle, Male): ( head: ( offset: (-2.0, -2.0, -3.5), - center: ("npc.eagle.male.head"), + central: ("npc.eagle.male.head"), ), torso: ( offset: (-3.0, -4.5, -4.5), - center: ("npc.eagle.male.torso"), + central: ("npc.eagle.male.torso"), ), tail: ( offset: (-2.0, -3.5, -3.5), - center: ("npc.eagle.male.tail"), + central: ("npc.eagle.male.tail"), ) ), (Eagle, Female): ( head: ( offset: (-2.0, -2.0, -3.5), - center: ("npc.eagle.male.head"), + central: ("npc.eagle.male.head"), ), torso: ( offset: (-3.0, -4.5, -4.5), - center: ("npc.eagle.male.torso"), + central: ("npc.eagle.male.torso"), ), tail: ( offset: (-2.0, -3.5, -3.5), - center: ("npc.eagle.male.tail"), + central: ("npc.eagle.male.tail"), ) ), (Snowyowl, Male): ( head: ( offset: (-3.5, -4.5, -4.0), - center: ("npc.snowyowl.male.head"), + central: ("npc.snowyowl.male.head"), ), torso: ( offset: (-3.5, -5.0, -3.0), - center: ("npc.snowyowl.male.torso"), + central: ("npc.snowyowl.male.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.snowyowl.male.tail"), + central: ("npc.snowyowl.male.tail"), ) ), (Snowyowl, Female): ( head: ( offset: (-3.5, -4.5, -4.0), - center: ("npc.snowyowl.male.head"), + central: ("npc.snowyowl.male.head"), ), torso: ( offset: (-3.5, -5.0, -3.0), - center: ("npc.snowyowl.male.torso"), + central: ("npc.snowyowl.male.torso"), ), tail: ( offset: (-2.5, -3.0, -2.0), - center: ("npc.snowyowl.male.tail"), + central: ("npc.snowyowl.male.tail"), ) ), (Parrot, Male): ( head: ( offset: (-1.5, -1.5, -2.5), - center: ("npc.parrot.male.head"), + central: ("npc.parrot.male.head"), ), torso: ( offset: (-1.5, -3.5, -3.5), - center: ("npc.parrot.male.torso"), + central: ("npc.parrot.male.torso"), ), tail: ( offset: (-1.5, -4.5, -1.5), - center: ("npc.parrot.male.tail"), + central: ("npc.parrot.male.tail"), ) ), (Parrot, Female): ( head: ( offset: (-1.5, -1.5, -2.5), - center: ("npc.parrot.male.head"), + central: ("npc.parrot.male.head"), ), torso: ( offset: (-1.5, -3.5, -3.5), - center: ("npc.parrot.male.torso"), + central: ("npc.parrot.male.torso"), ), tail: ( offset: (-1.5, -4.5, -1.5), - center: ("npc.parrot.male.tail"), + central: ("npc.parrot.male.tail"), ) ), (Cockatrice, Male): ( head: ( offset: (-2.5, 0.0, -8.0), - center: ("npc.cockatrice.male.head"), + central: ("npc.cockatrice.male.head"), ), torso: ( offset: (-3.5, -6.5, -7.5), - center: ("npc.cockatrice.male.torso"), + central: ("npc.cockatrice.male.torso"), ), tail: ( offset: (-1.5, -3.5, -4.0), - center: ("npc.cockatrice.male.tail"), + central: ("npc.cockatrice.male.tail"), ) ), (Cockatrice, Female): ( head: ( offset: (-2.5, 0.0, -8.0), - center: ("npc.cockatrice.male.head"), + central: ("npc.cockatrice.male.head"), ), torso: ( offset: (-3.5, -6.5, -7.5), - center: ("npc.cockatrice.male.torso"), + central: ("npc.cockatrice.male.torso"), ), tail: ( offset: (-1.5, -3.5, -4.0), - center: ("npc.cockatrice.male.tail"), + central: ("npc.cockatrice.male.tail"), ) ), }) \ No newline at end of file diff --git a/assets/voxygen/voxel/dragon_center_manifest.ron b/assets/voxygen/voxel/dragon_central_manifest.ron similarity index 58% rename from assets/voxygen/voxel/dragon_center_manifest.ron rename to assets/voxygen/voxel/dragon_central_manifest.ron index 317e5183b1..e19af6fc92 100644 --- a/assets/voxygen/voxel/dragon_center_manifest.ron +++ b/assets/voxygen/voxel/dragon_central_manifest.ron @@ -2,61 +2,61 @@ (Reddragon, Male): ( upper: ( offset: (-6.5, -2.0, -6.0), - center: ("npc.reddragon.male.head_upper"), + central: ("npc.reddragon.male.head_upper"), ), lower: ( offset: (-2.5, -2.0, -5.0), - center: ("npc.reddragon.male.head_lower"), + central: ("npc.reddragon.male.head_lower"), ), jaw: ( offset: (-3.5, -2.0, -1.5), - center: ("npc.reddragon.male.jaw"), + central: ("npc.reddragon.male.jaw"), ), chest_front: ( offset: (-6.5, -6.0, -7.5), - center: ("npc.reddragon.male.chest_front"), + central: ("npc.reddragon.male.chest_front"), ), chest_rear: ( offset: (-6.5, -13.0, -7.0), - center: ("npc.reddragon.male.chest_rear"), + central: ("npc.reddragon.male.chest_rear"), ), tail_front: ( offset: (-2.5, -12.0, -3.5), - center: ("npc.reddragon.male.tail_front"), + central: ("npc.reddragon.male.tail_front"), ), tail_rear: ( offset: (-3.5, -16.0, -3.0), - center: ("npc.reddragon.male.tail_rear"), + central: ("npc.reddragon.male.tail_rear"), ) ), (Reddragon, Female): ( upper: ( offset: (-6.5, -2.0, -6.0), - center: ("npc.reddragon.male.head_upper"), + central: ("npc.reddragon.male.head_upper"), ), lower: ( offset: (-2.5, -2.0, -5.0), - center: ("npc.reddragon.male.head_lower"), + central: ("npc.reddragon.male.head_lower"), ), jaw: ( offset: (-3.5, -2.0, -1.5), - center: ("npc.reddragon.male.jaw"), + central: ("npc.reddragon.male.jaw"), ), chest_front: ( offset: (-6.5, -6.0, -7.5), - center: ("npc.reddragon.male.chest_front"), + central: ("npc.reddragon.male.chest_front"), ), chest_rear: ( offset: (-6.5, -13.0, -7.0), - center: ("npc.reddragon.male.chest_rear"), + central: ("npc.reddragon.male.chest_rear"), ), tail_front: ( offset: (-2.5, -12.0, -3.5), - center: ("npc.reddragon.male.tail_front"), + central: ("npc.reddragon.male.tail_front"), ), tail_rear: ( offset: (-3.5, -16.0, -3.0), - center: ("npc.reddragon.male.tail_rear"), + central: ("npc.reddragon.male.tail_rear"), ) ), }) diff --git a/assets/voxygen/voxel/golem_center_manifest.ron b/assets/voxygen/voxel/golem_central_manifest.ron similarity index 60% rename from assets/voxygen/voxel/golem_center_manifest.ron rename to assets/voxygen/voxel/golem_central_manifest.ron index 12d3161079..c225ebdfd9 100644 --- a/assets/voxygen/voxel/golem_center_manifest.ron +++ b/assets/voxygen/voxel/golem_central_manifest.ron @@ -2,29 +2,29 @@ (StoneGolem, Male): ( head: ( offset: (-3.5, -4.0, -0.0), - center: ("npc.stonegolem.male.head"), + central: ("npc.stonegolem.male.head"), ), torso_upper: ( offset: (-10.5, -10.5, -10.5), - center: ("npc.stonegolem.male.chest_upper"), + central: ("npc.stonegolem.male.chest_upper"), ), torso_lower: ( offset: (-4.5, -4.5, -7.0), - center: ("npc.stonegolem.male.chest_lower"), + central: ("npc.stonegolem.male.chest_lower"), ), ), (StoneGolem, Female): ( head: ( offset: (-3.5, -4.0, -0.0), - center: ("npc.stonegolem.male.head"), + central: ("npc.stonegolem.male.head"), ), torso_upper: ( offset: (-10.5, -10.5, -10.5), - center: ("npc.stonegolem.male.chest_upper"), + central: ("npc.stonegolem.male.chest_upper"), ), torso_lower: ( offset: (-4.5, -4.5, -7.0), - center: ("npc.stonegolem.male.chest_lower"), + central: ("npc.stonegolem.male.chest_lower"), ), ), }) diff --git a/assets/voxygen/voxel/npc/bonerattler/male/head_upper.vox b/assets/voxygen/voxel/npc/bonerattler/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/bonerattler/male/head_upper.vox rename to assets/voxygen/voxel/npc/bonerattler/male/head.vox diff --git a/assets/voxygen/voxel/npc/bonerattler/male/head_lower.vox b/assets/voxygen/voxel/npc/bonerattler/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/bonerattler/male/head_lower.vox rename to assets/voxygen/voxel/npc/bonerattler/male/neck.vox diff --git a/assets/voxygen/voxel/npc/catoblepas/male/head_upper.vox b/assets/voxygen/voxel/npc/catoblepas/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/catoblepas/male/head_upper.vox rename to assets/voxygen/voxel/npc/catoblepas/male/head.vox diff --git a/assets/voxygen/voxel/npc/catoblepas/male/head_lower.vox b/assets/voxygen/voxel/npc/catoblepas/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/catoblepas/male/head_lower.vox rename to assets/voxygen/voxel/npc/catoblepas/male/neck.vox diff --git a/assets/voxygen/voxel/npc/deer/female/head_upper.vox b/assets/voxygen/voxel/npc/deer/female/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/deer/female/head_upper.vox rename to assets/voxygen/voxel/npc/deer/female/head.vox diff --git a/assets/voxygen/voxel/npc/deer/female/head_lower.vox b/assets/voxygen/voxel/npc/deer/female/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/deer/female/head_lower.vox rename to assets/voxygen/voxel/npc/deer/female/neck.vox diff --git a/assets/voxygen/voxel/npc/deer/male/head_upper.vox b/assets/voxygen/voxel/npc/deer/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/deer/male/head_upper.vox rename to assets/voxygen/voxel/npc/deer/male/head.vox diff --git a/assets/voxygen/voxel/npc/deer/male/head_lower.vox b/assets/voxygen/voxel/npc/deer/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/deer/male/head_lower.vox rename to assets/voxygen/voxel/npc/deer/male/neck.vox diff --git a/assets/voxygen/voxel/npc/frostfang/male/head_upper.vox b/assets/voxygen/voxel/npc/frostfang/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/frostfang/male/head_upper.vox rename to assets/voxygen/voxel/npc/frostfang/male/head.vox diff --git a/assets/voxygen/voxel/npc/frostfang/male/head_lower.vox b/assets/voxygen/voxel/npc/frostfang/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/frostfang/male/head_lower.vox rename to assets/voxygen/voxel/npc/frostfang/male/neck.vox diff --git a/assets/voxygen/voxel/npc/grolgar/male/head_upper.vox b/assets/voxygen/voxel/npc/grolgar/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/grolgar/male/head_upper.vox rename to assets/voxygen/voxel/npc/grolgar/male/head.vox diff --git a/assets/voxygen/voxel/npc/grolgar/male/head_lower.vox b/assets/voxygen/voxel/npc/grolgar/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/grolgar/male/head_lower.vox rename to assets/voxygen/voxel/npc/grolgar/male/neck.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox b/assets/voxygen/voxel/npc/hirdrassil/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/head_upper.vox rename to assets/voxygen/voxel/npc/hirdrassil/male/head.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox b/assets/voxygen/voxel/npc/hirdrassil/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/head_lower.vox rename to assets/voxygen/voxel/npc/hirdrassil/male/neck.vox diff --git a/assets/voxygen/voxel/npc/lion/male/head_upper.vox b/assets/voxygen/voxel/npc/lion/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/lion/male/head_upper.vox rename to assets/voxygen/voxel/npc/lion/male/head.vox diff --git a/assets/voxygen/voxel/npc/lion/male/head_lower.vox b/assets/voxygen/voxel/npc/lion/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/lion/male/head_lower.vox rename to assets/voxygen/voxel/npc/lion/male/neck.vox diff --git a/assets/voxygen/voxel/npc/mouflon/male/head_upper.vox b/assets/voxygen/voxel/npc/mouflon/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/mouflon/male/head_upper.vox rename to assets/voxygen/voxel/npc/mouflon/male/head.vox diff --git a/assets/voxygen/voxel/npc/mouflon/male/head_lower.vox b/assets/voxygen/voxel/npc/mouflon/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/mouflon/male/head_lower.vox rename to assets/voxygen/voxel/npc/mouflon/male/neck.vox diff --git a/assets/voxygen/voxel/npc/saber/male/head_upper.vox b/assets/voxygen/voxel/npc/saber/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/saber/male/head_upper.vox rename to assets/voxygen/voxel/npc/saber/male/head.vox diff --git a/assets/voxygen/voxel/npc/saber/male/head_lower.vox b/assets/voxygen/voxel/npc/saber/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/saber/male/head_lower.vox rename to assets/voxygen/voxel/npc/saber/male/neck.vox diff --git a/assets/voxygen/voxel/npc/tarasque/male/head_upper.vox b/assets/voxygen/voxel/npc/tarasque/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/tarasque/male/head_upper.vox rename to assets/voxygen/voxel/npc/tarasque/male/head.vox diff --git a/assets/voxygen/voxel/npc/tarasque/male/head_lower.vox b/assets/voxygen/voxel/npc/tarasque/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/tarasque/male/head_lower.vox rename to assets/voxygen/voxel/npc/tarasque/male/neck.vox diff --git a/assets/voxygen/voxel/npc/tiger/male/head_upper.vox b/assets/voxygen/voxel/npc/tiger/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/tiger/male/head_upper.vox rename to assets/voxygen/voxel/npc/tiger/male/head.vox diff --git a/assets/voxygen/voxel/npc/tiger/male/head_lower.vox b/assets/voxygen/voxel/npc/tiger/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/tiger/male/head_lower.vox rename to assets/voxygen/voxel/npc/tiger/male/neck.vox diff --git a/assets/voxygen/voxel/npc/tuskram/male/head_upper.vox b/assets/voxygen/voxel/npc/tuskram/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/tuskram/male/head_upper.vox rename to assets/voxygen/voxel/npc/tuskram/male/head.vox diff --git a/assets/voxygen/voxel/npc/tuskram/male/head_lower.vox b/assets/voxygen/voxel/npc/tuskram/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/tuskram/male/head_lower.vox rename to assets/voxygen/voxel/npc/tuskram/male/neck.vox diff --git a/assets/voxygen/voxel/npc/wolf/male/head_upper.vox b/assets/voxygen/voxel/npc/wolf/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/wolf/male/head_upper.vox rename to assets/voxygen/voxel/npc/wolf/male/head.vox diff --git a/assets/voxygen/voxel/npc/wolf/male/head_lower.vox b/assets/voxygen/voxel/npc/wolf/male/neck.vox similarity index 100% rename from assets/voxygen/voxel/npc/wolf/male/head_lower.vox rename to assets/voxygen/voxel/npc/wolf/male/neck.vox diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index e3baa21581..ad5263a0f1 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -1,12 +1,12 @@ ({ (Grolgar, Male): ( - upper: ( + head: ( offset: (-7.0, 0.0, -9.0), - central: ("npc.grolgar.male.head_upper"), + central: ("npc.grolgar.male.head"), ), - lower: ( + neck: ( offset: (-6.0, -2.0, -8.0), - central: ("npc.grolgar.male.head_lower"), + central: ("npc.grolgar.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.5), @@ -30,13 +30,13 @@ ), ), (Grolgar, Female): ( - upper: ( + head: ( offset: (-7.0, 0.0, -9.0), - central: ("npc.grolgar.male.head_upper"), + central: ("npc.grolgar.male.head"), ), - lower: ( + neck: ( offset: (-6.0, -2.0, -8.0), - central: ("npc.grolgar.male.head_lower"), + central: ("npc.grolgar.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.5), @@ -60,13 +60,13 @@ ), ), (Saber, Male): ( - upper: ( + head: ( offset: (-5.5, 0.0, -6.5), - central: ("npc.saber.male.head_upper"), + central: ("npc.saber.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -5.5, -4.0), - central: ("npc.saber.male.head_lower"), + central: ("npc.saber.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.5), @@ -90,13 +90,13 @@ ), ), (Saber, Female): ( - upper: ( + head: ( offset: (-5.5, 0.0, -6.5), - central: ("npc.saber.male.head_upper"), + central: ("npc.saber.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -5.5, -4.0), - central: ("npc.saber.male.head_lower"), + central: ("npc.saber.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.5), @@ -120,13 +120,13 @@ ), ), (Tuskram, Male): ( - upper: ( + head: ( offset: (-10.0, -6.0, -6.5), - central: ("npc.tuskram.male.head_upper"), + central: ("npc.tuskram.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -3.5), - central: ("npc.tuskram.male.head_lower"), + central: ("npc.tuskram.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.5), @@ -150,13 +150,13 @@ ), ), (Tuskram, Female): ( - upper: ( + head: ( offset: (-10.0, -6.0, -6.5), - central: ("npc.tuskram.male.head_upper"), + central: ("npc.tuskram.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -3.5), - central: ("npc.tuskram.male.head_lower"), + central: ("npc.tuskram.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.5), @@ -180,13 +180,13 @@ ), ), (Lion, Male): ( - upper: ( + head: ( offset: (-4.5, 0.0, -4.5), - central: ("npc.lion.male.head_upper"), + central: ("npc.lion.male.head"), ), - lower: ( + neck: ( offset: (-7.5, -5.5, -8.5), - central: ("npc.lion.male.head_lower"), + central: ("npc.lion.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.0), @@ -210,13 +210,13 @@ ), ), (Lion, Female): ( - upper: ( + head: ( offset: (-4.5, 0.0, -4.5), - central: ("npc.lion.male.head_upper"), + central: ("npc.lion.male.head"), ), - lower: ( + neck: ( offset: (-7.5, -5.5, -8.5), - central: ("npc.lion.male.head_lower"), + central: ("npc.lion.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.0), @@ -240,13 +240,13 @@ ), ), (Tarasque, Male): ( - upper: ( + head: ( offset: (-10.0, 0.0, -10.0), - central: ("npc.tarasque.male.head_upper"), + central: ("npc.tarasque.male.head"), ), - lower: ( + neck: ( offset: (-5.0, -3.0, -4.5), - central: ("npc.tarasque.male.head_lower"), + central: ("npc.tarasque.male.neck"), ), jaw: ( offset: (-5.0, 0.0, -0.0), @@ -270,13 +270,13 @@ ), ), (Tarasque, Female): ( - upper: ( + head: ( offset: (-10.0, 0.0, -10.0), - central: ("npc.tarasque.male.head_upper"), + central: ("npc.tarasque.male.head"), ), - lower: ( + neck: ( offset: (-5.0, -3.0, -4.5), - central: ("npc.tarasque.male.head_lower"), + central: ("npc.tarasque.male.neck"), ), jaw: ( offset: (-5.0, 0.0, -0.0), @@ -300,13 +300,13 @@ ), ), (Tiger, Male): ( - upper: ( + head: ( offset: (-5.5, 0.0, -5.0), - central: ("npc.tiger.male.head_upper"), + central: ("npc.tiger.male.head"), ), - lower: ( + neck: ( offset: (-4.5, -2.0, -5.0), - central: ("npc.tiger.male.head_lower"), + central: ("npc.tiger.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.0), @@ -330,13 +330,13 @@ ), ), (Tiger, Female): ( - upper: ( + head: ( offset: (-5.5, 0.0, -5.0), - central: ("npc.tiger.male.head_upper"), + central: ("npc.tiger.male.head"), ), - lower: ( + neck: ( offset: (-4.5, -2.0, -5.0), - central: ("npc.tiger.male.head_lower"), + central: ("npc.tiger.male.neck"), ), jaw: ( offset: (-2.5, 0.0, -1.0), @@ -360,13 +360,13 @@ ), ), (Wolf, Male): ( - upper: ( + head: ( offset: (-5.0, 0.0, -3.5), - central: ("npc.wolf.male.head_upper"), + central: ("npc.wolf.male.head"), ), - lower: ( + neck: ( offset: (-5.0, -4.5, -5.0), - central: ("npc.wolf.male.head_lower"), + central: ("npc.wolf.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.0), @@ -390,13 +390,13 @@ ), ), (Wolf, Female): ( - upper: ( + head: ( offset: (-5.0, 0.0, -3.5), - central: ("npc.wolf.male.head_upper"), + central: ("npc.wolf.male.head"), ), - lower: ( + neck: ( offset: (-5.0, -4.5, -5.0), - central: ("npc.wolf.male.head_lower"), + central: ("npc.wolf.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.0), @@ -420,13 +420,13 @@ ), ), (Frostfang, Male): ( - upper: ( + head: ( offset: (-4.0, 0.0, -4.5), - central: ("npc.frostfang.male.head_upper"), + central: ("npc.frostfang.male.head"), ), - lower: ( + neck: ( offset: (-3.0, -2.0, -4.0), - central: ("npc.frostfang.male.head_lower"), + central: ("npc.frostfang.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -3.5), @@ -450,13 +450,13 @@ ), ), (Frostfang, Female): ( - upper: ( + head: ( offset: (-4.0, 0.0, -4.5), - central: ("npc.frostfang.male.head_upper"), + central: ("npc.frostfang.male.head"), ), - lower: ( + neck: ( offset: (-3.0, -2.0, -4.0), - central: ("npc.frostfang.male.head_lower"), + central: ("npc.frostfang.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -3.5), @@ -480,13 +480,13 @@ ), ), (Mouflon, Male): ( - upper: ( + head: ( offset: (-7.0, 0.0, -4.5), - central: ("npc.mouflon.male.head_upper"), + central: ("npc.mouflon.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -4.5), - central: ("npc.mouflon.male.head_lower"), + central: ("npc.mouflon.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.0), @@ -510,13 +510,13 @@ ), ), (Mouflon, Female): ( - upper: ( + head: ( offset: (-7.0, 0.0, -4.5), - central: ("npc.mouflon.male.head_upper"), + central: ("npc.mouflon.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -4.5), - central: ("npc.mouflon.male.head_lower"), + central: ("npc.mouflon.male.neck"), ), jaw: ( offset: (-2.0, 0.0, -1.0), @@ -540,13 +540,13 @@ ), ), (Catoblepas, Male): ( - upper: ( + head: ( offset: (-13.0, 0.0, -4.5), - central: ("npc.catoblepas.male.head_upper"), + central: ("npc.catoblepas.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -10.0, -12.0), - central: ("npc.catoblepas.male.head_lower"), + central: ("npc.catoblepas.male.neck"), ), jaw: ( offset: (-4.0, 0.0, -3.0), @@ -570,13 +570,13 @@ ), ), (Catoblepas, Female): ( - upper: ( + head: ( offset: (-13.0, 0.0, -4.5), - central: ("npc.catoblepas.male.head_upper"), + central: ("npc.catoblepas.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -10.0, -12.0), - central: ("npc.catoblepas.male.head_lower"), + central: ("npc.catoblepas.male.neck"), ), jaw: ( offset: (-4.0, 0.0, -3.0), @@ -600,13 +600,13 @@ ), ), (Bonerattler, Male): ( - upper: ( + head: ( offset: (-4.5, 0.0, -4.5), - central: ("npc.bonerattler.male.head_upper"), + central: ("npc.bonerattler.male.head"), ), - lower: ( + neck: ( offset: (-4.5, -2.0, -5.0), - central: ("npc.bonerattler.male.head_lower"), + central: ("npc.bonerattler.male.neck"), ), jaw: ( offset: (-3.5, 0.0, -2.0), @@ -630,13 +630,13 @@ ), ), (Bonerattler, Female): ( - upper: ( + head: ( offset: (-4.5, 0.0, -4.5), - central: ("npc.bonerattler.male.head_upper"), + central: ("npc.bonerattler.male.head"), ), - lower: ( + neck: ( offset: (-4.5, -2.0, -5.0), - central: ("npc.bonerattler.male.head_lower"), + central: ("npc.bonerattler.male.neck"), ), jaw: ( offset: (-3.5, 0.0, -2.0), @@ -660,13 +660,13 @@ ), ), (Deer, Male): ( - upper: ( + head: ( offset: (-6.0, -5.0, 0.0), - central: ("npc.deer.male.head_upper"), + central: ("npc.deer.male.head"), ), - lower: ( + neck: ( offset: (-3.0, -3.5, -4.0), - central: ("npc.deer.male.head_lower"), + central: ("npc.deer.male.neck"), ), jaw: ( offset: (-1.0, 0.0, -0.5), @@ -690,13 +690,13 @@ ), ), (Deer, Female): ( - upper: ( + head: ( offset: (-6.0, -3.0, 0.0), - central: ("npc.deer.female.head_upper"), + central: ("npc.deer.female.head"), ), - lower: ( + neck: ( offset: (-3.0, -3.5, -4.0), - central: ("npc.deer.female.head_lower"), + central: ("npc.deer.female.neck"), ), jaw: ( offset: (-1.0, 0.0, -0.5), @@ -720,13 +720,13 @@ ), ), (Hirdrassil, Male): ( - upper: ( + head: ( offset: (-9.0, -12.0, 0.0), - central: ("npc.hirdrassil.male.head_upper"), + central: ("npc.hirdrassil.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -6.0), - central: ("npc.hirdrassil.male.head_lower"), + central: ("npc.hirdrassil.male.neck"), ), jaw: ( offset: (-1.0, 0.0, -7.0), @@ -750,13 +750,13 @@ ), ), (Hirdrassil, Female): ( - upper: ( + head: ( offset: (-9.0, -12.0, 0.0), - central: ("npc.hirdrassil.male.head_upper"), + central: ("npc.hirdrassil.male.head"), ), - lower: ( + neck: ( offset: (-4.0, -4.0, -6.0), - central: ("npc.hirdrassil.male.head_lower"), + central: ("npc.hirdrassil.male.neck"), ), jaw: ( offset: (-1.0, 0.0, -7.0), diff --git a/voxygen/src/anim/src/quadruped_medium/alpha.rs b/voxygen/src/anim/src/quadruped_medium/alpha.rs index d323e9ecfe..83ef3ff1da 100644 --- a/voxygen/src/anim/src/quadruped_medium/alpha.rs +++ b/voxygen/src/anim/src/quadruped_medium/alpha.rs @@ -32,16 +32,16 @@ impl Animation for AlphaAnimation { .sqrt()) * ((anim_time as f32 * 4.0 + PI * 0.5).sin()); - next.head_upper.position = - Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = + next.head.position = + Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_y(short * -0.2) * Quaternion::rotation_x(0.1 + short * 0.2); - next.head_upper.scale = Vec3::one(); + next.head.scale = Vec3::one(); - next.head_lower.position = - Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head_lower.scale = Vec3::one() * 1.02; + next.neck.position = + Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.neck.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.orientation = Quaternion::rotation_x(-0.3 + quick * 0.4); diff --git a/voxygen/src/anim/src/quadruped_medium/idle.rs b/voxygen/src/anim/src/quadruped_medium/idle.rs index 226f42951f..3285ba2bcb 100644 --- a/voxygen/src/anim/src/quadruped_medium/idle.rs +++ b/voxygen/src/anim/src/quadruped_medium/idle.rs @@ -51,22 +51,22 @@ impl Animation for IdleAnimation { * 0.125, ); - next.head_upper.position = Vec3::new( + next.head.position = Vec3::new( 0.0, - skeleton_attr.head_upper.0, - skeleton_attr.head_upper.1 + slower * 0.2, + skeleton_attr.head.0, + skeleton_attr.head.1 + slower * 0.2, ); - next.head_upper.orientation = + next.head.orientation = Quaternion::rotation_z(0.3 * look.x) * Quaternion::rotation_x(0.3 * look.y); - next.head_upper.scale = Vec3::one(); + next.head.scale = Vec3::one(); - next.head_lower.position = Vec3::new( + next.neck.position = Vec3::new( 0.0, - skeleton_attr.head_lower.0, - skeleton_attr.head_lower.1 + slower * 0.1, + skeleton_attr.neck.0, + skeleton_attr.neck.1 + slower * 0.1, ); - next.head_lower.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); - next.head_lower.scale = Vec3::one() * 1.02; + next.neck.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.neck.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new( 0.0, diff --git a/voxygen/src/anim/src/quadruped_medium/jump.rs b/voxygen/src/anim/src/quadruped_medium/jump.rs index 5d70d11b3c..8dd0df60e0 100644 --- a/voxygen/src/anim/src/quadruped_medium/jump.rs +++ b/voxygen/src/anim/src/quadruped_medium/jump.rs @@ -22,15 +22,15 @@ impl Animation for JumpAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - next.head_upper.position = - Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = Quaternion::rotation_z(0.4) * Quaternion::rotation_x(0.3); - next.head_upper.scale = Vec3::one(); + next.head.position = + Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_z(0.4) * Quaternion::rotation_x(0.3); + next.head.scale = Vec3::one(); - next.head_lower.position = - Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(0.2) * Quaternion::rotation_x(0.3); - next.head_lower.scale = Vec3::one() * 1.02; + next.neck.position = + Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(0.2) * Quaternion::rotation_x(0.3); + next.neck.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.orientation = Quaternion::rotation_x(-0.4); diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 2fb77232a1..e77e2d3f8f 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -15,8 +15,8 @@ use core::convert::TryFrom; pub type Body = comp::quadruped_medium::Body; skeleton_impls!(struct QuadrupedMediumSkeleton { - + head_upper, - + head_lower, + + head, + + neck, + jaw, + tail, + torso_front, @@ -48,21 +48,21 @@ impl Skeleton for QuadrupedMediumSkeleton { ) -> Vec3 { let torso_front_mat = base_mat * Mat4::::from(self.torso_front); let torso_back_mat = torso_front_mat * Mat4::::from(self.torso_back); - let head_lower_mat = torso_front_mat * Mat4::::from(self.head_lower); + let neck_mat = torso_front_mat * Mat4::::from(self.neck); let leg_fl_mat = torso_front_mat * Mat4::::from(self.leg_fl); let leg_fr_mat = torso_front_mat * Mat4::::from(self.leg_fr); let leg_bl_mat = torso_back_mat * Mat4::::from(self.leg_bl); let leg_br_mat = torso_back_mat * Mat4::::from(self.leg_br); - let head_upper_mat = head_lower_mat * Mat4::::from(self.head_upper); + let head_mat = neck_mat * Mat4::::from(self.head); *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ - make_bone(head_upper_mat), - make_bone(head_lower_mat), - make_bone(head_upper_mat * Mat4::::from(self.jaw)), + make_bone(head_mat), + make_bone(neck_mat), + make_bone(head_mat * Mat4::::from(self.jaw)), make_bone(torso_back_mat * Mat4::::from(self.tail)), make_bone(torso_front_mat), make_bone(torso_back_mat), - make_bone(head_upper_mat * Mat4::::from(self.ears)), + make_bone(head_mat * Mat4::::from(self.ears)), make_bone(leg_fl_mat), make_bone(leg_fr_mat), make_bone(leg_bl_mat), @@ -77,8 +77,8 @@ impl Skeleton for QuadrupedMediumSkeleton { } pub struct SkeletonAttr { - head_upper: (f32, f32), - head_lower: (f32, f32), + head: (f32, f32), + neck: (f32, f32), jaw: (f32, f32), tail: (f32, f32), torso_back: (f32, f32), @@ -109,8 +109,8 @@ impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { impl Default for SkeletonAttr { fn default() -> Self { Self { - head_upper: (0.0, 0.0), - head_lower: (0.0, 0.0), + head: (0.0, 0.0), + neck: (0.0, 0.0), jaw: (0.0, 0.0), tail: (0.0, 0.0), torso_back: (0.0, 0.0), @@ -133,7 +133,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { fn from(body: &'a Body) -> Self { use comp::quadruped_medium::{BodyType::*, Species::*}; Self { - head_upper: match (body.species, body.body_type) { + head: match (body.species, body.body_type) { (Grolgar, _) => (0.0, -1.0), (Saber, _) => (0.0, -3.0), (Tuskram, _) => (0.0, 1.0), @@ -149,7 +149,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Deer, Female) => (0.5, 3.5), (Hirdrassil, _) => (0.0, 5.0), }, - head_lower: match (body.species, body.body_type) { + neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), (Saber, _) => (1.0, 0.0), (Tuskram, _) => (1.0, 1.0), diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index eac5d982fd..935755d239 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -99,21 +99,21 @@ impl Animation for RunAnimation { let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); //Gallop - next.head_upper.position = - Vec3::new(0.0, skeleton_attr.head_upper.0, skeleton_attr.head_upper.1); - next.head_upper.orientation = Quaternion::rotation_x( + next.head.position = + Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.orientation = Quaternion::rotation_x( look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1, ) * Quaternion::rotation_z( look.x * 0.3 / ((canceler).max(0.5)) + tilt * -1.2, ) * Quaternion::rotation_y(tilt * 0.8); - next.head_upper.scale = Vec3::one(); + next.head.scale = Vec3::one(); - next.head_lower.position = - Vec3::new(0.0, skeleton_attr.head_lower.0, skeleton_attr.head_lower.1); - next.head_lower.orientation = Quaternion::rotation_z(tilt * -0.8) + next.neck.position = + Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.orientation = Quaternion::rotation_z(tilt * -0.8) * Quaternion::rotation_x(amplitude * short * -0.05) * Quaternion::rotation_y(tilt * 0.3); - next.head_lower.scale = Vec3::one() * 1.02; + next.neck.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); next.jaw.orientation = Quaternion::rotation_x(0.0); diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index a0f4868a26..4187b28149 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -41,7 +41,6 @@ impl Animation for RunAnimation { 0.9 * (1.0 * 1.0) }; - let speedadjust = if speed < 5.0 { 0.0 } else { speed / 25.0 }; let short = (((1.0) / (0.72 + 0.28 diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index 09f0e40edc..f541e79c1e 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1187,8 +1187,8 @@ struct QuadrupedMediumCentralSpec(HashMap<(QMSpecies, QMBodyType), SidedQMCentra #[derive(Deserialize)] struct SidedQMCentralVoxSpec { - upper: QuadrupedMediumCentralSubSpec, - lower: QuadrupedMediumCentralSubSpec, + head: QuadrupedMediumCentralSubSpec, + neck: QuadrupedMediumCentralSubSpec, jaw: QuadrupedMediumCentralSubSpec, ears: QuadrupedMediumCentralSubSpec, torso_front: QuadrupedMediumCentralSubSpec, @@ -1228,11 +1228,11 @@ make_vox_spec!( }, |FigureKey { body, .. }, spec| { [ - Some(spec.central.asset.mesh_head_upper( + Some(spec.central.asset.mesh_head( body.species, body.body_type, )), - Some(spec.central.asset.mesh_head_lower( + Some(spec.central.asset.mesh_neck( body.species, body.body_type, )), @@ -1294,36 +1294,36 @@ make_vox_spec!( ); impl QuadrupedMediumCentralSpec { - fn mesh_head_upper(&self, species: QMSpecies, body_type: QMBodyType) -> BoneMeshes { + fn mesh_head(&self, species: QMSpecies, body_type: QMBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No upper head specification exists for the combination of {:?} and {:?}", + "No head specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let central = graceful_load_segment(&spec.upper.central.0); + let central = graceful_load_segment(&spec.head.central.0); - (central, Vec3::from(spec.upper.offset)) + (central, Vec3::from(spec.head.offset)) } - fn mesh_head_lower(&self, species: QMSpecies, body_type: QMBodyType) -> BoneMeshes { + fn mesh_neck(&self, species: QMSpecies, body_type: QMBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { error!( - "No lower head specification exists for the combination of {:?} and {:?}", + "No neck specification exists for the combination of {:?} and {:?}", species, body_type ); return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let central = graceful_load_segment(&spec.lower.central.0); + let central = graceful_load_segment(&spec.neck.central.0); - (central, Vec3::from(spec.lower.offset)) + (central, Vec3::from(spec.neck.offset)) } fn mesh_jaw(&self, species: QMSpecies, body_type: QMBodyType) -> BoneMeshes { @@ -1539,18 +1539,18 @@ impl QuadrupedMediumLateralSpec { //// #[derive(Deserialize)] -struct BirdMediumCenterSpec(HashMap<(BMSpecies, BMBodyType), SidedBMCenterVoxSpec>); +struct BirdMediumCentralSpec(HashMap<(BMSpecies, BMBodyType), SidedBMCentralVoxSpec>); #[derive(Deserialize)] -struct SidedBMCenterVoxSpec { - head: BirdMediumCenterSubSpec, - torso: BirdMediumCenterSubSpec, - tail: BirdMediumCenterSubSpec, +struct SidedBMCentralVoxSpec { + head: BirdMediumCentralSubSpec, + torso: BirdMediumCentralSubSpec, + tail: BirdMediumCentralSubSpec, } #[derive(Deserialize)] -struct BirdMediumCenterSubSpec { +struct BirdMediumCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin - center: VoxSimple, + central: VoxSimple, } #[derive(Deserialize)] @@ -1572,20 +1572,20 @@ struct BirdMediumLateralSubSpec { make_vox_spec!( bird_medium::Body, struct BirdMediumSpec { - center: BirdMediumCenterSpec = "voxygen.voxel.bird_medium_center_manifest", + central: BirdMediumCentralSpec = "voxygen.voxel.bird_medium_central_manifest", lateral: BirdMediumLateralSpec = "voxygen.voxel.bird_medium_lateral_manifest", }, |FigureKey { body, .. }, spec| { [ - Some(spec.center.asset.mesh_head( + Some(spec.central.asset.mesh_head( body.species, body.body_type, )), - Some(spec.center.asset.mesh_torso( + Some(spec.central.asset.mesh_torso( body.species, body.body_type, )), - Some(spec.center.asset.mesh_tail( + Some(spec.central.asset.mesh_tail( body.species, body.body_type, )), @@ -1618,7 +1618,7 @@ make_vox_spec!( }, ); -impl BirdMediumCenterSpec { +impl BirdMediumCentralSpec { fn mesh_head(&self, species: BMSpecies, body_type: BMBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -1630,9 +1630,9 @@ impl BirdMediumCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.head.center.0); + let central = graceful_load_segment(&spec.head.central.0); - (center, Vec3::from(spec.head.offset)) + (central, Vec3::from(spec.head.offset)) } fn mesh_torso(&self, species: BMSpecies, body_type: BMBodyType) -> BoneMeshes { @@ -1646,9 +1646,9 @@ impl BirdMediumCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.torso.center.0); + let central = graceful_load_segment(&spec.torso.central.0); - (center, Vec3::from(spec.torso.offset)) + (central, Vec3::from(spec.torso.offset)) } fn mesh_tail(&self, species: BMSpecies, body_type: BMBodyType) -> BoneMeshes { @@ -1662,9 +1662,9 @@ impl BirdMediumCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.tail.center.0); + let central = graceful_load_segment(&spec.tail.central.0); - (center, Vec3::from(spec.tail.offset)) + (central, Vec3::from(spec.tail.offset)) } } impl BirdMediumLateralSpec { @@ -2160,22 +2160,22 @@ fn mesh_fish_medium_fin_r(fin_r: fish_medium::FinR) -> BoneMeshes { //// #[derive(Deserialize)] -struct DragonCenterSpec(HashMap<(DSpecies, DBodyType), SidedDCenterVoxSpec>); +struct DragonCentralSpec(HashMap<(DSpecies, DBodyType), SidedDCentralVoxSpec>); #[derive(Deserialize)] -struct SidedDCenterVoxSpec { - upper: DragonCenterSubSpec, - lower: DragonCenterSubSpec, - jaw: DragonCenterSubSpec, - chest_front: DragonCenterSubSpec, - chest_rear: DragonCenterSubSpec, - tail_front: DragonCenterSubSpec, - tail_rear: DragonCenterSubSpec, +struct SidedDCentralVoxSpec { + upper: DragonCentralSubSpec, + lower: DragonCentralSubSpec, + jaw: DragonCentralSubSpec, + chest_front: DragonCentralSubSpec, + chest_rear: DragonCentralSubSpec, + tail_front: DragonCentralSubSpec, + tail_rear: DragonCentralSubSpec, } #[derive(Deserialize)] -struct DragonCenterSubSpec { +struct DragonCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin - center: VoxSimple, + central: VoxSimple, } #[derive(Deserialize)] @@ -2201,36 +2201,36 @@ struct DragonLateralSubSpec { make_vox_spec!( dragon::Body, struct DragonSpec { - center: DragonCenterSpec = "voxygen.voxel.dragon_center_manifest", + central: DragonCentralSpec = "voxygen.voxel.dragon_central_manifest", lateral: DragonLateralSpec = "voxygen.voxel.dragon_lateral_manifest", }, |FigureKey { body, .. }, spec| { [ - Some(spec.center.asset.mesh_head_upper( + Some(spec.central.asset.mesh_head_upper( body.species, body.body_type, )), - Some(spec.center.asset.mesh_head_lower( + Some(spec.central.asset.mesh_head_lower( body.species, body.body_type, )), - Some(spec.center.asset.mesh_jaw( + Some(spec.central.asset.mesh_jaw( body.species, body.body_type, )), - Some(spec.center.asset.mesh_chest_front( + Some(spec.central.asset.mesh_chest_front( body.species, body.body_type, )), - Some(spec.center.asset.mesh_chest_rear( + Some(spec.central.asset.mesh_chest_rear( body.species, body.body_type, )), - Some(spec.center.asset.mesh_tail_front( + Some(spec.central.asset.mesh_tail_front( body.species, body.body_type, )), - Some(spec.center.asset.mesh_tail_rear( + Some(spec.central.asset.mesh_tail_rear( body.species, body.body_type, )), @@ -2271,7 +2271,7 @@ make_vox_spec!( }, ); -impl DragonCenterSpec { +impl DragonCentralSpec { fn mesh_head_upper(&self, species: DSpecies, body_type: DBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -2283,7 +2283,7 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let central = graceful_load_segment(&spec.upper.center.0); + let central = graceful_load_segment(&spec.upper.central.0); (central, Vec3::from(spec.upper.offset)) } @@ -2299,7 +2299,7 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let central = graceful_load_segment(&spec.lower.center.0); + let central = graceful_load_segment(&spec.lower.central.0); (central, Vec3::from(spec.lower.offset)) } @@ -2315,7 +2315,7 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let central = graceful_load_segment(&spec.jaw.center.0); + let central = graceful_load_segment(&spec.jaw.central.0); (central, Vec3::from(spec.jaw.offset)) } @@ -2331,9 +2331,9 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.chest_front.center.0); + let central = graceful_load_segment(&spec.chest_front.central.0); - (center, Vec3::from(spec.chest_front.offset)) + (central, Vec3::from(spec.chest_front.offset)) } fn mesh_chest_rear(&self, species: DSpecies, body_type: DBodyType) -> BoneMeshes { @@ -2347,9 +2347,9 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.chest_rear.center.0); + let central = graceful_load_segment(&spec.chest_rear.central.0); - (center, Vec3::from(spec.chest_rear.offset)) + (central, Vec3::from(spec.chest_rear.offset)) } fn mesh_tail_front(&self, species: DSpecies, body_type: DBodyType) -> BoneMeshes { @@ -2363,9 +2363,9 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.tail_front.center.0); + let central = graceful_load_segment(&spec.tail_front.central.0); - (center, Vec3::from(spec.tail_front.offset)) + (central, Vec3::from(spec.tail_front.offset)) } fn mesh_tail_rear(&self, species: DSpecies, body_type: DBodyType) -> BoneMeshes { @@ -2379,9 +2379,9 @@ impl DragonCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.tail_rear.center.0); + let central = graceful_load_segment(&spec.tail_rear.central.0); - (center, Vec3::from(spec.tail_rear.offset)) + (central, Vec3::from(spec.tail_rear.offset)) } } impl DragonLateralSpec { @@ -2620,22 +2620,22 @@ fn mesh_fish_small_tail(tail: fish_small::Tail) -> BoneMeshes { } //// #[derive(Deserialize)] -struct BipedLargeCenterSpec(HashMap<(BLSpecies, BLBodyType), SidedBLCenterVoxSpec>); +struct BipedLargeCentralSpec(HashMap<(BLSpecies, BLBodyType), SidedBLCentralVoxSpec>); #[derive(Deserialize)] -struct SidedBLCenterVoxSpec { - head: BipedLargeCenterSubSpec, - jaw: BipedLargeCenterSubSpec, - torso_upper: BipedLargeCenterSubSpec, - torso_lower: BipedLargeCenterSubSpec, - tail: BipedLargeCenterSubSpec, - main: BipedLargeCenterSubSpec, - second: BipedLargeCenterSubSpec, +struct SidedBLCentralVoxSpec { + head: BipedLargeCentralSubSpec, + jaw: BipedLargeCentralSubSpec, + torso_upper: BipedLargeCentralSubSpec, + torso_lower: BipedLargeCentralSubSpec, + tail: BipedLargeCentralSubSpec, + main: BipedLargeCentralSubSpec, + second: BipedLargeCentralSubSpec, } #[derive(Deserialize)] -struct BipedLargeCenterSubSpec { +struct BipedLargeCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin - center: VoxSimple, + central: VoxSimple, } #[derive(Deserialize)] @@ -2661,36 +2661,36 @@ struct BipedLargeLateralSubSpec { make_vox_spec!( biped_large::Body, struct BipedLargeSpec { - center: BipedLargeCenterSpec = "voxygen.voxel.biped_large_center_manifest", + central: BipedLargeCentralSpec = "voxygen.voxel.biped_large_central_manifest", lateral: BipedLargeLateralSpec = "voxygen.voxel.biped_large_lateral_manifest", }, |FigureKey { body, .. }, spec| { [ - Some(spec.center.asset.mesh_head( + Some(spec.central.asset.mesh_head( body.species, body.body_type, )), - Some(spec.center.asset.mesh_jaw( + Some(spec.central.asset.mesh_jaw( body.species, body.body_type, )), - Some(spec.center.asset.mesh_torso_upper( + Some(spec.central.asset.mesh_torso_upper( body.species, body.body_type, )), - Some(spec.center.asset.mesh_torso_lower( + Some(spec.central.asset.mesh_torso_lower( body.species, body.body_type, )), - Some(spec.center.asset.mesh_tail( + Some(spec.central.asset.mesh_tail( body.species, body.body_type, )), - Some(spec.center.asset.mesh_main( + Some(spec.central.asset.mesh_main( body.species, body.body_type, )), - Some(spec.center.asset.mesh_second( + Some(spec.central.asset.mesh_second( body.species, body.body_type, )), @@ -2731,7 +2731,7 @@ make_vox_spec!( }, ); -impl BipedLargeCenterSpec { +impl BipedLargeCentralSpec { fn mesh_head(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -2743,9 +2743,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.head.center.0); + let central = graceful_load_segment(&spec.head.central.0); - (center, Vec3::from(spec.head.offset)) + (central, Vec3::from(spec.head.offset)) } fn mesh_jaw(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2759,9 +2759,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.jaw.center.0); + let central = graceful_load_segment(&spec.jaw.central.0); - (center, Vec3::from(spec.jaw.offset)) + (central, Vec3::from(spec.jaw.offset)) } fn mesh_torso_upper(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2775,9 +2775,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.torso_upper.center.0); + let central = graceful_load_segment(&spec.torso_upper.central.0); - (center, Vec3::from(spec.torso_upper.offset)) + (central, Vec3::from(spec.torso_upper.offset)) } fn mesh_torso_lower(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2791,9 +2791,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.torso_lower.center.0); + let central = graceful_load_segment(&spec.torso_lower.central.0); - (center, Vec3::from(spec.torso_lower.offset)) + (central, Vec3::from(spec.torso_lower.offset)) } fn mesh_tail(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2807,9 +2807,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.tail.center.0); + let central = graceful_load_segment(&spec.tail.central.0); - (center, Vec3::from(spec.tail.offset)) + (central, Vec3::from(spec.tail.offset)) } fn mesh_main(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2823,9 +2823,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.main.center.0); + let central = graceful_load_segment(&spec.main.central.0); - (center, Vec3::from(spec.main.offset)) + (central, Vec3::from(spec.main.offset)) } fn mesh_second(&self, species: BLSpecies, body_type: BLBodyType) -> BoneMeshes { @@ -2839,9 +2839,9 @@ impl BipedLargeCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.second.center.0); + let central = graceful_load_segment(&spec.second.central.0); - (center, Vec3::from(spec.second.offset)) + (central, Vec3::from(spec.second.offset)) } } impl BipedLargeLateralSpec { @@ -2975,18 +2975,18 @@ impl BipedLargeLateralSpec { } //// #[derive(Deserialize)] -struct GolemCenterSpec(HashMap<(GSpecies, GBodyType), SidedGCenterVoxSpec>); +struct GolemCentralSpec(HashMap<(GSpecies, GBodyType), SidedGCentralVoxSpec>); #[derive(Deserialize)] -struct SidedGCenterVoxSpec { - head: GolemCenterSubSpec, - torso_upper: GolemCenterSubSpec, - torso_lower: GolemCenterSubSpec, +struct SidedGCentralVoxSpec { + head: GolemCentralSubSpec, + torso_upper: GolemCentralSubSpec, + torso_lower: GolemCentralSubSpec, } #[derive(Deserialize)] -struct GolemCenterSubSpec { +struct GolemCentralSubSpec { offset: [f32; 3], // Should be relative to initial origin - center: VoxSimple, + central: VoxSimple, } #[derive(Deserialize)] @@ -3012,20 +3012,20 @@ struct GolemLateralSubSpec { make_vox_spec!( golem::Body, struct GolemSpec { - center: GolemCenterSpec = "voxygen.voxel.golem_center_manifest", + central: GolemCentralSpec = "voxygen.voxel.golem_central_manifest", lateral: GolemLateralSpec = "voxygen.voxel.golem_lateral_manifest", }, |FigureKey { body, .. }, spec| { [ - Some(spec.center.asset.mesh_head( + Some(spec.central.asset.mesh_head( body.species, body.body_type, )), - Some(spec.center.asset.mesh_torso_upper( + Some(spec.central.asset.mesh_torso_upper( body.species, body.body_type, )), - Some(spec.center.asset.mesh_torso_lower( + Some(spec.central.asset.mesh_torso_lower( body.species, body.body_type, )), @@ -3070,7 +3070,7 @@ make_vox_spec!( }, ); -impl GolemCenterSpec { +impl GolemCentralSpec { fn mesh_head(&self, species: GSpecies, body_type: GBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, @@ -3082,9 +3082,9 @@ impl GolemCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.head.center.0); + let central = graceful_load_segment(&spec.head.central.0); - (center, Vec3::from(spec.head.offset)) + (central, Vec3::from(spec.head.offset)) } fn mesh_torso_upper(&self, species: GSpecies, body_type: GBodyType) -> BoneMeshes { @@ -3098,9 +3098,9 @@ impl GolemCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.torso_upper.center.0); + let central = graceful_load_segment(&spec.torso_upper.central.0); - (center, Vec3::from(spec.torso_upper.offset)) + (central, Vec3::from(spec.torso_upper.offset)) } pub fn mesh_torso_lower( @@ -3118,9 +3118,9 @@ impl GolemCenterSpec { return load_mesh("not_found", Vec3::new(-5.0, -5.0, -2.5)); }, }; - let center = graceful_load_segment(&spec.torso_lower.center.0); + let central = graceful_load_segment(&spec.torso_lower.central.0); - (center, Vec3::from(spec.torso_lower.offset)) + (central, Vec3::from(spec.torso_lower.offset)) } } impl GolemLateralSpec { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 3fcce08a08..c38852c513 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1209,7 +1209,7 @@ impl FigureMgr { let target_base = match ( physics.on_ground, - vel.0.magnitude_squared() > MOVING_THRESHOLD_SQR, // Moving + vel.0.magnitude_squared() > 0.25, // Moving physics.in_fluid.is_some(), // In water ) { // Standing From 789d93b52fa94bdf539ef25cc581331af74e8fb5 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 3 Sep 2020 01:08:16 -0400 Subject: [PATCH 19/28] new models, shockwave anim --- voxygen/src/anim/src/golem/mod.rs | 2 + voxygen/src/anim/src/golem/shockwave.rs | 136 ++++++++++++++++++ .../src/anim/src/quadruped_medium/alpha.rs | 6 +- voxygen/src/anim/src/quadruped_medium/jump.rs | 6 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 23 +-- voxygen/src/anim/src/quadruped_medium/run.rs | 6 +- voxygen/src/anim/src/quadruped_small/idle.rs | 2 +- voxygen/src/anim/src/quadruped_small/mod.rs | 132 ++++++++--------- voxygen/src/anim/src/quadruped_small/run.rs | 4 +- voxygen/src/anim/src/theropod/idle.rs | 17 ++- voxygen/src/anim/src/theropod/run.rs | 1 - voxygen/src/scene/figure/mod.rs | 2 +- 12 files changed, 232 insertions(+), 105 deletions(-) create mode 100644 voxygen/src/anim/src/golem/shockwave.rs diff --git a/voxygen/src/anim/src/golem/mod.rs b/voxygen/src/anim/src/golem/mod.rs index 5d5079f721..75fb864941 100644 --- a/voxygen/src/anim/src/golem/mod.rs +++ b/voxygen/src/anim/src/golem/mod.rs @@ -2,10 +2,12 @@ pub mod alpha; pub mod idle; pub mod jump; pub mod run; +pub mod shockwave; // Reexports pub use self::{ alpha::AlphaAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, + shockwave::ShockwaveAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; diff --git a/voxygen/src/anim/src/golem/shockwave.rs b/voxygen/src/anim/src/golem/shockwave.rs new file mode 100644 index 0000000000..85731ebdf1 --- /dev/null +++ b/voxygen/src/anim/src/golem/shockwave.rs @@ -0,0 +1,136 @@ +use super::{ + super::{vek::*, Animation}, + GolemSkeleton, SkeletonAttr, +}; +use std::f32::consts::PI; + +pub struct ShockwaveAnimation; + +impl Animation for ShockwaveAnimation { + type Dependency = (f32, f64); + type Skeleton = GolemSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"golem_shockwave\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "golem_shockwave")] + + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + (velocity, _global_time): Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let lab = 1.0; + let breathe = (anim_time as f32 * lab as f32 + 1.5 * PI).sin(); + let twist = anim_time as f32 * lab as f32 * 2.5; + + let slower = (((1.0) + / (0.00001 + + 0.9999 + * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()).powf(2.0 as f32))) + .sqrt()) + * ((anim_time as f32 * lab as f32 * 2.0 - 0.5 * PI).sin()) + + 1.0; + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; + next.head.orientation = + Quaternion::rotation_z((-twist * 2.0).max(-3.14)) * Quaternion::rotation_x(0.0); + next.head.scale = Vec3::one() * 1.02; + + next.upper_torso.position = Vec3::new( + 0.0, + skeleton_attr.upper_torso.0, + skeleton_attr.upper_torso.1 + slower * -3.0 + breathe * 1.0, + ) / 8.0; + next.upper_torso.orientation = + Quaternion::rotation_z((twist * 2.0).min(3.14)) * Quaternion::rotation_x(0.0); + next.upper_torso.scale = Vec3::one() / 8.0; + + next.lower_torso.position = Vec3::new( + 0.0, + skeleton_attr.lower_torso.0, + skeleton_attr.lower_torso.1 + slower * 1.0, + ); + next.lower_torso.orientation = + Quaternion::rotation_z((-twist * 2.0).max(-3.14)) * Quaternion::rotation_x(0.0); + next.lower_torso.scale = Vec3::one(); + + next.shoulder_l.position = Vec3::new( + -skeleton_attr.shoulder.0 - 2.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2 - slower * 1.0, + ); + next.shoulder_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(0.6 + slower * -0.3); + next.shoulder_l.scale = Vec3::one(); + + next.shoulder_r.position = Vec3::new( + skeleton_attr.shoulder.0 + 2.0, + skeleton_attr.shoulder.1, + skeleton_attr.shoulder.2 - slower * 1.0, + ); + next.shoulder_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(-0.6 + slower * 0.3); + next.shoulder_r.scale = Vec3::one(); + + next.hand_l.position = Vec3::new( + -skeleton_attr.hand.0 - 1.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2 - slower * 0.5 + breathe * -1.0, + ); + next.hand_l.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(-0.6 + slower * 0.3); + next.hand_l.scale = Vec3::one() * 1.02; + + next.hand_r.position = Vec3::new( + skeleton_attr.hand.0 + 1.0, + skeleton_attr.hand.1, + skeleton_attr.hand.2 - slower * 0.5 + breathe * -1.0, + ); + next.hand_r.orientation = + Quaternion::rotation_z(0.0) * Quaternion::rotation_y(0.6 + slower * -0.3); + next.hand_r.scale = Vec3::one() * 1.02; + if velocity < 0.5 { + next.leg_l.position = Vec3::new( + -skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2 + slower * -0.5, + ) * 1.02; + next.leg_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_l.scale = Vec3::one() * 1.02; + + next.leg_r.position = Vec3::new( + skeleton_attr.leg.0, + skeleton_attr.leg.1, + skeleton_attr.leg.2 + slower * -0.5, + ) * 1.02; + next.leg_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.leg_r.scale = Vec3::one() * 1.02; + + next.foot_l.position = Vec3::new( + -skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2 + slower * 2.5 + breathe * -1.0, + ); + next.foot_l.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.foot_l.scale = Vec3::one(); + + next.foot_r.position = Vec3::new( + skeleton_attr.foot.0, + skeleton_attr.foot.1, + skeleton_attr.foot.2 + slower * 2.5 + breathe * -1.0, + ); + next.foot_r.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.foot_r.scale = Vec3::one(); + + next.torso.position = Vec3::new(0.0, 0.0, 0.0); + next.torso.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.torso.scale = Vec3::one(); + } else { + } + next + } +} diff --git a/voxygen/src/anim/src/quadruped_medium/alpha.rs b/voxygen/src/anim/src/quadruped_medium/alpha.rs index 83ef3ff1da..2a4f29261f 100644 --- a/voxygen/src/anim/src/quadruped_medium/alpha.rs +++ b/voxygen/src/anim/src/quadruped_medium/alpha.rs @@ -32,14 +32,12 @@ impl Animation for AlphaAnimation { .sqrt()) * ((anim_time as f32 * 4.0 + PI * 0.5).sin()); - next.head.position = - Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); next.head.orientation = Quaternion::rotation_y(short * -0.2) * Quaternion::rotation_x(0.1 + short * 0.2); next.head.scale = Vec3::one(); - next.neck.position = - Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); next.neck.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.neck.scale = Vec3::one() * 1.02; diff --git a/voxygen/src/anim/src/quadruped_medium/jump.rs b/voxygen/src/anim/src/quadruped_medium/jump.rs index 8dd0df60e0..35640b8097 100644 --- a/voxygen/src/anim/src/quadruped_medium/jump.rs +++ b/voxygen/src/anim/src/quadruped_medium/jump.rs @@ -22,13 +22,11 @@ impl Animation for JumpAnimation { ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - next.head.position = - Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); next.head.orientation = Quaternion::rotation_z(0.4) * Quaternion::rotation_x(0.3); next.head.scale = Vec3::one(); - next.neck.position = - Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); next.neck.orientation = Quaternion::rotation_z(0.2) * Quaternion::rotation_x(0.3); next.neck.scale = Vec3::one() * 1.02; diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index e77e2d3f8f..1c843add78 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -90,7 +90,6 @@ pub struct SkeletonAttr { feet_b: (f32, f32, f32), scaler: f32, startangle: f32, - maximize: f32, tempo: f32, spring: f32, } @@ -122,7 +121,6 @@ impl Default for SkeletonAttr { feet_b: (0.0, 0.0, 0.0), scaler: 0.0, startangle: 0.0, - maximize: 0.0, tempo: 0.0, spring: 0.0, } @@ -301,7 +299,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), - (Saber, _) => (0.9), + (Saber, _) => (1.1), (Tuskram, _) => (1.2), (Lion, _) => (1.3), (Tarasque, _) => (1.3), @@ -320,31 +318,16 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Saber, _) => (-0.2), (Tuskram, _) => (0.3), (Lion, _) => (0.2), - (Tarasque, _) => (0.2), + (Tarasque, _) => (-0.5), (Tiger, _) => (0.0), (Wolf, _) => (0.0), (Frostfang, _) => (0.0), (Mouflon, _) => (0.0), (Catoblepas, _) => (0.2), - (Bonerattler, _) => (0.2), + (Bonerattler, _) => (-0.7), (Deer, _) => (0.0), (Hirdrassil, _) => (0.0), }, - maximize: match (body.species, body.body_type) { - (Grolgar, _) => (2.0), - (Saber, _) => (1.5), - (Tuskram, _) => (1.0), - (Lion, _) => (1.1), - (Tarasque, _) => (1.8), - (Tiger, _) => (1.8), - (Wolf, _) => (1.0), - (Frostfang, _) => (1.2), - (Mouflon, _) => (1.1), - (Catoblepas, _) => (0.0), - (Bonerattler, _) => (0.8), - (Deer, _) => (1.1), - (Hirdrassil, _) => (1.1), - }, tempo: match (body.species, body.body_type) { (Grolgar, _) => (0.95), (Saber, _) => (1.1), diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 935755d239..7a725af36a 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -99,8 +99,7 @@ impl Animation for RunAnimation { let x_tilt = avg_vel.z.atan2(avg_vel.xy().magnitude()); //Gallop - next.head.position = - Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); + next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1); next.head.orientation = Quaternion::rotation_x( look.y * 0.3 / ((canceler).max(0.5)) + amplitude * short * -0.03 - 0.1, ) * Quaternion::rotation_z( @@ -108,8 +107,7 @@ impl Animation for RunAnimation { ) * Quaternion::rotation_y(tilt * 0.8); next.head.scale = Vec3::one(); - next.neck.position = - Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); + next.neck.position = Vec3::new(0.0, skeleton_attr.neck.0, skeleton_attr.neck.1); next.neck.orientation = Quaternion::rotation_z(tilt * -0.8) * Quaternion::rotation_x(amplitude * short * -0.05) * Quaternion::rotation_y(tilt * 0.3); diff --git a/voxygen/src/anim/src/quadruped_small/idle.rs b/voxygen/src/anim/src/quadruped_small/idle.rs index 9209704c2d..932107540b 100644 --- a/voxygen/src/anim/src/quadruped_small/idle.rs +++ b/voxygen/src/anim/src/quadruped_small/idle.rs @@ -25,7 +25,7 @@ impl Animation for IdleAnimation { let slow = (anim_time as f32 * 3.5).sin(); - let slow_alt = (anim_time as f32 * 3.5 + PI).sin(); + let slow_alt = (anim_time as f32 * 3.5 + PI / 2.0).sin(); let head_look = Vec2::new( ((global_time + anim_time) as f32 / 8.0) diff --git a/voxygen/src/anim/src/quadruped_small/mod.rs b/voxygen/src/anim/src/quadruped_small/mod.rs index 49e90ccbee..ed9e73cef4 100644 --- a/voxygen/src/anim/src/quadruped_small/mod.rs +++ b/voxygen/src/anim/src/quadruped_small/mod.rs @@ -114,12 +114,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (4.0, 3.0), (Truffler, _) => (7.5, -9.0), (Frog, _) => (4.0, 2.0), - (Rat, _) => (6.0, -2.0), - (Axolotl, _) => (7.0, 1.0), - (Gecko, _) => (7.5, 2.0), - (Turtle, _) => (4.0, 3.0), - (Squirrel, _) => (7.5, -9.0), - (Fungome, _) => (4.0, 2.0), + (Rat, _) => (5.0, -1.0), + (Axolotl, _) => (3.0, 2.0), + (Gecko, _) => (4.0, 2.0), + (Turtle, _) => (5.0, -2.0), + (Squirrel, _) => (3.5, 1.0), + (Fungome, _) => (1.5, -1.5), (Porcupine, _) => (6.0, 1.0), (Beaver, _) => (5.5, 0.0), }, @@ -140,12 +140,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (-2.0, 6.0), (Truffler, _) => (-2.0, 16.0), (Frog, _) => (-2.0, 4.5), - (Rat, _) => (6.0, -2.0), - (Axolotl, _) => (7.0, 1.0), - (Gecko, _) => (7.5, 2.0), - (Turtle, _) => (4.0, 3.0), - (Squirrel, _) => (7.5, -9.0), - (Fungome, _) => (4.0, 2.0), + (Rat, _) => (6.0, 5.0), + (Axolotl, _) => (3.0, 5.0), + (Gecko, _) => (7.5, 3.0), + (Turtle, _) => (1.0, 6.0), + (Squirrel, _) => (4.0, 5.0), + (Fungome, _) => (4.0, 4.0), (Porcupine, _) => (2.0, 11.0), (Beaver, _) => (2.0, 6.0), }, @@ -166,12 +166,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (3.0, 3.0, -3.0), (Truffler, _) => (2.5, 5.0, -9.0), (Frog, _) => (4.5, 6.5, 0.0), - (Rat, _) => (6.0, -2.0, 0.0), - (Axolotl, _) => (7.0, 1.0, 0.0), - (Gecko, _) => (7.5, 2.0, 0.0), - (Turtle, _) => (4.0, 3.0, 0.0), - (Squirrel, _) => (7.5, -9.0, 0.0), - (Fungome, _) => (4.0, 2.0, 0.0), + (Rat, _) => (5.0, 2.5, -1.0), + (Axolotl, _) => (2.0, 2.0, -2.0), + (Gecko, _) => (2.0, 4.0, 0.0), + (Turtle, _) => (5.0, 4.0, -2.0), + (Squirrel, _) => (3.5, 3.0, -1.0), + (Fungome, _) => (3.0, 2.0, -1.0), (Porcupine, _) => (4.0, 6.5, -9.0), (Beaver, _) => (4.5, 4.5, -4.0), }, @@ -192,12 +192,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (3.5, -2.0, -1.0), (Truffler, _) => (3.0, -5.0, -9.5), (Frog, _) => (5.0, -3.5, 0.0), - (Rat, _) => (6.0, -2.0, 0.0), - (Axolotl, _) => (7.0, 1.0, 0.0), - (Gecko, _) => (7.5, 2.0, 0.0), - (Turtle, _) => (4.0, 3.0, 0.0), - (Squirrel, _) => (7.5, -9.0, 0.0), - (Fungome, _) => (4.0, 2.0, 0.0), + (Rat, _) => (5.0, -2.0, 1.0), + (Axolotl, _) => (2.0, -3.0, -2.0), + (Gecko, _) => (1.5, -1.0, 0.0), + (Turtle, _) => (5.5, -2.5, -2.0), + (Squirrel, _) => (3.5, -3.0, 0.0), + (Fungome, _) => (3.0, -3.5, -1.0), (Porcupine, _) => (4.5, -1.0, -8.0), (Beaver, _) => (4.0, -2.5, -3.0), }, @@ -218,12 +218,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (-4.0, -0.0), (Truffler, _) => (0.0, 0.0), (Frog, _) => (0.0, -0.0), - (Rat, _) => (6.0, -2.0), - (Axolotl, _) => (7.0, 1.0), - (Gecko, _) => (7.5, 2.0), - (Turtle, _) => (4.0, 3.0), - (Squirrel, _) => (7.5, -9.0), - (Fungome, _) => (4.0, 2.0), + (Rat, _) => (-1.0, 2.0), + (Axolotl, _) => (-4.0, -1.0), + (Gecko, _) => (-4.0, 0.0), + (Turtle, _) => (-6.0, -2.0), + (Squirrel, _) => (-5.0, 0.0), + (Fungome, _) => (-4.0, -2.0), (Porcupine, _) => (-6.0, 1.0), (Beaver, _) => (-6.5, -1.0), }, @@ -244,12 +244,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (0.7), (Truffler, _) => (1.0), (Frog, _) => (0.7), - (Rat, _) => (6.0), - (Axolotl, _) => (7.0), - (Gecko, _) => (7.5), - (Turtle, _) => (4.0), - (Squirrel, _) => (7.5), - (Fungome, _) => (4.0), + (Rat, _) => (0.65), + (Axolotl, _) => (0.65), + (Gecko, _) => (0.7), + (Turtle, _) => (0.9), + (Squirrel, _) => (0.7), + (Fungome, _) => (0.9), (Porcupine, _) => (1.0), (Beaver, _) => (1.0), }, @@ -270,12 +270,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.15), (Truffler, _) => (1.0), (Frog, _) => (1.15), - (Rat, _) => (6.0), - (Axolotl, _) => (7.0), - (Gecko, _) => (7.5), - (Turtle, _) => (4.0), - (Squirrel, _) => (7.5), - (Fungome, _) => (4.0), + (Rat, _) => (1.0), + (Axolotl, _) => (1.2), + (Gecko, _) => (1.1), + (Turtle, _) => (0.9), + (Squirrel, _) => (1.15), + (Fungome, _) => (1.0), (Porcupine, _) => (1.2), (Beaver, _) => (1.2), }, @@ -296,12 +296,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.3), (Truffler, _) => (1.0), (Frog, _) => (1.3), - (Rat, _) => (0.1), - (Axolotl, _) => (0.1), - (Gecko, _) => (0.1), - (Turtle, _) => (0.1), - (Squirrel, _) => (0.1), - (Fungome, _) => (0.1), + (Rat, _) => (1.0), + (Axolotl, _) => (0.9), + (Gecko, _) => (1.0), + (Turtle, _) => (0.8), + (Squirrel, _) => (1.0), + (Fungome, _) => (0.7), (Porcupine, _) => (1.0), (Beaver, _) => (1.0), }, @@ -322,12 +322,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (0.8), (Truffler, _) => (1.0), (Frog, _) => (0.8), - (Rat, _) => (0.1), - (Axolotl, _) => (0.1), - (Gecko, _) => (0.1), - (Turtle, _) => (0.1), - (Squirrel, _) => (0.1), - (Fungome, _) => (0.1), + (Rat, _) => (1.0), + (Axolotl, _) => (1.0), + (Gecko, _) => (1.0), + (Turtle, _) => (0.8), + (Squirrel, _) => (1.0), + (Fungome, _) => (0.4), (Porcupine, _) => (0.9), (Beaver, _) => (0.9), }, @@ -348,12 +348,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (2.5), (Truffler, _) => (0.8), (Frog, _) => (2.5), - (Rat, _) => (0.1), - (Axolotl, _) => (0.1), - (Gecko, _) => (0.1), - (Turtle, _) => (0.1), - (Squirrel, _) => (0.1), - (Fungome, _) => (0.1), + (Rat, _) => (1.0), + (Axolotl, _) => (0.8), + (Gecko, _) => (1.0), + (Turtle, _) => (0.7), + (Squirrel, _) => (1.0), + (Fungome, _) => (0.8), (Porcupine, _) => (1.3), (Beaver, _) => (1.3), }, @@ -374,12 +374,12 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Rabbit, _) => (1.2), (Truffler, _) => (0.6), (Frog, _) => (0.7), - (Rat, _) => (0.1), - (Axolotl, _) => (0.1), - (Gecko, _) => (0.1), - (Turtle, _) => (0.1), - (Squirrel, _) => (0.1), - (Fungome, _) => (0.1), + (Rat, _) => (1.0), + (Axolotl, _) => (0.8), + (Gecko, _) => (1.0), + (Turtle, _) => (0.7), + (Squirrel, _) => (1.0), + (Fungome, _) => (0.7), (Porcupine, _) => (1.0), (Beaver, _) => (1.0), }, diff --git a/voxygen/src/anim/src/quadruped_small/run.rs b/voxygen/src/anim/src/quadruped_small/run.rs index cbf1092460..a88a6369f0 100644 --- a/voxygen/src/anim/src/quadruped_small/run.rs +++ b/voxygen/src/anim/src/quadruped_small/run.rs @@ -72,11 +72,11 @@ impl Animation for RunAnimation { next.leg_fl.position = Vec3::new( -skeleton_attr.feet_f.0, - skeleton_attr.feet_f.1 + footverttf * 3.0 * skeleton_attr.maximize, + skeleton_attr.feet_f.1 + footverttf * 3.0 * skeleton_attr.minimize, skeleton_attr.feet_f.2 + ((footvertf * -1.5).max(-1.0)), ); next.leg_fl.orientation = - Quaternion::rotation_x(0.2 + skeleton_attr.minimize * footverttf * 0.65) + Quaternion::rotation_x(0.2 + skeleton_attr.maximize * footverttf * 0.65) * Quaternion::rotation_z(tilt * -0.5) * Quaternion::rotation_y(tilt * 1.5); next.leg_fl.scale = Vec3::one() * 1.02; diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs index 62c4e8d03d..b37857e31e 100644 --- a/voxygen/src/anim/src/theropod/idle.rs +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -1,7 +1,7 @@ use super::{super::Animation, SkeletonAttr, TheropodSkeleton}; //use std::{f32::consts::PI, ops::Mul}; use super::super::vek::*; -use std::{f32::consts::PI, ops::Mul}; +use std::ops::Mul; pub struct IdleAnimation; @@ -23,13 +23,26 @@ impl Animation for IdleAnimation { let mut next = (*skeleton).clone(); let breathe = (anim_time as f32 * 0.8).sin(); + let head_look = Vec2::new( + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, + ); next.head.position = Vec3::new( 0.0, skeleton_attr.head.0, skeleton_attr.head.1 + breathe * 0.3, ); - next.head.orientation = Quaternion::rotation_x(breathe * 0.1 - 0.1); + next.head.orientation = Quaternion::rotation_x(head_look.y + breathe * 0.1 - 0.1) + * Quaternion::rotation_z(head_look.x); next.head.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new(0.0, skeleton_attr.jaw.0, skeleton_attr.jaw.1); diff --git a/voxygen/src/anim/src/theropod/run.rs b/voxygen/src/anim/src/theropod/run.rs index 4187b28149..76b4e36395 100644 --- a/voxygen/src/anim/src/theropod/run.rs +++ b/voxygen/src/anim/src/theropod/run.rs @@ -32,7 +32,6 @@ impl Animation for RunAnimation { let canceler = speed / topspeed; let lab = 0.5; //6 - let amplitude = (speed / topspeed).max(0.25); let amplitude2 = (speed * 1.4 / topspeed).max(0.6); let amplitude3 = (speed / topspeed).max(0.35); let speedmult = if speed > 0.0 { diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index c38852c513..5d95d14b07 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1210,7 +1210,7 @@ impl FigureMgr { let target_base = match ( physics.on_ground, vel.0.magnitude_squared() > 0.25, // Moving - physics.in_fluid.is_some(), // In water + physics.in_fluid.is_some(), // In water ) { // Standing (true, false, false) => { From 62f6a5799adb152745599797b617e63b8d788225 Mon Sep 17 00:00:00 2001 From: Snowram Date: Thu, 3 Sep 2020 20:29:53 +0200 Subject: [PATCH 20/28] Initial quadmed feed animation --- .../quadruped_medium_central_manifest.ron | 4 +- common/src/states/utils.rs | 2 +- voxygen/src/anim/src/quadruped_medium/feed.rs | 205 ++++++++++++++++++ voxygen/src/anim/src/quadruped_medium/idle.rs | 2 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 20 +- voxygen/src/scene/figure/mod.rs | 9 + 6 files changed, 233 insertions(+), 9 deletions(-) create mode 100644 voxygen/src/anim/src/quadruped_medium/feed.rs diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index ad5263a0f1..3c50063065 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -481,7 +481,7 @@ ), (Mouflon, Male): ( head: ( - offset: (-7.0, 0.0, -4.5), + offset: (-7.0, -5.0, 0.0), central: ("npc.mouflon.male.head"), ), neck: ( @@ -511,7 +511,7 @@ ), (Mouflon, Female): ( head: ( - offset: (-7.0, 0.0, -4.5), + offset: (-7.0, -5.0, 0.0), central: ("npc.mouflon.male.head"), ), neck: ( diff --git a/common/src/states/utils.rs b/common/src/states/utils.rs index dfbd747cce..1b50424c2e 100644 --- a/common/src/states/utils.rs +++ b/common/src/states/utils.rs @@ -32,7 +32,7 @@ impl Body { match self { Body::Humanoid(_) => 100.0, Body::QuadrupedSmall(_) => 125.0, - Body::QuadrupedMedium(_) => 30.0, + Body::QuadrupedMedium(_) => 180.0, Body::BirdMedium(_) => 80.0, Body::FishMedium(_) => 50.0, Body::Dragon(_) => 250.0, diff --git a/voxygen/src/anim/src/quadruped_medium/feed.rs b/voxygen/src/anim/src/quadruped_medium/feed.rs new file mode 100644 index 0000000000..bef398b5fa --- /dev/null +++ b/voxygen/src/anim/src/quadruped_medium/feed.rs @@ -0,0 +1,205 @@ +use super::{ + super::{vek::*, Animation}, + QuadrupedMediumSkeleton, SkeletonAttr, +}; +use std::{f32::consts::PI, ops::Mul}; + +pub struct FeedAnimation; + +impl Animation for FeedAnimation { + type Dependency = f64; + type Skeleton = QuadrupedMediumSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"quadruped_medium_feed\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "quadruped_medium_feed")] + fn update_skeleton_inner( + skeleton: &Self::Skeleton, + global_time: Self::Dependency, + anim_time: f64, + _rate: &mut f32, + skeleton_attr: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + + let slower = (anim_time as f32 * 1.0 + PI).sin(); + let slow = (anim_time as f32 * 3.5 + PI).sin(); + let fast = (anim_time as f32 * 5.0).sin(); + let faster = (anim_time as f32 * 14.0).sin(); + + let transition = (anim_time as f32).min(0.4) / 0.4; + + let look = Vec2::new( + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(7331.0) + .sin() + * 0.5, + ((global_time + anim_time) as f32 / 8.0) + .floor() + .mul(1337.0) + .sin() + * 0.25, + ); + let tailmove = Vec2::new( + ((global_time + anim_time) as f32 / 2.0) + .floor() + .mul(7331.0) + .sin() + * 0.25, + ((global_time + anim_time) as f32 / 2.0) + .floor() + .mul(1337.0) + .sin() + * 0.125, + ); + + if skeleton_attr.feed.0 { + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0, + skeleton_attr.head.1 + slower * 0.2, + ); + next.head.orientation = + Quaternion::rotation_z(0.3 * look.x) + * Quaternion::rotation_x(fast * 0.05 + faster * 0.08 + 0.8 * skeleton_attr.feed.1 * transition); + next.head.scale = Vec3::one(); + + next.neck.position = Vec3::new( + 0.0, + skeleton_attr.neck.0, + skeleton_attr.neck.1 + slower * 0.1 - 4.0 * transition, + ); + next.neck.orientation =Quaternion::rotation_x(-2.5 * skeleton_attr.feed.1 * transition); + next.neck.scale = Vec3::one() * 1.02; + + next.jaw.position = Vec3::new( + 0.0, + skeleton_attr.jaw.0 - slower * 0.12, + skeleton_attr.jaw.1 + slow * 0.2 + 0.5, + ); + next.jaw.orientation = Quaternion::rotation_x((fast * 0.18 + faster * 0.26).min(0.0)); + next.jaw.scale = Vec3::one() * 1.02; + } else { + next.head.position = Vec3::new( + 0.0, + skeleton_attr.head.0, + skeleton_attr.head.1 + slower * 0.2, + ); + next.head.orientation = + Quaternion::rotation_z(0.3 * look.x) * Quaternion::rotation_x(0.3 * look.y); + next.head.scale = Vec3::one(); + + next.neck.position = Vec3::new( + 0.0, + skeleton_attr.neck.0, + skeleton_attr.neck.1 + slower * 0.1, + ); + next.neck.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); + next.neck.scale = Vec3::one() * 1.02; + + next.jaw.position = Vec3::new( + 0.0, + skeleton_attr.jaw.0 - slower * 0.12, + skeleton_attr.jaw.1 + slow * 0.2 + 0.5, + ); + next.jaw.orientation = Quaternion::rotation_x(slow * 0.05 - 0.08); + next.jaw.scale = Vec3::one() * 1.02; + } + + next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); + next.tail.orientation = + Quaternion::rotation_z(0.0 + slow * 0.2 + tailmove.x) * Quaternion::rotation_x(0.0); + next.tail.scale = Vec3::one(); + + next.torso_front.position = Vec3::new( + 0.0, + skeleton_attr.torso_front.0, + skeleton_attr.torso_front.1 + slower * 0.3, + ) * skeleton_attr.scaler + / 11.0; + next.torso_front.orientation = Quaternion::rotation_y(slow * 0.02); + next.torso_front.scale = Vec3::one() * skeleton_attr.scaler / 11.0; + + next.torso_back.position = Vec3::new( + 0.0, + skeleton_attr.torso_back.0, + skeleton_attr.torso_back.1 + slower * 0.2, + ); + next.torso_back.orientation = Quaternion::rotation_y(-slow * 0.005) + * Quaternion::rotation_z(0.0) + * Quaternion::rotation_x(0.0); + next.torso_back.scale = Vec3::one() * 0.99; + + next.ears.position = Vec3::new(0.0, skeleton_attr.ears.0, skeleton_attr.ears.1); + next.ears.orientation = Quaternion::rotation_x(0.0 + slower * 0.03); + next.ears.scale = Vec3::one() * 1.02; + + next.leg_fl.position = Vec3::new( + -skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1, + skeleton_attr.leg_f.2 + slow * -0.15 + slower * -0.15, + ); + next.leg_fl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fl.scale = Vec3::one() * 1.02; + + next.leg_fr.position = Vec3::new( + skeleton_attr.leg_f.0, + skeleton_attr.leg_f.1, + skeleton_attr.leg_f.2 + slow * 0.15 + slower * -0.15, + ); + next.leg_fr.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_fr.scale = Vec3::one() * 1.02; + + next.leg_bl.position = Vec3::new( + -skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1, + skeleton_attr.leg_b.2 + slower * -0.3, + ); + next.leg_bl.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_bl.scale = Vec3::one() * 1.02; + + next.leg_br.position = Vec3::new( + skeleton_attr.leg_b.0, + skeleton_attr.leg_b.1, + skeleton_attr.leg_b.2 + slower * -0.3, + ); + next.leg_br.orientation = Quaternion::rotation_y(slow * -0.02); + next.leg_br.scale = Vec3::one() * 1.02; + + next.foot_fl.position = Vec3::new( + -skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2 + slower * -0.2, + ); + next.foot_fl.orientation = Quaternion::rotation_x(0.0); + next.foot_fl.scale = Vec3::one() * 0.94; + + next.foot_fr.position = Vec3::new( + skeleton_attr.feet_f.0, + skeleton_attr.feet_f.1, + skeleton_attr.feet_f.2 + slower * -0.2, + ); + next.foot_fr.orientation = Quaternion::rotation_x(0.0); + next.foot_fr.scale = Vec3::one() * 0.94; + + next.foot_bl.position = Vec3::new( + -skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2 + slower * -0.2, + ); + next.foot_bl.orientation = Quaternion::rotation_x(0.0); + next.foot_bl.scale = Vec3::one() * 0.94; + + next.foot_br.position = Vec3::new( + skeleton_attr.feet_b.0, + skeleton_attr.feet_b.1, + skeleton_attr.feet_b.2 + slower * -0.2, + ); + next.foot_br.orientation = Quaternion::rotation_x(0.0); + next.foot_br.scale = Vec3::one() * 0.94; + + next + } +} \ No newline at end of file diff --git a/voxygen/src/anim/src/quadruped_medium/idle.rs b/voxygen/src/anim/src/quadruped_medium/idle.rs index 3285ba2bcb..5da26b09e6 100644 --- a/voxygen/src/anim/src/quadruped_medium/idle.rs +++ b/voxygen/src/anim/src/quadruped_medium/idle.rs @@ -170,4 +170,4 @@ impl Animation for IdleAnimation { next } -} +} \ No newline at end of file diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 1c843add78..0ed951dca2 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -1,11 +1,12 @@ pub mod alpha; +pub mod feed; pub mod idle; pub mod jump; pub mod run; // Reexports pub use self::{ - alpha::AlphaAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, + alpha::AlphaAnimation, feed::FeedAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; @@ -92,6 +93,7 @@ pub struct SkeletonAttr { startangle: f32, tempo: f32, spring: f32, + feed: (bool, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -123,6 +125,7 @@ impl Default for SkeletonAttr { startangle: 0.0, tempo: 0.0, spring: 0.0, + feed: (false, 0.0), } } } @@ -140,7 +143,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (2.0, 1.0), (Wolf, _) => (-0.5, 3.0), (Frostfang, _) => (1.0, -2.0), - (Mouflon, _) => (-2.5, 6.0), + (Mouflon, _) => (0.5, 1.5), (Catoblepas, _) => (-1.0, -6.5), (Bonerattler, _) => (-1.0, 2.5), (Deer, Male) => (0.5, 3.5), @@ -156,7 +159,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (0.0, 0.0), (Wolf, _) => (-4.5, 2.0), (Frostfang, _) => (2.0, 1.5), - (Mouflon, _) => (-1.0, 0.5), + (Mouflon, _) => (-1.0, 1.0), (Catoblepas, _) => (19.5, -2.0), (Bonerattler, _) => (7.0, -1.5), (Deer, _) => (-0.5, 1.0), @@ -171,7 +174,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (3.5, -4.0), (Wolf, _) => (5.0, -3.0), (Frostfang, _) => (4.0, -3.0), - (Mouflon, _) => (10.5, -4.0), + (Mouflon, _) => (6.0, 0.5), (Catoblepas, _) => (1.0, -4.0), (Bonerattler, _) => (3.0, -3.0), (Deer, _) => (3.5, 2.0), @@ -358,6 +361,13 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Deer, _) => (0.9), (Hirdrassil, _) => (1.1), }, + feed: match (body.species, body.body_type) { + (Tuskram, _) => (true, 0.5), + (Mouflon, _) => (true, 1.0), + (Deer, _) => (true, 1.0), + (Hirdrassil, _) => (true, 0.9), + (_, _) => (false, 0.0), + }, } } -} +} \ No newline at end of file diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 5d95d14b07..7a6c93c8be 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -1268,6 +1268,15 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::Sit { .. } => { + anim::quadruped_medium::FeedAnimation::update_skeleton( + &target_base, + time, + state.state_time, + &mut state_animation_rate, + skeleton_attr, + ) + }, // TODO! _ => target_base, }; From 8a43cba3b6aa8632a58f43938ca3ed4fa0d944e8 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 3 Sep 2020 21:47:02 -0400 Subject: [PATCH 21/28] quadsmall manifest changes --- assets/common/items/armor/starter/glider.ron | 4 +- .../voxygen/voxel/npc/axolotl/male/chest.vox | 4 +- .../voxel/npc/axolotl/male/foot_bl.vox | 4 +- .../voxel/npc/axolotl/male/foot_br.vox | 4 +- .../voxel/npc/axolotl/male/foot_fl.vox | 4 +- .../voxel/npc/axolotl/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/axolotl/male/head.vox | 4 +- .../voxygen/voxel/npc/axolotl/male/tail.vox | 4 +- .../voxygen/voxel/npc/fungome/male/chest.vox | 4 +- .../voxel/npc/fungome/male/foot_bl.vox | 4 +- .../voxel/npc/fungome/male/foot_br.vox | 4 +- .../voxel/npc/fungome/male/foot_fl.vox | 4 +- .../voxel/npc/fungome/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/fungome/male/head.vox | 2 +- .../voxygen/voxel/npc/fungome/male/tail.vox | 4 +- assets/voxygen/voxel/npc/gecko/male/Gecko.vox | 3 + assets/voxygen/voxel/npc/gecko/male/chest.vox | 4 +- .../voxygen/voxel/npc/gecko/male/foot_bl.vox | 4 +- .../voxygen/voxel/npc/gecko/male/foot_br.vox | 4 +- .../voxygen/voxel/npc/gecko/male/foot_fl.vox | 4 +- .../voxygen/voxel/npc/gecko/male/foot_fr.vox | 4 +- assets/voxygen/voxel/npc/gecko/male/head.vox | 4 +- assets/voxygen/voxel/npc/gecko/male/tail.vox | 4 +- assets/voxygen/voxel/npc/rat/male/chest.vox | 4 +- assets/voxygen/voxel/npc/rat/male/foot_bl.vox | 4 +- assets/voxygen/voxel/npc/rat/male/foot_br.vox | 4 +- assets/voxygen/voxel/npc/rat/male/foot_fl.vox | 4 +- assets/voxygen/voxel/npc/rat/male/foot_fr.vox | 4 +- assets/voxygen/voxel/npc/rat/male/head.vox | 4 +- assets/voxygen/voxel/npc/rat/male/tail.vox | 4 +- .../voxygen/voxel/npc/squirrel/male/chest.vox | 4 +- .../voxel/npc/squirrel/male/foot_bl.vox | 4 +- .../voxel/npc/squirrel/male/foot_br.vox | 4 +- .../voxel/npc/squirrel/male/foot_fl.vox | 4 +- .../voxel/npc/squirrel/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/squirrel/male/head.vox | 4 +- .../voxygen/voxel/npc/squirrel/male/tail.vox | 4 +- .../voxygen/voxel/npc/turtle/male/chest.vox | 4 +- .../voxygen/voxel/npc/turtle/male/foot_bl.vox | 4 +- .../voxygen/voxel/npc/turtle/male/foot_br.vox | 4 +- .../voxygen/voxel/npc/turtle/male/foot_fl.vox | 4 +- .../voxygen/voxel/npc/turtle/male/foot_fr.vox | 4 +- assets/voxygen/voxel/npc/turtle/male/head.vox | 4 +- assets/voxygen/voxel/npc/turtle/male/tail.vox | 4 +- .../quadruped_small_central_manifest.ron | 118 +++++++++--------- .../quadruped_small_lateral_manifest.ron | 96 +++++++------- 46 files changed, 195 insertions(+), 192 deletions(-) create mode 100644 assets/voxygen/voxel/npc/gecko/male/Gecko.vox diff --git a/assets/common/items/armor/starter/glider.ron b/assets/common/items/armor/starter/glider.ron index 71b5c99ab7..1fbc908b57 100644 --- a/assets/common/items/armor/starter/glider.ron +++ b/assets/common/items/armor/starter/glider.ron @@ -3,7 +3,7 @@ Item( description: "Thank goodness for big pockets", kind: Glider( ( - kind: Blue, - ) + kind: "Blue", + ), ), ) diff --git a/assets/voxygen/voxel/npc/axolotl/male/chest.vox b/assets/voxygen/voxel/npc/axolotl/male/chest.vox index f69772001d..7dee3f7798 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/chest.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:dda43f9641dfe78022973ce1a1d5631fe066e2f90a6a5f4d7f407478f7acacaa +size 1620 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox index aabf0927e7..24830ba05d 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:0a06dd06be133f1b79f2ea03a28219ab58de825c3206e87b55dead31aca9d819 +size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_br.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_br.vox index aabf0927e7..f20993770c 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:a420eb460e44c4ff45303a63bd375d9648247aba82649fe7d39c56a1d3229ab2 +size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox index aabf0927e7..ae9e61784e 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:41232e14058833068511c1a10c79696fe922c379b818544e22ed260d753b4f31 +size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox b/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox index aabf0927e7..54b295b91c 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:69f4882d537b341f38b4d1f0cfa48d75adf74e0ae57afda66b3b79b388a41d05 +size 1144 diff --git a/assets/voxygen/voxel/npc/axolotl/male/head.vox b/assets/voxygen/voxel/npc/axolotl/male/head.vox index 9a5982b2de..6009c965c4 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/head.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 -size 1376 +oid sha256:9b976fba45fd1c0cb0c53425a96463f54ae6caba179b1bb7bb4896b61f029465 +size 1720 diff --git a/assets/voxygen/voxel/npc/axolotl/male/tail.vox b/assets/voxygen/voxel/npc/axolotl/male/tail.vox index 20bbc2175d..e5cf6777d0 100644 --- a/assets/voxygen/voxel/npc/axolotl/male/tail.vox +++ b/assets/voxygen/voxel/npc/axolotl/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:e97951913ea37b36abafd3396747c1b195691ad4851fe7b5404a3537b04185be +size 1296 diff --git a/assets/voxygen/voxel/npc/fungome/male/chest.vox b/assets/voxygen/voxel/npc/fungome/male/chest.vox index f69772001d..b7ff36981e 100644 --- a/assets/voxygen/voxel/npc/fungome/male/chest.vox +++ b/assets/voxygen/voxel/npc/fungome/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:441160398e5113e32af491d863e0ad7e599f0846d6844c3fb572179cb28bb374 +size 3232 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox index aabf0927e7..e5db739148 100644 --- a/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/fungome/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:45c80e397249aa2b0518ee53f3edee8a37e888e549d56f0666b6ad1f608f481b +size 1136 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_br.vox b/assets/voxygen/voxel/npc/fungome/male/foot_br.vox index aabf0927e7..7bee9878ac 100644 --- a/assets/voxygen/voxel/npc/fungome/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/fungome/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:f483a3d6fcc6cf3a2599037d3de3159d54a23887ff7ea50f4307b558176043e8 +size 1136 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox index aabf0927e7..e475b5f432 100644 --- a/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/fungome/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:d4c3b9b5efe26218bc9931f28ae1cd616401e8813ee88bf64bb1f8d81c082932 +size 1140 diff --git a/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox b/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox index aabf0927e7..354634f21a 100644 --- a/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/fungome/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:716c8f36e39e340b4c2527548a5fc98276ae1403da488cc9e1533baa7f162206 +size 1140 diff --git a/assets/voxygen/voxel/npc/fungome/male/head.vox b/assets/voxygen/voxel/npc/fungome/male/head.vox index 9a5982b2de..b60f4f96c7 100644 --- a/assets/voxygen/voxel/npc/fungome/male/head.vox +++ b/assets/voxygen/voxel/npc/fungome/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 +oid sha256:9553a7bc4e35153a96496a3d3ebc76d1cc896295e37ac057afd5c6c57f38b8bf size 1376 diff --git a/assets/voxygen/voxel/npc/fungome/male/tail.vox b/assets/voxygen/voxel/npc/fungome/male/tail.vox index 20bbc2175d..ecb3fd96d8 100644 --- a/assets/voxygen/voxel/npc/fungome/male/tail.vox +++ b/assets/voxygen/voxel/npc/fungome/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:5261b24daf690fa32394fe14ef0b98a38c66f73fddffc233098cd4e2ac46952a +size 1152 diff --git a/assets/voxygen/voxel/npc/gecko/male/Gecko.vox b/assets/voxygen/voxel/npc/gecko/male/Gecko.vox new file mode 100644 index 0000000000..9d9bcbae4c --- /dev/null +++ b/assets/voxygen/voxel/npc/gecko/male/Gecko.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68ba19e7cea78b0523ed843f958700d4a0c55cd63adf1f04968d6d0f0015f963 +size 57760 diff --git a/assets/voxygen/voxel/npc/gecko/male/chest.vox b/assets/voxygen/voxel/npc/gecko/male/chest.vox index f69772001d..b4dc2aa512 100644 --- a/assets/voxygen/voxel/npc/gecko/male/chest.vox +++ b/assets/voxygen/voxel/npc/gecko/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:a3aa5edc7b6a6d22e4ee15f8d6f4968683d735b1317543664606bf0f5fd25d1f +size 1520 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox index aabf0927e7..7c33087036 100644 --- a/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/gecko/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:1f3cba80c04f52cd2d80480ccf54fc8b337c9708f27829f507786c8dc38a5b85 +size 1172 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_br.vox b/assets/voxygen/voxel/npc/gecko/male/foot_br.vox index aabf0927e7..a69038267d 100644 --- a/assets/voxygen/voxel/npc/gecko/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/gecko/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:557b86d32a5c7be5430ca05b2361ab4b9019e1fd299df6f77e608ca19af30306 +size 1172 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox index aabf0927e7..e4cf0ff28f 100644 --- a/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/gecko/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:4ec3ee19ab326fa7a0cd5e19ef3be23ac0237ba7c1eb7b2b16bbbdfc6ebaf840 +size 1168 diff --git a/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox b/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox index aabf0927e7..70096b9e7e 100644 --- a/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/gecko/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:3b88bb9fc3942cecb9618f95b77285ef802804144432f226e2834fff5c9c35d1 +size 1168 diff --git a/assets/voxygen/voxel/npc/gecko/male/head.vox b/assets/voxygen/voxel/npc/gecko/male/head.vox index 9a5982b2de..c519dbc332 100644 --- a/assets/voxygen/voxel/npc/gecko/male/head.vox +++ b/assets/voxygen/voxel/npc/gecko/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 -size 1376 +oid sha256:408c5c39f9bfc11b2e09aad99ef426105f238497db8dc4472c16ed8a931b9245 +size 1448 diff --git a/assets/voxygen/voxel/npc/gecko/male/tail.vox b/assets/voxygen/voxel/npc/gecko/male/tail.vox index 20bbc2175d..9d7bd7bf9b 100644 --- a/assets/voxygen/voxel/npc/gecko/male/tail.vox +++ b/assets/voxygen/voxel/npc/gecko/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:31ed3ef9b5ee8d940aec71ff228a3d59282e682080cd564741bf6f839f35e9b1 +size 1244 diff --git a/assets/voxygen/voxel/npc/rat/male/chest.vox b/assets/voxygen/voxel/npc/rat/male/chest.vox index f69772001d..d8edee27a0 100644 --- a/assets/voxygen/voxel/npc/rat/male/chest.vox +++ b/assets/voxygen/voxel/npc/rat/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:084cc64dd136be14aadda98272bb173c92aebcdb40a3f4585fffe4d04930b292 +size 2496 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox index aabf0927e7..d5af76f775 100644 --- a/assets/voxygen/voxel/npc/rat/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/rat/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:ceb18e0a3e013afe4075785a839ed914c4755e81a16bed46c01d827868ab1252 +size 1252 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_br.vox b/assets/voxygen/voxel/npc/rat/male/foot_br.vox index aabf0927e7..7a7ccceff5 100644 --- a/assets/voxygen/voxel/npc/rat/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/rat/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:551f46a05076f7b3a6275022214fe065d77d237a6a18369522b466d1a4fa5640 +size 1252 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox index aabf0927e7..14424ecf37 100644 --- a/assets/voxygen/voxel/npc/rat/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/rat/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:f9e15fb7b2dc36448630f58dd4ac9b28915333c00ead3e725c96cf74c0d4ea92 +size 1212 diff --git a/assets/voxygen/voxel/npc/rat/male/foot_fr.vox b/assets/voxygen/voxel/npc/rat/male/foot_fr.vox index aabf0927e7..53cc39f5c8 100644 --- a/assets/voxygen/voxel/npc/rat/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/rat/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:3737a737eb014cb6827b440e67e4a52371c625a5e106614a200f22f0c8f7fe88 +size 1212 diff --git a/assets/voxygen/voxel/npc/rat/male/head.vox b/assets/voxygen/voxel/npc/rat/male/head.vox index 9a5982b2de..e7ad166cd9 100644 --- a/assets/voxygen/voxel/npc/rat/male/head.vox +++ b/assets/voxygen/voxel/npc/rat/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 -size 1376 +oid sha256:f119fe7e2ed296409067435fa265c1fa4ed72db4e19e3a071066ec05602ee92a +size 1764 diff --git a/assets/voxygen/voxel/npc/rat/male/tail.vox b/assets/voxygen/voxel/npc/rat/male/tail.vox index 20bbc2175d..19146aef3a 100644 --- a/assets/voxygen/voxel/npc/rat/male/tail.vox +++ b/assets/voxygen/voxel/npc/rat/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:460873a67187d6e0a803adddf4addddf8639c80f9e3421ba986fbce2b2023a01 +size 1144 diff --git a/assets/voxygen/voxel/npc/squirrel/male/chest.vox b/assets/voxygen/voxel/npc/squirrel/male/chest.vox index f69772001d..4b65651486 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/chest.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:b04457ba1cbf8a34261bf1f747ec60281342452842f51926888ed35569ee1625 +size 1592 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox index aabf0927e7..e182b859ec 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:d7d463014e1c784e08624a38258cb2774fbad71eb614a68bc98b03625b06fb49 +size 1228 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox index aabf0927e7..30916052e7 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:5f0a23389787d24a9905624a8eafe305dd62e81812afa9111ad2ce4f1ad7aa13 +size 1228 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox index aabf0927e7..525b66ba8c 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:c7c52ef287399626b4d05e8f87e852d6676fafb1a7b672f6b2dfcadc015f7a76 +size 1164 diff --git a/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox index aabf0927e7..9d7daad053 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:5790e56ac318979f9df0e85f35fe41c4b2afb9b20a7d1c2414fe99ebd57c1be9 +size 1164 diff --git a/assets/voxygen/voxel/npc/squirrel/male/head.vox b/assets/voxygen/voxel/npc/squirrel/male/head.vox index 9a5982b2de..e0664c5963 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/head.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 -size 1376 +oid sha256:e26df69715d627ff5daa924149c231fd534370ece0980ed5be8a38a896ff93af +size 1504 diff --git a/assets/voxygen/voxel/npc/squirrel/male/tail.vox b/assets/voxygen/voxel/npc/squirrel/male/tail.vox index 20bbc2175d..a6c8f06aaf 100644 --- a/assets/voxygen/voxel/npc/squirrel/male/tail.vox +++ b/assets/voxygen/voxel/npc/squirrel/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:034b2a8c751c6def961922e1f55e2c00d2a8483e27e2245e3d1f387ac2515599 +size 1568 diff --git a/assets/voxygen/voxel/npc/turtle/male/chest.vox b/assets/voxygen/voxel/npc/turtle/male/chest.vox index f69772001d..ad99eafef9 100644 --- a/assets/voxygen/voxel/npc/turtle/male/chest.vox +++ b/assets/voxygen/voxel/npc/turtle/male/chest.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0775e3698498c2e4c37cfb688574e8f007091339f432ae62c6b140960a9469b2 -size 3736 +oid sha256:5aa6f436cc4ffa41a2e4f88d5ec3ccaef0169d80d4c2879d49302dc70f720984 +size 4720 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox index aabf0927e7..696ab221ab 100644 --- a/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/turtle/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:1aabc60fe30c1f38e89ff8cfe770444baf9a5e2bd4060b56ba46ac0835460ef6 +size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_br.vox b/assets/voxygen/voxel/npc/turtle/male/foot_br.vox index aabf0927e7..902863660f 100644 --- a/assets/voxygen/voxel/npc/turtle/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/turtle/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:7ad6e9be4ddeb03f103355b46eac6ff5fd01abac012183a099b283b5cedfe659 +size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox index aabf0927e7..0ef897e45b 100644 --- a/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/turtle/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:60cde6297e3bcec71278065f8e23dbf5cb6d318d9fc1d3d0c2f261c5d3d09e2b +size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox b/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox index aabf0927e7..d0171602ec 100644 --- a/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/turtle/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3299c704002ab62aa14d0b0aa2da336e5c87b2fe3f3e226d67f0cd3e0f2bd983 -size 1128 +oid sha256:b3350eba7a511b981d049449754c43a1133911f7724d8e96aef078b833f72f92 +size 1180 diff --git a/assets/voxygen/voxel/npc/turtle/male/head.vox b/assets/voxygen/voxel/npc/turtle/male/head.vox index 9a5982b2de..fbae3fe559 100644 --- a/assets/voxygen/voxel/npc/turtle/male/head.vox +++ b/assets/voxygen/voxel/npc/turtle/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986b4105c5302fe05a466091294d4e97659565502ae9da71de79466432417b04 -size 1376 +oid sha256:ea582767e58543c853ecf51543e998063aa59c79eba9f5b8a55f09bff0af4e0a +size 1524 diff --git a/assets/voxygen/voxel/npc/turtle/male/tail.vox b/assets/voxygen/voxel/npc/turtle/male/tail.vox index 20bbc2175d..0d84ef37cc 100644 --- a/assets/voxygen/voxel/npc/turtle/male/tail.vox +++ b/assets/voxygen/voxel/npc/turtle/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24e458ceb1dde4d39a7f372c897d4393ccfbced455fdd08bca558ed060695ab -size 1116 +oid sha256:4b1160b6d35d52f78dced3f27a918bf34f9e3a5211cec6108afdced869a3352c +size 1184 diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index bd4954de7a..66e16a7231 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -464,170 +464,170 @@ ), (Rat, Male):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-4.5, 0.0, -3.0), + central: ("npc.rat.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.frog.male.chest"), + offset: (-3.5, -5.5, -3.5), + central: ("npc.rat.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-0.5, -12.0, -3.0), + central: ("npc.rat.male.tail"), ), ), (Rat, Female):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-4.5, 0.0, -3.0), + central: ("npc.rat.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.frog.male.chest"), + offset: (-3.5, -5.5, -3.5), + central: ("npc.rat.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-0.5, -12.0, -3.0), + central: ("npc.rat.male.tail"), ), ), (Axolotl, Male):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-5.5, 0.0, -3.0), + central: ("npc.axolotl.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.frog.male.chest"), + offset: (-2.5, -5.0, -2.5), + central: ("npc.axolotl.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -10.0, -2.5), + central: ("npc.axolotl.male.tail"), ), ), (Axolotl, Female):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-5.5, 0.0, -3.0), + central: ("npc.axolotl.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.frog.male.chest"), + offset: (-2.5, -5.0, -3.5), + central: ("npc.axolotl.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -10.0, -2.5), + central: ("npc.axolotl.male.tail"), ), ), (Gecko, Male):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-2.5, 0.0, -2.0), + central: ("npc.gecko.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), - central: ("npc.frog.male.chest"), + offset: (-2.5, -5.0, -1.5), + central: ("npc.gecko.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -12.0, -1.5), + central: ("npc.gecko.male.tail"), ), ), (Gecko, Female):( head: ( - offset: (-3.5, 0.0, -3.0), - central: ("npc.frog.male.head"), + offset: (-2.5, 0.0, -2.0), + central: ("npc.gecko.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-2.5, -5.0, -1.5), central: ("npc.gecko.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -12.0, -1.5), + central: ("npc.gecko.male.tail"), ), ), (Turtle, Male):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-2.5, 0.0, -1.5), central: ("npc.turtle.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-6.5, -7.0, -4.0), central: ("npc.turtle.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -6.0, -1.0), + central: ("npc.turtle.male.tail"), ), ), (Turtle, Female):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-2.5, 0.0, -1.5), central: ("npc.turtle.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-6.5, -7.0, -4.0), central: ("npc.turtle.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.5, -6.0, -1.0), + central: ("npc.turtle.male.tail"), ), ), (Squirrel, Male):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-2.5, 0.0, -2.5), central: ("npc.squirrel.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-2.5, -4.0, -2.5), central: ("npc.squirrel.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-2.5, -8.0, -2.0), + central: ("npc.squirrel.male.tail"), ), ), (Squirrel, Female):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-2.5, 0.0, -2.5), central: ("npc.squirrel.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-2.5, -4.0, -2.5), central: ("npc.squirrel.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-2.5, -8.0, -2.0), + central: ("npc.squirrel.male.tail"), ), ), (Fungome, Male):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-3.0, 0.0, -2.0), central: ("npc.fungome.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-7.0, -7.0, -4.0), central: ("npc.fungome.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.0, -5.0, -1.0), + central: ("npc.fungome.male.tail"), ), ), (Fungome, Female):( head: ( - offset: (-3.5, 0.0, -3.0), + offset: (-3.0, 0.0, -2.0), central: ("npc.fungome.male.head"), ), chest: ( - offset: (-3.5, -5.0, -3.0), + offset: (-7.0, -7.0, -4.0), central: ("npc.fungome.male.chest"), ), tail: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-1.0, -5.0, -1.0), + central: ("npc.fungome.male.tail"), ), ), (Porcupine, Male):( diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index b7dea48055..1c91b5b8d1 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -595,217 +595,217 @@ ), (Rat, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -2.0, -4.0), lateral: ("npc.rat.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -2.0, -4.0), lateral: ("npc.rat.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.rat.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.rat.male.foot_br"), ), ), (Rat, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -2.0, -4.0), lateral: ("npc.rat.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -2.0, -4.0), lateral: ("npc.rat.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.rat.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.5, -6.0), lateral: ("npc.rat.male.foot_br"), ), ), (Axolotl, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-5.5, -0.5, -3.0), lateral: ("npc.axolotl.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -0.5, -3.0), lateral: ("npc.axolotl.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-5.5, -3.5, -3.0), lateral: ("npc.axolotl.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -3.5, -3.0), lateral: ("npc.axolotl.male.foot_br"), ), ), (Axolotl, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-5.5, -0.5, -3.0), lateral: ("npc.axolotl.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -0.5, -3.0), lateral: ("npc.axolotl.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-5.5, -3.5, -3.0), lateral: ("npc.axolotl.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -3.5, -3.0), lateral: ("npc.axolotl.male.foot_br"), ), ), (Gecko, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-5.5, -1.0, -3.5), lateral: ("npc.gecko.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -1.0, -3.5), lateral: ("npc.gecko.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-5.5, -4.0, -3.5), lateral: ("npc.gecko.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -4.0, -3.5), lateral: ("npc.gecko.male.foot_br"), ), ), (Gecko, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-5.5, -1.0, -3.5), lateral: ("npc.gecko.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -1.0, -3.5), lateral: ("npc.gecko.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-5.5, -4.0, -3.5), lateral: ("npc.gecko.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -4.0, -3.5), lateral: ("npc.gecko.male.foot_br"), ), ), (Turtle, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -0.5, -4.0), lateral: ("npc.turtle.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -0.5, -4.0), lateral: ("npc.turtle.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.turtle.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.turtle.male.foot_br"), ), ), (Turtle, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -0.5, -4.0), lateral: ("npc.turtle.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -0.5, -4.0), lateral: ("npc.turtle.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.turtle.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.0, -2.5, -4.0), lateral: ("npc.turtle.male.foot_br"), ), ), (Squirrel, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -1.5, -4.0), lateral: ("npc.squirrel.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -1.5, -4.0), lateral: ("npc.squirrel.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.0, -5.0), lateral: ("npc.squirrel.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.0, -5.0), lateral: ("npc.squirrel.male.foot_br"), ), ), (Squirrel, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -1.5, -4.0), lateral: ("npc.squirrel.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-1.5, -1.5, -4.0), lateral: ("npc.squirrel.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.0, -5.0), lateral: ("npc.squirrel.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-1.5, -2.0, -5.0), lateral: ("npc.squirrel.male.foot_br"), ), ), (Fungome, Male): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-2.5, -0.5, -3.0), lateral: ("npc.fungome.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -0.5, -3.0), lateral: ("npc.fungome.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.5, -1.0, -3.0), lateral: ("npc.fungome.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -1.0, -3.0), lateral: ("npc.fungome.male.foot_br"), ), ), (Fungome, Female): ( left_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-2.5, -0.5, -3.0), lateral: ("npc.fungome.male.foot_fl"), ), right_front: ( - offset: (-2.5, -2.5, -4.0), + offset: (-0.5, -0.5, -3.0), lateral: ("npc.fungome.male.foot_fr"), ), left_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-2.5, -1.0, -3.0), lateral: ("npc.fungome.male.foot_bl"), ), right_back: ( - offset: (-2.5, -3.5, -4.0), + offset: (-0.5, -1.0, -3.0), lateral: ("npc.fungome.male.foot_br"), ), ), From fecc40ad8ee7d15745b36fbebc5a226817acc629 Mon Sep 17 00:00:00 2001 From: Snowram Date: Sun, 6 Sep 2020 19:44:24 +0200 Subject: [PATCH 22/28] Better quadmed legs/feet ratio --- assets/common/npc_names.json | 6 +- .../voxel/npc/catoblepas/male/foot_fl.vox | 4 +- .../voxel/npc/catoblepas/male/foot_fr.vox | 4 +- .../voxel/npc/catoblepas/male/leg_fl.vox | 4 +- .../voxel/npc/catoblepas/male/leg_fr.vox | 4 +- .../voxel/npc/grolgar/male/foot_bl.vox | 4 +- .../voxel/npc/grolgar/male/foot_br.vox | 4 +- .../voxel/npc/grolgar/male/foot_fl.vox | 4 +- .../voxel/npc/grolgar/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/grolgar/male/leg_bl.vox | 4 +- .../voxygen/voxel/npc/grolgar/male/leg_br.vox | 4 +- .../voxygen/voxel/npc/grolgar/male/leg_fl.vox | 4 +- .../voxygen/voxel/npc/grolgar/male/leg_fr.vox | 4 +- .../male/foot_bl.vox | 0 .../male/foot_br.vox | 0 .../male/foot_fl.vox | 0 .../male/foot_fr.vox | 0 .../{hirdrassil => hirdrasil}/male/head.vox | 0 .../{hirdrassil => hirdrasil}/male/jaw.vox | 0 .../{hirdrassil => hirdrasil}/male/leg_bl.vox | 0 .../{hirdrassil => hirdrasil}/male/leg_br.vox | 0 .../{hirdrassil => hirdrasil}/male/leg_fl.vox | 0 .../{hirdrassil => hirdrasil}/male/leg_fr.vox | 0 .../voxygen/voxel/npc/hirdrasil/male/neck.vox | 3 + .../{hirdrassil => hirdrasil}/male/tail.vox | 0 .../male/torso_back.vox | 0 .../voxel/npc/hirdrasil/male/torso_front.vox | 3 + .../male => hirdrasil}/torso_front.vox | 0 .../voxel/npc/hirdrassil/male/neck.vox | 3 - .../voxygen/voxel/npc/lion/male/foot_bl.vox | 4 +- .../voxygen/voxel/npc/lion/male/foot_br.vox | 4 +- .../voxygen/voxel/npc/lion/male/foot_fl.vox | 4 +- .../voxygen/voxel/npc/lion/male/foot_fr.vox | 4 +- assets/voxygen/voxel/npc/lion/male/leg_bl.vox | 4 +- assets/voxygen/voxel/npc/lion/male/leg_br.vox | 4 +- assets/voxygen/voxel/npc/lion/male/leg_fl.vox | 4 +- assets/voxygen/voxel/npc/lion/male/leg_fr.vox | 4 +- .../voxygen/voxel/npc/tiger/male/foot_bl.vox | 4 +- .../voxygen/voxel/npc/tiger/male/foot_br.vox | 4 +- .../voxygen/voxel/npc/tiger/male/foot_fl.vox | 4 +- .../voxygen/voxel/npc/tiger/male/foot_fr.vox | 4 +- assets/voxygen/voxel/npc/tiger/male/head.vox | 2 +- assets/voxygen/voxel/npc/tiger/male/jaw.vox | 2 +- .../voxygen/voxel/npc/tiger/male/leg_bl.vox | 4 +- .../voxygen/voxel/npc/tiger/male/leg_br.vox | 4 +- .../voxygen/voxel/npc/tiger/male/leg_fl.vox | 4 +- .../voxygen/voxel/npc/tiger/male/leg_fr.vox | 4 +- assets/voxygen/voxel/npc/tiger/male/neck.vox | 4 +- .../voxel/npc/tiger/male/torso_back.vox | 4 +- .../voxel/npc/tiger/male/torso_front.vox | 2 +- .../voxel/npc/tuskram/male/foot_bl.vox | 4 +- .../voxel/npc/tuskram/male/foot_br.vox | 4 +- .../voxel/npc/tuskram/male/foot_fl.vox | 4 +- .../voxel/npc/tuskram/male/foot_fr.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_bl.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_br.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_fl.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/leg_fr.vox | 4 +- .../voxygen/voxel/npc/tuskram/male/neck.vox | 4 +- .../voxel/npc/tuskram/male/torso_front.vox | 4 +- .../quadruped_medium_central_manifest.ron | 36 ++-- .../quadruped_medium_lateral_manifest.ron | 180 +++++++++--------- common/src/comp/body/quadruped_medium.rs | 8 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 78 ++++---- 64 files changed, 243 insertions(+), 240 deletions(-) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/foot_bl.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/foot_br.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/foot_fl.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/foot_fr.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/head.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/jaw.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/leg_bl.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/leg_br.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/leg_fl.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/leg_fr.vox (100%) create mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/neck.vox rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/tail.vox (100%) rename assets/voxygen/voxel/npc/{hirdrassil => hirdrasil}/male/torso_back.vox (100%) create mode 100644 assets/voxygen/voxel/npc/hirdrasil/male/torso_front.vox rename assets/voxygen/voxel/npc/{hirdrassil/male => hirdrasil}/torso_front.vox (100%) delete mode 100644 assets/voxygen/voxel/npc/hirdrassil/male/neck.vox diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index 2484cb4486..fb5f7b2a76 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -291,9 +291,9 @@ "keyword": "deer", "generic": "Deer" }, - "hirdrassil": { - "keyword": "hirdrassil", - "generic": "Hirdrassil" + "hirdrasil": { + "keyword": "hirdrasil", + "generic": "Hirdrasil" } } }, diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox index 0bb861a008..2378aa6d83 100644 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/catoblepas/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36cd396b6676ebae90614b0b23b6234768cbf3feec21e89e9d7af1c1cf748365 -size 1984 +oid sha256:f852128a1b1dda0f6c0f0b3574070360366dcc121f758c8dd57428a7bd14a8b0 +size 1968 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/foot_fr.vox b/assets/voxygen/voxel/npc/catoblepas/male/foot_fr.vox index e5b4696b11..e2ce2d13f5 100644 --- a/assets/voxygen/voxel/npc/catoblepas/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/catoblepas/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:299eaedeee8acb0b4e0ff9a6b7ab85dde9f788e5f3a4a37da9ca9c705b7d9411 -size 1984 +oid sha256:fd9bd42b20ddd1cb83b2b98e6b70263ae6d1a69d8a72ce09e5309d9652dbc0b2 +size 1968 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox index fa70793c8c..e0a298a2cd 100644 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox +++ b/assets/voxygen/voxel/npc/catoblepas/male/leg_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3caf6830cf45638f5bebc71e1a95c0af5a685bbed19983700e6826e5e7f74025 -size 2224 +oid sha256:42c2918702fe0bfb5a999f0e32a88324e4f6fe6182498567ad29c75769da0a76 +size 2280 diff --git a/assets/voxygen/voxel/npc/catoblepas/male/leg_fr.vox b/assets/voxygen/voxel/npc/catoblepas/male/leg_fr.vox index 0cb7d1d311..c15bdf9dca 100644 --- a/assets/voxygen/voxel/npc/catoblepas/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/catoblepas/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3686d1afbcbe88864e782208c38b0e0c77278d8cd9be3950b267f31b6a1d96bc -size 2224 +oid sha256:7bc02d3904bc9532a1067ea11cccd3a3c197373ffbbead00ca1f8dc5130d0786 +size 2280 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox index efb32c8183..8cd108d0ef 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a8fad3dc54937596d94d6cee4278e20f51dcc6b87b796c3079f9a599fa97aa2d -size 1316 +oid sha256:c47ae981b9ca75752b3abf681710dd73e129382848e2bce98a2f949132bdbc35 +size 1496 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_br.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_br.vox index 4b143b4a6f..c0688db076 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c2da9531c4ac3f73c7d43ec179f90fed880ac6483ffa7b2116998605bf976a4 -size 1316 +oid sha256:9ac91eecb5da372509b85e3a088dbd9b7279ec496c0249fa08bb8b9f41c62e7f +size 1496 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox index e956683bdf..cd907abb47 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b59077d362cd7a213fadfb58ffcf6208f421a53da53113e703064dc94fed15c3 -size 1564 +oid sha256:caf9d5bc5a4ea243c404b0ee6a586b8f4db803b9986eea8aaa148746b923482e +size 1912 diff --git a/assets/voxygen/voxel/npc/grolgar/male/foot_fr.vox b/assets/voxygen/voxel/npc/grolgar/male/foot_fr.vox index a48a461ed6..23c93f0a9d 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6c85c057c0ff0d303942d6c591c14fdf5b3062ffb9db05224b2b028b88c9d21 -size 1564 +oid sha256:9d989f261ac4eccd3d2010b8bb1938151c0d9e1893c10c35b3cb608ac365078e +size 1912 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox index f7d7636d4e..57f9f93b73 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/leg_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e94f1f78999e0ebffd0a2df8767353e0a4a3e4894ff130147313b9e0b63b9d67 -size 1720 +oid sha256:8d6399c3a8fa21357d18f540d8fea0b30d720efa1506afed7da7af51438e15d2 +size 1588 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_br.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_br.vox index acabb360cf..ccf2cdf362 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb1882d71d271aaa7d79a0901df40ac6bf2219902d5b21c8530c20cf5979a3ad -size 1720 +oid sha256:aa715992284eb9b9d9a49f9a453763ea6ad5e479f5d037b16f451f0d7df01177 +size 1588 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox index f7d2b86bd0..a43052bb31 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/leg_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d27cb3b64d87584a6187dd6d9659286b21929601f355d6d6a429beceaf90dc1 -size 2048 +oid sha256:0afaa656dc9db27231d7aa323c43cf80f097de1ba82d01c1298a20cce0429e99 +size 1872 diff --git a/assets/voxygen/voxel/npc/grolgar/male/leg_fr.vox b/assets/voxygen/voxel/npc/grolgar/male/leg_fr.vox index f785e54fb5..a4df310863 100644 --- a/assets/voxygen/voxel/npc/grolgar/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/grolgar/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11b15296f442601a33790d750a8401d578b191666a654f055ee67aed1224706f -size 2048 +oid sha256:fb3d8a82145cea5908af15b3c95fef34941a8daa4c7c1090bc4102231e84a129 +size 1872 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/foot_bl.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/foot_bl.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_br.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/foot_br.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/foot_br.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/foot_fl.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/foot_fl.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox b/assets/voxygen/voxel/npc/hirdrasil/male/foot_fr.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/foot_fr.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/foot_fr.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/head.vox b/assets/voxygen/voxel/npc/hirdrasil/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/head.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/head.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox b/assets/voxygen/voxel/npc/hirdrasil/male/jaw.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/jaw.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/jaw.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/leg_bl.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/leg_bl.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_br.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/leg_br.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/leg_br.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/leg_fl.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/leg_fl.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox b/assets/voxygen/voxel/npc/hirdrasil/male/leg_fr.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/leg_fr.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/leg_fr.vox diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/neck.vox b/assets/voxygen/voxel/npc/hirdrasil/male/neck.vox new file mode 100644 index 0000000000..b113108049 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrasil/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8be1e7ee62a90e0afa0c74040faf999f3b8e0c894f28d99b51a21d8db6308192 +size 2800 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/tail.vox b/assets/voxygen/voxel/npc/hirdrasil/male/tail.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/tail.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/tail.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox b/assets/voxygen/voxel/npc/hirdrasil/male/torso_back.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/torso_back.vox rename to assets/voxygen/voxel/npc/hirdrasil/male/torso_back.vox diff --git a/assets/voxygen/voxel/npc/hirdrasil/male/torso_front.vox b/assets/voxygen/voxel/npc/hirdrasil/male/torso_front.vox new file mode 100644 index 0000000000..993aa70cc0 --- /dev/null +++ b/assets/voxygen/voxel/npc/hirdrasil/male/torso_front.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa52e4b08a06147895680476e6415b61bf7593576ddccff88cdac51aa4d5e15f +size 3656 diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox b/assets/voxygen/voxel/npc/hirdrasil/torso_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/hirdrassil/male/torso_front.vox rename to assets/voxygen/voxel/npc/hirdrasil/torso_front.vox diff --git a/assets/voxygen/voxel/npc/hirdrassil/male/neck.vox b/assets/voxygen/voxel/npc/hirdrassil/male/neck.vox deleted file mode 100644 index e38e9e4dee..0000000000 --- a/assets/voxygen/voxel/npc/hirdrassil/male/neck.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:974a71aacf4c20b7bcb8891828be573756748fb3f50942e790e0b62994ee6f15 -size 2784 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox b/assets/voxygen/voxel/npc/lion/male/foot_bl.vox index caa6986012..a5befd56c3 100644 --- a/assets/voxygen/voxel/npc/lion/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/lion/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f52555a03158b801e0b748398de1afaae702d1f50e8680459410c8e87ad451a4 -size 1344 +oid sha256:957d4b22454283b4e99c2280119776556680b6a79dc408d432c003b6226286d9 +size 1476 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_br.vox b/assets/voxygen/voxel/npc/lion/male/foot_br.vox index 863b0ec8b6..6710c2ade2 100644 --- a/assets/voxygen/voxel/npc/lion/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/lion/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f47069ee06dc088f3386a05436373afb733ac8a2bb8db68e1503e4d638043070 -size 1344 +oid sha256:fe318c93a4744e220c37744ccadb5118f38fd52a6dfd7eec574ae4f0b20f2afd +size 1476 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox b/assets/voxygen/voxel/npc/lion/male/foot_fl.vox index e5fdd31ddb..efc590cfac 100644 --- a/assets/voxygen/voxel/npc/lion/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/lion/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1232a6c70aa203f517ff5c1e84272f99ec8a691d1a01fac4963cf5290396e46 -size 1308 +oid sha256:64105ef321498314896ee0a0a0c2c36ee33ee3f5078f642f626dc02dbd8023a1 +size 1428 diff --git a/assets/voxygen/voxel/npc/lion/male/foot_fr.vox b/assets/voxygen/voxel/npc/lion/male/foot_fr.vox index b5d4ecd98f..912b8b7731 100644 --- a/assets/voxygen/voxel/npc/lion/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/lion/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9051c63f61e9e10a3eaa6625974b02db0741237c931d2fb62dedc3a4ddd2990d -size 1308 +oid sha256:10af50be30c3f4576390b2fa02d6b76f05b20f3019fc2165ba2926ebb1251d19 +size 1428 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox b/assets/voxygen/voxel/npc/lion/male/leg_bl.vox index aa5bf3eede..3f2ffc03db 100644 --- a/assets/voxygen/voxel/npc/lion/male/leg_bl.vox +++ b/assets/voxygen/voxel/npc/lion/male/leg_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9bf6beb766138ad541acebef1a4c0b6a3ba3c5eb80a1ef08f0cbdf608b57b25 -size 1588 +oid sha256:dea3c84abed1ea8aab9c9b396b3be97bdf103aa74633302eeb671980b6d75728 +size 1544 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_br.vox b/assets/voxygen/voxel/npc/lion/male/leg_br.vox index 1dac10f122..346b8b4f99 100644 --- a/assets/voxygen/voxel/npc/lion/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/lion/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9431feda9b80d726934e5fb0db1e9ff3f17fa146af81b13bd2b1f50ddc5e965 -size 1588 +oid sha256:6f43a264287889a95f7c8346b876c5b28e42b7eaa81c12c7e21df4c5a19237c3 +size 1544 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox b/assets/voxygen/voxel/npc/lion/male/leg_fl.vox index aba893c97e..4d43fa8b0f 100644 --- a/assets/voxygen/voxel/npc/lion/male/leg_fl.vox +++ b/assets/voxygen/voxel/npc/lion/male/leg_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e85ef52e3cced1d3a191c96f3525728f59cb22c5199a54d8c40e7b466727fb9e -size 1528 +oid sha256:0795d8d3e25c5380dcbc03d13cc6a15dbc11cc2063fd6f6c60185e4a469f68c4 +size 1440 diff --git a/assets/voxygen/voxel/npc/lion/male/leg_fr.vox b/assets/voxygen/voxel/npc/lion/male/leg_fr.vox index 7312111cb1..452a885ee4 100644 --- a/assets/voxygen/voxel/npc/lion/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/lion/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f21165abe9e4689eb196eacbbabaea6a55168b00c3830a3bb1c44612095ba54 -size 1528 +oid sha256:c15c6afae38bb44fb5317672ebd6e85534c6b7d14bcf7dbbfe921ffb2a14f8cb +size 1440 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox index 819c7d7efb..4fbeb4ea4a 100644 --- a/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/tiger/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2e19ddbda8aa47c07f5cfb65d2cb4050cb8d5f3694ab1137c76f2e1266aa8515 -size 1328 +oid sha256:5fc36f1582e07d01ab581cecd7f4d2f72313f9b49e3a7f772ac93f1e2a3dae8e +size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_br.vox b/assets/voxygen/voxel/npc/tiger/male/foot_br.vox index 4d8f111ca5..e1f36b6ce6 100644 --- a/assets/voxygen/voxel/npc/tiger/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/tiger/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2774120fa18ca3e0213560733855b914d7888997fa3f3107d3bd39854acc16a -size 1328 +oid sha256:226d129ca8a3ac22fc952b8478c0255627e4d8e67b90084e97abdce09291e488 +size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox b/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox index e4530bdae1..1f5fd1500d 100644 --- a/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/tiger/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd8df382684c91bc0708ef70f324eb8f7c83f601c182addde38840840c23f2ed -size 1372 +oid sha256:a277796105f0ce2dae26ce7ae5f620609316c3ecdb66ae1b63200453b1752099 +size 1464 diff --git a/assets/voxygen/voxel/npc/tiger/male/foot_fr.vox b/assets/voxygen/voxel/npc/tiger/male/foot_fr.vox index d546ee9768..e78de976cb 100644 --- a/assets/voxygen/voxel/npc/tiger/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/tiger/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c16ae266a9cb0022de6d7571e3e4db5793348934df700380bbe07f25edcba32 -size 1372 +oid sha256:085458fa1a107d454855054bd2c18796522adc276f624e1a8ce794196e5030e2 +size 1464 diff --git a/assets/voxygen/voxel/npc/tiger/male/head.vox b/assets/voxygen/voxel/npc/tiger/male/head.vox index b441012667..30e7895baa 100644 --- a/assets/voxygen/voxel/npc/tiger/male/head.vox +++ b/assets/voxygen/voxel/npc/tiger/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9999b37d5a531d224f292d929d7cc6a3efcd4d11d3f1851206d3bd0a3ce4bb76 +oid sha256:af0d5f9945faeb4f8fe71c950f55f530a493616359ed888c0c77ab3627ccdc64 size 3220 diff --git a/assets/voxygen/voxel/npc/tiger/male/jaw.vox b/assets/voxygen/voxel/npc/tiger/male/jaw.vox index 0714f7c330..98b0567a11 100644 --- a/assets/voxygen/voxel/npc/tiger/male/jaw.vox +++ b/assets/voxygen/voxel/npc/tiger/male/jaw.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11f7aeda1a4136225b84a1caba3f7de1fcf70d30803cf3cf0eb5c28fc2f127c2 +oid sha256:b59f32209dfe283cc8a685b8b10dc8a8e2e1c9a312a42be060592d1b2b5b74f2 size 1240 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox index 13e9c41222..2ac0c5494f 100644 --- a/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox +++ b/assets/voxygen/voxel/npc/tiger/male/leg_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f4fccbc3635759e620f27492eb18ff75e6e9b342d7a06ab8b3a5a5fd9cc3106 -size 1640 +oid sha256:afee004920aa78cb665e10710a92cd3133741ea648687bbf2c0f69dad17c664b +size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_br.vox b/assets/voxygen/voxel/npc/tiger/male/leg_br.vox index 8ff8305f6d..583e717d6f 100644 --- a/assets/voxygen/voxel/npc/tiger/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/tiger/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e0add5116505b375ee75a705028f800fb72e24cf1056dd40a8506954da355d3 -size 1640 +oid sha256:c445d64098d8b966db98138de3730d798834285425fd3f9cc2eb8656416b5c1b +size 1512 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox b/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox index a02904c910..b7f35b0181 100644 --- a/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox +++ b/assets/voxygen/voxel/npc/tiger/male/leg_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f731c2714243a9b17c026986b22d7f913e56c5c45c32da882eee27aebc4aa929 -size 1636 +oid sha256:56987d55e8988bd14133ba78a1f7686a0e40f921c995900fa49d27f526ad9d42 +size 1580 diff --git a/assets/voxygen/voxel/npc/tiger/male/leg_fr.vox b/assets/voxygen/voxel/npc/tiger/male/leg_fr.vox index e4b0749159..74eee4b336 100644 --- a/assets/voxygen/voxel/npc/tiger/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/tiger/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:becfa3d7edf43c34378fde2ebc9254fd99635d89ee58babf1216dce76721b8b3 -size 1636 +oid sha256:c1783a001f84ec45f16f08a525aaf42b6b88e36743fd3be06d1e8802047850c7 +size 1580 diff --git a/assets/voxygen/voxel/npc/tiger/male/neck.vox b/assets/voxygen/voxel/npc/tiger/male/neck.vox index 627248724d..56c7dbcc5d 100644 --- a/assets/voxygen/voxel/npc/tiger/male/neck.vox +++ b/assets/voxygen/voxel/npc/tiger/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3f2c3ef17593009168b4f7ee6ebd5f6119a58f5a815a927383edab5d6ff4579 -size 2124 +oid sha256:e8f4594b0c96169e6cac8d9631f726e4e69cec7d3f5f33f48b328e53444b8c90 +size 2424 diff --git a/assets/voxygen/voxel/npc/tiger/male/torso_back.vox b/assets/voxygen/voxel/npc/tiger/male/torso_back.vox index 9bf1866628..3b9c285596 100644 --- a/assets/voxygen/voxel/npc/tiger/male/torso_back.vox +++ b/assets/voxygen/voxel/npc/tiger/male/torso_back.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3d36feec8d21c89f48deb58629b6518c3163cf40d7ba19a7042f36e33331133 -size 4660 +oid sha256:8666513c4f911a8da957c214b6e3e0bf84149a5f262afc41471b4f84e4e13f9c +size 5236 diff --git a/assets/voxygen/voxel/npc/tiger/male/torso_front.vox b/assets/voxygen/voxel/npc/tiger/male/torso_front.vox index 9c278ce34a..52711f8197 100644 --- a/assets/voxygen/voxel/npc/tiger/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/tiger/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cd842de8a4b9831d2c1b9e12fbc7ad49ed8e6ff02fca23492b189d5f65c0354 +oid sha256:9f2348de485f1e1ab2b2bf40e10d517a54400a1ef73b2ae499f6db5ddd84e9a4 size 6196 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox index 2dee7b8a8c..cff8a41e09 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bacb74898e1424f8da52e2ed13e1b0851ef59cf7b41a300ba541538f51009136 -size 1288 +oid sha256:2e456782a34461d944feed285c31558fa4b0232b4152c90f02bcda0ad28edf73 +size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox index deec278db7..7b68f3b280 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a04ae98a07ab025c19b26a0e26096593e88dabcda9ba71728ba1bc76eb90e2c5 -size 1288 +oid sha256:c47e6b396fed4b4875e11f10c00240c9e97b5e2765feca0edcaf7b6c423aa846 +size 1412 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox index 33575ac5c7..f0d059013b 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60f41f842b6d5a340b586fac511e3ddc441a48aca50a7b147ea9a986bfd6845b -size 1348 +oid sha256:f9ba5463684946e1a13270e079b87bd51071e20506622307c28f5f182cc88e0d +size 1500 diff --git a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox index 78c08d2584..ce7982ae96 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/foot_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b06f357f56c9e0567ed7474e4ddb4f8adfbc1bcd3d6968ae3cbd09eb3c83536 -size 1348 +oid sha256:b7b14cb13d878d073b982801179873c65d19880975f86d1734ac8729a57ea309 +size 1500 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox index 5887cef4c9..530a5cd6a5 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_bl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82bacb5173c205bdefacc3125b1626cbb91dbd205901511c4e085096a63f88f6 -size 1512 +oid sha256:9d327bf97ccd7bbe82f4d8415466b70007d4c88ec7b32fc633c2c9de10af0917 +size 1460 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox index 59a3a974b3..1afa6ac8f9 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_br.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e86ebe755bd518b20900d09ebd8385b0b70cbce604a9c4cbf58385ebd03a655 -size 1512 +oid sha256:3f03f866f9d6a001ac1969d6eb4883f49cb6d6e0e6a648964ca10c591ef82c91 +size 1460 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox index aa39e44650..b4aacb93a5 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_fl.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f15a0b8d971d88ca2f718f01148c79a93765a2a3a3c77993fe22858786fc2c8c -size 1528 +oid sha256:db5d9e78e9c0d2e3af48c5961a4f0f82857cb044a109ddb9e07ffa6b81b0b7c5 +size 1432 diff --git a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox index f213db33e3..3b7f0d803f 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/leg_fr.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45dc4382a63c33326f45b68895de3a5f8275413bf3105f5b961e538e9cae9f7e -size 1528 +oid sha256:1f4f35838fa43f23662a44c21eb2d6ef17a26e49ee76a18d187bf0b78c2d6a14 +size 1432 diff --git a/assets/voxygen/voxel/npc/tuskram/male/neck.vox b/assets/voxygen/voxel/npc/tuskram/male/neck.vox index a1efbe5bd4..860561f6ab 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/neck.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/neck.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:232081227b38b2b480e6433a587dd75952ac043b901536b7d4fa502f22f6c05c -size 1904 +oid sha256:6e6786377fa59115afdfa3ceb5bd03842501500eb981a78afa010c59d578f4a4 +size 2072 diff --git a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox index 7688bab3d2..ab7cd73ac8 100644 --- a/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox +++ b/assets/voxygen/voxel/npc/tuskram/male/torso_front.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b04dd83d748675fbaee2afdca25c872c4df0b9c915b3aa7350b92d702dc44f48 -size 5452 +oid sha256:bfff23a60496a1738f161bd94c2a4b0fd3f55e8da86e49c25bee8994bbe597d6 +size 5572 diff --git a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron index 3c50063065..5fb291e362 100644 --- a/assets/voxygen/voxel/quadruped_medium_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_central_manifest.ron @@ -125,7 +125,7 @@ central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -4.0, -3.5), + offset: (-4.0, -5.0, -3.5), central: ("npc.tuskram.male.neck"), ), jaw: ( @@ -155,7 +155,7 @@ central: ("npc.tuskram.male.head"), ), neck: ( - offset: (-4.0, -4.0, -3.5), + offset: (-4.0, -5.0, -3.5), central: ("npc.tuskram.male.neck"), ), jaw: ( @@ -301,7 +301,7 @@ ), (Tiger, Male): ( head: ( - offset: (-5.5, 0.0, -5.0), + offset: (-5.5, -1.0, -5.0), central: ("npc.tiger.male.head"), ), neck: ( @@ -331,7 +331,7 @@ ), (Tiger, Female): ( head: ( - offset: (-5.5, 0.0, -5.0), + offset: (-5.5, -1.0, -5.0), central: ("npc.tiger.male.head"), ), neck: ( @@ -719,26 +719,26 @@ central: ("npc.deer.male.tail"), ), ), - (Hirdrassil, Male): ( + (Hirdrasil, Male): ( head: ( offset: (-9.0, -12.0, 0.0), - central: ("npc.hirdrassil.male.head"), + central: ("npc.hirdrasil.male.head"), ), neck: ( offset: (-4.0, -4.0, -6.0), - central: ("npc.hirdrassil.male.neck"), + central: ("npc.hirdrasil.male.neck"), ), jaw: ( offset: (-1.0, 0.0, -7.0), - central: ("npc.hirdrassil.male.jaw"), + central: ("npc.hirdrasil.male.jaw"), ), torso_front: ( offset: (-4.0, -10.0, -5.5), - central: ("npc.hirdrassil.male.torso_front"), + central: ("npc.hirdrasil.male.torso_front"), ), torso_back: ( offset: (-4.0, -11.0, -4.0), - central: ("npc.hirdrassil.male.torso_back"), + central: ("npc.hirdrasil.male.torso_back"), ), ears: ( offset: (0.0, 0.0, 0.0), @@ -746,29 +746,29 @@ ), tail: ( offset: (-2.0, -2.0, 0.0), - central: ("npc.hirdrassil.male.tail"), + central: ("npc.hirdrasil.male.tail"), ), ), - (Hirdrassil, Female): ( + (Hirdrasil, Female): ( head: ( offset: (-9.0, -12.0, 0.0), - central: ("npc.hirdrassil.male.head"), + central: ("npc.hirdrasil.male.head"), ), neck: ( offset: (-4.0, -4.0, -6.0), - central: ("npc.hirdrassil.male.neck"), + central: ("npc.hirdrasil.male.neck"), ), jaw: ( offset: (-1.0, 0.0, -7.0), - central: ("npc.hirdrassil.male.jaw"), + central: ("npc.hirdrasil.male.jaw"), ), torso_front: ( offset: (-4.0, -10.0, -5.5), - central: ("npc.hirdrassil.male.torso_front"), + central: ("npc.hirdrasil.male.torso_front"), ), torso_back: ( offset: (-4.0, -11.0, -4.0), - central: ("npc.hirdrassil.male.torso_back"), + central: ("npc.hirdrasil.male.torso_back"), ), ears: ( offset: (0.0, 0.0, 0.0), @@ -776,7 +776,7 @@ ), tail: ( offset: (-2.0, -2.0, 0.0), - central: ("npc.hirdrassil.male.tail"), + central: ("npc.hirdrasil.male.tail"), ), ), }) diff --git a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron index 3eefeef7c1..a00fa3b1b8 100644 --- a/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_medium_lateral_manifest.ron @@ -1,69 +1,69 @@ ({ (Grolgar, Male): ( leg_fl: ( - offset: (-2.5, -5.0, -10.0),//these are done very case by case + offset: (-2.5, -4.5, -4.0),//these are done very case by case lateral: ("npc.grolgar.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -5.0, -10.0), + offset: (-2.5, -4.5, -4.0), lateral: ("npc.grolgar.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.5, -5.0), + offset: (-2.5, -3.5, -3.5), lateral: ("npc.grolgar.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.5, -5.0), + offset: (-2.0, -3.5, -3.5), lateral: ("npc.grolgar.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -6.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -6.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -4.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -4.0),//y pivot should be -1/4 of the y dimension of the model + offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_br"), ), ), (Grolgar, Female): ( leg_fl: ( - offset: (-2.5, -5.0, -10.0), + offset: (-2.5, -4.5, -4.0),//these are done very case by case lateral: ("npc.grolgar.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -5.0, -10.0), + offset: (-2.5, -4.5, -4.0), lateral: ("npc.grolgar.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.5, -5.0), + offset: (-2.5, -3.5, -3.5), lateral: ("npc.grolgar.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.5, -5.0), + offset: (-2.0, -3.5, -3.5), lateral: ("npc.grolgar.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -4.5, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -4.0), + offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -4.0), + offset: (-2.5, -2.0, -8.0),//y pivot should be -1/4 of the y dimension of the model lateral: ("npc.grolgar.male.foot_br"), ), ), @@ -137,137 +137,137 @@ ), (Tuskram, Male): ( leg_fl: ( - offset: (-2.0, -2.5, -10.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -2.5, -10.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -2.5, -4.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -2.5, -4.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tuskram.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tuskram.male.foot_fr"), ), foot_bl: ( - offset: (-1.5, -1.5, -6.0), + offset: (-1.5, -1.5, -8.0), lateral: ("npc.tuskram.male.foot_bl"), ), foot_br: ( - offset: (-1.5, -1.5, -6.0), + offset: (-1.5, -1.5, -8.0), lateral: ("npc.tuskram.male.foot_br"), ), ), (Tuskram, Female): ( leg_fl: ( - offset: (-2.0, -2.5, -10.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -2.5, -10.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -2.5, -4.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -2.5, -4.0), + offset: (-2.0, -2.5, -3.0), lateral: ("npc.tuskram.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tuskram.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tuskram.male.foot_fr"), ), foot_bl: ( - offset: (-1.5, -1.5, -6.0), + offset: (-1.5, -1.5, -8.0), lateral: ("npc.tuskram.male.foot_bl"), ), foot_br: ( - offset: (-1.5, -1.5, -6.0), + offset: (-1.5, -1.5, -8.0), lateral: ("npc.tuskram.male.foot_br"), ), ), (Lion, Male): ( leg_fl: ( - offset: (-2.0, -2.5, -7.5), + offset: (-2.0, -2.5, -3.5), lateral: ("npc.lion.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -2.5, -7.5), + offset: (-2.0, -2.5, -3.5), lateral: ("npc.lion.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -6.0), + offset: (-2.0, -3.0, -3.5), lateral: ("npc.lion.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -6.0), + offset: (-2.0, -3.0, -3.5), lateral: ("npc.lion.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_br"), ), ), (Lion, Female): ( leg_fl: ( - offset: (-2.0, -2.5, -7.5), + offset: (-2.0, -2.5, -3.5), lateral: ("npc.lion.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -2.5, -7.5), + offset: (-2.0, -2.5, -3.5), lateral: ("npc.lion.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -6.0), + offset: (-2.0, -3.0, -3.5), lateral: ("npc.lion.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -6.0), + offset: (-2.0, -3.0, -3.5), lateral: ("npc.lion.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -5.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.lion.male.foot_br"), ), ), @@ -341,69 +341,69 @@ ), (Tiger, Male): ( leg_fl: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -4.0), lateral: ("npc.tiger.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -4.0), lateral: ("npc.tiger.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -3.0), lateral: ("npc.tiger.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -3.0), lateral: ("npc.tiger.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -7.0), lateral: ("npc.tiger.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -7.0), lateral: ("npc.tiger.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tiger.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tiger.male.foot_br"), ), ), (Tiger, Female): ( leg_fl: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -4.0), lateral: ("npc.tiger.male.leg_fl"), ), leg_fr: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -4.0), lateral: ("npc.tiger.male.leg_fr"), ), leg_bl: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -3.0), lateral: ("npc.tiger.male.leg_bl"), ), leg_br: ( - offset: (-2.0, -3.0, -10.0), + offset: (-2.0, -3.0, -3.0), lateral: ("npc.tiger.male.leg_br"), ), foot_fl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -7.0), lateral: ("npc.tiger.male.foot_fl"), ), foot_fr: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -7.0), lateral: ("npc.tiger.male.foot_fr"), ), foot_bl: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tiger.male.foot_bl"), ), foot_br: ( - offset: (-2.5, -2.0, -6.0), + offset: (-2.5, -2.0, -8.0), lateral: ("npc.tiger.male.foot_br"), ), ), @@ -613,11 +613,11 @@ ), (Catoblepas, Male): ( leg_fl: ( - offset: (-2.5, -4.0, -4.5), + offset: (-2.5, -4.0, -5.0), lateral: ("npc.catoblepas.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -4.0, -4.5), + offset: (-2.5, -4.0, -5.0), lateral: ("npc.catoblepas.male.leg_fr"), ), leg_bl: ( @@ -629,11 +629,11 @@ lateral: ("npc.catoblepas.male.leg_br"), ), foot_fl: ( - offset: (-3.0, -7.0, -11.0), + offset: (-3.0, -3.0, -9.0), lateral: ("npc.catoblepas.male.foot_fl"), ), foot_fr: ( - offset: (-3.0, -7.0, -11.0), + offset: (-3.0, -3.0, -9.0), lateral: ("npc.catoblepas.male.foot_fr"), ), foot_bl: ( @@ -647,11 +647,11 @@ ), (Catoblepas, Female): ( leg_fl: ( - offset: (-2.5, -4.0, -4.5), + offset: (-2.5, -4.0, -5.0), lateral: ("npc.catoblepas.male.leg_fl"), ), leg_fr: ( - offset: (-2.5, -4.0, -4.5), + offset: (-2.5, -4.0, -5.0), lateral: ("npc.catoblepas.male.leg_fr"), ), leg_bl: ( @@ -663,11 +663,11 @@ lateral: ("npc.catoblepas.male.leg_br"), ), foot_fl: ( - offset: (-3.0, -7.0, -11.0), + offset: (-3.0, -3.0, -9.0), lateral: ("npc.catoblepas.male.foot_fl"), ), foot_fr: ( - offset: (-3.0, -7.0, -11.0), + offset: (-3.0, -3.0, -9.0), lateral: ("npc.catoblepas.male.foot_fr"), ), foot_bl: ( @@ -815,72 +815,72 @@ lateral: ("npc.deer.female.foot_br"), ), ), - (Hirdrassil, Male): ( + (Hirdrasil, Male): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrassil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fl"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrassil.male.leg_fr"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrassil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_bl"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrassil.male.leg_br"), + lateral: ("npc.hirdrasil.male.leg_br"), ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrassil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fl"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrassil.male.foot_fr"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrassil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_bl"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrassil.male.foot_br"), + lateral: ("npc.hirdrasil.male.foot_br"), ), ), - (Hirdrassil, Female): ( + (Hirdrasil, Female): ( leg_fl: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrassil.male.leg_fl"), + lateral: ("npc.hirdrasil.male.leg_fl"), ), leg_fr: ( offset: (-1.5, -3.0, -4.0), - lateral: ("npc.hirdrassil.male.leg_fr"), + lateral: ("npc.hirdrasil.male.leg_fr"), ), leg_bl: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrassil.male.leg_bl"), + lateral: ("npc.hirdrasil.male.leg_bl"), ), leg_br: ( offset: (-2.0, -2.5, -5.0), - lateral: ("npc.hirdrassil.male.leg_br"), + lateral: ("npc.hirdrasil.male.leg_br"), ), foot_fl: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrassil.male.foot_fl"), + lateral: ("npc.hirdrasil.male.foot_fl"), ), foot_fr: ( offset: (-2.0, -1.0, -9.0), - lateral: ("npc.hirdrassil.male.foot_fr"), + lateral: ("npc.hirdrasil.male.foot_fr"), ), foot_bl: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrassil.male.foot_bl"), + lateral: ("npc.hirdrasil.male.foot_bl"), ), foot_br: ( offset: (-2.0, -2.5, -7.0), - lateral: ("npc.hirdrassil.male.foot_br"), + lateral: ("npc.hirdrasil.male.foot_br"), ), ), }) diff --git a/common/src/comp/body/quadruped_medium.rs b/common/src/comp/body/quadruped_medium.rs index 25f144292b..17c662e239 100644 --- a/common/src/comp/body/quadruped_medium.rs +++ b/common/src/comp/body/quadruped_medium.rs @@ -44,7 +44,7 @@ pub enum Species { Catoblepas = 11, Bonerattler = 12, Deer = 13, - Hirdrassil = 14, + Hirdrasil = 14, } /// Data representing per-species generic data. @@ -64,7 +64,7 @@ pub struct AllSpecies { pub catoblepas: SpeciesMeta, pub bonerattler: SpeciesMeta, pub deer: SpeciesMeta, - pub hirdrassil: SpeciesMeta, + pub hirdrasil: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -85,7 +85,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Catoblepas => &self.catoblepas, Species::Bonerattler => &self.bonerattler, Species::Deer => &self.deer, - Species::Hirdrassil => &self.hirdrassil, + Species::Hirdrasil => &self.hirdrasil, } } } @@ -103,7 +103,7 @@ pub const ALL_SPECIES: [Species; 13] = [ Species::Catoblepas, Species::Bonerattler, Species::Deer, - Species::Hirdrassil, + Species::Hirdrasil, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 0ed951dca2..7985b40f70 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -148,7 +148,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Bonerattler, _) => (-1.0, 2.5), (Deer, Male) => (0.5, 3.5), (Deer, Female) => (0.5, 3.5), - (Hirdrassil, _) => (0.0, 5.0), + (Hirdrasil, _) => (0.0, 5.0), }, neck: match (body.species, body.body_type) { (Grolgar, _) => (1.0, -1.0), @@ -163,7 +163,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (19.5, -2.0), (Bonerattler, _) => (7.0, -1.5), (Deer, _) => (-0.5, 1.0), - (Hirdrassil, _) => (-1.0, 0.5), + (Hirdrasil, _) => (-1.0, 0.5), }, jaw: match (body.species, body.body_type) { (Grolgar, _) => (7.0, 1.5), @@ -178,7 +178,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (1.0, -4.0), (Bonerattler, _) => (3.0, -3.0), (Deer, _) => (3.5, 2.0), - (Hirdrassil, _) => (2.5, 2.5), + (Hirdrasil, _) => (2.5, 2.5), }, tail: match (body.species, body.body_type) { (Grolgar, _) => (-11.5, -0.5), @@ -193,22 +193,22 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (-8.5, -2.0), (Bonerattler, _) => (-10.0, 1.5), (Deer, _) => (-8.5, 0.5), - (Hirdrassil, _) => (-11.0, 2.0), + (Hirdrasil, _) => (-11.0, 2.0), }, torso_front: match (body.species, body.body_type) { (Grolgar, _) => (10.0, 13.0), (Saber, _) => (14.0, 14.0), (Tuskram, _) => (10.0, 14.5), - (Lion, _) => (10.0, 14.0), + (Lion, _) => (10.0, 12.5), (Tarasque, _) => (11.5, 18.5), - (Tiger, _) => (10.0, 14.0), + (Tiger, _) => (10.0, 13.0), (Wolf, _) => (12.0, 13.0), (Frostfang, _) => (9.0, 11.5), (Mouflon, _) => (11.0, 13.5), (Catoblepas, _) => (7.5, 19.5), (Bonerattler, _) => (6.0, 12.5), (Deer, _) => (11.0, 13.5), - (Hirdrassil, _) => (11.0, 14.5), + (Hirdrasil, _) => (11.0, 14.5), }, torso_back: match (body.species, body.body_type) { (Grolgar, _) => (-10.0, 1.5), @@ -216,14 +216,14 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tuskram, _) => (-12.5, -2.0), (Lion, _) => (-12.0, -0.5), (Tarasque, _) => (-14.0, -1.0), - (Tiger, _) => (-13.0, 0.0), + (Tiger, _) => (-13.0, -0.5), (Wolf, _) => (-12.5, 1.0), (Frostfang, _) => (-10.5, 0.0), (Mouflon, _) => (-8.5, -0.5), (Catoblepas, _) => (-8.5, -4.5), (Bonerattler, _) => (-5.0, 0.0), (Deer, _) => (-9.0, 0.5), - (Hirdrassil, _) => (-9.0, -0.5), + (Hirdrasil, _) => (-9.0, -0.5), }, ears: match (body.species, body.body_type) { (Grolgar, _) => (5.0, 8.0), @@ -238,67 +238,67 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (11.0, -3.0), (Bonerattler, _) => (2.0, 3.5), (Deer, _) => (2.5, 5.0), - (Hirdrassil, _) => (2.5, 5.0), + (Hirdrasil, _) => (2.5, 5.0), }, leg_f: match (body.species, body.body_type) { - (Grolgar, _) => (7.0, -2.0, 2.0), + (Grolgar, _) => (7.5, -5.5, -1.0), (Saber, _) => (7.0, -4.0, -3.5), - (Tuskram, _) => (6.0, -6.5, -0.5), - (Lion, _) => (6.5, -6.5, -2.0), + (Tuskram, _) => (6.0, -6.5, -4.0), + (Lion, _) => (6.5, -6.5, -1.5), (Tarasque, _) => (7.0, -8.0, -6.0), - (Tiger, _) => (6.0, -5.0, 1.0), + (Tiger, _) => (6.0, -6.0, -1.5), (Wolf, _) => (4.5, -6.5, -1.5), (Frostfang, _) => (5.5, -5.5, -2.0), (Mouflon, _) => (4.0, -5.0, -4.0), - (Catoblepas, _) => (7.0, 2.0, -6.0), + (Catoblepas, _) => (7.0, 2.0, -5.0), (Bonerattler, _) => (5.5, 5.0, -4.0), (Deer, _) => (3.5, -4.5, -3.5), - (Hirdrassil, _) => (4.5, -5.0, -2.5), + (Hirdrasil, _) => (4.5, -5.0, -2.5), }, leg_b: match (body.species, body.body_type) { - (Grolgar, _) => (6.0, -6.5, -5.5), + (Grolgar, _) => (6.0, -6.5, -4.0), (Saber, _) => (6.0, -7.0, -3.5), - (Tuskram, _) => (5.0, -5.5, -3.5), - (Lion, _) => (6.0, -6.0, -2.0), + (Tuskram, _) => (5.0, -4.5, -2.5), + (Lion, _) => (6.0, -5.0, -1.5), (Tarasque, _) => (6.0, -6.5, -6.5), - (Tiger, _) => (6.0, -7.5, 1.0), + (Tiger, _) => (6.0, -7.0, -1.0), (Wolf, _) => (5.0, -6.5, -3.0), (Frostfang, _) => (3.5, -4.5, -2.0), (Mouflon, _) => (3.5, -8.0, -3.5), (Catoblepas, _) => (6.0, -2.5, -2.5), (Bonerattler, _) => (6.0, -8.0, -4.0), (Deer, _) => (3.0, -6.5, -3.5), - (Hirdrassil, _) => (4.0, -6.5, -3.0), + (Hirdrasil, _) => (4.0, -6.5, -3.0), }, feet_f: match (body.species, body.body_type) { - (Grolgar, _) => (0.0, -3.0, -9.0), + (Grolgar, _) => (0.0, 0.0, -4.0), (Saber, _) => (1.0, -3.5, -2.5), - (Tuskram, _) => (0.5, 0.5, -9.0), - (Lion, _) => (0.0, 0.0, -7.0), + (Tuskram, _) => (0.5, 0.5, -3.0), + (Lion, _) => (0.5, 0.5, -3.5), (Tarasque, _) => (1.0, 0.0, -3.0), - (Tiger, _) => (0.5, 0.0, -9.0), + (Tiger, _) => (0.5, 0.0, -4.5), (Wolf, _) => (0.5, 0.0, -2.0), (Frostfang, _) => (0.5, 1.5, -3.5), (Mouflon, _) => (-0.5, -0.5, -3.0), - (Catoblepas, _) => (1.0, 4.0, -3.0), + (Catoblepas, _) => (1.0, 0.0, -6.0), (Bonerattler, _) => (-0.5, -3.0, -2.5), (Deer, _) => (-0.5, -0.5, -2.5), - (Hirdrassil, _) => (-0.5, -3.0, -3.5), + (Hirdrasil, _) => (-0.5, -3.0, -3.5), }, feet_b: match (body.species, body.body_type) { - (Grolgar, _) => (0.0, -1.0, -5.0), + (Grolgar, _) => (0.5, -1.5, -3.0), (Saber, _) => (1.0, -1.0, -1.0), - (Tuskram, _) => (0.5, 0.0, -3.5), - (Lion, _) => (0.5, 0.5, -5.5), + (Tuskram, _) => (0.5,-1.0, -2.5), + (Lion, _) => (0.5, -1.0, -3.0), (Tarasque, _) => (1.5, -1.0, -2.5), - (Tiger, _) => (1.0, 0.5, -8.0), + (Tiger, _) => (0.5, -1.0, -4.0), (Wolf, _) => (0.0, -1.0, -1.5), (Frostfang, _) => (0.0, -1.5, -3.5), (Mouflon, _) => (-1.0, 0.0, -0.5), (Catoblepas, _) => (0.5, 0.5, -4.0), (Bonerattler, _) => (0.0, 3.0, -2.5), (Deer, _) => (-1.0, -0.5, -2.0), - (Hirdrassil, _) => (-1.0, -2.0, -4.5), + (Hirdrasil, _) => (-1.0, -2.0, -4.5), }, scaler: match (body.species, body.body_type) { (Grolgar, _) => (1.3), @@ -313,7 +313,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (1.3), (Bonerattler, _) => (1.0), (Deer, _) => (1.0), - (Hirdrassil, _) => (1.0), + (Hirdrasil, _) => (1.0), }, startangle: match (body.species, body.body_type) { //changes the default angle of front feet @@ -326,10 +326,10 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Wolf, _) => (0.0), (Frostfang, _) => (0.0), (Mouflon, _) => (0.0), - (Catoblepas, _) => (0.2), + (Catoblepas, _) => (-0.5), (Bonerattler, _) => (-0.7), (Deer, _) => (0.0), - (Hirdrassil, _) => (0.0), + (Hirdrasil, _) => (0.0), }, tempo: match (body.species, body.body_type) { (Grolgar, _) => (0.95), @@ -344,7 +344,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Catoblepas, _) => (0.8), (Bonerattler, _) => (1.0), (Deer, _) => (0.85), - (Hirdrassil, _) => (0.85), + (Hirdrasil, _) => (0.85), }, spring: match (body.species, body.body_type) { (Grolgar, _) => (1.0), @@ -355,17 +355,17 @@ impl<'a> From<&'a Body> for SkeletonAttr { (Tiger, _) => (1.0), (Wolf, _) => (1.2), (Frostfang, _) => (1.0), - (Mouflon, _) => (0.6), + (Mouflon, _) => (0.9), (Catoblepas, _) => (0.7), (Bonerattler, _) => (1.1), (Deer, _) => (0.9), - (Hirdrassil, _) => (1.1), + (Hirdrasil, _) => (1.1), }, feed: match (body.species, body.body_type) { (Tuskram, _) => (true, 0.5), (Mouflon, _) => (true, 1.0), (Deer, _) => (true, 1.0), - (Hirdrassil, _) => (true, 0.9), + (Hirdrasil, _) => (true, 0.9), (_, _) => (false, 0.0), }, } From 5bb45a4861b0544948112b609954cc214c6120ef Mon Sep 17 00:00:00 2001 From: jshipsey Date: Tue, 15 Sep 2020 23:17:56 -0400 Subject: [PATCH 23/28] spawn tweaks, improved odonto --- assets/common/npc_names.json | 6 +-- .../male/chest_back.vox | 0 .../male/chest_front.vox | 0 .../male/foot_l.vox | 0 .../male/foot_r.vox | 0 .../male/hand_l.vox | 0 .../male/hand_r.vox | 0 .../{odontotyrannos => odonto}/male/head.vox | 0 .../{odontotyrannos => odonto}/male/jaw.vox | 0 .../{odontotyrannos => odonto}/male/leg_l.vox | 0 .../{odontotyrannos => odonto}/male/leg_r.vox | 0 .../male/tail_back.vox | 0 .../male/tail_front.vox | 0 .../voxel/theropod_central_manifest.ron | 32 +++++------ .../voxel/theropod_lateral_manifest.ron | 32 +++++------ common/src/comp/agent.rs | 2 +- common/src/comp/body/theropod.rs | 8 +-- server/src/events/entity_manipulation.rs | 4 +- voxygen/src/anim/src/quadruped_medium/feed.rs | 18 ++++--- voxygen/src/anim/src/quadruped_medium/idle.rs | 2 +- voxygen/src/anim/src/quadruped_medium/mod.rs | 7 +-- voxygen/src/anim/src/theropod/idle.rs | 4 +- voxygen/src/anim/src/theropod/mod.rs | 20 +++---- voxygen/src/scene/figure/load.rs | 54 ++++--------------- world/src/lib.rs | 6 +-- 25 files changed, 80 insertions(+), 115 deletions(-) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/chest_back.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/chest_front.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/foot_l.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/foot_r.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/hand_l.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/hand_r.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/head.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/jaw.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/leg_l.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/leg_r.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/tail_back.vox (100%) rename assets/voxygen/voxel/npc/{odontotyrannos => odonto}/male/tail_front.vox (100%) diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index fb5f7b2a76..657d073103 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -602,9 +602,9 @@ "keyword": "archaeos", "generic": "Archaeos" }, - "odontotyrannos": { - "keyword": "odontotyrannos", - "generic": "Odontotyrannos" + "odonto": { + "keyword": "odonto", + "generic": "Odonto" } } }, diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/chest_back.vox b/assets/voxygen/voxel/npc/odonto/male/chest_back.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/chest_back.vox rename to assets/voxygen/voxel/npc/odonto/male/chest_back.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/chest_front.vox b/assets/voxygen/voxel/npc/odonto/male/chest_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/chest_front.vox rename to assets/voxygen/voxel/npc/odonto/male/chest_front.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/foot_l.vox b/assets/voxygen/voxel/npc/odonto/male/foot_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/foot_l.vox rename to assets/voxygen/voxel/npc/odonto/male/foot_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox b/assets/voxygen/voxel/npc/odonto/male/foot_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/foot_r.vox rename to assets/voxygen/voxel/npc/odonto/male/foot_r.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/hand_l.vox b/assets/voxygen/voxel/npc/odonto/male/hand_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/hand_l.vox rename to assets/voxygen/voxel/npc/odonto/male/hand_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/hand_r.vox b/assets/voxygen/voxel/npc/odonto/male/hand_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/hand_r.vox rename to assets/voxygen/voxel/npc/odonto/male/hand_r.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/head.vox b/assets/voxygen/voxel/npc/odonto/male/head.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/head.vox rename to assets/voxygen/voxel/npc/odonto/male/head.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/jaw.vox b/assets/voxygen/voxel/npc/odonto/male/jaw.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/jaw.vox rename to assets/voxygen/voxel/npc/odonto/male/jaw.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/leg_l.vox b/assets/voxygen/voxel/npc/odonto/male/leg_l.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/leg_l.vox rename to assets/voxygen/voxel/npc/odonto/male/leg_l.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox b/assets/voxygen/voxel/npc/odonto/male/leg_r.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/leg_r.vox rename to assets/voxygen/voxel/npc/odonto/male/leg_r.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/tail_back.vox b/assets/voxygen/voxel/npc/odonto/male/tail_back.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/tail_back.vox rename to assets/voxygen/voxel/npc/odonto/male/tail_back.vox diff --git a/assets/voxygen/voxel/npc/odontotyrannos/male/tail_front.vox b/assets/voxygen/voxel/npc/odonto/male/tail_front.vox similarity index 100% rename from assets/voxygen/voxel/npc/odontotyrannos/male/tail_front.vox rename to assets/voxygen/voxel/npc/odonto/male/tail_front.vox diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index f0bc769355..01d2f7a1d5 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -59,14 +59,14 @@ central: ("npc.archaeos.male.tail_back"), ), ), - (Odontotyrannos, Male): ( + (Odonto, Male): ( head: ( offset: (-10.5, 0.0, -8.0), - central: ("npc.odontotyrannos.male.head"), + central: ("npc.odonto.male.head"), ), jaw: ( offset: (-6.5, 0.0, -3.0), - central: ("npc.odontotyrannos.male.jaw"), + central: ("npc.odonto.male.jaw"), ), neck: ( offset: (0.0, 0.0, 0.0), @@ -74,29 +74,29 @@ ), chest_front: ( offset: (-5.5, -5.0, -6.0), - central: ("npc.odontotyrannos.male.chest_front"), + central: ("npc.odonto.male.chest_front"), ), chest_back: ( offset: (-6.5, -8.0, -8.5), - central: ("npc.odontotyrannos.male.chest_back"), + central: ("npc.odonto.male.chest_back"), ), tail_front: ( offset: (-3.5, -8.0, -5.5), - central: ("npc.odontotyrannos.male.tail_front"), + central: ("npc.odonto.male.tail_front"), ), tail_back: ( - offset: (-2.5, -23.0, -3.0), - central: ("npc.odontotyrannos.male.tail_back"), + offset: (-2.5, -19.0, -5.0), + central: ("npc.odonto.male.tail_back"), ), ), - (Odontotyrannos, Female): ( + (Odonto, Female): ( head: ( offset: (-10.5, 0.0, -8.0), - central: ("npc.odontotyrannos.male.head"), + central: ("npc.odonto.male.head"), ), jaw: ( offset: (-6.5, 0.0, -3.0), - central: ("npc.odontotyrannos.male.jaw"), + central: ("npc.odonto.male.jaw"), ), neck: ( offset: (0.0, 0.0, 0.0), @@ -104,19 +104,19 @@ ), chest_front: ( offset: (-5.5, -5.0, -6.0), - central: ("npc.odontotyrannos.male.chest_front"), + central: ("npc.odonto.male.chest_front"), ), chest_back: ( offset: (-6.5, -8.0, -8.5), - central: ("npc.odontotyrannos.male.chest_back"), + central: ("npc.odonto.male.chest_back"), ), tail_front: ( offset: (-3.5, -8.0, -5.5), - central: ("npc.odontotyrannos.male.tail_front"), + central: ("npc.odonto.male.tail_front"), ), tail_back: ( - offset: (-2.5, -8.0, -3.0), - central: ("npc.odontotyrannos.male.tail_back"), + offset: (-2.5, -19.0, -5.0), + central: ("npc.odonto.male.tail_back"), ), ), }) diff --git a/assets/voxygen/voxel/theropod_lateral_manifest.ron b/assets/voxygen/voxel/theropod_lateral_manifest.ron index ca4cc8cd0f..39603e4a41 100644 --- a/assets/voxygen/voxel/theropod_lateral_manifest.ron +++ b/assets/voxygen/voxel/theropod_lateral_manifest.ron @@ -51,56 +51,56 @@ lateral: ("npc.archaeos.male.foot_r"), ), ), - (Odontotyrannos, Male): ( + (Odonto, Male): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odontotyrannos.male.hand_l"), + lateral: ("npc.odonto.male.hand_l"), ), hand_r: ( offset: (0.0, -3.0, -7.0), - lateral: ("npc.odontotyrannos.male.hand_r"), + lateral: ("npc.odonto.male.hand_r"), ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odontotyrannos.male.leg_l"), + lateral: ("npc.odonto.male.leg_l"), ), leg_r: ( offset: (0.0, -4.5, -4.0), - lateral: ("npc.odontotyrannos.male.leg_r"), + lateral: ("npc.odonto.male.leg_r"), ), foot_l: ( - offset: (-14.0, -1.0, -8.0), - lateral: ("npc.odontotyrannos.male.foot_l"), + offset: (-8.0, -1.0, -8.0), + lateral: ("npc.odonto.male.foot_l"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), - lateral: ("npc.odontotyrannos.male.foot_r"), + lateral: ("npc.odonto.male.foot_r"), ), ), - (Odontotyrannos, Female): ( + (Odonto, Female): ( hand_l: ( offset: (-3.0, -3.0, -7.0), - lateral: ("npc.odontotyrannos.male.hand_l"), + lateral: ("npc.odonto.male.hand_l"), ), hand_r: ( offset: (0.0, -3.0, -7.0), - lateral: ("npc.odontotyrannos.male.hand_r"), + lateral: ("npc.odonto.male.hand_r"), ), leg_l: ( offset: (-7.0, -4.5, -4.0), - lateral: ("npc.odontotyrannos.male.leg_l"), + lateral: ("npc.odonto.male.leg_l"), ), leg_r: ( offset: (0.0, -4.5, -4.0), - lateral: ("npc.odontotyrannos.male.leg_r"), + lateral: ("npc.odonto.male.leg_r"), ), foot_l: ( - offset: (-14.0, -1.0, -8.0), - lateral: ("npc.odontotyrannos.male.foot_l"), + offset: (-8.0, -1.0, -8.0), + lateral: ("npc.odonto.male.foot_l"), ), foot_r: ( offset: (-6.0, -1.0, -8.0), - lateral: ("npc.odontotyrannos.male.foot_r"), + lateral: ("npc.odonto.male.foot_r"), ), ), }) diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 1fc7b53371..fbccf28c87 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -1,5 +1,5 @@ use crate::{ - comp::{humanoid, quadruped_low, quadruped_medium, quadruped_small, theropod, Body}, + comp::{humanoid, quadruped_low, quadruped_medium, quadruped_small, Body}, path::Chaser, sync::Uid, }; diff --git a/common/src/comp/body/theropod.rs b/common/src/comp/body/theropod.rs index 446034a128..e7d2ac75f6 100644 --- a/common/src/comp/body/theropod.rs +++ b/common/src/comp/body/theropod.rs @@ -29,14 +29,14 @@ impl From for super::Body { #[repr(u32)] pub enum Species { Archaeos = 0, - Odontotyrannos = 1, + Odonto = 1, } /// Data representing per-species generic data. #[derive(Clone, Debug, Serialize, Deserialize)] pub struct AllSpecies { pub archaeos: SpeciesMeta, - pub odontotyrannos: SpeciesMeta, + pub odonto: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -46,12 +46,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies fn index(&self, &index: &'a Species) -> &Self::Output { match index { Species::Archaeos => &self.archaeos, - Species::Odontotyrannos => &self.odontotyrannos, + Species::Odonto => &self.odonto, } } } -pub const ALL_SPECIES: [Species; 2] = [Species::Archaeos, Species::Odontotyrannos]; +pub const ALL_SPECIES: [Species; 2] = [Species::Archaeos, Species::Odonto]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { type IntoIter = std::iter::Copied>; diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index cef530ce5d..88428fc3d7 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -317,7 +317,9 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc 7 => "common.loot_tables.loot_table_weapon_rare", _ => "common.loot_tables.loot_table", }, - Some(common::comp::Body::Theropod(_)) => "common.loot_tables.loot_table_animal_parts", + Some(common::comp::Body::Theropod(_)) => { + "common.loot_tables.loot_table_animal_parts" + }, Some(common::comp::Body::Dragon(_)) => "common.loot_tables.loot_table_weapon_rare", Some(common::comp::Body::QuadrupedLow(_)) => match rng.gen_range(0, 3) { 0 => "common.loot_tables.loot_table_food", diff --git a/voxygen/src/anim/src/quadruped_medium/feed.rs b/voxygen/src/anim/src/quadruped_medium/feed.rs index bef398b5fa..4788b37b62 100644 --- a/voxygen/src/anim/src/quadruped_medium/feed.rs +++ b/voxygen/src/anim/src/quadruped_medium/feed.rs @@ -61,9 +61,10 @@ impl Animation for FeedAnimation { skeleton_attr.head.0, skeleton_attr.head.1 + slower * 0.2, ); - next.head.orientation = - Quaternion::rotation_z(0.3 * look.x) - * Quaternion::rotation_x(fast * 0.05 + faster * 0.08 + 0.8 * skeleton_attr.feed.1 * transition); + next.head.orientation = Quaternion::rotation_z(0.3 * look.x) + * Quaternion::rotation_x( + fast * 0.05 + faster * 0.08 + 0.8 * skeleton_attr.feed.1 * transition, + ); next.head.scale = Vec3::one(); next.neck.position = Vec3::new( @@ -71,7 +72,8 @@ impl Animation for FeedAnimation { skeleton_attr.neck.0, skeleton_attr.neck.1 + slower * 0.1 - 4.0 * transition, ); - next.neck.orientation =Quaternion::rotation_x(-2.5 * skeleton_attr.feed.1 * transition); + next.neck.orientation = + Quaternion::rotation_x(-2.5 * skeleton_attr.feed.1 * transition); next.neck.scale = Vec3::one() * 1.02; next.jaw.position = Vec3::new( @@ -90,7 +92,7 @@ impl Animation for FeedAnimation { next.head.orientation = Quaternion::rotation_z(0.3 * look.x) * Quaternion::rotation_x(0.3 * look.y); next.head.scale = Vec3::one(); - + next.neck.position = Vec3::new( 0.0, skeleton_attr.neck.0, @@ -98,14 +100,14 @@ impl Animation for FeedAnimation { ); next.neck.orientation = Quaternion::rotation_z(0.0) * Quaternion::rotation_x(0.0); next.neck.scale = Vec3::one() * 1.02; - + next.jaw.position = Vec3::new( 0.0, skeleton_attr.jaw.0 - slower * 0.12, skeleton_attr.jaw.1 + slow * 0.2 + 0.5, ); next.jaw.orientation = Quaternion::rotation_x(slow * 0.05 - 0.08); - next.jaw.scale = Vec3::one() * 1.02; + next.jaw.scale = Vec3::one() * 1.02; } next.tail.position = Vec3::new(0.0, skeleton_attr.tail.0, skeleton_attr.tail.1); @@ -202,4 +204,4 @@ impl Animation for FeedAnimation { next } -} \ No newline at end of file +} diff --git a/voxygen/src/anim/src/quadruped_medium/idle.rs b/voxygen/src/anim/src/quadruped_medium/idle.rs index 5da26b09e6..3285ba2bcb 100644 --- a/voxygen/src/anim/src/quadruped_medium/idle.rs +++ b/voxygen/src/anim/src/quadruped_medium/idle.rs @@ -170,4 +170,4 @@ impl Animation for IdleAnimation { next } -} \ No newline at end of file +} diff --git a/voxygen/src/anim/src/quadruped_medium/mod.rs b/voxygen/src/anim/src/quadruped_medium/mod.rs index 7985b40f70..5212b1377a 100644 --- a/voxygen/src/anim/src/quadruped_medium/mod.rs +++ b/voxygen/src/anim/src/quadruped_medium/mod.rs @@ -6,7 +6,8 @@ pub mod run; // Reexports pub use self::{ - alpha::AlphaAnimation, feed::FeedAnimation, idle::IdleAnimation, jump::JumpAnimation, run::RunAnimation, + alpha::AlphaAnimation, feed::FeedAnimation, idle::IdleAnimation, jump::JumpAnimation, + run::RunAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Skeleton}; @@ -288,7 +289,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { feet_b: match (body.species, body.body_type) { (Grolgar, _) => (0.5, -1.5, -3.0), (Saber, _) => (1.0, -1.0, -1.0), - (Tuskram, _) => (0.5,-1.0, -2.5), + (Tuskram, _) => (0.5, -1.0, -2.5), (Lion, _) => (0.5, -1.0, -3.0), (Tarasque, _) => (1.5, -1.0, -2.5), (Tiger, _) => (0.5, -1.0, -4.0), @@ -370,4 +371,4 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, } } -} \ No newline at end of file +} diff --git a/voxygen/src/anim/src/theropod/idle.rs b/voxygen/src/anim/src/theropod/idle.rs index b37857e31e..cce7b1bbf4 100644 --- a/voxygen/src/anim/src/theropod/idle.rs +++ b/voxygen/src/anim/src/theropod/idle.rs @@ -115,7 +115,7 @@ impl Animation for IdleAnimation { next.foot_l.position = Vec3::new( -skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2 + breathe * -0.35, + skeleton_attr.foot.2 + breathe * -0.15, ); next.foot_l.orientation = Quaternion::rotation_z(0.0); next.foot_l.scale = Vec3::one() * 1.02; @@ -123,7 +123,7 @@ impl Animation for IdleAnimation { next.foot_r.position = Vec3::new( skeleton_attr.foot.0, skeleton_attr.foot.1, - skeleton_attr.foot.2 + breathe * -0.45, + skeleton_attr.foot.2 + breathe * -0.15, ); next.foot_r.orientation = Quaternion::rotation_z(0.0); next.foot_r.scale = Vec3::one() * 1.02; diff --git a/voxygen/src/anim/src/theropod/mod.rs b/voxygen/src/anim/src/theropod/mod.rs index d14642c740..24c1796f3b 100644 --- a/voxygen/src/anim/src/theropod/mod.rs +++ b/voxygen/src/anim/src/theropod/mod.rs @@ -116,43 +116,43 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { head: match (body.species, body.body_type) { (Archaeos, _) => (8.0, 4.0), - (Odontotyrannos, _) => (-2.5, 3.0), + (Odonto, _) => (-1.0, 5.0), }, jaw: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -7.0), - (Odontotyrannos, _) => (1.0, -7.0), + (Odonto, _) => (2.0, -7.0), }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), - (Odontotyrannos, _) => (4.5, -2.0), + (Odonto, _) => (4.5, -2.0), }, chest_front: match (body.species, body.body_type) { (Archaeos, _) => (0.0, 20.0), - (Odontotyrannos, _) => (0.0, 9.0), + (Odonto, _) => (0.0, 13.0), }, chest_back: match (body.species, body.body_type) { (Archaeos, _) => (-5.5, -1.0), - (Odontotyrannos, _) => (-5.0, 2.0), + (Odonto, _) => (-5.0, 2.0), }, tail_front: match (body.species, body.body_type) { (Archaeos, _) => (-9.0, -1.5), - (Odontotyrannos, _) => (-8.0, -1.0), + (Odonto, _) => (-7.0, -1.0), }, tail_back: match (body.species, body.body_type) { (Archaeos, _) => (-8.0, -0.5), - (Odontotyrannos, _) => (-12.0, -1.5), + (Odonto, _) => (-8.0, 0.5), }, hand: match (body.species, body.body_type) { (Archaeos, _) => (3.0, 0.0, -4.0), - (Odontotyrannos, _) => (3.5, 3.0, -4.0), + (Odonto, _) => (3.5, 3.0, -4.0), }, leg: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -3.0, -4.0), - (Odontotyrannos, _) => (5.5, -2.5, -2.0), + (Odonto, _) => (5.5, -2.5, -4.0), }, foot: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -0.5, -7.0), - (Odontotyrannos, _) => (-1.0, -6.5, -3.0), + (Odonto, _) => (2.0, -6.5, -3.0), }, } } diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index f541e79c1e..1d77fe0f0f 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -1916,11 +1916,7 @@ impl TheropodCentralSpec { (central, Vec3::from(spec.chest_back.offset)) } - fn mesh_tail_front( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_tail_front(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -1936,11 +1932,7 @@ impl TheropodCentralSpec { (central, Vec3::from(spec.tail_front.offset)) } - fn mesh_tail_back( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_tail_back(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -1957,11 +1949,7 @@ impl TheropodCentralSpec { } } impl TheropodLateralSpec { - fn mesh_hand_l( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_hand_l(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -1977,11 +1965,7 @@ impl TheropodLateralSpec { (lateral, Vec3::from(spec.hand_l.offset)) } - fn mesh_hand_r( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_hand_r(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -1997,11 +1981,7 @@ impl TheropodLateralSpec { (lateral, Vec3::from(spec.hand_r.offset)) } - fn mesh_leg_l( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_leg_l(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -2017,11 +1997,7 @@ impl TheropodLateralSpec { (lateral, Vec3::from(spec.leg_l.offset)) } - fn mesh_leg_r( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_leg_r(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -2037,11 +2013,7 @@ impl TheropodLateralSpec { (lateral, Vec3::from(spec.leg_r.offset)) } - fn mesh_foot_l( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_foot_l(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -2057,11 +2029,7 @@ impl TheropodLateralSpec { (lateral, Vec3::from(spec.foot_l.offset)) } - fn mesh_foot_r( - &self, - species: TSpecies, - body_type: TBodyType, - ) -> BoneMeshes { + fn mesh_foot_r(&self, species: TSpecies, body_type: TBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { @@ -3103,11 +3071,7 @@ impl GolemCentralSpec { (central, Vec3::from(spec.torso_upper.offset)) } - pub fn mesh_torso_lower( - &self, - species: GSpecies, - body_type: GBodyType, - ) -> BoneMeshes { + pub fn mesh_torso_lower(&self, species: GSpecies, body_type: GBodyType) -> BoneMeshes { let spec = match self.0.get(&(species, body_type)) { Some(spec) => spec, None => { diff --git a/world/src/lib.rs b/world/src/lib.rs index e698f714e8..d7147bc736 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -35,7 +35,7 @@ use crate::{ util::{Grid, Sampler}, }; use common::{ - comp::{self, bird_medium, quadruped_low, quadruped_medium, quadruped_small, theropod}, + comp::{self, bird_medium, quadruped_low, quadruped_medium, quadruped_small}, generation::{ChunkSupplement, EntityInfo}, msg::server::WorldMapMsg, terrain::{Block, BlockKind, TerrainChunk, TerrainChunkMeta, TerrainChunkSize}, @@ -256,10 +256,6 @@ impl World { comp::Body::BirdMedium(bird_medium::Body::random()) }, 2 => { - is_hostile = true; - comp::Body::Theropod(theropod::Body::random()) - }, - 3 => { match quadlow { comp::Body::QuadrupedLow(quadruped_low) => { match quadruped_low.species { From b0767cb7a55a16c0bfa2d9b4f874e0bba494a5ef Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 17 Sep 2020 21:59:05 -0400 Subject: [PATCH 24/28] minor anim fix --- voxygen/src/anim/Cargo.toml | 2 +- voxygen/src/anim/src/quadruped_medium/run.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/voxygen/src/anim/Cargo.toml b/voxygen/src/anim/Cargo.toml index 10869c6cc3..75bb0ecbe3 100644 --- a/voxygen/src/anim/Cargo.toml +++ b/voxygen/src/anim/Cargo.toml @@ -8,7 +8,7 @@ version = "0.7.0" name = "voxygen_anim" # Uncomment to use animation hot reloading # Note: this breaks `cargo test` -crate-type = ["lib", "cdylib"] +# crate-type = ["lib", "cdylib"] [features] be-dyn-lib = [] diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index 7a725af36a..b6e9473754 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -71,10 +71,10 @@ impl Animation for RunAnimation { .sin(); //1.9 //FR let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 - let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift2).sin(); //1.6 + let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 //BL let foot3a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift3).sin(); //0.4 + let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift3).sin(); //0.4 //BR let foot4a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4) From fff6a6fb0a87b70f0e086bc8e9816043096768eb Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 17 Sep 2020 22:18:29 -0400 Subject: [PATCH 25/28] finish odonto --- assets/voxygen/voxel/npc/odonto/male/neck.vox | 3 +++ assets/voxygen/voxel/theropod_central_manifest.ron | 8 ++++---- voxygen/src/anim/src/quadruped_medium/run.rs | 4 ++-- voxygen/src/anim/src/theropod/mod.rs | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 assets/voxygen/voxel/npc/odonto/male/neck.vox diff --git a/assets/voxygen/voxel/npc/odonto/male/neck.vox b/assets/voxygen/voxel/npc/odonto/male/neck.vox new file mode 100644 index 0000000000..8d6aa069c1 --- /dev/null +++ b/assets/voxygen/voxel/npc/odonto/male/neck.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac66309a7940e44e4dd9c47cf982fd2b10ac0dcfad2d20a8602d2ff3b6d3cbfe +size 5624 diff --git a/assets/voxygen/voxel/theropod_central_manifest.ron b/assets/voxygen/voxel/theropod_central_manifest.ron index 01d2f7a1d5..07f30ec257 100644 --- a/assets/voxygen/voxel/theropod_central_manifest.ron +++ b/assets/voxygen/voxel/theropod_central_manifest.ron @@ -69,8 +69,8 @@ central: ("npc.odonto.male.jaw"), ), neck: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-5.5, 0.0, -6.5), + central: ("npc.odonto.male.neck"), ), chest_front: ( offset: (-5.5, -5.0, -6.0), @@ -99,8 +99,8 @@ central: ("npc.odonto.male.jaw"), ), neck: ( - offset: (0.0, 0.0, 0.0), - central: ("armor.empty"), + offset: (-5.5, 0.0, -6.5), + central: ("npc.odonto.male.neck"), ), chest_front: ( offset: (-5.5, -5.0, -6.0), diff --git a/voxygen/src/anim/src/quadruped_medium/run.rs b/voxygen/src/anim/src/quadruped_medium/run.rs index b6e9473754..e4e4d2ca4a 100644 --- a/voxygen/src/anim/src/quadruped_medium/run.rs +++ b/voxygen/src/anim/src/quadruped_medium/run.rs @@ -67,14 +67,14 @@ impl Animation for RunAnimation { (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift1) .sin(); //1.5 let foot1b = - (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + canceler * 0.05 + shift1) + (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + canceler * 0.05 + shift1) .sin(); //1.9 //FR let foot2a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift2).sin(); //1.2 let foot2b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift2).sin(); //1.6 //BL let foot3a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + shift3).sin(); //0.0 - let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.1 + shift3).sin(); //0.4 + let foot3b = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 1.57 + shift3).sin(); //0.4 //BR let foot4a = (anim_time as f32 * (16.0) * lab as f32 * speedmult + 0.0 + canceler * 0.05 + shift4) diff --git a/voxygen/src/anim/src/theropod/mod.rs b/voxygen/src/anim/src/theropod/mod.rs index 24c1796f3b..459661de77 100644 --- a/voxygen/src/anim/src/theropod/mod.rs +++ b/voxygen/src/anim/src/theropod/mod.rs @@ -116,7 +116,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { Self { head: match (body.species, body.body_type) { (Archaeos, _) => (8.0, 4.0), - (Odonto, _) => (-1.0, 5.0), + (Odonto, _) => (6.0, 5.0), }, jaw: match (body.species, body.body_type) { (Archaeos, _) => (1.0, -7.0), @@ -124,7 +124,7 @@ impl<'a> From<&'a Body> for SkeletonAttr { }, neck: match (body.species, body.body_type) { (Archaeos, _) => (4.5, -2.0), - (Odonto, _) => (4.5, -2.0), + (Odonto, _) => (3.0, -3.0), }, chest_front: match (body.species, body.body_type) { (Archaeos, _) => (0.0, 20.0), From 90e5bbaac05caf547ceea57d430f16a03c4192a7 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 17 Sep 2020 22:41:40 -0400 Subject: [PATCH 26/28] rebase --- assets/common/items/armor/starter/glider.ron | 2 +- common/src/loadout_builder.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/common/items/armor/starter/glider.ron b/assets/common/items/armor/starter/glider.ron index 1fbc908b57..087f4b16b5 100644 --- a/assets/common/items/armor/starter/glider.ron +++ b/assets/common/items/armor/starter/glider.ron @@ -1,4 +1,4 @@ -Item( +ItemDef( name: "Swift Glider", description: "Thank goodness for big pockets", kind: Glider( diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs index 6ce34b0e8e..24d41c39ab 100644 --- a/common/src/loadout_builder.rs +++ b/common/src/loadout_builder.rs @@ -55,7 +55,7 @@ impl LoadoutBuilder { .lantern(Some(Item::new_from_asset_expect( "common.items.armor.starter.lantern", ))) - .glider(Some(ItemAsset::load_expect_cloned( + .glider(Some(Item::new_from_asset_expect( "common.items.armor.starter.glider", ))) } From 8330d087e6e60fe8601fa49bb8c3527b40791716 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Thu, 17 Sep 2020 22:58:02 -0400 Subject: [PATCH 27/28] clippy --- common/src/comp/agent.rs | 4 +--- voxygen/src/anim/src/golem/shockwave.rs | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index fbccf28c87..8deb64be8a 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -124,9 +124,7 @@ impl<'a> From<&'a Body> for Psyche { Body::BipedLarge(_) => 1.0, Body::Object(_) => 1.0, Body::Golem(_) => 1.0, - Body::Theropod(theropod) => match theropod.species { - _ => 0.4, - }, + Body::Theropod(_) => 1.0, Body::Dragon(_) => 1.0, }, } diff --git a/voxygen/src/anim/src/golem/shockwave.rs b/voxygen/src/anim/src/golem/shockwave.rs index 85731ebdf1..4268214e01 100644 --- a/voxygen/src/anim/src/golem/shockwave.rs +++ b/voxygen/src/anim/src/golem/shockwave.rs @@ -37,7 +37,7 @@ impl Animation for ShockwaveAnimation { + 1.0; next.head.position = Vec3::new(0.0, skeleton_attr.head.0, skeleton_attr.head.1) * 1.02; next.head.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-3.14)) * Quaternion::rotation_x(0.0); + Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); next.head.scale = Vec3::one() * 1.02; next.upper_torso.position = Vec3::new( @@ -46,7 +46,7 @@ impl Animation for ShockwaveAnimation { skeleton_attr.upper_torso.1 + slower * -3.0 + breathe * 1.0, ) / 8.0; next.upper_torso.orientation = - Quaternion::rotation_z((twist * 2.0).min(3.14)) * Quaternion::rotation_x(0.0); + Quaternion::rotation_z((twist * 2.0).min(PI)) * Quaternion::rotation_x(0.0); next.upper_torso.scale = Vec3::one() / 8.0; next.lower_torso.position = Vec3::new( @@ -55,7 +55,7 @@ impl Animation for ShockwaveAnimation { skeleton_attr.lower_torso.1 + slower * 1.0, ); next.lower_torso.orientation = - Quaternion::rotation_z((-twist * 2.0).max(-3.14)) * Quaternion::rotation_x(0.0); + Quaternion::rotation_z((-twist * 2.0).max(-PI)) * Quaternion::rotation_x(0.0); next.lower_torso.scale = Vec3::one(); next.shoulder_l.position = Vec3::new( From f9fada87cffcc7b1d592bf9437c30bc32db4ec1d Mon Sep 17 00:00:00 2001 From: Snowram Date: Fri, 18 Sep 2020 18:45:03 +0200 Subject: [PATCH 28/28] Addresses comments --- common/src/comp/body/critter.rs | 99 ------------------- .../src/persistence/character/conversions.rs | 2 + .../audio/sfx/event_mapper/movement/mod.rs | 2 +- 3 files changed, 3 insertions(+), 100 deletions(-) delete mode 100644 common/src/comp/body/critter.rs diff --git a/common/src/comp/body/critter.rs b/common/src/comp/body/critter.rs deleted file mode 100644 index c3d0115693..0000000000 --- a/common/src/comp/body/critter.rs +++ /dev/null @@ -1,99 +0,0 @@ -use crate::{make_case_elim, make_proj_elim}; -use rand::{seq::SliceRandom, thread_rng}; -use serde::{Deserialize, Serialize}; - -make_proj_elim!( - body, - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] - pub struct Body { - pub species: Species, - pub body_type: BodyType, - } -); - -impl Body { - pub fn random() -> Self { - let mut rng = thread_rng(); - let species = *(&ALL_SPECIES).choose(&mut rng).unwrap(); - Self::random_with(&mut rng, &species) - } - - #[inline] - pub fn random_with(rng: &mut impl rand::Rng, &species: &Species) -> Self { - let body_type = *(&ALL_BODY_TYPES).choose(rng).unwrap(); - Self { species, body_type } - } -} - -impl From for super::Body { - fn from(body: Body) -> Self { super::Body::Critter(body) } -} - -make_case_elim!( - species, - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] - #[repr(u32)] - pub enum Species { - Rat = 0, - Axolotl = 1, - Gecko = 2, - Turtle = 3, - Squirrel = 4, - Fungome = 5, - } -); - -/// Data representing per-species generic data. -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct AllSpecies { - pub rat: SpeciesMeta, - pub axolotl: SpeciesMeta, - pub gecko: SpeciesMeta, - pub turtle: SpeciesMeta, - pub squirrel: SpeciesMeta, - pub fungome: SpeciesMeta, -} - -impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { - type Output = SpeciesMeta; - - #[inline] - fn index(&self, &index: &'a Species) -> &Self::Output { - match index { - Species::Rat => &self.rat, - Species::Axolotl => &self.axolotl, - Species::Gecko => &self.gecko, - Species::Turtle => &self.turtle, - Species::Squirrel => &self.squirrel, - Species::Fungome => &self.fungome, - } - } -} - -pub const ALL_SPECIES: [Species; 6] = [ - Species::Rat, - Species::Axolotl, - Species::Gecko, - Species::Turtle, - Species::Squirrel, - Species::Fungome, -]; - -impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { - type IntoIter = std::iter::Copied>; - type Item = Species; - - fn into_iter(self) -> Self::IntoIter { ALL_SPECIES.iter().copied() } -} - -make_case_elim!( - body_type, - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] - #[repr(u32)] - pub enum BodyType { - Female = 0, - Male = 1, - } -); - -pub const ALL_BODY_TYPES: [BodyType; 2] = [BodyType::Female, BodyType::Male]; diff --git a/server/src/persistence/character/conversions.rs b/server/src/persistence/character/conversions.rs index 310a3a79b6..fea9f8af05 100644 --- a/server/src/persistence/character/conversions.rs +++ b/server/src/persistence/character/conversions.rs @@ -43,6 +43,7 @@ pub fn convert_items_to_database_items( ("neck", loadout.neck.as_ref()), ("head", loadout.head.as_ref()), ("tabard", loadout.tabard.as_ref()), + ("glider", loadout.glider.as_ref()), ]; let loadout = loadout @@ -254,6 +255,7 @@ pub fn convert_loadout_from_database_items(database_items: &[Item]) -> Result loadout = loadout.neck(Some(item)), "head" => loadout = loadout.head(Some(item)), "tabard" => loadout = loadout.tabard(Some(item)), + "glider" => loadout = loadout.glider(Some(item)), _ => { return Err(Error::ConversionError(format!( "Unknown loadout position on item: {}", diff --git a/voxygen/src/audio/sfx/event_mapper/movement/mod.rs b/voxygen/src/audio/sfx/event_mapper/movement/mod.rs index f551987ebb..85c10f1a6d 100644 --- a/voxygen/src/audio/sfx/event_mapper/movement/mod.rs +++ b/voxygen/src/audio/sfx/event_mapper/movement/mod.rs @@ -75,7 +75,7 @@ impl EventMapper for MovementEventMapper { | Body::BirdMedium(_) | Body::BirdSmall(_) | Body::BipedLarge(_) => Self::map_non_humanoid_movement_event(physics, vel.0), - _ => SfxEvent::Idle, // Ignore fish, critters, etc... + _ => SfxEvent::Idle, // Ignore fish, etc... }; // Check for SFX config entry for this movement