87 lines
1.7 KiB
C++
87 lines
1.7 KiB
C++
//
|
|
// Created by Epagris on 2020. 03. 01..
|
|
//
|
|
|
|
#include "EventHandler.h"
|
|
#include "Logger.h"
|
|
#include <hidusage.h>
|
|
eg3d::EventHandler::EventHandler() {
|
|
init();
|
|
}
|
|
|
|
void eg3d::EventHandler::init()
|
|
{
|
|
mCamVelocity = 0.0f; // kamera sebességének inicializációja
|
|
mMouseLocked = false; // nincs befogva az egér
|
|
|
|
|
|
}
|
|
|
|
float eg3d::EventHandler::getCamVelocity() const
|
|
{
|
|
return mCamVelocity;
|
|
}
|
|
|
|
// -----------------------------------
|
|
|
|
int eg3d::EventHandler::processEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
|
|
// TODO eseménykezelés megvalósítása
|
|
EventHandler * pThis_EH = static_cast<Window *>((void *)GetWindowLongPtrA(hwnd, GWLP_USERDATA))->getEventHandler(); // ablakhoz rendelt eseménykezelõ elkérése
|
|
|
|
UINT rawDataLength = 64;
|
|
BYTE pRawData[64];
|
|
|
|
switch (message)
|
|
{
|
|
|
|
case WM_INPUT:
|
|
{
|
|
GetRawInputData((HRAWINPUT)lParam, RID_INPUT, pRawData, &rawDataLength, sizeof(RAWINPUTHEADER));
|
|
|
|
RAWINPUT * pRawInput = (RAWINPUT *)pRawData;
|
|
|
|
if (pRawInput->header.dwType == RIM_TYPEMOUSE)
|
|
{
|
|
int displacementX = pRawInput->data.mouse.lLastX;
|
|
int displacementY = pRawInput->data.mouse.lLastY;
|
|
|
|
LOG(std::string("(") + std::to_string(displacementX) + ", " + std::to_string(displacementY) + ")");
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WM_KEYDOWN:
|
|
{
|
|
switch (wParam)
|
|
{
|
|
case 'W':
|
|
pThis_EH->mCamVelocity = -cCAM_VELOCITY;
|
|
break;
|
|
case 'S':
|
|
pThis_EH->mCamVelocity = cCAM_VELOCITY;
|
|
break;
|
|
case 'L':
|
|
pThis_EH->mMouseLocked = !pThis_EH->mMouseLocked;
|
|
LOG(std::string("Mouse ") + (pThis_EH->mMouseLocked ? "" : "un") + "locked");
|
|
break;
|
|
}
|
|
|
|
}
|
|
break;
|
|
|
|
case WM_KEYUP:
|
|
{
|
|
if (wParam == 'W' || wParam == 'S')
|
|
{
|
|
pThis_EH->mCamVelocity = 0.0f;
|
|
}
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
} |