]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix visual glitch when traversing warpzones with sv_areagrid_link_SOLID_NOT 0
authorbones_was_here <bones_was_here@xonotic.au>
Fri, 19 May 2023 13:09:26 +0000 (23:09 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Fri, 19 May 2023 13:09:26 +0000 (23:09 +1000)
At a specific position the black texture with green lines was visible.

qcsrc/lib/warpzone/common.qc

index ac32cffdd0f90c703f352428073e8428a3904fd8..12fc316fd74078131e95734385a78afe2b21bf90 100644 (file)
@@ -124,8 +124,10 @@ float WarpZoneLib_BoxTouchesBrush_Recurse(vector mi, vector ma, entity e, entity
        se = trace_ent;
        s = se.solid;
        se.solid = SOLID_NOT;
+       setorigin(se, se.origin); // unlink
        f = WarpZoneLib_BoxTouchesBrush_Recurse(mi, ma, e, ig);
        se.solid = s;
+       setorigin(se, se.origin); // relink
 
        return f;
 }
@@ -146,9 +148,17 @@ float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig)
                ig.dphitcontentsmask |= 128;
 
        s = e.solid;
-       e.solid = SOLID_BSP;
+       if (e.solid != SOLID_BSP)
+       {
+               e.solid = SOLID_BSP;
+               setorigin(e, e.origin); // update linking
+       }
        f = WarpZoneLib_BoxTouchesBrush_Recurse(mi, ma, e, ig);
-       e.solid = s;
+       if (e.solid != s) // if we needed to change .solid temporarily
+       {
+               e.solid = s; // restore it
+               setorigin(e, e.origin); // update linking
+       }
 
        if (Q3COMPAT_COMMON && ig != world)
                ig.dphitcontentsmask &= ~128;