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