diff --git a/source/games/exhumed/src/exhumed.cpp b/source/games/exhumed/src/exhumed.cpp index b2fee526e..72a63c084 100644 --- a/source/games/exhumed/src/exhumed.cpp +++ b/source/games/exhumed/src/exhumed.cpp @@ -315,17 +315,6 @@ static void GameMove(void) // YELLOW SECTION MoveThings(); - obobangle = bobangle; - - if (PlayerList[nLocalPlayer].totalvel == 0) - { - bobangle = 0; - } - else - { - bobangle += 56; - } - UpdateCreepySounds(); // loc_120E9: diff --git a/source/games/exhumed/src/gun.cpp b/source/games/exhumed/src/gun.cpp index 70891d674..b0130d562 100644 --- a/source/games/exhumed/src/gun.cpp +++ b/source/games/exhumed/src/gun.cpp @@ -662,7 +662,7 @@ loc_flag: } if (nPlayer == nLocalPlayer) { - obobangle = bobangle = 512; + pPlayer->nPrevWeapBob = pPlayer->nWeapBob = 512; } if (nWeapon == kWeaponFlamer && (!(nSectFlag & kSectUnderwater))) @@ -938,11 +938,11 @@ void DrawWeapons(Player* const pPlayer, double interpfrac) if (cl_weaponsway) { - double nBobAngle = bobangle, nTotalVel = pPlayer->totalvel; + double nBobAngle = pPlayer->nWeapBob, nTotalVel = pPlayer->totalvel; if (cl_hudinterpolation) { - nBobAngle = interpolatedvalue(obobangle, bobangle, interpfrac); + nBobAngle = interpolatedvalue(pPlayer->nPrevWeapBob, pPlayer->nWeapBob, interpfrac); nTotalVel = interpolatedvalue(pPlayer->ototalvel, pPlayer->totalvel, interpfrac); } @@ -955,7 +955,7 @@ void DrawWeapons(Player* const pPlayer, double interpfrac) } else { - obobangle = bobangle = 512; + pPlayer->nPrevWeapBob = pPlayer->nWeapBob = 512; } int nStat = false; diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index f58bc8c0e..3daa2888a 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -74,7 +74,6 @@ static constexpr int16_t nItemText[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; -int obobangle = 0, bobangle = 0; int nLocalPlayer = 0; Player PlayerList[kMaxPlayers]; TObjPtr nNetStartSprite[kMaxPlayers] = { }; @@ -1608,6 +1607,10 @@ static void doPlayerCameraEffects(Player* const pPlayer, const double nDestVertP { pPlayer->nPrevBobZ = pPlayer->nBobZ = 0; } + + // Update weapon bobbing. + pPlayer->nPrevWeapBob = pPlayer->nWeapBob; + pPlayer->nWeapBob = (pPlayer->nWeapBob + 56) * (pPlayer->totalvel != 0); } //--------------------------------------------------------------------------- @@ -2182,8 +2185,7 @@ void SerializePlayer(FSerializer& arc) { if (arc.BeginObject("player")) { - arc ("bobangle", bobangle) - ("playercount", PlayerCount) + arc ("playercount", PlayerCount) ("netstartsprites", nNetStartSprites) ("localplayer", nLocalPlayer) ("curstartsprite", nCurStartSprite) diff --git a/source/games/exhumed/src/player.h b/source/games/exhumed/src/player.h index 6213f99ab..3d2517284 100644 --- a/source/games/exhumed/src/player.h +++ b/source/games/exhumed/src/player.h @@ -102,6 +102,8 @@ struct Player double nPrevBobZ; double nBobZ; double nIdxBobZ; + double nPrevWeapBob; + double nWeapBob; bool crouch_toggle; bool bTouchFloor; bool bJumping; @@ -117,8 +119,6 @@ extern int PlayerCount; extern Player PlayerList[kMaxPlayers]; -extern int obobangle, bobangle; - extern TObjPtr nNetStartSprite[kMaxPlayers]; extern int nNetStartSprites; extern int nCurStartSprite; diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index 140146bf7..a068ac848 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -372,7 +372,7 @@ Collision QueenAngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int thr double zz = pActor->pitch.Sin() * veclen; - return movesprite(pActor, vec, zz * 16 + BobVal(bobangle) * 2, 0, CLIPMASK1); + return movesprite(pActor, vec, zz * 16 + BobVal(PlayerList[GetPlayerFromActor(pActor)].nWeapBob) * 2, 0, CLIPMASK1); } //---------------------------------------------------------------------------