Prevent linkdraw sprites from connecting to shadows

This commit is contained in:
fickleheart 2019-12-29 18:30:29 -06:00
parent 48c1ce3ac3
commit c46c92d605
2 changed files with 12 additions and 2 deletions

View file

@ -1122,6 +1122,8 @@ static void R_ProjectDropShadow(mobj_t *thing, vissprite_t *vis, fixed_t tx, fix
} }
} }
if (abs(floorz-viewz)/tz > 4) return; // Prevent stretchy shadows and possible crashes
floordiff = abs(thing->z - floorz); floordiff = abs(thing->z - floorz);
trans = floordiff / (100*FRACUNIT) + 3; trans = floordiff / (100*FRACUNIT) + 3;
@ -1173,7 +1175,7 @@ static void R_ProjectDropShadow(mobj_t *thing, vissprite_t *vis, fixed_t tx, fix
shadow->sector = vis->sector; shadow->sector = vis->sector;
shadow->szt = (INT16)((centeryfrac - FixedMul(shadow->gzt - viewz, yscale))>>FRACBITS); shadow->szt = (INT16)((centeryfrac - FixedMul(shadow->gzt - viewz, yscale))>>FRACBITS);
shadow->sz = (INT16)((centeryfrac - FixedMul(shadow->gz - viewz, yscale))>>FRACBITS); shadow->sz = (INT16)((centeryfrac - FixedMul(shadow->gz - viewz, yscale))>>FRACBITS);
shadow->cut = SC_ISSCALED; //check this shadow->cut = SC_ISSCALED|SC_SHADOW; //check this
shadow->startfrac = 0; shadow->startfrac = 0;
@ -2069,6 +2071,9 @@ static void R_SortVisSprites(vissprite_t* vsprsortedhead, UINT32 start, UINT32 e
if (!(ds->cut & SC_LINKDRAW)) if (!(ds->cut & SC_LINKDRAW))
continue; continue;
if (ds->cut & SC_SHADOW)
continue;
// reuse dsfirst... // reuse dsfirst...
for (dsfirst = unsorted.prev; dsfirst != &unsorted; dsfirst = dsfirst->prev) for (dsfirst = unsorted.prev; dsfirst != &unsorted; dsfirst = dsfirst->prev)
{ {
@ -2076,6 +2081,10 @@ static void R_SortVisSprites(vissprite_t* vsprsortedhead, UINT32 start, UINT32 e
if (dsfirst->cut & SC_LINKDRAW) if (dsfirst->cut & SC_LINKDRAW)
continue; continue;
// don't connect to your shadow!
if (dsfirst->cut & SC_SHADOW)
continue;
// don't connect if it's not the tracer // don't connect if it's not the tracer
if (dsfirst->mobj != ds->mobj) if (dsfirst->mobj != ds->mobj)
continue; continue;

View file

@ -153,7 +153,8 @@ typedef enum
SC_LINKDRAW = 1<<3, SC_LINKDRAW = 1<<3,
SC_FULLBRIGHT = 1<<4, SC_FULLBRIGHT = 1<<4,
SC_VFLIP = 1<<5, SC_VFLIP = 1<<5,
SC_ISSCALED = 1>>6, SC_ISSCALED = 1<<6,
SC_SHADOW = 1<<7,
// masks // masks
SC_CUTMASK = SC_TOP|SC_BOTTOM, SC_CUTMASK = SC_TOP|SC_BOTTOM,
SC_FLAGMASK = ~SC_CUTMASK SC_FLAGMASK = ~SC_CUTMASK