From 9fce7ce7b76b859c5b70cc622d885cd9d6c1579f Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 23 四月 2024 10:58:30 +0800 Subject: [PATCH] # --- src/components/agv.jsx | 53 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 40 insertions(+), 13 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]} > -- Gitblit v1.9.1