]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/bobtoolz/bsploader.h
uncrustify! now the code is only ugly on the *inside*
[xonotic/netradiant.git] / contrib / bobtoolz / bsploader.h
1 #define LUMP_ENTITIES       0
2 #define LUMP_SHADERS        1
3 #define LUMP_PLANES         2
4 #define LUMP_NODES          3
5 #define LUMP_LEAFS          4
6 #define LUMP_LEAFSURFACES   5
7 #define LUMP_LEAFBRUSHES    6
8 #define LUMP_MODELS         7
9 #define LUMP_BRUSHES        8
10 #define LUMP_BRUSHSIDES     9
11 #define LUMP_DRAWVERTS      10
12 #define LUMP_DRAWINDEXES    11
13 #define LUMP_FOGS           12
14 #define LUMP_SURFACES       13
15 #define LUMP_LIGHTMAPS      14
16 #define LUMP_LIGHTGRID      15
17 #define LUMP_VISIBILITY     16
18 #define HEADER_LUMPS        17
19
20 typedef struct {
21         int fileofs, filelen;
22 } lump_t;
23
24 typedef struct {
25         int ident;
26         int version;
27
28         lump_t lumps[HEADER_LUMPS];
29 } dheader_t;
30
31 typedef struct {
32         float normal[3];
33         float dist;
34 } dplane_t;
35
36 typedef struct {
37         int planeNum;
38         int children[2];            // negative numbers are -(leafs+1), not nodes
39         int mins[3];                // for frustom culling
40         int maxs[3];
41 } dnode_t;
42
43 typedef struct {
44         int cluster;                    // -1 = opaque cluster (do I still store these?)
45         int area;
46
47         int mins[3];                    // for frustum culling
48         int maxs[3];
49
50         int firstLeafSurface;
51         int numLeafSurfaces;
52
53         int firstLeafBrush;
54         int numLeafBrushes;
55 } dleaf_t;
56
57 typedef struct {
58         vec3_t xyz;
59         float st[2];
60         float lightmap[2];
61         vec3_t normal;
62         byte color[4];
63 } qdrawVert_t;
64
65 typedef struct {
66         int shaderNum;
67         int fogNum;
68         int surfaceType;
69
70         int firstVert;
71         int numVerts;
72
73         int firstIndex;
74         int numIndexes;
75
76         int lightmapNum;
77         int lightmapX, lightmapY;
78         int lightmapWidth, lightmapHeight;
79
80         vec3_t lightmapOrigin;
81         vec3_t lightmapVecs[3];         // for patches, [0] and [1] are lodbounds
82
83         int patchWidth;
84         int patchHeight;
85 } dsurface_t;
86
87 typedef struct {
88         int planeNum;                   // positive plane side faces out of the leaf
89         int shaderNum;
90 } dbrushside_t;
91
92 typedef struct {
93         int firstSide;
94         int numSides;
95         int shaderNum;              // the shader that determines the contents flags
96 } dbrush_t;
97
98 typedef enum {
99         MST_BAD,
100         MST_PLANAR,
101         MST_PATCH,
102         MST_TRIANGLE_SOUP,
103         MST_FLARE
104 } mapSurfaceType_t;
105
106 #define MAX_MAP_VISIBILITY  0x200000
107 #define MAX_MAP_NODES       0x20000
108 #define MAX_MAP_PLANES      0x20000
109 #define MAX_MAP_LEAFS       0x20000
110
111 extern int numVisBytes;
112 extern int numleafs;
113 extern int numplanes;
114 extern int numnodes;
115 extern int numDrawVerts;
116 extern int numDrawSurfaces;
117 extern int numleafsurfaces;
118 extern int numbrushes;
119 extern int numbrushsides;
120 extern int numleafbrushes;
121
122 extern dnode_t         *dnodes;
123 extern dplane_t        *dplanes;
124 extern dleaf_t         *dleafs;
125 extern byte            *visBytes;
126 extern qdrawVert_t     *drawVerts;
127 extern dsurface_t      *drawSurfaces;
128 extern int             *dleafsurfaces;
129 extern dbrush_t        *dbrushes;
130 extern dbrushside_t    *dbrushsides;
131 extern int             *dleafbrushes;
132
133 qboolean LoadBSPFile( const char *filename );
134 void FreeBSPData();