From dd27e3db31f5680235ad12a5601bae0312edb7c0 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 17 Nov 2017 09:44:35 -0800 Subject: [PATCH] add diff traversal reset when resetting state --- assignment-client/src/entities/EntityTreeSendThread.cpp | 5 +++-- assignment-client/src/entities/EntityTreeSendThread.h | 2 +- libraries/entities/src/DiffTraversal.h | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assignment-client/src/entities/EntityTreeSendThread.cpp b/assignment-client/src/entities/EntityTreeSendThread.cpp index b9f1ca4daf..e5cee84f1b 100644 --- a/assignment-client/src/entities/EntityTreeSendThread.cpp +++ b/assignment-client/src/entities/EntityTreeSendThread.cpp @@ -26,13 +26,14 @@ EntityTreeSendThread::EntityTreeSendThread(OctreeServer* myServer, const SharedN // connect to connection ID change on EntityNodeData so we can clear state for this receiver auto nodeData = static_cast(node->getLinkedData()); - connect(nodeData, &EntityNodeData::incomingConnectionIDChanged, this, &EntityTreeSendThread::resetKnownState); + connect(nodeData, &EntityNodeData::incomingConnectionIDChanged, this, &EntityTreeSendThread::resetState); } -void EntityTreeSendThread::resetKnownState() { +void EntityTreeSendThread::resetState() { qCDebug(entities) << "Clearing known EntityTreeSendThread state for" << _nodeUuid; _knownState.clear(); + _traversal.reset(); } void EntityTreeSendThread::preDistributionProcessing() { diff --git a/assignment-client/src/entities/EntityTreeSendThread.h b/assignment-client/src/entities/EntityTreeSendThread.h index 37d9ab720d..594f423838 100644 --- a/assignment-client/src/entities/EntityTreeSendThread.h +++ b/assignment-client/src/entities/EntityTreeSendThread.h @@ -34,7 +34,7 @@ protected: bool viewFrustumChanged, bool isFullScene) override; private slots: - void resetKnownState(); // clears our known state forcing entities to appear unsent + void resetState(); // clears our known state forcing entities to appear unsent private: // the following two methods return booleans to indicate if any extra flagged entities were new additions to set diff --git a/libraries/entities/src/DiffTraversal.h b/libraries/entities/src/DiffTraversal.h index eb7168356e..69431d8db5 100644 --- a/libraries/entities/src/DiffTraversal.h +++ b/libraries/entities/src/DiffTraversal.h @@ -73,6 +73,8 @@ public: void setScanCallback(std::function cb); void traverse(uint64_t timeBudget); + void reset() { _path.clear(); _completedView.startTime = 0; } // resets our state to force a new "First" traversal + private: void getNextVisibleElement(VisibleElement& next);