Skip to content

Commit

Permalink
xrEngine: fix multy-key handling completely
Browse files Browse the repository at this point in the history
  • Loading branch information
eagleivg committed Jul 10, 2018
1 parent e7963eb commit 6acc776
Showing 1 changed file with 36 additions and 33 deletions.
69 changes: 36 additions & 33 deletions src/xrEngine/xr_input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -247,23 +247,17 @@ void CInput::OnFrame(void)

switch (event.type)
{
case SDL_KEYDOWN:
{
case SDL_KEYDOWN: {
KBState[event.key.keysym.scancode] = TRUE;
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
cbStack.back()->IR_OnKeyboardPress(event.key.keysym.scancode);

for (u32 i = 0; i < COUNT_KB_BUTTONS; i++)
if (KBState[i])
cbStack.back()->IR_OnKeyboardHold(i);
}
}
break;
case SDL_KEYUP:
{
case SDL_KEYUP: {
KBState[event.key.keysym.scancode] = FALSE;
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
Expand All @@ -277,44 +271,44 @@ void CInput::OnFrame(void)
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
timeStamp[0] = event.motion.timestamp;
timeStamp[1] = event.motion.timestamp;
cbStack.back()->IR_OnMouseMove(event.motion.xrel, event.motion.yrel);
}
break;
{
timeStamp[0] = event.motion.timestamp;
timeStamp[1] = event.motion.timestamp;
cbStack.back()->IR_OnMouseMove(event.motion.xrel, event.motion.yrel);
}
break;
case SDL_MOUSEBUTTONUP:
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
mouseState[event.button.button] = FALSE;
// cbStack.back()->IR_OnMouseRelease(event.button.button);
cbStack.back()->IR_OnKeyboardRelease(SDL_NUM_SCANCODES + event.button.button);
}
break;
{
mouseState[event.button.button] = FALSE;
// cbStack.back()->IR_OnMouseRelease(event.button.button);
cbStack.back()->IR_OnKeyboardRelease(SDL_NUM_SCANCODES + event.button.button);
}
break;
case SDL_MOUSEBUTTONDOWN:
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
mouseState[event.button.button] = TRUE;
// cbStack.back()->IR_OnMousePress(event.button.button);
cbStack.back()->IR_OnKeyboardPress(SDL_NUM_SCANCODES + event.button.button);
{
mouseState[event.button.button] = TRUE;
// cbStack.back()->IR_OnMousePress(event.button.button);
cbStack.back()->IR_OnKeyboardPress(SDL_NUM_SCANCODES + event.button.button);

if (mouseState[event.button.button])
cbStack.back()->IR_OnMouseHold(event.button.button);
}
break;
if (mouseState[event.button.button])
cbStack.back()->IR_OnMouseHold(event.button.button);
}
break;
case SDL_MOUSEWHEEL:
#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
timeStamp[2] = event.wheel.timestamp;
cbStack.back()->IR_OnMouseWheel(event.wheel.y);
}
break;
{
timeStamp[2] = event.wheel.timestamp;
cbStack.back()->IR_OnMouseWheel(event.wheel.y);
}
break;
case SDL_QUIT: // go to outside event loop
event.type = SDL_QUIT;
SDL_PushEvent(&event);
Expand All @@ -327,6 +321,15 @@ void CInput::OnFrame(void)
break;
}

#ifndef _EDITOR
if (Device.dwPrecacheFrame == 0)
#endif
{
for (u32 i = 0; i < COUNT_KB_BUTTONS; i++)
if (KBState[i])
cbStack.back()->IR_OnKeyboardHold(i);
}

stats.FrameTime.End();
stats.FrameEnd();
}
Expand Down

0 comments on commit 6acc776

Please sign in to comment.