fix character model swapping (#61)
This commit is contained in:
@@ -186,12 +186,18 @@ fn setup_animations_marker_for_player(
|
||||
fn on_update_head_mesh(
|
||||
trigger: Trigger<HeadChanged>,
|
||||
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>>,
|
||||
head_db: Res<HeadsDatabase>,
|
||||
audio_assets: Res<AudioAssets>,
|
||||
) {
|
||||
let body_mesh = *body_mesh;
|
||||
) -> Result {
|
||||
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;
|
||||
|
||||
@@ -199,11 +205,10 @@ fn on_update_head_mesh(
|
||||
|
||||
commands.trigger(PlaySound::Head(head_str.to_string()));
|
||||
|
||||
commands.entity(body_mesh).despawn_related::<Children>();
|
||||
|
||||
commands
|
||||
.entity(body_mesh)
|
||||
.with_child(AnimatedCharacter::new(trigger.0));
|
||||
.entity(animated_char)
|
||||
.remove::<AnimatedCharacter>()
|
||||
.insert(AnimatedCharacter::new(trigger.0));
|
||||
|
||||
//TODO: make part of full character mesh later
|
||||
if head_db.head_stats(trigger.0).controls == HeadControls::Plane {
|
||||
@@ -216,4 +221,6 @@ fn on_update_head_mesh(
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user