Annotation of quake1/bspfile.h, revision 1.1.1.2

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

unix.superglobalmegacorp.com

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