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