diff options
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/Draw.cpp | 65 | ||||
-rw-r--r-- | src/render/Draw.h | 12 | ||||
-rw-r--r-- | src/render/Hud.cpp | 18 |
3 files changed, 21 insertions, 74 deletions
diff --git a/src/render/Draw.cpp b/src/render/Draw.cpp index f1b2147f..90875299 100644 --- a/src/render/Draw.cpp +++ b/src/render/Draw.cpp @@ -16,70 +16,43 @@ uint8 &CDraw::FadeRed = *(uint8*)0x95CD90; uint8 &CDraw::FadeGreen = *(uint8*)0x95CD71; uint8 &CDraw::FadeBlue = *(uint8*)0x95CD53; -void CDraw::CalculateAspectRatio() +void +CDraw::CalculateAspectRatio() { SetScreenMult(DEFAULT_SCALE); -#ifndef HOR_PLUS - if (FrontEndMenuManager.m_PrefsUseWideScreen) - ms_fAspectRatio = 16.0f / 9.0f; + if(FrontEndMenuManager.m_PrefsUseWideScreen) + ms_fAspectRatio = 16.0f/9.0f; else - ms_fAspectRatio = 4.0f / 3.0f; -#else - switch (FrontEndMenuManager.m_PrefsUseWideScreen) { - case AR_AUTO: - ms_fAspectRatio = (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT; - return; - case AR_3_2: - ms_fAspectRatio = 3.0f / 2.0f; - return; - case AR_4_3: - ms_fAspectRatio = 4.0f / 3.0f; - return; - case AR_5_3: - ms_fAspectRatio = 5.0f / 3.0f; - return; - case AR_5_4: - ms_fAspectRatio = 5.0f / 4.0f; - return; - case AR_15_9: - ms_fAspectRatio = 15.0f / 9.0f; - return; - case AR_16_9: - ms_fAspectRatio = 16.0f / 9.0f; - return; - case AR_16_10: - ms_fAspectRatio = 16.0f / 10.0f; - return; - case AR_64_27: - ms_fAspectRatio = 64.0f / 27.0f; - return; - }; - -#endif + ms_fAspectRatio = 4.0f/3.0f; } -float -HorToVert(float hfov) +static float hFov2vFov(float hfov) { - float vfov = atan(tan(DEGTORAD(hfov) / 2) / (4.0 / 3.0)) * 2; - return RADTODEG(hfov = atan(tan(vfov / 2) * CDraw::GetAspectRatio()) * 2); + float w = SCREENW; + float h = SCREENH; + + // => tan(hFOV/2) = tan(vFOV/2)*aspectRatio + // => tan(vFOV/2) = tan(hFOV/2)/aspectRatio + float ar1 = 4.0/3.0; + float ar2 = w/h; + hfov = DEGTORAD(hfov); + float vfov = atan(tan(hfov/2) / ar1) *2; + hfov = atan(tan(vfov/2) * ar2) *2; + return RADTODEG(hfov); } void CDraw::SetFOV(float fov) { -#ifndef HOR_PLUS +// TODO: fix FOV here or somewhere else? +// ms_fFOV = hFov2vFov(fov); ms_fFOV = fov; -#else - ms_fFOV = HorToVert(fov); -#endif } STARTPATCHES InjectHook(0x4FE7B0, CDraw::SetFOV, PATCH_JUMP); - // Some patches to fix aiming offset on "CCamera::Find3rdPersonCamTargetVector". Nop(0x46B618, 2); Patch<float>(0x5F0A64, 1.3333334f); ENDPATCHES diff --git a/src/render/Draw.h b/src/render/Draw.h index 9e334d02..1fcb5212 100644 --- a/src/render/Draw.h +++ b/src/render/Draw.h @@ -3,18 +3,6 @@ #define HUD_SCALE 0.8f #define DEFAULT_SCALE 1.0f -enum eAspectRatio { - AR_AUTO, - AR_3_2, - AR_4_3, - AR_5_3, - AR_5_4, - AR_15_9, - AR_16_9, - AR_16_10, - AR_64_27, -}; - class CDraw { private: diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index 4b6094f1..2547ab2b 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -125,15 +125,6 @@ WRAPPER void CHud::Draw(void) { EAXJMP(0x5052A0); } #else void CHud::Draw() { - RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); - RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); - RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); - RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSMIRROR); - RwRenderStateSet(rwRENDERSTATETEXTURERASTER, (void*)FALSE); - RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEFLAT); - RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR); - if (CReplay::IsPlayingBack()) return; @@ -177,7 +168,6 @@ void CHud::Draw() float fMultBright = SpriteBrightness * 0.03f * (0.25f * fStep + 0.75f); CRect rect; -#ifndef HOR_PLUS float fWidescreenOffset[2] = { 0.0f, 0.0f }; if (FrontEndMenuManager.m_PrefsUseWideScreen) { @@ -188,11 +178,7 @@ void CHud::Draw() if (Mode_RunAround && TheCamera.Cams->Using3rdPersonMouseCam()) { float f3rdX = SCREENW * TheCamera.m_f3rdPersonCHairMultX + fWidescreenOffset[0]; float f3rdY = SCREENH * TheCamera.m_f3rdPersonCHairMultY - fWidescreenOffset[1]; -#else - if (Mode_RunAround && TheCamera.Cams->Using3rdPersonMouseCam()) { - float f3rdX = (((TheCamera.m_f3rdPersonCHairMultX - 0.5f) / ((CDraw::GetAspectRatio()) / (4.0f / 3.0f))) + 0.5f) * SCREENW; - float f3rdY = SCREENH * TheCamera.m_f3rdPersonCHairMultY; -#endif + if (CWorld::Players[CWorld::PlayerInFocus].m_pPed && WeaponType == WEAPONTYPE_M16) { rect.left = f3rdX - SCREEN_SCALE_X(32.0f * 0.6f); rect.top = f3rdY - SCREEN_SCALE_Y(32.0f * 0.6f); @@ -1457,7 +1443,7 @@ STARTPATCHES InjectHook(0x5048F0, &CHud::Initialise, PATCH_JUMP); InjectHook(0x504CC0, &CHud::ReInitialise, PATCH_JUMP); InjectHook(0x50A250, &CHud::SetBigMessage, PATCH_JUMP); - //InjectHook(0x5051E0, &CHud::SetHelpMessage, PATCH_JUMP); + InjectHook(0x5051E0, &CHud::SetHelpMessage, PATCH_JUMP); InjectHook(0x50A210, &CHud::SetMessage, PATCH_JUMP); InjectHook(0x50A320, &CHud::SetPagerMessage, PATCH_JUMP); InjectHook(0x505290, &CHud::SetVehicleName, PATCH_JUMP); |