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

  1. #include "Q3bspExtension.h"
  2.  
  3.  
  4. Q3bspExtension::Q3bspExtension(){
  5.     mesh=NULL;
  6.     nodes=NULL;
  7.     numNodes=0;
  8.     leafs=NULL;
  9.     numLeafs=0;
  10.     pvs=NULL;
  11.     facesDrawn=NULL;
  12.     textures=NULL;
  13.     numTextures=0;
  14.     lightmaps=NULL;
  15.     numLightmaps=0;
  16.  
  17. }
  18.  
  19. Q3bspExtension::~Q3bspExtension(){
  20.     int i;
  21.  
  22.     if(nodes!=NULL){
  23.         for(i=0;i<numNodes;i++){
  24.             delete nodes[i];
  25.         }
  26.         delete[] nodes;
  27.     }
  28.     if(leafs!=NULL){
  29.  
  30.         for(i=0;i<numLeafs;i++){
  31.             delete[] leafs[i]->faceIndices;
  32.             delete leafs[i];
  33.         }
  34.         delete[] leafs;
  35.     }
  36.  
  37.     if(pvs!=NULL){
  38.         delete pvs;
  39.     }
  40.     if(facesDrawn!=NULL){
  41.         delete facesDrawn;
  42.     }
  43.  
  44.     if(textures!=NULL){
  45.         for(i=0;i<numTextures;i++){
  46.             delete textures[i];
  47.         }
  48.         delete[] textures;
  49.     }
  50.     if(lightmaps!=NULL){
  51.         for(i=0;i<numLightmaps;i++){
  52.             delete lightmaps[i];
  53.         }
  54.         delete[] lightmaps;
  55.     }
  56.  
  57. }
  58.  
  59.  
  60. int Q3bspExtension::getLeafIndex(vec3_t pos){
  61.     int i = 0;
  62.     float distance = 0.0f;
  63.  
  64.     while(i >= 0){    // while we have a inner node and not a leaf
  65.         Q3bspExtensionNode_t* node=nodes[i];
  66.  
  67.         distance =    node->plane[0] * pos[0] +
  68.                     node->plane[1] * pos[1] +
  69.                     node->plane[2] * pos[2] - node->plane[3];
  70.  
  71.         // If the camera is in front of the plane
  72.         if(distance >= 0){
  73.             i = node->front;
  74.         }else{
  75.             i = node->back;
  76.         }
  77.     }
  78.  
  79.     return ~i;  // Binary operation
  80. }
  81.  
  82. void Q3bspExtension::render(){
  83.  
  84.  
  85. }
  86.