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
9696 nodeData->copyCurrentViewFrustum(viewFrustum);
9797 EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot());
9898 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);
100100
101101 // When the viewFrustum changed the sort order may be incorrect, so we re-sort
102102 // 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
175175 return parentWasNew || ancestorsWereNew;
176176 }
177177
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
179179 return false;
180180 }
181181
@@ -204,8 +204,10 @@ bool EntityTreeSendThread::addDescendantsToExtraFlaggedEntities(const QUuid& fil · 22 unmodified lines
204204 return hasNewChild || hasNewDescendants;
205205 }
206206
207−void EntityTreeSendThread::startNewTraversal(const ViewFrustum& view, EntityTreeElementPointer root, int32_t lodLevelOffset, bool usesViewFrustum) {
208− DiffTraversal::Type type = _traversal.prepareNewTraversal(view, root, lodLevelOffset, usesViewFrustum);
207+void EntityTreeSendThread::startNewTraversal(const ViewFrustum& view, EntityTreeElementPointer root, int32_t lodLevelOffset,
208+ bool usesViewFrustum, bool isFullScene) {
209+
210+ DiffTraversal::Type type = _traversal.prepareNewTraversal(view, root, lodLevelOffset, usesViewFrustum, isFullScene);
209211 // there are three types of traversal:
210212 //
211213 // (1) FirstTime = at login --> find everything in view
@@ -423,12 +425,14 @@ bool EntityTreeSendThread::traverseTreeAndBuildNextPacketPayload(EncodeBitstream · 211 unmodified lines
423425 uint64_t sendTime = usecTimestampNow();
424426 auto nodeData = static_cast<OctreeQueryNode*>(params.nodeData);
425427 nodeData->stats.encodeStarted();
428+ auto entityNodeData = static_cast<EntityNodeData*>(_node.toStrongRef()->getLinkedData());
426429 while(!_sendQueue.empty()) {
427430 PrioritizedEntity queuedItem = _sendQueue.top();
428431 EntityItemPointer entity = queuedItem.getEntity();
429432 if (entity) {
430433 // 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());
432436 OctreeElement::AppendState appendEntityState = entity->appendEntityData(&_packetData, params, _extraEncodeData);
433437
434438 if (appendEntityState != OctreeElement::COMPLETED) {