From 3eecf305416d472d173977c2aa70fda48cbb51a2 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Fri, 11 Apr 2025 18:08:53 +0530 Subject: [PATCH] added global speed for agv --- app/src/modules/builder/agv/agv.tsx | 9 +++++++-- app/src/modules/builder/agv/pathNavigator.tsx | 6 ++++-- app/src/modules/simulation/process/processAnimator.tsx | 3 +-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/modules/builder/agv/agv.tsx b/app/src/modules/builder/agv/agv.tsx index 60e76d8..c2e7783 100644 --- a/app/src/modules/builder/agv/agv.tsx +++ b/app/src/modules/builder/agv/agv.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { Line } from "@react-three/drei"; import { useNavMesh, @@ -6,7 +6,7 @@ import { useSimulationStates, } from "../../../store/store"; import PathNavigator from "./pathNavigator"; -import { usePlayButtonStore, useResetButtonStore } from "../../../store/usePlayButtonStore"; +import { useAnimationPlaySpeed, usePlayButtonStore, useResetButtonStore } from "../../../store/usePlayButtonStore"; type PathPoints = { modelUuid: string; @@ -31,6 +31,10 @@ const Agv: React.FC = ({ const { navMesh } = useNavMesh(); const { isPlaying } = usePlayButtonStore(); const { isReset, setReset } = useResetButtonStore(); + const { speed } = useAnimationPlaySpeed(); + const globalSpeed = useRef(1); + + useEffect(() => { globalSpeed.current = speed }, [speed]) useEffect(() => { if (!isPlaying || isReset) { @@ -81,6 +85,7 @@ const Agv: React.FC = ({ pathPoints={pair.points} id={pair.modelUuid} speed={pair.modelSpeed} + globalSpeed={globalSpeed.current} bufferTime={pair.bufferTime} hitCount={pair.hitCount} processes={processes} diff --git a/app/src/modules/builder/agv/pathNavigator.tsx b/app/src/modules/builder/agv/pathNavigator.tsx index 018cf4f..9a6fae7 100644 --- a/app/src/modules/builder/agv/pathNavigator.tsx +++ b/app/src/modules/builder/agv/pathNavigator.tsx @@ -3,7 +3,7 @@ import * as THREE from "three"; import { useFrame, useThree } from "@react-three/fiber"; import { NavMeshQuery } from "@recast-navigation/core"; import { Line } from "@react-three/drei"; -import { usePlayButtonStore } from "../../../store/usePlayButtonStore"; +import { useAnimationPlaySpeed, usePlayButtonStore } from "../../../store/usePlayButtonStore"; import { usePlayAgv } from "../../../store/store"; interface PathNavigatorProps { @@ -11,6 +11,7 @@ interface PathNavigatorProps { pathPoints: any; id: string; speed: number; + globalSpeed: number, bufferTime: number; hitCount: number; processes: any[]; @@ -30,6 +31,7 @@ export default function PathNavigator({ pathPoints, id, speed, + globalSpeed, bufferTime, hitCount, processes, @@ -344,7 +346,7 @@ export default function PathNavigator({ ): boolean { if (path.length < 2) return false; - progressRef.current += delta * speed; + progressRef.current += delta * (speed * globalSpeed); let covered = progressRef.current; let accumulated = 0; let index = 0; diff --git a/app/src/modules/simulation/process/processAnimator.tsx b/app/src/modules/simulation/process/processAnimator.tsx index 2ba5869..c1063c3 100644 --- a/app/src/modules/simulation/process/processAnimator.tsx +++ b/app/src/modules/simulation/process/processAnimator.tsx @@ -377,8 +377,7 @@ const ProcessAnimator: React.FC = ({ if (!isLastPoint) { const nextPoint = path[nextPointIdx]; - const distance = - path[stateRef.currentIndex].distanceTo(nextPoint); + const distance = path[stateRef.currentIndex].distanceTo(nextPoint); const effectiveSpeed = stateRef.speed * speedRef.current; const movement = effectiveSpeed * delta;