Kill AFFINEPAPER and move the affine RF2s to standard renderflags

This commit is contained in:
yamamama 2026-03-04 20:48:36 -05:00
parent 066aa94ef4
commit 7ef15619d6
6 changed files with 32 additions and 17 deletions

View file

@ -1034,6 +1034,7 @@ struct int_const_s const INT_CONST[] = {
#else
{"RF_NOMODEL",0},
#endif
{"RF_NOAFFINE",RF_NOAFFINE},
{"RF_DONTDRAW",RF_DONTDRAW},
{"RF_DONTDRAWP1",RF_DONTDRAWP1},
{"RF_DONTDRAWP2",RF_DONTDRAWP2},
@ -1046,6 +1047,7 @@ struct int_const_s const INT_CONST[] = {
{"RF_REVERSESUBTRACT",RF_REVERSESUBTRACT},
{"RF_MODULATE",RF_MODULATE},
{"RF_OVERLAY",RF_OVERLAY},
{"RF_AFFINEPRESCALE",RF_AFFINEPRESCALE},
{"RF_TRANSMASK",RF_TRANSMASK},
{"RF_TRANSSHIFT",RF_TRANSSHIFT},
{"RF_TRANS10",RF_TRANS10},
@ -1059,9 +1061,6 @@ struct int_const_s const INT_CONST[] = {
{"RF_TRANS90",RF_TRANS90},
{"RF_GHOSTLY",RF_GHOSTLY},
{"RF_GHOSTLYMASK",RF_GHOSTLYMASK},
{"RF2_NOAFFINE",RF2_NOAFFINE},
{"RF2_AFFINEPAPER",RF2_AFFINEPAPER},
{"RF2_AFFINEPRESCALE",RF2_AFFINEPRESCALE},
// Level flags
{"LF_SCRIPTISFILE",LF_SCRIPTISFILE},

View file

@ -62,7 +62,9 @@ enum mobj_e {
mobj_flags2,
mobj_eflags,
mobj_renderflags,
#if 0
mobj_renderflags2,
#endif
mobj_skin,
mobj_voice,
mobj_color,
@ -161,7 +163,9 @@ static const char *const mobj_opt[] = {
"flags2",
"eflags",
"renderflags",
#if 0
"renderflags2",
#endif
"skin",
"voice",
"color",
@ -431,9 +435,11 @@ static int mobj_get(lua_State *L)
case mobj_renderflags:
lua_pushinteger(L, mo->renderflags);
break;
#if 0
case mobj_renderflags2:
lua_pushinteger(L, mo->renderflags2);
break;
#endif
case mobj_skin: // skin name or nil, not struct
if (!mo->skin)
return 0;
@ -906,9 +912,11 @@ static int mobj_set(lua_State *L)
case mobj_renderflags:
mo->renderflags = (UINT32)luaL_checkinteger(L, 3);
break;
#if 0
case mobj_renderflags2:
mo->renderflags2 = (UINT32)luaL_checkinteger(L, 3);
break;
#endif
case mobj_skin: // set skin by name
{
INT32 i;

View file

@ -305,7 +305,10 @@ struct mobj_t
UINT8 sprite2; // player sprites
UINT16 anim_duration; // for FF_ANIMATE states
UINT32 renderflags, renderflags2; // render flags
UINT32 renderflags; // render flags
#if 0
UINT32 renderflags2; // More render flags
#endif
fixed_t spritexscale, spriteyscale;
fixed_t spritexoffset, spriteyoffset;
fixed_t old_spritexscale, old_spriteyscale;
@ -494,7 +497,10 @@ struct precipmobj_t
UINT8 sprite2; // player sprites
UINT16 anim_duration; // for FF_ANIMATE states
UINT32 renderflags, renderflags2; // render flags
UINT32 renderflags; // render flags
#if 0
UINT32 renderflags2; // More render flags
#endif
fixed_t spritexscale, spriteyscale;
fixed_t spritexoffset, spriteyoffset;
fixed_t old_spritexscale, old_spriteyscale;

View file

@ -2046,7 +2046,7 @@ static void DiffMobj(const mobj_t *mobj, UINT32 diff[])
DIFF(mobj->mirrored, MD2_MIRRORED);
DIFF(mobj->rollangle, MD2_ROLLANGLE);
DIFF(mobj->shadowscale, MD2_SHADOWSCALE);
DIFF(mobj->renderflags || mobj->renderflags2, MD2_RENDERFLAGS);
DIFF(mobj->renderflags /*|| mobj->renderflags2*/, MD2_RENDERFLAGS);
DIFF(mobj->tid != 0, MD2_TID);
DIFF(mobj->spritexscale != FRACUNIT || mobj->spriteyscale != FRACUNIT, MD2_SPRITESCALE);
DIFF(mobj->spritexoffset || mobj->spriteyoffset || mobj->rollingxoffset || mobj->rollingyoffset, MD2_SPRITEOFFSET);
@ -2324,7 +2324,9 @@ static thinker_t *SyncMobjThinker(savebuffer_t *save, actionf_p1 thinker, thinke
mobj->renderflags = READUINT32(save->p);
}
}
#if 0
SYNCF(MD2_RENDERFLAGS, mobj->renderflags2);
#endif
SYNCF(MD2_TID, mobj->tid);
SYNCDEF(MD2_SPRITESCALE, mobj->spritexscale, FRACUNIT);
SYNCDEF(MD2_SPRITESCALE, mobj->spriteyscale, FRACUNIT);

View file

@ -1004,6 +1004,7 @@ typedef enum
#ifdef HWRENDER
RF_NOMODEL = 0x00040000, // do not draw a model for this mobj in opengl, use its sprite instead
#endif
RF_NOAFFINE = 0x00080000, // Disables affine drawing for this sprite
RF_HIDESHIFT = (20),
RF_DONTDRAW = 0x0F << RF_HIDESHIFT, // --Don't generate a vissprite
@ -1021,6 +1022,8 @@ typedef enum
RF_MODULATE = ((AST_MODULATE-1)<<RF_BLENDSHIFT),
RF_OVERLAY = ((AST_OVERLAY-1)<<RF_BLENDSHIFT),
RF_AFFINEPRESCALE = 0x08000000, // Makes affines scale before rotating, instead of rotating before scaling
RF_TRANSMASK = (INT32)0xF0000000, // --Transparency override
RF_TRANSSHIFT = (7*4),
RF_TRANS10 = (1<<RF_TRANSSHIFT), // 10%
@ -1036,12 +1039,13 @@ typedef enum
RF_GHOSTLYMASK = (RF_TRANSMASK | RF_FULLBRIGHT),
} renderflags_t;
#if 0
typedef enum
{
RF2_NOAFFINE = 0x00000001, // Disables affine drawing for this sprite
RF2_AFFINEPAPER = 0x00000002, // Enables "affine papersprites"
RF2_AFFINEPRESCALE = 0x00000004, // Makes affines scale before rotating, instead of rotating before scaling
RF2_AFFINEPRESCALE = 0x00000002, // Makes affines scale before rotating, instead of rotating before scaling
} renderflags2_t;
#endif
typedef enum
{

View file

@ -4352,20 +4352,16 @@ boolean R_ThingVerticallyFlipped(mobj_t *thing)
boolean R_ThingIsPaperSprite(mobj_t *thing)
{
boolean affinepaper = (thing->frame & FF_AFFINEPAPER || thing->renderflags2 & RF2_AFFINEPAPER);
return (thing->frame & FF_PAPERSPRITE || thing->renderflags & RF_PAPERSPRITE || affinepaper);
return (thing->frame & FF_PAPERSPRITE || thing->renderflags & RF_PAPERSPRITE);
}
boolean R_ThingIsAffineSprite(mobj_t *thing)
{
boolean affinepaper = (thing->frame & FF_AFFINEPAPER || thing->renderflags2 & RF2_AFFINEPAPER);
// Affine papersprites are messy in software rendering; let modders enable them at their own discretion.
// Affine papersprites are messy in software rendering.
// Yes, I'm lazy; I've been at this for TWO WEEKS.
boolean papersprite = (R_ThingIsPaperSprite(thing) && !affinepaper);
boolean papersprite = (R_ThingIsPaperSprite(thing));
boolean notaffine = ((thing->frame & FF_NOAFFINE || thing->renderflags2 & RF2_NOAFFINE) || papersprite);
boolean notaffine = ((thing->frame & FF_NOAFFINE || thing->renderflags & RF_NOAFFINE) || papersprite);
return (!notaffine);
}
@ -4398,7 +4394,7 @@ boolean R_ThingIsFullDark(mobj_t *thing)
boolean R_AffinePreScale(mobj_t *thing)
{
return (cv_affineprescale.value || thing->renderflags2 & RF2_AFFINEPRESCALE);
return (cv_affineprescale.value || thing->renderflags & RF_AFFINEPRESCALE);
}
//