From 7903090f90b92e2d043a08443a7a3be3ae93c2c3 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Fri, 3 Apr 2026 01:37:07 +0200 Subject: [PATCH] Add camera state handling to ViewportCanvas --- src/viewport-three/ViewportCanvas.tsx | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/viewport-three/ViewportCanvas.tsx b/src/viewport-three/ViewportCanvas.tsx index 4b7e4e2c..109f9878 100644 --- a/src/viewport-three/ViewportCanvas.tsx +++ b/src/viewport-three/ViewportCanvas.tsx @@ -9,7 +9,13 @@ import type { Vec3 } from "../core/vector"; import type { SceneDocument } from "../document/scene-document"; import type { WorldSettings } from "../document/world-settings"; import { createWorldBackgroundStyle } from "../shared-ui/world-background-style"; -import { getViewportPanelLabel, type ViewportDisplayMode, type ViewportLayoutMode, type ViewportPanelId } from "./viewport-layout"; +import { + getViewportPanelLabel, + type ViewportDisplayMode, + type ViewportLayoutMode, + type ViewportPanelCameraState, + type ViewportPanelId +} from "./viewport-layout"; import { getViewportViewModeLabel, type ViewportViewMode @@ -28,6 +34,7 @@ interface ViewportCanvasProps { selection: EditorSelection; toolMode: ToolMode; toolPreview: ViewportToolPreview; + cameraState: ViewportPanelCameraState; viewMode: ViewportViewMode; displayMode: ViewportDisplayMode; layoutMode: ViewportLayoutMode; @@ -36,6 +43,7 @@ interface ViewportCanvasProps { focusSelection: EditorSelection; onSelectionChange(selection: EditorSelection): void; onCommitCreation(toolPreview: CreationViewportToolPreview): boolean; + onCameraStateChange(cameraState: ViewportPanelCameraState): void; onToolPreviewChange(toolPreview: ViewportToolPreview): void; } @@ -49,6 +57,7 @@ export function ViewportCanvas({ selection, toolMode, toolPreview, + cameraState, viewMode, displayMode, layoutMode, @@ -57,6 +66,7 @@ export function ViewportCanvas({ focusSelection, onSelectionChange, onCommitCreation, + onCameraStateChange, onToolPreviewChange }: ViewportCanvasProps) { const containerRef = useRef(null); @@ -118,10 +128,18 @@ export function ViewportCanvas({ hostRef.current?.setDisplayMode(displayMode); }, [displayMode]); + useEffect(() => { + hostRef.current?.setCameraState(cameraState); + }, [cameraState]); + useEffect(() => { hostRef.current?.setBrushSelectionChangeHandler(onSelectionChange); }, [onSelectionChange]); + useEffect(() => { + hostRef.current?.setCameraStateChangeHandler(onCameraStateChange); + }, [onCameraStateChange]); + useEffect(() => { hostRef.current?.setCreationPreviewChangeHandler((nextToolPreview) => { onToolPreviewChange(