diff --git a/Cargo.toml b/Cargo.toml index 833abf0..ddc5c2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,6 +55,7 @@ enum_dispatch = "0.3" geo.workspace = true log.workspace = true petgraph.workspace = true +ron = "0.10" rstar.workspace = true serde.workspace = true spade.workspace = true diff --git a/crates/planar-incr-embed/src/navmesh/mod.rs b/crates/planar-incr-embed/src/navmesh/mod.rs index 0b68664..dc45eb5 100644 --- a/crates/planar-incr-embed/src/navmesh/mod.rs +++ b/crates/planar-incr-embed/src/navmesh/mod.rs @@ -393,6 +393,14 @@ impl<'a, B: NavmeshBase + 'a> NavmeshRefMut<'a, B> { } impl<'a, B: NavmeshBase + 'a> NavmeshRef<'a, B> { + pub fn to_owned(&self) -> Navmesh { + Navmesh { + nodes: Arc::new(self.nodes.clone()), + edges: Arc::new(self.edges.clone()), + edge_paths: self.edge_paths.to_vec().into_boxed_slice(), + } + } + #[inline(always)] pub fn resolve_edge_data( &self, diff --git a/src/autorouter/execution.rs b/src/autorouter/execution.rs index f997a4d..22a601d 100644 --- a/src/autorouter/execution.rs +++ b/src/autorouter/execution.rs @@ -86,6 +86,19 @@ impl ExecutionStepper { .board .try_set_band_between_nodes(source, target, *band); } + + let topo_navmesh = autoroute.maybe_topo_navmesh().unwrap().to_owned(); + let mut pretty_config = ron::ser::PrettyConfig::new(); + pretty_config.depth_limit = 2; + log::debug!( + "topo navmesh result: {}", + ron::ser::to_string_pretty( + &ng::pie::navmesh::NavmeshSer::from(topo_navmesh), + pretty_config + ) + .unwrap() + ); + ControlFlow::Break(( Some(autoroute.last_recorder.clone()), "finished topo-autorouting".to_string(), diff --git a/src/router/ng/mod.rs b/src/router/ng/mod.rs index fd6734d..00091fa 100644 --- a/src/router/ng/mod.rs +++ b/src/router/ng/mod.rs @@ -50,7 +50,9 @@ pub use router::*; #[derive(Clone, Copy, Debug)] pub struct PieNavmeshBase; -#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, serde::Deserialize, serde::Serialize, +)] pub struct EtchedPath { pub end_points: EdgeIndex, } diff --git a/src/router/ng/poly.rs b/src/router/ng/poly.rs index 89bfa07..b636b7c 100644 --- a/src/router/ng/poly.rs +++ b/src/router/ng/poly.rs @@ -202,6 +202,11 @@ impl PolygonRouting { break; } } + log::debug!( + "route_to_exit on {:?} finished, head = {:?}", + self.apex, + active_head, + ); Ok((active_head, route_length)) } }