Skip to content

feat(v0.4a): grid snap on gizmo drag (hold Cmd/Ctrl)#33

Merged
longyi-xw merged 7 commits into
mainfrom
feat/v0.4a-grid-snap
Jun 6, 2026
Merged

feat(v0.4a): grid snap on gizmo drag (hold Cmd/Ctrl)#33
longyi-xw merged 7 commits into
mainfrom
feat/v0.4a-grid-snap

Conversation

@longyi-xw

Copy link
Copy Markdown
Owner

What

v0.4「空间吸附 / Socket 系统」第一个 sub-stage(基础):gizmo 平移拖拽时按住 Ctrl/Cmd 吸附到 0.5 网格。

  • snapTranslation 纯函数吸附引擎(src/core/snap/grid.ts,可单测,供 sub-stage B/C 扩展)。
  • ThreeViewport gizmo objectChange hook:translate 模式 + 修饰键按住时吸附 obj.positionmouseUp 不变(可撤销)。window keydown/keyup/blur 追踪修饰键。
  • 纯按住修饰键(无持久状态)+ 帮助条目。仅平移;节点对齐/socket/旋转缩放吸附延后 B/C。

Why

  • Spec: `docs/superpowers/specs/2026-06-06-v0.4a-grid-snap-design.md`
  • Plan: `docs/superpowers/plans/2026-06-06-v0.4a-grid-snap-plan.md`

How to test

  • lint / typecheck / test 本地绿(snapTranslation 5 单测;test 429)
  • CI 绿
  • 人工 pnpm tauri dev(plan T4 步骤 2:按住 Ctrl/Cmd 平移拖拽吸附 0.5 网格 / 松开自由 / undo / rotate-scale 不吸附 / 帮助说明 / 中英文)

🤖 Generated with Claude Code

longyi-xw and others added 7 commits June 6, 2026 16:47
按住 Ctrl/Cmd 拖拽时把位置吸附到网格步长(0.5);snapTranslation 纯函数引擎(供
B/C 扩展)+ ThreeViewport objectChange hook + 修饰键追踪;mouseUp 提交不变(可撤销)。
仅平移;节点对齐/socket/旋转缩放吸附延后。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
objectChange 时(translate 模式 + 修饰键按住)用 snapTranslation 吸附 obj.position;
mouseUp 提交吸附后 transform(可撤销,不改);window keydown/keyup/blur 追踪修饰键 +
cleanup 移除。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
修复:没按 Ctrl/Cmd 也吸附——keydown/keyup 累积的修饰键状态会因 keyup 丢失
(Cmd+Z/Cmd+Tab)卡在 true。改为拖拽时从 pointermove/pointerdown(capture 阶段)
读即时 e.ctrlKey||e.metaKey,不卡住;不按修饰键即自由拖动。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@longyi-xw longyi-xw merged commit dcb9ccb into main Jun 6, 2026
1 check passed
@longyi-xw longyi-xw deleted the feat/v0.4a-grid-snap branch June 6, 2026 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant