diff --git a/src/app/App.tsx b/src/app/App.tsx index 4f6178f6..c3958767 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1318,8 +1318,6 @@ export function App({ store, initialStatusMessage }: AppProps) { String(DEFAULT_GRID_SIZE) ); const [viewportGridVisible, setViewportGridVisible] = useState(true); - const [viewportCameraSyncRequestId, setViewportCameraSyncRequestId] = - useState(0); const [uvOffsetDraft, setUvOffsetDraft] = useState( createVec2Draft(createDefaultFaceUvState().offset) ); @@ -2691,10 +2689,6 @@ export function App({ store, initialStatusMessage }: AppProps) { } }; - const requestViewportCameraSync = () => { - setViewportCameraSyncRequestId((current) => current + 1); - }; - const openAddMenuAt = (position: HierarchicalMenuPosition) => { setHoveredAssetId(null); setAddMenuPosition(position); @@ -2834,7 +2828,6 @@ export function App({ store, initialStatusMessage }: AppProps) { } store.clearTransformSession(); - requestViewportCameraSync(); setStatusMessage(status); }; @@ -2843,7 +2836,6 @@ export function App({ store, initialStatusMessage }: AppProps) { ) => { if (!doesTransformSessionChangeTarget(activeTransformSession)) { store.clearTransformSession(); - requestViewportCameraSync(); setStatusMessage("No transform change was committed."); return; } @@ -2856,13 +2848,11 @@ export function App({ store, initialStatusMessage }: AppProps) { activeTransformSession ) ); - requestViewportCameraSync(); setStatusMessage( `${getTransformOperationPastTense(activeTransformSession.operation)} ${getTransformTargetLabel(activeTransformSession.target).toLowerCase()}.` ); } catch (error) { store.clearTransformSession(); - requestViewportCameraSync(); setStatusMessage(getErrorMessage(error)); } }; @@ -4392,7 +4382,6 @@ export function App({ store, initialStatusMessage }: AppProps) { try { store.executeCommand(createDeleteBoxBrushCommand(brushId)); - requestViewportCameraSync(); setStatusMessage(`Deleted ${label}.`); return true; } catch (error) { @@ -4414,7 +4403,6 @@ export function App({ store, initialStatusMessage }: AppProps) { try { store.executeCommand(createDeleteEntityCommand(entityId)); - requestViewportCameraSync(); setStatusMessage(`Deleted ${label}.`); return true; } catch (error) { @@ -4436,7 +4424,6 @@ export function App({ store, initialStatusMessage }: AppProps) { try { store.executeCommand(createDeleteModelInstanceCommand(modelInstanceId)); - requestViewportCameraSync(); setStatusMessage(`Deleted ${label}.`); return true; } catch (error) { @@ -7513,7 +7500,6 @@ export function App({ store, initialStatusMessage }: AppProps) { toolPreview={viewportToolPreview} transformSession={transformSession} cameraState={editorState.viewportPanels[panelId].cameraState} - cameraSyncRequestId={viewportCameraSyncRequestId} focusRequestId={ focusRequest.panelId === panelId ? focusRequest.id : 0 } diff --git a/src/viewport-three/ViewportCanvas.tsx b/src/viewport-three/ViewportCanvas.tsx index 5a495e74..29909fef 100644 --- a/src/viewport-three/ViewportCanvas.tsx +++ b/src/viewport-three/ViewportCanvas.tsx @@ -54,7 +54,6 @@ interface ViewportCanvasProps { toolPreview: ViewportToolPreview; transformSession: TransformSessionState; cameraState: ViewportPanelCameraState; - cameraSyncRequestId: number; viewMode: ViewportViewMode; displayMode: ViewportDisplayMode; layoutMode: ViewportLayoutMode; @@ -86,7 +85,6 @@ export function ViewportCanvas({ toolPreview, transformSession, cameraState, - cameraSyncRequestId, viewMode, displayMode, layoutMode, @@ -187,7 +185,7 @@ export function ViewportCanvas({ useLayoutEffect(() => { hostRef.current?.setCameraState(cameraState); - }, [cameraState, cameraSyncRequestId]); + }, [cameraState]); useEffect(() => { hostRef.current?.setBrushSelectionChangeHandler(onSelectionChange); diff --git a/src/viewport-three/ViewportPanel.tsx b/src/viewport-three/ViewportPanel.tsx index 7d3f5fef..0c8168b1 100644 --- a/src/viewport-three/ViewportPanel.tsx +++ b/src/viewport-three/ViewportPanel.tsx @@ -53,7 +53,6 @@ interface ViewportPanelProps { toolPreview: ViewportToolPreview; transformSession: TransformSessionState; cameraState: ViewportPanelCameraState; - cameraSyncRequestId: number; focusRequestId: number; focusSelection: EditorSelection; onActivatePanel(panelId: ViewportPanelId): void; @@ -95,7 +94,6 @@ export function ViewportPanel({ toolPreview, transformSession, cameraState, - cameraSyncRequestId, focusRequestId, focusSelection, onActivatePanel, @@ -201,7 +199,6 @@ export function ViewportPanel({ toolPreview={toolPreview} transformSession={transformSession} cameraState={cameraState} - cameraSyncRequestId={cameraSyncRequestId} viewMode={panelState.viewMode} displayMode={panelState.displayMode} layoutMode={layoutMode} diff --git a/tests/unit/transform-foundation.integration.test.tsx b/tests/unit/transform-foundation.integration.test.tsx index b48d9993..5610e9b3 100644 --- a/tests/unit/transform-foundation.integration.test.tsx +++ b/tests/unit/transform-foundation.integration.test.tsx @@ -727,7 +727,7 @@ describe("transform foundation integration", () => { ).toBeInTheDocument(); }); - it("keeps the persisted viewport camera state stable across transform commit, cancel, and delete", async () => { + it("does not reapply the persisted viewport camera state across transform commit, cancel, and delete", async () => { const { store, brush, viewportHost } = await renderTransformFixtureApp(); const persistedCameraState: ViewportPanelCameraState = { target: { @@ -780,12 +780,10 @@ describe("transform foundation integration", () => { } }); - await waitFor(() => { - expect(viewportHost.setCameraState.mock.calls.length).toBeGreaterThan( - commitCameraCallCount - ); - }); - expect(viewportHost.setCameraState.mock.calls.at(-1)?.[0]).toEqual( + expect(viewportHost.setCameraState.mock.calls.length).toBe( + commitCameraCallCount + ); + expect(store.getState().viewportPanels.topLeft.cameraState).toEqual( persistedCameraState ); @@ -801,12 +799,10 @@ describe("transform foundation integration", () => { code: "Escape" }); - await waitFor(() => { - expect(viewportHost.setCameraState.mock.calls.length).toBeGreaterThan( - cancelCameraCallCount - ); - }); - expect(viewportHost.setCameraState.mock.calls.at(-1)?.[0]).toEqual( + expect(viewportHost.setCameraState.mock.calls.length).toBe( + cancelCameraCallCount + ); + expect(store.getState().viewportPanels.topLeft.cameraState).toEqual( persistedCameraState ); @@ -818,12 +814,10 @@ describe("transform foundation integration", () => { code: "Delete" }); - await waitFor(() => { - expect(viewportHost.setCameraState.mock.calls.length).toBeGreaterThan( - deleteCameraCallCount - ); - }); - expect(viewportHost.setCameraState.mock.calls.at(-1)?.[0]).toEqual( + expect(viewportHost.setCameraState.mock.calls.length).toBe( + deleteCameraCallCount + ); + expect(store.getState().viewportPanels.topLeft.cameraState).toEqual( persistedCameraState ); }); diff --git a/tests/unit/viewport-canvas.test.tsx b/tests/unit/viewport-canvas.test.tsx index d87434a0..360c4bb2 100644 --- a/tests/unit/viewport-canvas.test.tsx +++ b/tests/unit/viewport-canvas.test.tsx @@ -144,7 +144,6 @@ describe("ViewportCanvas", () => { toolPreview={toolPreview} transformSession={createInactiveTransformSession()} cameraState={cameraState} - cameraSyncRequestId={0} viewMode="perspective" displayMode="authoring" layoutMode="single" @@ -201,7 +200,6 @@ describe("ViewportCanvas", () => { toolPreview={{ kind: "none" }} transformSession={createInactiveTransformSession()} cameraState={cameraState} - cameraSyncRequestId={0} viewMode="perspective" displayMode="normal" layoutMode="single"