diff --git a/apps/openmw/mwvr/openxrinputmanager.cpp b/apps/openmw/mwvr/openxrinputmanager.cpp index 5f366f7bb..521220b71 100644 --- a/apps/openmw/mwvr/openxrinputmanager.cpp +++ b/apps/openmw/mwvr/openxrinputmanager.cpp @@ -292,7 +292,7 @@ struct OpenXRInput { A_XrFirst = MWInput::A_Last, A_ActivateTouch, - A_RepositionMenu, + A_Recenter, A_XrLast }; @@ -550,7 +550,7 @@ OpenXRInput::OpenXRInput() , mBPath(generateControllerActionPaths("/input/b/click")) , mTriggerValuePath(generateControllerActionPaths("/input/trigger/value")) , mGameMenu(std::move(createMWAction(MWInput::A_GameMenu, "game_menu", "Game Menu", { }))) - , mRepositionMenu(std::move(createMWAction(A_RepositionMenu, "reposition_menu", "Reposition Menu", { }))) + , mRepositionMenu(std::move(createMWAction(A_Recenter, "reposition_menu", "Reposition Menu", { }))) , mInventory(std::move(createMWAction(MWInput::A_Inventory, "inventory", "Inventory", { }))) , mActivate(std::move(createMWAction(MWInput::A_Activate, "activate", "Activate", { }))) , mUse(std::move(createMWAction(MWInput::A_Use, "use", "Use", { }))) @@ -652,8 +652,8 @@ OpenXRInput::OpenXRInput() Long: Journal Menu: - Press: GameMenun - Long: Reposition GUI + Press: GameMenu + Long: Recenter on player and reset GUI */ @@ -1199,8 +1199,10 @@ private: case MWInput::A_Jump: mActionManager->setAttemptJump(true); break; - case OpenXRInput::A_RepositionMenu: + case OpenXRInput::A_Recenter: xrGUIManager->updateTracking(); + if(!MWBase::Environment::get().getWindowManager()->isGuiMode()) + mShouldRecenter = true; break; case MWInput::A_Use: if (mActivationIndication || MWBase::Environment::get().getWindowManager()->isGuiMode()) @@ -1242,12 +1244,12 @@ private: osg::Quat gameworldYaw = osg::Quat(mYaw, osg::Vec3(0, 0, -1)); mHeadOffset += gameworldYaw * vrMovement; - if (mRecenter) + if (mShouldRecenter) { mHeadOffset = osg::Vec3(0, 0, 0); // Z should not be affected mHeadOffset.z() = mHeadPose.position.z(); - mRecenter = false; + mShouldRecenter = false; } else { diff --git a/apps/openmw/mwvr/openxrinputmanager.hpp b/apps/openmw/mwvr/openxrinputmanager.hpp index 4fc76f7cd..9e1ce093e 100644 --- a/apps/openmw/mwvr/openxrinputmanager.hpp +++ b/apps/openmw/mwvr/openxrinputmanager.hpp @@ -57,7 +57,7 @@ namespace MWVR std::unique_ptr mRealisticCombat; Pose mHeadPose{}; osg::Vec3 mHeadOffset{ 0,0,0 }; - bool mRecenter{ true }; + bool mShouldRecenter{ true }; bool mActivationIndication{ false }; float mYaw{ 0.f };