| | |
| | | import Shelf from '../components/shelf'; |
| | | import Box from '../components/box'; |
| | | import Agv from '../components/agv'; |
| | | import Path from '../components/path' |
| | | |
| | | import tunnelData from '@/assets/data/tunnel'; |
| | | import areaData from '@/assets/data/area'; |
| | |
| | | const [agv1Data, setAgv1Data] = useState({}); |
| | | const [agv2Data, setAgv2Data] = useState({}); |
| | | const [boxData, setBoxData] = useState([]); |
| | | const [path1Data, setPath1Data] = useState([]); |
| | | |
| | | useEffect(() => { |
| | | const websocket = new WebSocketClient('/ws/digitalTwin/websocket'); |
| | |
| | | break; |
| | | case "2": |
| | | setAgv2Data(data.obj); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | if (data.type === 'path') { |
| | | switch (data.no) { |
| | | case "1": |
| | | setPath1Data(data.obj); |
| | | break; |
| | | case "2": |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | return <Agv key={2} {...agv2Data} /> |
| | | }, [agv2Data]); |
| | | |
| | | const path1El = useMemo(() => { |
| | | return <Path list={path1Data} /> |
| | | }, [path1Data]) |
| | | |
| | | useFrame((state, delta) => { |
| | | |
| | |
| | | {agv1El} |
| | | {agv2El} |
| | | {boxEl} |
| | | {path1El} |
| | | </group> |
| | | </> |
| | | ) |