diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 0a43a62fc7..be58ec2654 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -48,7 +48,6 @@ namespace MWInput const std::string& userFile, bool userFileExists, const std::string& userControllerBindingsFile, const std::string& controllerBindingsFile, bool grab) : mGrabCursor(Settings::Manager::getBool("grab cursor", "Input")) - , mGuiCursorEnabled(true) { mInputWrapper = new SDLUtil::InputWrapper(window, viewer, grab); mInputWrapper->setWindowEventCallback(MWBase::Environment::get().getWindowManager()); @@ -144,7 +143,7 @@ namespace MWInput bool controllerMove = mControllerManager->update(dt, disableControls); mMouseManager->update(dt, disableControls); - mSensorManager->update(dt, mGuiCursorEnabled); + mSensorManager->update(dt); mActionManager->update(dt, controllerMove); } @@ -160,10 +159,10 @@ namespace MWInput void InputManager::changeInputMode(bool guiMode) { - mGuiCursorEnabled = guiMode; - mControllerManager->setGuiCursorEnabled(mGuiCursorEnabled); - mMouseManager->setGuiCursorEnabled(mGuiCursorEnabled); - mMouseManager->setMouseLookEnabled(!mGuiCursorEnabled); + mControllerManager->setGuiCursorEnabled(guiMode); + mMouseManager->setGuiCursorEnabled(guiMode); + mSensorManager->setGuiCursorEnabled(guiMode); + mMouseManager->setMouseLookEnabled(!guiMode); if (guiMode) MWBase::Environment::get().getWindowManager()->showCrosshair(false); MWBase::Environment::get().getWindowManager()->setCursorVisible(guiMode && (!mControllerManager->joystickLastUsed() || mControllerManager->gamepadGuiCursorEnabled())); diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index 8e8096d924..f7e732d998 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -111,8 +111,6 @@ namespace MWInput bool mGrabCursor; - bool mGuiCursorEnabled; - ControlSwitch* mControlSwitch; ActionManager* mActionManager; diff --git a/apps/openmw/mwinput/sensormanager.cpp b/apps/openmw/mwinput/sensormanager.cpp index f78607fa21..02669798ca 100644 --- a/apps/openmw/mwinput/sensormanager.cpp +++ b/apps/openmw/mwinput/sensormanager.cpp @@ -22,6 +22,7 @@ namespace MWInput , mGyroVAxis(GyroscopeAxis::Y) , mGyroInputThreshold(Settings::Manager::getFloat("gyro input threshold", "Input")) , mGyroscope(nullptr) + , mGuiCursorEnabled(true) { init(); } @@ -235,7 +236,7 @@ namespace MWInput } } - void SensorManager::update(float dt, bool isCursorEnabled) + void SensorManager::update(float dt) { if (mGyroXSpeed == 0.f && mGyroYSpeed == 0.f) return; @@ -252,7 +253,7 @@ namespace MWInput mGyroUpdateTimer += dt; - if (!isCursorEnabled) + if (!mGuiCursorEnabled) { float rot[3]; rot[0] = mGyroYSpeed * dt * mGyroVSensitivity * 4 * (mInvertY ? -1 : 1); diff --git a/apps/openmw/mwinput/sensormanager.hpp b/apps/openmw/mwinput/sensormanager.hpp index 283a53c1f5..9b24328f73 100644 --- a/apps/openmw/mwinput/sensormanager.hpp +++ b/apps/openmw/mwinput/sensormanager.hpp @@ -29,12 +29,14 @@ namespace MWInput void clear(); - void update(float dt, bool isCursorEnabled); + void update(float dt); virtual void sensorUpdated(const SDL_SensorEvent &arg); virtual void displayOrientationChanged(); void processChangedSettings(const Settings::CategorySettingVector& changed); + void setGuiCursorEnabled(bool enabled) { mGuiCursorEnabled = enabled; } + private: enum GyroscopeAxis { @@ -66,6 +68,8 @@ namespace MWInput float mGyroInputThreshold; SDL_Sensor* mGyroscope; + + bool mGuiCursorEnabled; }; } #endif