Ошибка существует после запуска prelaunchtask < /p>
< /blockquote>
Когда я нажимаю «DEBUG В любом случае» говорит: < /p>
Мемон: программа 'c: /c ++ \ gamepad.exe' не существует »< /p>
< /blockquote>
(см. Pictures) < /p>
xinput 1.4: xinput 1.4. Суды как часть Windows 10, используйте эту версию для создания приложений UWP. < /p>
< /blockquote>
У меня есть ОС Windows 114-бита, так что я думаю, что я не могу использовать библиотеку Xinput? 'm неправильно.
gamepad.cpp < /p>
Код: Выделить всё
#include "Gamepad.h"
#include
#include
float normalize(float input, float min, float max);
Gamepad::Gamepad(UINT id) : controllerID(id),
deadzoneX(XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE),
deadzoneY(XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE)
{
ZeroMemory(&state, sizeof(XINPUT_STATE));
ZeroMemory(&vibration, sizeof(XINPUT_VIBRATION));
}
Gamepad::Gamepad(UINT id, float deadzoneX, float deadzoneY)
: deadzoneX(deadzoneX), deadzoneY(deadzoneY)
{
ZeroMemory(&state, sizeof(XINPUT_STATE));
ZeroMemory(&vibration, sizeof(XINPUT_VIBRATION));
}
UINT Gamepad::getControllerID() const
{
return controllerID;
}
XINPUT_GAMEPAD* Gamepad::getGamepad()
{
return &state.Gamepad;
}
/*XINPUT_BATTERY_INFORMATION* Gamepad::getBatteryInfo()
{
XInputGetBatteryInformation(controllerID, XINPUT_DEVTYPE_GAMEPAD, &battery);
return &battery;
}*/
bool Gamepad::isConnected()
{
if (XInputGetState(controllerID - 1, &state) == ERROR_SUCCESS)
{
return true;
}
else
{
return false;
}
}
float normalize(float input, float min, float max)
{
float average = (min + max) / 2;
float range = (max - min) / 2;
return (input - average) / range;
}
float Gamepad::ApplyDeadzone(float value, float maxValue, float deadzone)
{
if (value < -deadzone)
{
value += deadzone; //increase neg vals to remove deadzone discontinuity
}
else if (value > deadzone)
{
value -= deadzone; //decrease pos vals to remove deadzone discontinuity
}
else
{
return 0; //hey values are zero for once
}
float normValue = (float)value / (float)(maxValue - deadzone);
return std::max(-1.0f, std::min(normValue, 1.0f));
}
bool Gamepad::Update()
{
if (!isConnected())
return false;
float normLX = normalize(static_cast(state.Gamepad.sThumbLX), -32767, 32767);
float normLY = normalize(static_cast(state.Gamepad.sThumbLY), -32767, 32767);
float normRX = normalize(static_cast(state.Gamepad.sThumbRX), -32767, 32767);
float normRY = normalize(static_cast(state.Gamepad.sThumbRY), -32767, 32767);
if (deadzoneX
Подробнее здесь: [url]https://stackoverflow.com/questions/79439429/how-do-i-get-the-gamepad-application-to-be-executed[/url]