From e970ed0f2766d29e2ef193bd54ec2afdf80fd2fd Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Mon, 29 Aug 2022 19:37:28 +1000 Subject: [PATCH] - Migrate `spritetypebase::interpolatedvec3()` to backend solution. * Also eliminate unused `interpolatedvec2() method from class. --- source/core/coreactor.h | 18 ++---------------- source/games/blood/src/animatesprite.cpp | 2 +- source/games/duke/src/animatesprites_d.cpp | 2 +- source/games/duke/src/animatesprites_r.cpp | 2 +- source/games/exhumed/src/view.cpp | 2 +- source/games/sw/src/draw.cpp | 10 +++++----- 6 files changed, 11 insertions(+), 25 deletions(-) diff --git a/source/core/coreactor.h b/source/core/coreactor.h index 53a457be0..f6b3f38a3 100644 --- a/source/core/coreactor.h +++ b/source/core/coreactor.h @@ -145,23 +145,9 @@ public: return interpolatedvaluef(opos.Z, spr.pos.Z, smoothratio, scale); } - DVector2 interpolatedvec2(double const smoothratio, int const scale = 16) + DVector3 interpolatedvec3(double const smoothratio) { - return - { - interpolatedx(smoothratio, scale), - interpolatedy(smoothratio, scale) - }; - } - - DVector3 interpolatedvec3(double const smoothratio, int const scale = 16) - { - return - { - interpolatedx(smoothratio, scale), - interpolatedy(smoothratio, scale), - interpolatedz(smoothratio, scale) - }; + return ::interpolatedvec3(opos, spr.pos, smoothratio); } diff --git a/source/games/blood/src/animatesprite.cpp b/source/games/blood/src/animatesprite.cpp index b6b35cfe8..cb9810650 100644 --- a/source/games/blood/src/animatesprite.cpp +++ b/source/games/blood/src/animatesprite.cpp @@ -580,7 +580,7 @@ void viewProcessSprites(tspriteArray& tsprites, int32_t cX, int32_t cY, int32_t if (cl_interpolate && owneractor->interpolated && !(pTSprite->flags & 512)) { - pTSprite->pos = owneractor->interpolatedvec3(gInterpolate); + pTSprite->pos = owneractor->interpolatedvec3(gInterpolate / 65536.); pTSprite->angle = owneractor->interpolatedangle(gInterpolate / 65536.); } int nAnim = 0; diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index 5a4535b8a..d75bdbe2d 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -173,7 +173,7 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, int smoothrat } else if (!actorflag(h, SFLAG_NOINTERPOLATE)) { - t->pos = h->interpolatedvec3(smoothratio); + t->pos = h->interpolatedvec3(smoothratio / 65536.); } auto sectp = h->sector(); diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index 45a618a26..8b050c24d 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -155,7 +155,7 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, int smoothrat } else if (!actorflag(h, SFLAG_NOINTERPOLATE)) { - t->pos = h->interpolatedvec3(smoothratio); + t->pos = h->interpolatedvec3(smoothratio / 65536.); } auto sectp = h->sector(); diff --git a/source/games/exhumed/src/view.cpp b/source/games/exhumed/src/view.cpp index 7095beed1..4f6d2099d 100644 --- a/source/games/exhumed/src/view.cpp +++ b/source/games/exhumed/src/view.cpp @@ -69,7 +69,7 @@ static void analyzesprites(tspriteArray& tsprites, int x, int y, int z, double c if (pTSprite->ownerActor) { // interpolate sprite position - pTSprite->pos = pTSprite->ownerActor->interpolatedvec3(smoothratio); + pTSprite->pos = pTSprite->ownerActor->interpolatedvec3(smoothratio / 65536.); pTSprite->angle = pTSprite->ownerActor->interpolatedangle(smoothratio / 65536.); } } diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 9929b7235..1f562f93a 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -570,7 +570,7 @@ DSWActor* ConnectCopySprite(spritetypebase const* tsp) void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int camang) { int tSpriteNum; - int smr4, smr2; + double smr4, smr2; static int ang = 0; PLAYER* pp = Player + screenpeek; int newshade=0; @@ -580,8 +580,8 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int ang = NORM_ANGLE(ang + 12); - smr4 = int(smoothratio) + IntToFixed(MoveSkip4); - smr2 = int(smoothratio) + IntToFixed(MoveSkip2); + smr4 = smoothratio + IntToFixed(MoveSkip4); + smr2 = smoothratio + IntToFixed(MoveSkip2); for (tSpriteNum = (int)tsprites.Size() - 1; tSpriteNum >= 0; tSpriteNum--) { @@ -618,7 +618,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int { if (tsp->statnum <= STAT_SKIP4_INTERP_END) { - tsp->pos = tActor->interpolatedvec3(smr4, 18); + tsp->pos = tActor->interpolatedvec3(smr4 / 262144.); } } @@ -626,7 +626,7 @@ void analyzesprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, int { if (tsp->statnum <= STAT_SKIP2_INTERP_END) { - tsp->pos = tActor->interpolatedvec3(smr2, 17); + tsp->pos = tActor->interpolatedvec3(smr2 / 131072.); } } }