Skip to content

Commit 6acc776

Browse files
committed
xrEngine: fix multy-key handling completely
1 parent e7963eb commit 6acc776

File tree

1 file changed

+36
-33
lines changed

1 file changed

+36
-33
lines changed

src/xrEngine/xr_input.cpp

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -247,23 +247,17 @@ void CInput::OnFrame(void)
247247

248248
switch (event.type)
249249
{
250-
case SDL_KEYDOWN:
251-
{
250+
case SDL_KEYDOWN: {
252251
KBState[event.key.keysym.scancode] = TRUE;
253252
#ifndef _EDITOR
254253
if (Device.dwPrecacheFrame == 0)
255254
#endif
256255
{
257256
cbStack.back()->IR_OnKeyboardPress(event.key.keysym.scancode);
258-
259-
for (u32 i = 0; i < COUNT_KB_BUTTONS; i++)
260-
if (KBState[i])
261-
cbStack.back()->IR_OnKeyboardHold(i);
262257
}
263258
}
264259
break;
265-
case SDL_KEYUP:
266-
{
260+
case SDL_KEYUP: {
267261
KBState[event.key.keysym.scancode] = FALSE;
268262
#ifndef _EDITOR
269263
if (Device.dwPrecacheFrame == 0)
@@ -277,44 +271,44 @@ void CInput::OnFrame(void)
277271
#ifndef _EDITOR
278272
if (Device.dwPrecacheFrame == 0)
279273
#endif
280-
{
281-
timeStamp[0] = event.motion.timestamp;
282-
timeStamp[1] = event.motion.timestamp;
283-
cbStack.back()->IR_OnMouseMove(event.motion.xrel, event.motion.yrel);
284-
}
285-
break;
274+
{
275+
timeStamp[0] = event.motion.timestamp;
276+
timeStamp[1] = event.motion.timestamp;
277+
cbStack.back()->IR_OnMouseMove(event.motion.xrel, event.motion.yrel);
278+
}
279+
break;
286280
case SDL_MOUSEBUTTONUP:
287281
#ifndef _EDITOR
288282
if (Device.dwPrecacheFrame == 0)
289283
#endif
290-
{
291-
mouseState[event.button.button] = FALSE;
292-
// cbStack.back()->IR_OnMouseRelease(event.button.button);
293-
cbStack.back()->IR_OnKeyboardRelease(SDL_NUM_SCANCODES + event.button.button);
294-
}
295-
break;
284+
{
285+
mouseState[event.button.button] = FALSE;
286+
// cbStack.back()->IR_OnMouseRelease(event.button.button);
287+
cbStack.back()->IR_OnKeyboardRelease(SDL_NUM_SCANCODES + event.button.button);
288+
}
289+
break;
296290
case SDL_MOUSEBUTTONDOWN:
297291
#ifndef _EDITOR
298292
if (Device.dwPrecacheFrame == 0)
299293
#endif
300-
{
301-
mouseState[event.button.button] = TRUE;
302-
// cbStack.back()->IR_OnMousePress(event.button.button);
303-
cbStack.back()->IR_OnKeyboardPress(SDL_NUM_SCANCODES + event.button.button);
294+
{
295+
mouseState[event.button.button] = TRUE;
296+
// cbStack.back()->IR_OnMousePress(event.button.button);
297+
cbStack.back()->IR_OnKeyboardPress(SDL_NUM_SCANCODES + event.button.button);
304298

305-
if (mouseState[event.button.button])
306-
cbStack.back()->IR_OnMouseHold(event.button.button);
307-
}
308-
break;
299+
if (mouseState[event.button.button])
300+
cbStack.back()->IR_OnMouseHold(event.button.button);
301+
}
302+
break;
309303
case SDL_MOUSEWHEEL:
310304
#ifndef _EDITOR
311305
if (Device.dwPrecacheFrame == 0)
312306
#endif
313-
{
314-
timeStamp[2] = event.wheel.timestamp;
315-
cbStack.back()->IR_OnMouseWheel(event.wheel.y);
316-
}
317-
break;
307+
{
308+
timeStamp[2] = event.wheel.timestamp;
309+
cbStack.back()->IR_OnMouseWheel(event.wheel.y);
310+
}
311+
break;
318312
case SDL_QUIT: // go to outside event loop
319313
event.type = SDL_QUIT;
320314
SDL_PushEvent(&event);
@@ -327,6 +321,15 @@ void CInput::OnFrame(void)
327321
break;
328322
}
329323

324+
#ifndef _EDITOR
325+
if (Device.dwPrecacheFrame == 0)
326+
#endif
327+
{
328+
for (u32 i = 0; i < COUNT_KB_BUTTONS; i++)
329+
if (KBState[i])
330+
cbStack.back()->IR_OnKeyboardHold(i);
331+
}
332+
330333
stats.FrameTime.End();
331334
stats.FrameEnd();
332335
}

0 commit comments

Comments
 (0)