From c7d7ecb6920d90baff2a43cf87ff840f68ca68ba Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 10 Sep 2022 20:51:42 +0200 Subject: [PATCH] - floatified grenade vector. --- source/games/exhumed/src/exhumed.cpp | 3 +-- source/games/exhumed/src/exhumedactor.h | 3 +-- source/games/exhumed/src/grenade.cpp | 12 ++++-------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/source/games/exhumed/src/exhumed.cpp b/source/games/exhumed/src/exhumed.cpp index ba31f1044..9ab9224ef 100644 --- a/source/games/exhumed/src/exhumed.cpp +++ b/source/games/exhumed/src/exhumed.cpp @@ -622,8 +622,7 @@ void DExhumedActor::Serialize(FSerializer& arc) ("angle2", pitch) ("turn", nTurn) - ("x", x) - ("y", y); + ("vec", vec); } void SerializeState(FSerializer& arc) diff --git a/source/games/exhumed/src/exhumedactor.h b/source/games/exhumed/src/exhumedactor.h index 78199daec..018fb1b45 100644 --- a/source/games/exhumed/src/exhumedactor.h +++ b/source/games/exhumed/src/exhumedactor.h @@ -36,8 +36,7 @@ public: // for the grenade. int nTurn; - int x; - int y; + DVector2 vec; DExhumedActor() = default; diff --git a/source/games/exhumed/src/grenade.cpp b/source/games/exhumed/src/grenade.cpp index ed556ab5c..2f4b699ba 100644 --- a/source/games/exhumed/src/grenade.cpp +++ b/source/games/exhumed/src/grenade.cpp @@ -41,9 +41,7 @@ void BounceGrenade(DExhumedActor* pActor, DAngle nAngle) { pActor->nTurn >>= 1; - pActor->x = bcos(nAngle.Buildang(), -5) * pActor->nTurn; - pActor->y = bsin(nAngle.Buildang(), -5) * pActor->nTurn; - + pActor->vec = nAngle.ToVector() * pActor->nTurn * 32; D3PlayFX(StaticSound[kSound3], pActor); } @@ -90,8 +88,7 @@ void ThrowGrenade(int nPlayer, int, int, int ecx, int push1) pActor->vel.Z = pPlayerActor->vel.Z; } - pActor->x = bcos(nAngle.Buildang(), -4) * pActor->nTurn; - pActor->y = bsin(nAngle.Buildang(), -4) * pActor->nTurn; + pActor->vec = nAngle.ToVector() * pActor->nTurn * 64; PlayerList[nPlayer].pPlayerGrenade = nullptr; @@ -282,7 +279,7 @@ void AIGrenade::Tick(RunListEvent* ev) int zVel = pActor->int_zvel(); Gravity(pActor); - auto nMov = movesprite(pActor, pActor->x, pActor->y, pActor->int_zvel(), pActor->native_clipdist() >> 1, pActor->native_clipdist() >> 1, CLIPMASK1); + auto nMov = movesprite(pActor, int(pActor->vec.X * worldtoint), int(pActor->vec.Y * worldtoint), pActor->int_zvel(), pActor->native_clipdist() >> 1, pActor->native_clipdist() >> 1, CLIPMASK1); if (!nMov.type && !nMov.exbits) return; @@ -314,8 +311,7 @@ void AIGrenade::Tick(RunListEvent* ev) } pActor->nCount = 255 - (RandomByte() * 2); - pActor->x -= (pActor->x >> 4); - pActor->y -= (pActor->y >> 4); + pActor->vec *= (15./16.); } // loc_2CF60: