controls for camera / guides / scans / levels

This commit is contained in:
wass08
2026-01-29 10:39:19 +09:00
parent f4125db6a8
commit 915eedcbce
3 changed files with 41 additions and 0 deletions
@@ -4,7 +4,9 @@ import { CeilingSystem, ItemSystem, SlabSystem, WallSystem } from '@pascal-app/c
import { Bvh, Environment } from '@react-three/drei' import { Bvh, Environment } from '@react-three/drei'
import { Canvas, extend, type ThreeToJSXElements } from '@react-three/fiber' import { Canvas, extend, type ThreeToJSXElements } from '@react-three/fiber'
import * as THREE from 'three/webgpu' import * as THREE from 'three/webgpu'
import { GuideSystem } from '../../systems/guide/guide-system'
import { LevelSystem } from '../../systems/level/level-system' import { LevelSystem } from '../../systems/level/level-system'
import { ScanSystem } from '../../systems/scan/scan-system'
import { SceneRenderer } from '../renderers/scene-renderer' import { SceneRenderer } from '../renderers/scene-renderer'
import PostProcessing from './post-processing' import PostProcessing from './post-processing'
import { ViewerCamera } from './viewer-camera' import { ViewerCamera } from './viewer-camera'
@@ -42,6 +44,9 @@ const Viewer: React.FC<ViewerProps> = ({ children }) => {
{/* Default Systems */} {/* Default Systems */}
<LevelSystem /> <LevelSystem />
<GuideSystem />
<ScanSystem />
{/* Core systems */}
<CeilingSystem /> <CeilingSystem />
<ItemSystem /> <ItemSystem />
<SlabSystem /> <SlabSystem />
@@ -0,0 +1,18 @@
import { sceneRegistry } from '@pascal-app/core'
import { useEffect } from 'react'
import useViewer from '../../store/use-viewer'
export const GuideSystem = () => {
const showGuides = useViewer((state) => state.showGuides)
useEffect(() => {
const guides = sceneRegistry.byType.guide || new Set()
guides.forEach((guideId) => {
const node = sceneRegistry.nodes.get(guideId)
if (node) {
node.visible = showGuides
}
})
}, [showGuides])
return null;
}
@@ -0,0 +1,18 @@
import { sceneRegistry } from '@pascal-app/core'
import { useEffect } from 'react'
import useViewer from '../../store/use-viewer'
export const ScanSystem = () => {
const showScans = useViewer((state) => state.showScans)
useEffect(() => {
const scans = sceneRegistry.byType.scan || new Set()
scans.forEach((scanId) => {
const node = sceneRegistry.nodes.get(scanId)
if (node) {
node.visible = showScans
}
})
}, [showScans])
return null;
}