mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
- fixed: sprite clipping did not work anymore because the 'invalid' value was inconsistent.
- cleaned up the 'if' condition in PerformSpriteClipAdjustment, - enabled weapon bobbing interpolation.
This commit is contained in:
parent
88542bed78
commit
4af859094c
2 changed files with 11 additions and 10 deletions
|
@ -379,13 +379,14 @@ inline void GLSprite::PutSprite(bool translucent)
|
||||||
|
|
||||||
void GLSprite::PerformSpriteClipAdjustment(AActor *thing, const DVector2 &thingpos, float spriteheight)
|
void GLSprite::PerformSpriteClipAdjustment(AActor *thing, const DVector2 &thingpos, float spriteheight)
|
||||||
{
|
{
|
||||||
bool smarterclip = false; // Set to true if one condition triggers the test below
|
const float NO_VAL = 100000000.0f;
|
||||||
if (((thing->player || thing->flags3&MF3_ISMONSTER ||
|
bool clipthing = (thing->player || thing->flags3&MF3_ISMONSTER || thing->IsKindOf(RUNTIME_CLASS(AInventory))) && (thing->flags&MF_ICECORPSE || !(thing->flags&MF_CORPSE));
|
||||||
thing->IsKindOf(RUNTIME_CLASS(AInventory))) && (thing->flags&MF_ICECORPSE ||
|
bool smarterclip = !clipthing && gl_spriteclip == 3;
|
||||||
!(thing->flags&MF_CORPSE))) || (gl_spriteclip == 3 && (smarterclip = true)) || gl_spriteclip > 1)
|
if (clipthing || gl_spriteclip > 1)
|
||||||
{
|
{
|
||||||
float btm = 100000000.0f;
|
|
||||||
float top = -100000000.0f;
|
float btm = NO_VAL;
|
||||||
|
float top = -NO_VAL;
|
||||||
extsector_t::xfloor &x = thing->Sector->e->XFloor;
|
extsector_t::xfloor &x = thing->Sector->e->XFloor;
|
||||||
|
|
||||||
if (x.ffloors.Size())
|
if (x.ffloors.Size())
|
||||||
|
@ -403,7 +404,7 @@ void GLSprite::PerformSpriteClipAdjustment(AActor *thing, const DVector2 &thingp
|
||||||
{
|
{
|
||||||
top = ceilingh;
|
top = ceilingh;
|
||||||
}
|
}
|
||||||
if (btm != 100000000.0f && top != -100000000.0f)
|
if (btm != NO_VAL && top != -NO_VAL)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -418,9 +419,9 @@ void GLSprite::PerformSpriteClipAdjustment(AActor *thing, const DVector2 &thingp
|
||||||
top = thing->ceilingz;
|
top = thing->ceilingz;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (btm == 1000000.0f)
|
if (btm == NO_VAL)
|
||||||
btm = thing->Sector->floorplane.ZatPoint(thing) - thing->Floorclip;
|
btm = thing->Sector->floorplane.ZatPoint(thing) - thing->Floorclip;
|
||||||
if (top == -1000000.0f)
|
if (top == NO_VAL)
|
||||||
top = thing->Sector->ceilingplane.ZatPoint(thingpos);
|
top = thing->Sector->ceilingplane.ZatPoint(thingpos);
|
||||||
|
|
||||||
// +/-1 to account for the one pixel empty frame around the sprite.
|
// +/-1 to account for the one pixel empty frame around the sprite.
|
||||||
|
|
|
@ -202,7 +202,7 @@ void FGLRenderer::DrawPlayerSprites(sector_t * viewsector, bool hudModelStep)
|
||||||
(r_deathcamera && camera->health <= 0))
|
(r_deathcamera && camera->health <= 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
P_BobWeapon (player, &player->psprites[ps_weapon], &ofsx, &ofsy);
|
P_BobWeapon (player, &player->psprites[ps_weapon], &ofsx, &ofsy, r_TicFracF);
|
||||||
|
|
||||||
// check for fullbright
|
// check for fullbright
|
||||||
if (player->fixedcolormap==NOFIXEDCOLORMAP)
|
if (player->fixedcolormap==NOFIXEDCOLORMAP)
|
||||||
|
|
Loading…
Reference in a new issue