import React, { useEffect, useState } from 'react'; import { scene, scene2 } from '../../components/crystal-toolkit/scene/mike'; import { s2, s3, s4, s5, shperes } from '../../components/crystal-toolkit/scene/simple-scene'; import { CameraContextProvider } from '../../components/crystal-toolkit/CameraContextProvider'; import { AnimationStyle, Renderer } from '../../components/crystal-toolkit/scene/constants'; import { CrystalToolkitScene } from '../../components/crystal-toolkit/CrystalToolkitScene/CrystalToolkitScene'; import { ExportType } from '../../components/crystal-toolkit/scene/constants'; import { Download } from '../../components/crystal-toolkit/Download'; import { ScenePosition } from '../../components/crystal-toolkit/scene/inset-helper'; import { CameraState } from '../../components/crystal-toolkit/CameraContextProvider/camera-reducer'; import * as THREE from 'three'; import { Camera } from 'three'; import { useRef } from 'react'; import { Enlargeable } from '../../components/data-display/Enlargeable'; /** * Component for testing Scene */ const vis = { atoms: true }; function SceneSwitcher() { const [_scene, setScene] = useState(s2) as any; const [_vis, setVisibility] = useState(vis) as any; const [_anim, setAnim] = useState(AnimationStyle.NONE) as any; return (
setScene(s2)}> SCENE A
setScene(s3)}> SCENE B
setScene(s4)}> SCENE C
setScene(scene)}> SCENE D
setAnim(AnimationStyle.PLAY)}> PLAY
setAnim(AnimationStyle.NONE)}> NONE
setAnim(AnimationStyle.SLIDER)}> SLIDER
{ vis.atoms = !vis.atoms; setVisibility({ ...vis }); }} > {' '} TOGGLE VIS{' '}
); } export const CrystalStructureViewer: React.FC = () => { const [dataInput, setDataInput] = useState(); const [structureContainerWidth, setStructureContainerWidth] = useState('50%'); const structureContainer = useRef(null); const cameraState1 = { quaternion: { x: -0.3824241795060149, y: -0.008442802938742472, z: 0.0004401494693141228, w: 0.9239481978315308 }, position: { x: -0.25682715953384966, y: 11.387372804441647, z: 11.398460914084055 }, zoom: 4 }; const cameraState2 = { quaternion: new THREE.Quaternion( 0.024653779710988616, -0.08400795009836932, -0.18017488693493414, 0.9797305066109842 ), position: new THREE.Vector3(-2.7956984323728205, -0.29063127398876126, 15.867032946487644), zoom: 2.4640147374718713 }; const [state, setState] = useState({ imageData: undefined, imageRequest: undefined, imageDataTimestamp: undefined, currentCameraState: undefined, customCameraState: cameraState2, fileType: '', fileTimestamp: '' }); const [stateTwo, setStateTwo] = useState({ imageData: undefined, imageRequest: undefined, imageDataTimestamp: undefined, currentCameraState: undefined, customCameraState: cameraState2 }); const [value, setValue] = useState('test'); useEffect(() => { if (state.imageData) { setDataInput({ filename: 'crystal', content: state.imageData, mimeType: 'image/png', isDataURL: true }); } }, [state.imageDataTimestamp]); // useEffect(() => { // if (state.cameraState) { // console.log(state.cameraState); // } // }, [state.cameraState]); return (
<>

Settings panel

This could be a legend

{/* */}

{state.fileType}

{state.fileTimestamp}

{state.imageDataTimestamp}

Parent Current Camera State:

{JSON.stringify(state.currentCameraState)}

{/* <> */} {/* */} {/* */}
); };