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(
|
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(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user