From a35b982b4fd91b0d94150b18939d5e38d1ef2fb1 Mon Sep 17 00:00:00 2001 From: wass08 Date: Mon, 19 Jan 2026 10:56:23 +0900 Subject: [PATCH] sidebar + starting controls --- apps/editor/components/editor.tsx | 30 +++++- .../components/ui/primitives/sidebar.tsx | 6 +- .../ui/sidebar/panels/site-panel.tsx | 12 --- .../panels/site-panel/building-tree-node.tsx | 62 +++++++++++ .../ui/sidebar/panels/site-panel/index.tsx | 14 +++ .../panels/site-panel/item-tree-node.tsx | 26 +++++ .../panels/site-panel/level-tree-node.tsx | 39 +++++++ .../sidebar/panels/site-panel/tree-node.tsx | 101 ++++++++++++++++++ .../panels/site-panel/wall-tree-node.tsx | 39 +++++++ .../viewer/src/components/viewer/viewer.tsx | 2 +- 10 files changed, 314 insertions(+), 17 deletions(-) delete mode 100644 apps/editor/components/ui/sidebar/panels/site-panel.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/building-tree-node.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/index.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/item-tree-node.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/level-tree-node.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/tree-node.tsx create mode 100644 apps/editor/components/ui/sidebar/panels/site-panel/wall-tree-node.tsx diff --git a/apps/editor/components/editor.tsx b/apps/editor/components/editor.tsx index 09f769de..0248cbd4 100644 --- a/apps/editor/components/editor.tsx +++ b/apps/editor/components/editor.tsx @@ -5,11 +5,12 @@ import { initSpatialGridSync, ItemNode, sceneRegistry, + useRegistry, useScene, WallNode, } from "@pascal-app/core"; import { useGridEvents, useViewer, Viewer } from "@pascal-app/viewer"; -import { Stats } from "@react-three/drei"; +import { CameraControls, CameraControlsImpl, Stats } from "@react-three/drei"; import { useFrame, useThree } from "@react-three/fiber"; import { useEffect, useMemo, useRef } from "react"; import { Color, Object3D } from "three"; @@ -54,10 +55,37 @@ export default function Editor() { + ); } +const EditorCameraManager = () => { + const controls = useRef(null!); + const currentLevelId = useViewer((state) => state.currentLevelId); + + useEffect(() => { + let targetY = 0; + if (currentLevelId) { + const levelMesh = sceneRegistry.nodes.get(currentLevelId); + if (levelMesh) { + targetY = levelMesh.position.y; + } + } + const { position } = controls.current.camera; + controls.current.setLookAt( + position.x, + targetY + 5, + position.z, + 0, + targetY, + 0, + true, + ); + }, [currentLevelId]); + + return ; +}; const TestUndo = () => { const { undo, redo, futureStates, pastStates } = useScene.temporal.getState(); diff --git a/apps/editor/components/ui/primitives/sidebar.tsx b/apps/editor/components/ui/primitives/sidebar.tsx index 3c2d3cbb..f4b4d8f4 100644 --- a/apps/editor/components/ui/primitives/sidebar.tsx +++ b/apps/editor/components/ui/primitives/sidebar.tsx @@ -132,7 +132,7 @@ function SidebarProvider({