feat: Object Snap Tracking (OTRACK / F11)
- snap/mod.rs: Snapper gains otrack_enabled, tracking_points, dwell state;
update_otrack_dwell() acquires a snap point after DWELL_THRESHOLD=4
consecutive moves near the same position; otrack_snap() returns an
H/V alignment snap position; clear_tracking() resets state on command end
- overlay.rs: selection_overlay accepts ost_points + cursor_screen;
draws light-blue dashed H/V lines from acquired points + small cross marker
- statusbar.rs: OTRACK pill (F11) added next to DYN
- view.rs: projects tracking_points to screen, passes to selection_overlay
- update.rs: calls update_otrack_dwell + otrack_snap in ViewportMove;
overrides effective point with OST alignment when no normal snap is active
- ROADMAP.md: Object Snap Tracking marked ✅
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d2a58bdd08
commit
f73d38f0a2
7 changed files with 211 additions and 3 deletions
|
|
@ -29,6 +29,7 @@ impl StatusBar {
|
|||
polar_increment_deg: f32,
|
||||
show_grid: bool,
|
||||
dyn_input: bool,
|
||||
otrack: bool,
|
||||
layouts: Vec<String>,
|
||||
current_layout: String,
|
||||
// If `Some((original, edit_value))`, the named tab shows a text input.
|
||||
|
|
@ -87,6 +88,10 @@ impl StatusBar {
|
|||
toggle_pill("DYN", dyn_input, Message::ToggleDynInput),
|
||||
"Dynamic Input\nF12"
|
||||
),
|
||||
tip(
|
||||
toggle_pill("OTRACK", otrack, Message::ToggleOTrack),
|
||||
"Object Snap Tracking\nF11"
|
||||
),
|
||||
osnap_btn(osnap_active, snapper.snap_enabled, popup_open),
|
||||
status_pill(space_label),
|
||||
status_pill(scale_label),
|
||||
|
|
|
|||
Loading…
Reference in a new issue