From 03e70a1a7e1716412711df1f0870ca37187c6f49 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Sun, 31 Aug 2025 21:05:39 +0200 Subject: [PATCH] fix(router/navmesh): Don't unionize with fillets --- src/router/navmesh.rs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/router/navmesh.rs b/src/router/navmesh.rs index 28b6c8c..017de90 100644 --- a/src/router/navmesh.rs +++ b/src/router/navmesh.rs @@ -30,7 +30,7 @@ use crate::{ Drawing, }, graph::{GenericIndex, GetPetgraphIndex, MakeRef}, - layout::Layout, + layout::{CompoundEntryLabel, Layout}, math::RotationSense, router::thetastar::MakeEdgeRef, }; @@ -324,8 +324,28 @@ impl Navmesh { overlapping_prenavnodes_unions: &mut UnionFind>, prenavnode: PrenavmeshNodeIndex, ) { - for overlap in layout.drawing().overlapees(prenavnode.into()) { - let PrimitiveIndex::FixedDot(overlapee) = overlap.1 else { + // Ignore overlaps of a fillet. + if layout + .drawing() + .compounds(GenericIndex::<()>::new(prenavnode.petgraph_index())) + .find(|(label, _)| *label == CompoundEntryLabel::Fillet) + .is_some() + { + return; + } + + for overlapee in layout.drawing().overlapees(prenavnode.into()) { + // Ignore overlaps with fillets. + if layout + .drawing() + .compounds(GenericIndex::<()>::new(overlapee.1.petgraph_index())) + .find(|(label, _)| *label == CompoundEntryLabel::Fillet) + .is_some() + { + continue; + } + + let PrimitiveIndex::FixedDot(overlapee) = overlapee.1 else { continue; };