From 5732ea0233347f31562caa1e3c17ab2e93cb9409 Mon Sep 17 00:00:00 2001 From: Mitch Richters Date: Tue, 5 Oct 2021 08:43:32 +1100 Subject: [PATCH] Revert "- Blood: Use more precision for flicker, quake and tilt effects." This reverts commit 3c09f41b436e86296542892c754d815bd7cad8ae. * Fixes #554. --- source/games/blood/src/common_game.h | 5 --- source/games/blood/src/view.cpp | 54 +++++++++++++++++++--------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/source/games/blood/src/common_game.h b/source/games/blood/src/common_game.h index 4e5684c34..30768ba05 100644 --- a/source/games/blood/src/common_game.h +++ b/source/games/blood/src/common_game.h @@ -561,11 +561,6 @@ inline int QRandom2(int a1) return MulScale(qrand(), a1, 14)-a1; } -inline double QRandom2F(double a1) -{ - return MulScaleF(qrand(), a1, 14)-a1; -} - template inline void SetBitString(T *pArray, int nIndex) { diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index 61036221b..23c6e3952 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -359,23 +359,43 @@ void viewUpdateDelirium(void) void viewUpdateShake(int& cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, double& pshakeX, double& pshakeY) { - auto doEffect = [&](const int& effectType) + int shakeHoriz = 0; + int shakeAngle = 0; + int shakeX = 0; + int shakeY = 0; + int shakeZ = 0; + int shakeBobX = 0; + int shakeBobY = 0; + if (gView->flickerEffect) { - if (effectType) - { - int nValue = ClipHigh(effectType * 8, 2000); - cH += buildfhoriz(QRandom2F(nValue * (1. / 256.))); - cA += buildfang(QRandom2F(nValue * (1. / 256.))); - cX += QRandom2(nValue >> 4); - cY += QRandom2(nValue >> 4); - cZ += QRandom2(nValue); - pshakeX += QRandom2F(nValue); - pshakeY += QRandom2F(nValue); - } - }; + int nValue = ClipHigh(gView->flickerEffect * 8, 2000); + shakeHoriz += QRandom2(nValue >> 8); + shakeAngle += QRandom2(nValue >> 8); + shakeX += QRandom2(nValue >> 4); + shakeY += QRandom2(nValue >> 4); + shakeZ += QRandom2(nValue); + shakeBobX += QRandom2(nValue); + shakeBobY += QRandom2(nValue); + } + if (gView->quakeEffect) + { + int nValue = ClipHigh(gView->quakeEffect * 8, 2000); + shakeHoriz += QRandom2(nValue >> 8); + shakeAngle += QRandom2(nValue >> 8); + shakeX += QRandom2(nValue >> 4); + shakeY += QRandom2(nValue >> 4); + shakeZ += QRandom2(nValue); + shakeBobX += QRandom2(nValue); + shakeBobY += QRandom2(nValue); + } + cH += buildhoriz(shakeHoriz); + cA += buildang(shakeAngle); + cX += shakeX; + cY += shakeY; + cZ += shakeZ; + pshakeX += shakeBobX; + pshakeY += shakeBobY; - doEffect(gView->flickerEffect); - doEffect(gView->quakeEffect); } @@ -463,7 +483,7 @@ void SetupView(int &cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, int& nSe } viewUpdateShake(cX, cY, cZ, cA, cH, shakeX, shakeY); - cH += q16horiz(xs_CRoundToInt(MulScaleF(double(0x40000000) - bcosf(gView->tiltEffect << 2, 16), 30, 14))); + cH += buildhoriz(MulScale(0x40000000 - Cos(gView->tiltEffect << 2), 30, 30)); if (gViewPos == 0) { if (cl_viewhbob) @@ -475,7 +495,7 @@ void SetupView(int &cX, int& cY, int& cZ, binangle& cA, fixedhoriz& cH, int& nSe { cZ += bobHeight; } - cZ += xs_CRoundToInt(cH.asq16() * (1. / 6553.6)); + cZ += xs_CRoundToInt(cH.asq16() / 6553.6); cameradist = -1; cameraclock = PlayClock + MulScale(4, (int)gInterpolate, 16); }