Fix fighter visuals after landing snap (#67)
CI / build-and-test (push) Successful in 1m47s
CI / production-build (push) Successful in 11m8s

## 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:
2026-09-26 15:54:25 +00:00
committed by EIREXE
parent 62aa598324
commit 94e292026e
6 changed files with 69 additions and 8 deletions
+9 -1
View File
@@ -29,7 +29,8 @@ pub use attributes::FighterAttributes;
pub use ecb::FighterECB;
pub use manifest::FighterId;
pub use motion::{
FighterPreviousFacingDirection, FighterPreviousTranslation, FighterTranslation, FighterVelocity,
FighterPresentationSnap, FighterPreviousFacingDirection, FighterPreviousTranslation,
FighterTranslation, FighterVelocity,
};
pub use surface::FighterSurfaceState;
@@ -147,6 +148,10 @@ impl Plugin for FighterPlugin {
fn build(&self, app: &mut App) {
app.add_plugins(FighterAttackPlugin)
// Every state gets a chance to interrupt itself, in priority order.
.add_systems(
GgrsSchedule,
motion::clear_fighter_presentation_snaps.in_set(GameplaySet::Input),
)
.add_systems(
GgrsSchedule,
(
@@ -202,6 +207,8 @@ impl Plugin for FighterPlugin {
.checksum_component_with_hash::<FighterTranslation>()
.rollback_component_with_copy::<FighterPreviousTranslation>()
.checksum_component_with_hash::<FighterPreviousTranslation>()
.rollback_component_with_copy::<FighterPresentationSnap>()
.checksum_component_with_hash::<FighterPresentationSnap>()
.rollback_component_with_copy::<FighterPreviousFacingDirection>()
.checksum_component_with_hash::<FighterPreviousFacingDirection>()
.rollback_component_with_copy::<animation::FighterAnimationFrame>()
@@ -304,6 +311,7 @@ pub fn spawn_fighter(
FighterVelocity::default(),
FighterTranslation(spawn_position),
FighterPreviousTranslation(spawn_position),
FighterPresentationSnap::default(),
),
visual_root,
animations,