From 5ff1f4b91096410ca4a4b405fc3be1c76dbfe112 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 24 四月 2024 16:06:06 +0800 Subject: [PATCH] # --- src/core/warehouse.jsx | 70 ++++++++++++++++++++++++++++++++--- 1 files changed, 64 insertions(+), 6 deletions(-) diff --git a/src/core/warehouse.jsx b/src/core/warehouse.jsx index 0106022..43a1b77 100644 --- a/src/core/warehouse.jsx +++ b/src/core/warehouse.jsx @@ -1,22 +1,80 @@ -import { useEffect, useRef, useMemo } from 'react'; +import { useState, useEffect, useRef, useMemo } from 'react'; +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 { INTERVAL_TIME } from '@/config/setting' + +let index = 0; const Warehouse = (props) => { - useEffect(() => { + const [agvData, setAgvData] = useState([ + {} + ]); + const [boxData, setBoxData] = useState([ + {} + ]) + useEffect(() => { + const timer = setInterval(() => { + const agvRealData = agvRealDataList[index]; + if (agvRealData) { + setAgvData(agvRealData); + } + index++; + }, INTERVAL_TIME * 1.1); + + return () => { + clearInterval(timer); + } }, []) - const agvEl = useMemo(() => { - return ( - <Agv /> - ) + const tunnelEl = useMemo(() => { + 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 shelfEl1 = useMemo(() => { + return shelfData.slice(0, 1).map((data, index) => <Shelf key={index} {...data} />) + }, []); + + const agvEl = useMemo(() => { + return agvData.map((data, idx) => <Agv key={idx} {...data} />) + }, [agvData]); + + const boxEl = useMemo(() => { + return boxData.map((data, idx) => <Box key={idx} {...data} />) + }, [boxData]); + + useFrame((state, delta) => { + + }) return ( <> <group> + {tunnelEl} + {areaEl} + {shelfEl} + {/* {shelfEl1} */} {agvEl} + {boxEl} </group> </> ) -- Gitblit v1.9.1