"Fake rollangle" rotating
This commit is contained in:
parent
afacf55067
commit
3880139feb
6 changed files with 14 additions and 2 deletions
|
|
@ -5143,7 +5143,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
|
||||
INT32 flipsign = ((flip && papersprite) ? -1 : 1); // Flip OGL affine papersprites for Software parity
|
||||
|
||||
angle = spriterotangle * flipsign;
|
||||
angle = R_ConvToRollAngle(spriterotangle) * flipsign;
|
||||
|
||||
const fixed_t rolloffs_x = FixedDiv(interptarg->rollingxoffset, highresscale) * (((thing->renderflags & RF_FLIPOFFSETS) && flip) ? -1 : 1);
|
||||
const fixed_t rolloffs_y = FixedDiv(interptarg->rollingyoffset, highresscale);
|
||||
|
|
|
|||
|
|
@ -197,6 +197,8 @@ consvar_t cv_sliptidetilt = CVAR_INIT ("sliptidetilt", "On", CV_SAVE, CV_OnOff,
|
|||
consvar_t cv_nulldriftefx = CVAR_INIT ("nulldriftefx", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
consvar_t cv_nulldrifttilt = CVAR_INIT ("nulldrifttilt", "On", CV_SAVE, CV_OnOff, NULL);
|
||||
|
||||
consvar_t cv_fakerollangle = CVAR_INIT ("fakerollangle", "Off", CV_SAVE, CV_OnOff, NULL);
|
||||
|
||||
static CV_PossibleValue_t affineangle_cons_t[] = {{0, "MIN"}, {360 * FRACUNIT, "MAX"}, {0, NULL}};
|
||||
static CV_PossibleValue_t affinetest_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Auto"}, {0, NULL}};
|
||||
|
||||
|
|
@ -1807,6 +1809,7 @@ void R_RegisterEngineStuff(void)
|
|||
CV_RegisterVar(&cv_sliptidetilt);
|
||||
CV_RegisterVar(&cv_nulldriftefx);
|
||||
CV_RegisterVar(&cv_nulldrifttilt);
|
||||
CV_RegisterVar(&cv_fakerollangle);
|
||||
|
||||
CV_RegisterVar(&cv_showhud);
|
||||
CV_RegisterVar(&cv_translucenthud);
|
||||
|
|
|
|||
|
|
@ -161,6 +161,8 @@ extern consvar_t cv_sloperoll;
|
|||
extern consvar_t cv_sliptidetilt;
|
||||
extern consvar_t cv_nulldriftefx, cv_nulldrifttilt;
|
||||
|
||||
extern consvar_t cv_fakerollangle;
|
||||
|
||||
// debugging
|
||||
|
||||
typedef enum {
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ vector2_t* R_RotateSpriteOffsetsByPitchRoll(
|
|||
interpmobjstate_t *interp,
|
||||
vector2_t* out,
|
||||
vector2_t* rolloffs);
|
||||
angle_t R_ConvToRollAngle(angle_t ang);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -147,6 +147,12 @@ INT32 R_GetRollAngle(angle_t rollangle)
|
|||
|
||||
#define VISROTMUL (ANG1 * ROTANGDIFF)
|
||||
|
||||
// Simulates "rollangle" angling
|
||||
angle_t R_ConvToRollAngle(angle_t ang)
|
||||
{
|
||||
return (cv_fakerollangle.value) ? (R_GetRollAngle(ang) * VISROTMUL) : ang;
|
||||
}
|
||||
|
||||
vector2_t* R_RotateSpriteOffsetsByPitchRoll(
|
||||
mobj_t* mobj,
|
||||
boolean vflip,
|
||||
|
|
|
|||
|
|
@ -2326,7 +2326,7 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
|
||||
INT32 flipsign = ((flip) ? -1 : 1);
|
||||
|
||||
angle = spriterotangle * flipsign;
|
||||
angle = R_ConvToRollAngle(spriterotangle) * flipsign;
|
||||
|
||||
const fixed_t rolloffs_x = FixedDiv(interptarg->rollingxoffset, highresscale) * (((thing->renderflags & RF_FLIPOFFSETS) && flip) ? -1 : 1);
|
||||
const fixed_t rolloffs_y = FixedDiv(interptarg->rollingyoffset, highresscale);
|
||||
|
|
|
|||
Loading…
Reference in a new issue