Ignore:
Timestamp:
01/02/09 23:07:07 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ViewCellsTree.cpp

    r3242 r3243  
    22#include "Timer/PerfTimer.h" 
    33#include <stack> 
     4#include <string> 
    45 
    56using namespace std; 
    67 
    78 
     9// MAGIC of all bin exports 
     10#ifndef MAGIC  
     11#define MAGIC 0x827923 
     12#endif 
     13 
     14#define VIEWCELLS_VERSION 1.0f 
     15 
    816namespace CHCDemoEngine 
    917{ 
    1018 
     19 
    1120ViewCell *ViewCellsTree::GetViewCell(const Vector3 &point) const 
    1221{ 
    13         ViewCellsTreeNode *node = root; 
     22        ViewCellsTreeNode *node = mRoot; 
    1423 
    1524        while (!node->IsLeaf())  
    1625        { 
    17                 if (point[node->axis] < node->position) 
    18                         node = node->back; 
     26                if (point[node->mAxis] < node->mPosition) 
     27                        node = node->mBack; 
    1928                else 
    20                         node = node->front; 
     29                        node = node->mFront; 
    2130        } 
    2231 
    23         return node->viewCell; 
     32        return node->mViewCell; 
    2433} 
    2534 
    2635 
    27 bool ViewCellsTree::LoadFromFile(const string &filename) 
     36bool ViewCellsTree::LoadFromFile(const std::string &filename) 
    2837{ 
    29         cout << ("Info: Loading view cells from file '" + filename + "'" ); 
     38        cout << "Info: Loading view cells from file '" + filename + "'"; 
    3039 
    3140        FILE *fr = fopen(filename.c_str(), "rb"); 
    3241 
    33         if (fr == NULL) { 
    34                 Message("Error: Cannot open file for reading"); 
     42        if (!fr)  
     43        { 
     44                cerr << "Error: Cannot open file for reading" << endl; 
    3545                return false; 
    3646        } 
     
    3848        bool result = _LoadFromFile(fr); 
    3949 
    40         Debug << "Info: done. " << endl; 
     50        cout << "Info: done. " << endl; 
    4151        fclose(fr); 
    4252 
     
    5060        fread(buffer, sizeof(int), 3, fr); 
    5161 
    52         if (buffer[0] != MAGIC) { 
    53                 Message( "Error: Wrong file type"); 
     62        if (buffer[0] != MAGIC)  
     63        { 
     64                cerr << "Error: Wrong file type" << endl; 
    5465                return false; 
    5566        } 
    5667 
    57         if (buffer[1] != (int)(1000*VIEWCELLS_VERSION)) { 
    58                 Message( "Error: Wrong viewcells version" ); 
     68        if (buffer[1] != (int)(1000 * VIEWCELLS_VERSION))  
     69        { 
     70                cerr << "Error: Wrong viewcells version" << endl; 
    5971                return false; 
    6072        } 
    6173 
    6274        // get the bounding box 
    63         fread(&box, sizeof(AxisAlignedBox3), 1, fr); 
     75        fread(&mBox, sizeof(AxisAlignedBox3), 1, fr); 
    6476 
    6577        stack<ViewCellsTreeNode **> nodeStack; 
    6678 
    67         nodeStack.push(&root); 
     79        nodeStack.push(&mRoot); 
    6880 
    69         while(!nodeStack.empty()) { 
     81        while (!nodeStack.empty())  
     82        { 
    7083                ViewCellsTreeNode *&node = *nodeStack.top(); 
    7184                nodeStack.pop(); 
    72                 node = new ViewCellsTreeNode; 
    73                 fread(&node->axis, sizeof(int), 1, fr); 
    74                 if (!node->IsLeaf()) { 
    75                         fread(&node->position, sizeof(float), 1, fr); 
    76                         nodeStack.push(&node->front); 
    77                         nodeStack.push(&node->back); 
     85                node = new ViewCellsTreeNode(); 
     86 
     87                fread(&node->mAxis, sizeof(int), 1, fr); 
     88 
     89                if (!node->IsLeaf()) 
     90                { 
     91                        fread(&node->mPosition, sizeof(float), 1, fr); 
     92                        nodeStack.push(&node->mFront); 
     93                        nodeStack.push(&node->mBack); 
    7894                } 
    7995        } 
     
    8399 
    84100 
    85 void ViewCellsTree::_ExportToFile(FILE *file) 
    86 { 
    87         int buffer[256]; 
    88         int i=0; 
    89         buffer[i++] = MAGIC; 
    90         buffer[i++] = VIEWCELLS_VERSION*1000; 
    91  
    92         fwrite(buffer, sizeof(int), i, file); 
    93  
    94         fwrite(&mMaxDepth, sizeof(float), 1, file); 
    95  
    96         fwrite(&box, sizeof(AxisAlignedBox3), 1, file); 
    97  
    98         stack<ViewCellsTreeNode *> nodeStack; 
    99  
    100         nodeStack.push(root); 
    101  
    102         while (!nodeStack.empty()) { 
    103                 ViewCellsTreeNode *node = nodeStack.top(); 
    104                 nodeStack.pop(); 
    105  
    106                 fwrite(&node->axis, sizeof(int), 1, file); 
    107                 if (!node->IsLeaf()) { 
    108                         fwrite(&node->position, sizeof(float), 1, file); 
    109                         nodeStack.push(node->front); 
    110                         nodeStack.push(node->back); 
    111                 } 
    112         } 
    113101} 
    114  
    115 } 
Note: See TracChangeset for help on using the changeset viewer.