Skip to content

Commit e31ff91

Browse files
CrosRoad95saml1er
authored andcommitted
function: get/set/resetPedsLODDistance (#231)
* test 1 * set/get/resetPedsLodDistance * get the fuck out path finding * some fixes * Update CSettingsSA.cpp
1 parent d7c9b06 commit e31ff91

File tree

7 files changed

+85
-1
lines changed

7 files changed

+85
-1
lines changed

Client/game_sa/CSettingsSA.cpp

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void HOOK_GetFxQuality();
3535
DWORD RETURN_StoreShadowForVehicle = 0x70BDA9;
3636
void HOOK_StoreShadowForVehicle();
3737

38-
float ms_fVehicleLODDistance, ms_fTrainPlaneLODDistance;
38+
float ms_fVehicleLODDistance, ms_fTrainPlaneLODDistance, ms_fPedsLODDistance;
3939

4040
CSettingsSA::CSettingsSA(void)
4141
{
@@ -52,6 +52,7 @@ CSettingsSA::CSettingsSA(void)
5252

5353
MemPut(0x732926, &ms_fVehicleLODDistance);
5454
MemPut(0x732940, &ms_fTrainPlaneLODDistance);
55+
MemPut(0x73295E, &ms_fPedsLODDistance);
5556

5657
// Set "radar map and radar" as default radar mode
5758
SetRadarMode(RADAR_MODE_ALL);
@@ -590,6 +591,36 @@ void CSettingsSA::GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTr
590591
fTrainsPlanesLODDistance = ms_fTrainPlaneLODDistance;
591592
}
592593

594+
////////////////////////////////////////////////
595+
//
596+
// Peds LOD draw distance
597+
//
598+
////////////////////////////////////////////////
599+
600+
void CSettingsSA::SetPedsLODDistance(float fPedsLODDistance)
601+
{
602+
ms_fPedsLODDistance = fPedsLODDistance;
603+
}
604+
605+
float CSettingsSA::GetPedsLODDistance()
606+
{
607+
return ms_fPedsLODDistance;
608+
}
609+
610+
void CSettingsSA::ResetPedsLODDistance()
611+
{
612+
bool bHighDetailPeds;
613+
g_pCore->GetCVars()->Get("high_detail_peds", bHighDetailPeds);
614+
if (bHighDetailPeds)
615+
{
616+
ms_fPedsLODDistance = MAX_PEDS_LOD_DISTANCE;
617+
}
618+
else
619+
{
620+
ms_fPedsLODDistance = DEFAULT_PEDS_LOD_DISTANCE;
621+
}
622+
}
623+
593624
////////////////////////////////////////////////
594625
//
595626
// CSettingsSA::HasUnsafeResolutions

Client/game_sa/CSettingsSA.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@
3535
#define FUNC_SetAntiAliasing 0x7F8A90
3636

3737
#define DEFAULT_VEHICLE_LOD_DISTANCE ( 70.0f )
38+
#define DEFAULT_PEDS_LOD_DISTANCE ( 60.0f )
3839
// Default train distance is 150, so make it relative to default vehicle distance
3940
#define TRAIN_LOD_DISTANCE_MULTIPLIER ( 2.14f )
4041
#define MAX_VEHICLE_LOD_DISTANCE ( 500.0f )
42+
#define MAX_PEDS_LOD_DISTANCE ( 500.0f )
4143

4244
struct CSettingsSAInterface // see code around 0x57CE9A for where these are
4345
{
@@ -163,6 +165,10 @@ class CSettingsSA : public CGameSettings
163165

164166
void Save(void);
165167

168+
void SetPedsLODDistance(float fPedsLODDistance);
169+
void ResetPedsLODDistance(void);
170+
float GetPedsLODDistance(void);
171+
166172
static void StaticSetHooks(void);
167173

168174
uint FindVideoMode(int iResX, int iResY, int iColorBits);

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5574,6 +5574,9 @@ void CClientGame::ResetMapInfo(void)
55745574
// Vehicles LOD distance
55755575
g_pGame->GetSettings()->ResetVehiclesLODDistance();
55765576

5577+
// Peds LOD distance
5578+
g_pGame->GetSettings()->ResetPedsLODDistance();
5579+
55775580
// Sun color
55785581
g_pMultiplayer->ResetSunColor();
55795582

Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.World.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1548,6 +1548,40 @@ int CLuaFunctionDefs::ResetVehiclesLODDistance(lua_State* luaVM)
15481548
return 1;
15491549
}
15501550

1551+
int CLuaFunctionDefs::GetPedsLODDistance(lua_State* luaVM)
1552+
{
1553+
lua_pushnumber(luaVM, g_pGame->GetSettings()->GetPedsLODDistance());
1554+
return 1;
1555+
}
1556+
1557+
int CLuaFunctionDefs::SetPedsLODDistance(lua_State* luaVM)
1558+
{
1559+
float fPedsDistance;
1560+
1561+
CScriptArgReader argStream(luaVM);
1562+
argStream.ReadNumber(fPedsDistance);
1563+
1564+
if (!argStream.HasErrors())
1565+
{
1566+
fPedsDistance = Clamp(0.0f, fPedsDistance, 500.0f);
1567+
g_pGame->GetSettings()->SetPedsLODDistance(fPedsDistance);
1568+
lua_pushnumber(luaVM, fPedsDistance);
1569+
return 1;
1570+
}
1571+
else
1572+
m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage());
1573+
1574+
lua_pushboolean(luaVM, false);
1575+
return 1;
1576+
}
1577+
1578+
int CLuaFunctionDefs::ResetPedsLODDistance(lua_State* luaVM)
1579+
{
1580+
g_pGame->GetSettings()->ResetPedsLODDistance();
1581+
lua_pushboolean(luaVM, true);
1582+
return 1;
1583+
}
1584+
15511585
int CLuaFunctionDefs::GetFogDistance(lua_State* luaVM)
15521586
{
15531587
lua_pushnumber(luaVM, g_pMultiplayer->GetFogDistance());

Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ class CLuaFunctionDefs
150150
LUA_DECLARE(GetVehiclesLODDistance);
151151
LUA_DECLARE(SetVehiclesLODDistance);
152152
LUA_DECLARE(ResetVehiclesLODDistance);
153+
LUA_DECLARE(GetPedsLODDistance);
154+
LUA_DECLARE(SetPedsLODDistance);
155+
LUA_DECLARE(ResetPedsLODDistance);
153156
LUA_DECLARE(GetFogDistance);
154157
LUA_DECLARE(SetFogDistance);
155158
LUA_DECLARE(ResetFogDistance);

Client/mods/deathmatch/logic/lua/CLuaManager.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ void CLuaManager::LoadCFunctions(void)
287287
CLuaCFunctions::AddFunction("getFarClipDistance", CLuaFunctionDefs::GetFarClipDistance);
288288
CLuaCFunctions::AddFunction("getNearClipDistance", CLuaFunctionDefs::GetNearClipDistance);
289289
CLuaCFunctions::AddFunction("getVehiclesLODDistance", CLuaFunctionDefs::GetVehiclesLODDistance);
290+
CLuaCFunctions::AddFunction("getPedsLODDistance", CLuaFunctionDefs::GetPedsLODDistance);
290291
CLuaCFunctions::AddFunction("getFogDistance", CLuaFunctionDefs::GetFogDistance);
291292
CLuaCFunctions::AddFunction("getSunColor", CLuaFunctionDefs::GetSunColor);
292293
CLuaCFunctions::AddFunction("getSunSize", CLuaFunctionDefs::GetSunSize);
@@ -333,6 +334,8 @@ void CLuaManager::LoadCFunctions(void)
333334
CLuaCFunctions::AddFunction("resetNearClipDistance", CLuaFunctionDefs::ResetNearClipDistance);
334335
CLuaCFunctions::AddFunction("setVehiclesLODDistance", CLuaFunctionDefs::SetVehiclesLODDistance);
335336
CLuaCFunctions::AddFunction("resetVehiclesLODDistance", CLuaFunctionDefs::ResetVehiclesLODDistance);
337+
CLuaCFunctions::AddFunction("setPedsLODDistance", CLuaFunctionDefs::SetPedsLODDistance);
338+
CLuaCFunctions::AddFunction("resetPedsLODDistance", CLuaFunctionDefs::ResetPedsLODDistance);
336339
CLuaCFunctions::AddFunction("setFogDistance", CLuaFunctionDefs::SetFogDistance);
337340
CLuaCFunctions::AddFunction("resetFogDistance", CLuaFunctionDefs::ResetFogDistance);
338341
CLuaCFunctions::AddFunction("setSunColor", CLuaFunctionDefs::SetSunColor);

Client/sdk/game/CSettings.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ class CGameSettings
161161
virtual void ResetVehiclesLODDistance(void) = 0;
162162
virtual void GetVehiclesLODDistance(float& fVehiclesLODDistance, float& fTrainsPlanesLODDistance) = 0;
163163

164+
virtual void SetPedsLODDistance(float fPedsLODDistance) = 0;
165+
virtual void ResetPedsLODDistance(void) = 0;
166+
virtual float GetPedsLODDistance(void) = 0;
167+
164168
virtual void Save(void) = 0;
165169
};
166170

0 commit comments

Comments
 (0)