alpha attacks

This commit is contained in:
jshipsey 2021-03-27 00:40:18 -04:00
parent 0b10ffc715
commit 9a26024acb
33 changed files with 243 additions and 115 deletions

View File

@ -165,15 +165,15 @@
),
// 1h Swords
"common.items.weapons.sword_1h.bloodsteel-0": (
vox_spec: ("weapon.sword_1h.bloodsteel-0", (-2.0, -4.5, -3.0)),
vox_spec: ("weapon.sword_1h.bloodsteel-0", (-2.5, -3.5, -3.0)),
color: None
),
"common.items.weapons.sword_1h.bloodsteel-1": (
vox_spec: ("weapon.sword_1h.bloodsteel-1", (-2.0, -4.5, -3.0)),
vox_spec: ("weapon.sword_1h.bloodsteel-1", (-1.5, -3.0, -3.0)),
color: None
),
"common.items.weapons.sword_1h.bloodsteel-2": (
vox_spec: ("weapon.sword_1h.bloodsteel-2", (-2.0, -4.5, -3.0)),
vox_spec: ("weapon.sword_1h.bloodsteel-2", (-1.5, -3.0, -3.0)),
color: None
),
"common.items.weapons.sword_1h.bronze-0": (
@ -391,11 +391,11 @@
),
// 1h Axes
"common.items.weapons.axe_1h.bloodsteel-0": (
vox_spec: ("weapon.axe_1h.bloodsteel-0", (-1.5, -7.5, -3.0)),
vox_spec: ("weapon.axe_1h.bloodsteel-0", (-1.5, -2.0, -3.0)),
color: None
),
"common.items.weapons.axe_1h.bloodsteel-1": (
vox_spec: ("weapon.axe_1h.bloodsteel-1", (-1.5, -5.0, -3.0)),
vox_spec: ("weapon.axe_1h.bloodsteel-1", (-1.5, -2.0, -3.0)),
color: None
),
"common.items.weapons.axe_1h.bronze-0": (
@ -609,7 +609,7 @@
),*/
// 1h Hammers
"common.items.weapons.hammer_1h.bloodsteel-0": (
vox_spec: ("weapon.hammer_1h.bloodsteel-0", (-1.5, -5.0, -6.0)),
vox_spec: ("weapon.hammer_1h.bloodsteel-0", (-2.5, -3.0, -3.0)),
color: None
),
"common.items.weapons.hammer_1h.bloodsteel-1": (

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,7 +2,10 @@ use super::{
super::{vek::*, Animation},
CharacterSkeleton, SkeletonAttr,
};
use common::{comp::item::ToolKind, states::utils::StageSection};
use common::{
comp::item::{Hands, ToolKind},
states::utils::StageSection,
};
use std::f32::consts::PI;
pub struct AlphaAnimation;
@ -11,6 +14,7 @@ impl Animation for AlphaAnimation {
type Dependency = (
Option<ToolKind>,
Option<ToolKind>,
(Option<Hands>, Option<Hands>),
f32,
f32,
Option<StageSection>,
@ -24,7 +28,7 @@ impl Animation for AlphaAnimation {
#[allow(clippy::approx_constant)] // TODO: Pending review in #587
fn update_skeleton_inner(
skeleton: &Self::Skeleton,
(active_tool_kind, _second_tool_kind, _velocity, _global_time, stage_section): Self::Dependency,
(active_tool_kind, _second_tool_kind, hands, _velocity, _global_time, stage_section): Self::Dependency,
anim_time: f32,
rate: &mut f32,
s_a: &SkeletonAttr,
@ -38,30 +42,16 @@ impl Animation for AlphaAnimation {
Some(StageSection::Recover) => (1.0, 1.0, anim_time.powi(4)),
_ => (0.0, 0.0, 0.0),
};
next.second.position = Vec3::new(0.0, 0.0, 0.0);
next.second.orientation = Quaternion::rotation_z(0.0);
next.torso.position = Vec3::new(0.0, 0.0, 0.1) * s_a.scaler;
next.torso.orientation = Quaternion::rotation_z(0.0);
match active_tool_kind {
Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => {
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_x(0.0);
next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4);
next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4);
next.control.position = Vec3::new(
s_a.sc.0,
s_a.sc.1 + move1 * -4.0 + move2 * 16.0 + move3 * -4.0,
s_a.sc.2 + move1 * 1.0,
);
next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + move1 * -0.5)
* Quaternion::rotation_y(s_a.sc.4 + move1 * -1.0 + move2 * -0.6 + move3 * 1.0)
* Quaternion::rotation_z(s_a.sc.5 + move1 * -1.2 + move2 * 1.3);
next.chest.orientation =
Quaternion::rotation_z(move1 * 1.5 + (move2 * 1.75).sin() * -3.0 + move3 * 0.5);
@ -75,15 +65,10 @@ impl Animation for AlphaAnimation {
next.control_l.orientation =
Quaternion::rotation_x(-1.4) * Quaternion::rotation_z(1.4);
},
Some(ToolKind::Axe) => {
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_x(0.0);
next.hand_l.position = Vec3::new(s_a.ahl.0, s_a.ahl.1, s_a.ahl.2);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.ahl.3) * Quaternion::rotation_y(s_a.ahl.4);
next.hand_r.position = Vec3::new(s_a.ahr.0, s_a.ahr.1, s_a.ahr.2);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.ahr.3) * Quaternion::rotation_z(s_a.ahr.5);
next.head.position =
Vec3::new(0. + move2 * 2.0, s_a.head.0 + move2 * 2.0, s_a.head.1);
@ -94,20 +79,6 @@ impl Animation for AlphaAnimation {
Some(StageSection::Recover) => (1.0, 1.0, anim_time.powi(4)),
_ => (0.0, 0.0, 0.0),
};
next.control.position = Vec3::new(
s_a.ac.0 + move1 * -1.0 + move2 * -2.0 + move3 * 0.0,
s_a.ac.1 + move1 * -3.0 + move2 * 3.0 + move3 * -3.5,
s_a.ac.2 + move1 * 6.0 + move2 * -15.0 + move3 * -2.0,
);
next.control.orientation =
Quaternion::rotation_x(s_a.ac.3 + move1 * 0.0 + move2 * -3.0 + move3 * 0.4)
* Quaternion::rotation_y(
s_a.ac.4 + move1 * -0.0 + move2 * -0.6 + move3 * 0.8,
)
* Quaternion::rotation_z(
s_a.ac.5 + move1 * -2.0 + move2 * -1.0 + move3 * 2.5,
);
next.control.scale = Vec3::one();
next.chest.orientation =
Quaternion::rotation_x(0.0 + move1 * 0.6 + move2 * -0.6 + move3 * 0.4)
@ -116,6 +87,7 @@ impl Animation for AlphaAnimation {
next.head.orientation =
Quaternion::rotation_z(0.0 + move1 * -1.5 + move2 * 2.5 + move3 * -1.0);
},
Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) | Some(ToolKind::Pick) => {
let (move1, move2, move3) = match stage_section {
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
@ -125,24 +97,7 @@ impl Animation for AlphaAnimation {
};
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_x(0.0);
next.hand_l.position = Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + move2 * -7.0);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4);
next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4);
next.control.position = Vec3::new(
s_a.hc.0 + (move1 * -13.0) * (1.0 - move3),
s_a.hc.1 + (move2 * 5.0) * (1.0 - move3),
s_a.hc.2,
);
next.control.orientation =
Quaternion::rotation_x(s_a.hc.3 + (move1 * 1.5 + move2 * -2.5))
* (1.0 - move3)
* Quaternion::rotation_y(s_a.hc.4 + (move1 * 1.57))
* (1.0 - move3)
* Quaternion::rotation_z(s_a.hc.5 + (move2 * -0.5) * (1.0 - move3));
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
next.head.orientation =
Quaternion::rotation_x((move1 * 0.1 + move2 * 0.3) * (1.0 - move3))
@ -162,6 +117,183 @@ impl Animation for AlphaAnimation {
},
_ => {},
}
match hands {
(Some(Hands::Two), _) => match active_tool_kind {
Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => {
next.hand_l.position = Vec3::new(s_a.shl.0, s_a.shl.1, s_a.shl.2);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.shl.3) * Quaternion::rotation_y(s_a.shl.4);
next.hand_r.position = Vec3::new(s_a.shr.0, s_a.shr.1, s_a.shr.2);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.shr.3) * Quaternion::rotation_y(s_a.shr.4);
next.control.position = Vec3::new(
s_a.sc.0,
s_a.sc.1 + move1 * -4.0 + move2 * 16.0 + move3 * -4.0,
s_a.sc.2 + move1 * 1.0,
);
next.control.orientation = Quaternion::rotation_x(s_a.sc.3 + move1 * -0.5)
* Quaternion::rotation_y(
s_a.sc.4 + move1 * -1.0 + move2 * -0.6 + move3 * 1.0,
)
* Quaternion::rotation_z(s_a.sc.5 + move1 * -1.2 + move2 * 1.3);
},
Some(ToolKind::Axe) => {
let (move1, move2, move3) = match stage_section {
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
Some(StageSection::Swing) => (1.0, anim_time, 0.0),
Some(StageSection::Recover) => (1.0, 1.0, anim_time.powi(4)),
_ => (0.0, 0.0, 0.0),
};
next.control.position = Vec3::new(
s_a.ac.0 + move1 * -1.0 + move2 * -2.0 + move3 * 0.0,
s_a.ac.1 + move1 * -3.0 + move2 * 3.0 + move3 * -3.5,
s_a.ac.2 + move1 * 6.0 + move2 * -15.0 + move3 * -2.0,
);
next.control.orientation =
Quaternion::rotation_x(s_a.ac.3 + move1 * 0.0 + move2 * -3.0 + move3 * 0.4)
* Quaternion::rotation_y(
s_a.ac.4 + move1 * -0.0 + move2 * -0.6 + move3 * 0.8,
)
* Quaternion::rotation_z(
s_a.ac.5 + move1 * -2.0 + move2 * -1.0 + move3 * 2.5,
)
},
Some(ToolKind::Hammer) | Some(ToolKind::HammerSimple) | Some(ToolKind::Pick) => {
let (move1, move2, move3) = match stage_section {
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
Some(StageSection::Swing) => (1.0, anim_time, 0.0),
Some(StageSection::Recover) => (1.0, 1.0, anim_time.powi(4)),
_ => (0.0, 0.0, 0.0),
};
next.hand_l.position =
Vec3::new(s_a.hhl.0, s_a.hhl.1, s_a.hhl.2 + move2 * -7.0);
next.hand_l.orientation =
Quaternion::rotation_x(s_a.hhl.3) * Quaternion::rotation_y(s_a.hhl.4);
next.hand_r.position = Vec3::new(s_a.hhr.0, s_a.hhr.1, s_a.hhr.2);
next.hand_r.orientation =
Quaternion::rotation_x(s_a.hhr.3) * Quaternion::rotation_y(s_a.hhr.4);
next.control.position = Vec3::new(
s_a.hc.0 + (move1 * -13.0) * (1.0 - move3),
s_a.hc.1 + (move2 * 5.0) * (1.0 - move3),
s_a.hc.2,
);
next.control.orientation =
Quaternion::rotation_x(s_a.hc.3 + (move1 * 1.5 + move2 * -2.5))
* (1.0 - move3)
* Quaternion::rotation_y(s_a.hc.4 + (move1 * 1.57))
* (1.0 - move3)
* Quaternion::rotation_z(s_a.hc.5 + (move2 * -0.5) * (1.0 - move3));
},
_ => {},
},
(_, _) => {},
};
match hands {
(Some(Hands::One), Some(Hands::One)) | (Some(Hands::One), None) => {
match active_tool_kind {
Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => {
next.control_l.position = Vec3::new(-7.0, 8.0, 2.0);
next.control_l.orientation = Quaternion::rotation_x(-0.3 + move2 * 2.0)
* Quaternion::rotation_y(move1 * -1.2 + move2 * -1.5)
* Quaternion::rotation_z(move2 * 1.5);
next.hand_l.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_l.orientation = Quaternion::rotation_x(1.57)
},
Some(ToolKind::Axe) => {
next.control_l.position = Vec3::new(
-7.0 + move2 * 5.0,
8.0 + move1 * 3.0 + move2 * 7.0,
2.0 + move1 * -6.0 + move2 * 10.0,
);
next.control_l.orientation = Quaternion::rotation_x(-0.3 + move2 * 2.0)
* Quaternion::rotation_y(move1 * -1.2 + move2 * -2.5)
* Quaternion::rotation_z(move2 * 1.5);
next.hand_l.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_l.orientation = Quaternion::rotation_x(1.57)
},
Some(ToolKind::Hammer)
| Some(ToolKind::HammerSimple)
| Some(ToolKind::Pick) => {
next.control_l.position = Vec3::new(
-7.0,
8.0 + move1 * -4.0 + move2 * 4.0,
2.0 + move1 * 16.0 + move2 * -19.0,
);
next.control_l.orientation =
Quaternion::rotation_x(-0.3 + move1 * 1.3 + move2 * -2.3)
* Quaternion::rotation_y(0.0)
* Quaternion::rotation_z(0.0);
next.hand_l.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_l.orientation = Quaternion::rotation_x(1.57)
},
_ => {},
}
},
(_, _) => {},
};
match hands {
(Some(Hands::One), Some(Hands::One)) | (None, Some(Hands::One)) => {
match active_tool_kind {
Some(ToolKind::Sword) | Some(ToolKind::SwordSimple) => {
next.control_r.position = Vec3::new(7.0 + move2 * 8.0, 8.0, 2.0);
next.control_r.orientation = Quaternion::rotation_x(-0.3 + move2 * 2.0)
* Quaternion::rotation_y(move1 * -1.8 + move2 * -1.5)
* Quaternion::rotation_z(move2 * 1.5);
next.hand_r.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_r.orientation = Quaternion::rotation_x(1.57)
},
Some(ToolKind::Axe) => {
next.control_r.position = Vec3::new(
7.0 + move2 * 5.0,
8.0 + move1 * 3.0 + move2 * 7.0,
2.0 + move1 * -6.0 + move2 * 8.0,
);
next.control_r.orientation = Quaternion::rotation_x(-0.3 + move2 * 2.0)
* Quaternion::rotation_y(move1 * -1.8 + move2 * -1.5)
* Quaternion::rotation_z(move2 * 1.5);
next.hand_r.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_r.orientation = Quaternion::rotation_x(1.57)
},
Some(ToolKind::Hammer)
| Some(ToolKind::HammerSimple)
| Some(ToolKind::Pick) => {
next.control_r.position = Vec3::new(
7.0,
8.0 + move1 * -4.0 + move2 * 4.0,
2.0 + move1 * 16.0 + move2 * -21.0,
);
next.control_r.orientation =
Quaternion::rotation_x(-0.3 + move1 * 1.3 + move2 * -2.3)
* Quaternion::rotation_y(0.0)
* Quaternion::rotation_z(0.0);
next.hand_r.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_r.orientation = Quaternion::rotation_x(1.57)
},
_ => {},
}
},
(_, _) => {},
};
match hands {
(None, None) | (None, Some(Hands::One)) => {
next.hand_l.position = Vec3::new(-4.5, 8.0, 5.0);
next.hand_l.orientation = Quaternion::rotation_x(1.9) * Quaternion::rotation_y(-0.5)
},
(_, _) => {},
};
match hands {
(None, None) | (Some(Hands::One), None) => {
next.hand_r.position = Vec3::new(4.5, 8.0, 5.0);
next.hand_r.orientation = Quaternion::rotation_x(1.9) * Quaternion::rotation_y(0.5)
},
(_, _) => {},
};
next
}
}

