그리드 recoil 추가
This commit is contained in:
parent
f9b84f42d6
commit
dfeadd5d17
@ -26,6 +26,7 @@ import ThumbnailList from './ui/ThumbnailLIst'
|
|||||||
import QContextMenu from './common/context-menu/QContextMenu'
|
import QContextMenu from './common/context-menu/QContextMenu'
|
||||||
import { modalContent, modalState } from '@/store/modalAtom'
|
import { modalContent, modalState } from '@/store/modalAtom'
|
||||||
import SettingsModal from './SettingsModal'
|
import SettingsModal from './SettingsModal'
|
||||||
|
import { get } from '@/lib/Axios'
|
||||||
|
|
||||||
export default function Roof2(props) {
|
export default function Roof2(props) {
|
||||||
const { name, userId, email, isLoggedIn } = props
|
const { name, userId, email, isLoggedIn } = props
|
||||||
@ -63,6 +64,8 @@ export default function Roof2(props) {
|
|||||||
const [open, setOpen] = useRecoilState(modalState)
|
const [open, setOpen] = useRecoilState(modalState)
|
||||||
const [contents, setContent] = useRecoilState(modalContent)
|
const [contents, setContent] = useRecoilState(modalContent)
|
||||||
|
|
||||||
|
const [scale, setScale] = useState(1)
|
||||||
|
|
||||||
//canvas 썸네일
|
//canvas 썸네일
|
||||||
const [thumbnails, setThumbnails] = useState([])
|
const [thumbnails, setThumbnails] = useState([])
|
||||||
const thumbnailProps = {
|
const thumbnailProps = {
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { useEffect, useRef, useState } from 'react'
|
|||||||
import { Button, Checkbox, CheckboxGroup, RadioGroup, Radio, Input } from '@nextui-org/react'
|
import { Button, Checkbox, CheckboxGroup, RadioGroup, Radio, Input } from '@nextui-org/react'
|
||||||
import { useRecoilState, useRecoilValue } from 'recoil'
|
import { useRecoilState, useRecoilValue } from 'recoil'
|
||||||
import { modalContent, modalState } from '@/store/modalAtom'
|
import { modalContent, modalState } from '@/store/modalAtom'
|
||||||
|
import { guideLineState } from '@/store/canvasAtom'
|
||||||
import { fabric } from 'fabric'
|
import { fabric } from 'fabric'
|
||||||
|
|
||||||
export default function SettingsModal(props) {
|
export default function SettingsModal(props) {
|
||||||
@ -12,12 +13,15 @@ export default function SettingsModal(props) {
|
|||||||
const moduleLength = useRef(90) //모듈 mm 길이 입력
|
const moduleLength = useRef(90) //모듈 mm 길이 입력
|
||||||
|
|
||||||
const [open, setOpen] = useRecoilState(modalState)
|
const [open, setOpen] = useRecoilState(modalState)
|
||||||
|
const [guideLine, setGuideLine] = useRecoilState(guideLineState)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setIsCustomGridSetting(ratioValue !== 'custom')
|
setIsCustomGridSetting(ratioValue !== 'custom')
|
||||||
}, [ratioValue])
|
}, [ratioValue])
|
||||||
|
|
||||||
const drawGridSettings = () => {
|
const drawGridSettings = () => {
|
||||||
|
const gridSettingArray = []
|
||||||
|
|
||||||
if (gridCheckedValue.includes('line')) {
|
if (gridCheckedValue.includes('line')) {
|
||||||
// fabric.GuideRect = fabric.util.createClass(fabric.Rect, {
|
// fabric.GuideRect = fabric.util.createClass(fabric.Rect, {
|
||||||
// _render: function (ctx) {
|
// _render: function (ctx) {
|
||||||
@ -98,20 +102,15 @@ export default function SettingsModal(props) {
|
|||||||
verticalLineArray.push(verticalLine)
|
verticalLineArray.push(verticalLine)
|
||||||
}
|
}
|
||||||
canvasProps.renderAll()
|
canvasProps.renderAll()
|
||||||
const snapDistance = 10
|
|
||||||
|
|
||||||
console.log('horizontalLineArray', horizontalLineArray)
|
const snapDistance = 10
|
||||||
|
|
||||||
canvasProps.on('mouse:move', function (e) {
|
canvasProps.on('mouse:move', function (e) {
|
||||||
let mouseObj = e
|
let mouseObj = e
|
||||||
const mouseCursorX = e.pointer.x
|
const mouseCursorX = e.pointer.x
|
||||||
const mouseCursorY = e.pointer.y
|
const mouseCursorY = e.pointer.y
|
||||||
|
|
||||||
console.log(`mouseCursorX : ${mouseCursorX}, mouseCursorY : ${mouseCursorY}`)
|
|
||||||
|
|
||||||
horizontalLineArray.forEach((line) => {
|
horizontalLineArray.forEach((line) => {
|
||||||
console.log()
|
|
||||||
|
|
||||||
if (Math.abs(mouseCursorY - line.y1) < snapDistance) {
|
if (Math.abs(mouseCursorY - line.y1) < snapDistance) {
|
||||||
mouseObj.x = mouseCursorX
|
mouseObj.x = mouseCursorX
|
||||||
mouseObj.y = line.y1
|
mouseObj.y = line.y1
|
||||||
@ -154,11 +153,19 @@ export default function SettingsModal(props) {
|
|||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
// })
|
// })
|
||||||
|
|
||||||
|
const recoilObj = {
|
||||||
|
guideMode: 'guideLine',
|
||||||
|
horizontalLineArray,
|
||||||
|
verticalLineArray,
|
||||||
|
moduleLength: moduleLength.current.value,
|
||||||
|
}
|
||||||
|
gridSettingArray.push(recoilObj)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gridCheckedValue.includes('dot')) {
|
if (gridCheckedValue.includes('dot')) {
|
||||||
const circle = new fabric.Circle({
|
const circle = new fabric.Circle({
|
||||||
radius: 5,
|
radius: 2,
|
||||||
fill: 'red',
|
fill: 'red',
|
||||||
originX: 'center',
|
originX: 'center',
|
||||||
originY: 'center',
|
originY: 'center',
|
||||||
@ -204,9 +211,16 @@ export default function SettingsModal(props) {
|
|||||||
)
|
)
|
||||||
canvasProps.add(backgroundPolygon)
|
canvasProps.add(backgroundPolygon)
|
||||||
canvasProps.renderAll()
|
canvasProps.renderAll()
|
||||||
}
|
|
||||||
|
|
||||||
|
const recoilObj = {
|
||||||
|
guideMode: 'guideDot',
|
||||||
|
moduleLength: moduleLength.current.value,
|
||||||
|
}
|
||||||
|
|
||||||
|
gridSettingArray.push(recoilObj)
|
||||||
|
}
|
||||||
canvasProps.renderAll()
|
canvasProps.renderAll()
|
||||||
|
setGuideLine(gridSettingArray)
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import {
|
|||||||
sortedPolygonArray,
|
sortedPolygonArray,
|
||||||
templateTypeState,
|
templateTypeState,
|
||||||
wallState,
|
wallState,
|
||||||
|
guideLineState,
|
||||||
} from '@/store/canvasAtom'
|
} from '@/store/canvasAtom'
|
||||||
import { QLine } from '@/components/fabric/QLine'
|
import { QLine } from '@/components/fabric/QLine'
|
||||||
import { fabric } from 'fabric'
|
import { fabric } from 'fabric'
|
||||||
@ -64,6 +65,8 @@ export function useMode() {
|
|||||||
const compass = useRecoilValue(compassState)
|
const compass = useRecoilValue(compassState)
|
||||||
const [isCellCenter, setIsCellCenter] = useState(false)
|
const [isCellCenter, setIsCellCenter] = useState(false)
|
||||||
|
|
||||||
|
const guideLine = useRecoilValue(guideLineState)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 이벤트 리스너 추가
|
// 이벤트 리스너 추가
|
||||||
// if (!canvas) {
|
// if (!canvas) {
|
||||||
@ -104,6 +107,8 @@ export function useMode() {
|
|||||||
}, [mode, isGuidePointMode])
|
}, [mode, isGuidePointMode])
|
||||||
|
|
||||||
const drawMouseLines = (e) => {
|
const drawMouseLines = (e) => {
|
||||||
|
console.log('guideLine', guideLine)
|
||||||
|
|
||||||
// 현재 마우스 포인터의 위치를 가져옵니다.
|
// 현재 마우스 포인터의 위치를 가져옵니다.
|
||||||
const pointer = canvas?.getPointer(e.e)
|
const pointer = canvas?.getPointer(e.e)
|
||||||
|
|
||||||
|
|||||||
@ -88,3 +88,9 @@ export const compassState = atom({
|
|||||||
default: undefined,
|
default: undefined,
|
||||||
dangerouslyAllowMutability: true,
|
dangerouslyAllowMutability: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
export const guideLineState = atom({
|
||||||
|
key: 'guideLine',
|
||||||
|
default: {},
|
||||||
|
dangerouslyAllowMutability: true,
|
||||||
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user