aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/client/cdll_bounded_cvars.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/client/cdll_bounded_cvars.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/client/cdll_bounded_cvars.cpp')
-rw-r--r--mp/src/game/client/cdll_bounded_cvars.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/mp/src/game/client/cdll_bounded_cvars.cpp b/mp/src/game/client/cdll_bounded_cvars.cpp
new file mode 100644
index 00000000..90f17b44
--- /dev/null
+++ b/mp/src/game/client/cdll_bounded_cvars.cpp
@@ -0,0 +1,144 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+
+#include "cbase.h"
+#include "cdll_bounded_cvars.h"
+#include "convar_serverbounded.h"
+#include "tier0/icommandline.h"
+
+
+bool g_bForceCLPredictOff = false;
+
+// ------------------------------------------------------------------------------------------ //
+// cl_predict.
+// ------------------------------------------------------------------------------------------ //
+
+class CBoundedCvar_Predict : public ConVar_ServerBounded
+{
+public:
+ CBoundedCvar_Predict() :
+ ConVar_ServerBounded( "cl_predict",
+ "1.0",
+#if defined(DOD_DLL) || defined(CSTRIKE_DLL)
+ FCVAR_USERINFO | FCVAR_CHEAT,
+#else
+ FCVAR_USERINFO | FCVAR_NOT_CONNECTED,
+#endif
+ "Perform client side prediction." )
+ {
+ }
+
+ virtual float GetFloat() const
+ {
+ // Used temporarily for CS kill cam.
+ if ( g_bForceCLPredictOff )
+ return 0;
+
+ static const ConVar *pClientPredict = g_pCVar->FindVar( "sv_client_predict" );
+ if ( pClientPredict && pClientPredict->GetInt() != -1 )
+ {
+ // Ok, the server wants to control this value.
+ return pClientPredict->GetFloat();
+ }
+ else
+ {
+ return GetBaseFloatValue();
+ }
+ }
+};
+
+static CBoundedCvar_Predict cl_predict_var;
+ConVar_ServerBounded *cl_predict = &cl_predict_var;
+
+
+
+// ------------------------------------------------------------------------------------------ //
+// cl_interp_ratio.
+// ------------------------------------------------------------------------------------------ //
+
+class CBoundedCvar_InterpRatio : public ConVar_ServerBounded
+{
+public:
+ CBoundedCvar_InterpRatio() :
+ ConVar_ServerBounded( "cl_interp_ratio",
+ "2.0",
+ FCVAR_USERINFO | FCVAR_NOT_CONNECTED,
+ "Sets the interpolation amount (final amount is cl_interp_ratio / cl_updaterate)." )
+ {
+ }
+
+ virtual float GetFloat() const
+ {
+ static const ConVar *pMin = g_pCVar->FindVar( "sv_client_min_interp_ratio" );
+ static const ConVar *pMax = g_pCVar->FindVar( "sv_client_max_interp_ratio" );
+ if ( pMin && pMax && pMin->GetFloat() != -1 )
+ {
+ return clamp( GetBaseFloatValue(), pMin->GetFloat(), pMax->GetFloat() );
+ }
+ else
+ {
+ return GetBaseFloatValue();
+ }
+ }
+};
+
+static CBoundedCvar_InterpRatio cl_interp_ratio_var;
+ConVar_ServerBounded *cl_interp_ratio = &cl_interp_ratio_var;
+
+
+// ------------------------------------------------------------------------------------------ //
+// cl_interp
+// ------------------------------------------------------------------------------------------ //
+
+class CBoundedCvar_Interp : public ConVar_ServerBounded
+{
+public:
+ CBoundedCvar_Interp() :
+ ConVar_ServerBounded( "cl_interp",
+ "0.1",
+ FCVAR_USERINFO | FCVAR_NOT_CONNECTED,
+ "Sets the interpolation amount (bounded on low side by server interp ratio settings).", true, 0.0f, true, 0.5f )
+ {
+ }
+
+ virtual float GetFloat() const
+ {
+ static const ConVar *pUpdateRate = g_pCVar->FindVar( "cl_updaterate" );
+ static const ConVar *pMin = g_pCVar->FindVar( "sv_client_min_interp_ratio" );
+ if ( pUpdateRate && pMin && pMin->GetFloat() != -1 )
+ {
+ return MAX( GetBaseFloatValue(), pMin->GetFloat() / pUpdateRate->GetFloat() );
+ }
+ else
+ {
+ return GetBaseFloatValue();
+ }
+ }
+};
+
+static CBoundedCvar_Interp cl_interp_var;
+ConVar_ServerBounded *cl_interp = &cl_interp_var;
+
+float GetClientInterpAmount()
+{
+ static const ConVar *pUpdateRate = g_pCVar->FindVar( "cl_updaterate" );
+ if ( pUpdateRate )
+ {
+ // #define FIXME_INTERP_RATIO
+ return MAX( cl_interp->GetFloat(), cl_interp_ratio->GetFloat() / pUpdateRate->GetFloat() );
+ }
+ else
+ {
+ if (!CommandLine()->FindParm("-hushasserts"))
+ {
+ AssertMsgOnce( false, "GetInterpolationAmount: can't get cl_updaterate cvar." );
+ }
+
+ return 0.1;
+ }
+}
+