]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - bspfile.h
use dynamic eye position-centered bouncegrid when rendering in dynamic
[xonotic/darkplaces.git] / bspfile.h
index 35945c20bee8379d1211adacd86bc9ead4a06227..648b294d4d978abe79a58a7ceb7a87fc4204a81d 100644 (file)
--- a/bspfile.h
+++ b/bspfile.h
@@ -19,21 +19,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 
 */
 
 
-#define        MAX_MAP_HULLS           4
-#define        MAX_MAP_LEAFS           65536   // was 8192
-
-// key / value pair sizes
-
-#define        MAX_KEY         32
-#define        MAX_VALUE       1024
+#define MAX_MAP_HULLS 16 // Q1BSP has 4, Hexen2 Q1BSP has 8, MCBSP has 16
 
 //=============================================================================
 
 
 #define BSPVERSION     29
 
 //=============================================================================
 
 
 #define BSPVERSION     29
-#define        TOOLVERSION     2
 
 
-typedef struct
+typedef struct lump_s
 {
        int             fileofs, filelen;
 } lump_t;
 {
        int             fileofs, filelen;
 } lump_t;
@@ -55,7 +48,14 @@ typedef struct
 #define        LUMP_MODELS             14
 #define        HEADER_LUMPS    15
 
 #define        LUMP_MODELS             14
 #define        HEADER_LUMPS    15
 
-typedef struct
+typedef struct hullinfo_s
+{
+       int                     filehulls;
+       float           hullsizes[MAX_MAP_HULLS][2][3];
+} hullinfo_t;
+
+// WARNING: this struct does NOT match q1bsp's disk format because MAX_MAP_HULLS has been changed by Sajt's MCBSP code, this struct is only being used in memory as a result
+typedef struct dmodel_s
 {
        float           mins[3], maxs[3];
        float           origin[3];
 {
        float           mins[3], maxs[3];
        float           origin[3];
@@ -64,13 +64,13 @@ typedef struct
        int                     firstface, numfaces;
 } dmodel_t;
 
        int                     firstface, numfaces;
 } dmodel_t;
 
-typedef struct
+typedef struct dheader_s
 {
        int                     version;
        lump_t          lumps[HEADER_LUMPS];
 } dheader_t;
 
 {
        int                     version;
        lump_t          lumps[HEADER_LUMPS];
 } dheader_t;
 
-typedef struct
+typedef struct dmiptexlump_s
 {
        int                     nummiptex;
        int                     dataofs[4];             // [nummiptex]
 {
        int                     nummiptex;
        int                     dataofs[4];             // [nummiptex]
@@ -85,7 +85,7 @@ typedef struct miptex_s
 } miptex_t;
 
 
 } miptex_t;
 
 
-typedef struct
+typedef struct dvertex_s
 {
        float   point[3];
 } dvertex_t;
 {
        float   point[3];
 } dvertex_t;
@@ -101,7 +101,7 @@ typedef struct
 #define        PLANE_ANYY              4
 #define        PLANE_ANYZ              5
 
 #define        PLANE_ANYY              4
 #define        PLANE_ANYZ              5
 
