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
65 _falseColorizeBySource = false;65 _falseColorizeBySource = false;
66 _dataSourceID = UNKNOWN_NODE_ID;66 _dataSourceID = UNKNOWN_NODE_ID;
67 _voxelServerCount = 0;67 _voxelServerCount = 0;
68
69 _viewFrustum = Application::getInstance()->getViewFrustum();
68}70}
69 71
70void VoxelSystem::nodeDeleted(VoxelNode* node) {72void VoxelSystem::nodeDeleted(VoxelNode* node) {
@@ -394,7 +396,7 @@ int VoxelSystem::newTreeToArrays(VoxelNode* node) { · 323 unmodified lines
394 int voxelsUpdated = 0;396 int voxelsUpdated = 0;
395 bool shouldRender = false; // assume we don't need to render it397 bool shouldRender = false; // assume we don't need to render it
396 // if it's colored, we might need to render it!398 // if it's colored, we might need to render it!
397 shouldRender = node->calculateShouldRender(Application::getInstance()->getViewFrustum());399 shouldRender = node->calculateShouldRender(_viewFrustum);
398 400
399 node->setShouldRender(shouldRender);401 node->setShouldRender(shouldRender);
400 // let children figure out their renderness402 // let children figure out their renderness
@@ -813,10 +815,8 @@ bool VoxelSystem::falseColorizeInViewOperation(VoxelNode* node, void* extraData) · 412 unmodified lines
813}815}
814 816
815void VoxelSystem::falseColorizeInView() {817void VoxelSystem::falseColorizeInView() {
816 ViewFrustum* viewFrustum = Application::getInstance()->getViewFrustum();
817
818 _nodeCount = 0;818 _nodeCount = 0;
819 _tree->recurseTreeWithOperation(falseColorizeInViewOperation,(void*)viewFrustum);819 _tree->recurseTreeWithOperation(falseColorizeInViewOperation,(void*)_viewFrustum);
820 qDebug("setting in view false color for %d nodes\n", _nodeCount);820 qDebug("setting in view false color for %d nodes\n", _nodeCount);
821 _tree->setDirtyBit();821 _tree->setDirtyBit();
822 setupNewVoxelsForDrawing();822 setupNewVoxelsForDrawing();
@@ -942,15 +942,13 @@ bool VoxelSystem::getDistanceFromViewRangeOperation(VoxelNode* node, void* extra · 119 unmodified lines
942}942}
943 943
944void VoxelSystem::falseColorizeDistanceFromView() {944void VoxelSystem::falseColorizeDistanceFromView() {
945 ViewFrustum* viewFrustum = Application::getInstance()->getViewFrustum();
946
947 _nodeCount = 0;945 _nodeCount = 0;
948 _maxDistance = 0.0;946 _maxDistance = 0.0;
949 _minDistance = FLT_MAX;947 _minDistance = FLT_MAX;
950 _tree->recurseTreeWithOperation(getDistanceFromViewRangeOperation, (void*) viewFrustum);948 _tree->recurseTreeWithOperation(getDistanceFromViewRangeOperation, (void*) _viewFrustum);
951 qDebug("determining distance range for %d nodes\n", _nodeCount);949 qDebug("determining distance range for %d nodes\n", _nodeCount);
952 _nodeCount = 0;950 _nodeCount = 0;
953 _tree->recurseTreeWithOperation(falseColorizeDistanceFromViewOperation, (void*) viewFrustum);951 _tree->recurseTreeWithOperation(falseColorizeDistanceFromViewOperation, (void*) _viewFrustum);
954 qDebug("setting in distance false color for %d nodes\n", _nodeCount);952 qDebug("setting in distance false color for %d nodes\n", _nodeCount);
955 _tree->setDirtyBit();953 _tree->setDirtyBit();
956 setupNewVoxelsForDrawing();954 setupNewVoxelsForDrawing();
@@ -960,6 +958,7 @@ void VoxelSystem::falseColorizeDistanceFromView() { · 3 unmodified lines
960class removeOutOfViewArgs {958class removeOutOfViewArgs {
961public:959public:
962 VoxelSystem* thisVoxelSystem;960 VoxelSystem* thisVoxelSystem;
961 ViewFrustum* thisViewFrustum;
963 VoxelNodeBag dontRecurseBag;962 VoxelNodeBag dontRecurseBag;
964 unsigned long nodesScanned;963 unsigned long nodesScanned;
965 unsigned long nodesRemoved;964 unsigned long nodesRemoved;
@@ -969,6 +968,7 @@ public: · 3 unmodified lines
969 968
970 removeOutOfViewArgs(VoxelSystem* voxelSystem) :969 removeOutOfViewArgs(VoxelSystem* voxelSystem) :
971 thisVoxelSystem(voxelSystem),970 thisVoxelSystem(voxelSystem),
971 thisViewFrustum(voxelSystem->getViewFrustum()),
972 dontRecurseBag(),972 dontRecurseBag(),
973 nodesScanned(0),973 nodesScanned(0),
974 nodesRemoved(0),974 nodesRemoved(0),
@@ -997,7 +997,7 @@ bool VoxelSystem::removeOutOfViewOperation(VoxelNode* node, void* extraData) { · 22 unmodified lines
997 for (int i = 0; i < NUMBER_OF_CHILDREN; i++) {997 for (int i = 0; i < NUMBER_OF_CHILDREN; i++) {
998 VoxelNode* childNode = node->getChildAtIndex(i);998 VoxelNode* childNode = node->getChildAtIndex(i);
999 if (childNode) {999 if (childNode) {
1000 ViewFrustum::location inFrustum = childNode->inFrustum(*Application::getInstance()->getViewFrustum());1000 ViewFrustum::location inFrustum = childNode->inFrustum(*args->thisViewFrustum);
1001 switch (inFrustum) {1001 switch (inFrustum) {
1002 case ViewFrustum::OUTSIDE: {1002 case ViewFrustum::OUTSIDE: {
1003 args->nodesOutside++;1003 args->nodesOutside++;
@@ -1031,9 +1031,9 @@ bool VoxelSystem::isViewChanging() { · 27 unmodified lines
1031 bool result = false; // assume the best1031 bool result = false; // assume the best
1032 1032
1033 // If our viewFrustum has changed since our _lastKnowViewFrustum1033 // If our viewFrustum has changed since our _lastKnowViewFrustum
1034 if (!_lastKnowViewFrustum.matches(Application::getInstance()->getViewFrustum())) {1034 if (!_lastKnowViewFrustum.matches(_viewFrustum)) {
1035 result = true;1035 result = true;
1036 _lastKnowViewFrustum = *Application::getInstance()->getViewFrustum(); // save last known1036 _lastKnowViewFrustum = *_viewFrustum; // save last known
1037 }1037 }
1038 return result;1038 return result;
1039}1039}
@@ -1047,9 +1047,9 @@ bool VoxelSystem::hasViewChanged() { · 7 unmodified lines
1047 }1047 }
1048 1048
1049 // If our viewFrustum has changed since our _lastKnowViewFrustum1049 // If our viewFrustum has changed since our _lastKnowViewFrustum
1050 if (!_lastStableViewFrustum.matches(Application::getInstance()->getViewFrustum())) {1050 if (!_lastStableViewFrustum.matches(_viewFrustum)) {
1051 result = true;1051 result = true;
1052 _lastStableViewFrustum = *Application::getInstance()->getViewFrustum(); // save last stable1052 _lastStableViewFrustum = *_viewFrustum; // save last stable
1053 }1053 }
1054 return result;1054 return result;
1055}1055}
@@ -1403,7 +1403,7 @@ void VoxelSystem::falseColorizeOccluded() { · 347 unmodified lines
1403 myCoverageMap.erase();1403 myCoverageMap.erase();
1404 1404
1405 FalseColorizeOccludedArgs args;1405 FalseColorizeOccludedArgs args;
1406 args.viewFrustum = Application::getInstance()->getViewFrustum();1406 args.viewFrustum = _viewFrustum;
1407 args.map = &myCoverageMap; 1407 args.map = &myCoverageMap;
1408 args.totalVoxels = 0;1408 args.totalVoxels = 0;
1409 args.coloredVoxels = 0;1409 args.coloredVoxels = 0;
@@ -1525,7 +1525,7 @@ void VoxelSystem::falseColorizeOccludedV2() { · 115 unmodified lines
1525 VoxelProjectedPolygon::intersects_calls = 0;1525 VoxelProjectedPolygon::intersects_calls = 0;
1526 1526
1527 FalseColorizeOccludedArgs args;1527 FalseColorizeOccludedArgs args;
1528 args.viewFrustum = Application::getInstance()->getViewFrustum();1528 args.viewFrustum = _viewFrustum;
1529 args.mapV2 = &myCoverageMapV2; 1529 args.mapV2 = &myCoverageMapV2;
1530 args.totalVoxels = 0;1530 args.totalVoxels = 0;
1531 args.coloredVoxels = 0;1531 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