diff --git a/src/hooks/object/useObjectBatch.js b/src/hooks/object/useObjectBatch.js index ef2cf587..2af636a5 100644 --- a/src/hooks/object/useObjectBatch.js +++ b/src/hooks/object/useObjectBatch.js @@ -152,11 +152,17 @@ export function useObjectBatch({ isHidden, setIsHidden }) { rect.set({ width: Math.abs(width), height: Math.abs(height) }) + // 마우스를 왼쪽으로 드래그한 경우 left를 현재 포인터 위치로 설정 if (width < 0) { - rect.set({ left: Math.abs(pointer.x) }) + rect.set({ left: pointer.x }) + } else { + rect.set({ left: origX }) } + // 마우스를 위쪽으로 드래그한 경우 top을 현재 포인터 위치로 설정 if (height < 0) { - rect.set({ top: Math.abs(pointer.y) }) + rect.set({ top: pointer.y }) + } else { + rect.set({ top: origY }) } canvas?.renderAll() @@ -179,7 +185,8 @@ export function useObjectBatch({ isHidden, setIsHidden }) { } } - if (!isCrossChecked) { + // 그림자(SHADOW)는 중복 설치 허용, 개구(OPENING)만 중복 체크 + if (!isCrossChecked && buttonAct === 1) { const preObjects = canvas?.getObjects().filter((obj) => obj.name === BATCH_TYPE.OPENING || obj.name === BATCH_TYPE.SHADOW) const preObjectsArray = preObjects.map((obj) => rectToPolygon(obj)) const isCross = preObjectsArray.some((object) => turf.booleanOverlap(pointsToTurfPolygon(object), rectPolygon)) @@ -266,7 +273,8 @@ export function useObjectBatch({ isHidden, setIsHidden }) { } } - if (!isCrossChecked) { + // 그림자(SHADOW)는 중복 설치 허용, 개구(OPENING)만 중복 체크 + if (!isCrossChecked && buttonAct === 1) { const preObjects = canvas?.getObjects().filter((obj) => obj.name === BATCH_TYPE.OPENING || obj.name === BATCH_TYPE.SHADOW) const preObjectsArray = preObjects.map((obj) => rectToPolygon(obj)) const isCross = preObjectsArray.some((object) => turf.booleanOverlap(pointsToTurfPolygon(object), rectPolygon))