History

improvements in HMD UI behavior

Brad Hefta-Gaub committed 10 years ago

Commit 1160ecb1 parent 31f9da28 files · +119 −36Browse files

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

Unified · Split

interface/src/scripting/HMDScriptingInterface.cpp+29−5
@@ -20,15 +20,39 @@ · 19 unmodified lines
2020 HMDScriptingInterface::HMDScriptingInterface() {
2121 }
2222
23+glm::vec3 HMDScriptingInterface::calculateRayUICollisionPoint(const glm::vec3& position, const glm::vec3& direction) const {
24+ glm::vec3 result { position };
25+ qApp->getApplicationCompositor().calculateRayUICollisionPoint(position, direction, result);
26+ return result;
27+}
28+
29+glm::vec2 HMDScriptingInterface::overlayFromWorldPoint(const glm::vec3& position) const {
30+ return qApp->getApplicationCompositor().overlayFromSphereSurface(position);
31+}
32+
33+glm::vec2 HMDScriptingInterface::sphericalToOverlay(const glm::vec2 & position) const {
34+ return qApp->getApplicationCompositor().sphericalToOverlay(position);
35+}
36+
37+glm::vec2 HMDScriptingInterface::overlayToSpherical(const glm::vec2 & position) const {
38+ return qApp->getApplicationCompositor().overlayToSpherical(position);
39+}
40+
41+glm::vec2 HMDScriptingInterface::screenToOverlay(const glm::vec2 & position) const {
42+ return qApp->getApplicationCompositor().screenToOverlay(position);
43+}
44+
45+glm::vec2 HMDScriptingInterface::overlayToScreen(const glm::vec2 & position) const {
46+ return qApp->getApplicationCompositor().overlayToScreen(position);
47+}
48+
49+
50+
2351 QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) {
2452 glm::vec3 hudIntersection;
2553 auto instance = DependencyManager::get<HMDScriptingInterface>();
2654 if (instance->getHUDLookAtPosition3D(hudIntersection)) {
27− MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
28− glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition();
29− glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter);
30− glm::vec2 polar = glm::vec2(glm::atan(direction.x, -direction.z), glm::asin(direction.y)) * -1.0f;
31− auto overlayPos = qApp->getApplicationCompositor().sphericalToOverlay(polar);
55+ glm::vec2 overlayPos = qApp->getApplicationCompositor().overlayFromSphereSurface(hudIntersection);
3256 return qScriptValueFromValue<glm::vec2>(engine, overlayPos);
3357 }
3458 return QScriptValue::NullValue;