Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Client/core/CCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<float>("vertical_aim_sensitivity"));
CVARS_GET("mastervolume", fVal);
Expand Down
121 changes: 28 additions & 93 deletions Client/game_sa/CSettingsSA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
Expand Down
6 changes: 2 additions & 4 deletions Client/game_sa/CSettingsSA.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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();
Expand Down
4 changes: 2 additions & 2 deletions Client/mods/deathmatch/logic/CClientGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 2 additions & 4 deletions Client/sdk/game/CSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down