diff --git a/src/main.rs b/src/main.rs index f8c4366..61544de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,7 @@ mod rules; mod segbend; mod shape; -use graph::{Tag, TaggedIndex}; +use graph::{SegWeight, Tag, TaggedIndex}; use layout::Layout; use mesh::{MeshEdgeReference, VertexIndex}; use route::Route; @@ -224,7 +224,7 @@ fn main() { }) .unwrap(); - let _barrier2_dot1 = router + let barrier2_dot1 = router .layout .add_dot(DotWeight { net: 20, @@ -234,7 +234,7 @@ fn main() { }, }) .unwrap(); - let _barrier2_dot2 = router + let barrier2_dot2 = router .layout .add_dot(DotWeight { net: 20, @@ -244,20 +244,20 @@ fn main() { }, }) .unwrap(); - /*let _ = router.layout.add_seg( + let _ = router.layout.add_seg( barrier2_dot1, barrier2_dot2, SegWeight { net: 20, width: 16.0, }, - );*/ + ); /*let head = router.draw_start(dot5); let head = router.draw_around_dot(head, dot6, false, 5.0).unwrap(); let _ = router.draw_finish(head, dot7, 5.0);*/ - router.enroute( + let _ = router.enroute( dot1_1, dot1_2, DebugRouteStrategy::new(DefaultRouteStrategy::new(), &mut event_pump, &mut canvas), diff --git a/src/router.rs b/src/router.rs index 329ddae..a03569f 100644 --- a/src/router.rs +++ b/src/router.rs @@ -71,7 +71,7 @@ impl<'a, RS: RouteStrategy> AstarStrategy<&Mesh, u64> for RouterAstarStrategy<'a fn reroute(&mut self, vertex: VertexIndex, tracker: &PathTracker<&Mesh>) -> Option { let new_path = tracker.reconstruct_path_to(vertex); - if vertex == self.to { + /*if vertex == self.to { self.route .rework_path(&mut self.trace, &new_path[..new_path.len() - 1], 5.0) .ok(); @@ -79,10 +79,16 @@ impl<'a, RS: RouteStrategy> AstarStrategy<&Mesh, u64> for RouterAstarStrategy<'a .finish(&mut self.trace, new_path[new_path.len() - 1], 5.0) .ok(); None - } else { - self.route.rework_path(&mut self.trace, &new_path, 5.0).ok(); - Some(self.strategy.route_cost(&self.route, &new_path)) + } else {*/ + //} + + self.route.rework_path(&mut self.trace, &new_path, 5.0).ok(); + + if self.route.finish(&mut self.trace, self.to, 5.0).is_ok() { + return None; } + + Some(self.strategy.route_cost(&self.route, &new_path)) } fn edge_cost(&mut self, edge: MeshEdgeReference) -> u64 { diff --git a/src/shape.rs b/src/shape.rs index e0c8449..8a97d9e 100644 --- a/src/shape.rs +++ b/src/shape.rs @@ -2,7 +2,6 @@ use enum_as_inner::EnumAsInner; use geo::{point, polygon, EuclideanDistance, Intersects, Point, Polygon, Rotate}; use rstar::{RTreeObject, AABB}; - use crate::math::{self, Circle}; #[derive(Debug, Clone, Copy, PartialEq)] @@ -101,8 +100,8 @@ impl Shape { fn priority(&self) -> i64 { match self { Shape::Dot(..) => 3, - Shape::Bend(..) => 2, - Shape::Seg(..) => 1, + Shape::Seg(..) => 2, + Shape::Bend(..) => 1, } }