예제 #1
0
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
}
예제 #2
0
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
}