示例#1
0
文件: angle.cpp 项目: svkaiser/dlight
kexVec3 kexAngle::ToRightAxis(void)
{
    kexVec3 vec;

    ToAxis(NULL, NULL, &vec);
    return vec;
}
示例#2
0
文件: angle.cpp 项目: svkaiser/dlight
kexVec3 kexAngle::ToForwardAxis(void)
{
    kexVec3 vec;

    ToAxis(&vec, NULL, NULL);
    return vec;
}
示例#3
0
文件: angle.cpp 项目: svkaiser/dlight
kexVec3 kexAngle::ToUpAxis(void)
{
    kexVec3 vec;

    ToAxis(NULL, &vec, NULL);
    return vec;
}
示例#4
0
void CBTConnection::XInputMapState(DWORD Pad, UCHAR* Report, UCHAR Model)
{
    m_padState[Pad].Gamepad.wButtons = 0;

    if (Model == 1)	// DS3
    {
        DWORD Buttons = Report[2] << 0 | Report[3] << 8 | Report[4] << 16 | Report[5] << 24;

        if (Buttons & (0x1 <<  0)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_BACK;
        if (Buttons & (0x1 <<  1)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_LEFT_THUMB;
        if (Buttons & (0x1 <<  2)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_RIGHT_THUMB;
        if (Buttons & (0x1 <<  3)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_START;

        if (Buttons & (0x1 <<  4)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_UP;
        if (Buttons & (0x1 <<  5)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_RIGHT;
        if (Buttons & (0x1 <<  6)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_DOWN;
        if (Buttons & (0x1 <<  7)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_LEFT;

        if (Buttons & (0x1 << 10)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_LEFT_SHOULDER;
        if (Buttons & (0x1 << 11)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_RIGHT_SHOULDER;

        if (Buttons & (0x1 << 12)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_Y;
        if (Buttons & (0x1 << 13)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_B;
        if (Buttons & (0x1 << 14)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_A;
        if (Buttons & (0x1 << 15)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_X;

        if (Buttons & (0x1 << 16)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_GUIDE;

        m_padState[Pad].Gamepad.sThumbRY = -Scale((SHORT) Report[9]);
        m_padState[Pad].Gamepad.sThumbRX =  Scale((SHORT) Report[8]);
        m_padState[Pad].Gamepad.sThumbLY = -Scale((SHORT) Report[7]);
        m_padState[Pad].Gamepad.sThumbLX =  Scale((SHORT) Report[6]);

        // Remap for Triggers - Not Unpacked as Axis by UnpackReport
        m_padState[Pad].Gamepad.bLeftTrigger  = Report[18];
        m_padState[Pad].Gamepad.bRightTrigger = Report[19];

        // Convert for Extension
        m_Extended[Pad].SCP_UP     = ToPressure(Report[14]);
        m_Extended[Pad].SCP_RIGHT  = ToPressure(Report[15]);
        m_Extended[Pad].SCP_DOWN   = ToPressure(Report[16]);
        m_Extended[Pad].SCP_LEFT   = ToPressure(Report[17]);

        m_Extended[Pad].SCP_LX     = ToAxis(m_padState[Pad].Gamepad.sThumbLX);
        m_Extended[Pad].SCP_LY     = ToAxis(m_padState[Pad].Gamepad.sThumbLY);

        m_Extended[Pad].SCP_L1     = ToPressure(Report[20]);
        m_Extended[Pad].SCP_L2     = ToPressure(Report[18]);
        m_Extended[Pad].SCP_L3     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_RX     = ToAxis(m_padState[Pad].Gamepad.sThumbRX);
        m_Extended[Pad].SCP_RY     = ToAxis(m_padState[Pad].Gamepad.sThumbRY);

        m_Extended[Pad].SCP_R1     = ToPressure(Report[21]);
        m_Extended[Pad].SCP_R2     = ToPressure(Report[19]);
        m_Extended[Pad].SCP_R3     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_T      = ToPressure(Report[22]);
        m_Extended[Pad].SCP_C      = ToPressure(Report[23]);
        m_Extended[Pad].SCP_X      = ToPressure(Report[24]);
        m_Extended[Pad].SCP_S      = ToPressure(Report[25]);

        m_Extended[Pad].SCP_SELECT = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_BACK        ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_START  = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_START       ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_PS     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_GUIDE       ? 1.0f : 0.0f;
    }

    if (Model == 2)  // DS4
    {
        DWORD Buttons = Report[5] << 0 | Report[6] << 8 | Report[7] << 16;

        if (Buttons & (0x1 << 12)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_BACK;
        if (Buttons & (0x1 << 14)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_LEFT_THUMB;
        if (Buttons & (0x1 << 15)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_RIGHT_THUMB;
        if (Buttons & (0x1 << 13)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_START;

        if (Buttons & (0x1 <<  0)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_UP;
        if (Buttons & (0x1 <<  1)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_RIGHT;
        if (Buttons & (0x1 <<  2)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_DOWN;
        if (Buttons & (0x1 <<  3)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_DPAD_LEFT;

        if (Buttons & (0x1 <<  8)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_LEFT_SHOULDER;
        if (Buttons & (0x1 <<  9)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_RIGHT_SHOULDER;

        if (Buttons & (0x1 <<  7)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_Y;
        if (Buttons & (0x1 <<  6)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_B;
        if (Buttons & (0x1 <<  5)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_A;
        if (Buttons & (0x1 <<  4)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_X;

        if (Buttons & (0x1 << 16)) m_padState[Pad].Gamepad.wButtons |= XINPUT_GAMEPAD_GUIDE;

        m_padState[Pad].Gamepad.sThumbRY = -Scale((SHORT) Report[4]);
        m_padState[Pad].Gamepad.sThumbRX =  Scale((SHORT) Report[3]);
        m_padState[Pad].Gamepad.sThumbLY = -Scale((SHORT) Report[2]);
        m_padState[Pad].Gamepad.sThumbLX =  Scale((SHORT) Report[1]);

        // Remap for Triggers
        m_padState[Pad].Gamepad.bLeftTrigger  = Report[8];
        m_padState[Pad].Gamepad.bRightTrigger = Report[9];

        // Convert for Extension
        m_Extended[Pad].SCP_UP     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP        ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_RIGHT  = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT     ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_DOWN   = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN      ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_LEFT   = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT      ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_LX     = ToAxis(m_padState[Pad].Gamepad.sThumbLX);
        m_Extended[Pad].SCP_LY     = ToAxis(m_padState[Pad].Gamepad.sThumbLY);

        m_Extended[Pad].SCP_L1     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER  ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_L2     = ToPressure(Report[8]);
        m_Extended[Pad].SCP_L3     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB     ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_RX     = ToAxis(m_padState[Pad].Gamepad.sThumbRX);
        m_Extended[Pad].SCP_RY     = ToAxis(m_padState[Pad].Gamepad.sThumbRY);

        m_Extended[Pad].SCP_R1     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_R2     = ToPressure(Report[9]);
        m_Extended[Pad].SCP_R3     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB    ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_T      = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_Y              ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_C      = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_B              ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_X      = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_A              ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_S      = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_X              ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_SELECT = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_BACK           ? 1.0f : 0.0f;
        m_Extended[Pad].SCP_START  = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_START          ? 1.0f : 0.0f;

        m_Extended[Pad].SCP_PS     = m_padState[Pad].Gamepad.wButtons & XINPUT_GAMEPAD_GUIDE          ? 1.0f : 0.0f;
    }
}