diff --git a/src/deh_tables.c b/src/deh_tables.c index 9603ce86e..304cc2e8b 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -6982,6 +6982,7 @@ struct int_const_s const INT_CONST[] = { {"RF_DROPSHADOW",RF_DROPSHADOW}, {"RF_ABSOLUTELIGHTLEVEL",RF_ABSOLUTELIGHTLEVEL}, {"RF_REDUCEVFX",RF_REDUCEVFX}, + {"RF_HIDEINSKYBOX",RF_HIDEINSKYBOX}, {"RF_DONTDRAW",RF_DONTDRAW}, {"RF_DONTDRAWP1",RF_DONTDRAWP1}, {"RF_DONTDRAWP2",RF_DONTDRAWP2}, diff --git a/src/k_battle.c b/src/k_battle.c index 97b134e0b..e6a971163 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -642,7 +642,7 @@ static void K_SpawnOvertimeLaser(fixed_t x, fixed_t y, fixed_t scale) } mo->angle = R_PointToAngle2(mo->x, mo->y, battleovertime.x, battleovertime.y) + ANGLE_90; - mo->renderflags |= (RF_DONTDRAW & ~(K_GetPlayerDontDrawFlag(player))); + mo->renderflags |= (RF_DONTDRAW & ~(K_GetPlayerDontDrawFlag(player))) | RF_HIDEINSKYBOX; P_SetScale(mo, scale); diff --git a/src/r_defs.h b/src/r_defs.h index ddfe986c8..305fcecde 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -975,6 +975,7 @@ typedef enum RF_ABSOLUTELIGHTLEVEL = 0x00010000, // mobj_t.lightlevel is absolute instead of relative RF_REDUCEVFX = 0x00020000, // only mobj_t.owner can see this object + RF_HIDEINSKYBOX = 0x00040000, // do not render in skybox RF_DONTDRAW = 0x00F00000, // --Don't generate a vissprite RF_DONTDRAWP1 = 0x00100000, // No P1 diff --git a/src/r_things.cpp b/src/r_things.cpp index 22163ffef..6afe405b1 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -2792,6 +2792,12 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel) limit_dist = (fixed_t)(cv_drawdist.value) * mapobjectscale; for (thing = sec->thinglist; thing; thing = thing->snext) { + // do not render in skybox + if ((thing->renderflags & RF_HIDEINSKYBOX) && portalskipprecipmobjs) + { + continue; + } + if (R_ThingWithinDist(thing, limit_dist)) { const INT32 oldobjectsdrawn = objectsdrawn;