Add option to controls decals on server

This commit is contained in:
mittorn 2018-08-08 02:33:48 +07:00
parent 090dea2df1
commit 6c31780cca
3 changed files with 27 additions and 0 deletions

View File

@ -31,6 +31,7 @@ cvar_t mp_maxotherdist = { "mp_maxotherdist", "4096", FCVAR_SERVER};
cvar_t mp_maxmonsterdist = { "mp_maxmonsterdist", "4096", FCVAR_SERVER};
cvar_t mp_servercliptents = { "mp_servercliptents", "0", FCVAR_SERVER};
cvar_t mp_maxtentdist = { "mp_maxtentdist", "4096", FCVAR_SERVER};
cvar_t mp_maxdecals = { "mp_maxdecals", "-1", FCVAR_SERVER };
void Ent_RunGC_f( void );
@ -107,6 +108,7 @@ void GGM_RegisterCVars( void )
CVAR_REGISTER( &mp_maxotherdist );
CVAR_REGISTER( &mp_servercliptents );
CVAR_REGISTER( &mp_maxtentdist );
CVAR_REGISTER( &mp_maxdecals );
g_engfuncs.pfnAddServerCommand( "ent_rungc", Ent_RunGC_f );
}
@ -751,6 +753,9 @@ void GGM_InitialMenus( CBasePlayer *pPlayer )
.Add("Join coop", "joincoop")
.Add("Spectate", "spectate")
.Show();
if( mp_maxdecals.value >= 0 )
CLIENT_COMMAND( pPlayer->edict(), UTIL_VarArgs("r_decals %f\n", mp_maxdecals.value ) );
}
bool GGM_TouchCommand( CBasePlayer *pPlayer, const char *pcmd )

View File

@ -20,15 +20,28 @@ extern cvar_t mp_checkentities;
extern cvar_t mp_touchmenu;
// distance clipping (client.cpp)
// useful for open world
extern cvar_t mp_serverdistclip;
extern cvar_t mp_maxbmodeldist;
extern cvar_t mp_maxtrashdist;
extern cvar_t mp_maxwaterdist;
extern cvar_t mp_maxmonsterdist;
extern cvar_t mp_maxotherdist;
// tempentity clipping
// if enabled, ignores PVS, so use only on open world
extern cvar_t mp_servercliptents;
extern cvar_t mp_maxtentdist;
// control decals count from server
// decals is unuseful on sandbox servers
// 100 instancs of single bmodel with 100 decals
// will cause in 10000 decals in frame
// r_decals limit does not cover it because it
// only limit decal count on different models
extern cvar_t mp_maxdecals;
void GGM_RegisterCVars( void );
void Ent_RunGC( bool common, bool enttools, const char *userid, const char *pattern = NULL );
bool Q_stricmpext( const char *pattern, const char *text );

View File

@ -1251,6 +1251,9 @@ void UTIL_DecalTrace( TraceResult *pTrace, int decalNumber )
if( decalNumber < 0 )
return;
if( !mp_maxdecals.value ) // even do not send if decals disabled
return;
index = gDecals[decalNumber].index;
if( index < 0 )
@ -1363,6 +1366,9 @@ void UTIL_PlayerDecalTrace( TraceResult *pTrace, int playernum, int decalNumber,
if( pTrace->flFraction == 1.0 )
return;
if( !mp_maxdecals.value ) // even do not send if decals disabled
return;
if( mp_serverdistclip.value && mp_servercliptents.value )
{
// loop through all players
@ -1411,6 +1417,9 @@ void UTIL_PlayerDecalTrace( TraceResult *pTrace, int playernum, int decalNumber,
void UTIL_GunshotDecalTrace( TraceResult *pTrace, int decalNumber )
{
if( !mp_maxdecals.value ) // even do not send if decals disabled
return;
if( decalNumber < 0 )
return;