simulation and decal bug fix

This commit is contained in:
2025-09-01 11:42:24 +05:30
parent 9825c3ef12
commit 7d7100893c
4 changed files with 21 additions and 42 deletions

View File

@@ -27,7 +27,7 @@ function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalP
} }
}, [selectedDecal]) }, [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<THREE.Texture | null>(null); const [texture, setTexture] = useState<THREE.Texture | null>(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]} scale={[(decal.decalType.type === 'Floor' || zPosition < 0) ? -decal.decalScale : decal.decalScale, decal.decalScale, 0.01]}
userData={decal} userData={decal}
onPointerDown={(e) => { if (e.button === 0) handlePointerDown(e) }} onPointerDown={(e) => { if (e.button === 0) handlePointerDown(e) }}
onPointerUp={(e) => { if (e.button === 0) handleDecalUp(e) }}
onClick={(e) => { handleClick(e) }} onClick={(e) => { handleClick(e) }}
onPointerEnter={(e) => { handlePointerEnter(e) }} onPointerEnter={(e) => { handlePointerEnter(e) }}
onPointerLeave={(e) => { handlePointerLeave(e) }} onPointerLeave={(e) => { handlePointerLeave(e) }}

View File

@@ -218,13 +218,12 @@ export function useDecalEventHandlers({
const handlePointerDown = (e: ThreeEvent<MouseEvent>) => { const handlePointerDown = (e: ThreeEvent<MouseEvent>) => {
if (visible && !toggleView && activeModule === 'builder') { 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(); e.stopPropagation();
setDecalDragState(true, decal.decalUuid, null); setDecalDragState(true, decal.decalUuid, null);
if (controls) { if (controls) {
(controls as CameraControls).enabled = false; (controls as CameraControls).enabled = false;
} }
setSelectedDecal({ decalMesh: e.object, decalData: decal });
setSelectedWall(null); setSelectedWall(null);
setSelectedFloor(null); setSelectedFloor(null);
@@ -235,6 +234,14 @@ export function useDecalEventHandlers({
} }
}; };
const handleDecalUp = (e: ThreeEvent<MouseEvent>) => {
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<MouseEvent>) => { const handleClick = (e: ThreeEvent<MouseEvent>) => {
if (visible && !toggleView && activeModule === 'builder') { if (visible && !toggleView && activeModule === 'builder') {
if (e.object.userData.decalUuid) { if (e.object.userData.decalUuid) {
@@ -292,6 +299,7 @@ export function useDecalEventHandlers({
return { return {
handlePointerDown, handlePointerDown,
handleDecalUp,
handleClick, handleClick,
handlePointerEnter, handlePointerEnter,
handlePointerLeave, handlePointerLeave,

View File

@@ -116,7 +116,7 @@ function MachineInstance({ machineDetail }: { readonly machineDetail: MachineSta
function handleCallBack() { function handleCallBack() {
if (currentPhase == "processing") { if (currentPhase == "processing") {
setMachineState(machineDetail.modelUuid, 'idle'); setMachineState(machineDetail.modelUuid, 'idle');
setMachineActive(machineDetail.modelUuid, true); setMachineActive(machineDetail.modelUuid, false);
setCurrentPhase("idle") setCurrentPhase("idle")
isIncrememtable.current = true; isIncrememtable.current = true;
machineStatus(machineDetail.modelUuid, "Machine has completed the processing") machineStatus(machineDetail.modelUuid, "Machine has completed the processing")

View File

@@ -206,47 +206,17 @@ export function useTriggerHandler() {
} else if (model?.type === 'machine') { } else if (model?.type === 'machine') {
const armBot = getArmBotById(trigger.triggeredAsset?.triggeredModel.modelUuid); const armBot = getArmBotById(trigger.triggeredAsset?.triggeredModel.modelUuid);
if (armBot) { if (armBot) {
if (armBot.isActive === false && armBot.state === 'idle') { setIsPaused(materialId, true);
const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); addArmBotToMonitor(armBot.modelUuid, () => {
const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '');
if (machine) { if (machine) {
if (machine.isActive === false && machine.state === 'idle' && !machine.currentAction) { setIsPaused(materialId, true);
setIsPaused(materialId, true);
addMachineToMonitor(machine.modelUuid, () => {
handleAction(action, materialId); 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 { } else {
if (armBot.isActive === false && armBot.state === 'idle') { if (armBot.isActive === false && armBot.state === 'idle') {