History

Fix serverScripts not being able to see entities in parent/child tree

David Rowe committed 9 years ago

Commit 328fc291 parent be74b5c4 files · +16 −9Browse files

Showing the changes to assignment-client/src/entities/EntityTreeSendThread.cpp (1 of 4 files). Show all

Unified · Split

assignment-client/src/entities/EntityTreeSendThread.cpp+9−5
@@ -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-sort101 // 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 view102 // 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 additions178 // 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
207void EntityTreeSendThread::startNewTraversal(const ViewFrustum& view, EntityTreeElementPointer root, int32_t lodLevelOffset, bool usesViewFrustum) {207void 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 view213 // (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 again433 // 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) {