- Fixed: 3D floors partitioning the world into different "HeightLevels" could strip a midtexture

of its clipping information before it was drawn. (On the other hand, I have no idea what this
  ds->bkup and refreshing stuff is about, so I might have broken something somewhere else.)

SVN r3602 (trunk)
This commit is contained in:
Randy Heit 2012-04-28 02:32:33 +00:00
parent 158f32bcda
commit 2f561abdea
1 changed files with 13 additions and 7 deletions

View File

@ -221,6 +221,7 @@ void R_RenderMaskedSegRange (drawseg_t *ds, int x1, int x2)
int i; int i;
sector_t tempsec; // killough 4/13/98 sector_t tempsec; // killough 4/13/98
fixed_t texheight, textop, texheightscale; fixed_t texheight, textop, texheightscale;
bool notrelevant = false;
const sector_t *sec; const sector_t *sec;
@ -360,10 +361,12 @@ void R_RenderMaskedSegRange (drawseg_t *ds, int x1, int x2)
if ((fake3D & FAKE3D_CLIPBOTTOM) && textop <= sclipBottom - viewz) if ((fake3D & FAKE3D_CLIPBOTTOM) && textop <= sclipBottom - viewz)
{ {
notrelevant = true;
goto clearfog; goto clearfog;
} }
if ((fake3D & FAKE3D_CLIPTOP) && textop - texheight >= sclipTop - viewz) if ((fake3D & FAKE3D_CLIPTOP) && textop - texheight >= sclipTop - viewz)
{ {
notrelevant = true;
goto clearfog; goto clearfog;
} }
@ -483,6 +486,8 @@ clearfog:
{ {
R_RenderFakeWallRange(ds, x1, x2); R_RenderFakeWallRange(ds, x1, x2);
} }
if (!notrelevant)
{
if (fake3D & FAKE3D_REFRESHCLIP) if (fake3D & FAKE3D_REFRESHCLIP)
{ {
assert(ds->bkup >= 0); assert(ds->bkup >= 0);
@ -492,6 +497,7 @@ clearfog:
{ {
clearbufshort(openings + ds->sprtopclip - ds->x1 + x1, x2-x1+1, viewheight); clearbufshort(openings + ds->sprtopclip - ds->x1 + x1, x2-x1+1, viewheight);
} }
}
return; return;
} }