-#define LUMP_ENTITIES 0\r
-#define LUMP_SHADERS 1\r
-#define LUMP_PLANES 2\r
-#define LUMP_NODES 3\r
-#define LUMP_LEAFS 4\r
-#define LUMP_LEAFSURFACES 5\r
-#define LUMP_LEAFBRUSHES 6\r
-#define LUMP_MODELS 7\r
-#define LUMP_BRUSHES 8\r
-#define LUMP_BRUSHSIDES 9\r
-#define LUMP_DRAWVERTS 10\r
-#define LUMP_DRAWINDEXES 11\r
-#define LUMP_FOGS 12\r
-#define LUMP_SURFACES 13\r
-#define LUMP_LIGHTMAPS 14\r
-#define LUMP_LIGHTGRID 15\r
-#define LUMP_VISIBILITY 16\r
-#define HEADER_LUMPS 17\r
-\r
-typedef struct {\r
- int fileofs, filelen;\r
-} lump_t;\r
-\r
-typedef struct {\r
- int ident;\r
- int version;\r
-\r
- lump_t lumps[HEADER_LUMPS];\r
-} dheader_t;\r
-\r
-typedef struct {\r
- float normal[3];\r
- float dist;\r
-} dplane_t;\r
-\r
-typedef struct {\r
- int planeNum;\r
- int children[2]; // negative numbers are -(leafs+1), not nodes\r
- int mins[3]; // for frustom culling\r
- int maxs[3];\r
-} dnode_t;\r
-\r
-typedef struct {\r
- int cluster; // -1 = opaque cluster (do I still store these?)\r
- int area;\r
-\r
- int mins[3]; // for frustum culling\r
- int maxs[3];\r
-\r
- int firstLeafSurface;\r
- int numLeafSurfaces;\r
-\r
- int firstLeafBrush;\r
- int numLeafBrushes;\r
-} dleaf_t;\r
-\r
-typedef struct {\r
- vec3_t xyz;\r
- float st[2];\r
- float lightmap[2];\r
- vec3_t normal;\r
- byte color[4];\r
-} qdrawVert_t;\r
-\r
-typedef struct {\r
- int shaderNum;\r
- int fogNum;\r
- int surfaceType;\r
-\r
- int firstVert;\r
- int numVerts;\r
-\r
- int firstIndex;\r
- int numIndexes;\r
-\r
- int lightmapNum;\r
- int lightmapX, lightmapY;\r
- int lightmapWidth, lightmapHeight;\r
-\r
- vec3_t lightmapOrigin;\r
- vec3_t lightmapVecs[3]; // for patches, [0] and [1] are lodbounds\r
-\r
- int patchWidth;\r
- int patchHeight;\r
-} dsurface_t;\r
-\r
-typedef struct {\r
- int planeNum; // positive plane side faces out of the leaf\r
- int shaderNum;\r
-} dbrushside_t;\r
-\r
-typedef struct {\r
- int firstSide;\r
- int numSides;\r
- int shaderNum; // the shader that determines the contents flags\r
-} dbrush_t;\r
-\r
-typedef enum {\r
- MST_BAD,\r
- MST_PLANAR,\r
- MST_PATCH,\r
- MST_TRIANGLE_SOUP,\r
- MST_FLARE\r
-} mapSurfaceType_t;\r
-\r
-#define MAX_MAP_VISIBILITY 0x200000\r
-#define MAX_MAP_NODES 0x20000\r
-#define MAX_MAP_PLANES 0x20000\r
-#define MAX_MAP_LEAFS 0x20000\r
-\r
-extern int numVisBytes;\r
-extern int numleafs;\r
-extern int numplanes;\r
-extern int numnodes;\r
-extern int numDrawVerts;\r
-extern int numDrawSurfaces;\r
-extern int numleafsurfaces;\r
-extern int numbrushes;\r
-extern int numbrushsides;\r
-extern int numleafbrushes;\r
-\r
-extern dnode_t *dnodes;\r
-extern dplane_t *dplanes;\r
-extern dleaf_t *dleafs;\r
-extern byte *visBytes;\r
-extern qdrawVert_t *drawVerts;\r
-extern dsurface_t *drawSurfaces;\r
-extern int *dleafsurfaces;\r
-extern dbrush_t *dbrushes;\r
-extern dbrushside_t *dbrushsides;\r
-extern int *dleafbrushes;\r
-\r
-qboolean LoadBSPFile( const char *filename );\r
-void FreeBSPData();\r
+
+#include "mathlib.h"
+
+#define LUMP_ENTITIES 0
+#define LUMP_SHADERS 1
+#define LUMP_PLANES 2
+#define LUMP_NODES 3
+#define LUMP_LEAFS 4
+#define LUMP_LEAFSURFACES 5
+#define LUMP_LEAFBRUSHES 6
+#define LUMP_MODELS 7
+#define LUMP_BRUSHES 8
+#define LUMP_BRUSHSIDES 9
+#define LUMP_DRAWVERTS 10
+#define LUMP_DRAWINDEXES 11
+#define LUMP_FOGS 12
+#define LUMP_SURFACES 13
+#define LUMP_LIGHTMAPS 14
+#define LUMP_LIGHTGRID 15
+#define LUMP_VISIBILITY 16
+#define HEADER_LUMPS 17
+
+typedef struct {
+ int fileofs, filelen;
+} lump_t;
+
+typedef struct {
+ int ident;
+ int version;
+
+ lump_t lumps[HEADER_LUMPS];
+} dheader_t;
+
+typedef struct {
+ float normal[3];
+ float dist;
+} dplane_t;
+
+typedef struct {
+ int planeNum;
+ int children[2]; // negative numbers are -(leafs+1), not nodes
+ int mins[3]; // for frustom culling
+ int maxs[3];
+} dnode_t;
+
+typedef struct {
+ int cluster; // -1 = opaque cluster (do I still store these?)
+ int area;
+
+ int mins[3]; // for frustum culling
+ int maxs[3];
+
+ int firstLeafSurface;
+ int numLeafSurfaces;
+
+ int firstLeafBrush;
+ int numLeafBrushes;
+} dleaf_t;
+
+typedef struct {
+ vec3_t xyz;
+ float st[2];
+ float lightmap[2];
+ vec3_t normal;
+ byte color[4];
+} qdrawVert_t;
+
+typedef struct {
+ int shaderNum;
+ int fogNum;
+ int surfaceType;
+
+ int firstVert;
+ int numVerts;
+
+ int firstIndex;
+ int numIndexes;
+
+ int lightmapNum;
+ int lightmapX, lightmapY;
+ int lightmapWidth, lightmapHeight;
+
+ vec3_t lightmapOrigin;
+ vec3_t lightmapVecs[3]; // for patches, [0] and [1] are lodbounds
+
+ int patchWidth;
+ int patchHeight;
+} dsurface_t;
+
+typedef struct {
+ int planeNum; // positive plane side faces out of the leaf
+ int shaderNum;
+} dbrushside_t;
+
+typedef struct {
+ int firstSide;
+ int numSides;
+ int shaderNum; // the shader that determines the contents flags
+} dbrush_t;
+
+typedef enum {
+ MST_BAD,
+ MST_PLANAR,
+ MST_PATCH,
+ MST_TRIANGLE_SOUP,
+ MST_FLARE
+} mapSurfaceType_t;
+
+#define MAX_MAP_VISIBILITY 0x200000
+#define MAX_MAP_NODES 0x20000
+#define MAX_MAP_PLANES 0x20000
+#define MAX_MAP_LEAFS 0x20000
+
+extern int numVisBytes;
+extern int numleafs;
+extern int numplanes;
+extern int numnodes;
+extern int numDrawVerts;
+extern int numDrawSurfaces;
+extern int numleafsurfaces;
+extern int numbrushes;
+extern int numbrushsides;
+extern int numleafbrushes;
+
+extern dnode_t *dnodes;
+extern dplane_t *dplanes;
+extern dleaf_t *dleafs;
+extern byte *visBytes;
+extern qdrawVert_t *drawVerts;
+extern dsurface_t *drawSurfaces;
+extern int *dleafsurfaces;
+extern dbrush_t *dbrushes;
+extern dbrushside_t *dbrushsides;
+extern int *dleafbrushes;
+
+bool LoadBSPFile( const char *filename );
+void FreeBSPData();