void I_PollXInputGamepad(void) { #if defined(WIN32) if (gamepad && !noinput) { XINPUT_STATE state; XINPUT_GAMEPAD Gamepad; ZeroMemory(&state, sizeof(XINPUT_STATE)); pXInputGetState(0, &state); Gamepad = state.Gamepad; gamepadbuttons = (Gamepad.wButtons | GAMEPAD_LEFT_TRIGGER * (Gamepad.bLeftTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD) | GAMEPAD_RIGHT_TRIGGER * (Gamepad.bRightTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD)); if (damagevibrationtics) if (!--damagevibrationtics && !weaponvibrationtics) XInputVibration(idlemotorspeed); if (weaponvibrationtics) if (!--weaponvibrationtics && !damagevibrationtics) XInputVibration(idlemotorspeed); if (gamepadbuttons) { vibrate = true; idclev = false; idmus = false; if (idbehold) { message_clearable = true; HU_ClearMessages(); idbehold = false; } } if (gp_sensitivity || menuactive || (gamepadbuttons & gamepadmenu)) { event_t ev; ev.type = ev_gamepad; D_PostEvent(&ev); gamepadthumbsfunc(Gamepad.sThumbLX, Gamepad.sThumbLY, Gamepad.sThumbRX, Gamepad.sThumbRY); } else { gamepadbuttons = 0; gamepadthumbLX = 0; gamepadthumbLY = 0; gamepadthumbRX = 0; } } #endif }
void I_PollXInputGamepad(void) { #ifdef WIN32 if (gamepad) { event_t ev; XINPUT_STATE state; XINPUT_GAMEPAD Gamepad; ZeroMemory(&state, sizeof(XINPUT_STATE)); pXInputGetState(0, &state); Gamepad = state.Gamepad; if (gamepadsensitivity || menuactive) gamepadthumbsfunc(Gamepad.sThumbLX, Gamepad.sThumbLY, Gamepad.sThumbRX, Gamepad.sThumbRY); gamepadbuttons = (state.Gamepad.wButtons | GAMEPAD_LEFT_TRIGGER * (state.Gamepad.bLeftTrigger > GAMEPAD_TRIGGER_THRESHOLD) | GAMEPAD_RIGHT_TRIGGER * (state.Gamepad.bRightTrigger > GAMEPAD_TRIGGER_THRESHOLD)); if (damagevibrationtics) if (!--damagevibrationtics && !weaponvibrationtics) XInputVibration(idlemotorspeed); if (weaponvibrationtics) if (!--weaponvibrationtics && !damagevibrationtics) XInputVibration(idlemotorspeed); if (gamepadbuttons) { vibrate = true; idclev = false; idmus = false; if (idbehold) { HU_clearMessages(); idbehold = false; } } ev.type = ev_gamepad; ev.data1 = gamepadbuttons; D_PostEvent(&ev); } #endif }