Showing the changes to assignment-client/src/entities/EntityTreeSendThread.cpp (1 of 1 file). Show all
Unified · Split
| @@ -84,7 +84,6 @@ void EntityTreeSendThread::preDistributionProcessing() { · 83 unmodified lines | ||
| 84 | 84 | void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, OctreeQueryNode* nodeData, |
| 85 | 85 | bool viewFrustumChanged, bool isFullScene) { |
| 86 | 86 | // BEGIN EXPERIMENTAL DIFFERENTIAL TRAVERSAL |
| 87 | − int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); | |
| 88 | 87 | if (nodeData->getUsesFrustum()) { |
| 89 | 88 | // DEBUG HACK: trigger traversal (Repeat) every so often |
| 90 | 89 | const uint64_t TRAVERSE_AGAIN_PERIOD = 4 * USECS_PER_SECOND; |
| @@ -93,17 +92,18 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 2 unmodified lines | ||
| 93 | 92 | ViewFrustum viewFrustum; |
| 94 | 93 | nodeData->copyCurrentViewFrustum(viewFrustum); |
| 95 | 94 | EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot()); |
| 95 | + int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); | |
| 96 | 96 | startNewTraversal(viewFrustum, root, lodLevelOffset); |
| 97 | 97 | |
| 98 | 98 | // If the previous traversal didn't finish, we'll need to resort the entities still in _sendQueue after calling traverse |
| 99 | 99 | if (!_sendQueue.empty()) { |
| 100 | 100 | EntityPriorityQueue prevSendQueue; |
| 101 | 101 | _sendQueue.swap(prevSendQueue); |
| 102 | + _entitiesToSend.clear(); | |
| 102 | 103 | // Re-add elements from previous traveral if they still need to be sent |
| 103 | 104 | while (!prevSendQueue.empty()) { |
| 104 | 105 | EntityItemPointer entity = prevSendQueue.top().getEntity(); |
| 105 | 106 | prevSendQueue.pop(); |
| 106 | − _entitiesToSend.clear(); | |
| 107 | 107 | if (entity) { |
| 108 | 108 | bool success = false; |
| 109 | 109 | AACube cube = entity->getQueryAACube(success); |
| @@ -113,9 +113,9 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 3 unmodified lines | ||
| 113 | 113 | float priority = _conicalView.computePriority(cube); |
| 114 | 114 | if (priority != DO_NOT_SEND) { |
| 115 | 115 | float renderAccuracy = calculateRenderAccuracy(_traversal.getCurrentView().getPosition(), |
| 116 | − cube, | |
| 117 | − _traversal.getCurrentRootSizeScale(), | |
| 118 | − lodLevelOffset); | |
| 116 | + cube, | |
| 117 | + _traversal.getCurrentRootSizeScale(), | |
| 118 | + lodLevelOffset); | |
| 119 | 119 | |
| 120 | 120 | // Only send entities if they are large enough to see |
| 121 | 121 | if (renderAccuracy > 0.0f) { |