Kill AFFINEPAPER and move the affine RF2s to standard renderflags
This commit is contained in:
parent
066aa94ef4
commit
7ef15619d6
6 changed files with 32 additions and 17 deletions
|
|
@ -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},
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
10
src/p_mobj.h
10
src/p_mobj.h
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in a new issue