mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-04 07:52:22 +00:00
Fix camera jitter when changing waypoints
This commit is contained in:
parent
0f9f10d90f
commit
2dae6833c2
1 changed files with 18 additions and 18 deletions
36
src/p_mobj.c
36
src/p_mobj.c
|
|
@ -9500,30 +9500,30 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
|
|
||||||
if (mobj->tracer != NULL && P_MobjWasRemoved(mobj->tracer) == false)
|
if (mobj->tracer != NULL && P_MobjWasRemoved(mobj->tracer) == false)
|
||||||
{
|
{
|
||||||
|
fixed_t newX = Easing_Linear(mobj->movecount, mobj->extravalue1, mobj->tracer->x);
|
||||||
|
fixed_t newY = Easing_Linear(mobj->movecount, mobj->extravalue2, mobj->tracer->y);
|
||||||
|
fixed_t newZ = Easing_Linear(mobj->movecount, mobj->cusval, mobj->tracer->z);
|
||||||
|
|
||||||
|
mobj->angle = Easing_Linear(mobj->movecount, mobj->movedir, mobj->tracer->angle);
|
||||||
|
mobj->pitch = Easing_Linear(mobj->movecount, mobj->lastlook, mobj->tracer->pitch);
|
||||||
|
|
||||||
|
mobj->momx = newX - mobj->x;
|
||||||
|
mobj->momy = newY - mobj->y;
|
||||||
|
mobj->momz = newZ - mobj->z;
|
||||||
|
|
||||||
mobj->movecount += mobj->movefactor;
|
mobj->movecount += mobj->movefactor;
|
||||||
|
|
||||||
if (mobj->movecount < FRACUNIT)
|
if (mobj->movecount >= FRACUNIT)
|
||||||
{
|
{
|
||||||
fixed_t newX = Easing_Linear(mobj->movecount, mobj->extravalue1, mobj->tracer->x);
|
mobj->movecount = mobj->movecount % FRACUNIT; // time
|
||||||
fixed_t newY = Easing_Linear(mobj->movecount, mobj->extravalue2, mobj->tracer->y);
|
|
||||||
fixed_t newZ = Easing_Linear(mobj->movecount, mobj->cusval, mobj->tracer->z);
|
|
||||||
|
|
||||||
mobj->angle = Easing_Linear(mobj->movecount, mobj->movedir, mobj->tracer->angle);
|
mobj->movedir = mobj->tracer->angle; // start angle
|
||||||
mobj->pitch = Easing_Linear(mobj->movecount, mobj->lastlook, mobj->tracer->pitch);
|
mobj->lastlook = mobj->tracer->pitch; // start pitch
|
||||||
|
mobj->extravalue1 = mobj->tracer->x; // start x
|
||||||
|
mobj->extravalue2 = mobj->tracer->y; // start y
|
||||||
|
mobj->cusval = mobj->tracer->z; // start z
|
||||||
|
|
||||||
mobj->momx = newX - mobj->x;
|
|
||||||
mobj->momy = newY - mobj->y;
|
|
||||||
mobj->momz = newZ - mobj->z;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
P_SetTarget(&mobj->tracer, P_GetNextTubeWaypoint(mobj->tracer, false));
|
P_SetTarget(&mobj->tracer, P_GetNextTubeWaypoint(mobj->tracer, false));
|
||||||
mobj->movecount = 0; // time
|
|
||||||
mobj->movedir = mobj->angle; // start angle
|
|
||||||
mobj->lastlook = mobj->pitch; // start pitch
|
|
||||||
mobj->extravalue1 = mobj->x; // start x
|
|
||||||
mobj->extravalue2 = mobj->y; // start y
|
|
||||||
mobj->cusval = mobj->z; // start z
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue