Skip to content

Commit

Permalink
Gyro improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
XITRIX committed Apr 20, 2024
1 parent 7e00f6d commit 9d56afa
Showing 1 changed file with 25 additions and 16 deletions.
41 changes: 25 additions & 16 deletions app/src/streaming/InputManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
using namespace brls;

MoonlightInputManager::MoonlightInputManager() {
brls::Application::getPlatform()
->getInputManager()
auto inputManager = brls::Application::getPlatform()->getInputManager();

inputManager
->getMouseCusorOffsetChanged()
->subscribe([this](brls::Point offset) {
if (offset.x != 0 || offset.y != 0) {
Expand All @@ -29,8 +30,7 @@ MoonlightInputManager::MoonlightInputManager() {
}
});

brls::Application::getPlatform()
->getInputManager()
inputManager
->getMouseScrollOffsetChanged()
->subscribe([](brls::Point scroll) {
if (scroll.x != 0) {
Expand All @@ -43,8 +43,7 @@ MoonlightInputManager::MoonlightInputManager() {
}
});

brls::Application::getPlatform()
->getInputManager()
inputManager
->getKeyboardKeyStateChanged()
->subscribe([](brls::KeyState state) {
int vkKey = MoonlightInputManager::glfwKeyToVKKey(state.key);
Expand All @@ -54,16 +53,19 @@ MoonlightInputManager::MoonlightInputManager() {
modifiers);
});

brls::Application::getPlatform()
->getInputManager()
inputManager
->getControllerSensorStateChanged()
->subscribe([this](brls::SensorEvent event) {
switch (event.type) {
case brls::SensorEventType::ACCEL:
LiSendControllerMotionEvent((uint8_t)event.controllerIndex, LI_MOTION_TYPE_ACCEL, event.data[0], event.data[1], event.data[2]);
break;
case brls::SensorEventType::GYRO:
LiSendControllerMotionEvent((uint8_t)event.controllerIndex, LI_MOTION_TYPE_GYRO, event.data[0], event.data[1], event.data[2]);
// Convert rad/s to deg/s
LiSendControllerMotionEvent((uint8_t)event.controllerIndex, LI_MOTION_TYPE_GYRO,
event.data[0] * 57.2957795f,
event.data[1] * 57.2957795f,
event.data[2] * 57.2957795f);
break;
}
});
Expand Down Expand Up @@ -127,10 +129,11 @@ void MoonlightInputManager::dropInput() {
bool res = true;
// Drop gamepad state
GamepadState gamepadState;
for (short i = 0; i < brls::Application::getPlatform()
auto controllersCount = brls::Application::getPlatform()
->getInputManager()
->getControllersConnectedCount();
i++) {

for (short i = 0; i < controllersCount; i++) {
res &= LiSendMultiControllerEvent(
i, controllersToMap(), gamepadState.buttonFlags,
gamepadState.leftTrigger, gamepadState.rightTrigger,
Expand Down Expand Up @@ -242,18 +245,24 @@ GamepadState MoonlightInputManager::getControllerState(int controllerNum,
}

void MoonlightInputManager::handleControllers(bool specialKey) {
for (int i = 0; i < brls::Application::getPlatform()
static int lastControllerCount = 0;

auto controllersCount = brls::Application::getPlatform()
->getInputManager()
->getControllersConnectedCount();
i++) {
GamepadState gamepadState = getControllerState(i, specialKey);

short controllersCount = controllersToMap();
short mappedControllersCount = controllersToMap();

for (int i = 0; i < controllersCount; i++) {
GamepadState gamepadState = getControllerState(i, specialKey);

if (!gamepadState.is_equal(lastGamepadStates[i])) {
lastGamepadStates[i] = gamepadState;

LiSendControllerArrivalEvent(i, mappedControllersCount, LI_CTYPE_UNKNOWN, 0, LI_CCAP_RUMBLE | LI_CCAP_ACCEL | LI_CCAP_GYRO);

if (LiSendMultiControllerEvent(
i, controllersCount, gamepadState.buttonFlags,
i, mappedControllersCount, gamepadState.buttonFlags,
gamepadState.leftTrigger, gamepadState.rightTrigger,
gamepadState.leftStickX, gamepadState.leftStickY,
gamepadState.rightStickX, gamepadState.rightStickY) != 0)
Expand Down

0 comments on commit 9d56afa

Please sign in to comment.