View File

@ -144,7 +144,7 @@ impl Animation for StandAnimation {
next.second.scale = Vec3::one();
next.second.scale = match hands {
(Some(Hands::One), Some(Hands::One)) => Vec3::one(),
(None, Some(Hands::One)) | (Some(Hands::One), Some(Hands::One)) => Vec3::one(),
(_, _) => Vec3::zero(),
};

View File

@ -97,7 +97,10 @@ impl Animation for WieldAnimation {
// (Some(Hands::One), Some(Hands::One)) => Vec3::one(),
// (_, _) => Vec3::zero(),
// };
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_z(0.0);
next.second.position = Vec3::new(0.0, 0.0, 0.0);
next.second.orientation = Quaternion::rotation_z(0.0);
if speed > 0.2 && velocity.z == 0.0 {
next.chest.orientation = Quaternion::rotation_z(short * 0.1 + strafe * 0.7)
* Quaternion::rotation_y(strafe * 0.2)
@ -342,44 +345,34 @@ impl Animation for WieldAnimation {
(_, _) => {},
};
match hands {
(Some(Hands::One), _) => {
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.second.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_z(PI);
next.second.orientation = Quaternion::rotation_z(PI);
next.control_l.position = Vec3::new(-8.0, 9.0, 4.0);
(Some(Hands::One), Some(Hands::One)) | (Some(Hands::One), None) => {
next.control_l.position = Vec3::new(-7.0, 8.0, 2.0);
next.control_l.orientation = Quaternion::rotation_x(-0.3);
next.hand_l.position = Vec3::new(0.0, 0.5, -4.0);
next.hand_l.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_l.orientation = Quaternion::rotation_x(1.57)
},
(_, _) => {},
};
match hands {
(_, Some(Hands::One)) => {
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.second.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_z(PI);
next.second.orientation = Quaternion::rotation_z(PI);
next.control_r.position = Vec3::new(8.0, 9.0, 4.0);
(Some(Hands::One), Some(Hands::One)) | (None, Some(Hands::One)) => {
next.control_r.position = Vec3::new(7.0, 8.0, 2.0);
next.control_r.orientation = Quaternion::rotation_x(-0.3);
next.hand_r.position = Vec3::new(0.0, 0.5, -4.0);
next.hand_r.position = Vec3::new(0.0, -0.5, 0.0);
next.hand_r.orientation = Quaternion::rotation_x(1.57)
},
(_, _) => {},
};
match hands {
(None, _) => {
next.hand_l.position = Vec3::new(0.0, 0.0, 20.0);
(None, None) | (None, Some(Hands::One)) => {
next.hand_l.position = Vec3::new(-4.5, 8.0, 5.0);
next.hand_l.orientation = Quaternion::rotation_x(1.9) * Quaternion::rotation_y(-0.5)
},
(_, _) => {},
};
match hands {
(_, None) => {
next.hand_r.position = Vec3::new(0.0, 0.0, 20.0);
(None, None) | (Some(Hands::One), None) => {
next.hand_r.position = Vec3::new(4.5, 8.0, 5.0);
next.hand_r.orientation = Quaternion::rotation_x(1.9) * Quaternion::rotation_y(0.5)
},
(_, _) => {},
};

View File

@ -899,6 +899,7 @@ impl FigureMgr {
(
active_tool_kind,
second_tool_kind,
hands,
rel_vel.magnitude(),
time,
Some(s.stage_section),
@ -1057,6 +1058,7 @@ impl FigureMgr {
(
active_tool_kind,
second_tool_kind,
hands,
rel_vel.magnitude(),
time,
None,
@ -1361,6 +1363,7 @@ impl FigureMgr {
(
active_tool_kind,
second_tool_kind,
hands,
rel_vel.magnitude(),
time,
Some(s.stage_section),