Showing the changes to assignment-client/src/entities/EntityTreeSendThread.cpp (1 of 1 file). Show all
Unified · Split
| @@ -25,9 +25,9 @@ void PrioritizedEntity::updatePriority(const ViewFrustum& view) { · 24 unmodified lines | |||
| 25 | bool success; | 25 | bool success; |
| 26 | AACube cube = entity->getQueryAACube(success); | 26 | AACube cube = entity->getQueryAACube(success); |
| 27 | if (success) { | 27 | if (success) { |
| 28 | glm::vec3 center = cube.calcCenter() - view.getPosition(); | 28 | glm::vec3 offset = cube.calcCenter() - view.getPosition(); |
| 29 | const float MIN_DISTANCE = 0.001f; | 29 | const float MIN_DISTANCE = 0.001f; |
| 30 | float distanceToCenter = glm::length(center) + MIN_DISTANCE; | 30 | float distanceToCenter = glm::length(offset) + MIN_DISTANCE; |
| 31 | float distance = distanceToCenter; //- 0.5f * cube.getScale(); | 31 | float distance = distanceToCenter; //- 0.5f * cube.getScale(); |
| 32 | if (distance < MIN_DISTANCE) { | 32 | if (distance < MIN_DISTANCE) { |
| 33 | // this object's bounding box overlaps the camera --> give it a big priority | 33 | // this object's bounding box overlaps the camera --> give it a big priority |
| @@ -35,8 +35,8 @@ void PrioritizedEntity::updatePriority(const ViewFrustum& view) { · 1 unmodified line | |||
| 35 | } else { | 35 | } else { |
| 36 | // NOTE: we assume view.aspectRatio < 1.0 (view width greater than height) | 36 | // NOTE: we assume view.aspectRatio < 1.0 (view width greater than height) |
| 37 | // so we only check against the larger (horizontal) view angle | 37 | // so we only check against the larger (horizontal) view angle |
| 38 | float front = glm::dot(center, view.getDirection()) / distanceToCenter; | 38 | float front = glm::dot(offset, view.getDirection()) / distanceToCenter; |
| 39 | if (front > cosf(view.getFieldOfView()) || distance < view.getCenterRadius()) { | 39 | if (front > cosf(glm::radians(view.getFieldOfView())) || distance < view.getCenterRadius()) { |
| 40 | _priority = cube.getScale() / distance; // + front; | 40 | _priority = cube.getScale() / distance; // + front; |
| 41 | } else { | 41 | } else { |
| 42 | _priority = INVALID_ENTITY_SEND_PRIORITY; | 42 | _priority = INVALID_ENTITY_SEND_PRIORITY; |
| @@ -84,15 +84,8 @@ EntityTreeElementPointer TreeTraversalPath::Fork::getNextElementAgain(const View · 41 unmodified lines | |||
| 84 | ++_nextIndex; | 84 | ++_nextIndex; |
| 85 | EntityTreeElementPointer element = _weakElement.lock(); | 85 | EntityTreeElementPointer element = _weakElement.lock(); |
| 86 | assert(element); // should never lose root element | 86 | assert(element); // should never lose root element |
| 87 | if (element->getLastChanged() < oldTime) { | 87 | return element; |
| 88 | _nextIndex = NUMBER_OF_CHILDREN; | 88 | } else if (_nextIndex < NUMBER_OF_CHILDREN) { |
| 89 | return EntityTreeElementPointer(); | ||
| 90 | } | ||
| 91 | if (element->getLastChanged() > oldTime) { | ||
| 92 | return element; | ||
| 93 | } | ||
| 94 | } | ||
| 95 | if (_nextIndex < NUMBER_OF_CHILDREN) { | ||
| 96 | EntityTreeElementPointer element = _weakElement.lock(); | 89 | EntityTreeElementPointer element = _weakElement.lock(); |
| 97 | if (element) { | 90 | if (element) { |
| 98 | while (_nextIndex < NUMBER_OF_CHILDREN) { | 91 | while (_nextIndex < NUMBER_OF_CHILDREN) { |
| @@ -115,10 +108,6 @@ EntityTreeElementPointer TreeTraversalPath::Fork::getNextElementDelta(const View · 16 unmodified lines | |||
| 115 | ++_nextIndex; | 108 | ++_nextIndex; |
| 116 | EntityTreeElementPointer element = _weakElement.lock(); | 109 | EntityTreeElementPointer element = _weakElement.lock(); |
| 117 | assert(element); // should never lose root element | 110 | assert(element); // should never lose root element |
| 118 | if (element->getLastChanged() < oldTime) { | ||
| 119 | _nextIndex = NUMBER_OF_CHILDREN; | ||
| 120 | return EntityTreeElementPointer(); | ||
| 121 | } | ||
| 122 | return element; | 111 | return element; |
| 123 | } else if (_nextIndex < NUMBER_OF_CHILDREN) { | 112 | } else if (_nextIndex < NUMBER_OF_CHILDREN) { |
| 124 | EntityTreeElementPointer element = _weakElement.lock(); | 113 | EntityTreeElementPointer element = _weakElement.lock(); |
| @@ -282,13 +271,14 @@ static size_t adebug = 0; · 157 unmodified lines | |||
| 282 | 271 | ||
| 283 | void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, OctreeQueryNode* nodeData, | 272 | void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, OctreeQueryNode* nodeData, |
| 284 | bool viewFrustumChanged, bool isFullScene) { | 273 | bool viewFrustumChanged, bool isFullScene) { |
| 285 | if (viewFrustumChanged) { | 274 | static int foo=0;++foo;bool verbose=(0==(foo%800)); // adebug |
| 275 | if (viewFrustumChanged || verbose) { | ||
| 286 | ViewFrustum view; | 276 | ViewFrustum view; |
| 287 | nodeData->copyCurrentViewFrustum(view); | 277 | nodeData->copyCurrentViewFrustum(view); |
| 278 | std::cout << "adebug reset view" << std::endl; // adebug | ||
| 288 | EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot()); | 279 | EntityTreeElementPointer root = std::dynamic_pointer_cast<EntityTreeElement>(_myServer->getOctree()->getRoot()); |
| 289 | _path.startNewTraversal(view, root); | 280 | _path.startNewTraversal(view, root); |
| 290 | 281 | ||
| 291 | std::cout << "adebug reset view" << std::endl; // adebug | ||
| 292 | adebug = 0; | 282 | adebug = 0; |
| 293 | } | 283 | } |
| 294 | if (!_path.empty()) { | 284 | if (!_path.empty()) { |
| @@ -321,6 +311,7 @@ void EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O · 26 unmodified lines | |||
| 321 | std::cout << "adebug traverseTreeAndSendContents totalEntities = " << adebug | 311 | std::cout << "adebug traverseTreeAndSendContents totalEntities = " << adebug |
| 322 | << " numElements = " << numElements | 312 | << " numElements = " << numElements |
| 323 | << " numEntities = " << entities.size() | 313 | << " numEntities = " << entities.size() |
| 314 | << " queueSize = " << _sendQueue.size() | ||
| 324 | << " dt = " << dt1 << std::endl; // adebug | 315 | << " dt = " << dt1 << std::endl; // adebug |
| 325 | } else if (!_sendQueue.empty()) { | 316 | } else if (!_sendQueue.empty()) { |
| 326 | while (!_sendQueue.empty()) { | 317 | while (!_sendQueue.empty()) { |