Interpolate hitlag jitters

This commit is contained in:
luigi budd 2025-05-10 21:33:06 +00:00
parent ffc0ce0a72
commit 2d8c10a694
5 changed files with 30 additions and 9 deletions

View file

@ -3115,11 +3115,15 @@ static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale)
R_InterpolateMobjState(thing, FRACUNIT, &interp);
}
// hitlag vibrating (todo: interp somehow?)
// hitlag vibrating
if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = thing->hitlag * HITLAGJITTERS;
fixed_t jitters = HITLAGJITTERS;
if (R_UsingFrameInterpolation() && !paused)
jitters += (rendertimefrac / HITLAGDIV);
fixed_t mul = thing->hitlag * jitters;
// perhaps there could be a way to interp this too?
if (leveltime & 1)
{
mul = -mul;
@ -4685,10 +4689,14 @@ static void HWR_ProjectSprite(mobj_t *thing)
dispoffset = thing->dispoffset;
// hitlag vibrating (todo: interp somehow?)
// hitlag vibrating
if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = thing->hitlag * HITLAGJITTERS;
fixed_t jitters = HITLAGJITTERS;
if (R_UsingFrameInterpolation() && !paused)
jitters += (rendertimefrac / HITLAGDIV);
fixed_t mul = thing->hitlag * jitters;
if (leveltime & 1)
{

View file

@ -1402,7 +1402,10 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
// hitlag vibrating
if (spr->mobj->hitlag > 0 && (spr->mobj->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = spr->mobj->hitlag * HITLAGJITTERS;
fixed_t jitters = HITLAGJITTERS;
if (R_UsingFrameInterpolation() && !paused)
jitters += (rendertimefrac / HITLAGDIV);
fixed_t mul = spr->mobj->hitlag * jitters;
if (leveltime & 1)
{

View file

@ -22,6 +22,7 @@ extern "C" {
#define MAXHITLAGTICS (30)
#define HITLAGJITTERS (FRACUNIT / 20)
#define HITLAGDIV (20) // define this so we arent using a magic number for interp
#define NUM_HITLAG_STATES (9)
#define NUM_HITLAG_SOUNDS (4)

View file

@ -5317,7 +5317,11 @@ static void K_drawKartFirstPerson(void)
// hitlag vibrating
if (stplyr->mo->hitlag > 0 && (stplyr->mo->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = stplyr->mo->hitlag * HITLAGJITTERS;
fixed_t jitters = HITLAGJITTERS;
if (R_UsingFrameInterpolation() && !paused)
jitters += (rendertimefrac / HITLAGDIV);
fixed_t mul = stplyr->mo->hitlag * jitters;
if (r_splitscreen && mul > FRACUNIT)
mul = FRACUNIT;

View file

@ -1794,7 +1794,7 @@ static void R_ProjectSprite(mobj_t *thing)
this_scale = interp.scale;
// hitlag vibrating (todo: interp somehow?)
// hitlag vibrating
if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = thing->hitlag * HITLAGJITTERS;
@ -2172,10 +2172,15 @@ static void R_ProjectSprite(mobj_t *thing)
R_InterpolateMobjState(thing, FRACUNIT, &tracer_interp);
}
// hitlag vibrating (todo: interp somehow?)
// hitlag vibrating
if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG))
{
fixed_t mul = thing->hitlag * (FRACUNIT / 10);
// previous code multiplied by (FRACUNIT / 10) instead of HITLAGJITTERS, um wadaflip
fixed_t jitters = HITLAGJITTERS;
if (R_UsingFrameInterpolation() && !paused)
jitters += (rendertimefrac / HITLAGDIV);
fixed_t mul = thing->hitlag * jitters;
if (leveltime & 1)
{