From 4efc2d482ba7fa46b61a62e97db1ed1d3091964d Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Mon, 6 May 2024 11:58:40 +0200 Subject: [PATCH] egui: paint currently probed edges in bold yellow --- src/bin/topola-egui/app.rs | 37 ++++++++++++++++++++++++++++------ src/bin/topola-egui/painter.rs | 4 ++-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/bin/topola-egui/app.rs b/src/bin/topola-egui/app.rs index 3384029..78c44ec 100644 --- a/src/bin/topola-egui/app.rs +++ b/src/bin/topola-egui/app.rs @@ -328,7 +328,11 @@ impl eframe::App for App { .unwrap() .pos; - painter.paint_edge(from, to, egui::Color32::from_rgb(90, 90, 200)); + painter.paint_edge( + from, + to, + egui::Stroke::new(1.0, egui::Color32::from_rgb(90, 90, 200)), + ); } if let Some(navmesh) = &shared_data.navmesh { @@ -336,11 +340,32 @@ impl eframe::App for App { let from = edge.source().primitive(layout.drawing()).shape().center(); let to = edge.target().primitive(layout.drawing()).shape().center(); - painter.paint_edge( - from, - to, - egui::Color32::from_rgb(125, 125, 125), - ); + + let stroke = 'blk: { + if let (Some(source_pos), Some(target_pos)) = ( + shared_data + .path + .iter() + .position(|node| *node == edge.source()), + shared_data + .path + .iter() + .position(|node| *node == edge.target()), + ) { + if target_pos == source_pos + 1 + || source_pos == target_pos + 1 + { + break 'blk egui::Stroke::new( + 5.0, + egui::Color32::from_rgb(250, 250, 0), + ); + } + } + + egui::Stroke::new(1.0, egui::Color32::from_rgb(125, 125, 125)) + }; + + painter.paint_edge(from, to, stroke); } } diff --git a/src/bin/topola-egui/painter.rs b/src/bin/topola-egui/painter.rs index 70306be..92fa44c 100644 --- a/src/bin/topola-egui/painter.rs +++ b/src/bin/topola-egui/painter.rs @@ -79,7 +79,7 @@ impl<'a> Painter<'a> { )); } - pub fn paint_edge(&mut self, from: Point, to: Point, color: egui::epaint::Color32) { + pub fn paint_edge(&mut self, from: Point, to: Point, stroke: egui::Stroke) { self.ui.painter().add(egui::Shape::line_segment( [ self.transform @@ -87,7 +87,7 @@ impl<'a> Painter<'a> { self.transform .transform_pos([to.x() as f32, -to.y() as f32].into()), ], - egui::Stroke::new(1.0, color), + stroke, )); } }