From 0642a9234bb1b2bb2cf61f7d481211b2ec55d2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Rom=C3=A1n=20N=C3=BA=C3=B1ez?= Date: Mon, 12 Oct 2026 20:21:11 +0000 Subject: [PATCH] Fix one frame visual transform delay (#89) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-on: https://git.eirexe.moe/EIREXE/shinespark/pulls/89 Co-authored-by: Álex Román Núñez --- src/fighter/debug.rs | 19 +++++++++++++++---- src/fighter/mod.rs | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/fighter/debug.rs b/src/fighter/debug.rs index 1b3ee62..6381bf6 100644 --- a/src/fighter/debug.rs +++ b/src/fighter/debug.rs @@ -171,20 +171,31 @@ pub fn animation_debug( &FighterTranslation, &FighterFacingDirection, &FighterBoneMatrices, + &Fighter, )>, mut gizmos: Gizmos, + fighter_manifests: Res>, ) { - for (global_transform, facing_dir, matrices) in query { + for (global_transform, facing_dir, matrices, fighter) in query { + let Some(manifest) = fighter_manifests.get(&fighter.manifest) else { + continue; + }; let global_transform = global_transform.get_3d_transform(facing_dir); let marker_transform = global_transform.to_mat4(); - for (_, matrix) in matrices.iter() { + for (bone_name, matrix) in matrices.iter() { let pos = marker_transform.transform_point(Vec3::new( matrix.cols[3][0].to_num(), matrix.cols[3][1].to_num(), matrix.cols[3][2].to_num(), )); - gizmos.cross(pos, 0.5, bevy::color::palettes::css::RED); - gizmos.axes(marker_transform, 1.0); + + if manifest.ecb_bones.iter().any(|ecb_bone_name| ecb_bone_name == bone_name) { + gizmos.cross(pos, 1.0, bevy::color::palettes::css::GREEN); + } else { + gizmos.cross(pos, 0.5, bevy::color::palettes::css::RED); + gizmos.axes(marker_transform, 1.0); + } + } } } diff --git a/src/fighter/mod.rs b/src/fighter/mod.rs index 63c817c..e014070 100644 --- a/src/fighter/mod.rs +++ b/src/fighter/mod.rs @@ -212,6 +212,7 @@ impl Plugin for FighterPlugin { animation::apply_animation, ) .chain() + .before(bevy::transform::TransformSystems::Propagate) .run_if(in_state(crate::AppState::InMatch)), ) // Rollback registration lives next to the systems that write these