승쨩개발공부
[MFC] 내적을 이용한 타일 피킹 본문
먼저 Terrain 클래스에 TileChage를 위한 함수,
TileIndex를 구하고 내적의 결과를 구해 인덱스를 반환하는 함수,
내적을 통해 피킹하는 함수를 만든다.
iIndex = GettileIndex의 반환값을 받는다
iIndex가 -1일경우 함수를 종료시킨다
iIndex가 정상적인 값일경우
DrawID를 바꿔주고
Option을 1로 바꿔준다
VecTile에 담긴 크기만큼 for문을 돌면서 내적의 결과값을 iIndex로 반환시킨다
아닐경우 -1반환
마름모꼴 버텍스를 구해준다
시계방향으로 향하는 네 방향백터를 구해준다
vVetex[1] - vVertex[0] = 0번이 1번을 향하는 방향백터
vVetex[2] - vVertex[1] = 1번이 2번을 향하는 방향백터
vVetex[3] - vVertex[2] = 2번이 3번을 향하는 방향백터
vVetex[4] - vVertex[3] = 3번이 4번을 향하는 방향백터
법선 백터를 뽑아내자 (수직인 백터)
마름모꼴 정점에서 마우스를 바라보는 정점백터를 만들자
마우스 좌표 - VVertex = 마름모꼴 정점에서 마우스를 바라보는 방향백터
마우스를 바라보는 방향백터와 법선백터의 내적을 위해 단위백터로 만든다.
그리고 내적을 해준다
예각인 경우 양수가 나오고 예각인 경우 사각형 바깥쪽을 피킹한 상황이 나온다.
예각인 경우(마름모 바깥쪽 피킹) false를 반환하고
둔각일 경우(마름모 안쪽을 피킹) true를 반환한다.
내적의 결과가 0 = 서로 수직을 이룬다
내적의 결과가 1 = 두 백터가 서로 같은곳을 바라본다.
내적의 결과가 -1 = 두 백터가 서로 다른곳을 바라본다.
X위치를 마우스의 x좌표
Y위치를 마우스의 Y좌표
Z위치 0.f
DrawID = 0번
넣어주면 피킹했을떄 0번 타일로 바뀌게 된다.
'MFC' 카테고리의 다른 글
[MFC] 유닛툴2 (0) | 2022.05.10 |
---|---|
[MFC] 유닛툴1 (0) | 2022.05.10 |
[MFC] 미니맵 (0) | 2022.05.09 |
[MFC] 쿼터뷰 타일 배치 (0) | 2022.05.03 |
[MFC] MFC란? Device 초기화 (0) | 2021.11.17 |