Changeset 7385 in orxonox.OLD for branches/bsp_model/src/lib/graphics/importer/bsp_file.h
- Timestamp:
- Apr 26, 2006, 4:37:58 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/bsp_model/src/lib/graphics/importer/bsp_file.h
r7353 r7385 1 1 /* 2 3 4 5 6 7 8 9 10 11 12 2 orxonox - the future of 3D-vertical-scrollers 3 4 Copyright (C) 2006 orx 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 ### File Specific: 12 main-programmer: bottac@ee.ethz.ch 13 13 */ 14 14 15 15 class SDL_Surface; 16 16 class BspTreeNode; 17 17 class Vector; … … 19 19 class VertexArrayModel; 20 20 21 typedef struct 21 typedef struct 22 22 { 23 23 float x; 24 24 float y; 25 25 float z; 26 float d; 27 } plane; 26 float d; 27 } 28 plane; 28 29 29 30 typedef struct 30 31 { 31 float mins [3]; //Bounding box min coord. 32 float maxs [3]; //Bounding box max coord. 33 int face; //First face for model. 34 int n_faces; //Number of faces for model. 35 int brush; //First brush for model. 36 int n_brushes; // 37 } model; 32 float mins [ 3 ]; //Bounding box min coord. 33 float maxs [ 3 ]; //Bounding box max coord. 34 int face; //First face for model. 35 int n_faces; //Number of faces for model. 36 int brush; //First brush for model. 37 int n_brushes; // 38 } 39 model; 38 40 39 41 typedef struct 40 42 { 41 int plane; //Plane index. 42 int left; //Children indices. Negative numbers are leaf indices: -(leaf+1). 43 int right; 44 int mins[3]; //Integer bounding box min coord. 45 int maxs[3]; //Integer bounding box max coord. 46 } node; 43 int plane; //Plane index. 44 int left; //Children indices. Negative numbers are leaf indices: -(leaf+1). 45 int right; 46 int mins[ 3 ]; //Integer bounding box min coord. 47 int maxs[ 3 ]; //Integer bounding box max coord. 48 } 49 node; 47 50 48 51 typedef struct 49 52 { 50 int cluster; // Visdata cluster index. 51 int area; // Areaportal area. 52 int mins[3]; // Integer bounding box min coord. 53 int maxs[3]; // Integer bounding box max coord. 54 int leafface; // First leafface for leaf. 55 int n_leaffaces; //Number of leaffaces for leaf. 56 int leafbrush_first; // leafbrush for leaf. 57 int n_leafbrushes; // Number of leafbrushes for leaf. 58 } leaf; 53 int cluster; // Visdata cluster index. 54 int area; // Areaportal area. 55 int mins[ 3 ]; // Integer bounding box min coord. 56 int maxs[ 3 ]; // Integer bounding box max coord. 57 int leafface; // First leafface for leaf. 58 int n_leaffaces; //Number of leaffaces for leaf. 59 int leafbrush_first; // leafbrush for leaf. 60 int n_leafbrushes; // Number of leafbrushes for leaf. 61 } 62 leaf; 59 63 60 64 typedef struct 61 65 { 62 int brushside; //First brushside for brush. 63 int n_brushsides; //Number of brushsides for brush. 64 int texture; //Texture index. 65 } brush; 66 int brushside; //First brushside for brush. 67 int n_brushsides; //Number of brushsides for brush. 68 int texture; //Texture index. 69 } 70 brush; 66 71 67 72 typedef struct 68 73 { 69 int plane; //Plane index. 70 int texture; //Texture index. 71 } brushside; 74 int plane; //Plane index. 75 int texture; //Texture index. 76 } 77 brushside; 72 78 73 79 struct face 74 80 { 75 76 77 78 79 80 81 82 83 int lm_start [2]; // Corner of this face's lightmap image in lightmap.84 int lm_size[2]; // Size of this face's lightmap image in lightmap.85 float lm_origin [3] ;// World space origin of lightmap.86 float lm_vecs [2][3];// World space lightmap s and t unit vectors.87 float normal[3];// Surface normal.88 int size [2] ;// Patch dimensions.81 int texture; // Texture index. 82 int effect; // Index into lump 12 (Effects), or -1. 83 int type; // Face type. 1=polygon, 2=patch, 3=mesh, 4=billboard 84 int vertex; // Index of first vertex. 85 int n_vertexes; // Number of vertices. 86 int meshvert; // Index of first meshvert. 87 int n_meshverts; // Number of meshverts. 88 int lm_index; // Lightmap index. 89 int lm_start [ 2 ]; // Corner of this face's lightmap image in lightmap. 90 int lm_size[ 2 ]; // Size of this face's lightmap image in lightmap. 91 float lm_origin [ 3 ] ; // World space origin of lightmap. 92 float lm_vecs [ 2 ][ 3 ]; // World space lightmap s and t unit vectors. 93 float normal[ 3 ]; // Surface normal. 94 int size [ 2 ] ; // Patch dimensions. 89 95 } ; 90 96 91 97 typedef struct 92 98 { 93 float position[3]; // Vertex position. 94 float texcoord[2][2]; // Vertex texture coordinates. 0=surface, 1=lightmap. 95 float normal[3]; // Vertex normal. 96 unsigned char color [4]; // Vertex color. RGBA. 97 }BspVertex; 99 float position[ 3 ]; // Vertex position. 100 float texcoord[ 2 ][ 2 ]; // Vertex texture coordinates. 0=surface, 1=lightmap. 101 float normal[ 3 ]; // Vertex normal. 102 unsigned char color [ 4 ]; // Vertex color. RGBA. 103 } 104 BspVertex; 98 105 99 106 typedef struct 100 107 { 101 int offset; 102 } meshvert; 108 int offset; 109 } 110 meshvert; 103 111 104 typedef struct 112 typedef struct 105 113 { 106 float position [3]; 107 } BspVec; 114 float position [ 3 ]; 115 } 116 BspVec; 108 117 109 class BspFile 118 typedef struct 110 119 { 111 public: 112 BspFile(); 113 int read(char* name); 114 void build_tree(); 115 void load_textures(); 116 void tesselate(int iface); 117 BspTreeNode* get_root(); 118 Material * loadMat(char* mat); 120 Material* mat; 121 bool alpha; 122 } 123 AMat; 119 124 120 BspTreeNode* root; 121 char header [280]; // Buffer for header of BSP-File 122 char* nodes; // Buffer to store BSP-Tree-Nodes 123 char* leaves; // Buffer to store BSP-Tree-Leaves 124 char* planes; // Buffer to store planes separateing the space 125 char* bspModels; // Buffer to store BSP-Model-List 126 char* leafFaces; // Buffer to store leafFaces 127 char* faces; // 128 char* leafBrushes; // Buffer to store brush indice 129 char* brushes; // Buffer to store brushes 130 char* brushSides; // 131 char* vertice; // 132 char* meshverts; 133 char* visData; 134 char* textures; 125 class BspFile 126 { 127 friend class BspManager; 128 129 public: 130 BspFile(); 131 int read( char* name ); 132 void build_tree(); 133 void load_textures(); 134 void tesselate( int iface ); 135 BspTreeNode* get_root(); 136 AMat loadMat( char* mat ); 135 137 136 138 137 char* patchVertice; 138 char* patchIndexes; 139 char* patchTrianglesPerRow; 140 int** patchRowIndexes; 141 VertexArrayModel** VertexArrayModels; 142 int patchOffset; 139 private: 140 BspTreeNode* root; 141 char header [ 280 ]; //!< Buffer for header of BSP-File 142 char* nodes; //!< Buffer to store BSP-Tree-Nodes 143 char* leaves; //!< Buffer to store BSP-Tree-Leaves 144 char* planes; //!< Buffer to store planes separateing the space 145 char* bspModels; //!< Buffer to store BSP-Model-List 146 char* leafFaces; //!< Buffer to store leafFaces 147 char* faces; //!< 148 char* leafBrushes; //!< Buffer to store brush indice 149 char* brushes; //!< Buffer to store brushes 150 char* brushSides; //!< 151 char* vertice; //!< 152 char* meshverts; //!< 153 char* visData; //!< 154 char* textures; //!< 143 155 144 int numNodes;145 int numLeafs;146 int numVertex;147 int numPlanes;148 int numBspModels;149 int numLeafFaces;150 int numFaces;151 int numLeafBrushes;152 int numTextures;153 int numPatches;154 int numBrushSides;155 156 BspTreeNode* build_tree_rec(int i);157 Material** Materials;158 156 159 157 char* patchVertice; 158 char* patchIndexes; 159 char* patchTrianglesPerRow; 160 int** patchRowIndexes; 161 VertexArrayModel** VertexArrayModels; 162 int patchOffset; 163 164 int numNodes; 165 int numLeafs; 166 int numVertex; 167 int numPlanes; 168 int numBspModels; 169 int numLeafFaces; 170 int numFaces; 171 int numLeafBrushes; 172 int numTextures; 173 int numPatches; 174 int numBrushSides; 175 176 BspTreeNode* build_tree_rec( int i ); 177 AMat* Materials; 178 SDL_Surface* testSurf; 179 160 180 }; 161 181
Note: See TracChangeset
for help on using the changeset viewer.