From 87b3cb8270d285b2384ff0efe04988dc8d36b461 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 21 Mar 2021 21:43:49 -0400 Subject: [PATCH] airship movement bits --- assets/server/manifests/ship_manifest.ron | 11 +++++--- assets/server/voxel/Human_Airship.vox | Bin 78024 -> 77892 bytes assets/server/voxel/propeller-l.vox | Bin 1584 -> 1944 bytes assets/server/voxel/propeller-r.vox | Bin 1584 -> 1944 bytes assets/server/voxel/rudder.vox | Bin 0 -> 1576 bytes common/src/comp/body/ship.rs | 1 + voxygen/anim/src/character/run.rs | 1 - voxygen/anim/src/ship/idle.rs | 31 +++++++++++++++++++--- voxygen/anim/src/ship/mod.rs | 14 +++++++--- voxygen/src/scene/figure/load.rs | 2 +- voxygen/src/scene/figure/mod.rs | 18 +++++++++++-- 11 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 assets/server/voxel/rudder.vox diff --git a/assets/server/manifests/ship_manifest.ron b/assets/server/manifests/ship_manifest.ron index 817d579120..07151cabda 100644 --- a/assets/server/manifests/ship_manifest.ron +++ b/assets/server/manifests/ship_manifest.ron @@ -4,20 +4,25 @@ //offset: (3.0, 7.0, 1.0), //offset: (-20.75, -34.75, 1.25), //offset: (0.0, 0.0, 0.0), - offset: (-17.5, -35.0, 1.0), + offset: (-17.5, -39.0, 1.0), //phys_offset: (0.25, 0.25, 0.25), phys_offset: (0.0, 0.0, 0.0), central: ("Human_Airship"), ), bone1: ( - offset: (0.0, 40.0, -8.0), + offset: (-8.5, -2.0, -8.5), phys_offset: (0.0, 0.0, 0.0), central: ("propeller-l"), ), bone2: ( - offset: (0.0, 0.0, -4.0), + offset: (-8.5, -2.0, -8.5), phys_offset: (0.0, 0.0, 0.0), central: ("propeller-r"), ), + bone3: ( + offset: (-1.5, -11.0, -5.5), + phys_offset: (0.0, 0.0, 0.0), + central: ("rudder"), + ), ), }) diff --git a/assets/server/voxel/Human_Airship.vox b/assets/server/voxel/Human_Airship.vox index e167e99d3d375b8322f7f13ed4381e454ec401bf..d193b7d15f3c9e9f4431842c15b96464bff53019 100644 GIT binary patch literal 77892 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 TAM+3Y_zeDW4gCLJ1Aq8m=5FgO literal 78024 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 diff --git a/assets/server/voxel/propeller-l.vox b/assets/server/voxel/propeller-l.vox index 2dc7e554e4cc9bf5fb94d4ac40330400197039a4..d4b2354d977d8e5d4ee2c565cb9067e0eeaa0784 100644 GIT binary patch delta 925 zcmXZaJ&qJH5Qbq_*{VdiOJg@aeoI!-y5X=>(leg?OS}DhVU1z;Vc@K zshp0Yva;%Fa1>Q?Bu8>2M{*)3aw4aTgUmtZAajscWo_sf*svq3(KC8R&*&LFqi6Jt zp3$>&BCFGNx=z>WI$fvhbe*o#b-I_I2b&W89<(fhA|fHf;3!(|m9?Q`V8f1y10Ku0 zpdx5J1&WA-41=R+UG-wq&>sh}-bEW18W$QD8W$QD8W$QD8k02ojsBz8>2-RYUZ>aT zb$Xp%r`PE{@*ofLAP@3J-pJc|b^aCIIoLVaDeUA)p5)2?V1JxNm@Gi*Dgn}#3lj%^ z8F9||naP#hSc}+FVR9s77#u1Lh$QXe115w+_^_hAu1v~V6(&IyCO{RwIjZo5QDt(U z2L=-!7EE|gFyXzxgtq__9_B0I9`8pk9uS*>4Ld5uhK_*^J0=2?2^0|t8HOSq0~>Zs c9INx$z=j^f5BbrBjsO4v delta 562 zcmXYsJ5Izf5J1PVJ>y?K^c0j_gMwlUpg=;)9wC+MZE^u>M4b~LaV-wPi^NKA$8Yqe z$k+Vcwzrq_-KU5=J)E8ya;qY*r^{nIgx?Je|MUEQIsLk0D{=)B=}BZ)aor$^+oKF! z!63sJFu@E9m`iJd3?jKZ7{Eh- z2nq&C@}4&y1?sVId391aC>#_H3I~OQ!a?Dn@Fj)5&>vl;t8|sF(p9=jSLrHUr8~Ug k4R3hEM|{M`eqZ@ZGO?IgOav1?<1;?5Qbq_`KRo%yWJ205|MD=FbCiOLc1HnoH~QP5Ch`u2#`pHfOu!cO3&J# z=d(05^6&9$Uf;hwz55wL`1IlSnI-(N5We1CK8{D=?+w!b_38QL_ANe6L->oP;j9{# ztDFs0Wp&ll(NI;%ksQg99Lb5C$cdaT4l)OsgUmr*##)e(5TWQ==oNZ}UZGd$6?%nU zp;zdYQ_$7u8eOAnbd9djHM&OE=o;P2&cLQdyB}KD#EuOE9gc>o^=_;M83_>zK|qW3 zUST-2ofA7Y40Jdeses|JX#CQKao zWyCn+XC@oDuvRH+7beF*hofN^2E-7*_<#w~F!|6>URNgN%!El`!UQnko5O@J43o)y z9vEDBSa9Jz!G-q%7v2I~c$lw*d%PdHctC6tA{0ikAR{3{Avl<9V#kJo4o8)afekw* bj+OZ=AwnSts1jCvE5b$*k&yqq*Dd`6vc!bz delta 561 zcmXYsJ5B^K5Cz*~yW8LKkQ0z`4g!J=fB*@>9$_QLBy#|AM7$?J;#wSnT8WWr+Rv(| zmcPb#+h3kuZ$3rj;qLIrkZTorJ{<4cCGcIr@;_hSj)z}&xfOYbBy!FoGl^rmSs=;6 zdEvaw3Q0WKlRep!138cbIqY+hI6VZ2pkR6DoTDm3V@!hj9TrBi|oQ8EiN z3o{Ed3o{Ed`|@niVcq!+*dVz~sZc7E3Z+7+P%4xPr9!F96$V79xD~hJR@{nPaVu`c st+*Ah;WfO5*LYMXcXFS%NjeuR7b_Pl!pe&W=fQdK@{PIueE1&z03v}-cmMzZ diff --git a/assets/server/voxel/rudder.vox b/assets/server/voxel/rudder.vox new file mode 100644 index 0000000000000000000000000000000000000000..578ce7a5a88e6d606305bc393401b1274f182fb0 GIT binary patch literal 1576 zcmeH_O-cko3`UdsOI6CH2XG-ST(}fmj-b*D9dJO#If*B6=V`owXYd~FE1{vifU6mJ zBwxOyI@QxJ+x^+Qh&*nlCxV<7k==B-I~jssgpqgHzaFMXNiW)g(=00BxGo zp+h#jfEVxrUciG6B|`yvN~O0EAv+N)G8>tV%tmI(ogCEhI#{9yTEa_s2@l=TmSX@l zo>QS^dZ>Xqx`UM@wZs5g*`=W!4eIC)X7m_6Mi09-w4*_typw}=JmVg7%X%!+bL3tq>AVPx7 z^DF0oG$M%cT#(3KAc+W)i68|Zo*!;El79bgxxTuXxA!;mba_61eSZ95)Ry{^kKT3v hQXjLUzCLf6UDt;{dY8GO2W)fX_zsTW!2f;&@&k?^GQ|J@ literal 0 HcmV?d00001 diff --git a/common/src/comp/body/ship.rs b/common/src/comp/body/ship.rs index a4a465ccf8..68532b677b 100644 --- a/common/src/comp/body/ship.rs +++ b/common/src/comp/body/ship.rs @@ -58,6 +58,7 @@ pub mod figuredata { pub bone0: ShipCentralSubSpec, pub bone1: ShipCentralSubSpec, pub bone2: ShipCentralSubSpec, + pub bone3: ShipCentralSubSpec, } #[derive(Deserialize)] diff --git a/voxygen/anim/src/character/run.rs b/voxygen/anim/src/character/run.rs index 3a4e350db2..42970f8f98 100644 --- a/voxygen/anim/src/character/run.rs +++ b/voxygen/anim/src/character/run.rs @@ -102,7 +102,6 @@ impl Animation for RunAnimation { } else { 0.0 } * 1.3; - //println!("speednorm {} ",side); let head_look = Vec2::new( (global_time + anim_time / 18.0).floor().mul(7331.0).sin() * 0.2, diff --git a/voxygen/anim/src/ship/idle.rs b/voxygen/anim/src/ship/idle.rs index a8e59d5c56..dc819c8988 100644 --- a/voxygen/anim/src/ship/idle.rs +++ b/voxygen/anim/src/ship/idle.rs @@ -7,7 +7,14 @@ use common::comp::item::ToolKind; pub struct IdleAnimation; impl Animation for IdleAnimation { - type Dependency = (Option, Option, f32); + type Dependency = ( + Option, + Option, + f32, + f32, + Vec3, + Vec3, + ); type Skeleton = ShipSkeleton; #[cfg(feature = "use-dyn-lib")] @@ -17,17 +24,35 @@ impl Animation for IdleAnimation { #[allow(clippy::approx_constant)] // TODO: Pending review in #587 fn update_skeleton_inner( skeleton: &Self::Skeleton, - (_active_tool_kind, _second_tool_kind, _global_time): Self::Dependency, + (_active_tool_kind, _second_tool_kind, _global_time, acc_vel, orientation, last_ori): Self::Dependency, _anim_time: f32, _rate: &mut f32, s_a: &SkeletonAttr, ) -> Self::Skeleton { let mut next = (*skeleton).clone(); - + 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.bone0.position = Vec3::new(s_a.bone0.0, s_a.bone0.1, s_a.bone0.2) / 11.0; next.bone1.position = Vec3::new(s_a.bone1.0, s_a.bone1.1, s_a.bone1.2) / 11.0; + next.bone1.orientation = Quaternion::rotation_y(acc_vel * 0.8); + next.bone2.position = Vec3::new(s_a.bone2.0, s_a.bone2.1, s_a.bone2.2) / 11.0; + next.bone2.orientation = Quaternion::rotation_y(-acc_vel * 0.8); + + next.bone3.position = Vec3::new(s_a.bone3.0, s_a.bone3.1, s_a.bone3.2) / 11.0; + next.bone3.orientation = Quaternion::rotation_z(tilt * 25.0); next } } diff --git a/voxygen/anim/src/ship/mod.rs b/voxygen/anim/src/ship/mod.rs index 14316d2ab3..f9c86cf033 100644 --- a/voxygen/anim/src/ship/mod.rs +++ b/voxygen/anim/src/ship/mod.rs @@ -12,13 +12,15 @@ pub type Body = comp::ship::Body; skeleton_impls!(struct ShipSkeleton { + bone0, + bone1, + + bone2, + + bone3, }); impl Skeleton for ShipSkeleton { type Attr = SkeletonAttr; type Body = Body; - const BONE_COUNT: usize = 2; + const BONE_COUNT: usize = 4; #[cfg(feature = "use-dyn-lib")] const COMPUTE_FN: &'static [u8] = b"ship_compute_mats\0"; @@ -32,7 +34,9 @@ impl Skeleton for ShipSkeleton { *(<&mut [_; Self::BONE_COUNT]>::try_from(&mut buf[0..Self::BONE_COUNT]).unwrap()) = [ make_bone(bone0_mat * Mat4::scaling_3d(1.0 / 11.0)), - make_bone(Mat4::::from(self.bone1) * Mat4::scaling_3d(1.0 / 11.0)), /* Decorellated from ori */ + make_bone(bone0_mat * Mat4::::from(self.bone1) * Mat4::scaling_3d(1.0 / 11.0)), /* Decorellated from ori */ + make_bone(bone0_mat * Mat4::::from(self.bone2) * Mat4::scaling_3d(1.0 / 11.0)), /* Decorellated from ori */ + make_bone(bone0_mat * Mat4::::from(self.bone3) * Mat4::scaling_3d(1.0 / 11.0)), /* Decorellated from ori */ ]; Vec3::unit_z() * 0.5 } @@ -41,6 +45,8 @@ impl Skeleton for ShipSkeleton { pub struct SkeletonAttr { bone0: (f32, f32, f32), bone1: (f32, f32, f32), + bone2: (f32, f32, f32), + bone3: (f32, f32, f32), } impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr { @@ -58,7 +64,9 @@ impl Default for SkeletonAttr { fn default() -> Self { Self { bone0: (0.0, 0.0, 0.0), - bone1: (0.0, 0.0, 0.0), + bone1: (-13.0, -25.0, 10.0), + bone2: (13.0, -25.0, 10.0), + bone3: (0.0, -27.5, 8.5), } } } diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index a04e9c5d16..ae677b6127 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -4215,7 +4215,7 @@ impl BodySpec for ship::Body { Some(mesh_ship_bone(map, body, |spec| &spec.bone0)), Some(mesh_ship_bone(map, body, |spec| &spec.bone1)), Some(mesh_ship_bone(map, body, |spec| &spec.bone2)), - None, + Some(mesh_ship_bone(map, body, |spec| &spec.bone3)), None, None, None, diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 0771ec4a1e..8a6b14ce4e 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -4226,14 +4226,28 @@ impl FigureMgr { // Standing (true, false, false) => anim::ship::IdleAnimation::update_skeleton( &ShipSkeleton::default(), - (active_tool_kind, second_tool_kind, time), + ( + active_tool_kind, + second_tool_kind, + time, + state.acc_vel, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + ), state.state_time, &mut state_animation_rate, skeleton_attr, ), _ => anim::ship::IdleAnimation::update_skeleton( &ShipSkeleton::default(), - (active_tool_kind, second_tool_kind, time), + ( + active_tool_kind, + second_tool_kind, + time, + state.acc_vel, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + ), state.state_time, &mut state_animation_rate, skeleton_attr,