QScriptValue HMDScriptingInterface::getHUDLookAtPosition3D(QScriptContext* context, QScriptEngine* engine) { glm::vec3 result; auto instance = DependencyManager::get<HMDScriptingInterface>(); if (instance->getHUDLookAtPosition3D(result)) { return qScriptValueFromValue<glm::vec3>(engine, result); } return QScriptValue::NullValue; }
QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) { glm::vec3 hudIntersection; auto instance = DependencyManager::get<HMDScriptingInterface>(); if (instance->getHUDLookAtPosition3D(hudIntersection)) { glm::vec2 overlayPos = qApp->getApplicationCompositor().overlayFromSphereSurface(hudIntersection); return qScriptValueFromValue<glm::vec2>(engine, overlayPos); } return QScriptValue::NullValue; }
QScriptValue HMDScriptingInterface::getHUDLookAtPosition2D(QScriptContext* context, QScriptEngine* engine) { glm::vec3 hudIntersection; auto instance = DependencyManager::get<HMDScriptingInterface>(); if (instance->getHUDLookAtPosition3D(hudIntersection)) { MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar(); glm::vec3 sphereCenter = myAvatar->getDefaultEyePosition(); glm::vec3 direction = glm::inverse(myAvatar->getOrientation()) * (hudIntersection - sphereCenter); glm::vec2 polar = glm::vec2(glm::atan(direction.x, -direction.z), glm::asin(direction.y)) * -1.0f; auto overlayPos = qApp->getApplicationCompositor().sphericalToOverlay(polar); return qScriptValueFromValue<glm::vec2>(engine, overlayPos); } return QScriptValue::NullValue; }