From 8c9aa13edfea997cb5cc5b3624b7cf54aab84994 Mon Sep 17 00:00:00 2001 From: ysCha Date: Mon, 15 Dec 2025 14:19:38 +0900 Subject: [PATCH] =?UTF-8?q?followLine=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/roofcover/useMovementSetting.js | 33 +++++++++++++---------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/hooks/roofcover/useMovementSetting.js b/src/hooks/roofcover/useMovementSetting.js index b508afd3..2525cdf6 100644 --- a/src/hooks/roofcover/useMovementSetting.js +++ b/src/hooks/roofcover/useMovementSetting.js @@ -180,18 +180,9 @@ export function useMovementSetting(id) { name: 'followLine', }) canvas.add(followLine) + followLine.bringToFront() FOLLOW_LINE_REF.current = followLine - canvas.on('mouse:move', (event) => { - const mousePos = getIntersectMousePoint(event) - if (followLine.x1 === followLine.x2) { - followLine.left = mousePos.x - 2 - } else { - followLine.top = mousePos.y - 2 - } - canvas.renderAll() - }) - canvas.renderAll() }, [currentObject]) @@ -247,7 +238,9 @@ export function useMovementSetting(id) { const mouseMoveEvent = (e) => { //console.log('mouseMoveEvent:::::',e) - const target = canvas.getActiveObject() + // 기존에는 activeObject를 사용했으나, 이 기능에서는 선택된 라인을 비선택(selectable:false) 상태로 두므로 + // 항상 selectedObject.current를 기준으로 계산한다. + const target = selectedObject.current if (!target) return // 디버깅 로그 추가 @@ -285,11 +278,23 @@ export function useMovementSetting(id) { } } + // followLine도 포인터를 따라가도록 동기화 (하나의 mouse:move 핸들러만 사용) + const followLine = FOLLOW_LINE_REF.current + if (followLine) { + if (followLine.x1 === followLine.x2) { + // 수직 라인: x만 이동 + followLine.left = currentX.toNumber() - 2 + } else { + // 수평 라인: y만 이동 + followLine.top = currentY.toNumber() - 2 + } + followLine.bringToFront() + followLine.setCoords && followLine.setCoords() + canvas.renderAll() + } + // 방향 정보를 사용하여 라디오 버튼 상태 업데이트 - //console.log(`방향: ${direction}, 값: ${value.toNumber()}`) - - currentCalculatedValue = value.toNumber() if (typeRef.current === TYPE.FLOW_LINE) {