From 4973563c20416266a1f0a3aa266dde1582fec049 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 2 Jul 2019 16:29:19 -0700 Subject: [PATCH] return entity load priority operator to proper state --- interface/src/octree/SafeLanding.cpp | 14 ++++++++------ interface/src/octree/SafeLanding.h | 6 ++++-- .../entities-renderer/src/EntityTreeRenderer.h | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index c358df746b..75e512232b 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -19,6 +19,11 @@ const int SafeLanding::SEQUENCE_MODULO = std::numeric_limits::max() + 1; +CalculateEntityLoadingPriority SafeLanding::entityLoadingOperatorElevateCollidables = [](const EntityItem& entityItem) { + const int COLLIDABLE_ENTITY_PRIORITY = 10.0f; + return entityItem.getCollisionless() * COLLIDABLE_ENTITY_PRIORITY; +}; + namespace { template bool lessThanWraparound(int a, int b) { constexpr int MAX_T_VALUE = std::numeric_limits::max(); @@ -52,7 +57,8 @@ void SafeLanding::startTracking(QSharedPointer entityTreeRen connect(std::const_pointer_cast(entityTree).get(), &EntityTree::deletingEntity, this, &SafeLanding::deleteTrackedEntity); - EntityTreeRenderer::setEntityLoadingPriorityFunction(&ElevatedPriority); + _prevEntityLoadingPriorityOperator = EntityTreeRenderer::getEntityLoadingPriorityOperator(); + EntityTreeRenderer::setEntityLoadingPriorityFunction(entityLoadingOperatorElevateCollidables); } } } @@ -162,7 +168,7 @@ void SafeLanding::stopTracking() { &EntityTree::deletingEntity, this, &SafeLanding::deleteTrackedEntity); _entityTreeRenderer.reset(); } - EntityTreeRenderer::setEntityLoadingPriorityFunction(StandardPriority); + EntityTreeRenderer::setEntityLoadingPriorityFunction(_prevEntityLoadingPriorityOperator); } bool SafeLanding::trackingIsComplete() const { @@ -205,10 +211,6 @@ bool SafeLanding::isEntityPhysicsReady(const EntityItemPointer& entity) { return true; } -float SafeLanding::ElevatedPriority(const EntityItem& entityItem) { - return entityItem.getCollisionless() ? 0.0f : 10.0f; -} - void SafeLanding::debugDumpSequenceIDs() const { int p = -1; qCDebug(interfaceapp) << "Sequence set size:" << _sequenceNumbers.size(); diff --git a/interface/src/octree/SafeLanding.h b/interface/src/octree/SafeLanding.h index 2f1db2366f..87dac16ba3 100644 --- a/interface/src/octree/SafeLanding.h +++ b/interface/src/octree/SafeLanding.h @@ -20,6 +20,8 @@ #include "EntityItem.h" #include "EntityDynamicInterface.h" +#include "EntityTreeRenderer.h" + class EntityTreeRenderer; class EntityItemID; @@ -64,8 +66,8 @@ private: std::set _sequenceNumbers; - static float ElevatedPriority(const EntityItem& entityItem); - static float StandardPriority(const EntityItem&) { return 0.0f; } + static CalculateEntityLoadingPriority entityLoadingOperatorElevateCollidables; + CalculateEntityLoadingPriority _prevEntityLoadingPriorityOperator { nullptr }; static const int SEQUENCE_MODULO; }; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index bea04f106b..b9fda690dd 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -69,6 +69,7 @@ public: virtual PacketType getExpectedPacketType() const override { return PacketType::EntityData; } // Returns the priority at which an entity should be loaded. Higher values indicate higher priority. + static CalculateEntityLoadingPriority getEntityLoadingPriorityOperator() { return _calculateEntityLoadingPriorityFunc; } static float getEntityLoadingPriority(const EntityItem& item) { return _calculateEntityLoadingPriorityFunc(item); } static void setEntityLoadingPriorityFunction(CalculateEntityLoadingPriority fn) { _calculateEntityLoadingPriorityFunc = fn; }