diff options
Diffstat (limited to 'source/client')
-rw-r--r-- | source/client/StarClientApplication.cpp | 15 | ||||
-rw-r--r-- | source/client/StarClientApplication.hpp | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index 304fe61..fa8d97b 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -273,6 +273,16 @@ void ClientApplication::processInput(InputEvent const& event) { return KeyDownEvent{keyEvent.key, keyEvent.mods & ~*modKey}; }); } + else if (auto cAxis = event.ptr<ControllerAxisEvent>()) { + if (cAxis->controllerAxis == ControllerAxis::LeftX) + m_controllerLeftStick[0] = cAxis->controllerAxisValue; + else if (cAxis->controllerAxis == ControllerAxis::LeftY) + m_controllerLeftStick[1] = cAxis->controllerAxisValue; + else if (cAxis->controllerAxis == ControllerAxis::RightX) + m_controllerRightStick[0] = cAxis->controllerAxisValue; + else if (cAxis->controllerAxis == ControllerAxis::RightY) + m_controllerRightStick[1] = cAxis->controllerAxisValue; + } if (!m_errorScreen->accepted() && m_errorScreen->handleInputEvent(event)) return; @@ -755,6 +765,11 @@ void ClientApplication::updateRunning() { m_player->addEmote(HumanoidEmote::Sleep); } + if (m_controllerLeftStick.magnitudeSquared() > 0.001f) + m_player->setMoveVector(m_controllerLeftStick); + else + m_player->setMoveVector(Vec2F()); + auto checkDisconnection = [this]() { if (!m_universeClient->isConnected()) { m_cinematicOverlay->stop(); diff --git a/source/client/StarClientApplication.hpp b/source/client/StarClientApplication.hpp index 89f6a61..5e577e8 100644 --- a/source/client/StarClientApplication.hpp +++ b/source/client/StarClientApplication.hpp @@ -105,6 +105,8 @@ private: int m_maxInterfaceScale = 3; Vec2F m_crossoverRes; + Vec2F m_controllerLeftStick; + Vec2F m_controllerRightStick; List<KeyDownEvent> m_heldKeyEvents; List<KeyDownEvent> m_edgeKeyEvents; |