]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/bobtoolz/bsploader.h
fixed eol-style
[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 bool LoadBSPFile( const char *filename );
134 void FreeBSPData();