mouse controls, fixed texture loading

This commit is contained in:
2026-04-27 22:33:40 +03:00
parent cbcfdce047
commit 9569555347
31 changed files with 112 additions and 40 deletions

View File

@@ -33,8 +33,8 @@ public:
SDL_WindowID WindowID();
KeyCallbackFn m_fnKeyCallback;
AxisCallbackFn m_fnAxisCallback;
KeyCallbackFn m_fnKeyCallback = NULL;
AxisCallbackFn m_fnAxisCallback = NULL;
bool m_bWindowSizeUpdated;
uint32_t m_uRenderWidth;
@@ -55,6 +55,7 @@ void CSDLGameWindow::Init()
Plat_FatalErrorFunc("SDL_CreateWindow: %s\n", SDL_GetError());
m_uRenderWidth = 1280;
m_uRenderHeight = 720;
SDL_SetWindowRelativeMouseMode(m_pWindow, true);
}
void CSDLGameWindow::Shutdown()
@@ -231,43 +232,40 @@ void CSDLGameWindowManager::Frame( float fDelta )
}
while (SDL_PollEvent(&event))
{
for (auto a: m_pWindows)
{
if (a->WindowID() != event.window.windowID)
break;
pWindow = a;
break;
}
switch (event.type)
{
case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED:
for (auto a: m_pWindows)
{
if (a->WindowID() != event.window.windowID)
break;
pWindow = a;
break;
}
pWindow->m_bWindowSizeUpdated = true;
pWindow->m_uRenderWidth = event.window.data1;
pWindow->m_uRenderHeight = event.window.data2;
break;
case SDL_EVENT_KEY_UP:
for (auto a: m_pWindows)
{
if (a->WindowID() != event.window.windowID)
break;
pWindow = a;
break;
}
if (pWindow->m_fnKeyCallback)
pWindow->m_fnKeyCallback(k_EInputDevice_Keyboard, GetKeyButton(event.key.key), false);
break;
case SDL_EVENT_KEY_DOWN:
for (auto a: m_pWindows)
{
if (a->WindowID() != event.window.windowID)
break;
pWindow = a;
break;
}
if (pWindow->m_fnKeyCallback)
pWindow->m_fnKeyCallback(k_EInputDevice_Keyboard, GetKeyButton(event.key.key), true);
break;
case SDL_EVENT_MOUSE_MOTION:
if (pWindow->m_fnAxisCallback)
{
pWindow->m_fnAxisCallback(k_EInputDevice_Mouse, k_EInputAxis_MouseX, event.motion.xrel);
pWindow->m_fnAxisCallback(k_EInputDevice_Mouse, k_EInputAxis_MouseY, event.motion.yrel);
}
break;
case SDL_EVENT_QUIT:
Plat_Exit(0);
break;