From 169ddf7d80f4c3bd4cc659d848b8642cbaf2c532 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Thu, 20 Jun 2024 19:33:18 +0200 Subject: [PATCH] egui: add button to toggle showing navmesh --- src/bin/topola-egui/top.rs | 3 ++ src/bin/topola-egui/viewport.rs | 66 +++++++++++++++++---------------- src/router/navmesh.rs | 5 --- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/bin/topola-egui/top.rs b/src/bin/topola-egui/top.rs index a341d57..ae45a3f 100644 --- a/src/bin/topola-egui/top.rs +++ b/src/bin/topola-egui/top.rs @@ -16,6 +16,7 @@ use crate::{ pub struct Top { pub is_placing_via: bool, pub show_ratsnest: bool, + pub show_navmesh: bool, } impl Top { @@ -23,6 +24,7 @@ impl Top { Self { is_placing_via: false, show_ratsnest: false, + show_navmesh: false, } } @@ -171,6 +173,7 @@ impl Top { ui.separator(); ui.toggle_value(&mut self.show_ratsnest, "Show Ratsnest"); + ui.toggle_value(&mut self.show_navmesh, "Show Navmesh"); ui.separator(); diff --git a/src/bin/topola-egui/viewport.rs b/src/bin/topola-egui/viewport.rs index 01c43e3..a1cdc23 100644 --- a/src/bin/topola-egui/viewport.rs +++ b/src/bin/topola-egui/viewport.rs @@ -167,42 +167,44 @@ impl Viewport { } } - if let Some(navmesh) = &shared_data.navmesh { - for edge in navmesh.graph().edge_references() { - let from = PrimitiveIndex::from(navmesh.graph().node_weight(edge.source()).unwrap().node) - .primitive(board.layout().drawing()) - .shape() - .center(); - let to = PrimitiveIndex::from(navmesh.graph().node_weight(edge.target()).unwrap().node) - .primitive(board.layout().drawing()) - .shape() - .center(); + if top.show_navmesh { + if let Some(navmesh) = &shared_data.navmesh { + for edge in navmesh.graph().edge_references() { + let from = PrimitiveIndex::from(navmesh.graph().node_weight(edge.source()).unwrap().node) + .primitive(board.layout().drawing()) + .shape() + .center(); + let to = PrimitiveIndex::from(navmesh.graph().node_weight(edge.target()).unwrap().node) + .primitive(board.layout().drawing()) + .shape() + .center(); - let stroke = 'blk: { - if let (Some(source_pos), Some(target_pos)) = ( - shared_data - .path - .iter() - .position(|node| *node == navmesh.graph().node_weight(edge.source()).unwrap().node), - shared_data - .path - .iter() - .position(|node| *node == navmesh.graph().node_weight(edge.target()).unwrap().node), - ) { - 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), - ); + let stroke = 'blk: { + if let (Some(source_pos), Some(target_pos)) = ( + shared_data + .path + .iter() + .position(|node| *node == navmesh.graph().node_weight(edge.source()).unwrap().node), + shared_data + .path + .iter() + .position(|node| *node == navmesh.graph().node_weight(edge.target()).unwrap().node), + ) { + 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)) - }; + egui::Stroke::new(1.0, egui::Color32::from_rgb(125, 125, 125)) + }; - painter.paint_edge(from, to, stroke); + painter.paint_edge(from, to, stroke); + } } } diff --git a/src/router/navmesh.rs b/src/router/navmesh.rs index 5d494bb..48e8d02 100644 --- a/src/router/navmesh.rs +++ b/src/router/navmesh.rs @@ -156,11 +156,6 @@ impl Navmesh { } map.insert(trianvertex, navvertex); - - /*// TODO: iterate over triangulation's edges instead of vertices. - for edge in triangulation.edges(trianvertex) { - graph.add_edge(edge.source(), edge.target(), &edge.weight()); - }*/ } for edge in triangulation.edge_references() {