fixed? the patch breaking when changing scopes.

This commit is contained in:
notGreg 2022-06-20 20:06:49 +02:00
parent 666f4fd5f2
commit 1aca3df01c
3 changed files with 35 additions and 14 deletions

View File

@ -31,6 +31,10 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="0Harmony, Version=2.9.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\MyFirstPlugin\MyFirstPlugin\lib\0Harmony.dll</HintPath>
</Reference>
<Reference Include="Aki.Reflection"> <Reference Include="Aki.Reflection">
<HintPath>E:\SPT-AKI\SPT-AKI 2.3.1 UniformAimTest\EscapeFromTarkov_Data\Managed\Aki.Reflection.dll</HintPath> <HintPath>E:\SPT-AKI\SPT-AKI 2.3.1 UniformAimTest\EscapeFromTarkov_Data\Managed\Aki.Reflection.dll</HintPath>
</Reference> </Reference>

View File

@ -1,8 +1,7 @@
using System.Reflection; using System.Reflection;
using Aki.Reflection.Patching; using Aki.Reflection.Patching;
using EFT; using EFT;
using UniformAim; using HarmonyLib;
namespace UniformAim namespace UniformAim
{ {
@ -19,4 +18,19 @@ namespace UniformAim
____aimingSens = Plugin.mySens; ____aimingSens = Plugin.mySens;
} }
} }
public class get_AimingSensitivityPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return typeof(Player.FirearmController).GetMethod("get_AimingSensitivity");
}
[PatchPostfix]
public static void PatchPostfix(ref float ____aimingSens)
{
____aimingSens = Plugin.mySens;
}
}
} }

View File

@ -1,19 +1,18 @@
using BepInEx; using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using UniformAim;
using System; using System;
using UnityEngine; using UnityEngine;
namespace UniformAim namespace UniformAim
{ {
[BepInPlugin("com.greg.tarkovuniformaim", "Uniform Aim for Tarkov", "0.1.1")] [BepInPlugin("com.greg.tarkovuniformaim", "Uniform Aim for Tarkov", "1.0.0-rc")]
[BepInProcess("EscapeFromTarkov.exe")] [BepInProcess("EscapeFromTarkov.exe")]
public class Plugin : BaseUnityPlugin public class Plugin : BaseUnityPlugin
{ {
//Bepinex.Configurator fields //Bepinex.Configurator fields
public static ConfigEntry<int> configFOV; public static ConfigEntry<int> configFOV;
public static ConfigEntry<float> configCoeff; public static ConfigEntry<int> configCoeff;
public static ConfigEntry<int> configSens; public static ConfigEntry<int> configSens;
public static float mySens = 2f; public static float mySens = 2f;
@ -22,7 +21,7 @@ namespace UniformAim
float lastFOV = -1f; float lastFOV = -1f;
float lastFOV2 = -1f; float lastFOV2 = -1f;
//human-friendly names //human-friendly names for variables used later
float FPSCameraFOV = -1f; float FPSCameraFOV = -1f;
float ScopeFOV = -1f; float ScopeFOV = -1f;
float currentFOV = -1f; float currentFOV = -1f;
@ -38,7 +37,6 @@ namespace UniformAim
//Logger.LogInfo("GetAspectRatio(): resX: " + resX + " resY: " + resY); //Logger.LogInfo("GetAspectRatio(): resX: " + resX + " resY: " + resY);
return (resX / resY); return (resX / resY);
} }
//convert degrees to radians
//calculate horizontal FOV based on vertical FOV //calculate horizontal FOV based on vertical FOV
float CalculateHFOV(float FOV) float CalculateHFOV(float FOV)
{ {
@ -57,25 +55,31 @@ namespace UniformAim
aimedFOV = aimedFOV / 2 * Mathf.Deg2Rad; aimedFOV = aimedFOV / 2 * Mathf.Deg2Rad;
hipFOV = hipFOV / 2 * Mathf.Deg2Rad; hipFOV = hipFOV / 2 * Mathf.Deg2Rad;
//ratio of tangents as sensitivity float exponent = (float)(100f / configCoeff.Value);
float sensitivity = (float)((Math.Tan(aimedFOV) / Math.Tan(hipFOV)) * (mySens / 100));
return sensitivity; float tanRatio = (float)(Math.Tan(aimedFOV) / Math.Tan(hipFOV));
float sensitivity = (float)(configSens.Value/100f);
float result = (float)Math.Pow(tanRatio, exponent) * sensitivity;
return result;
} }
void Awake() void Awake()
{ {
//Enable uniform aim patch //Enable uniform aim patch
new UpdateSensitivityPatch().Enable(); new UpdateSensitivityPatch().Enable();
new get_AimingSensitivityPatch().Enable();
//add configuration slider for field of view //add configuration slider for field of view
configFOV = Config.Bind("General", "FOV", 75, new ConfigDescription("In-game Field of View value", new AcceptableValueRange<int>(50, 75))); configFOV = Config.Bind("General", "FOV", 75, new ConfigDescription("In-game Field of View value", new AcceptableValueRange<int>(50, 75)));
//add coefficient slider //add coefficient slider
configCoeff = Config.Bind("General", "Coefficient", 1.33f, new ConfigDescription("Coefficient - increases sensitivity at higher zoom levels, default 4/3", new AcceptableValueRange<float>(0.001f, 5.0f))); configCoeff = Config.Bind("General", "Coefficient", 133, new ConfigDescription("Coefficient - increases sensitivity at higher zoom levels", new AcceptableValueRange<int>(1, 300)));
//add secondary sensitivity slider for greater control //add secondary sensitivity slider for greater control
configSens = Config.Bind("General", "Sensitivity", 25, new ConfigDescription("Secondary sensitivity multiplier in case Tarkov's default isn't enough", new AcceptableValueRange<int>(1, 200))); configSens = Config.Bind("General", "Sensitivity", 25, new ConfigDescription("Sensitivity while aiming", new AcceptableValueRange<int>(1, 200)));
} }
@ -109,7 +113,6 @@ namespace UniformAim
} }
mySens = CalculateSensitivity(currentFOV, configFOV.Value, configSens.Value); mySens = CalculateSensitivity(currentFOV, configFOV.Value, configSens.Value);
} }
} }
} }