Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 26, 2006, 4:37:58 PM (18 years ago)
Author:
bottac
Message:

Minor improvements (transparancy). Code formatting revised.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/bsp_model/src/lib/graphics/importer/bsp_file.h

    r7353 r7385  
    11/*
    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
     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
    1313*/
    1414
    15 
     15class SDL_Surface;
    1616class BspTreeNode;
    1717class Vector;
     
    1919class VertexArrayModel;
    2020
    21 typedef struct 
     21typedef struct
    2222{
    2323  float x;
    2424  float y;
    2525  float z;
    26   float d;     
    27 } plane;
     26  float d;
     27}
     28plane;
    2829
    2930typedef struct
    3031{
    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}
     39model;
    3840
    3941typedef struct
    4042{
    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}
     49node;
    4750
    4851typedef struct
    4952{
    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}
     62leaf;
    5963
    6064typedef struct
    6165{
    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}
     70brush;
    6671
    6772typedef struct
    6873{
    69     int plane; //Plane index.
    70     int texture;        //Texture index.
    71 } brushside;
     74  int plane; //Plane index.
     75  int texture;  //Texture index.
     76}
     77brushside;
    7278
    73  struct face
     79struct face
    7480{
    75     int texture;        // Texture index.
    76     int effect;         // Index into lump 12 (Effects), or -1.
    77     int type;   // Face type. 1=polygon, 2=patch, 3=mesh, 4=billboard
    78     int vertex;         // Index of first vertex.
    79     int n_vertexes; // Number of vertices.
    80     int meshvert;   // Index of first meshvert.
    81     int n_meshverts; // Number of meshverts.
    82     int lm_index;  // Lightmap index.
    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.
    8995} ;
    9096
    9197typedef struct
    9298{
    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}
     104BspVertex;
    98105
    99106typedef struct
    100107{
    101    int offset;
    102 } meshvert;
     108  int offset;
     109}
     110meshvert;
    103111
    104 typedef struct 
     112typedef struct
    105113{
    106  float position [3];
    107 } BspVec;
     114  float position [ 3 ];
     115}
     116BspVec;
    108117
    109 class  BspFile
     118typedef struct
    110119{
    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}
     123AMat;
    119124
    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;
     125class BspFile
     126{
     127  friend class BspManager;
     128
     129public:
     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 );
    135137
    136138
    137  char*  patchVertice;
    138  char*  patchIndexes;
    139  char*  patchTrianglesPerRow;
    140  int**  patchRowIndexes;
    141  VertexArrayModel** VertexArrayModels;
    142  int       patchOffset;
     139private:
     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;            //!<
    143155
    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;
    158156
    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
    160180};
    161181
Note: See TracChangeset for help on using the changeset viewer.