diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1f69b704a9..03f43a0a45 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3255,9 +3255,9 @@ void Application::onDesktopRootItemCreated(QQuickItem* rootItem) { surfaceContext->setContextProperty("AnimStats", AnimStats::getInstance()); #if !defined(Q_OS_ANDROID) -// auto offscreenUi = getOffscreenUI(); -// auto qml = PathUtils::qmlUrl("AvatarInputsBar.qml"); -// offscreenUi->show(qml, "AvatarInputsBar"); + auto offscreenUi = getOffscreenUI(); + auto qml = PathUtils::qmlUrl("AvatarInputsBar.qml"); + offscreenUi->show(qml, "AvatarInputsBar"); #endif } @@ -5102,7 +5102,7 @@ void Application::calibrateEyeTracker5Points() { #endif bool Application::exportEntities(const QString& filename, - const QVector& entityIDs, + const QVector& entityIDs, const glm::vec3* givenOffset) { QHash entities; @@ -5177,16 +5177,12 @@ bool Application::exportEntities(const QString& filename, float x, float y, floa glm::vec3 minCorner = center - vec3(scale); float cubeSize = scale * 2; AACube boundingCube(minCorner, cubeSize); - QVector entities; - QVector ids; + QVector entities; auto entityTree = getEntities()->getTree(); entityTree->withReadLock([&] { - entityTree->findEntities(boundingCube, entities); - foreach(EntityItemPointer entity, entities) { - ids << entity->getEntityItemID(); - } + entityTree->evalEntitiesInCube(boundingCube, PickFilter(), entities); }); - return exportEntities(filename, ids, ¢er); + return exportEntities(filename, entities, ¢er); } void Application::loadSettings() { @@ -7253,7 +7249,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointe bool clientScript = scriptEngine->isClientScript(); scriptEngine->registerFunction("OverlayWindow", clientScript ? QmlWindowClass::constructor : QmlWindowClass::restricted_constructor); -#if !defined(DISABLE_QML) +#if !defined(Q_OS_ANDROID) && !defined(DISABLE_QML) scriptEngine->registerFunction("OverlayWebWindow", clientScript ? QmlWebWindowClass::constructor : QmlWebWindowClass::restricted_constructor); #endif scriptEngine->registerFunction("QmlFragment", clientScript ? QmlFragmentClass::constructor : QmlFragmentClass::restricted_constructor); @@ -8302,6 +8298,9 @@ void Application::loadDomainConnectionDialog() { void Application::toggleLogDialog() { #ifndef Q_OS_ANDROID + if (getLoginDialogPoppedUp()) { + return; + } if (! _logDialog) { bool keepOnTop =_keepLogWindowOnTop.get(); diff --git a/interface/src/Application.h b/interface/src/Application.h index 099c5d3d15..2b4902f72e 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -359,7 +359,7 @@ signals: public slots: QVector pasteEntities(float x, float y, float z); - bool exportEntities(const QString& filename, const QVector& entityIDs, const glm::vec3* givenOffset = nullptr); + bool exportEntities(const QString& filename, const QVector& entityIDs, const glm::vec3* givenOffset = nullptr); bool exportEntities(const QString& filename, float x, float y, float z, float scale); bool importEntities(const QString& url, const bool isObservable = true, const qint64 callerId = -1); void updateThreadPoolCount() const; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index e8db1af25b..92d9270d20 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3683,17 +3683,15 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette OctreeElementPointer element; float distance; BoxFace face; - const bool visibleOnly = false; - // This isn't quite what we really want here. findRayIntersection always works on mesh, skipping entirely based on collidable. - // What we really want is to use the collision hull! - // See https://highfidelity.fogbugz.com/f/cases/5003/findRayIntersection-has-option-to-use-collidableOnly-but-doesn-t-actually-use-colliders - const bool collidableOnly = true; - const bool precisionPicking = true; const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? bool* accurateResult = NULL; + // This isn't quite what we really want here. findRayIntersection always works on mesh, skipping entirely based on collidable. + // What we really want is to use the collision hull! + // See https://highfidelity.fogbugz.com/f/cases/5003/findRayIntersection-has-option-to-use-collidableOnly-but-doesn-t-actually-use-colliders QVariantMap extraInfo; - EntityItemID entityID = entityTree->findRayIntersection(startPointIn, directionIn, include, ignore, visibleOnly, collidableOnly, precisionPicking, + EntityItemID entityID = entityTree->evalRayIntersection(startPointIn, directionIn, include, ignore, + PickFilter(PickFilter::getBitMask(PickFilter::FlagBit::COLLIDABLE) | PickFilter::getBitMask(PickFilter::FlagBit::PRECISE)), element, distance, face, normalOut, extraInfo, lockType, accurateResult); if (entityID.isNull()) { return false; diff --git a/interface/src/ui/LoginDialog.cpp b/interface/src/ui/LoginDialog.cpp index 4359318833..a8e234d791 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -138,7 +138,7 @@ void LoginDialog::login(const QString& username, const QString& password) const void LoginDialog::loginThroughOculus() { qDebug() << "Attempting to login through Oculus"; if (auto oculusPlatformPlugin = PluginManager::getInstance()->getOculusPlatformPlugin()) { - oculusPlatformPlugin->requestNonceAndUserID([this] (QString nonce, QString oculusID) { + oculusPlatformPlugin->requestNonceAndUserID([] (QString nonce, QString oculusID) { DependencyManager::get()->requestAccessTokenWithOculus(nonce, oculusID); }); }