mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Lift the wheels of your jart a little when sliptiding
This commit is contained in:
parent
c74e02d9dc
commit
696e405038
5 changed files with 30 additions and 6 deletions
|
|
@ -7539,6 +7539,12 @@ boolean K_PlayerEBrake(player_t *player)
|
|||
&& player->powers[pw_nocontrol] == 0;
|
||||
}
|
||||
|
||||
SINT8 K_Sliptiding(player_t *player)
|
||||
{
|
||||
const INT32 *p = player->kartstuff;
|
||||
return p[k_drift] ? 0 : p[k_aizdriftstrat];
|
||||
}
|
||||
|
||||
static void K_KartSpindashDust(mobj_t *parent)
|
||||
{
|
||||
fixed_t rad = FixedDiv(FixedHypot(parent->radius, parent->radius), parent->scale);
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ UINT16 K_GetKartButtons(player_t *player);
|
|||
SINT8 K_GetForwardMove(player_t *player);
|
||||
fixed_t K_3dKartMovement(player_t *player);
|
||||
boolean K_PlayerEBrake(player_t *player);
|
||||
SINT8 K_Sliptiding(player_t *player);
|
||||
void K_AdjustPlayerFriction(player_t *player);
|
||||
void K_MoveKartPlayer(player_t *player, boolean onground);
|
||||
void K_CheckSpectateStatus(void);
|
||||
|
|
|
|||
|
|
@ -4252,10 +4252,6 @@ Quaketilt (player_t *player)
|
|||
fixed_t speed;
|
||||
|
||||
boolean sliptiding = K_Sliptiding(player);
|
||||
(
|
||||
player->kartstuff[k_aizdriftstrat] != 0 &&
|
||||
player->kartstuff[k_drift] == 0
|
||||
);
|
||||
|
||||
if (delta == (INT32)ANGLE_180)/* FUCK YOU HAVE A HACK */
|
||||
{
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include "z_zone.h"
|
||||
#include "w_wad.h"
|
||||
#include "r_main.h" // R_PointToAngle
|
||||
#include "k_kart.h" // K_Sliptiding
|
||||
|
||||
#ifdef ROTSPRITE
|
||||
fixed_t rollcosang[ROTANGLES];
|
||||
|
|
@ -22,13 +23,27 @@ fixed_t rollsinang[ROTANGLES];
|
|||
angle_t R_SpriteRotationAngle(mobj_t *mobj)
|
||||
{
|
||||
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
|
||||
angle_t angleDelta = (viewingAngle - mobj->angle);
|
||||
|
||||
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
|
||||
|
||||
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
|
||||
angle_t sliptideLift = mobj->player
|
||||
? K_Sliptiding(mobj->player) * ANGLE_11hh : 0;
|
||||
|
||||
return (rollOrPitch + mobj->rollangle);
|
||||
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
|
||||
angle_t rollAngle = (rollOrPitch + mobj->rollangle);
|
||||
|
||||
if (sliptideLift)
|
||||
{
|
||||
/* (from side) tilt downward if turning
|
||||
toward camera, upward if away. */
|
||||
rollAngle +=
|
||||
FixedMul(sliptideLift, FINESINE(AbsAngle(angleDelta) >> ANGLETOFINESHIFT)) +
|
||||
FixedMul(sliptideLift, FINECOSINE(angleDelta >> ANGLETOFINESHIFT));
|
||||
}
|
||||
|
||||
return rollAngle;
|
||||
}
|
||||
|
||||
INT32 R_GetRollAngle(angle_t rollangle)
|
||||
|
|
|
|||
|
|
@ -93,6 +93,12 @@ FUNCMATH FUNCINLINE static ATTRINLINE angle_t InvAngle(angle_t a)
|
|||
{
|
||||
return (ANGLE_MAX-a)+1;
|
||||
}
|
||||
|
||||
// 315 = 45
|
||||
FUNCMATH FUNCINLINE static ATTRINLINE angle_t AbsAngle(angle_t a)
|
||||
{
|
||||
return a & ANGLE_180 ? InvAngle(a) : a;
|
||||
}
|
||||
// angle_t to fixed_t f(ANGLE_45) = 45*FRACUNIT
|
||||
FUNCMATH fixed_t AngleFixed(angle_t af);
|
||||
// fixed_t to angle_t f(45*FRACUNIT) = ANGLE_45
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue