// // Created by Epagris on 2020. 03. 01.. // #include "EventHandler.h" #include "Logger.h" #include 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((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; }