refactor(editor): delete curving + endpoint reshaping flags
Migrate `curvingWall`, `curvingFence`, `movingWallEndpoint`, `movingFenceEndpoint` (and their setters) off `useEditor` onto the authoritative interaction scope. The `reshaping` scope variant gains an `endpoint` discriminator; existence checks read `useIsCurveReshape()` / `useEndpointReshape()`, and the few sites that need the node (affordance-tool mounts, wall-vs-fence type checks) read it from `useReshapingNode()` — a frozen drag-start snapshot, mirroring the old flags so the tools' own per-frame writes don't feed back. `MovingWallEndpoint` / `MovingFenceEndpoint` move to the kind-owned tools that consume them. `editor-api` is simpler: endpoint engagement is kind-agnostic, and the `engageMove` reshape clears are gone (the scope is single-owner). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2f2c3ef8f9
commit
cfc1fb1672
@@ -19,7 +19,7 @@ import {
|
||||
snapBuildingLocalToWorldGrid,
|
||||
snapScalarToGrid,
|
||||
triggerSFX,
|
||||
useEditor,
|
||||
useInteractionScope,
|
||||
} from '@pascal-app/editor'
|
||||
import { useViewer } from '@pascal-app/viewer'
|
||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
@@ -47,7 +47,9 @@ export const CurveWallTool: React.FC<{ node: WallNode }> = ({ node }) => {
|
||||
])
|
||||
|
||||
const exitCurveMode = useCallback(() => {
|
||||
useEditor.getState().setCurvingWall(null)
|
||||
useInteractionScope
|
||||
.getState()
|
||||
.endIf((scope) => scope.kind === 'reshaping' && scope.reshape === 'curve')
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user