import type {VFC} from 'react' import React from 'react' import TransformControlsModeSelect from './TransformControlsModeSelect' import {useEditorStore} from '../store' import shallow from 'zustand/shallow' import ReferenceWindow from './ReferenceWindow' import TransformControlsSpaceSelect from './TransformControlsSpaceSelect' import ViewportShadingSelect from './ViewportShadingSelect' import {AiFillEye, GiPocketBow, RiFocus3Line} from 'react-icons/all' import {Vector3} from 'three' import {IconButton, Button, SettingsButton} from './elements' import ViewportSettings from './ViewportSettings' import type {$FixMe} from '@theatre/shared/utils/types' const UI: VFC = () => { const [ transformControlsMode, transformControlsSpace, viewportShading, referenceWindowSize, setTransformControlsMode, setTransformControlsSpace, setViewportShading, setEditorOpen, ] = useEditorStore( (state) => [ state.transformControlsMode, state.transformControlsSpace, state.viewportShading, state.referenceWindowSize, state.setTransformControlsMode, state.setTransformControlsSpace, state.setViewportShading, state.setEditorOpen, ], shallow, ) return (
setTransformControlsMode(value)} />
} onClick={() => { const orbitControls = useEditorStore.getState().orbitControlsRef?.current const selected = useEditorStore.getState().selected let focusObject if (selected) { focusObject = useEditorStore.getState().editablesSnapshot![selected] .proxyObject } if (orbitControls && focusObject) { focusObject.getWorldPosition( // @ts-ignore TODO orbitControls.target as Vector3, ) } }} />
} onClick={() => { const camera = ( useEditorStore.getState().orbitControlsRef ?.current as $FixMe )?.object const selected = useEditorStore.getState().selected let proxyObject if (selected) { proxyObject = useEditorStore.getState().editablesSnapshot![selected] .proxyObject if (proxyObject && camera) { const direction = new Vector3() const position = camera.position.clone() camera.getWorldDirection(direction) proxyObject.position.set(0, 0, 0) proxyObject.lookAt(direction) proxyObject.parent!.worldToLocal(position) proxyObject.position.copy(position) proxyObject.updateMatrix() } } }} />
} label="Viewport settings">
{/* Bottom-left corner*/}
) } export default UI