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 | #include "EntityServer.h" | 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 | EntityTreeSendThread::EntityTreeSendThread(OctreeServer* myServer, const SharedNodePointer& node) : | 23 | EntityTreeSendThread::EntityTreeSendThread(OctreeServer* myServer, const SharedNodePointer& node) : |
| 22 | OctreeSendThread(myServer, node) | 24 | OctreeSendThread(myServer, node) |
| @@ -112,6 +114,13 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 89 unmodified lines | |||
| 112 | int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); | 114 | int32_t lodLevelOffset = nodeData->getBoundaryLevelAdjust() + (viewFrustumChanged ? LOW_RES_MOVING_ADJUST : NO_BOUNDARY_ADJUST); |
| 113 | newView.lodScaleFactor = powf(2.0f, lodLevelOffset); | 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 | startNewTraversal(newView, root); | 124 | startNewTraversal(newView, root); |
| 116 | 125 | ||
| 117 | // When the viewFrustum changed the sort order may be incorrect, so we re-sort | 126 | // When the viewFrustum changed the sort order may be incorrect, so we re-sort |