From 9fce7ce7b76b859c5b70cc622d885cd9d6c1579f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 23 四月 2024 10:58:30 +0800
Subject: [PATCH] #
---
src/utils/common.js | 22 ++++++++++
src/core/warehouse.jsx | 2
src/components/agv.jsx | 53 ++++++++++++++++++++------
3 files changed, 62 insertions(+), 15 deletions(-)
diff --git a/src/components/agv.jsx b/src/components/agv.jsx
index 56da776..ebe1451 100644
--- a/src/components/agv.jsx
+++ b/src/components/agv.jsx
@@ -8,25 +8,52 @@
import { INTERVAL_TIME } from '@/config/setting'
const Agv = (props) => {
- const { position, theta } = props;
+ const { position, theta, height, loaderTheta, forkLength, trayList, hasBox } = props;
const [groupPos, setGroupPos] = useState({ x: 0, y: 0, z: 0 });
+ const [groupTheta, setGroupTheta] = useState(0);
useEffect(() => {
if (!props || Object.keys(props).length === 0) {
return;
}
- new TWEEN.Tween(groupPos)
- .to({
- x: position[0],
- y: position[1],
- z: position[2]
- }, INTERVAL_TIME)
- .easing(TWEEN.Easing.Linear.None)
- .onUpdate((e) => {
- setGroupPos({ ...e });
- })
- .start();
+ // group position
+ const pos = {
+ x: position?.[0],
+ y: position?.[1],
+ z: position?.[2],
+ }
+ if (!Common.deepEqual(groupPos, pos)) {
+ new TWEEN.Tween(groupPos)
+ .to({
+ x: position[0],
+ y: position[1],
+ z: position[2]
+ }, INTERVAL_TIME)
+ .easing(TWEEN.Easing.Linear.None)
+ .onUpdate((e) => {
+ setGroupPos({ ...e });
+ })
+ .onComplete((e) => {
+ setGroupPos({ ...e });
+ }).start();
+ }
+
+ // group theta
+ if (groupTheta !== theta) {
+ new TWEEN.Tween({ value: groupTheta })
+ .to({ value: theta }, INTERVAL_TIME)
+ .easing(TWEEN.Easing.Linear.None)
+ .onUpdate((e) => {
+ setGroupTheta(e.value)
+ })
+ .onComplete((e) => {
+ setGroupTheta(e.value)
+ }).start();
+ }
+
+
+
}, [props]);
useFrame((state, delta) => {
@@ -60,7 +87,7 @@
return (
<>
<group
- rotation-y={Common.rotationParseNum(theta)}
+ rotation-y={Common.rotationParseNum(groupTheta)}
scale={0.5}
position={[groupPos.x, groupPos.y, groupPos.z]}
>
diff --git a/src/core/warehouse.jsx b/src/core/warehouse.jsx
index d19c2ac..89a95c8 100644
--- a/src/core/warehouse.jsx
+++ b/src/core/warehouse.jsx
@@ -26,7 +26,7 @@
setAgvData(agvRealData);
}
index++;
- }, 1000);
+ }, INTERVAL_TIME * 1.1);
return () => {
clearInterval(timer);
diff --git a/src/utils/common.js b/src/utils/common.js
index 2ace608..4806db1 100644
--- a/src/utils/common.js
+++ b/src/utils/common.js
@@ -42,4 +42,24 @@
setColor(child);
});
}
-};
\ No newline at end of file
+};
+
+export const deepEqual = (obj1, obj2) => {
+ if (obj1 === obj2) {
+ return true;
+ }
+ if (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) {
+ return false;
+ }
+ var keys1 = Object.keys(obj1);
+ var keys2 = Object.keys(obj2);
+ if (keys1.length !== keys2.length) {
+ return false;
+ }
+ for (var key of keys1) {
+ if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
+ return false;
+ }
+ }
+ return true;
+}
\ No newline at end of file
--
Gitblit v1.9.1