From aa55f2ba9eb5eced961ab30813424cd1a04930a0 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Fri, 22 Aug 2025 16:12:59 +0530 Subject: [PATCH 1/2] human movement improvement --- .../instance/actions/workerInstance.tsx | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx b/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx index 14eadbf..078f203 100644 --- a/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx @@ -14,7 +14,7 @@ function WorkerInstance({ human }: { human: HumanStatus }) { const { navMesh } = useNavMesh(); const { isPlaying } = usePlayButtonStore(); const { scene } = useThree(); - const { assetStore, materialStore, armBotStore, conveyorStore, machineStore, vehicleStore, humanStore, storageUnitStore, productStore } = useSceneContext(); + const { assetStore, materialStore, armBotStore, conveyorStore, machineStore, vehicleStore, humanStore, storageUnitStore, productStore, humanEventManagerRef } = useSceneContext(); const { removeMaterial, setEndTime, setIsVisible } = materialStore(); const { getStorageUnitById } = storageUnitStore(); const { getArmBotById } = armBotStore(); @@ -129,23 +129,47 @@ function WorkerInstance({ human }: { human: HumanStatus }) { humanStatus(human.modelUuid, 'Started from pickup point, heading to drop point'); } } else if (human.currentMaterials.length > 0 && human.currentLoad > 0 && humanAsset?.animationState?.current !== 'pickup') { - setTimeout(()=>{ + setTimeout(() => { if (human.currentMaterials[0]?.materialId) { setIsVisible(human.currentMaterials[0]?.materialId, false); } humanStatus(human.modelUuid, 'Started to pickup in pickup point'); setCurrentAnimation(human.modelUuid, 'pickup', true, false, false); - },1) + }, 1) } } else if (!human.isActive && human.state === 'idle' && human.currentPhase === 'dropping' && human.currentLoad === 0) { if (action.pickUpPoint && action.dropPoint) { - const dropToPickup = computePath(action.dropPoint.position || [0, 0, 0], action.pickUpPoint.position || [0, 0, 0]); - setPath(dropToPickup); - setCurrentPhase(human.modelUuid, 'init'); - setHumanState(human.modelUuid, 'running'); - setHumanActive(human.modelUuid, true); - setCurrentAnimation(human.modelUuid, 'walking', true, true, true); - humanStatus(human.modelUuid, 'Started from dropping point, heading to pickup point'); + // const dropToPickup = computePath(action.dropPoint.position || [0, 0, 0], action.pickUpPoint.position || [0, 0, 0]); + // setPath(dropToPickup); + // setCurrentPhase(human.modelUuid, 'drop-pickup'); + // setHumanState(human.modelUuid, 'running'); + // setHumanActive(human.modelUuid, true); + // setCurrentAnimation(human.modelUuid, 'walking', true, true, true); + if (humanEventManagerRef.current) { + let state = humanEventManagerRef.current.humanStates.find(h => h.humanId === human.modelUuid); + if (state) { + const existingAction = state.actionQueue.find(a => a.actionUuid === action.actionUuid); + if (existingAction) { + const currentCount = existingAction.count ?? 0; + if (existingAction.actionType === 'worker') { + if (currentCount < existingAction.maxLoadCount) { + const dropToPickup = computePath(action.dropPoint.position || [0, 0, 0], action.pickUpPoint.position || [0, 0, 0]); + setPath(dropToPickup); + setCurrentPhase(human.modelUuid, 'drop-pickup'); + setHumanState(human.modelUuid, 'running'); + setHumanActive(human.modelUuid, true); + setCurrentAnimation(human.modelUuid, 'walking', true, true, true); + } else { + setCurrentPhase(human.modelUuid, 'picking'); + setHumanState(human.modelUuid, 'idle'); + setHumanActive(human.modelUuid, false); + setCurrentAnimation(human.modelUuid, 'idle', true, true, true); + humanStatus(human.modelUuid, 'Started from dropping point, heading to pickup point'); + } + } + } + } + } } } } else { From cbeb53af958d28573b2eb7b0b5c66b74ee0580ca Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Fri, 22 Aug 2025 16:40:06 +0530 Subject: [PATCH 2/2] crane bug fix --- .../actions/storageUnit/actionHandler/useRetrieveHandler.ts | 2 +- .../human/instances/instance/actions/operatorInstance.tsx | 2 +- .../roboticArm/instances/animator/roboticArmAnimator.tsx | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts b/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts index f82d6de..37c991c 100644 --- a/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts +++ b/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts @@ -51,7 +51,7 @@ export function useRetrieveHandler() { isActive: false, isVisible: false, isPaused: false, - isRendered: false, + isRendered: true, startTime: currentTime, previous: { modelUuid: modelUuid, diff --git a/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx b/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx index 9b79d75..fce077f 100644 --- a/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx @@ -130,7 +130,7 @@ function OperatorInstance({ human }: { human: HumanStatus }) { setHumanState(human.modelUuid, 'running'); setHumanActive(human.modelUuid, true); setCurrentAnimation(human.modelUuid, 'working_standing', true, false, false); - }, 10) + }, 1) } } else { reset() diff --git a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx index cecf51c..d7a5058 100644 --- a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx +++ b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx @@ -181,7 +181,6 @@ function RoboticArmAnimator({ HandleCallback, restPosition, ikSolver, targetBone const nextModel = getEventByModelUuid(selectedProduct.productUuid, currentAction?.triggers[0]?.triggeredAsset?.triggeredModel?.modelUuid || ''); const nextPoint = getPointByUuid(selectedProduct.productUuid, currentAction?.triggers[0]?.triggeredAsset?.triggeredModel?.modelUuid || '', currentAction?.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || ''); - console.log('prevModel: ', prevModel); if (prevModel && prevModel.type === 'transfer') { const material = scene.getObjectByProperty("uuid", currentMaterial); const armbotModel = scene.getObjectByProperty("uuid", armBot.modelUuid);