Annotation of quake1/bspfile.h, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: // upper design bounds
                      4: 
                      5: #define        MAX_MAP_HULLS           4
                      6: 
                      7: #define        MAX_MAP_MODELS          256
                      8: #define        MAX_MAP_BRUSHES         4096
                      9: #define        MAX_MAP_ENTITIES        1024
                     10: #define        MAX_MAP_ENTSTRING       65536
                     11: 
                     12: #define        MAX_MAP_PLANES          8192
                     13: #define        MAX_MAP_NODES           32767           // because negative shorts are contents
                     14: #define        MAX_MAP_CLIPNODES       32767           //
                     15: #define        MAX_MAP_LEAFS           32767           // 
                     16: #define        MAX_MAP_VERTS           65535
                     17: #define        MAX_MAP_FACES           65535
                     18: #define        MAX_MAP_MARKSURFACES 65535
                     19: #define        MAX_MAP_TEXINFO         4096
                     20: #define        MAX_MAP_EDGES           256000
                     21: #define        MAX_MAP_SURFEDGES       512000
                     22: #define        MAX_MAP_MIPTEX          0x200000
                     23: #define        MAX_MAP_LIGHTING        0x100000
                     24: #define        MAX_MAP_VISIBILITY      0x100000
                     25: 
                     26: // key / value pair sizes
                     27: 
                     28: #define        MAX_KEY         32
                     29: #define        MAX_VALUE       1024
                     30: 
                     31: 
                     32: //=============================================================================
                     33: 
                     34: 
                     35: #define BSPVERSION     29
                     36: 
                     37: typedef struct
                     38: {
                     39:        int             fileofs, filelen;
                     40: } lump_t;
                     41: 
                     42: #define        LUMP_ENTITIES   0
                     43: #define        LUMP_PLANES             1
                     44: #define        LUMP_TEXTURES   2
                     45: #define        LUMP_VERTEXES   3
                     46: #define        LUMP_VISIBILITY 4
                     47: #define        LUMP_NODES              5
                     48: #define        LUMP_TEXINFO    6
                     49: #define        LUMP_FACES              7
                     50: #define        LUMP_LIGHTING   8
                     51: #define        LUMP_CLIPNODES  9
                     52: #define        LUMP_LEAFS              10
                     53: #define        LUMP_MARKSURFACES 11
                     54: #define        LUMP_EDGES              12
                     55: #define        LUMP_SURFEDGES  13
                     56: #define        LUMP_MODELS             14
                     57: 
                     58: #define        HEADER_LUMPS    15
                     59: 
                     60: typedef struct
                     61: {
                     62:        float           mins[3], maxs[3];
                     63:        float           origin[3];
                     64:        int                     headnode[MAX_MAP_HULLS];
                     65:        int                     visleafs;               // not including the solid leaf 0
                     66:        int                     firstface, numfaces;
                     67: } dmodel_t;
                     68: 
                     69: typedef struct
                     70: {
                     71:        int                     version;        
                     72:        lump_t          lumps[HEADER_LUMPS];
                     73: } dheader_t;
                     74: 
                     75: typedef struct
                     76: {
                     77:        int                     nummiptex;
                     78:        int                     dataofs[4];             // [nummiptex]
                     79: } dmiptexlump_t;
                     80: 
                     81: #define        MIPLEVELS       4
                     82: typedef struct miptex_s
                     83: {
                     84:        char            name[16];
                     85:        unsigned        width, height;
                     86:        unsigned        offsets[MIPLEVELS];             // four mip maps stored
                     87: } miptex_t;
                     88: 
                     89: 
                     90: typedef struct
                     91: {
                     92:        float   point[3];
                     93: } dvertex_t;
                     94: 
                     95: 
                     96: // 0-2 are axial planes
                     97: #define        PLANE_X                 0
                     98: #define        PLANE_Y                 1
                     99: #define        PLANE_Z                 2
                    100: 
                    101: // 3-5 are non-axial planes snapped to the nearest
                    102: #define        PLANE_ANYX              3
                    103: #define        PLANE_ANYY              4
                    104: #define        PLANE_ANYZ              5
                    105: 
                    106: typedef struct
                    107: {
                    108:        float   normal[3];
                    109:        float   dist;
                    110:        int             type;           // PLANE_X - PLANE_ANYZ ?remove? trivial to regenerate
                    111: } dplane_t;
                    112: 
                    113: 
                    114: 
                    115: #define        CONTENTS_EMPTY          -1
                    116: #define        CONTENTS_SOLID          -2
                    117: #define        CONTENTS_WATER          -3
                    118: #define        CONTENTS_SLIME          -4
                    119: #define        CONTENTS_LAVA           -5
                    120: #define        CONTENTS_SKY            -6
                    121: 
                    122: // !!! if this is changed, it must be changed in asm_i386.h too !!!
                    123: typedef struct
                    124: {
                    125:        int                     planenum;
                    126:        short           children[2];    // negative numbers are -(leafs+1), not nodes
                    127:        short           mins[3];                // for sphere culling
                    128:        short           maxs[3];
                    129:        unsigned short  firstface;
                    130:        unsigned short  numfaces;       // counting both sides
                    131: } dnode_t;
                    132: 
                    133: typedef struct
                    134: {
                    135:        int                     planenum;
                    136:        short           children[2];    // negative numbers are contents
                    137: } dclipnode_t;
                    138: 
                    139: 
                    140: typedef struct texinfo_s
                    141: {
                    142:        float           vecs[2][4];             // [s/t][xyz offset]
                    143:        int                     miptex;
                    144:        int                     flags;
                    145: } texinfo_t;
                    146: #define        TEX_SPECIAL             1               // sky or slime, no lightmap or 256 subdivision
                    147: 
                    148: // note that edge 0 is never used, because negative edge nums are used for
                    149: // counterclockwise use of the edge in a face
                    150: typedef struct
                    151: {
                    152:        unsigned short  v[2];           // vertex numbers
                    153: } dedge_t;
                    154: 
                    155: #define        MAXLIGHTMAPS    4
                    156: typedef struct
                    157: {
                    158:        short           planenum;
                    159:        short           side;
                    160: 
                    161:        int                     firstedge;              // we must support > 64k edges
                    162:        short           numedges;       
                    163:        short           texinfo;
                    164: 
                    165: // lighting info
                    166:        byte            styles[MAXLIGHTMAPS];
                    167:        int                     lightofs;               // start of [numstyles*surfsize] samples
                    168: } dface_t;
                    169: 
                    170: 
                    171: 
                    172: #define        AMBIENT_WATER   0
                    173: #define        AMBIENT_SKY             1
                    174: #define        AMBIENT_SLIME   2
                    175: #define        AMBIENT_LAVA    3
                    176: 
                    177: #define        NUM_AMBIENTS                    4               // automatic ambient sounds
                    178: 
                    179: // leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas
                    180: // all other leafs need visibility info
                    181: typedef struct
                    182: {
                    183:        int                     contents;
                    184:        int                     visofs;                         // -1 = no visibility info
                    185: 
                    186:        short           mins[3];                        // for frustum culling
                    187:        short           maxs[3];
                    188: 
                    189:        unsigned short          firstmarksurface;
                    190:        unsigned short          nummarksurfaces;
                    191: 
                    192:        byte            ambient_level[NUM_AMBIENTS];
                    193: } dleaf_t;
                    194: 
                    195: //============================================================================
                    196: 
                    197: #ifndef QUAKE_GAME
                    198: 
                    199: // the utilities get to be lazy and just use large static arrays
                    200: 
                    201: extern int                     nummodels;
                    202: extern dmodel_t        dmodels[MAX_MAP_MODELS];
                    203: 
                    204: extern int                     visdatasize;
                    205: extern byte            dvisdata[MAX_MAP_VISIBILITY];
                    206: 
                    207: extern int                     lightdatasize;
                    208: extern byte            dlightdata[MAX_MAP_LIGHTING];
                    209: 
                    210: extern int                     texdatasize;
                    211: extern byte            dtexdata[MAX_MAP_MIPTEX]; // (dmiptexlump_t)
                    212: 
                    213: extern int                     entdatasize;
                    214: extern char            dentdata[MAX_MAP_ENTSTRING];
                    215: 
                    216: extern int                     numleafs;
                    217: extern dleaf_t         dleafs[MAX_MAP_LEAFS];
                    218: 
                    219: extern int                     numplanes;
                    220: extern dplane_t        dplanes[MAX_MAP_PLANES];
                    221: 
                    222: extern int                     numvertexes;
                    223: extern dvertex_t       dvertexes[MAX_MAP_VERTS];
                    224: 
                    225: extern int                     numnodes;
                    226: extern dnode_t         dnodes[MAX_MAP_NODES];
                    227: 
                    228: extern int                     numtexinfo;
                    229: extern texinfo_t       texinfo[MAX_MAP_TEXINFO];
                    230: 
                    231: extern int                     numfaces;
                    232: extern dface_t         dfaces[MAX_MAP_FACES];
                    233: 
                    234: extern int                     numclipnodes;
                    235: extern dclipnode_t     dclipnodes[MAX_MAP_CLIPNODES];
                    236: 
                    237: extern int                     numedges;
                    238: extern dedge_t         dedges[MAX_MAP_EDGES];
                    239: 
                    240: extern int                     nummarksurfaces;
                    241: extern unsigned short  dmarksurfaces[MAX_MAP_MARKSURFACES];
                    242: 
                    243: extern int                     numsurfedges;
                    244: extern int                     dsurfedges[MAX_MAP_SURFEDGES];
                    245: 
                    246: 
                    247: 
                    248: void   LoadBSPFile (char *filename);
                    249: void   WriteBSPFile (char *filename);
                    250: void   PrintBSPFileSizes (void);
                    251: 
                    252: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.