From b1a6ae4f052409d0c4c3a846bfad1a9b24a2c696 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 23 四月 2024 13:30:31 +0800
Subject: [PATCH] #

---
 src/assets/data/agv.js |   72 +++++++++++++++++++++++++++++++++---
 src/config/setting.js  |    4 +
 src/components/agv.jsx |   39 +++++++++++++------
 3 files changed, 95 insertions(+), 20 deletions(-)

diff --git a/src/assets/data/agv.js b/src/assets/data/agv.js
index affd012..6e3c479 100644
--- a/src/assets/data/agv.js
+++ b/src/assets/data/agv.js
@@ -4,7 +4,7 @@
             no: 1,
             position: [0, 0, 0],
             theta: 0,
-            height: 100,
+            height: 0,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
@@ -16,7 +16,7 @@
             no: 1,
             position: [100, 0, 0],
             theta: 0,
-            height: 100,
+            height: 0,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
@@ -28,7 +28,7 @@
             no: 1,
             position: [100, 0, 0],
             theta: 270,
-            height: 100,
+            height: 0,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
@@ -40,7 +40,7 @@
             no: 1,
             position: [100, 0, 200],
             theta: 90,
-            height: 200,
+            height: 100,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
@@ -52,7 +52,7 @@
             no: 1,
             position: [100, 0, 300],
             theta: 90,
-            height: 300,
+            height: 150,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
@@ -64,11 +64,71 @@
             no: 1,
             position: [100, 0, 400],
             theta: 90,
-            height: 400,
+            height: 200,
             loaderTheta: 180,
             forkLength: 0,
             trayList: [],
             hasBox: false
         }
     ],
+    [
+        {
+            no: 1,
+            position: [100, 0, 400],
+            theta: 180,
+            height: 100,
+            loaderTheta: 180,
+            forkLength: 0,
+            trayList: [],
+            hasBox: false
+        }
+    ],
+    [
+        {
+            no: 1,
+            position: [100, 0, 400],
+            theta: 180,
+            height: 100,
+            loaderTheta: 180,
+            forkLength: 40,
+            trayList: [],
+            hasBox: false
+        }
+    ],
+    [
+        {
+            no: 1,
+            position: [100, 0, 400],
+            theta: 180,
+            height: 100,
+            loaderTheta: 180,
+            forkLength: 40,
+            trayList: [],
+            hasBox: true
+        }
+    ],
+    [
+        {
+            no: 1,
+            position: [100, 0, 400],
+            theta: 180,
+            height: 100,
+            loaderTheta: 180,
+            forkLength: 0,
+            trayList: [],
+            hasBox: true
+        }
+    ],
+    [
+        {
+            no: 1,
+            position: [100, 0, 400],
+            theta: 180,
+            height: 0,
+            loaderTheta: 180,
+            forkLength: 0,
+            trayList: [],
+            hasBox: true
+        }
+    ],
 ]
\ No newline at end of file
diff --git a/src/components/agv.jsx b/src/components/agv.jsx
index 89041bb..dfd5ea8 100644
--- a/src/components/agv.jsx
+++ b/src/components/agv.jsx
@@ -5,7 +5,7 @@
 import Box from './box';
 import * as Common from '../utils/common';
 import * as TWEEN from "@tweenjs/tween.js";
-import { INTERVAL_TIME } from '@/config/setting'
+import { INTERVAL_TIME, MODEL_AGV_SCALE } from '@/config/setting'
 
 const Agv = (props) => {
     const { position, theta, height, loaderTheta, forkLength, trayList, hasBox } = props;
@@ -13,6 +13,7 @@
     const [groupPos, setGroupPos] = useState({ x: 0, y: 0, z: 0 });
     const [groupTheta, setGroupTheta] = useState(0);
     const [loaderHeight, setLoaderHeight] = useState(0);
+    const [forkDis, setForkDis] = useState(0);
 
     useEffect(() => {
         if (!props || Object.keys(props).length === 0) {
@@ -26,11 +27,7 @@
         }
         if (!Common.deepEqual(groupPos, pos)) {
             new TWEEN.Tween(groupPos)
-                .to({
-                    x: position[0],
-                    y: position[1],
-                    z: position[2]
-                }, INTERVAL_TIME)
+                .to(pos, INTERVAL_TIME)
                 .easing(TWEEN.Easing.Linear.None)
                 .onUpdate((e) => {
                     setGroupPos({ ...e });
@@ -67,6 +64,20 @@
                 }).start();
         }
 
+        // fork lenght
+        if (forkDis !== forkLength) {
+            new TWEEN.Tween({ value: forkDis })
+                .to({ value: forkLength }, INTERVAL_TIME)
+                .easing(TWEEN.Easing.Linear.None)
+                .onUpdate((e) => {
+                    setForkDis(e.value)
+                })
+                .onComplete((e) => {
+                    setForkDis(e.value)
+                    console.log(e.value);
+                }).start();
+        }
+
     }, [props]);
 
     useFrame((state, delta) => {
@@ -78,6 +89,7 @@
         if (!fbx.castShadow) {
             Common.setShadow(fbx);
         }
+        fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE);
         return fbx.clone();
     }, [])
 
@@ -86,6 +98,7 @@
         if (!fbx.castShadow) {
             Common.setShadow(fbx);
         }
+        fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE);
         return fbx.clone();
     }, [])
 
@@ -94,6 +107,7 @@
         if (!fbx.castShadow) {
             Common.setShadow(fbx);
         }
+        fbx.scale.set(MODEL_AGV_SCALE, MODEL_AGV_SCALE, MODEL_AGV_SCALE);
         return fbx.clone();
     }, [])
 
@@ -101,16 +115,15 @@
         <>
             <group
                 rotation-y={Common.rotationParseNum(groupTheta)}
-                scale={0.5}
                 position={[groupPos.x, groupPos.y, groupPos.z]}
             >
                 <primitive object={bodyModel} castShadow />
-                <group
-                    position-y={loaderHeight}
-                >
-                    <primitive object={loaderModel} castShadow position={[0, 50, 0]} />
-                    <primitive object={forkModel} castShadow position={[0, 61, 0]} />
-                    <Box position={[100, 100, 300]} />
+                <group position-y={loaderHeight}>
+                    <primitive object={loaderModel} castShadow position={[0, 30, 0]} />
+                    <group position-z={forkDis}>
+                        <primitive object={forkModel} castShadow position={[0, 35, 0]} />
+                        {hasBox && <Box position={[0, 34, 0]} />}
+                    </group>
                 </group>
             </group>
         </>
diff --git a/src/config/setting.js b/src/config/setting.js
index 7a49028..c3424c8 100644
--- a/src/config/setting.js
+++ b/src/config/setting.js
@@ -6,4 +6,6 @@
 
 export const DEBUG = false;
 
-export const INTERVAL_TIME = 1500;
+export const INTERVAL_TIME = 500;
+
+export const MODEL_AGV_SCALE = .5;

--
Gitblit v1.9.1