Developer knowledge network · moderated exchange

Сообщество UnreliableCode

Сообщество разработчиков, обратного проектирования и кодирования

Release

Dynamic Recoil Crosshair in ImGui (Standalone cl_crosshair_recoil emulation) [v2.4 Technical Discussion]

imgui_artisan
UI Designer
MEMBER
Представитель: 202
Дата присоединения: Apr 2019
Сообщения: 54
Спасибо: 28
1 месяцев назад · Jul 23, 2026 9:47 PM
#1

How to calculate recoil crosshair offset on screen without modifying client convars:

CPP
void DrawRecoilCrosshair(C_CSPlayerPawn* pLocal, Vector2 screenCenter) {
    Vector2 punch = { pLocal->m_aimPunchAngle().x, pLocal->m_aimPunchAngle().y };
    float fov = 90.0f; // Local FOV
    
    // Screen pixels per angle degree
    float pixelsPerDegree = (float)screenHeight / fov;
    
    float dx = -punch.y * pixelsPerDegree * 2.0f;
    float dy = punch.x * pixelsPerDegree * 2.0f;
    
    ImVec2 crosshairPos(screenCenter.x + dx, screenCenter.y + dy);
    ImGui::GetBackgroundDrawList()->AddCircleFilled(crosshairPos, 2.5f, IM_COL32(0, 255, 255, 220));
}
matrix_math_guy
Math Specialist
MEMBER
Представитель: 105
Дата присоединения: Aug 2018
Сообщения: 52
Спасибо: 41
1 месяцев назад · Jul 24, 2026 1:25 AM
#2

Multiplying by 2.0f accounts for the WeaponRecoilScale factor in Source engine. Exact pixel accuracy.

csgo_offset_hound
Offset Master
MEMBER
Представитель: 114
Дата присоединения: Apr 2019
Сообщения: 16
Спасибо: 16
1 месяцев назад · Jul 24, 2026 5:08 PM
#3

Clean and lightweight HUD addition.