From 03a47af628a02a7b27dd01543a5a2c44d77d3e4a Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 2 Aug 2016 15:38:04 -0700 Subject: [PATCH 1/3] if the HMD isn't on someone's head, don't take input from the controllers --- plugins/oculus/src/OculusControllerManager.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index b3b1b20b2b..1916326ad5 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -179,6 +179,13 @@ void OculusControllerManager::RemoteDevice::focusOutEvent() { } void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { + ovrSessionStatus status; + if (OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) && + (ovrFalse == status.HmdMounted)) { + // if the HMD isn't on someone's head, don't take input from the controllers + return; + } + _poseStateMap.clear(); _buttonPressedMap.clear(); From 8c43c122499bcdd1d22c660648b0908f06a876a8 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 2 Aug 2016 16:49:24 -0700 Subject: [PATCH 2/3] clear pose before short-circuiting update --- plugins/oculus/src/OculusControllerManager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 1916326ad5..e13637c435 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -179,6 +179,9 @@ void OculusControllerManager::RemoteDevice::focusOutEvent() { } void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { + _poseStateMap.clear(); + _buttonPressedMap.clear(); + ovrSessionStatus status; if (OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) && (ovrFalse == status.HmdMounted)) { @@ -186,9 +189,6 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control return; } - _poseStateMap.clear(); - _buttonPressedMap.clear(); - int numTrackedControllers = 0; static const auto REQUIRED_HAND_STATUS = ovrStatus_OrientationTracked & ovrStatus_PositionTracked; auto tracking = ovr_GetTrackingState(_parent._session, 0, false); From 8f76c43bc1187c08b56eee43f41bc28941f449de Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 2 Aug 2016 19:49:58 -0700 Subject: [PATCH 3/3] if call to ovr_GetSessionStatus fails, also don't take input from controllers --- plugins/oculus/src/OculusControllerManager.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index e13637c435..b3754805db 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -183,8 +183,7 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control _buttonPressedMap.clear(); ovrSessionStatus status; - if (OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) && - (ovrFalse == status.HmdMounted)) { + if (!OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) || (ovrFalse == status.HmdMounted)) { // if the HMD isn't on someone's head, don't take input from the controllers return; }