Пример #1
0
void shutdown()
{
	for (u32 i = 0; i < MaximumControllers; i++)
	{
		if (isControllerPresent(i))
			setControllerVibration(i, 0);
	}

	for (auto& gamepad : g_controllerHandles)
	{
		if (gamepad)
			SDL_GameControllerClose(gamepad);
	}

	for (auto& rumble : g_rumbleHandles)
	{
		if (rumble)
			SDL_HapticClose(rumble);
	}
}
Пример #2
0
    float Controller::getAxisOffset(const int index, const int axis)
    {
        if (isControllerPresent(index))
        {
        #if defined(JOP_OS_DESKTOP)

            int count = 0;
            const float* axes = glfwGetJoystickAxes(index, &count);

            switch (axis)
            {
                case XBox::Axis::LeftStickX:
                    return axes[0];

                case XBox::Axis::LeftStickY:
                    return axes[1];

                case XBox::Axis::RightStickX:
                    return axes[2];

                case XBox::Axis::RightStickY:
                    return axes[3];

                case XBox::Axis::LTrigger:
                {
                    if (count >= 5)
                        return ((axes[4] + 1.f) / 2.f);

                    break;
                }
                case XBox::Axis::RTrigger:
                {
                    if (count >= 6)
                        return ((axes[5] + 1.f) / 2.f);
                }
            }

        #elif defined(JOP_OS_ANDROID)

            auto state = detail::ActivityState::get();

            switch (axis)
            {
                case XBox::Axis::LeftStickX:
                    return state->activeAxes[0];

                case XBox::Axis::LeftStickY:
                    return state->activeAxes[1];

                case XBox::Axis::RightStickX:
                    return state->activeAxes[2];

                case XBox::Axis::RightStickY:
                    return state->activeAxes[3];

                case XBox::Axis::LTrigger:
                    return state->activeAxes[4];

                case XBox::Axis::RTrigger:
                    return state->activeAxes[5];
            }

        #endif
        }

        return 0.f;
    }