home *** CD-ROM | disk | FTP | other *** search
- #include "Q3bspExtension.h"
-
-
- Q3bspExtension::Q3bspExtension(){
- mesh=NULL;
- nodes=NULL;
- numNodes=0;
- leafs=NULL;
- numLeafs=0;
- pvs=NULL;
- facesDrawn=NULL;
- textures=NULL;
- numTextures=0;
- lightmaps=NULL;
- numLightmaps=0;
-
- }
-
- Q3bspExtension::~Q3bspExtension(){
- int i;
-
- if(nodes!=NULL){
- for(i=0;i<numNodes;i++){
- delete nodes[i];
- }
- delete[] nodes;
- }
- if(leafs!=NULL){
-
- for(i=0;i<numLeafs;i++){
- delete[] leafs[i]->faceIndices;
- delete leafs[i];
- }
- delete[] leafs;
- }
-
- if(pvs!=NULL){
- delete pvs;
- }
- if(facesDrawn!=NULL){
- delete facesDrawn;
- }
-
- if(textures!=NULL){
- for(i=0;i<numTextures;i++){
- delete textures[i];
- }
- delete[] textures;
- }
- if(lightmaps!=NULL){
- for(i=0;i<numLightmaps;i++){
- delete lightmaps[i];
- }
- delete[] lightmaps;
- }
-
- }
-
-
- int Q3bspExtension::getLeafIndex(vec3_t pos){
- int i = 0;
- float distance = 0.0f;
-
- while(i >= 0){ // while we have a inner node and not a leaf
- Q3bspExtensionNode_t* node=nodes[i];
-
- distance = node->plane[0] * pos[0] +
- node->plane[1] * pos[1] +
- node->plane[2] * pos[2] - node->plane[3];
-
- // If the camera is in front of the plane
- if(distance >= 0){
- i = node->front;
- }else{
- i = node->back;
- }
- }
-
- return ~i; // Binary operation
- }
-
- void Q3bspExtension::render(){
-
-
- }
-