mouse controls, fixed texture loading
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user