]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - tools/quake3/q3map2/map.c
Merge commit '6e687efe8899278a955efd1e3ba4de5300f7949a' into garux-merge
[xonotic/netradiant.git] / tools / quake3 / q3map2 / map.c
index fdbe01f12e8be0d79ecce5e9ae67be4249ffd7f2..7fb21bbf79be8f1c6446d8b97b075978260e1f4f 100644 (file)
@@ -164,10 +164,10 @@ qboolean SnapNormal( vec3_t normal ){
        // normalized).  The original SnapNormal() didn't snap such vectors - it
        // only snapped vectors that were near a perfect axis.
 
-       //adjusting vectors, that were near a perfect axis, with bigger epsilon
+       //adjusting vectors, that are near perfect axis, with bigger epsilon
        //they cause precision errors
 
-       /*
+
        if ( ( normal[0] != 0.0 || normal[1] != 0.0 ) && fabs(normal[0]) < 0.00025 && fabs(normal[1]) < 0.00025){
                normal[0] = normal[1] = 0.0;
                adjusted = qtrue;
@@ -180,7 +180,7 @@ qboolean SnapNormal( vec3_t normal ){
                normal[2] = normal[1] = 0.0;
                adjusted = qtrue;
        }
-       */
+
 
        /*
        for ( i=0; i<30; i++ )
@@ -528,7 +528,8 @@ void SetBrushContents( brush_t *b ){
        //%     mixed = qfalse;
 
        /* get the content/compile flags for every side in the brush */
-       for ( i = 1; i < b->numsides; i++, s++ )
+       //for ( i = 1; i < b->numsides; i++, s++ )
+       for ( i = 1; i < b->numsides; i++ )
        {
                s = &b->sides[ i ];
                if ( s->shaderInfo == NULL ) {
@@ -539,6 +540,33 @@ void SetBrushContents( brush_t *b ){
 
                contentFlags |= s->contentFlags;
                compileFlags |= s->compileFlags;
+
+               /* resolve inconsistency, when brush content was determined by 1st face */
+               if ( b->contentShader->compileFlags & C_LIQUID ){
+                       continue;
+               }
+               else if ( s->compileFlags & C_LIQUID ){
+                       b->contentShader = s->shaderInfo;
+               }
+               else if ( b->contentShader->compileFlags & C_FOG ){
+                       continue;
+               }
+               else if ( s->compileFlags & C_FOG ){
+                       b->contentShader = s->shaderInfo;
+               }
+               //playerclip
+               else if ( b->contentShader->contentFlags & 0x10000 ){
+                       continue;
+               }
+               else if ( s->contentFlags & 0x10000 ){
+                       b->contentShader = s->shaderInfo;
+               }
+               else if (!( b->contentShader->compileFlags & C_SOLID )){
+                       continue;
+               }
+               else if (!( s->compileFlags & C_SOLID )){
+                       b->contentShader = s->shaderInfo;
+               }
        }
 
        /* ydnar: getting rid of this stupid warning */