feat(editor): unify placement/move facing triangle into one editor-side renderer
Every placement and move path now publishes its ghost pose to a single
`useFacingPose` store, drawn by one editor-side `<FacingPoseIndicator>` overlay,
instead of each path drawing its own triangle (which left the nodes-package and
PlacementBox paths invisible):
- column/shelf presets + all moves (PlacementBox via move-registry, and
DragBoundingBox) now publish the pose, so the triangle finally shows
- stair create + move use a declarative `facingIndicator: { reversed: true }`
(new registry resolver) so the triangle sits before the entry pointing out —
resolved in one place, so create and move match automatically
- stair placement defaults to single and respects the shared `point`
continuation (C) toggle, like the other placement tools
Checkpoint on the placement-interaction epic: also carries the in-flight
continuation-profile extraction (lib/continuation), grid surface (item #8), and
HUD work. Door/window still render their own legacy inline triangle and are
migrated to the overlay next.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
76089d85ea
commit
68e5c6ca67
@@ -131,11 +131,9 @@ There is no per-kind snapping switch.
|
||||
These resolve the mode from the scope via `getActiveSnapContext()` → `snappingModeByContext[context]`.
|
||||
- **Modifiers.** Shift (tap) cycles the mode for the active context; Ctrl (tap) cycles the grid step;
|
||||
Alt (hold) is force / free (raw cursor + commit past invalid; for MEP runs, the vertical-riser carve-out).
|
||||
Shift is **not** a snap bypass. Alt is **not** a snap toggle. **Exception — wall/fence drafting:** those
|
||||
tools have no force role (a wall/fence always places), so a clean **Alt-tap** cycles the chain mode
|
||||
(`wallChainMode` room/single, `fenceChainMode` continuous/single) — wired in `hooks/use-keyboard.ts` via
|
||||
`isChainModeContext()`, persisted in `useEditor`, surfaced as a clickable HUD chip. This is the one
|
||||
sanctioned Alt-as-toggle, and only where Alt-as-force is meaningless.
|
||||
Shift is **not** a snap bypass. Alt is **not** a snap toggle. Placement continuation (wall room/single,
|
||||
fence continuous/single, point once/repeat) is a separate per-context mode, cycled by **C** and surfaced as
|
||||
a clickable HUD chip.
|
||||
- **The chip is the scope's.** The contextual HUD shows the active context's mode and is the only place the
|
||||
mode is cycled — so a tool that wants its chip must run inside a scope whose `snapContextOf` resolves
|
||||
(a build tool, `drafting`, `placing`/`moving`, or `reshaping`).
|
||||
|
||||
Reference in New Issue
Block a user