History

Several VoxelSystems can have different view frustum

atlante45 committed 13 years ago

Commit 22a26031 parent 11311f32 files · +18 −15Browse files

Showing the changes to interface/src/VoxelSystem.cpp (1 of 2 files). Show all

Unified · Split

interface/src/VoxelSystem.cpp+15−15
@@ -65,6 +65,8 @@ VoxelSystem::VoxelSystem(float treeScale, int maxVoxels) : · 64 unmodified lines
6565 _falseColorizeBySource = false;
6666 _dataSourceID = UNKNOWN_NODE_ID;
6767 _voxelServerCount = 0;
68+
69+ _viewFrustum = Application::getInstance()->getViewFrustum();
6870 }
6971
7072 void VoxelSystem::nodeDeleted(VoxelNode* node) {
@@ -394,7 +396,7 @@ int VoxelSystem::newTreeToArrays(VoxelNode* node) { · 323 unmodified lines
394396 int voxelsUpdated = 0;
395397 bool shouldRender = false; // assume we don't need to render it
396398 // if it's colored, we might need to render it!
397− shouldRender = node->calculateShouldRender(Application::getInstance()->getViewFrustum());
399+ shouldRender = node->calculateShouldRender(_viewFrustum);
398400
399401 node->setShouldRender(shouldRender);
400402 // let children figure out their renderness
@@ -813,10 +815,8 @@ bool VoxelSystem::falseColorizeInViewOperation(VoxelNode* node, void* extraData) · 412 unmodified lines
813815 }
814816
815817 void VoxelSystem::falseColorizeInView() {
816− ViewFrustum* viewFrustum = Application::getInstance()->getViewFrustum();
817−
818818 _nodeCount = 0;
819− _tree->recurseTreeWithOperation(falseColorizeInViewOperation,(void*)viewFrustum);
819+ _tree->recurseTreeWithOperation(falseColorizeInViewOperation,(void*)_viewFrustum);
820820 qDebug("setting in view false color for %d nodes\n", _nodeCount);
821821 _tree->setDirtyBit();
822822 setupNewVoxelsForDrawing();
@@ -942,15 +942,13 @@ bool VoxelSystem::getDistanceFromViewRangeOperation(VoxelNode* node, void* extra · 119 unmodified lines
942942 }
943943
944944 void VoxelSystem::falseColorizeDistanceFromView() {
945− ViewFrustum* viewFrustum = Application::getInstance()->getViewFrustum();
946−
947945 _nodeCount = 0;
948946 _maxDistance = 0.0;
949947 _minDistance = FLT_MAX;
950− _tree->recurseTreeWithOperation(getDistanceFromViewRangeOperation, (void*) viewFrustum);
948+ _tree->recurseTreeWithOperation(getDistanceFromViewRangeOperation, (void*) _viewFrustum);
951949 qDebug("determining distance range for %d nodes\n", _nodeCount);
952950 _nodeCount = 0;
953− _tree->recurseTreeWithOperation(falseColorizeDistanceFromViewOperation, (void*) viewFrustum);
951+ _tree->recurseTreeWithOperation(falseColorizeDistanceFromViewOperation, (void*) _viewFrustum);
954952 qDebug("setting in distance false color for %d nodes\n", _nodeCount);
955953 _tree->setDirtyBit();
956954 setupNewVoxelsForDrawing();
@@ -960,6 +958,7 @@ void VoxelSystem::falseColorizeDistanceFromView() { · 3 unmodified lines
960958 class removeOutOfViewArgs {
961959 public:
962960 VoxelSystem* thisVoxelSystem;
961+ ViewFrustum* thisViewFrustum;
963962 VoxelNodeBag dontRecurseBag;
964963 unsigned long nodesScanned;
965964 unsigned long nodesRemoved;
@@ -969,6 +968,7 @@ public: · 3 unmodified lines
969968
970969 removeOutOfViewArgs(VoxelSystem* voxelSystem) :
971970 thisVoxelSystem(voxelSystem),
971+ thisViewFrustum(voxelSystem->getViewFrustum()),
972972 dontRecurseBag(),
973973 nodesScanned(0),
974974 nodesRemoved(0),
@@ -997,7 +997,7 @@ bool VoxelSystem::removeOutOfViewOperation(VoxelNode* node, void* extraData) { · 22 unmodified lines
997997 for (int i = 0; i < NUMBER_OF_CHILDREN; i++) {
998998 VoxelNode* childNode = node->getChildAtIndex(i);
999999 if (childNode) {
1000− ViewFrustum::location inFrustum = childNode->inFrustum(*Application::getInstance()->getViewFrustum());
1000+ ViewFrustum::location inFrustum = childNode->inFrustum(*args->thisViewFrustum);
10011001 switch (inFrustum) {
10021002 case ViewFrustum::OUTSIDE: {
10031003 args->nodesOutside++;
@@ -1031,9 +1031,9 @@ bool VoxelSystem::isViewChanging() { · 27 unmodified lines
10311031 bool result = false; // assume the best
10321032
10331033 // If our viewFrustum has changed since our _lastKnowViewFrustum
1034− if (!_lastKnowViewFrustum.matches(Application::getInstance()->getViewFrustum())) {
1034+ if (!_lastKnowViewFrustum.matches(_viewFrustum)) {
10351035 result = true;
1036− _lastKnowViewFrustum = *Application::getInstance()->getViewFrustum(); // save last known
1036+ _lastKnowViewFrustum = *_viewFrustum; // save last known
10371037 }
10381038 return result;
10391039 }
@@ -1047,9 +1047,9 @@ bool VoxelSystem::hasViewChanged() { · 7 unmodified lines
10471047 }
10481048
10491049 // If our viewFrustum has changed since our _lastKnowViewFrustum
1050− if (!_lastStableViewFrustum.matches(Application::getInstance()->getViewFrustum())) {
1050+ if (!_lastStableViewFrustum.matches(_viewFrustum)) {
10511051 result = true;
1052− _lastStableViewFrustum = *Application::getInstance()->getViewFrustum(); // save last stable
1052+ _lastStableViewFrustum = *_viewFrustum; // save last stable
10531053 }
10541054 return result;
10551055 }
@@ -1403,7 +1403,7 @@ void VoxelSystem::falseColorizeOccluded() { · 347 unmodified lines
14031403 myCoverageMap.erase();
14041404
14051405 FalseColorizeOccludedArgs args;
1406− args.viewFrustum = Application::getInstance()->getViewFrustum();
1406+ args.viewFrustum = _viewFrustum;
14071407 args.map = &myCoverageMap;
14081408 args.totalVoxels = 0;
14091409 args.coloredVoxels = 0;
@@ -1525,7 +1525,7 @@ void VoxelSystem::falseColorizeOccludedV2() { · 115 unmodified lines
15251525 VoxelProjectedPolygon::intersects_calls = 0;
15261526
15271527 FalseColorizeOccludedArgs args;
1528− args.viewFrustum = Application::getInstance()->getViewFrustum();
1528+ args.viewFrustum = _viewFrustum;
15291529 args.mapV2 = &myCoverageMapV2;
15301530 args.totalVoxels = 0;
15311531 args.coloredVoxels = 0;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t