pub fn reconstruct_corners_direct(
waypoints: &[GridPoint],
geometry: &mut RouteGeometry,
ends: Endpoints,
)Expand description
Rebuild a wire’s edges from its corner list (start + corners + end) as axis-aligned segments WITHOUT the router: a straight leg is one edge; a diagonal leg (its two endpoints share no row or column) becomes an L via a single bend. It never consults obstacles and never promotes bends to waypoints, so dragging a segment or corner repositions the wire directly and never triggers an autoroute — the segment goes exactly where the user puts it. The corner list is a read, so per-frame recomputation stays accumulation-free and the route editor’s drag keeps owning it.
A connector leg — the first leg (from the start anchor to its corner) and the last (from the last corner to the end anchor) — is bent so the segment touching the pin runs along the pin’s horizontal E/W stub: the first leg goes horizontal-first (leaving the pin), the last goes vertical-first (so its final segment enters the pin horizontally). This keeps the ends one cell clear of the block instead of hugging its gutter. Interior legs keep an incoming-axis bend so they can’t double back.