home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / PotentialVisibilitySet.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-12-06  |  1.8 KB  |  65 lines

  1. #include "PotentialVisibilitySet.h"
  2.  
  3. #include "Renderer.h"
  4. #include "RendererInfo.h"
  5.  
  6. PotentialVisibilitySet::PotentialVisibilitySet(unsigned int size){
  7.     numClusters=size;
  8.     clusters=new PVSCluster_t*[numClusters];
  9.     for(unsigned int i=0;i<numClusters;i++){
  10.         clusters[i]=new PVSCluster_t;
  11.         clusters[i]->visibleClusters=new BitSet(numClusters);
  12.         clusters[i]->visibleClusters->clearAll();
  13.     }
  14.  
  15.     enabled=true;
  16. }
  17.  
  18. PotentialVisibilitySet::~PotentialVisibilitySet(){
  19.     for(unsigned  i=0;i<numClusters;i++){
  20.         delete clusters[i]->visibleClusters;
  21.         delete clusters[i];
  22.     }
  23.     delete[] clusters;
  24.  
  25.     enabled=true;
  26. }
  27.  
  28. void PotentialVisibilitySet::setCurrentCluster(unsigned int cluster){
  29.     currentCluster=cluster;
  30. }
  31.  
  32. bool PotentialVisibilitySet::clusterIsVisible(unsigned int test){
  33.     return clusters[currentCluster]->visibleClusters->isSet(test);
  34. }
  35.  
  36. bool PotentialVisibilitySet::clusterIsVisible(unsigned int current, unsigned int test){
  37.     return clusters[current]->visibleClusters->isSet(test);
  38. }
  39.  
  40. PVSCluster_t** PotentialVisibilitySet::getClusters(){
  41.     return clusters;
  42. }
  43.  
  44. unsigned int PotentialVisibilitySet::getNumClusters(){
  45.     return numClusters;
  46. }
  47.  
  48. void PotentialVisibilitySet::drawClusterBorders(){
  49.     if(Renderer::info.var.renderPVSBorders==1){
  50.         glColor3f(0.8f, 0.8f, 0.8f);
  51.         for(unsigned int i=0;i<numClusters;i++){
  52.             Renderer::debug_renderAABB(clusters[i]->min,clusters[i]->max);
  53.         }
  54.     }else if(Renderer::info.var.renderPVSBorders==2){
  55.         glColor3f(1.0f, 0.0f, 0.0f);
  56.         Renderer::debug_renderAABB(clusters[currentCluster]->min,clusters[currentCluster]->max);
  57.         glColor3f(0.8f, 0.8f, 0.8f);
  58.         for(unsigned int i=0;i<numClusters;i++){
  59.             if(clusterIsVisible(i))
  60.                 Renderer::debug_renderAABB(clusters[i]->min,clusters[i]->max);
  61.         }
  62.         
  63.     }                        
  64. }
  65.