From 06d0d9b5fd6254fa4d1232996e76e82e96d6198d Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sat, 10 Sep 2022 20:27:14 +1000 Subject: [PATCH] - Blood: Floatify player inertia correction code. --- source/games/blood/src/actor.cpp | 4 ++-- source/games/blood/src/player.cpp | 7 ++++--- source/games/blood/src/player.h | 6 +++--- source/games/blood/src/view.cpp | 6 +++--- source/games/blood/src/view.h | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index c1c080eba..ddfb693ab 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -4917,13 +4917,13 @@ void MoveDude(DBloodActor* actor) sfxPlay3DSound(actor, 719, 0, 0); } } - vec3_t const oldpos = actor->int_pos(); + DVector3 const oldpos = actor->spr.pos; int nLink = CheckLink(actor); if (nLink) { GetZRange(actor, &ceilZ, &ceilColl, &floorZ, &floorColl, wd, CLIPMASK0, PARALLAXCLIP_CEILING | PARALLAXCLIP_FLOOR); if (pPlayer) - playerCorrectInertia(pPlayer, &oldpos); + playerCorrectInertia(pPlayer, oldpos); switch (nLink) { case kMarkerLowStack: diff --git a/source/games/blood/src/player.cpp b/source/games/blood/src/player.cpp index 43f091aa5..d1f0550a7 100644 --- a/source/games/blood/src/player.cpp +++ b/source/games/blood/src/player.cpp @@ -719,10 +719,11 @@ void playerResetInertia(PLAYER* pPlayer) viewBackupView(pPlayer->nPlayer); } -void playerCorrectInertia(PLAYER* pPlayer, vec3_t const* oldpos) +void playerCorrectInertia(PLAYER* pPlayer, const DVector3& oldpos) { - pPlayer->zView += pPlayer->actor->int_pos().Z - oldpos->Z; - pPlayer->zWeapon += pPlayer->actor->int_pos().Z - oldpos->Z; + auto zAdj = (pPlayer->actor->spr.pos.Z - oldpos.Z) * zworldtoint; + pPlayer->zView += zAdj; + pPlayer->zWeapon += zAdj; viewCorrectViewOffsets(pPlayer->nPlayer, oldpos); } diff --git a/source/games/blood/src/player.h b/source/games/blood/src/player.h index 4af6e31bc..e61d6c916 100644 --- a/source/games/blood/src/player.h +++ b/source/games/blood/src/player.h @@ -220,12 +220,12 @@ bool packItemActive(PLAYER* pPlayer, int nPack); void packUseItem(PLAYER* pPlayer, int nPack); void packPrevItem(PLAYER* pPlayer); void packNextItem(PLAYER* pPlayer); -bool playerSeqPlaying(PLAYER* pPlayer, int nSeq); +bool playerSeqPlaying(PLAYER* pPlayer, int nSeq); void playerSetRace(PLAYER* pPlayer, int nLifeMode); void playerSetGodMode(PLAYER* pPlayer, bool bGodMode); void playerResetInertia(PLAYER* pPlayer); -void playerCorrectInertia(PLAYER* pPlayer, vec3_t const* oldpos); -void playerStart(int nPlayer, int bNewLevel = 0); +void playerCorrectInertia(PLAYER* pPlayer, const DVector3& oldpos); +void playerStart(int nPlayer, int bNewLevel = 0); void playerReset(PLAYER* pPlayer); void playerInit(int nPlayer, unsigned int a2); void CheckPickUp(PLAYER* pPlayer); diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index 7932e0d78..bc367471c 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -84,12 +84,12 @@ void viewBackupView(int nPlayer) // //--------------------------------------------------------------------------- -void viewCorrectViewOffsets(int nPlayer, vec3_t const* oldpos) +void viewCorrectViewOffsets(int nPlayer, const DVector3& oldpos) { PLAYER* pPlayer = &gPlayer[nPlayer]; VIEW* pView = &gPrevView[nPlayer]; - pView->pos.XY() += pPlayer->actor->spr.pos.XY() - DVector2(oldpos->X, oldpos->Y) * inttoworld; - pView->viewz += pPlayer->actor->int_pos().Z - oldpos->Z; + pView->pos.XY() += pPlayer->actor->spr.pos.XY() - oldpos.XY(); + pView->viewz += (pPlayer->actor->spr.pos.Z - oldpos.Z) * zworldtoint; } //--------------------------------------------------------------------------- diff --git a/source/games/blood/src/view.h b/source/games/blood/src/view.h index a63655d26..193e00eb0 100644 --- a/source/games/blood/src/view.h +++ b/source/games/blood/src/view.h @@ -137,7 +137,7 @@ void viewInitializePrediction(void); void viewUpdatePrediction(InputPacket* pInput); void viewCorrectPrediction(void); void viewBackupView(int nPlayer); -void viewCorrectViewOffsets(int nPlayer, vec3_t const* oldpos); +void viewCorrectViewOffsets(int nPlayer, const DVector3& oldpos); void InitStatusBar(void); void UpdateStatusBar(); void viewInit(void);