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
1313
1414 #include <QtScript/QScriptContext>
1515
16+#include "display-plugins/DisplayPlugin.h"
1617 #include <avatar/AvatarManager.h>
17−
1818 #include "Application.h"
19−#include "display-plugins/DisplayPlugin.h"
2019
21−HMDScriptingInterface& HMDScriptingInterface::getInstance() {
22− static HMDScriptingInterface sharedInstance;
23− return sharedInstance;
24−}
25−
26−bool 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);
20+HMDScriptingInterface::HMDScriptingInterface() {
3621 }
3722
3823 QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) {
39−
4024 glm::vec3 hudIntersection;
41−
42− if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(hudIntersection)) {
25+ auto instance = DependencyManager::get<HMDScriptingInterface>();
26+ if (instance->getHUDLookAtPosition3D(hudIntersection)) {
4327 MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
4428 glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition();
4529 glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter);
4630 glm::quat rotation = ::rotationBetween(glm::vec3(0.0f, 0.0f, -1.0f), direction);
4731 glm::vec3 eulers = ::safeEulerAngles(rotation);
48− return qScriptValueFromValue<glm::vec2>(engine, qApp->getApplicationCompositor()
49− .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
32+ return qScriptValueFromValue<glm::vec2>(engine, Application::getInstance()->getApplicationCompositor()
33+ .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
5034 }
5135 return QScriptValue::NullValue;
5236 }
5337
5438 QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* context, QScriptEngine* engine) {
5539 glm::vec3 result;
56− if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(result)) {
40+ auto instance = DependencyManager::get<HMDScriptingInterface>();
41+ if (instance->getHUDLookAtPosition3D(result)) {
5742 return qScriptValueFromValue<glm::vec3>(engine, result);
5843 }
5944 return QScriptValue::NullValue;
6045 }
6146
62−float HMDScriptingInterface::getIPD() const {
63− return qApp->getActiveDisplayPlugin()->getIPD();
64−}
65−
6647 void HMDScriptingInterface::toggleMagnifier() {
6748 qApp->getApplicationCompositor().toggleMagnifier();
6849 }
6950
7051 bool HMDScriptingInterface::getMagnifier() const {
71− return qApp->getApplicationCompositor().hasMagnifier();
52+ return Application::getInstance()->getApplicationCompositor().hasMagnifier();
7253 }
7354
74−bool HMDScriptingInterface::isHMDMode() const {
75− return qApp->isHMDMode();
55+bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const {
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);
7665 }