From d73a42cf02e13edbb7e60783e832a4daf94ffc9a Mon Sep 17 00:00:00 2001 From: Eidolon Date: Sun, 15 Mar 2026 15:11:15 -0500 Subject: [PATCH] Fix bitflags enum spritecut_e for C++ --- src/r_things.cpp | 30 +++++++++++++++--------------- src/r_things.h | 48 +++++++++++++++++++++++------------------------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/src/r_things.cpp b/src/r_things.cpp index 7e608da9c..d026bf21c 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1008,7 +1008,7 @@ static void R_DrawVisSprite(vissprite_t *vis) vis->scale = FixedMul(vis->scale, this_scale); vis->scalestep = FixedMul(vis->scalestep, this_scale); vis->xiscale = FixedDiv(vis->xiscale,this_scale); - vis->cut = static_cast(vis->cut | SC_ISSCALED); + vis->cut |= SC_ISSCALED; } dc.texturemid = FixedDiv(dc.texturemid,this_scale); } @@ -1246,9 +1246,9 @@ static void R_SplitSprite(vissprite_t *sprite) // adjust the heights. newsprite = static_cast(M_Memcpy(R_NewVisSprite(), sprite, sizeof (vissprite_t))); - newsprite->cut = static_cast(newsprite->cut | (sprite->cut & SC_FLAGMASK)); + newsprite->cut |= sprite->cut & SC_FLAGMASK; - sprite->cut = static_cast(sprite->cut | SC_BOTTOM); + sprite->cut |= SC_BOTTOM; sprite->gz = testheight; newsprite->gzt = sprite->gz; @@ -1258,7 +1258,7 @@ static void R_SplitSprite(vissprite_t *sprite) newsprite->szt -= 8; - newsprite->cut = static_cast(newsprite->cut | SC_TOP); + newsprite->cut |= SC_TOP; if (!(sector->lightlist[i].caster->fofflags & FOF_NOSHADE)) { lightnum = (*sector->lightlist[i].lightlevel >> LIGHTSEGSHIFT); @@ -1521,7 +1521,7 @@ static void R_ProjectDropShadow( shadow->sector = vis->sector; shadow->szt = (INT16)((centeryfrac - FixedMul(shadow->gzt - viewz, yscale))>>FRACBITS); shadow->sz = (INT16)((centeryfrac - FixedMul(shadow->gz - viewz, yscale))>>FRACBITS); - shadow->cut = static_cast(SC_ISSCALED|SC_SHADOW); //check this + shadow->cut = SC_ISSCALED|SC_SHADOW; //check this shadow->startfrac = 0; //shadow->xiscale = 0x7ffffff0 / (shadow->xscale/2); @@ -1966,7 +1966,7 @@ static void R_ProjectSprite(mobj_t *thing) if (rotsprite != NULL) { patch = rotsprite; - cut = static_cast(cut | SC_ISROTATED); + cut |= SC_ISROTATED; spr_width = rotsprite->width << FRACBITS; spr_height = rotsprite->height << FRACBITS; @@ -2214,7 +2214,7 @@ static void R_ProjectSprite(mobj_t *thing) fixed_t jitters = HITLAGJITTERS; if (R_UsingFrameInterpolation() && !paused) jitters += (rendertimefrac / HITLAGDIV); - + fixed_t mul = thing->hitlag * jitters; if (leveltime & 1) @@ -2247,7 +2247,7 @@ static void R_ProjectSprite(mobj_t *thing) dispoffset *= -1; // if it's physically behind, make sure it's ordered behind (if dispoffset > 0) sortscale = linkscale; // now make sure it's linked - cut = static_cast(cut | SC_LINKDRAW); + cut |= SC_LINKDRAW; } else if (splat) { @@ -2336,7 +2336,7 @@ static void R_ProjectSprite(mobj_t *thing) gzt = (isflipped ? (interp.z + thing->height) : interp.z) + patch->height * spriteyscale / 2; gz = gzt - patch->height * spriteyscale; - cut = static_cast(cut | SC_SHEAR); + cut |= SC_SHEAR; } } @@ -2567,11 +2567,11 @@ static void R_ProjectSprite(mobj_t *thing) vis->transmap = R_GetBlendTable(blendmode, trans); if (R_ThingIsSemiBright(oldthing)) - vis->cut = static_cast(vis->cut | SC_SEMIBRIGHT); + vis->cut |= SC_SEMIBRIGHT; else if (R_ThingIsFullBright(oldthing)) - vis->cut = static_cast(vis->cut | SC_FULLBRIGHT); + vis->cut |= SC_FULLBRIGHT; else if (R_ThingIsFullDark(oldthing)) - vis->cut = static_cast(vis->cut | SC_FULLDARK); + vis->cut |= SC_FULLDARK; // // determine the colormap (lightlevel & special effects) @@ -2600,9 +2600,9 @@ static void R_ProjectSprite(mobj_t *thing) } if (vflip) - vis->cut = static_cast(vis->cut | SC_VFLIP); + vis->cut |= SC_VFLIP; if (splat) - vis->cut = static_cast(vis->cut | SC_SPLAT); // I like ya cut g + vis->cut |= SC_SPLAT; // I like ya cut g vis->patch = patch; vis->bright = R_CacheSpriteBrightMap(sprinfo, frame); @@ -3685,7 +3685,7 @@ void R_ClipVisSprite(vissprite_t *spr, INT32 x1, INT32 x2, portal_t* portal) if (xclip == x) { - spr->cut = static_cast(spr->cut | SC_CULL); // completely skip this sprite going forward + spr->cut |= SC_CULL; // completely skip this sprite going forward } else if (portal) { diff --git a/src/r_things.h b/src/r_things.h index bf1e28b09..ccbefeb73 100644 --- a/src/r_things.h +++ b/src/r_things.h @@ -132,31 +132,29 @@ void R_DrawMasked(maskcount_t* masks, INT32 nummasks); #define VISSPRITESPERCHUNK (1 << VISSPRITECHUNKBITS) #define VISSPRITEINDEXMASK (VISSPRITESPERCHUNK - 1) -typedef enum -{ - // actual cuts - SC_NONE = 0, - SC_TOP = 1, - SC_BOTTOM = 1<<1, - // other flags - SC_PRECIP = 1<<2, - SC_LINKDRAW = 1<<3, - SC_FULLBRIGHT = 1<<4, - SC_FULLDARK = 1<<5, - SC_VFLIP = 1<<6, - SC_ISSCALED = 1<<7, - SC_ISROTATED = 1<<8, - SC_SHADOW = 1<<9, - SC_SHEAR = 1<<10, - SC_SPLAT = 1<<11, - // srb2kart - SC_SEMIBRIGHT = 1<<12, - SC_BBOX = 1<<13, - SC_CULL = 1<<14, - // masks - SC_CUTMASK = SC_TOP|SC_BOTTOM, - SC_FLAGMASK = ~SC_CUTMASK -} spritecut_e; +typedef INT32 spritecut_e; +// actual cuts +#define SC_NONE (0) +#define SC_TOP (1) +#define SC_BOTTOM (1<<1) +// other flags +#define SC_PRECIP (1<<2) +#define SC_LINKDRAW (1<<3) +#define SC_FULLBRIGHT (1<<4) +#define SC_FULLDARK (1<<5) +#define SC_VFLIP (1<<6) +#define SC_ISSCALED (1<<7) +#define SC_ISROTATED (1<<8) +#define SC_SHADOW (1<<9) +#define SC_SHEAR (1<<10) +#define SC_SPLAT (1<<11) +// srb2kart +#define SC_SEMIBRIGHT (1<<12) +#define SC_BBOX (1<<13) +#define SC_CULL (1<<14) +// masks +#define SC_CUTMASK (SC_TOP|SC_BOTTOM) +#define SC_FLAGMASK (~SC_CUTMASK) // A vissprite_t is a thing that will be drawn during a refresh, // i.e. a sprite object that is partly visible.