Fix item flicker

This commit is contained in:
Antonio Martinez 2025-05-13 16:00:37 -04:00
parent 6e0bc7a8e5
commit 25de15672e

View file

@ -112,18 +112,22 @@ void Obj_RandomItemVisuals(mobj_t *mobj)
ItemBoxScaling(mobj);
item_vfxtimer(mobj)++;
for (UINT8 i = 0; i <= r_splitscreen; i++)
{
UINT32 flag = K_GetPlayerDontDrawFlag(&players[displayplayers[i]]);
if (!players[displayplayers[i]].cangrabitems)
mobj->renderflags |= flag;
else
mobj->renderflags &= ~(flag);
}
if (mobj->type != MT_RANDOMITEM)
return;
if (!((mobj->flags & MF_NOCLIPTHING) || mobj->fuse))
{
for (UINT8 i = 0; i <= r_splitscreen; i++)
{
UINT32 flag = K_GetPlayerDontDrawFlag(&players[displayplayers[i]]);
if (!players[displayplayers[i]].cangrabitems)
mobj->renderflags |= flag;
else
mobj->renderflags &= ~(flag);
}
}
// Respawn flow, documented by a dumb asshole:
// P_TouchSpecialThing -> P_ItemPop sets fuse, NOCLIPTHING and DONTDRAW.
// P_FuseThink does visual flicker, and when fuse is 0, unsets NOCLIPTHING/DONTDRAW/etc...