diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index 4629ff5917..ca25f5f72a 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -58,16 +58,21 @@ float HMDScriptingInterface::getIPD() const { return Application::getInstance()->getActiveDisplayPlugin()->getIPD(); } +glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const { + MyAvatar* myAvatar = DependencyManager::get()->getMyAvatar(); + return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); +} + glm::vec3 HMDScriptingInterface::getPosition() const { if (Application::getInstance()->getActiveDisplayPlugin()->isHmd()) { - return glm::vec3(Application::getInstance()->getActiveDisplayPlugin()->getHeadPose()[3]); + return extractTranslation(getWorldHMDMatrix()); } return glm::vec3(); } glm::quat HMDScriptingInterface::getOrientation() const { if (Application::getInstance()->getActiveDisplayPlugin()->isHmd()) { - return glm::quat_cast(Application::getInstance()->getActiveDisplayPlugin()->getHeadPose()); + return glm::normalize(glm::quat_cast(getWorldHMDMatrix())); } return glm::quat(); } diff --git a/interface/src/scripting/HMDScriptingInterface.h b/interface/src/scripting/HMDScriptingInterface.h index 50944ab695..ac2ab0149e 100644 --- a/interface/src/scripting/HMDScriptingInterface.h +++ b/interface/src/scripting/HMDScriptingInterface.h @@ -46,6 +46,7 @@ private: bool getHUDLookAtPosition3D(glm::vec3& result) const; + glm::mat4 getWorldHMDMatrix() const; }; #endif // hifi_HMDScriptingInterface_h