mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-08 17:22:18 +00:00
Interpolate mobj angles and player drawangle
This commit is contained in:
parent
5fda1b297f
commit
ab7c2dfb3d
4 changed files with 13 additions and 3 deletions
|
@ -382,6 +382,7 @@ typedef struct player_s
|
||||||
|
|
||||||
// fun thing for player sprite
|
// fun thing for player sprite
|
||||||
angle_t drawangle;
|
angle_t drawangle;
|
||||||
|
angle_t old_drawangle;
|
||||||
|
|
||||||
// player's ring count
|
// player's ring count
|
||||||
INT16 rings;
|
INT16 rings;
|
||||||
|
|
|
@ -902,6 +902,12 @@ void P_ResetInterpolationState(mobj_t *mobj)
|
||||||
mobj->old_x = mobj->x;
|
mobj->old_x = mobj->x;
|
||||||
mobj->old_y = mobj->y;
|
mobj->old_y = mobj->y;
|
||||||
mobj->old_z = mobj->z;
|
mobj->old_z = mobj->z;
|
||||||
|
mobj->old_angle = mobj->angle;
|
||||||
|
|
||||||
|
if (mobj->player)
|
||||||
|
{
|
||||||
|
mobj->player->old_drawangle = mobj->player->drawangle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -914,6 +920,7 @@ void P_ResetPrecipitationInterpolationState(precipmobj_t *mobj)
|
||||||
mobj->old_x = mobj->x;
|
mobj->old_x = mobj->x;
|
||||||
mobj->old_y = mobj->y;
|
mobj->old_y = mobj->y;
|
||||||
mobj->old_z = mobj->z;
|
mobj->old_z = mobj->z;
|
||||||
|
mobj->old_angle = mobj->angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -287,6 +287,7 @@ typedef struct mobj_s
|
||||||
|
|
||||||
// More drawing info: to determine current sprite.
|
// More drawing info: to determine current sprite.
|
||||||
angle_t angle, pitch, roll; // orientation
|
angle_t angle, pitch, roll; // orientation
|
||||||
|
angle_t old_angle;
|
||||||
angle_t rollangle;
|
angle_t rollangle;
|
||||||
spritenum_t sprite; // used to find patch_t and flip value
|
spritenum_t sprite; // used to find patch_t and flip value
|
||||||
UINT32 frame; // frame number, plus bits see p_pspr.h
|
UINT32 frame; // frame number, plus bits see p_pspr.h
|
||||||
|
@ -415,6 +416,7 @@ typedef struct precipmobj_s
|
||||||
|
|
||||||
// More drawing info: to determine current sprite.
|
// More drawing info: to determine current sprite.
|
||||||
angle_t angle, pitch, roll; // orientation
|
angle_t angle, pitch, roll; // orientation
|
||||||
|
angle_t old_angle;
|
||||||
angle_t rollangle;
|
angle_t rollangle;
|
||||||
spritenum_t sprite; // used to find patch_t and flip value
|
spritenum_t sprite; // used to find patch_t and flip value
|
||||||
UINT32 frame; // frame number, plus bits see p_pspr.h
|
UINT32 frame; // frame number, plus bits see p_pspr.h
|
||||||
|
|
|
@ -185,11 +185,11 @@ void R_InterpolateMobjState(mobj_t *mobj, fixed_t frac, interpmobjstate_t *out)
|
||||||
|
|
||||||
if (mobj->player)
|
if (mobj->player)
|
||||||
{
|
{
|
||||||
out->angle = mobj->player->drawangle;
|
out->angle = R_LerpAngle(mobj->player->old_drawangle, mobj->player->drawangle, frac);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
out->angle = mobj->angle;
|
out->angle = R_LerpAngle(mobj->old_angle, mobj->angle, frac);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ void R_InterpolatePrecipMobjState(precipmobj_t *mobj, fixed_t frac, interpmobjst
|
||||||
out->x = R_LerpFixed(mobj->old_x, mobj->x, frac);
|
out->x = R_LerpFixed(mobj->old_x, mobj->x, frac);
|
||||||
out->y = R_LerpFixed(mobj->old_y, mobj->y, frac);
|
out->y = R_LerpFixed(mobj->old_y, mobj->y, frac);
|
||||||
out->z = R_LerpFixed(mobj->old_z, mobj->z, frac);
|
out->z = R_LerpFixed(mobj->old_z, mobj->z, frac);
|
||||||
out->angle = mobj->angle;
|
out->angle = R_LerpAngle(mobj->old_angle, mobj->angle, frac);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void AddInterpolator(levelinterpolator_t* interpolator)
|
static void AddInterpolator(levelinterpolator_t* interpolator)
|
||||||
|
|
Loading…
Reference in a new issue