]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_brush.h
bring back old glibc workaround
[xonotic/darkplaces.git] / model_brush.h
index 0c0f0e56847f1566eaec2dce6a9f8ae48a5f8148..8020d14ab7990154ef71dc402feebdfc01c616fc 100644 (file)
@@ -51,8 +51,8 @@ typedef struct mplane_s
        vec3_t normal;
        float dist;
        // for texture axis selection and fast side tests
-       int type;
-       int signbits;
+       int type; // set by PlaneClassify()
+       int signbits; // set by PlaneClassify()
 }
 mplane_t;
 
@@ -62,6 +62,8 @@ mplane_t;
 
 //#define SURF_PLANEBACK 2
 
+// indicates that all triangles of the surface should be added to the BIH collision system
+#define MATERIALFLAG_MESHCOLLISIONS 1
 // use alpha blend on this material
 #define MATERIALFLAG_ALPHA 2
 // use additive blend on this material
@@ -108,8 +110,20 @@ mplane_t;
 #define MATERIALFLAG_MODELLIGHT 4194304
 // add directional model lighting to this material (q3bsp lightgrid only)
 #define MATERIALFLAG_MODELLIGHT_DIRECTIONAL 8388608
+// causes RSurf_GetCurrentTexture to leave alone certain fields
+#define MATERIALFLAG_CUSTOMSURFACE 16777216
+// causes MATERIALFLAG_BLENDED to render a depth pass before rendering, hiding backfaces and other hidden geometry
+#define MATERIALFLAG_TRANSDEPTH 33554432
+// like refraction, but doesn't distort etc.
+#define MATERIALFLAG_CAMERA 67108864
+// disable rtlight on surface, use R_LightPoint instead
+#define MATERIALFLAG_NORTLIGHT 134217728
+// alphagen vertex
+#define MATERIALFLAG_ALPHAGEN_VERTEX 268435456
 // combined mask of all attributes that require depth sorted rendering
 #define MATERIALFLAGMASK_DEPTHSORTED (MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST)
+// combined mask of all attributes that cause some sort of transparency
+#define MATERIALFLAGMASK_TRANSLUCENT (MATERIALFLAG_WATERALPHA | MATERIALFLAG_SKY | MATERIALFLAG_NODRAW | MATERIALFLAG_ALPHATEST | MATERIALFLAG_BLENDED | MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION)
 
 typedef struct medge_s
 {
@@ -626,17 +640,17 @@ q3dpvs_t;
 #define Q3SURFACEFLAG_NODAMAGE 1
 #define Q3SURFACEFLAG_SLICK 2
 #define Q3SURFACEFLAG_SKY 4
-#define Q3SURFACEFLAG_LADDER 8
+#define Q3SURFACEFLAG_LADDER 8 // has no surfaceparm
 #define Q3SURFACEFLAG_NOIMPACT 16
 #define Q3SURFACEFLAG_NOMARKS 32
-#define Q3SURFACEFLAG_FLESH 64
+#define Q3SURFACEFLAG_FLESH 64 // has no surfaceparm
 #define Q3SURFACEFLAG_NODRAW 128
 #define Q3SURFACEFLAG_HINT 256
-#define Q3SURFACEFLAG_SKIP 512
+#define Q3SURFACEFLAG_SKIP 512 // has no surfaceparm
 #define Q3SURFACEFLAG_NOLIGHTMAP 1024
 #define Q3SURFACEFLAG_POINTLIGHT 2048
 #define Q3SURFACEFLAG_METALSTEPS 4096
-#define Q3SURFACEFLAG_NOSTEPS 8192
+#define Q3SURFACEFLAG_NOSTEPS 8192 // has no surfaceparm
 #define Q3SURFACEFLAG_NONSOLID 16384
 #define Q3SURFACEFLAG_LIGHTFILTER 32768
 #define Q3SURFACEFLAG_ALPHASHADOW 65536
@@ -693,9 +707,10 @@ typedef struct q3mbrushside_s
 }
 q3mbrushside_t;
 
-#define CHECKPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] & (1 << ((b) & 7))) : false)
-#define SETPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] |= (1 << ((b) & 7))) : false)
-#define CLEARPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] &= ~(1 << ((b) & 7))) : false)
+// the first cast is to shut up a stupid warning by clang, the second cast is to make both sides have the same type
+#define CHECKPVSBIT(pvs,b) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] & (1 << ((b) & 7))) : (unsigned char) false)
+#define SETPVSBIT(pvs,b) (void) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] |= (1 << ((b) & 7))) : (unsigned char) false)
+#define CLEARPVSBIT(pvs,b) (void) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] &= ~(1 << ((b) & 7))) : (unsigned char) false)
 
 #endif