qbsp: use common's bspfile.hh
This commit is contained in:
parent
00cdc2924a
commit
890db18171
|
|
@ -25,226 +25,11 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define BSPVERSION 29
|
||||
#define BSPHLVERSION 30
|
||||
#define BSP2RMQVERSION (('B' << 24) | ('S' << 16) | ('P' << 8) | '2')
|
||||
#define BSP2VERSION ('B' | ('S' << 8) | ('P' << 16) | ('2' << 24))
|
||||
|
||||
typedef struct {
|
||||
int32_t fileofs;
|
||||
int32_t filelen;
|
||||
} lump_t;
|
||||
|
||||
#define LUMP_ENTITIES 0
|
||||
#define LUMP_PLANES 1
|
||||
#define LUMP_TEXTURES 2
|
||||
#define LUMP_VERTEXES 3
|
||||
#define LUMP_VISIBILITY 4
|
||||
#define LUMP_NODES 5
|
||||
#define LUMP_TEXINFO 6
|
||||
#define LUMP_FACES 7
|
||||
#define LUMP_LIGHTING 8
|
||||
#define LUMP_CLIPNODES 9
|
||||
#define LUMP_LEAFS 10
|
||||
#define LUMP_MARKSURFACES 11
|
||||
#define LUMP_EDGES 12
|
||||
#define LUMP_SURFEDGES 13
|
||||
#define LUMP_MODELS 14
|
||||
|
||||
#define BSP_LUMPS 15
|
||||
|
||||
//these are private to the qbsp
|
||||
#define BSPX_LMSHIFT 15
|
||||
#define BSPX_LUMPS 16
|
||||
|
||||
typedef struct {
|
||||
char id[4]; //'BSPX'
|
||||
uint32_t numlumps;
|
||||
} bspx_header_t;
|
||||
typedef struct {
|
||||
char lumpname[24];
|
||||
uint32_t fileofs;
|
||||
uint32_t filelen;
|
||||
} bspx_lump_t;
|
||||
|
||||
typedef struct {
|
||||
#define MAX_MAP_HULLS_Q1 4
|
||||
float mins[3], maxs[3];
|
||||
float origin[3];
|
||||
int32_t headnode[MAX_MAP_HULLS_Q1]; /* 4 for backward compat, only 3 hulls exist */
|
||||
int32_t visleafs; /* not including the solid leaf 0 */
|
||||
int32_t firstface, numfaces;
|
||||
} dmodelq1_t;
|
||||
typedef struct {
|
||||
#define MAX_MAP_HULLS_H2 8
|
||||
float mins[3], maxs[3];
|
||||
float origin[3];
|
||||
int32_t headnode[MAX_MAP_HULLS_H2]; /* hexen2 only uses 6 */
|
||||
int32_t visleafs; /* not including the solid leaf 0 */
|
||||
int32_t firstface, numfaces;
|
||||
} dmodelh2_t;
|
||||
typedef dmodelh2_t dmodel_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t version;
|
||||
lump_t lumps[BSP_LUMPS];
|
||||
} dheader_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t nummiptex;
|
||||
int32_t dataofs[]; /* [nummiptex] */
|
||||
} dmiptexlump_t;
|
||||
|
||||
typedef struct {
|
||||
float point[3];
|
||||
} dvertex_t;
|
||||
|
||||
typedef struct {
|
||||
float normal[3];
|
||||
float dist;
|
||||
int32_t type;
|
||||
} dplane_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
int16_t children[2]; /* negative numbers are -(leafs+1), not nodes */
|
||||
int16_t mins[3]; /* for sphere culling */
|
||||
int16_t maxs[3];
|
||||
uint16_t firstface;
|
||||
uint16_t numfaces; /* counting both sides */
|
||||
} bsp29_dnode_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
int32_t children[2]; /* negative numbers are -(leafs+1), not nodes */
|
||||
int16_t mins[3]; /* for sphere culling */
|
||||
int16_t maxs[3];
|
||||
uint32_t firstface;
|
||||
uint32_t numfaces; /* counting both sides */
|
||||
} bsp2rmq_dnode_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
int32_t children[2]; /* negative numbers are -(leafs+1), not nodes */
|
||||
float mins[3]; /* for sphere culling */
|
||||
float maxs[3];
|
||||
uint32_t firstface;
|
||||
uint32_t numfaces; /* counting both sides */
|
||||
} bsp2_dnode_t;
|
||||
|
||||
/*
|
||||
* Note that children are interpreted as unsigned values now, so that we can
|
||||
* handle > 32k clipnodes. Values > 0xFFF0 can be assumed to be CONTENTS
|
||||
* values and can be read as the signed value to be compatible with the above
|
||||
* (i.e. simply subtract 65536).
|
||||
*/
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
uint16_t children[2]; /* "negative" numbers are contents */
|
||||
} bsp29_dclipnode_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
int32_t children[2]; /* negative numbers are contents */
|
||||
} bsp2_dclipnode_t;
|
||||
|
||||
typedef struct texinfo_s {
|
||||
float vecs[2][4]; /* [s/t][xyz offset] */
|
||||
int32_t miptex;
|
||||
int32_t flags;
|
||||
} texinfo_t;
|
||||
|
||||
/*
|
||||
* Note that edge 0 is never used, because negative edge nums are used for
|
||||
* counterclockwise use of the edge in a face.
|
||||
*/
|
||||
typedef struct {
|
||||
uint16_t v[2]; /* vertex numbers */
|
||||
} bsp29_dedge_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t v[2]; /* vertex numbers */
|
||||
} bsp2_dedge_t;
|
||||
|
||||
#define MAXLIGHTMAPS 4
|
||||
typedef struct {
|
||||
int16_t planenum;
|
||||
int16_t side;
|
||||
|
||||
int32_t firstedge; /* we must support > 64k edges */
|
||||
int16_t numedges;
|
||||
int16_t texinfo;
|
||||
|
||||
/* lighting info */
|
||||
uint8_t styles[MAXLIGHTMAPS];
|
||||
int32_t lightofs; /* start of [numstyles*surfsize] samples */
|
||||
} bsp29_dface_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t planenum;
|
||||
int32_t side;
|
||||
|
||||
int32_t firstedge; /* we must support > 64k edges */
|
||||
int32_t numedges;
|
||||
int32_t texinfo;
|
||||
|
||||
/* lighting info */
|
||||
uint8_t styles[MAXLIGHTMAPS];
|
||||
int32_t lightofs; /* start of [numstyles*surfsize] samples */
|
||||
} bsp2_dface_t;
|
||||
|
||||
/* Ambient sounds */
|
||||
#define AMBIENT_WATER 0
|
||||
#define AMBIENT_SKY 1
|
||||
#define AMBIENT_SLIME 2
|
||||
#define AMBIENT_LAVA 3
|
||||
#define NUM_AMBIENTS 4
|
||||
|
||||
/*
|
||||
* leaf 0 is the generic CONTENTS_SOLID leaf, used for all solid areas
|
||||
* all other leafs need visibility info
|
||||
*/
|
||||
typedef struct {
|
||||
int32_t contents;
|
||||
int32_t visofs; /* -1 = no visibility info */
|
||||
int16_t mins[3]; /* for frustum culling */
|
||||
int16_t maxs[3];
|
||||
uint16_t firstmarksurface;
|
||||
uint16_t nummarksurfaces;
|
||||
uint8_t ambient_level[NUM_AMBIENTS];
|
||||
} bsp29_dleaf_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t contents;
|
||||
int32_t visofs; /* -1 = no visibility info */
|
||||
int16_t mins[3]; /* for frustum culling */
|
||||
int16_t maxs[3];
|
||||
uint32_t firstmarksurface;
|
||||
uint32_t nummarksurfaces;
|
||||
uint8_t ambient_level[NUM_AMBIENTS];
|
||||
} bsp2rmq_dleaf_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t contents;
|
||||
int32_t visofs; /* -1 = no visibility info */
|
||||
float mins[3]; /* for frustum culling */
|
||||
float maxs[3];
|
||||
uint32_t firstmarksurface;
|
||||
uint32_t nummarksurfaces;
|
||||
uint8_t ambient_level[NUM_AMBIENTS];
|
||||
} bsp2_dleaf_t;
|
||||
#include <common/bspfile.hh>
|
||||
|
||||
void LoadBSPFile(void);
|
||||
void WriteBSPFile(void);
|
||||
void PrintBSPFileSizes(void);
|
||||
void BSPX_AddLump(const char *xname, const void *xdata, size_t xsize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __BSPFILE_H__ */
|
||||
|
|
|
|||
|
|
@ -97,13 +97,6 @@
|
|||
// Pi
|
||||
#define Q_PI 3.14159265358979323846
|
||||
|
||||
// Possible contents of a leaf node
|
||||
#define CONTENTS_EMPTY -1
|
||||
#define CONTENTS_SOLID -2
|
||||
#define CONTENTS_WATER -3
|
||||
#define CONTENTS_SLIME -4
|
||||
#define CONTENTS_LAVA -5
|
||||
#define CONTENTS_SKY -6
|
||||
#define CONTENTS_CLIP -7 /* compiler internal use only */
|
||||
#define CONTENTS_HINT -8 /* compiler internal use only */
|
||||
#define CONTENTS_ORIGIN -9 /* compiler internal use only */
|
||||
|
|
@ -121,31 +114,6 @@
|
|||
#define CFLAGS_BMODEL_MIRROR_INSIDE (1U << 3) /* set "_mirrorinside" "1" on a bmodel to mirror faces for when the player is inside. */
|
||||
#define CFLAGS_NO_CLIPPING_SAME_TYPE (1U << 4) /* Don't clip the same content type. mostly intended for CONTENTS_DETAIL_ILLUSIONARY */
|
||||
|
||||
// Texture flags. Only TEX_SPECIAL is written to the .bsp.
|
||||
// Extended flags are written to a .texinfo file and read by the light tool
|
||||
#define TEX_SPECIAL (1ULL << 0) /* sky or liquid (no lightmap or subdivision */
|
||||
#define TEX_SKIP (1ULL << 1) /* an invisible surface */
|
||||
#define TEX_HINT (1ULL << 2) /* hint surface */
|
||||
#define TEX_NODIRT (1ULL << 3) /* don't receive dirtmapping */
|
||||
#define TEX_PHONG_ANGLE_SHIFT 4
|
||||
#define TEX_PHONG_ANGLE_MASK (255ULL << TEX_PHONG_ANGLE_SHIFT) /* 8 bit value. if non zero, enables phong shading and gives the angle threshold to use. */
|
||||
#define TEX_MINLIGHT_SHIFT 12
|
||||
#define TEX_MINLIGHT_MASK (255ULL << TEX_MINLIGHT_SHIFT) /* 8 bit value, minlight value for this face. */
|
||||
#define TEX_MINLIGHT_COLOR_R_SHIFT 20
|
||||
#define TEX_MINLIGHT_COLOR_R_MASK (255ULL << TEX_MINLIGHT_COLOR_R_SHIFT) /* 8 bit value, red minlight color for this face. */
|
||||
#define TEX_MINLIGHT_COLOR_G_SHIFT 28
|
||||
#define TEX_MINLIGHT_COLOR_G_MASK (255ULL << TEX_MINLIGHT_COLOR_G_SHIFT) /* 8 bit value, green minlight color for this face. */
|
||||
#define TEX_MINLIGHT_COLOR_B_SHIFT 36
|
||||
#define TEX_MINLIGHT_COLOR_B_MASK (255ULL << TEX_MINLIGHT_COLOR_B_SHIFT) /* 8 bit value, blue minlight color for this face. */
|
||||
#define TEX_NOSHADOW (1ULL << 44) /* don't cast a shadow */
|
||||
#define TEX_PHONG_ANGLE_CONCAVE_SHIFT 45
|
||||
#define TEX_PHONG_ANGLE_CONCAVE_MASK (255ULL << TEX_PHONG_ANGLE_CONCAVE_SHIFT) /* 8 bit value. if non zero, overrides _phong_angle for concave joints. */
|
||||
#define TEX_NOBOUNCE (1ULL << 53) /* light doesn't bounce off this face */
|
||||
#define TEX_NOMINLIGHT (1ULL << 54) /* opt out of minlight on this face */
|
||||
#define TEX_NOEXPAND (1ULL << 55) /* don't expand this face for larger clip hulls */
|
||||
#define TEX_LIGHTIGNORE (1ULL << 56)
|
||||
#define TEX_LIGHT_ALPHA_SHIFT 57
|
||||
#define TEX_LIGHT_ALPHA_MASK (127ULL << TEX_LIGHT_ALPHA_SHIFT) /* 7 bit unsigned value. custom opacity */
|
||||
/*
|
||||
* The quality of the bsp output is highly sensitive to these epsilon values.
|
||||
* Notes:
|
||||
|
|
|
|||
Loading…
Reference in New Issue