mirror of
https://github.com/elmasas/lcs-recomp
synced 2026-10-21 23:44:10 -04:00
Fix mouse aim sensitivity
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user