From df30c01472520b0ac38959c2269da739c3213d91 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sat, 22 Apr 2023 21:40:45 +1000 Subject: [PATCH] - Rework `cl_viewtilting 1` to be consistent across games. * Setup before from when it was Exhumed-only assumed a 30Hz clock. Needed adjusted variables and setup for Shadow Warrior. --- source/core/gameinput.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/core/gameinput.cpp b/source/core/gameinput.cpp index 45cd03f47..031ffa048 100644 --- a/source/core/gameinput.cpp +++ b/source/core/gameinput.cpp @@ -516,17 +516,18 @@ void PlayerAngles::doViewTilting(InputPacket* const pInput, const DVector2& nVel { // Scale/attenuate tilting based on player actions. const auto runScale = 1. / (!(pInput->actions & SB_RUN) + 1); + const auto avelScale = (1966426. / 12000000.); const auto waterScale = 1. / (bUnderwater + 1); const auto strafeScale = !!pInput->svel + 1; if (cl_viewtilting == 1) { - // Console-like yaw rolling. Adjustment == (90/32) for keyboard turning. Clamp is 1.5x this value. - const auto rollAdj = pActor->spr.Angles.Roll.Degrees() + pInput->avel * (48779.f / 150000.f) * cl_viewtiltscale; - const auto rollAmp = waterScale; - const auto rollMax = (11553170. / 1347146.) * cl_viewtiltscale; - pActor->spr.Angles.Roll = DAngle::fromDeg(clamp(rollAdj * rollAmp, -rollMax, rollMax)); + // Console-like yaw rolling. Adjustment == ~(90/32) for keyboard turning. Clamp is 1.5x this value. + const auto rollAdj = DAngle::fromDeg(pInput->avel * cl_viewtiltscale); + const auto rollAmp = DAngle::fromDeg(avelScale * waterScale); + const auto rollMax = DAngle::fromDeg((90. / 32. * 1.5) * cl_viewtiltscale); scaletozero(pActor->spr.Angles.Roll, ROLL_TILTRETURN); + pActor->spr.Angles.Roll = clamp(pActor->spr.Angles.Roll + rollAdj * rollAmp, -rollMax, rollMax); } else if (cl_viewtilting == 2) {