|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.