History

Enabling programmatic access to the IPD scale

Brad Davis committed 11 years ago

Commit 725ed261 parent a42bb5f21 files · +281 −81Browse files

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

Unified · Split

interface/src/scripting/HMDScriptingInterface.cpp+28−22
@@ -10,50 +10,56 @@ · 9 unmodified lines
1010 //
1111
1212 #include "HMDScriptingInterface.h"
13−#include "display-plugins/DisplayPlugin.h"
14−#include <avatar/AvatarManager.h>
15−
16−HMDScriptingInterface& HMDScriptingInterface::getInstance() {
17− static HMDScriptingInterface sharedInstance;
18− return sharedInstance;
19−}
2013
21−bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const {
22− Camera* camera = Application::getInstance()->getCamera();
23− glm::vec3 position = camera->getPosition();
24− glm::quat orientation = camera->getOrientation();
14+#include <QtScript/QScriptContext>
2515
26− glm::vec3 direction = orientation * glm::vec3(0.0f, 0.0f, -1.0f);
27−
28− const auto& compositor = Application::getInstance()->getApplicationCompositor();
16+#include "display-plugins/DisplayPlugin.h"
17+#include <avatar/AvatarManager.h>
18+#include "Application.h"
2919
30− return compositor.calculateRayUICollisionPoint(position, direction, result);
20+HMDScriptingInterface::HMDScriptingInterface() {
3121 }
3222
3323 QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) {
34−
3524 glm::vec3 hudIntersection;
36−
37− if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(hudIntersection)) {
25+ auto instance = DependencyManager::get<HMDScriptingInterface>();
26+ if (instance->getHUDLookAtPosition3D(hudIntersection)) {
3827 MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
3928 glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition();
4029 glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter);
4130 glm::quat rotation = ::rotationBetween(glm::vec3(0.0f, 0.0f, -1.0f), direction);
4231 glm::vec3 eulers = ::safeEulerAngles(rotation);
4332 return qScriptValueFromValue<glm::vec2>(engine, Application::getInstance()->getApplicationCompositor()
44− .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
33+ .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
4534 }
4635 return QScriptValue::NullValue;
4736 }
4837
4938 QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* context, QScriptEngine* engine) {
5039 glm::vec3 result;
51− if ((&HMDScriptingInterface::getInstance())->getHUDLookAtPosition3D(result)) {
40+ auto instance = DependencyManager::get<HMDScriptingInterface>();
41+ if (instance->getHUDLookAtPosition3D(result)) {
5242 return qScriptValueFromValue<glm::vec3>(engine, result);
5343 }
5444 return QScriptValue::NullValue;
5545 }
5646
57−float HMDScriptingInterface::getIPD() const {
58− return Application::getInstance()->getActiveDisplayPlugin()->getIPD();
47+void HMDScriptingInterface::toggleMagnifier() {
48+ qApp->getApplicationCompositor().toggleMagnifier();
49+}
50+
51+bool HMDScriptingInterface::getMagnifier() const {
52+ return Application::getInstance()->getApplicationCompositor().hasMagnifier();
53+}
54+
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);
5965 }