mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-01 22:21:05 +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
|
||||
angle_t drawangle;
|
||||
angle_t old_drawangle;
|
||||
|
||||
// player's ring count
|
||||
INT16 rings;
|
||||
|
|
|
@ -902,6 +902,12 @@ void P_ResetInterpolationState(mobj_t *mobj)
|
|||
mobj->old_x = mobj->x;
|
||||
mobj->old_y = mobj->y;
|
||||
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_y = mobj->y;
|
||||
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.
|
||||
angle_t angle, pitch, roll; // orientation
|
||||
angle_t old_angle;
|
||||
angle_t rollangle;
|
||||
spritenum_t sprite; // used to find patch_t and flip value
|
||||
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.
|
||||
angle_t angle, pitch, roll; // orientation
|
||||
angle_t old_angle;
|
||||
angle_t rollangle;
|
||||
spritenum_t sprite; // used to find patch_t and flip value
|
||||
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)
|
||||
{
|
||||
out->angle = mobj->player->drawangle;
|
||||
out->angle = R_LerpAngle(mobj->player->old_drawangle, mobj->player->drawangle, frac);
|
||||
}
|
||||
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->y = R_LerpFixed(mobj->old_y, mobj->y, 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)
|
||||
|
|
Loading…
Reference in a new issue