mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-24 11:02:48 +00:00
Use K_MomentumAngle for all instances of needing momentum angle for an object
This means we will never ever have any "standing still defaults to angle 0" issues again :)
This commit is contained in:
parent
3dc2f4804f
commit
31b99de407
6 changed files with 25 additions and 36 deletions
28
src/k_kart.c
28
src/k_kart.c
|
|
@ -1450,8 +1450,8 @@ static void K_UpdateDraft(player_t *player)
|
|||
continue;
|
||||
|
||||
#ifndef EASYDRAFTTEST
|
||||
yourangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
theirangle = R_PointToAngle2(0, 0, players[i].mo->momx, players[i].mo->momy);
|
||||
yourangle = K_MomentumAngle(player->mo);
|
||||
theirangle = K_MomentumAngle(players[i].mo);
|
||||
|
||||
diff = R_PointToAngle2(player->mo->x, player->mo->y, players[i].mo->x, players[i].mo->y) - yourangle;
|
||||
if (diff > ANGLE_180)
|
||||
|
|
@ -2019,7 +2019,7 @@ void K_PlayPowerGloatSound(mobj_t *source)
|
|||
|
||||
void K_MomentumToFacing(player_t *player)
|
||||
{
|
||||
angle_t dangle = player->mo->angle - R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
angle_t dangle = player->mo->angle - K_MomentumAngle(player->mo);
|
||||
|
||||
if (dangle > ANGLE_180)
|
||||
dangle = InvAngle(dangle);
|
||||
|
|
@ -3445,7 +3445,7 @@ static void K_SpawnAIZDust(player_t *player)
|
|||
if (player->speed <= K_GetKartSpeed(player, false))
|
||||
return;
|
||||
|
||||
travelangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
travelangle = K_MomentumAngle(player->mo);
|
||||
//S_StartSound(player->mo, sfx_s3k47);
|
||||
|
||||
{
|
||||
|
|
@ -3716,7 +3716,7 @@ void K_DriftDustHandling(mobj_t *spawner)
|
|||
if (P_AproxDistance(spawner->momx, spawner->momy) < 5*spawner->scale)
|
||||
return;
|
||||
|
||||
anglediff = abs((signed)(spawner->angle - R_PointToAngle2(0, 0, spawner->momx, spawner->momy)));
|
||||
anglediff = abs((signed)(spawner->angle - K_MomentumAngle(spawner)));
|
||||
}
|
||||
|
||||
if (anglediff > ANGLE_180)
|
||||
|
|
@ -4018,7 +4018,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
|||
|
||||
void K_PuntMine(mobj_t *thismine, mobj_t *punter)
|
||||
{
|
||||
angle_t fa = R_PointToAngle2(0, 0, punter->momx, punter->momy) >> ANGLETOFINESHIFT;
|
||||
angle_t fa = K_MomentumAngle(punter) >> ANGLETOFINESHIFT;
|
||||
fixed_t z = 30*mapobjectscale + punter->momz;
|
||||
fixed_t spd;
|
||||
mobj_t *mine;
|
||||
|
|
@ -5604,7 +5604,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
MT_FASTLINE);
|
||||
|
||||
P_SetTarget(&fast->target, player->mo);
|
||||
fast->angle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
fast->angle = K_MomentumAngle(player->mo);
|
||||
fast->momx = 3*player->mo->momx/4;
|
||||
fast->momy = 3*player->mo->momy/4;
|
||||
fast->momz = 3*player->mo->momz/4;
|
||||
|
|
@ -6154,18 +6154,12 @@ static waypoint_t *K_GetPlayerNextWaypoint(player_t *player)
|
|||
{
|
||||
boolean finishlinehack = false;
|
||||
angle_t playerangle = player->mo->angle;
|
||||
angle_t momangle = player->mo->angle;
|
||||
angle_t momangle = K_MomentumAngle(player->mo);
|
||||
angle_t angletowaypoint =
|
||||
R_PointToAngle2(player->mo->x, player->mo->y, waypoint->mobj->x, waypoint->mobj->y);
|
||||
angle_t angledelta = ANGLE_MAX;
|
||||
angle_t momdelta = ANGLE_MAX;
|
||||
|
||||
if (player->mo->momx != 0 || player->mo->momy != 0)
|
||||
{
|
||||
// Defaults to facing angle if you're not moving.
|
||||
momangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
}
|
||||
|
||||
angledelta = playerangle - angletowaypoint;
|
||||
if (angledelta > ANGLE_180)
|
||||
{
|
||||
|
|
@ -6664,7 +6658,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
{
|
||||
if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone)
|
||||
{
|
||||
angle_t pushdir = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
angle_t pushdir = K_MomentumAngle(player->mo);
|
||||
|
||||
S_StartSound(player->mo, sfx_s23c);
|
||||
//K_SpawnDashDustRelease(player);
|
||||
|
|
@ -7045,7 +7039,7 @@ static void K_KartSpindash(player_t *player)
|
|||
mobj_t *grease;
|
||||
grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE);
|
||||
P_SetTarget(&grease->target, player->mo);
|
||||
grease->angle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
grease->angle = K_MomentumAngle(player->mo);
|
||||
grease->extravalue1 = i;
|
||||
}
|
||||
}
|
||||
|
|
@ -7615,7 +7609,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
if (!onground)
|
||||
{
|
||||
P_Thrust(
|
||||
player->mo, R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy),
|
||||
player->mo, K_MomentumAngle(player->mo),
|
||||
FixedMul(player->mo->scale, K_GetKartGameSpeedScalar(gamespeed))
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8393,7 +8393,7 @@ void A_JawzChase(mobj_t *actor)
|
|||
|
||||
if (!actor->tracer)
|
||||
{
|
||||
actor->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy);
|
||||
actor->angle = K_MomentumAngle(actor);
|
||||
}
|
||||
|
||||
P_Thrust(actor, actor->angle, thrustamount);
|
||||
|
|
@ -8525,7 +8525,7 @@ static void SpawnSPBAIZDust(mobj_t *mo, INT32 dir)
|
|||
if (mo->eflags & MFE_VERTICALFLIP)
|
||||
sz = mo->ceilingz;
|
||||
|
||||
travelangle = R_PointToAngle2(0, 0, mo->momx, mo->momy);
|
||||
travelangle = K_MomentumAngle(mo);
|
||||
if (leveltime & 1 && abs(mo->z - sz) < FRACUNIT*64)
|
||||
{
|
||||
newx = mo->x + P_ReturnThrustX(mo, travelangle - (dir*ANGLE_45), FixedMul(24*FRACUNIT, mo->scale));
|
||||
|
|
@ -8555,7 +8555,7 @@ static void SpawnSPBSpeedLines(mobj_t *actor)
|
|||
MT_FASTLINE);
|
||||
|
||||
P_SetTarget(&fast->target, actor);
|
||||
fast->angle = R_PointToAngle2(0, 0, actor->momx, actor->momy);
|
||||
fast->angle = K_MomentumAngle(actor);
|
||||
fast->color = SKINCOLOR_RED;
|
||||
fast->colorized = true;
|
||||
K_MatchGenericExtraFlags(fast, actor);
|
||||
|
|
|
|||
|
|
@ -344,7 +344,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
|
|||
mobj_t *grease;
|
||||
grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE);
|
||||
P_SetTarget(&grease->target, object);
|
||||
grease->angle = R_PointToAngle2(0, 0, object->momx, object->momy);
|
||||
grease->angle = K_MomentumAngle(object);
|
||||
grease->extravalue1 = i;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
13
src/p_mobj.c
13
src/p_mobj.c
|
|
@ -8001,7 +8001,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
frictionsafety = FRACUNIT;
|
||||
}
|
||||
|
||||
mobj->angle = R_PointToAngle2(0, 0, mobj->momx, mobj->momy);
|
||||
mobj->angle = K_MomentumAngle(mobj);
|
||||
if (mobj->health <= 5)
|
||||
{
|
||||
INT32 i;
|
||||
|
|
@ -8103,7 +8103,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
thrustamount = beatfriction + FixedDiv(mobj->movefactor - currentspeed, frictionsafety);
|
||||
}
|
||||
|
||||
mobj->angle = R_PointToAngle2(0, 0, mobj->momx, mobj->momy);
|
||||
mobj->angle = K_MomentumAngle(mobj);
|
||||
P_Thrust(mobj, mobj->angle, thrustamount);
|
||||
|
||||
if (P_MobjTouchingSectorSpecial(mobj, 3, 1, true))
|
||||
|
|
@ -8266,7 +8266,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
|
||||
//mobj->angle = mobj->target->angle;
|
||||
{
|
||||
angle_t angle = R_PointToAngle2(0, 0, mobj->target->momx, mobj->target->momy);
|
||||
angle_t angle = K_MomentumAngle(mobj->target);
|
||||
fixed_t nudge;
|
||||
|
||||
mobj->angle = angle;
|
||||
|
|
@ -8545,7 +8545,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
z += mobj->target->height;
|
||||
|
||||
if (mobj->target->momx || mobj->target->momy)
|
||||
ang = R_PointToAngle2(0, 0, mobj->target->momx, mobj->target->momy);
|
||||
ang = K_MomentumAngle(mobj->target);
|
||||
|
||||
if (mobj->extravalue1)
|
||||
ang = (signed)(ang - off);
|
||||
|
|
@ -8841,10 +8841,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
|
||||
P_TeleportMove(mobj, destx, desty, mobj->target->z);
|
||||
if (mobj->target->momx || mobj->target->momy)
|
||||
mobj->angle = R_PointToAngle2(0, 0, mobj->target->momx, mobj->target->momy);
|
||||
else
|
||||
mobj->angle = mobj->target->angle;
|
||||
mobj->angle = K_MomentumAngle(mobj->target);
|
||||
|
||||
if (underlayst != S_NULL)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4021,8 +4021,7 @@ DoneSection2:
|
|||
{
|
||||
const fixed_t hscale = mapobjectscale + (mapobjectscale - player->mo->scale);
|
||||
const fixed_t minspeed = 24*hscale;
|
||||
angle_t pushangle = FixedHypot(player->mo->momx, player->mo->momy) ? R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy) : player->mo->angle;
|
||||
// if we have no speed for SOME REASON, use the player's angle, otherwise we'd be forcefully thrusted to what I can only assume is angle 0
|
||||
angle_t pushangle = K_MomentumAngle(player->mo);
|
||||
|
||||
if (player->mo->eflags & MFE_SPRUNG)
|
||||
break;
|
||||
|
|
@ -4044,8 +4043,7 @@ DoneSection2:
|
|||
const fixed_t hscale = mapobjectscale + (mapobjectscale - player->mo->scale);
|
||||
const fixed_t minspeed = 24*hscale;
|
||||
const fixed_t maxspeed = 28*hscale;
|
||||
angle_t pushangle = FixedHypot(player->mo->momx, player->mo->momy) ? R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy) : player->mo->angle;
|
||||
// if we have no speed for SOME REASON, use the player's angle, otherwise we'd be forcefully thrusted to what I can only assume is angle 0
|
||||
angle_t pushangle = K_MomentumAngle(player->mo);
|
||||
|
||||
if (player->mo->eflags & MFE_SPRUNG)
|
||||
break;
|
||||
|
|
@ -4087,7 +4085,7 @@ DoneSection2:
|
|||
}
|
||||
|
||||
lineangle = K_ReflectAngle(
|
||||
R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy), lineangle,
|
||||
K_MomentumAngle(player->mo), lineangle,
|
||||
playerspeed, linespeed
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -6061,7 +6061,7 @@ static void P_MovePlayer(player_t *player)
|
|||
|
||||
if (trailScale > 0)
|
||||
{
|
||||
const angle_t forwardangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||
const angle_t forwardangle = K_MomentumAngle(player->mo);
|
||||
const fixed_t playerVisualRadius = player->mo->radius + 8*FRACUNIT;
|
||||
const size_t numFrames = S_WATERTRAIL8 - S_WATERTRAIL1;
|
||||
const statenum_t curOverlayFrame = S_WATERTRAIL1 + (leveltime % numFrames);
|
||||
|
|
@ -8530,7 +8530,7 @@ static void P_HandleFollower(player_t *player)
|
|||
player->follower->drawflags |= MFD_DONTDRAW;
|
||||
|
||||
if (player->speed && (player->follower->momx || player->follower->momy))
|
||||
player->follower->angle = R_PointToAngle2(0, 0, player->follower->momx, player->follower->momy);
|
||||
player->follower->angle = K_MomentumAngle(player->follower);
|
||||
// if we're moving let's make the angle the direction we're moving towards. This is to avoid drifting / reverse looking awkward.
|
||||
// Make sure the follower itself is also moving however, otherwise we'll be facing angle 0
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue