Fix fighter visuals after landing snap (#67)
## Summary - Mark landing position corrections as presentation discontinuities. - Render and frame fighters from the current position for the snap frame. - Keep previous translation history unchanged for gameplay collision and attack logic. Reviewed-on: #67 Co-authored-by: Álex Román Núñez <eirexe@eirteam.moe>
This commit was merged in pull request #67.
This commit is contained in:
+9
-5
@@ -5,7 +5,7 @@ use bevy_ggrs::GgrsFrameTiming;
|
||||
|
||||
use crate::{
|
||||
debug_tools::DebugSettings,
|
||||
fighter::{manifest::FighterManifest, motion::sample_presentation_translation},
|
||||
fighter::{manifest::FighterManifest, motion::{sample_presentation_translation_with_snap, FighterPresentationSnap}},
|
||||
stage::manifest::StageCameraProfile,
|
||||
};
|
||||
|
||||
@@ -313,6 +313,7 @@ fn update_match_camera(
|
||||
&crate::fighter::motion::FighterPreviousTranslation,
|
||||
&crate::fighter::Fighter,
|
||||
&crate::fighter::FighterFacingDirection,
|
||||
&FighterPresentationSnap,
|
||||
&mut FighterCameraExtents,
|
||||
),
|
||||
With<crate::player::Player>,
|
||||
@@ -329,16 +330,17 @@ fn update_match_camera(
|
||||
let subjects = fighters
|
||||
.iter_mut()
|
||||
.map(
|
||||
|(translation, previous_translation, fighter, facing, mut extents)| {
|
||||
|(translation, previous_translation, fighter, facing, presentation_snap, mut extents)| {
|
||||
let manifest = manifests
|
||||
.get(&fighter.manifest)
|
||||
.expect("Fighter manifest should be valid");
|
||||
fighter_subject_bounds(
|
||||
sample_presentation_translation(
|
||||
sample_presentation_translation_with_snap(
|
||||
*previous_translation,
|
||||
*translation,
|
||||
timing.overstep_fraction(),
|
||||
debug_settings.motion_sampling,
|
||||
*presentation_snap,
|
||||
),
|
||||
manifest.camera,
|
||||
*facing,
|
||||
@@ -465,6 +467,7 @@ fn debug_draw_camera(
|
||||
&crate::fighter::motion::FighterPreviousTranslation,
|
||||
&crate::fighter::Fighter,
|
||||
&crate::fighter::FighterFacingDirection,
|
||||
&FighterPresentationSnap,
|
||||
&FighterCameraExtents,
|
||||
),
|
||||
With<crate::player::Player>,
|
||||
@@ -486,15 +489,16 @@ fn debug_draw_camera(
|
||||
Color::srgb(1.0, 0.5, 0.0),
|
||||
);
|
||||
draw_rectangle(&mut gizmos, camera.frame, Color::srgb(1.0, 1.0, 0.0));
|
||||
for (translation, previous_translation, fighter, _facing, extents) in &fighters {
|
||||
for (translation, previous_translation, fighter, _facing, presentation_snap, extents) in &fighters {
|
||||
let manifest = manifests
|
||||
.get(&fighter.manifest)
|
||||
.expect("Fighter manifest should be valid");
|
||||
let center = sample_presentation_translation(
|
||||
let center = sample_presentation_translation_with_snap(
|
||||
*previous_translation,
|
||||
*translation,
|
||||
timing.overstep_fraction(),
|
||||
debug_settings.motion_sampling,
|
||||
*presentation_snap,
|
||||
) + Vec2::Y * manifest.camera.vertical_origin_offset.to_num::<f32>();
|
||||
draw_rectangle(
|
||||
&mut gizmos,
|
||||
|
||||
Reference in New Issue
Block a user