Skip to main content

traaains/ui/track/
mod.rs

1use bevy::{
2    ecs::{
3        event::EntityEvent,
4        observer::On,
5        query::With,
6        system::{Query, Res},
7    },
8    picking::events::{PointerEnter, PointerLeave},
9    sprite_render::{ColorMaterial, MeshMaterial2d},
10};
11
12use crate::{AssetType, AssetsManager, sim::track::segment::TrackSegment, ui::target::Target};
13
14pub mod node;
15pub mod segment;
16
17fn highlight_segment(
18    e: On<PointerEnter>,
19    q_targets: Query<&Target>,
20    mut q_segments: Query<&mut MeshMaterial2d<ColorMaterial>, With<TrackSegment>>,
21    assets_manager: Res<AssetsManager>,
22) {
23    let mut segment = q_segments
24        .get_mut(q_targets.get(e.event_target()).unwrap().0)
25        .unwrap();
26
27    segment.0 = assets_manager
28        .materials
29        .get(&AssetType::TrackSegmentHighlight)
30        .cloned()
31        .unwrap();
32}
33
34fn remove_highlight_segment(
35    e: On<PointerLeave>,
36    q_targets: Query<&Target>,
37    mut q_segments: Query<&mut MeshMaterial2d<ColorMaterial>, With<TrackSegment>>,
38    assets_manager: Res<AssetsManager>,
39) {
40    let mut segment = q_segments
41        .get_mut(q_targets.get(e.event_target()).unwrap().0)
42        .unwrap();
43
44    segment.0 = assets_manager
45        .materials
46        .get(&AssetType::TrackSegmentNormal)
47        .cloned()
48        .unwrap();
49}