pickup/putdown animationsgit add .; git commit

selection-refactor
Elijah Voigt 2 years ago
parent 1aec9ae9ce
commit 668bb64e68

@ -447,20 +447,51 @@ fn selected_gizmo(
} }
fn pick_up( fn pick_up(
mut events: Query<&mut Transform, (With<game::Piece>, With<Display3d>, Added<game::Selected>)>, mut events: Query<
(Entity, &game::Piece),
(With<game::Piece>, With<Display3d>, Added<game::Selected>),
>,
assets_map: Res<AssetsMap>,
gltfs: Res<Assets<Gltf>>,
children: Query<&Children>,
mut players: Query<&mut AnimationPlayer>,
) { ) {
events.iter_mut().for_each(|mut transform| { events.iter_mut().for_each(|(entity, piece)| {
transform.translation += Vec3::Y; let gltf = gltfs.get(&assets_map.models).expect("Load GLTF content");
children.iter_descendants(entity).for_each(|child| {
if let Ok(mut player) = players.get_mut(child) {
let animation = match piece {
game::Piece::Queen => gltf.named_animations.get("QueenPickup"),
game::Piece::Drone => gltf.named_animations.get("DronePickup"),
game::Piece::Pawn => gltf.named_animations.get("PawnPickup"),
};
player.play(animation.expect("Pickup Animation").clone());
}
})
}); });
} }
fn put_down( fn put_down(
mut events: RemovedComponents<game::Selected>, mut events: RemovedComponents<game::Selected>,
mut query: Query<&mut Transform, (With<game::Piece>, With<Display3d>)>, mut query: Query<&game::Piece, (With<game::Piece>, With<Display3d>)>,
assets_map: Res<AssetsMap>,
gltfs: Res<Assets<Gltf>>,
children: Query<&Children>,
mut players: Query<&mut AnimationPlayer>,
) { ) {
events.iter().for_each(|entity| { events.iter().for_each(|entity| {
if let Ok(mut transform) = query.get_mut(entity) { if let Ok(piece) = query.get_mut(entity) {
transform.translation -= Vec3::Y; let gltf = gltfs.get(&assets_map.models).expect("Load GLTF content");
children.iter_descendants(entity).for_each(|child| {
if let Ok(mut player) = players.get_mut(child) {
let animation = match piece {
game::Piece::Queen => gltf.named_animations.get("QueenPutDown"),
game::Piece::Drone => gltf.named_animations.get("DronePutDown"),
game::Piece::Pawn => gltf.named_animations.get("PawnPutDown"),
};
player.play(animation.expect("PutDown Animation").clone());
}
})
} }
}) })
} }

Loading…
Cancel
Save