Showing the changes to assignment-client/src/entities/EntityTreeSendThread.cpp (1 of 4 files). Show all
Unified · Split
| @@ -96,7 +96,7 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 95 unmodified lines | |||
| 96 | nodeData->copyCurrentViewFrustum(viewFrustum); | 96 | nodeData->copyCurrentViewFrustum(viewFrustum); |
| 97 | EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot()); | 97 | EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot()); |
| 98 | int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); | 98 | int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); |
| 99 | startNewTraversal(viewFrustum, root, lodLevelOffset, nodeData->getUsesFrustum()); | 99 | startNewTraversal(viewFrustum, root, lodLevelOffset, nodeData->getUsesFrustum(), isFullScene); |
| 100 | 100 | ||
| 101 | // When the viewFrustum changed the sort order may be incorrect, so we re-sort | 101 | // When the viewFrustum changed the sort order may be incorrect, so we re-sort |
| 102 | // and also use the opportunity to cull anything no longer in view | 102 | // and also use the opportunity to cull anything no longer in view |
| @@ -175,7 +175,7 @@ bool EntityTreeSendThread::addAncestorsToExtraFlaggedEntities(const QUuid& filte · 72 unmodified lines | |||
| 175 | return parentWasNew || ancestorsWereNew; | 175 | return parentWasNew || ancestorsWereNew; |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | // since we didn't have a parent niether of our parents or ancestors could be new additions | 178 | // since we didn't have a parent, neither of our parents or ancestors could be new additions |
| 179 | return false; | 179 | return false; |
| 180 | } | 180 | } |
| 181 | 181 | ||
| @@ -204,8 +204,10 @@ bool EntityTreeSendThread::addDescendantsToExtraFlaggedEntities(const QUuid& fil · 22 unmodified lines | |||
| 204 | return hasNewChild || hasNewDescendants; | 204 | return hasNewChild || hasNewDescendants; |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | void EntityTreeSendThread::startNewTraversal(const ViewFrustum& view, EntityTreeElementPointer root, int32_t lodLevelOffset, bool usesViewFrustum) { | 207 | void EntityTreeSendThread::startNewTraversal(const ViewFrustum& view, EntityTreeElementPointer root, int32_t lodLevelOffset, |
| 208 | DiffTraversal::Type type = _traversal.prepareNewTraversal(view, root, lodLevelOffset, usesViewFrustum); | 208 | bool usesViewFrustum, bool isFullScene) { |
| 209 | |||
| 210 | DiffTraversal::Type type = _traversal.prepareNewTraversal(view, root, lodLevelOffset, usesViewFrustum, isFullScene); | ||
| 209 | // there are three types of traversal: | 211 | // there are three types of traversal: |
| 210 | // | 212 | // |
| 211 | // (1) FirstTime = at login --> find everything in view | 213 | // (1) FirstTime = at login --> find everything in view |
| @@ -423,12 +425,14 @@ bool EntityTreeSendThread::traverseTreeAndBuildNextPacketPayload(EncodeBitstream · 211 unmodified lines | |||
| 423 | uint64_t sendTime = usecTimestampNow(); | 425 | uint64_t sendTime = usecTimestampNow(); |
| 424 | auto nodeData = static_cast<OctreeQueryNode*>(params.nodeData); | 426 | auto nodeData = static_cast<OctreeQueryNode*>(params.nodeData); |
| 425 | nodeData->stats.encodeStarted(); | 427 | nodeData->stats.encodeStarted(); |
| 428 | auto entityNodeData = static_cast<EntityNodeData*>(_node.toStrongRef()->getLinkedData()); | ||
| 426 | while(!_sendQueue.empty()) { | 429 | while(!_sendQueue.empty()) { |
| 427 | PrioritizedEntity queuedItem = _sendQueue.top(); | 430 | PrioritizedEntity queuedItem = _sendQueue.top(); |
| 428 | EntityItemPointer entity = queuedItem.getEntity(); | 431 | EntityItemPointer entity = queuedItem.getEntity(); |
| 429 | if (entity) { | 432 | if (entity) { |
| 430 | // Only send entities that match the jsonFilters, but keep track of everything we've tried to send so we don't try to send it again | 433 | // Only send entities that match the jsonFilters, but keep track of everything we've tried to send so we don't try to send it again |
| 431 | if (entity->matchesJSONFilters(jsonFilters)) { | 434 | if (entity->matchesJSONFilters(jsonFilters) || entityNodeData->isEntityFlaggedAsExtra(entity->getID())) { |
| 435 | entityNodeData->insertSentFilteredEntity(entity->getID()); | ||
| 432 | OctreeElement::AppendState appendEntityState = entity->appendEntityData(&_packetData, params, _extraEncodeData); | 436 | OctreeElement::AppendState appendEntityState = entity->appendEntityData(&_packetData, params, _extraEncodeData); |
| 433 | 437 | ||
| 434 | if (appendEntityState != OctreeElement::COMPLETED) { | 438 | if (appendEntityState != OctreeElement::COMPLETED) { |