|  |  |  | 
|---|
|  |  |  | import { useFrame } from '@react-three/fiber'; | 
|---|
|  |  |  | import * as THREE from 'three'; | 
|---|
|  |  |  | import Tunnel from '../components/tunnel'; | 
|---|
|  |  |  | import Area from '../components/area'; | 
|---|
|  |  |  | import Shelf from '../components/shelf'; | 
|---|
|  |  |  | import Box from '../components/box'; | 
|---|
|  |  |  | import Agv from '../components/agv'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import tunnelData from '@/assets/data/tunnel'; | 
|---|
|  |  |  | import areaData from '@/assets/data/area'; | 
|---|
|  |  |  | import shelfData from '@/assets/data/shelf'; | 
|---|
|  |  |  | import agvRealDataList from '@/assets/data/agv'; | 
|---|
|  |  |  | import { getBoxData } from '../api/box'; | 
|---|
|  |  |  | import { INTERVAL_TIME } from '@/config/setting' | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let index = 0; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const [agvData, setAgvData] = useState([ | 
|---|
|  |  |  | {} | 
|---|
|  |  |  | , | 
|---|
|  |  |  | {} | 
|---|
|  |  |  | ]); | 
|---|
|  |  |  | const [boxData, setBoxData] = useState([ | 
|---|
|  |  |  | {} | 
|---|
|  |  |  | ]) | 
|---|
|  |  |  | const [boxData, setBoxData] = useState([]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  | const timer = setInterval(() => { | 
|---|
|  |  |  | getBoxData().then(res => { | 
|---|
|  |  |  | setBoxData(res); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const agvRealData = agvRealDataList[index]; | 
|---|
|  |  |  | if (agvRealData) { | 
|---|
|  |  |  | setAgvData(agvRealData); | 
|---|
|  |  |  | 
|---|
|  |  |  | return tunnelData.map((data, index) => <Tunnel key={index} {...data} />) | 
|---|
|  |  |  | }, []); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const areaEl = useMemo(() => { | 
|---|
|  |  |  | return areaData.map((area, index) => <Area key={index} {...area} />) | 
|---|
|  |  |  | }, []); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const shelfEl = useMemo(() => { | 
|---|
|  |  |  | return shelfData.map((data, index) => <Shelf key={index} {...data} />) | 
|---|
|  |  |  | }, []); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const agvEl = useMemo(() => { | 
|---|
|  |  |  | return agvData.map((data, idx) => <Agv key={idx} {...data} />) | 
|---|
|  |  |  | }, [agvData]); | 
|---|
|  |  |  | const shelfEl1 = useMemo(() => { | 
|---|
|  |  |  | return shelfData.slice(0, 1).map((data, index) => <Shelf key={index} {...data} />) | 
|---|
|  |  |  | }, []); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const boxEl = useMemo(() => { | 
|---|
|  |  |  | return boxData.map((data, idx) => <Box key={idx} {...data} />) | 
|---|
|  |  |  | }, [boxData]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const agvEl = useMemo(() => { | 
|---|
|  |  |  | return agvData.map((data, idx) => <Agv key={idx} {...data} />) | 
|---|
|  |  |  | }, [agvData]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useFrame((state, delta) => { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | <> | 
|---|
|  |  |  | <group> | 
|---|
|  |  |  | {tunnelEl} | 
|---|
|  |  |  | {areaEl} | 
|---|
|  |  |  | {shelfEl} | 
|---|
|  |  |  | {/* {shelfEl1} */} | 
|---|
|  |  |  | {agvEl} | 
|---|
|  |  |  | {boxEl} | 
|---|
|  |  |  | </group> | 
|---|