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