From 0b7ddd05d19fa320b25ad0f5c968852dc416583d Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Wed, 28 Jun 2023 22:52:09 +1000 Subject: Add extremely basic controller support (only movement) --- source/client/StarClientApplication.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/client/StarClientApplication.cpp') 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()) { + 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(); -- cgit v1.2.3