mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Use movement anim as base and action anim as overwrite
This commit is contained in:
@ -702,68 +702,61 @@ impl FigureMgr {
|
|||||||
state.last_movement_change.elapsed().as_secs_f64();
|
state.last_movement_change.elapsed().as_secs_f64();
|
||||||
let time_since_action_change = state.last_action_change.elapsed().as_secs_f64();
|
let time_since_action_change = state.last_action_change.elapsed().as_secs_f64();
|
||||||
|
|
||||||
let target_movement = match &character.movement {
|
let target_base = match &character.movement {
|
||||||
Stand => anim::character::StandAnimation::update_skeleton(
|
Stand => anim::character::StandAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&CharacterSkeleton::new(),
|
||||||
time,
|
time,
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Run => anim::character::RunAnimation::update_skeleton(
|
Run => anim::character::RunAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&CharacterSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Jump => anim::character::JumpAnimation::update_skeleton(
|
Jump => anim::character::JumpAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&CharacterSkeleton::new(),
|
||||||
time,
|
time,
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Roll { .. } => anim::character::RollAnimation::update_skeleton(
|
Roll { .. } => anim::character::RollAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&CharacterSkeleton::new(),
|
||||||
time,
|
time,
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Glide => anim::character::GlidingAnimation::update_skeleton(
|
Glide => anim::character::GlidingAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&CharacterSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
state.skeleton.interpolate(&target_movement, dt);
|
|
||||||
|
|
||||||
let target_action = match &character.action {
|
let target_bones = match (&character.movement, &character.action) {
|
||||||
Idle => anim::character::IdleAnimation::update_skeleton(
|
(_, Wield { .. }) => anim::character::CidleAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&target_base,
|
||||||
(vel.0.magnitude(), time),
|
|
||||||
time_since_movement_change,
|
|
||||||
skeleton_attr,
|
|
||||||
),
|
|
||||||
|
|
||||||
Wield { .. } => anim::character::CidleAnimation::update_skeleton(
|
|
||||||
state.skeleton_mut(),
|
|
||||||
time,
|
time,
|
||||||
time_since_action_change,
|
time_since_action_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Attack { .. } => anim::character::AttackAnimation::update_skeleton(
|
(_, Attack { .. }) => anim::character::AttackAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&target_base,
|
||||||
time,
|
time,
|
||||||
time_since_action_change,
|
time_since_action_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Block { .. } => anim::character::BlockAnimation::update_skeleton(
|
(_, Block { .. }) => anim::character::BlockAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&target_base,
|
||||||
time,
|
time,
|
||||||
time_since_action_change,
|
time_since_action_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
|
_ => target_base,
|
||||||
};
|
};
|
||||||
state.skeleton.interpolate(&target_action, dt);
|
state.skeleton.interpolate(&target_bones, dt);
|
||||||
|
|
||||||
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
||||||
}
|
}
|
||||||
@ -785,21 +778,21 @@ impl FigureMgr {
|
|||||||
let time_since_movement_change =
|
let time_since_movement_change =
|
||||||
state.last_movement_change.elapsed().as_secs_f64();
|
state.last_movement_change.elapsed().as_secs_f64();
|
||||||
|
|
||||||
let target_movement = match character.movement {
|
let target_base = match character.movement {
|
||||||
Stand => anim::quadruped::IdleAnimation::update_skeleton(
|
Stand => anim::quadruped::IdleAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedSkeleton::new(),
|
||||||
time,
|
time,
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Run => anim::quadruped::RunAnimation::update_skeleton(
|
Run => anim::quadruped::RunAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Jump => anim::quadruped::JumpAnimation::update_skeleton(
|
Jump => anim::quadruped::JumpAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
@ -809,7 +802,7 @@ impl FigureMgr {
|
|||||||
_ => state.skeleton_mut().clone(),
|
_ => state.skeleton_mut().clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
state.skeleton.interpolate(&target_movement, dt);
|
state.skeleton.interpolate(&target_base, dt);
|
||||||
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
||||||
}
|
}
|
||||||
Body::QuadrupedMedium(_) => {
|
Body::QuadrupedMedium(_) => {
|
||||||
@ -832,21 +825,21 @@ impl FigureMgr {
|
|||||||
let time_since_movement_change =
|
let time_since_movement_change =
|
||||||
state.last_movement_change.elapsed().as_secs_f64();
|
state.last_movement_change.elapsed().as_secs_f64();
|
||||||
|
|
||||||
let target_movement = match character.movement {
|
let target_base = match character.movement {
|
||||||
Stand => anim::quadrupedmedium::IdleAnimation::update_skeleton(
|
Stand => anim::quadrupedmedium::IdleAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedMediumSkeleton::new(),
|
||||||
time,
|
time,
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Run => anim::quadrupedmedium::RunAnimation::update_skeleton(
|
Run => anim::quadrupedmedium::RunAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedMediumSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
),
|
||||||
Jump => anim::quadrupedmedium::JumpAnimation::update_skeleton(
|
Jump => anim::quadrupedmedium::JumpAnimation::update_skeleton(
|
||||||
state.skeleton_mut(),
|
&QuadrupedMediumSkeleton::new(),
|
||||||
(vel.0.magnitude(), time),
|
(vel.0.magnitude(), time),
|
||||||
time_since_movement_change,
|
time_since_movement_change,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
@ -856,7 +849,7 @@ impl FigureMgr {
|
|||||||
_ => state.skeleton_mut().clone(),
|
_ => state.skeleton_mut().clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
state.skeleton.interpolate(&target_movement, dt);
|
state.skeleton.interpolate(&target_base, dt);
|
||||||
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
state.update(renderer, pos.0, ori.0, scale, col, dt);
|
||||||
}
|
}
|
||||||
Body::Object(_) => {
|
Body::Object(_) => {
|
||||||
|
Reference in New Issue
Block a user