mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
32 lines
868 B
TypeScript
32 lines
868 B
TypeScript
import React, {useContext, useEffect} from 'react';
|
|
import ls from './CameraControl.less';
|
|
import cameraControlRenderer from 'scene/cameraControlRenderer';
|
|
import {ReactApplicationContext} from "cad/dom/ReactApplicationContext";
|
|
|
|
export default function CameraControl() {
|
|
|
|
const ctx = useContext(ReactApplicationContext);
|
|
|
|
const domRef = React.useRef(null);
|
|
|
|
useEffect(() => {
|
|
if (!ctx.viewer || !domRef.current) {
|
|
return;
|
|
}
|
|
const container = domRef.current;
|
|
const renderer = cameraControlRenderer(container);
|
|
const detacher = ctx.viewer.sceneSetup.sceneRendered$.attach(() => {
|
|
let camera = ctx.viewer.sceneSetup.camera;
|
|
renderer.render(camera)
|
|
});
|
|
|
|
return () => {
|
|
detacher();
|
|
renderer.dispose();
|
|
}
|
|
}, [domRef.current, ctx.viewer]);
|
|
|
|
return <div ref={domRef} className={ls.cameraControl} />
|
|
|
|
}
|
|
|