History

Merge branch 'master' of https://github.com/worklist/hifi into js-hmd-position-orientation

Thijs Wenker committed 11 years ago

Commit 4ab5e0a2 parents 6e52fcb 05fd62a49 files · +1503 −1195Browse files

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

Unified · Split

interface/src/scripting/HMDScriptingInterface.cpp+17−28
@@ -13,56 +13,37 @@ · 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"
20−
21−HMDScriptingInterface& HMDScriptingInterface::getInstance() {
22− static HMDScriptingInterface sharedInstance;
23− return sharedInstance;
24−}
2519
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);
4832 return qScriptValueFromValue<glm::vec2>(engine, qApp->getApplicationCompositor()
49− .sphericalToOverlay(glm::vec2(eulers.y, -eulers.x)));
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 }
@@ -71,8 +52,16 @@ bool HMDScriptingInterface::getMagnifier() const { · 2 unmodified lines
7152 return qApp->getApplicationCompositor().hasMagnifier();
7253 }
7354
74−bool HMDScriptingInterface::isHMDMode() const {
75− return qApp->isHMDMode();
55+bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const {
56+ Camera* camera = qApp->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 = qApp->getApplicationCompositor();
63+
64+ return compositor.calculateRayUICollisionPoint(position, direction, result);
7665 }
7766
7867 glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const {