From a6fb1157e3386cee3ce19bcb37e20fa7d3ea3bc2 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Sun, 12 May 2024 01:57:40 +0200 Subject: [PATCH] egui,tests: fix compilation errors --- src/autorouter/autorouter.rs | 10 +++++++--- src/bin/topola-egui/app.rs | 13 +++++++------ src/router/router.rs | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/autorouter/autorouter.rs b/src/autorouter/autorouter.rs index 248cce3..d0a49ae 100644 --- a/src/autorouter/autorouter.rs +++ b/src/autorouter/autorouter.rs @@ -57,7 +57,7 @@ impl Autoroute { let (from, to) = Self::edge_from_to(autorouter, cur_edge); let layout = autorouter.layout.lock().unwrap(); - Some(Navmesh::new(&layout, from, to).ok()?) + Some(Navmesh::new(&layout, from, to).ok().unwrap()) } else { None }; @@ -109,14 +109,14 @@ impl Autoroute { } pub struct Autorouter { - ratsnest: Ratsnest, layout: Arc>>, + ratsnest: Ratsnest, } impl Autorouter { pub fn new(layout: Arc>>) -> Result { let ratsnest = Ratsnest::new(&layout.lock().unwrap())?; - Ok(Self { ratsnest, layout }) + Ok(Self { layout, ratsnest }) } pub fn autoroute(&mut self, layer: u64, observer: &mut impl RouterObserverTrait) { @@ -134,4 +134,8 @@ impl Autorouter { pub fn layout(&self) -> &Arc>> { &self.layout } + + pub fn ratsnest(&self) -> &Ratsnest { + &self.ratsnest + } } diff --git a/src/bin/topola-egui/app.rs b/src/bin/topola-egui/app.rs index 2eba2d8..ea480c7 100644 --- a/src/bin/topola-egui/app.rs +++ b/src/bin/topola-egui/app.rs @@ -203,23 +203,24 @@ impl eframe::App for App { execute(async move { let mut autorouter = Autorouter::new(layout).unwrap(); if let Some(mut autoroute) = autorouter.autoroute_walk() { - let from_to = autoroute.from_to(&autorouter); + let from = autoroute.navmesh().as_ref().unwrap().from(); + let to = autoroute.navmesh().as_ref().unwrap().to(); { let mut shared_data = shared_data_arc_mutex.lock().unwrap(); - shared_data.from = dbg!(Some(from_to.0)); - shared_data.to = dbg!(Some(from_to.1)); - shared_data.navmesh = Some(autoroute.navmesh().clone()); + shared_data.from = Some(from); + shared_data.to = Some(to); + shared_data.navmesh = autoroute.navmesh().clone(); } - while let Some(()) = autoroute.next( + while autoroute.next( &mut autorouter, &mut DebugRouterObserver { shared_data: shared_data_arc_mutex.clone(), }, ) { shared_data_arc_mutex.lock().unwrap().navmesh = - Some(autoroute.navmesh().clone()); + autoroute.navmesh().clone(); } } }); diff --git a/src/router/router.rs b/src/router/router.rs index a4e391c..04429bd 100644 --- a/src/router/router.rs +++ b/src/router/router.rs @@ -58,6 +58,22 @@ pub trait RouterObserverTrait { fn on_estimate(&mut self, tracer: &Tracer, vertex: VertexIndex); } +pub struct EmptyRouterObserver; + +impl RouterObserverTrait for EmptyRouterObserver { + fn on_rework(&mut self, _tracer: &Tracer, _trace: &Trace) {} + fn before_probe(&mut self, _tracer: &Tracer, _trace: &Trace, _edge: NavmeshEdgeReference) {} + fn on_probe( + &mut self, + _tracer: &Tracer, + _trace: &Trace, + _edge: NavmeshEdgeReference, + _result: Result<(), DrawException>, + ) { + } + fn on_estimate(&mut self, _tracer: &Tracer, _vertex: VertexIndex) {} +} + pub struct Router<'a, R: RulesTrait> { layout: &'a mut Arc>>, navmesh: Navmesh,