mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Client: add per-optic sensitivity scalars to CurveLook
Implemented by popular demand. Allows setting different sensitivity values per optic zoom level on a weapon. The mouse input handler already had this, but the controller one didn't so it had to be implemented here.
This commit is contained in:
parent
c4098054fa
commit
704498aecb
@ -1,4 +1,5 @@
|
||||
#include "input.h"
|
||||
#include "edict.h"
|
||||
#include "r1/c_weapon_x.h"
|
||||
#include "c_player.h"
|
||||
#include "cliententitylist.h"
|
||||
@ -61,7 +62,6 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
||||
float v58; // xmm0_4
|
||||
float v59; // xmm8_4
|
||||
float v60; // xmm9_4
|
||||
C_WeaponX* v61; // r14
|
||||
float v62; // xmm10_4
|
||||
float v63; // xmm0_4
|
||||
float v64; // xmm6_4
|
||||
@ -271,7 +271,7 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
||||
|| ((player->m_melee.scriptedState - 3) & 0xFFFFFFFA) == 0
|
||||
|| sub_1409DC4E0(player)
|
||||
|| (player->m_latestMeleeWeapon.IsValid())
|
||||
&& (player->CheckMeleeWeapon())
|
||||
|| (player->CheckMeleeWeapon())
|
||||
|| player->m_MoveType == MOVETYPE_TRAVERSE && !player->m_traversalType
|
||||
|| (bZooming = input->m_bZooming, v55 = player->m_bZooming, input->m_bZooming = v55, bZooming) && !v55)
|
||||
{
|
||||
@ -292,21 +292,40 @@ void C_Player::CurveLook(C_Player* player, CInput::UserInput_t* input, float a3,
|
||||
|
||||
v59 = v31 * v12;
|
||||
v60 = v49 * v12;
|
||||
v61 = C_BaseCombatCharacter__GetActiveWeapon(player);
|
||||
if (v61 && C_Player__GetZoomFrac(player) >= 0.99000001 && v61->m_modVars[412])
|
||||
C_WeaponX* pWeapon = C_BaseCombatCharacter__GetActiveWeapon(player);
|
||||
if (pWeapon && C_Player__GetZoomFrac(player) >= 0.99000001 && pWeapon->m_modVars[412])
|
||||
v62 = *v38;
|
||||
else
|
||||
v62 = v38[1];
|
||||
|
||||
float adsScalar = 1.0f;
|
||||
|
||||
if (GamePad_UseAdvancedAdsScalarsPerScope() && pWeapon)
|
||||
{
|
||||
const float interpAmount = pWeapon->HasTargetZoomFOV()
|
||||
? pWeapon->GetZoomFOVInterpAmount(g_ClientGlobalVariables->exactCurTime)
|
||||
: 1.0f - pWeapon->GetZoomFOVInterpAmount(g_ClientGlobalVariables->exactCurTime);
|
||||
|
||||
const float baseScalar1 = GamePad_GetAdvancedAdsScalarForOptic((WeaponScopeZoomLevel_e)pWeapon->m_modVars[0xA0C]);
|
||||
const float baseScalar2 = GamePad_GetAdvancedAdsScalarForOptic((WeaponScopeZoomLevel_e)pWeapon->m_modVars[0xA10]);
|
||||
|
||||
adsScalar = ((baseScalar2 - baseScalar1) * interpAmount) + baseScalar1;
|
||||
}
|
||||
|
||||
v63 = sub_1405D4300(player);
|
||||
v64 = (float)(v50 * inputSampleFrametime) * *v38;
|
||||
v65 = a9;
|
||||
v66 = (float)(v48 * inputSampleFrametime) * v62;
|
||||
a9->unk1 = v71.y;
|
||||
v65->unk2 = 0i64;
|
||||
|
||||
const float pitchX = ((v66 * adsScalar) + v59) * v63;
|
||||
const float pitchY = ((v64 * adsScalar) + v60) * v63;
|
||||
|
||||
v65->pitch.x = pitchX * inputSampleFrametime_c;
|
||||
v65->pitch.y = (pitchY * inputSampleFrametime_c) * -1.0f;
|
||||
v65->pitch.z = v71.x;
|
||||
v65->pitch.x = (float)((float)(v66 + v59) * v63) * inputSampleFrametime_c;
|
||||
v65->pitch.y = (float)((float)((float)(v64 + v60) * v63) * inputSampleFrametime_c) * -1.0f;
|
||||
|
||||
if (m_bAutoAim_UnknownBool1AD && runAimAssist)
|
||||
{
|
||||
sub_1405AF1F0(input, player, (QAngle*)&v70, &v69, v14, v13, inputSampleFrametime_c, a5, (QAngle*)&a9);
|
||||
|
Loading…
x
Reference in New Issue
Block a user