From ac6135387cf3a520851e4acc9d709c3c4ad6175c Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 13:37:16 -0700 Subject: [PATCH] display plugins are never head controllers --- interface/src/Application.cpp | 5 ----- interface/src/avatar/MySkeletonModel.cpp | 2 +- .../Basic2DWindowOpenGLDisplayPlugin.h | 2 -- .../display-plugins/hmd/DebugHmdDisplayPlugin.h | 2 -- .../src/display-plugins/hmd/HmdDisplayPlugin.h | 1 - .../stereo/InterleavedStereoDisplayPlugin.h | 2 -- .../stereo/SideBySideStereoDisplayPlugin.h | 2 -- libraries/plugins/src/plugins/DisplayPlugin.h | 1 - libraries/plugins/src/plugins/PluginUtils.cpp | 5 ----- plugins/oculus/src/OculusControllerManager.cpp | 14 ++++++++++++-- plugins/oculus/src/OculusControllerManager.h | 2 +- plugins/oculus/src/OculusDebugDisplayPlugin.h | 2 -- plugins/oculus/src/OculusDisplayPlugin.h | 2 -- plugins/openvr/src/OpenVrDisplayPlugin.h | 2 -- 14 files changed, 14 insertions(+), 30 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d34de2b0e..aee829b624 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4865,11 +4865,6 @@ bool Application::isHeadControllerEnabled() const { return true; } } - foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { - if (displayPlugin->isActive() && displayPlugin->isHeadController()) { - return true; - } - } return false; } diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 84e4a9ff83..3721eea569 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -59,7 +59,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } else { if (qApp->isHMDMode()) { // get HMD position from sensor space into world space, and back into rig space - glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); + glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame().getMatrix(); glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index 8dc1d83c1b..f3dd50602c 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -26,8 +26,6 @@ public: virtual bool isThrottled() const override; - virtual bool isHeadController() const override { return false; } - protected: mutable bool _isThrottled = false; diff --git a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h index a971c25bf6..55746e65eb 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h @@ -21,8 +21,6 @@ public: bool beginFrameRender(uint32_t frameIndex) override; float getTargetFrameRate() const override { return 90; } - virtual bool isHeadController() const override { return false; } - protected: void updatePresentPose() override; void hmdPresent() override {} diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index 7dfd0fed1e..aaa6e347e0 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -25,7 +25,6 @@ class HmdDisplayPlugin : public OpenGLDisplayPlugin { public: ~HmdDisplayPlugin(); bool isHmd() const override final { return true; } - bool isHeadController() const override = 0; float getIPD() const override final { return _ipd; } glm::mat4 getEyeToHeadTransform(Eye eye) const override final { return _eyeOffsets[eye]; } glm::mat4 getEyeProjection(Eye eye, const glm::mat4& baseProjection) const override final { return _eyeProjections[eye]; } diff --git a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h index 4834e6c542..debd340f24 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h @@ -17,8 +17,6 @@ public: grouping getGrouping() const override { return ADVANCED; } glm::uvec2 getRecommendedRenderSize() const override; - virtual bool isHeadController() const override { return false; } - protected: // initialize OpenGL context settings needed by the plugin void customizeContext() override; diff --git a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h index aa65fc37e3..79bf2a9ecb 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h @@ -19,8 +19,6 @@ public: virtual grouping getGrouping() const override { return ADVANCED; } virtual glm::uvec2 getRecommendedRenderSize() const override; - virtual bool isHeadController() const override { return false; } - private: static const QString NAME; }; diff --git a/libraries/plugins/src/plugins/DisplayPlugin.h b/libraries/plugins/src/plugins/DisplayPlugin.h index 549387b6a4..754c919fd4 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.h +++ b/libraries/plugins/src/plugins/DisplayPlugin.h @@ -135,7 +135,6 @@ public: virtual int getRequiredThreadCount() const { return 0; } virtual bool isHmd() const { return false; } - virtual bool isHeadController() const = 0; virtual int getHmdScreen() const { return -1; } /// By default, all HMDs are stereo virtual bool isStereo() const { return isHmd(); } diff --git a/libraries/plugins/src/plugins/PluginUtils.cpp b/libraries/plugins/src/plugins/PluginUtils.cpp index 4af77156e7..ce67f7c585 100644 --- a/libraries/plugins/src/plugins/PluginUtils.cpp +++ b/libraries/plugins/src/plugins/PluginUtils.cpp @@ -30,11 +30,6 @@ bool PluginUtils::isHeadControllerAvailable(const QString& pluginName) { return true; } } - for (auto& displayPlugin : PluginManager::getInstance()->getDisplayPlugins()) { - if (displayPlugin->isHeadController() && (pluginName.isEmpty() || displayPlugin->getName() == pluginName)) { - return true; - } - } return false; }; diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 0236ea1e62..60031a1179 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -210,10 +210,20 @@ void OculusControllerManager::RemoteDevice::focusOutEvent() { _buttonPressedMap.clear(); } +bool OculusControllerManager::isHeadController() const { + // this plugin is a head controller if the HMD is mounted. + ovrSessionStatus status; + + bool success = OVR_SUCCESS(ovr_GetSessionStatus(_session, &status)); + if (!success) { + return false; + } + return status.HmdMounted == ovrTrue; +} + void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { _buttonPressedMap.clear(); - ovrSessionStatus status; - if (!OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) || (ovrFalse == status.HmdMounted)) { + if (!_parent.isHeadController()) { // if the HMD isn't on someone's head, don't take input from the controllers return; } diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 61f2241f4d..54237645eb 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -28,7 +28,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return _touch != nullptr; } - bool isHeadController() const override { return true; } + bool isHeadController() const override; QStringList getSubdeviceNames() override; bool activate() override; diff --git a/plugins/oculus/src/OculusDebugDisplayPlugin.h b/plugins/oculus/src/OculusDebugDisplayPlugin.h index 1cc6bd0f8e..ec05cd92e2 100644 --- a/plugins/oculus/src/OculusDebugDisplayPlugin.h +++ b/plugins/oculus/src/OculusDebugDisplayPlugin.h @@ -15,8 +15,6 @@ public: grouping getGrouping() const override { return DEVELOPER; } bool isSupported() const override; - bool isHeadController() const override { return false; } - protected: void hmdPresent() override {} bool isHmdMounted() const override { return true; } diff --git a/plugins/oculus/src/OculusDisplayPlugin.h b/plugins/oculus/src/OculusDisplayPlugin.h index a4978a984e..9209fd373e 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.h +++ b/plugins/oculus/src/OculusDisplayPlugin.h @@ -24,8 +24,6 @@ public: virtual QJsonObject getHardwareStats() const; - bool isHeadController() const override { return true; } - protected: QThread::Priority getPresentPriority() override { return QThread::TimeCriticalPriority; } diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.h b/plugins/openvr/src/OpenVrDisplayPlugin.h index 9856c27c50..01e02c9892 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.h +++ b/plugins/openvr/src/OpenVrDisplayPlugin.h @@ -58,8 +58,6 @@ public: // Possibly needs an additional thread for VR submission int getRequiredThreadCount() const override; - bool isHeadController() const override { return true; } - protected: bool internalActivate() override; void internalDeactivate() override;