feat(edit): STRETCH crossing window selects objects implicitly (#338)

Bare STRETCH used to need a separate object-selection round before the
crossing window. Now the window itself picks the objects: with no prior
selection the command emits StretchWindow, the host gathers entities
whose world AABB touches the window (locked layers excluded) and
restarts at the base-point step. Over-selection is harmless since only
points inside the window move. The noun-verb flow (select first, then
STRETCH) is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Fable 5 committed 2026-07-21 22:35:35 +03:00
1 parent 5383c64d5d
commit dc10c5dfba
4 files changed
+94 -15

No files matched your search

+4
View File
@@ -908,6 +908,10 @@ pub enum CmdResult {
scale: f32,
angle: f32,
},
/// Implicit STRETCH selection: the crossing window was drawn with no prior
/// selection, so the host resolves which entities it touches and restarts
/// the command at the base-point step with them. (#338)
StretchWindow { win_min: DVec3, win_max: DVec3 },
/// Stretch entities: move only vertices/endpoints inside the crossing window.
StretchEntities {
handles: Vec<Handle>,