use crate::{interaction::*, layers::ZLayer, site::*};
#[derive(Component, Clone, Copy)]
pub struct Popup {
regular: f32,
hovered: f32,
selected: f32,
}
pub fn add_popups(
mut commands: Commands,
new_poppers: Query<Entity, Or<(Added<LocationTags>, Added<FiducialMarker>)>>,
) {
for e in &new_poppers {
commands.entity(e).insert(Popup {
regular: 0.,
hovered: ZLayer::HoveredLane.to_z(),
selected: ZLayer::SelectedLane.to_z(),
});
}
}
pub fn update_popups(
mut objects: Query<
(&Hovered, &Selected, &Popup, &mut Transform),
Or<(Changed<Hovered>, Changed<Selected>, Changed<Popup>)>,
>,
) {
for (hovered, selected, popup, mut tf) in &mut objects {
if hovered.is_hovered {
tf.translation.z = popup.hovered;
} else if selected.cue() {
tf.translation.z = popup.selected;
} else {
tf.translation.z = popup.regular;
}
}
}