grafika-latest-working/EventHandler.cpp

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;
}