From 8befade007bd18c47db4ee3487e6828fe6f0bd88 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sun, 4 Oct 2015 15:08:35 +0200 Subject: [PATCH] expose position and orientation of HMD to Javascript. - HMD.orientation - HMD.position --- interface/src/scripting/HMDScriptingInterface.cpp | 14 ++++++++++++++ interface/src/scripting/HMDScriptingInterface.h | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index 68ac511eaf..4629ff5917 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -57,3 +57,17 @@ QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* conte float HMDScriptingInterface::getIPD() const { return Application::getInstance()->getActiveDisplayPlugin()->getIPD(); } + +glm::vec3 HMDScriptingInterface::getPosition() const { + if (Application::getInstance()->getActiveDisplayPlugin()->isHmd()) { + return glm::vec3(Application::getInstance()->getActiveDisplayPlugin()->getHeadPose()[3]); + } + return glm::vec3(); +} + +glm::quat HMDScriptingInterface::getOrientation() const { + if (Application::getInstance()->getActiveDisplayPlugin()->isHmd()) { + return glm::quat_cast(Application::getInstance()->getActiveDisplayPlugin()->getHeadPose()); + } + return glm::quat(); +} diff --git a/interface/src/scripting/HMDScriptingInterface.h b/interface/src/scripting/HMDScriptingInterface.h index 82b444abaa..1ac524d7f1 100644 --- a/interface/src/scripting/HMDScriptingInterface.h +++ b/interface/src/scripting/HMDScriptingInterface.h @@ -20,6 +20,8 @@ class HMDScriptingInterface : public QObject { Q_OBJECT Q_PROPERTY(bool magnifier READ getMagnifier) Q_PROPERTY(bool active READ isHMDMode) + Q_PROPERTY(glm::vec3 position READ getPosition) + Q_PROPERTY(glm::quat orientation READ getOrientation) Q_PROPERTY(float ipd READ getIPD) public: static HMDScriptingInterface& getInstance(); @@ -36,6 +38,12 @@ private: bool isHMDMode() const { return Application::getInstance()->isHMDMode(); } float getIPD() const; + // Get the position of the HMD + glm::vec3 getPosition() const; + + // Get the orientation of the HMD + glm::quat getOrientation() const; + bool getHUDLookAtPosition3D(glm::vec3& result) const; };