-typedef struct
+typedef struct dplane_s
 {
        float   normal[3];
        float   dist;
 {
        float   normal[3];
        float   dist;
@@ -163,6 +163,7 @@ typedef struct
 #define CONTENTSQ3_JUMPPAD                     0x00080000 // hint for Q3's bots
 #define CONTENTSQ3_CLUSTERPORTAL       0x00100000 // hint for Q3's bots
 #define CONTENTSQ3_DONOTENTER          0x00200000 // hint for Q3's bots
 #define CONTENTSQ3_JUMPPAD                     0x00080000 // hint for Q3's bots
 #define CONTENTSQ3_CLUSTERPORTAL       0x00100000 // hint for Q3's bots
 #define CONTENTSQ3_DONOTENTER          0x00200000 // hint for Q3's bots
+#define CONTENTSQ3_BOTCLIP                     0x00400000 // hint for Q3's bots
 #define CONTENTSQ3_ORIGIN                      0x01000000 // used by origin brushes to indicate origin of bmodel (removed by map compiler)
 #define CONTENTSQ3_BODY                                0x02000000 // used by bbox entities (should never be on a brush)
 #define CONTENTSQ3_CORPSE                      0x04000000 // used by dead bodies (SOLID_CORPSE in darkplaces)
 #define CONTENTSQ3_ORIGIN                      0x01000000 // used by origin brushes to indicate origin of bmodel (removed by map compiler)
 #define CONTENTSQ3_BODY                                0x02000000 // used by bbox entities (should never be on a brush)
 #define CONTENTSQ3_CORPSE                      0x04000000 // used by dead bodies (SOLID_CORPSE in darkplaces)
@@ -172,8 +173,58 @@ typedef struct
 #define CONTENTSQ3_TRIGGER                     0x40000000 // used by trigger entities
 #define CONTENTSQ3_NODROP                      0x80000000 // remove items that fall into this brush
 
 #define CONTENTSQ3_TRIGGER                     0x40000000 // used by trigger entities
 #define CONTENTSQ3_NODROP                      0x80000000 // remove items that fall into this brush
 
+#define SUPERCONTENTS_SOLID                    0x00000001
+#define SUPERCONTENTS_WATER                    0x00000002
+#define SUPERCONTENTS_SLIME                    0x00000004
+#define SUPERCONTENTS_LAVA                     0x00000008
+#define SUPERCONTENTS_SKY                      0x00000010
+#define SUPERCONTENTS_BODY                     0x00000020
+#define SUPERCONTENTS_CORPSE           0x00000040
+#define SUPERCONTENTS_NODROP           0x00000080
+#define SUPERCONTENTS_PLAYERCLIP       0x00000100
+#define SUPERCONTENTS_MONSTERCLIP      0x00000200
+#define SUPERCONTENTS_DONOTENTER       0x00000400
+#define SUPERCONTENTS_BOTCLIP          0x00000800
+#define SUPERCONTENTS_OPAQUE           0x00001000
+// TODO: is there any reason to define:
+//   fog?
+//   areaportal?
+//   teleporter?
+//   jumppad?
+//   clusterportal?
+//   detail?         (div0) no, game code should not be allowed to differentiate between structural and detail
+//   structural?     (div0) no, game code should not be allowed to differentiate between structural and detail
+//   trigger?        (div0) no, as these are always solid anyway, and that's all that matters for trigger brushes
+#define SUPERCONTENTS_LIQUIDSMASK      (SUPERCONTENTS_LAVA | SUPERCONTENTS_SLIME | SUPERCONTENTS_WATER)
+#define SUPERCONTENTS_VISBLOCKERMASK   SUPERCONTENTS_OPAQUE
+
+/*
+#define SUPERCONTENTS_DEADMONSTER      0x00000000
+#define SUPERCONTENTS_CURRENT_0                0x00000000
+#define SUPERCONTENTS_CURRENT_90       0x00000000
+#define SUPERCONTENTS_CURRENT_180      0x00000000
+#define SUPERCONTENTS_CURRENT_270      0x00000000
+#define SUPERCONTENTS_CURRENT_DOWN     0x00000000
+#define SUPERCONTENTS_CURRENT_UP       0x00000000
+#define SUPERCONTENTS_AREAPORTAL       0x00000000
+#define SUPERCONTENTS_AUX                      0x00000000
+#define SUPERCONTENTS_CLUSTERPORTAL    0x00000000
+#define SUPERCONTENTS_DETAIL           0x00000000
+#define SUPERCONTENTS_STRUCTURAL       0x00000000
+#define SUPERCONTENTS_DONOTENTER       0x00000000
+#define SUPERCONTENTS_JUMPPAD          0x00000000
+#define SUPERCONTENTS_LADDER           0x00000000
+#define SUPERCONTENTS_MONSTER          0x00000000
+#define SUPERCONTENTS_MONSTERCLIP      0x00000000
+#define SUPERCONTENTS_PLAYERCLIP       0x00000000
+#define SUPERCONTENTS_TELEPORTER       0x00000000
+#define SUPERCONTENTS_TRANSLUCENT      0x00000000
+#define SUPERCONTENTS_TRIGGER          0x00000000
+#define SUPERCONTENTS_WINDOW           0x00000000
+*/
+
 
 
-typedef struct
+typedef struct dnode_s
 {
        int                     planenum;
        short           children[2];    // negative numbers are -(leafs+1), not nodes
 {
        int                     planenum;
        short           children[2];    // negative numbers are -(leafs+1), not nodes
@@ -183,14 +234,14 @@ typedef struct
        unsigned short  numfaces;       // counting both sides
 } dnode_t;
 
        unsigned short  numfaces;       // counting both sides
 } dnode_t;
 
-typedef struct
+typedef struct dclipnode_s
 {
        int                     planenum;
        short           children[2];    // negative numbers are contents
 } dclipnode_t;
 
 
 {
        int                     planenum;
        short           children[2];    // negative numbers are contents
 } dclipnode_t;
 
 
-typedef struct
+typedef struct texinfo_s
 {
        float           vecs[2][4];             // [s/t][xyz offset]
        int                     miptex;
 {
        float           vecs[2][4];             // [s/t][xyz offset]
        int                     miptex;
@@ -200,13 +251,13 @@ typedef struct
 
 // note that edge 0 is never used, because negative edge nums are used for
 // counterclockwise use of the edge in a face
 
 // note that edge 0 is never used, because negative edge nums are used for
 // counterclockwise use of the edge in a face
-typedef struct
+typedef struct dedge_s
 {
        unsigned short  v[2];           // vertex numbers
 } dedge_t;
 
 #define        MAXLIGHTMAPS    4
 {
        unsigned short  v[2];           // vertex numbers
 } dedge_t;
 
 #define        MAXLIGHTMAPS    4
-typedef struct
+typedef struct dface_s
 {
        // LordHavoc: changed from short to unsigned short for q2 support
        unsigned short  planenum;
 {
        // LordHavoc: changed from short to unsigned short for q2 support
        unsigned short  planenum;
@@ -217,7 +268,7 @@ typedef struct
        short           texinfo;
 
 // lighting info
        short           texinfo;
 
 // lighting info
-       qbyte           styles[MAXLIGHTMAPS];
+       unsigned char           styles[MAXLIGHTMAPS];
        int                     lightofs;               // start of [numstyles*surfsize] samples
 } dface_t;
 
        int                     lightofs;               // start of [numstyles*surfsize] samples
 } dface_t;
 
@@ -232,7 +283,7 @@ typedef struct
 
 // leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas
 // all other leafs need visibility info
 
 // leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas
 // all other leafs need visibility info
-typedef struct
+typedef struct dleaf_s
 {
        int                     contents;
        int                     visofs;                         // -1 = no visibility info
 {
        int                     contents;
        int                     visofs;                         // -1 = no visibility info
@@ -243,6 +294,6 @@ typedef struct
        unsigned short          firstmarksurface;
        unsigned short          nummarksurfaces;
 
        unsigned short          firstmarksurface;
        unsigned short          nummarksurfaces;
 
-       qbyte           ambient_level[NUM_AMBIENTS];
+       unsigned char           ambient_level[NUM_AMBIENTS];
 } dleaf_t;
 
 } dleaf_t;