Fix mouse aim sensitivity

This commit is contained in:
elmasas
2026-09-29 18:00:29 -03:00
parent f27bd0b2a5
commit 56537782da
4 changed files with 27 additions and 0 deletions
+4
View File
@@ -3589,11 +3589,15 @@ L_088F13B8:
ctx.fpr[12] = ctx.fpr[12] - ctx.fpr[13];
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[15]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[15] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[15] = fs * ft; }
ctx.fpr[14] = ctx.fpr[14] + ctx.fpr[15];
ctx.fpr[14] = lcs::lcs_mouse_aim_turn_angle(ctx.fpr[14],
std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(196))));
aot_mem.aot_store32(ctx.gpr[17] + static_cast<std::uint32_t>(208), std::bit_cast<std::uint32_t>(ctx.fpr[14]));
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(192)));
{ const float fs = ctx.fpr[13]; const float ft = ctx.fpr[17]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[13] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[13] = fs * ft; }
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[16]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
ctx.fpr[12] = ctx.fpr[13] + ctx.fpr[12];
ctx.fpr[12] = lcs::lcs_mouse_aim_pitch_angle(ctx.fpr[12],
std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(196))));
aot_mem.aot_store32(ctx.gpr[17] + static_cast<std::uint32_t>(192), std::bit_cast<std::uint32_t>(ctx.fpr[12]));
ctx.gpr[4] = (50298u << 16u);
ctx.gpr[4] = (ctx.gpr[4] | 16384u);
+4
View File
@@ -7687,6 +7687,8 @@ L_088F74E4:
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[4] + static_cast<std::uint32_t>(23832)));
{ const float fs = ctx.fpr[16]; const float ft = ctx.fpr[17]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[16] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[16] = fs * ft; }
ctx.fpr[14] = ctx.fpr[14] + ctx.fpr[16];
ctx.fpr[14] = lcs::lcs_mouse_aim_turn_angle(ctx.fpr[14],
std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[30] + static_cast<std::uint32_t>(196))));
aot_mem.aot_store32(ctx.gpr[30] + static_cast<std::uint32_t>(208), std::bit_cast<std::uint32_t>(ctx.fpr[14]));
ctx.fpr[18] = std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[30] + static_cast<std::uint32_t>(192)));
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[18]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
@@ -7694,6 +7696,8 @@ L_088F74E4:
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[4] + static_cast<std::uint32_t>(23832)));
{ const float fs = ctx.fpr[13]; const float ft = ctx.fpr[19]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[13] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[13] = fs * ft; }
ctx.fpr[12] = ctx.fpr[12] + ctx.fpr[13];
ctx.fpr[12] = lcs::lcs_mouse_aim_pitch_angle(ctx.fpr[12],
std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[30] + static_cast<std::uint32_t>(196))));
aot_mem.aot_store32(ctx.gpr[30] + static_cast<std::uint32_t>(192), std::bit_cast<std::uint32_t>(ctx.fpr[12]));
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_load32(ctx.gpr[30] + static_cast<std::uint32_t>(204)));
ctx.fpr[14] = ctx.fpr[16] + ctx.fpr[14];
+15
View File
@@ -132,6 +132,21 @@ float lcs_mouse_camera_pitch_angle(float game_angle) noexcept {
return mouse_camera_angle(g_mouse_camera_dy, pitch_sign(), game_angle);
}
static float mouse_aim_angle(std::atomic<std::int32_t> &counts, float sign, float game_angle,
float fov) noexcept {
if (!mouse_camera_active()) return game_angle;
const float zoom = fov > 0.0f ? fov / 80.0f : 1.0f;
return take_mouse_angle(counts, sign) * zoom;
}
float lcs_mouse_aim_turn_angle(float game_angle, float fov) noexcept {
return mouse_aim_angle(g_mouse_camera_dx, -1.0f, game_angle, fov);
}
float lcs_mouse_aim_pitch_angle(float game_angle, float fov) noexcept {
return mouse_aim_angle(g_mouse_camera_dy, pitch_sign(), game_angle, fov);
}
bool lcs_camera_hook_enabled() noexcept {
static const bool value = [] {
const LcsConfiguration &config = lcs_render_configuration();
+4
View File
@@ -12,6 +12,10 @@ namespace lcs {
[[nodiscard]] float lcs_mouse_camera_pitch_angle(float game_angle) noexcept;
[[nodiscard]] float lcs_mouse_aim_turn_angle(float game_angle, float fov) noexcept;
[[nodiscard]] float lcs_mouse_aim_pitch_angle(float game_angle, float fov) noexcept;
[[nodiscard]] float lcs_mouse_vehicle_camera_axis_x(float game_axis) noexcept;
[[nodiscard]] float lcs_mouse_vehicle_camera_axis_y(float game_axis) noexcept;