History

Enabling programmatic access to the IPD scale

Brad Davis committed 11 years ago

Commit 19fb4e91 parent 02bb37221 files · +270 −90Browse files

Showing the changes to interface/src/scripting/HMDScriptingInterface.cpp (1 of 21 files). Show all

Unified · Split

interface/src/scripting/HMDScriptingInterface.cpp+19−30
@@ -13,64 +13,53 @@ · 12 unmodified lines
13 13
14#include <QtScript/QScriptContext>14#include <QtScript/QScriptContext>
15 15
16#include "display-plugins/DisplayPlugin.h"
16#include <avatar/AvatarManager.h>17#include <avatar/AvatarManager.h>
17
18#include "Application.h"18#include "Application.h"
19#include "display-plugins/DisplayPlugin.h"
20 19
21HMDScriptingInterface& HMDScriptingInterface::getInstance() {20HMDScriptingInterface::HMDScriptingInterface() {
22 static HMDScriptingInterface sharedInstance;
23 return sharedInstance;
24}
25
26bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const {
27 Camera* camera = qApp->getCamera();
28 glm::vec3 position = camera->getPosition();
29 glm::quat orientation = camera->getOrientation();
30
31 glm::vec3 direction = orientation * glm::vec3(0.0f, 0.0f, -1.0f);
32
33 const auto& compositor = qApp->getApplicationCompositor();
34
35 return compositor.calculateRayUICollisionPoint(position, direction, result);
36}21}
37 22
38QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) {23QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) {
39
40 glm::vec3 hudIntersection;24 glm::vec3 hudIntersection;
41 25 auto instance = DependencyManager::get<HMDScriptingInterface>();
42 if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(hudIntersection)) {26 if (instance->getHUDLookAtPosition3D(hudIntersection)) {
43 MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();27 MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
44 glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition();28 glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition();
45 glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter);29 glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter);
46 glm::quat rotation = ::rotationBetween(glm::vec3(0.0f, 0.0f, -1.0f), direction);30 glm::quat rotation = ::rotationBetween(glm::vec3(0.0f, 0.0f, -1.0f), direction);
47 glm::vec3 eulers = ::safeEulerAngles(rotation);31 glm::vec3 eulers = ::safeEulerAngles(rotation);
48 return qScriptValueFromValue<glm::vec2>(engine, qApp->getApplicationCompositor()32 return qScriptValueFromValue<glm::vec2>(engine, Application::getInstance()->getApplicationCompositor()
49 .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));33 .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
50 }34 }
51 return QScriptValue::NullValue;35 return QScriptValue::NullValue;
52}36}
53 37
54QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* context, QScriptEngine* engine) {38QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* context, QScriptEngine* engine) {
55 glm::vec3 result;39 glm::vec3 result;
56 if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(result)) {40 auto instance = DependencyManager::get<HMDScriptingInterface>();
41 if (instance->getHUDLookAtPosition3D(result)) {
57 return qScriptValueFromValue<glm::vec3>(engine, result);42 return qScriptValueFromValue<glm::vec3>(engine, result);
58 }43 }
59 return QScriptValue::NullValue;44 return QScriptValue::NullValue;
60}45}
61 46
62float HMDScriptingInterface::getIPD() const {
63 return qApp->getActiveDisplayPlugin()->getIPD();
64}
65
66void HMDScriptingInterface::toggleMagnifier() {47void HMDScriptingInterface::toggleMagnifier() {
67 qApp->getApplicationCompositor().toggleMagnifier();48 qApp->getApplicationCompositor().toggleMagnifier();
68}49}
69 50
70bool HMDScriptingInterface::getMagnifier() const {51bool HMDScriptingInterface::getMagnifier() const {
71 return qApp->getApplicationCompositor().hasMagnifier();52 return Application::getInstance()->getApplicationCompositor().hasMagnifier();
72}53}
73 54
74bool HMDScriptingInterface::isHMDMode() const {55bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const {
75 return qApp->isHMDMode();56 Camera* camera = Application::getInstance()->getCamera();
57 glm::vec3 position = camera->getPosition();
58 glm::quat orientation = camera->getOrientation();
59
60 glm::vec3 direction = orientation * glm::vec3(0.0f, 0.0f, -1.0f);
61
62 const auto& compositor = Application::getInstance()->getApplicationCompositor();
63
64 return compositor.calculateRayUICollisionPoint(position, direction, result);
76}65}