From 7d7100893c405621c77cc84b38b83b357e31b1e1 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 1 Sep 2025 11:42:24 +0530 Subject: [PATCH] simulation and decal bug fix --- .../Decal/decalInstance/decalInstance.tsx | 3 +- .../eventHandler/useDecalEventHandlers.ts | 12 ++++- .../machineInstance/machineInstance.tsx | 2 +- .../triggerHandler/useTriggerHandler.ts | 46 ++++--------------- 4 files changed, 21 insertions(+), 42 deletions(-) diff --git a/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx b/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx index f31dddd..1fb0bd0 100644 --- a/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx +++ b/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx @@ -27,7 +27,7 @@ function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalP } }, [selectedDecal]) - const { handlePointerMissed, handlePointerLeave, handleClick, handlePointerDown, handlePointerEnter } = useDecalEventHandlers({ parent, decal, visible }); + const { handlePointerMissed, handlePointerLeave, handleClick, handlePointerDown, handlePointerEnter, handleDecalUp } = useDecalEventHandlers({ parent, decal, visible }); const [texture, setTexture] = useState(null); @@ -152,6 +152,7 @@ function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalP scale={[(decal.decalType.type === 'Floor' || zPosition < 0) ? -decal.decalScale : decal.decalScale, decal.decalScale, 0.01]} userData={decal} onPointerDown={(e) => { if (e.button === 0) handlePointerDown(e) }} + onPointerUp={(e) => { if (e.button === 0) handleDecalUp(e) }} onClick={(e) => { handleClick(e) }} onPointerEnter={(e) => { handlePointerEnter(e) }} onPointerLeave={(e) => { handlePointerLeave(e) }} diff --git a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts index c0c5161..ef5f223 100644 --- a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts +++ b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts @@ -218,13 +218,12 @@ export function useDecalEventHandlers({ const handlePointerDown = (e: ThreeEvent) => { if (visible && !toggleView && activeModule === 'builder') { - if (e.object.userData.decalUuid && toolMode === 'cursor') { + if (e.object.userData.decalUuid && toolMode === 'cursor' && (selectedDecal && selectedDecal.decalData.decalUuid === decal.decalUuid)) { e.stopPropagation(); setDecalDragState(true, decal.decalUuid, null); if (controls) { (controls as CameraControls).enabled = false; } - setSelectedDecal({ decalMesh: e.object, decalData: decal }); setSelectedWall(null); setSelectedFloor(null); @@ -235,6 +234,14 @@ export function useDecalEventHandlers({ } }; + const handleDecalUp = (e: ThreeEvent) => { + if (visible && !toggleView && activeModule === 'builder') { + if (!decalDragState.isDragging && !selectedDecal && e.object.userData.decalUuid && toolMode === 'cursor') { + setSelectedDecal({ decalMesh: e.object, decalData: decal }); + } + } + } + const handleClick = (e: ThreeEvent) => { if (visible && !toggleView && activeModule === 'builder') { if (e.object.userData.decalUuid) { @@ -292,6 +299,7 @@ export function useDecalEventHandlers({ return { handlePointerDown, + handleDecalUp, handleClick, handlePointerEnter, handlePointerLeave, diff --git a/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx b/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx index 879c985..f45f909 100644 --- a/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx +++ b/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx @@ -116,7 +116,7 @@ function MachineInstance({ machineDetail }: { readonly machineDetail: MachineSta function handleCallBack() { if (currentPhase == "processing") { setMachineState(machineDetail.modelUuid, 'idle'); - setMachineActive(machineDetail.modelUuid, true); + setMachineActive(machineDetail.modelUuid, false); setCurrentPhase("idle") isIncrememtable.current = true; machineStatus(machineDetail.modelUuid, "Machine has completed the processing") diff --git a/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts b/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts index 82dc4bf..4072f9d 100644 --- a/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts +++ b/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts @@ -206,47 +206,17 @@ export function useTriggerHandler() { } else if (model?.type === 'machine') { const armBot = getArmBotById(trigger.triggeredAsset?.triggeredModel.modelUuid); if (armBot) { - if (armBot.isActive === false && armBot.state === 'idle') { - const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); + setIsPaused(materialId, true); + addArmBotToMonitor(armBot.modelUuid, () => { + const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || ''); if (machine) { - if (machine.isActive === false && machine.state === 'idle' && !machine.currentAction) { - setIsPaused(materialId, true); + setIsPaused(materialId, true); + + addMachineToMonitor(machine.modelUuid, () => { handleAction(action, materialId); - } else { - - // Handle current action using Event Manager - setIsPaused(materialId, true); - - addMachineToMonitor(machine.modelUuid, - () => { - handleAction(action, materialId); - } - ) - } + }) } - } else { - setIsPaused(materialId, true); - addArmBotToMonitor(armBot.modelUuid, () => { - const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || ''); - if (machine) { - if (machine.isActive === false && machine.state === 'idle' && !machine.currentAction) { - setIsPaused(materialId, true); - handleAction(action, materialId); - } else { - - // Handle current action using Event Manager - setIsPaused(materialId, true); - - addMachineToMonitor(machine.modelUuid, - () => { - handleAction(action, materialId); - } - ) - } - } - } - ); - } + }); } } else { if (armBot.isActive === false && armBot.state === 'idle') {