When interface sets query flag send only entities close to main frustrum origin, until no more available, then send unreliabe sequence # reliably.
Showing the changes to assignment-client/src/entities/EntityTreeSendThread.cpp (1 of 12 files). Show all
Unified · Split
| @@ -17,6 +17,8 @@ · 16 unmodified lines | ||
| 17 | 17 | |
| 18 | 18 | #include "EntityServer.h" |
| 19 | 19 | |
| 20 | +// Initially just send all items within this distance. | |
| 21 | +const float EntityTreeSendThread::INITIAL_RADIUS = 50.0f; | |
| 20 | 22 | |
| 21 | 23 | EntityTreeSendThread::EntityTreeSendThread(OctreeServer* myServer, const SharedNodePointer& node) : |
| 22 | 24 | OctreeSendThread(myServer, node) |
| @@ -112,6 +114,13 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 89 unmodified lines | ||
| 112 | 114 | int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); |
| 113 | 115 | newView.lodScaleFactor = powf(2.0f, lodLevelOffset); |
| 114 | 116 | |
| 117 | + if (nodeData->wantReportInitialResult() && !newView.viewFrustums.empty()) { | |
| 118 | + auto& mainView = newView.viewFrustums[0]; | |
| 119 | + // Force acceptance within INITIAL_RADIUS. | |
| 120 | + mainView.setSimpleRadius(INITIAL_RADIUS); | |
| 121 | + newView.lodScaleFactor = 0.0f; | |
| 122 | + } | |
| 123 | + | |
| 115 | 124 | startNewTraversal(newView, root); |
| 116 | 125 | |
| 117 | 126 | // When the viewFrustum changed the sort order may be incorrect, so we re-sort |