Add affine renderflag
Guest starring: even MORE flag variables!
This commit is contained in:
parent
402b48342b
commit
aeadb21ad3
5 changed files with 18 additions and 4 deletions
|
|
@ -62,6 +62,7 @@ enum mobj_e {
|
|||
mobj_flags2,
|
||||
mobj_eflags,
|
||||
mobj_renderflags,
|
||||
mobj_renderflags2,
|
||||
mobj_skin,
|
||||
mobj_voice,
|
||||
mobj_color,
|
||||
|
|
@ -160,6 +161,7 @@ static const char *const mobj_opt[] = {
|
|||
"flags2",
|
||||
"eflags",
|
||||
"renderflags",
|
||||
"renderflags2",
|
||||
"skin",
|
||||
"voice",
|
||||
"color",
|
||||
|
|
@ -429,6 +431,9 @@ static int mobj_get(lua_State *L)
|
|||
case mobj_renderflags:
|
||||
lua_pushinteger(L, mo->renderflags);
|
||||
break;
|
||||
case mobj_renderflags2:
|
||||
lua_pushinteger(L, mo->renderflags2);
|
||||
break;
|
||||
case mobj_skin: // skin name or nil, not struct
|
||||
if (!mo->skin)
|
||||
return 0;
|
||||
|
|
@ -901,6 +906,9 @@ static int mobj_set(lua_State *L)
|
|||
case mobj_renderflags:
|
||||
mo->renderflags = (UINT32)luaL_checkinteger(L, 3);
|
||||
break;
|
||||
case mobj_renderflags2:
|
||||
mo->renderflags2 = (UINT32)luaL_checkinteger(L, 3);
|
||||
break;
|
||||
case mobj_skin: // set skin by name
|
||||
{
|
||||
INT32 i;
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ struct mobj_t
|
|||
UINT8 sprite2; // player sprites
|
||||
UINT16 anim_duration; // for FF_ANIMATE states
|
||||
|
||||
UINT32 renderflags; // render flags
|
||||
UINT32 renderflags, renderflags2; // render flags
|
||||
fixed_t spritexscale, spriteyscale;
|
||||
fixed_t spritexoffset, spriteyoffset;
|
||||
fixed_t old_spritexscale, old_spriteyscale;
|
||||
|
|
@ -494,7 +494,7 @@ struct precipmobj_t
|
|||
UINT8 sprite2; // player sprites
|
||||
UINT16 anim_duration; // for FF_ANIMATE states
|
||||
|
||||
UINT32 renderflags; // render flags
|
||||
UINT32 renderflags, renderflags2; // render flags
|
||||
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, 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,6 +2324,7 @@ static thinker_t *SyncMobjThinker(savebuffer_t *save, actionf_p1 thinker, thinke
|
|||
mobj->renderflags = READUINT32(save->p);
|
||||
}
|
||||
}
|
||||
SYNCF(MD2_RENDERFLAGS, mobj->renderflags2);
|
||||
SYNCF(MD2_TID, mobj->tid);
|
||||
SYNCDEF(MD2_SPRITESCALE, mobj->spritexscale, FRACUNIT);
|
||||
SYNCDEF(MD2_SPRITESCALE, mobj->spriteyscale, FRACUNIT);
|
||||
|
|
|
|||
|
|
@ -1036,6 +1036,11 @@ typedef enum
|
|||
RF_GHOSTLYMASK = (RF_TRANSMASK | RF_FULLBRIGHT),
|
||||
} renderflags_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RF2_AFFINE = 0x00000001, // Affine sprite; draws scaling and rotation using a Mode 7 matrix
|
||||
} renderflags2_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SRF_SINGLE = 0, // 0-angle for all rotations
|
||||
|
|
|
|||
|
|
@ -1955,7 +1955,7 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
mobj_t *interptarg = thing;
|
||||
|
||||
// Affines
|
||||
boolean affinesprite = (thing->player != NULL);
|
||||
boolean affinesprite = ((thing->player != NULL) || ((thing->renderflags2 & RF2_AFFINE) == RF2_AFFINE));
|
||||
affine_t affine_transform = {0};
|
||||
affine_bounding_t affine_bounds = {0};
|
||||
vector2_t affine_scale = {0};
|
||||
|
|
|
|||
Loading…
Reference in a new issue