|
|
|
@ -84,23 +84,13 @@ typedef struct |
|
|
|
unsigned char b : 5; |
|
|
|
} ps1bsp_facevertex_t; |
|
|
|
|
|
|
|
#define SURF_PLANEBACK 0x2 |
|
|
|
#define SURF_DRAWSKY 0x4 |
|
|
|
#define SURF_DRAWSPRITE 0x8 |
|
|
|
#define SURF_DRAWTURB 0x10 |
|
|
|
#define SURF_DRAWTILED 0x20 |
|
|
|
#define SURF_DRAWBACKGROUND 0x40 |
|
|
|
#define SURF_UNDERWATER 0x80 |
|
|
|
#define SURF_NOTEXTURE 0x100 |
|
|
|
#define SURF_DRAWFENCE 0x200 |
|
|
|
#define SURF_DRAWLAVA 0x400 |
|
|
|
#define SURF_DRAWSLIME 0x800 |
|
|
|
#define SURF_DRAWTELE 0x1000 |
|
|
|
#define SURF_DRAWWATER 0x2000 |
|
|
|
#define SURF_DRAWSKY 0x2 |
|
|
|
#define SURF_DRAWTURB 0x4 |
|
|
|
#define SURF_DRAWWATER 0x8 |
|
|
|
|
|
|
|
// High quality: Face -> polygons -> polygon vertex indices (index + UV + light) -> vertices |
|
|
|
// Low quality: Face -> face vertex indices (index + color) -> vertices |
|
|
|
typedef struct |
|
|
|
typedef struct ps1bsp_face_s |
|
|
|
{ |
|
|
|
unsigned short planeId; |
|
|
|
unsigned char side; |
|
|
|
@ -108,18 +98,20 @@ typedef struct |
|
|
|
// Used for high-quality tesselated textured drawing |
|
|
|
unsigned short firstPolygon; |
|
|
|
unsigned char numPolygons; |
|
|
|
unsigned char totalQuads; |
|
|
|
|
|
|
|
// Used for low-quality untextured vertex colored drawing |
|
|
|
unsigned short firstFaceVertex; |
|
|
|
unsigned char numFaceVertices; |
|
|
|
|
|
|
|
unsigned char textureId; |
|
|
|
unsigned short flags; |
|
|
|
unsigned char flags; |
|
|
|
|
|
|
|
// Used for backface culling |
|
|
|
SVECTOR center; |
|
|
|
|
|
|
|
// Run-time data |
|
|
|
const struct ps1bsp_face_s* nextFace; // For chaining faces in drawing order |
|
|
|
u_long drawFrame; // Which frame was this face last drawn on? Used to check if this face should be drawn. |
|
|
|
} ps1bsp_face_t; |
|
|
|
|
|
|
|
@ -138,19 +130,18 @@ typedef struct |
|
|
|
SVECTOR boundingSphere; |
|
|
|
} ps1bsp_node_t; |
|
|
|
|
|
|
|
typedef struct |
|
|
|
typedef struct ps1bsp_leaf_s |
|
|
|
{ |
|
|
|
int type; |
|
|
|
short type; |
|
|
|
int vislist; |
|
|
|
|
|
|
|
SVECTOR boundingSphere; |
|
|
|
SVECTOR mins, maxs; |
|
|
|
|
|
|
|
u_short firstLeafFace; |
|
|
|
u_short numLeafFaces; |
|
|
|
|
|
|
|
// Run-time data |
|
|
|
u_short nextLeaf; // For chaining leafs in drawing order |
|
|
|
u_short leafDepth; // At what depth the leaf's faces should be placed in the ordering table |
|
|
|
const struct ps1bsp_leaf_s* nextLeaf; // For chaining leafs in drawing order |
|
|
|
} ps1bsp_leaf_t; |
|
|
|
|
|
|
|
// Pre-parsed and encoded entity data (this runs the risk of becoming too bloated) |
|
|
|
|