From 890db18171a6461b6598a4ad013bee0b8af6d907 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Tue, 24 Aug 2021 00:31:16 -0600 Subject: [PATCH] qbsp: use common's bspfile.hh --- include/qbsp/bspfile.hh | 217 +--------------------------------------- include/qbsp/qbsp.hh | 32 ------ 2 files changed, 1 insertion(+), 248 deletions(-) diff --git a/include/qbsp/bspfile.hh b/include/qbsp/bspfile.hh index b836b476..4bc8b779 100644 --- a/include/qbsp/bspfile.hh +++ b/include/qbsp/bspfile.hh @@ -25,226 +25,11 @@ #include -#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 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__ */ diff --git a/include/qbsp/qbsp.hh b/include/qbsp/qbsp.hh index 502b25c4..f2aa57ec 100644 --- a/include/qbsp/qbsp.hh +++ b/include/qbsp/qbsp.hh @@ -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: