From 73e5e4f17c23a7f4832ea2bb36e1bd3799ab9ad9 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 26 四月 2024 14:28:03 +0800 Subject: [PATCH] # --- src/store/index.js | 3 ++- src/core/warehouse.jsx | 7 ++++--- src/components/shelf.jsx | 9 ++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/shelf.jsx b/src/components/shelf.jsx index 90d7e8f..065358c 100644 --- a/src/components/shelf.jsx +++ b/src/components/shelf.jsx @@ -2,18 +2,25 @@ import { useGLTF, useFBX } from '@react-three/drei'; import * as THREE from 'three'; import { MODEL_SHELF_SCALE } from '@/config/setting' +import { snapshot } from 'valtio'; +import { useStore } from '@/store'; import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'; import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'; import Box from './box'; import * as Common from '../utils/common'; const Shelf = (props) => { - const { position = [0, 300, 0], rotationY = 0 } = props; + const { no, position = [0, 300, 0], rotationY = 0 } = props; + const state = useStore(); const { nodes, materials } = useMemo(() => { return useGLTF('/models/shelf/row.glb'); }, []) + useEffect(() => { + snapshot(state).models[no] = position; + }, [props]); + return ( <> <group rotation-y={rotationY} position={position}> diff --git a/src/core/warehouse.jsx b/src/core/warehouse.jsx index d6add15..23eda47 100644 --- a/src/core/warehouse.jsx +++ b/src/core/warehouse.jsx @@ -57,13 +57,14 @@ 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]); - const boxEl = useMemo(() => { - return boxData.map((data, idx) => <Box key={idx} {...data} />) - }, [boxData]); useFrame((state, delta) => { diff --git a/src/store/index.js b/src/store/index.js index 74c5a06..adcceb6 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3,7 +3,8 @@ const store = proxy( { - text: 'Hello World' + text: 'Hello World', + shelf: {}, } ); -- Gitblit v1.9.1