From 4bbfd7cad140fdb1c991f4343f177c8ee4b5b22f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 1 Jul 2019 15:53:42 -0700 Subject: [PATCH] more correct bounding sphere around avatar for SafeLanding query --- interface/src/Application.cpp | 5 +++-- libraries/shared/src/shared/ConicalViewFrustum.cpp | 3 ++- libraries/shared/src/shared/ConicalViewFrustum.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b0f706a201..3c80d5fa0f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6937,8 +6937,9 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType) { bool interstitialModeEnabled = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); ConicalViewFrustum sphericalView; - sphericalView.set(_viewFrustum); - 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/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 };