forked from 1b-agent/opencadstudio-upstream
Show active tracking reference tooltip
This commit is contained in:
1 parent
f1bc5f2cae
commit
a06e8a7a69
7 files changed
+144
-1
No files matched your search
+18
-1
@@ -15,6 +15,12 @@ const DEFAULT_OSNAP_RADIUS_PX: f32 = 15.0;
|
||||
|
||||
// ── Snap type ─────────────────────────────────────────────────────────────
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum TrackingKind {
|
||||
Generic,
|
||||
Extension,
|
||||
Perpendicular,
|
||||
}
|
||||
/// Every OSNAP mode — mirrors the OpenCADStudio list.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum SnapType {
|
||||
@@ -92,6 +98,8 @@ pub struct OtrackHit {
|
||||
pub dir: DVec3,
|
||||
/// The tracking point the ray emanates from.
|
||||
pub base: DVec3,
|
||||
|
||||
pub kind: TrackingKind,
|
||||
}
|
||||
|
||||
// ── Snapper ───────────────────────────────────────────────────────────────
|
||||
@@ -511,6 +519,7 @@ impl Snapper {
|
||||
origin: DVec3,
|
||||
dir: DVec3,
|
||||
group: usize,
|
||||
kind: TrackingKind,
|
||||
}
|
||||
let mut rays: Vec<Ray> = Vec::new();
|
||||
for (gi, &tp) in self.tracking_points.iter().enumerate() {
|
||||
@@ -520,6 +529,7 @@ impl Snapper {
|
||||
origin: tp,
|
||||
dir: ucs_x * ar.cos() + ucs_y * ar.sin(),
|
||||
group: gi,
|
||||
kind: TrackingKind::Generic,
|
||||
});
|
||||
}
|
||||
// Extension rays along the corner's own edges (world-space geometry
|
||||
@@ -532,6 +542,7 @@ impl Snapper {
|
||||
origin: tp,
|
||||
dir: d,
|
||||
group: gi,
|
||||
kind: TrackingKind::Extension,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -547,6 +558,7 @@ impl Snapper {
|
||||
origin: tp,
|
||||
dir: d,
|
||||
group: gi,
|
||||
kind: TrackingKind::Perpendicular,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -566,6 +578,7 @@ impl Snapper {
|
||||
origin: bp,
|
||||
dir: DVec3::new(d.x * inv, d.y * inv, 0.0),
|
||||
group: gi,
|
||||
kind: TrackingKind::Generic,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -583,6 +596,7 @@ impl Snapper {
|
||||
origin: lp,
|
||||
dir: ucs_x * ar.cos() + ucs_y * ar.sin(),
|
||||
group: POLAR_GROUP,
|
||||
kind: TrackingKind::Generic,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -596,6 +610,7 @@ impl Snapper {
|
||||
origin: lp,
|
||||
dir: ucs_x * ar.cos() + ucs_y * ar.sin(),
|
||||
group: ORTHO_GROUP,
|
||||
kind: TrackingKind::Generic,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -634,7 +649,8 @@ impl Snapper {
|
||||
aligned: x,
|
||||
dir: dir_out,
|
||||
base: ot.origin,
|
||||
},
|
||||
kind: ot.kind,
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -670,6 +686,7 @@ impl Snapper {
|
||||
aligned,
|
||||
dir: dir_out,
|
||||
base: ray.origin,
|
||||
kind: ray.kind,
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user