diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5f43f34731..3c80d5fa0f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1376,6 +1376,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(myAvatar.get(), &MyAvatar::positionGoneTo, DependencyManager::get().data(), &AddressManager::storeCurrentAddress); + connect(myAvatar.get(), &MyAvatar::positionGoneTo, this, [this] { + if (!_physicsEnabled) { + // when we arrive somewhere without physics enabled --> startSafeLanding + _octreeProcessor.startSafeLanding(); + } + }, Qt::QueuedConnection); + connect(myAvatar.get(), &MyAvatar::skeletonModelURLChanged, [](){ QUrl avatarURL = qApp->getMyAvatar()->getSkeletonModelURL(); setCrashAnnotation("avatar", avatarURL.toString().toStdString()); @@ -5931,10 +5938,8 @@ void Application::resetPhysicsReadyInformation() { _gpuTextureMemSizeStabilityCount = 0; _gpuTextureMemSizeAtLastCheck = 0; _physicsEnabled = false; - _octreeProcessor.startSafeLanding(); } - void Application::reloadResourceCaches() { resetPhysicsReadyInformation(); @@ -6932,7 +6937,9 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType) { bool interstitialModeEnabled = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); ConicalViewFrustum sphericalView; - sphericalView.setSimpleRadius(INITIAL_QUERY_RADIUS); + AABox box = getMyAvatar()->getGlobalBoundingBox(); + float radius = glm::max(INITIAL_QUERY_RADIUS, 0.5f * glm::length(box.getDimensions())); + sphericalView.setPositionAndSimpleRadius(box.calcCenter(), radius); if (interstitialModeEnabled) { ConicalViewFrustum farView; diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index bcce86f9f9..c358df746b 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -91,9 +91,7 @@ void SafeLanding::finishSequence(int first, int last) { void SafeLanding::addToSequence(int sequenceNumber) { Locker lock(_lock); - if (_trackingEntities) { - _sequenceNumbers.insert(sequenceNumber); - } + _sequenceNumbers.insert(sequenceNumber); } void SafeLanding::updateTracking() { diff --git a/libraries/shared/src/shared/ConicalViewFrustum.cpp b/libraries/shared/src/shared/ConicalViewFrustum.cpp index 78f4f7d1bc..34f7ea793a 100644 --- a/libraries/shared/src/shared/ConicalViewFrustum.cpp +++ b/libraries/shared/src/shared/ConicalViewFrustum.cpp @@ -145,7 +145,8 @@ int ConicalViewFrustum::deserialize(const unsigned char* sourceBuffer) { return sourceBuffer - startPosition; } -void ConicalViewFrustum::setSimpleRadius(float radius) { +void ConicalViewFrustum::setPositionAndSimpleRadius(const glm::vec3& position, float radius) { + _position = position; _radius = radius; _farClip = radius / 2.0f; } diff --git a/libraries/shared/src/shared/ConicalViewFrustum.h b/libraries/shared/src/shared/ConicalViewFrustum.h index 6a2cc53f03..8879c360a2 100644 --- a/libraries/shared/src/shared/ConicalViewFrustum.h +++ b/libraries/shared/src/shared/ConicalViewFrustum.h @@ -55,7 +55,7 @@ public: int deserialize(const unsigned char* sourceBuffer); // Just test for within radius. - void setSimpleRadius(float radius); + void setPositionAndSimpleRadius(const glm::vec3& position, float radius); private: glm::vec3 _position { 0.0f, 0.0f, 0.0f };