mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-21 11:01:01 +00:00
- don't draw invalid shadow sprites.
This commit is contained in:
parent
e2a1190e32
commit
d1b4bef98d
1 changed files with 13 additions and 12 deletions
|
@ -250,7 +250,6 @@ int DoShadowFindGroundPoint(tspritetype* tspr)
|
||||||
|
|
||||||
void DoShadows(tspriteArray& tsprites, tspritetype* tsp, int viewz, int camang)
|
void DoShadows(tspriteArray& tsprites, tspritetype* tsp, int viewz, int camang)
|
||||||
{
|
{
|
||||||
tspritetype* tSpr = tsprites.newTSprite();
|
|
||||||
auto ownerActor = static_cast<DSWActor*>(tsp->ownerActor);
|
auto ownerActor = static_cast<DSWActor*>(tsp->ownerActor);
|
||||||
int ground_dist = 0;
|
int ground_dist = 0;
|
||||||
int view_dist = 0;
|
int view_dist = 0;
|
||||||
|
@ -271,25 +270,18 @@ void DoShadows(tspriteArray& tsprites, tspritetype* tsp, int viewz, int camang)
|
||||||
}
|
}
|
||||||
|
|
||||||
tsp->sectp = sect;
|
tsp->sectp = sect;
|
||||||
*tSpr = *tsp;
|
|
||||||
// shadow is ALWAYS draw last - status is priority
|
|
||||||
tSpr->statnum = MAXSTATUS;
|
|
||||||
tSpr->sectp = sect;
|
|
||||||
|
|
||||||
if ((tsp->yrepeat >> 2) > 4)
|
if ((tsp->yrepeat >> 2) > 4)
|
||||||
{
|
{
|
||||||
yrepeat = (tsp->yrepeat >> 2) - (GetSpriteSizeY(tsp) / 64) * 2;
|
yrepeat = (tsp->yrepeat >> 2) - (GetSpriteSizeY(tsp) / 64) * 2;
|
||||||
xrepeat = tSpr->xrepeat;
|
xrepeat = tsp->xrepeat;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
yrepeat = tSpr->yrepeat;
|
yrepeat = tsp->yrepeat;
|
||||||
xrepeat = tSpr->xrepeat;
|
xrepeat = tsp->xrepeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
tSpr->shade = 127;
|
|
||||||
tSpr->cstat |= CSTAT_SPRITE_TRANSLUCENT;
|
|
||||||
|
|
||||||
loz = ownerActor->user.loz;
|
loz = ownerActor->user.loz;
|
||||||
if (ownerActor->user.lowActor)
|
if (ownerActor->user.lowActor)
|
||||||
{
|
{
|
||||||
|
@ -300,11 +292,20 @@ void DoShadows(tspriteArray& tsprites, tspritetype* tsp, int viewz, int camang)
|
||||||
}
|
}
|
||||||
|
|
||||||
// need to find the ground here
|
// need to find the ground here
|
||||||
tSpr->set_int_z(loz);
|
|
||||||
|
|
||||||
// if below or close to sprites z don't bother to draw it
|
// if below or close to sprites z don't bother to draw it
|
||||||
if ((viewz - loz) > -Z(8))
|
if ((viewz - loz) > -Z(8))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tspritetype* tSpr = tsprites.newTSprite();
|
||||||
|
*tSpr = *tsp;
|
||||||
|
// shadow is ALWAYS draw last - status is priority
|
||||||
|
tSpr->statnum = MAXSTATUS;
|
||||||
|
tSpr->shade = 127;
|
||||||
|
tSpr->cstat |= CSTAT_SPRITE_TRANSLUCENT;
|
||||||
|
tSpr->set_int_z(loz);
|
||||||
|
|
||||||
// if close to shadows z shrink it
|
// if close to shadows z shrink it
|
||||||
view_dist = labs(loz - viewz) >> 8;
|
view_dist = labs(loz - viewz) >> 8;
|
||||||
|
|
Loading…
Reference in a new issue