From fdc6a49a97085c368147370e8ae880dc1d7792af Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 9 Sep 2022 19:26:31 +0200 Subject: [PATCH] - another movesprite wrapper to get rid of int_yvel and int_xvel --- source/core/coreactor.h | 6 ------ source/games/exhumed/src/engine.h | 4 ++++ source/games/exhumed/src/fish.cpp | 4 ++-- source/games/exhumed/src/lavadude.cpp | 4 ++-- source/games/exhumed/src/move.cpp | 4 ++-- source/games/exhumed/src/object.cpp | 4 ++-- source/games/exhumed/src/spider.cpp | 2 +- 7 files changed, 13 insertions(+), 15 deletions(-) diff --git a/source/core/coreactor.h b/source/core/coreactor.h index f879f4acf..ac0818255 100644 --- a/source/core/coreactor.h +++ b/source/core/coreactor.h @@ -143,12 +143,6 @@ public: vel.X += v * inttoworld; } - // Only used this way by Exhumed. - int int_yvel() const - { - return vel.Y * worldtoint; - } - vec3_t int_vel() const { return vec3_t(FloatToFixed(vel.X), FloatToFixed(vel.Y), FloatToFixed(vel.Z)); diff --git a/source/games/exhumed/src/engine.h b/source/games/exhumed/src/engine.h index 4e67df8db..543523735 100644 --- a/source/games/exhumed/src/engine.h +++ b/source/games/exhumed/src/engine.h @@ -38,6 +38,10 @@ Collision movesprite(DExhumedActor* spritenum, const DVector3& pos, int ceildist { return movesprite(spritenum, int(pos.X * worldtoint), int(pos.Y * worldtoint), int(pos.Z * zworldtoint), ceildist, flordist, clipmask); } +Collision movesprite(DExhumedActor* spritenum, const DVector3& pos, double xyfactor, int ceildist, int flordist, unsigned int clipmask) +{ + return movesprite(spritenum, int(pos.X * xyfactor * worldtoint), int(pos.Y * xyfactor * worldtoint), int(pos.Z * zworldtoint), ceildist, flordist, clipmask); +} void precache(); void resettiming(); diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index 6d3c11022..809275580 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -119,7 +119,7 @@ void AIFishLimb::Tick(RunListEvent* ev) } else { - auto coll = movesprite(pActor, pActor->int_xvel() << 8, pActor->int_yvel() << 8, pActor->int_zvel(), 2560, -2560, CLIPMASK1); + auto coll = movesprite(pActor, pActor->vel, 256., 2560, -2560, CLIPMASK1); if (coll.type != kHitNone) { pActor->vel.X = 0; @@ -413,7 +413,7 @@ void AIFish::Tick(RunListEvent* ev) auto pSector =pActor->sector(); // loc_2EF54 - Collision coll = movesprite(pActor, pActor->int_xvel() << 13, pActor->int_yvel() << 13, pActor->int_zvel() << 2, 0, 0, CLIPMASK0); + Collision coll = movesprite(pActor, pActor->vel * 4, 2048., 0, 0, CLIPMASK0); if (!(pActor->sector()->Flag & kSectUnderwater)) { diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index 4ca2798e0..4c8bcb167 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -73,7 +73,7 @@ void AILavaDudeLimb::Tick(RunListEvent* ev) pActor->spr.shade += 3; - auto coll = movesprite(pActor, pActor->int_xvel() << 12, pActor->int_yvel() << 12, pActor->int_zvel(), 2560, -2560, CLIPMASK1); + auto coll = movesprite(pActor, pActor->vel, 4096., 2560, -2560, CLIPMASK1); if (coll.type || pActor->spr.shade > 100) { @@ -279,7 +279,7 @@ void AILavaDude::Tick(RunListEvent* ev) auto pos = pActor->spr.pos; auto pSector =pActor->sector(); - auto coll = movesprite(pActor, pActor->int_xvel() << 8, pActor->int_yvel() << 8, 0, 0, 0, CLIPMASK0); + auto coll = movesprite(pActor, DVector3(pActor->vel.XY(), 0), 256., 0, 0, CLIPMASK0); if (pSector != pActor->sector()) { diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 869cfcf7b..f80b07f71 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -520,7 +520,7 @@ void Gravity(DExhumedActor* pActor) Collision MoveCreature(DExhumedActor* pActor) { - return movesprite(pActor, pActor->int_xvel() << 8, pActor->int_yvel() << 8, pActor->int_zvel(), 15360, -5120, CLIPMASK0); + return movesprite(pActor, pActor->vel, 256., 15360, -5120, CLIPMASK0); } Collision MoveCreatureWithCaution(DExhumedActor* pActor) @@ -1221,7 +1221,7 @@ void AICreatureChunk::Tick(RunListEvent* ev) auto pSector = pActor->sector(); pActor->spr.pal = pSector->ceilingpal; - auto nVal = movesprite(pActor, pActor->int_xvel() << 10, pActor->int_yvel() << 10, pActor->int_zvel(), 2560, -2560, CLIPMASK1); + auto nVal = movesprite(pActor, pActor->vel, 1024., 2560, -2560, CLIPMASK1); if (pActor->spr.pos.Z >= pSector->floorz) { diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index 7b63e4345..94521c679 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1434,7 +1434,7 @@ void AISpark::Tick(RunListEvent* ev) pActor->add_int_zvel( 128); - auto nMov = movesprite(pActor, pActor->int_xvel() << 12, pActor->int_yvel() << 12, pActor->int_zvel(), 2560, -2560, CLIPMASK1); + auto nMov = movesprite(pActor, pActor->vel, 4096, 2560, -2560, CLIPMASK1); if (!nMov.type && !nMov.exbits) { return; } @@ -1886,7 +1886,7 @@ void AIObject::Tick(RunListEvent* ev) FUNCOBJECT_GOTO: if (nStat != kStatExplodeTarget) { - auto nMov = movesprite(pActor, pActor->int_xvel() << 6, pActor->int_yvel() << 6, pActor->int_zvel(), 0, 0, CLIPMASK0); + auto nMov = movesprite(pActor, pActor->vel, 64., 0, 0, CLIPMASK0); if (pActor->spr.statnum == kStatExplodeTrigger) { pActor->spr.pal = 1; diff --git a/source/games/exhumed/src/spider.cpp b/source/games/exhumed/src/spider.cpp index 5a1974283..c380baccd 100644 --- a/source/games/exhumed/src/spider.cpp +++ b/source/games/exhumed/src/spider.cpp @@ -273,7 +273,7 @@ void AISpider::Tick(RunListEvent* ev) spp->vel.Y = 0; } - auto nMov = movesprite(spp, spp->int_xvel() << nVel, spp->int_yvel() << nVel, spp->int_zvel(), 1280, -1280, CLIPMASK0); + auto nMov = movesprite(spp, spp->vel, 1 << nVel, 1280, -1280, CLIPMASK0); if (nMov.type == kHitNone && nMov.exbits == 0) return;