fix character model swapping (#61)

This commit is contained in:
PROMETHIA-27
2025-07-26 13:12:37 -04:00
committed by GitHub
parent d55f651a12
commit 0bd3fb0e80

View File

@@ -186,12 +186,18 @@ fn setup_animations_marker_for_player(
fn on_update_head_mesh( fn on_update_head_mesh(
trigger: Trigger<HeadChanged>, trigger: Trigger<HeadChanged>,
mut commands: Commands, mut commands: Commands,
body_mesh: Single<Entity, With<PlayerBodyMesh>>, body_mesh: Single<(Entity, &Children), With<PlayerBodyMesh>>,
animated_characters: Query<&AnimatedCharacter>,
mut player: Single<&mut ActiveHead, With<Player>>, mut player: Single<&mut ActiveHead, With<Player>>,
head_db: Res<HeadsDatabase>, head_db: Res<HeadsDatabase>,
audio_assets: Res<AudioAssets>, audio_assets: Res<AudioAssets>,
) { ) -> Result {
let body_mesh = *body_mesh; let (body_mesh, mesh_children) = *body_mesh;
let animated_char = mesh_children
.iter()
.find(|child| animated_characters.contains(*child))
.ok_or("tried to update head mesh before AnimatedCharacter was readded")?;
player.0 = trigger.0; player.0 = trigger.0;
@@ -199,11 +205,10 @@ fn on_update_head_mesh(
commands.trigger(PlaySound::Head(head_str.to_string())); commands.trigger(PlaySound::Head(head_str.to_string()));
commands.entity(body_mesh).despawn_related::<Children>();
commands commands
.entity(body_mesh) .entity(animated_char)
.with_child(AnimatedCharacter::new(trigger.0)); .remove::<AnimatedCharacter>()
.insert(AnimatedCharacter::new(trigger.0));
//TODO: make part of full character mesh later //TODO: make part of full character mesh later
if head_db.head_stats(trigger.0).controls == HeadControls::Plane { if head_db.head_stats(trigger.0).controls == HeadControls::Plane {
@@ -216,4 +221,6 @@ fn on_update_head_mesh(
}, },
)); ));
} }
Ok(())
} }