From de38eb4dab244dd0f2db00116dfe098fffd5d4a8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 16 Sep 2022 18:23:58 +0200 Subject: [PATCH] - add_int_pos in MoveDude --- source/games/blood/src/actor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index c9f5158c7..e1ae1e9cc 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -4745,7 +4745,7 @@ void MoveDude(DBloodActor* actor) { if (pPlayer && gNoClip) { - actor->add_int_pos({ actor->int_vel().X >> 12, actor->int_vel().Y >> 12, 0 }); + actor->spr.pos += actor->vel.XY(); updatesector(actor->spr.pos, &pSector); if (!pSector) pSector = actor->sector(); } @@ -4753,6 +4753,7 @@ void MoveDude(DBloodActor* actor) { auto bakCstat = actor->spr.cstat; actor->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL; + // Note: vel is Q16.16, ClipMove wants Q28.4, which passes it on to clipmove which wants Q14.18. Anyone confused yet...? ClipMove(actor->spr.pos, &pSector, actor->int_vel().X >> 12, actor->int_vel().Y >> 12, wd, tz, bz, CLIPMASK0, actor->hit.hit); if (pSector == nullptr) {