11import React , { useRef , useState } from "react" ;
2- import { Canvas3D } from "@metacell/geppetto-meta-ui/3d-canvas/Canvas3D" ;
2+ import {
3+ Canvas3D ,
4+ Canvas3DRootState ,
5+ } from "@metacell/geppetto-meta-ui/3d-canvas/Canvas3D" ;
36import { Box } from "@mui/material" ;
47import { useFrame } from "@react-three/fiber" ;
58import { Mesh } from "three" ;
69import { CameraControls } from "@react-three/drei" ;
7- import { Toolbar3D , Toolbar3DButton , Toolbar3DSeparator } from "../toolbar/Toolbar3D" ;
10+ import {
11+ Toolbar3D ,
12+ Toolbar3DButton ,
13+ Toolbar3DSeparator ,
14+ } from "../toolbar/Toolbar3D" ;
815import { CameraControlsProvider } from "../toolbar/CameraControlsContext" ;
916import {
1017 Navigation3D ,
@@ -54,24 +61,27 @@ const Canvas3DExample: React.FC = () => {
5461 const [ activeCamera , setActiveCamera ] = useState ( false ) ;
5562 const cameraControlsRef = useRef < CameraControls > ( null ) ;
5663
57- const handleCameraClick = ( fiber : any ) => {
64+ const handleCameraClick = ( fiber : Canvas3DRootState ) => {
5865 console . log ( "Camera clicked" , fiber . camera ) ;
66+ console . log ( "Camera clicked" , fiber ) ;
5967 console . log ( "Current activeCamera state:" , activeCamera ) ;
60- console . log ( "CameraControls ref :" , cameraControlsRef . current ) ;
68+ console . log ( "CameraControls:" , fiber . controls ) ;
6169
6270 setActiveCamera ( ! activeCamera ) ;
6371
64- if ( cameraControlsRef . current ) {
72+ if ( fiber . controls ) {
6573 if ( ! activeCamera ) {
6674 console . log ( "Setting focus position..." ) ;
67- cameraControlsRef . current . setLookAt (
75+
76+ /* prettier-ignore */
77+ fiber . controls . setLookAt (
6878 5 , 5 , 5 , // Camera position
6979 0 , 0 , 0 , // Look at center
7080 true // Enable animation
7181 ) ;
7282 } else {
7383 console . log ( "Resetting camera..." ) ;
74- cameraControlsRef . current . reset ( true ) ;
84+ fiber . controls . reset ( true ) ;
7585 }
7686 } else {
7787 console . log ( "CameraControls ref is null!" ) ;
@@ -80,14 +90,14 @@ const Canvas3DExample: React.FC = () => {
8090
8191 const Scene = ( ) => (
8292 < >
83- < CameraControls
93+ { /* <CameraControls
8494 ref={cameraControlsRef}
8595 minDistance={2}
8696 maxDistance={20}
8797 enablePan={true}
8898 enableZoom={true}
8999 enableRotate={true}
90- />
100+ /> */ }
91101 < MyRotatingBox />
92102 < ambientLight intensity = { 0.5 } />
93103 < pointLight position = { [ 10 , 10 , 10 ] } />
@@ -115,7 +125,16 @@ const Canvas3DExample: React.FC = () => {
115125 </ Toolbar3D >
116126 </ CameraControlsProvider >
117127 < Box sx = { classes . canvasContainer } >
118- < Canvas3D frameloop = { "always" } nonInteractive = { true } >
128+ < Canvas3D
129+ frameloop = { "always" }
130+ cameraOptions = { {
131+ minDistance : 2 ,
132+ maxDistance : 20 ,
133+ enablePan : true ,
134+ enableZoom : true ,
135+ enableRotate : true ,
136+ } }
137+ >
119138 < Scene />
120139 </ Canvas3D >
121140 </ Box >
0 commit comments