diff --git a/src/k_battle.c b/src/k_battle.c index e64fc5a9a..14ecfabf5 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -672,12 +672,11 @@ void K_RunBattleOvertime(void) if (battleovertime.radius > 0) { - const fixed_t pi = (22 * FRACUNIT) / 7; // loose approximation, this doesn't need to be incredibly precise const INT32 orbs = 32; const angle_t angoff = ANGLE_MAX / orbs; const UINT8 spriteSpacing = 128; - fixed_t circumference = FixedMul(pi, battleovertime.radius * 2); + fixed_t circumference = FixedMul(M_PI_FIXED, battleovertime.radius * 2); fixed_t scale = max(circumference / spriteSpacing / orbs, mapobjectscale); fixed_t size = FixedMul(mobjinfo[MT_OVERTIME_PARTICLE].radius, scale); diff --git a/src/k_follower.c b/src/k_follower.c index 6b9b20c08..4d7556dd4 100644 --- a/src/k_follower.c +++ b/src/k_follower.c @@ -244,8 +244,7 @@ void K_HandleFollower(player_t *player) // finally, add a cool floating effect to the z height. // not stolen from k_kart I swear!! { - const fixed_t pi = (22<> ANGLETOFINESHIFT) & FINEMASK)); + fixed_t sine = FixedMul(fl.bobamp, FINESINE(((FixedMul(4 * M_TAU_FIXED, fl.bobspeed) * leveltime) >> ANGLETOFINESHIFT) & FINEMASK)); sz += FixedMul(player->mo->scale, sine) * P_MobjFlip(player->mo); } diff --git a/src/k_kart.c b/src/k_kart.c index e5fe76af1..42adaf268 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -6631,12 +6631,10 @@ static void K_MoveHeldObjects(player_t *player) targy = player->mo->y + P_ReturnThrustY(cur, cur->angle + angoffset, cur->extravalue1); { // bobbing, copy pasted from my kimokawaiii entry - const fixed_t pi = (22<mo->scale, 8 * FINESINE((((2*pi*(4*TICRATE)) * leveltime)>>ANGLETOFINESHIFT) & FINEMASK)); + fixed_t sine = FixedMul(player->mo->scale, 8 * FINESINE((((M_TAU_FIXED * (4*TICRATE)) * leveltime) >> ANGLETOFINESHIFT) & FINEMASK)); targz = (player->mo->z + (player->mo->height/2)) + sine; if (player->mo->eflags & MFE_VERTICALFLIP) targz += (player->mo->height/2 - 32*player->mo->scale)*6; - } if (cur->tracer) diff --git a/src/m_fixed.h b/src/m_fixed.h index 49108ab93..9f3bb2910 100644 --- a/src/m_fixed.h +++ b/src/m_fixed.h @@ -37,6 +37,8 @@ #define M_TAU_FIXED 411769 #endif +#define M_PI_FIXED (M_TAU_FIXED >> 1) + typedef INT32 fixed_t; /*! diff --git a/src/m_menu.c b/src/m_menu.c index 63c5c2f7b..fcb2d6321 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -9666,9 +9666,9 @@ static void M_DrawSetupMultiPlayerMenu(void) // Fake the follower's in game appearance by now also applying some of its variables! coolio, eh? follower_t fl = followers[setupm_fakefollower]; // shortcut for our sanity + // smooth floating, totally not stolen from rocket sneakers. - const fixed_t pi = (22<>ANGLETOFINESHIFT) & FINEMASK)); + fixed_t sine = FixedMul(fl.bobamp, FINESINE(((FixedMul(4 * M_TAU_FIXED, fl.bobspeed) * followertimer)>>ANGLETOFINESHIFT) & FINEMASK)); UINT8 *colormap = R_GetTranslationColormap(TC_DEFAULT, setupm_fakecolor->color, 0); // why does GTC_MENUCACHE not work here...? V_DrawFixedPatch((mx+65)*FRACUNIT, ((my+131)*FRACUNIT)-fl.zoffs+sine, fl.scale, flags, patch, colormap); diff --git a/src/p_mobj.c b/src/p_mobj.c index 433ff4931..e00d7ef2f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8597,8 +8597,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) if (mobj->extravalue1) { const INT32 speed = 6*TICRATE; // longer is slower - const fixed_t pi = 22*FRACUNIT/7; // Inaccurate, but is close enough for our usage - fixed_t sine = FINESINE((((2*pi*speed) * leveltime) >> ANGLETOFINESHIFT) & FINEMASK) * flip; + fixed_t sine = FINESINE((((M_TAU_FIXED * speed) * leveltime) >> ANGLETOFINESHIFT) & FINEMASK) * flip; // Flying capsules are flipped upside-down, like S3K flip = -flip;