mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 17:22:12 +00:00
Prevent linkdraw sprites from connecting to shadows
This commit is contained in:
parent
48c1ce3ac3
commit
c46c92d605
2 changed files with 12 additions and 2 deletions
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue