diff --git a/Client/core/CCore.cpp b/Client/core/CCore.cpp index 3020fe65390..400297a7127 100644 --- a/Client/core/CCore.cpp +++ b/Client/core/CCore.cpp @@ -573,8 +573,8 @@ void CCore::ApplyGameSettings() CVARS_GET("tyre_smoke_enabled", bVal); m_pMultiplayer->SetTyreSmokeEnabled(bVal); pGameSettings->UpdateFieldOfViewFromSettings(); - pGameSettings->ResetVehiclesLODDistance(false); - pGameSettings->ResetPedsLODDistance(false); + pGameSettings->ResetVehiclesLODDistance(); + pGameSettings->ResetPedsLODDistance(); pGameSettings->ResetCoronaReflectionsEnabled(); pController->SetVerticalAimSensitivityRawValue(CVARS_GET_VALUE("vertical_aim_sensitivity")); CVARS_GET("mastervolume", fVal); diff --git a/Client/game_sa/CSettingsSA.cpp b/Client/game_sa/CSettingsSA.cpp index cb608846597..198fddbf4db 100644 --- a/Client/game_sa/CSettingsSA.cpp +++ b/Client/game_sa/CSettingsSA.cpp @@ -563,74 +563,35 @@ void CSettingsSA::SetFieldOfViewVehicleMax(float fAngle, bool bFromScript) // Vehicles LOD draw distance // //////////////////////////////////////////////// -float ms_fClientMaxVehicleLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE; -float ms_fClientMaxTrainPlaneLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE * TRAIN_LOD_DISTANCE_MULTIPLIER; -float ms_fScriptMaxVehicleLODDistance = ms_fClientMaxVehicleLODDistance; -float ms_fScriptMaxTrainPlaneLODDistance = ms_fClientMaxTrainPlaneLODDistance; bool ms_bMaxVehicleLODDistanceFromScript = false; void CSettingsSA::SetVehiclesLODDistance(float fVehiclesLODDistance, float fTrainsPlanesLODDistance, bool bFromScript) { - if (bFromScript) - { - ms_fScriptMaxVehicleLODDistance = fVehiclesLODDistance; - ms_fScriptMaxTrainPlaneLODDistance = fTrainsPlanesLODDistance; - ms_bMaxVehicleLODDistanceFromScript = bFromScript; - } - else - { - ms_fClientMaxVehicleLODDistance = fVehiclesLODDistance; - ms_fClientMaxTrainPlaneLODDistance = fTrainsPlanesLODDistance; - } - - if (ms_bMaxVehicleLODDistanceFromScript) - { - ms_fVehicleLODDistance = Min(ms_fClientMaxVehicleLODDistance, ms_fScriptMaxVehicleLODDistance); - ms_fTrainPlaneLODDistance = Min(ms_fClientMaxTrainPlaneLODDistance, ms_fScriptMaxTrainPlaneLODDistance); - } - else - { - ms_fVehicleLODDistance = Min(fVehiclesLODDistance, ms_fClientMaxVehicleLODDistance); - ms_fTrainPlaneLODDistance = Min(fTrainsPlanesLODDistance, ms_fClientMaxTrainPlaneLODDistance); - } + ms_fVehicleLODDistance = fVehiclesLODDistance; + ms_fTrainPlaneLODDistance = fTrainsPlanesLODDistance; + ms_bMaxVehicleLODDistanceFromScript = bFromScript; } -void CSettingsSA::ResetVehiclesLODDistance(bool bFromScript) +void CSettingsSA::ResetVehiclesLODDistance(bool bForceDefault) { - if (!bFromScript) - { - bool bHighDetailVehicles; - g_pCore->GetCVars()->Get("high_detail_vehicles", bHighDetailVehicles); + if (ms_bMaxVehicleLODDistanceFromScript && !bForceDefault) + return; - if (bHighDetailVehicles) - { - ms_fClientMaxVehicleLODDistance = MAX_VEHICLE_LOD_DISTANCE; - ms_fClientMaxTrainPlaneLODDistance = MAX_VEHICLE_LOD_DISTANCE; - } - else - { - ms_fClientMaxVehicleLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE; - ms_fClientMaxTrainPlaneLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE * TRAIN_LOD_DISTANCE_MULTIPLIER; - } + bool bHighDetailVehicles; + g_pCore->GetCVars()->Get("high_detail_vehicles", bHighDetailVehicles); - // Script still wants to override client setting, let's make sure we use latest max - if (ms_bMaxVehicleLODDistanceFromScript) - { - ms_fVehicleLODDistance = Min(ms_fClientMaxVehicleLODDistance, ms_fScriptMaxVehicleLODDistance); - ms_fTrainPlaneLODDistance = Min(ms_fClientMaxTrainPlaneLODDistance, ms_fScriptMaxTrainPlaneLODDistance); - return; - } + if (bHighDetailVehicles) + { + ms_fVehicleLODDistance = MAX_VEHICLE_LOD_DISTANCE; + ms_fTrainPlaneLODDistance = MAX_VEHICLE_LOD_DISTANCE; + } + else + { + ms_fVehicleLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE; + ms_fTrainPlaneLODDistance = DEFAULT_VEHICLE_LOD_DISTANCE * TRAIN_LOD_DISTANCE_MULTIPLIER; } ms_bMaxVehicleLODDistanceFromScript = false; - ms_fVehicleLODDistance = ms_fClientMaxVehicleLODDistance; - ms_fTrainPlaneLODDistance = ms_fClientMaxTrainPlaneLODDistance; -} - -void CSettingsSA::ResetVehiclesLODDistanceFromScript() -{ - ms_bMaxVehicleLODDistanceFromScript = false; - ResetVehiclesLODDistance(false); } void CSettingsSA::GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTrainsPlanesLODDistance) @@ -644,54 +605,28 @@ void CSettingsSA::GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTr // Peds LOD draw distance // //////////////////////////////////////////////// -float ms_fClientMaxPedsLODDistance = DEFAULT_PEDS_LOD_DISTANCE; -float ms_fScriptMaxPedsLODDistance = ms_fClientMaxPedsLODDistance; bool ms_bMaxPedsLODDistanceFromScript = false; void CSettingsSA::SetPedsLODDistance(float fPedsLODDistance, bool bFromScript) { - if (bFromScript) - { - ms_fScriptMaxPedsLODDistance = fPedsLODDistance; - ms_bMaxPedsLODDistanceFromScript = bFromScript; - } - else - ms_fClientMaxPedsLODDistance = fPedsLODDistance; - - if (ms_bMaxPedsLODDistanceFromScript) - ms_fPedsLODDistance = Min(ms_fClientMaxPedsLODDistance, ms_fScriptMaxPedsLODDistance); - else - ms_fPedsLODDistance = Min(fPedsLODDistance, ms_fClientMaxPedsLODDistance); + ms_fPedsLODDistance = fPedsLODDistance; + ms_bMaxPedsLODDistanceFromScript = bFromScript; } -void CSettingsSA::ResetPedsLODDistance(bool bFromScript) +void CSettingsSA::ResetPedsLODDistance(bool bForceDefault) { - if (!bFromScript) - { - bool bHighDetailPeds; - g_pCore->GetCVars()->Get("high_detail_peds", bHighDetailPeds); - - if (bHighDetailPeds) - ms_fClientMaxPedsLODDistance = MAX_PEDS_LOD_DISTANCE; - else - ms_fClientMaxPedsLODDistance = DEFAULT_PEDS_LOD_DISTANCE; + if (ms_bMaxPedsLODDistanceFromScript && !bForceDefault) + return; - // Script still wants to override client setting, let's make sure we use latest max - if (ms_bMaxPedsLODDistanceFromScript) - { - ms_fPedsLODDistance = Min(ms_fClientMaxPedsLODDistance, ms_fScriptMaxPedsLODDistance); - return; - } - } + bool bHighDetailPeds; + g_pCore->GetCVars()->Get("high_detail_peds", bHighDetailPeds); - ms_bMaxPedsLODDistanceFromScript = false; - ms_fPedsLODDistance = ms_fClientMaxPedsLODDistance; -} + if (bHighDetailPeds) + ms_fPedsLODDistance = MAX_PEDS_LOD_DISTANCE; + else + ms_fPedsLODDistance = DEFAULT_PEDS_LOD_DISTANCE; -void CSettingsSA::ResetPedsLODDistanceFromScript() -{ ms_bMaxPedsLODDistanceFromScript = false; - ResetPedsLODDistance(false); } float CSettingsSA::GetPedsLODDistance() diff --git a/Client/game_sa/CSettingsSA.h b/Client/game_sa/CSettingsSA.h index 8226a1321f7..60293b7625a 100644 --- a/Client/game_sa/CSettingsSA.h +++ b/Client/game_sa/CSettingsSA.h @@ -160,8 +160,7 @@ class CSettingsSA : public CGameSettings float GetFieldOfViewVehicleMax(); void SetVehiclesLODDistance(float fVehiclesLODDistance, float fTrainsPlanesLODDistance, bool bFromScript); - void ResetVehiclesLODDistance(bool bFromScript); - void ResetVehiclesLODDistanceFromScript(); + void ResetVehiclesLODDistance(bool bForceDefault = false); void GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTrainsPlanesLODDistance); void ResetCoronaReflectionsEnabled(); @@ -170,8 +169,7 @@ class CSettingsSA : public CGameSettings void Save(); void SetPedsLODDistance(float fPedsLODDistance, bool bFromScript); - void ResetPedsLODDistance(bool bFromScript); - void ResetPedsLODDistanceFromScript(); + void ResetPedsLODDistance(bool bForceDefault = false); float GetPedsLODDistance(); static void StaticSetHooks(); diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index cb353df8195..14e859ff558 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -5293,10 +5293,10 @@ void CClientGame::ResetMapInfo() g_pMultiplayer->RestoreFogDistance(); // Vehicles LOD distance - g_pGame->GetSettings()->ResetVehiclesLODDistanceFromScript(); + g_pGame->GetSettings()->ResetVehiclesLODDistance(true); // Peds LOD distance - g_pGame->GetSettings()->ResetPedsLODDistanceFromScript(); + g_pGame->GetSettings()->ResetPedsLODDistance(true); // Corona rain reflections g_pGame->GetSettings()->SetCoronaReflectionsControlledByScript(false); diff --git a/Client/sdk/game/CSettings.h b/Client/sdk/game/CSettings.h index acaa15d81dc..fb2d2030c47 100644 --- a/Client/sdk/game/CSettings.h +++ b/Client/sdk/game/CSettings.h @@ -157,13 +157,11 @@ class CGameSettings virtual float GetFieldOfViewVehicleMax() = 0; virtual void SetVehiclesLODDistance(float fVehiclesLODDistance, float fTrainsPlanesLODDistance, bool bFromScript) = 0; - virtual void ResetVehiclesLODDistance(bool bFromScript) = 0; - virtual void ResetVehiclesLODDistanceFromScript() = 0; + virtual void ResetVehiclesLODDistance(bool bForceDefault = false) = 0; virtual void GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTrainsPlanesLODDistance) = 0; virtual void SetPedsLODDistance(float fPedsLODDistance, bool bFromScript) = 0; - virtual void ResetPedsLODDistance(bool bFromScript) = 0; - virtual void ResetPedsLODDistanceFromScript() = 0; + virtual void ResetPedsLODDistance(bool bForceDefault = false) = 0; virtual float GetPedsLODDistance() = 0; virtual void ResetCoronaReflectionsEnabled() = 0;