From d858856e06b39b2fab290a2b62614b5651cf30d5 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Mon, 27 Mar 2023 08:32:52 +1100 Subject: [PATCH] - Exhumed: Store a pos delta on the stack in `doPlayerMovement(). * We need this in a few places. * Z is inverted because pitch is negated. Previously I just swapped the operation around. --- source/games/exhumed/src/player.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 1efde5166..00a38c893 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -1749,11 +1749,12 @@ static bool doPlayerMovement(Player* const pPlayer) doPlayerMovingBlocks(pPlayer, nMove, spr_pos, spr_vel, spr_sect); } + const auto posdelta = spr_pos - pPlayerActor->spr.pos; pPlayer->ototalvel = pPlayer->totalvel; - pPlayer->totalvel = int((spr_pos.XY() - pPlayerActor->spr.pos.XY()).Length() * worldtoint); + pPlayer->totalvel = int(posdelta.XY().Length() * worldtoint); // This should amplified 8x, not 2x, but it feels very heavy. Add a CVAR? - doPlayerPitch(pPlayer, (pPlayerActor->spr.pos.Z - spr_pos.Z) * 2.); + doPlayerPitch(pPlayer, -posdelta.Z * 2.); updatePlayerViewSector(pPlayer, nMove, spr_pos, spr_vel, bUnderwater); pPlayer->nPlayerD = (pPlayerActor->spr.pos - spr_pos);