예제 #1
0
CGameStateRecorder::CGameStateRecorder() 
{
	m_mode = GPM_Disabled;
	m_bRecording = false;
	m_bEnable = false;
	m_bLogWarning = true;
	m_currentFrame = 0;
	m_pSingleActor = NULL;
	//m_pRecordGameEventFtor = new RecordGameEventFtor(this);
	m_demo_actorInfo = REGISTER_STRING( "demo_actor_info","player",0,"name of actor which game state info is displayed" );
	m_demo_actorFilter = REGISTER_STRING( "demo_actor_filter","player",0,"name of actor which game state is recorded ('player','all',<entity name>" );
	REGISTER_CVAR2( "demo_force_game_state",&m_demo_forceGameState,2,0,"Forces game state values into game while playing timedemo: only health and suit energy (1) or all (2)" );

}
예제 #2
0
bool CPersistantDebug::Init()
{
	// Init CVars
	m_pETLog = REGISTER_INT("cl_ETLog",0,VF_DUMPTODISK,"Logging (0=off, 1=editor.log, 2=editor.log + AIlog.log)");
	m_pETHideAll = REGISTER_INT("cl_ETHideAll",0,VF_DUMPTODISK,"Hide all tags (overrides all other options)");
	m_pETHideBehaviour = REGISTER_INT("cl_ETHideBehaviour",0,VF_DUMPTODISK,"Hide AI behavior tags");
	m_pETHideReadability = REGISTER_INT("cl_ETHideReadability",0,VF_DUMPTODISK,"Hide AI readability tags");
	m_pETHideAIDebug = REGISTER_INT("cl_ETHideAIDebug",0,VF_DUMPTODISK,"Hide AI debug tags");
	m_pETHideFlowgraph = REGISTER_INT("cl_ETHideFlowgraph",0,VF_DUMPTODISK,"Hide tags created by flowgraph");
	m_pETHideScriptBind = REGISTER_INT("cl_ETHideScriptBind",0,VF_DUMPTODISK,"Hide tags created by Lua script");
	m_pETFontSizeMultiplier = REGISTER_FLOAT("cl_ETFontSizeMultiplier",1.0f,VF_DUMPTODISK,"Global font size multiplier");
	m_pETMaxDisplayDistance = REGISTER_FLOAT("cl_ETMaxDisplayDistance",-2.0f,VF_DUMPTODISK,"Max display distance");
	m_pETColorOverrideEnable = REGISTER_INT("cl_ETColorOverrideEnable",0,VF_DUMPTODISK,"Global color override");
	m_pETColorOverrideR = REGISTER_FLOAT("cl_ETColorOverrideR",1.0f,VF_DUMPTODISK,"Global color override (RED)");
	m_pETColorOverrideG = REGISTER_FLOAT("cl_ETColorOverrideG",1.0f,VF_DUMPTODISK,"Global color override (GREEN)");
	m_pETColorOverrideB = REGISTER_FLOAT("cl_ETColorOverrideB",1.0f,VF_DUMPTODISK,"Global color override (BLUE)");

	m_pVisualConsole = REGISTER_INT_CB("VisualConsole", 0, VF_NULL, "writes console to screen", VisualLogCallback);
	if(m_pVisualConsole)
	{
		m_pVisualConsoleSubStr = REGISTER_STRING("VisualConsoleSubStr", "", VF_NULL, "writes console to screen if it matches substr");
	}

	Reset();

	return true;
}
예제 #3
0
CMaterialEffectsCVars::CMaterialEffectsCVars()
{
	assert (s_pThis == 0);
	s_pThis = this;

	REGISTER_CVAR(mfx_ParticleImpactThresh, 2.0f, VF_CHEAT, "Impact threshold for particle effects. Default: 2.0" );
	REGISTER_CVAR(mfx_SoundImpactThresh, 1.5f, VF_CHEAT, "Impact threshold for sound effects. Default: 1.5" );
	REGISTER_CVAR(mfx_RaisedSoundImpactThresh, 3.5f, VF_CHEAT, "Impact threshold for sound effects if we're rolling. Default: 3.5" );
	REGISTER_CVAR(mfx_Debug, 0, 0, "Turns on MaterialEffects debug messages. 1=Collisions, 2=Breakage, 3=Both" );
	REGISTER_CVAR(mfx_DebugVisual, 0, 0, "Turns on/off visual debugging for MFX system");
	mfx_DebugVisualFilter = REGISTER_STRING("mfx_DebugVisualFilter","",VF_CHEAT,"");
	REGISTER_CVAR(mfx_DebugFlowGraphFX, 0, 0, "Turns on Material FlowGraph FX manager debug messages." );
	REGISTER_CVAR(mfx_Enable, 1, VF_CHEAT, "Enables MaterialEffects." );
	REGISTER_CVAR(mfx_pfx_minScale, .5f, 0, "Min scale (when particle is close)");
	REGISTER_CVAR(mfx_pfx_maxScale, 1.5f, 0, "Max scale (when particle is far)");
	REGISTER_CVAR(mfx_pfx_maxDist, 35.0f, 0, "Max dist (how far away before scale is clamped)");
	REGISTER_CVAR(mfx_Timeout, 0.01f, 0, "Timeout (in seconds) to avoid playing effects too often");
	REGISTER_CVAR(mfx_EnableFGEffects, 1, VF_CHEAT, "Enabled Flowgraph based Material effects. Default: On" );
	REGISTER_CVAR(mfx_EnableAttachedEffects, 1, VF_CHEAT, "Enable attached effects (characters, entities...)");
	REGISTER_CVAR(mfx_SerializeFGEffects, 1, VF_CHEAT, "Serialize Flowgraph based effects. Default: On" );

	//FlowGraph HUD effects
	REGISTER_COMMAND("mfx_ReloadFGEffects", FGEffectsReload, 0, "Reload MaterialEffect's FlowGraphs");
	//Reload Excel Spreadsheet
	REGISTER_COMMAND("mfx_Reload", MFXReload, 0, "Reload MFX Spreadsheet");
}
예제 #4
0
void CMannequinInterface::RegisterCVars()
{
	mannequin::debug::RegisterCommands();
	CAnimationDatabase::RegisterCVars();
#ifndef _RELEASE
	REGISTER_STRING("mn_sequence_path", "Animations/Mannequin/FragmentSequences/", VF_CHEAT, "Default path for CryMannequin sequence files");
#endif
}
// Description:
//
// Arguments:
//
// Return:
//
void CVisualLog::InitCVars()
{
	m_pCVVisualLog = REGISTER_INT( "cl_visualLog", 0, 0, "Enables Visual Logging." );
	m_pCVVisualLogFolder = REGISTER_STRING( "cl_visualLogFolder", "VisualLog", 0, "Specifies sub folder to write logs to." );
	m_pCVVisualLogImageFormat = REGISTER_STRING( "cl_visualLogImageFormat", "bmp", 0, "Specifies file format of captured files (jpg, bmp)." );
	m_pCVVisualLogImageScale = REGISTER_FLOAT( "cl_visualLogImageScale", 128, 0, "Image size. [0-1] = scale value. >1 = actual pixels for image width" );

	assert(gEnv->pConsole);
	PREFAST_ASSUME(gEnv->pConsole);
	m_pCV_capture_frames = gEnv->pConsole->GetCVar("capture_frames");
	m_pCV_capture_file_format = gEnv->pConsole->GetCVar("capture_file_format");
	m_pCV_capture_frame_once = gEnv->pConsole->GetCVar("capture_frame_once");
	m_pCV_capture_file_name = gEnv->pConsole->GetCVar("capture_file_name");

	CRY_ASSERT( m_pCV_capture_frames );
	CRY_ASSERT( m_pCV_capture_file_format );
	CRY_ASSERT( m_pCV_capture_frame_once );
	CRY_ASSERT( m_pCV_capture_file_name );
}
//------------------------------------------------------------------------
// Constructor
CPlaylistActivityTracker::CPlaylistActivityTracker()
    :	m_nKnownPlaylists( 0 )
    , m_state( eATS_Idle )
    , m_timeUntilNextAction( -1.0f )
{
    m_serverNameCVar = REGISTER_STRING( "g_playlistActivity_server", k_defaultPlaylistActivityServerName, 0, "Usage: g_playlistActivity_server <ip or hostname>\n" );
    m_serverPortCVar = REGISTER_INT( "g_playlistActivity_port", k_defaultPlaylistActivityServerPort, 0, "Usage: g_playlistActivity_port <port>\n" );

    for( int i = 0; i < eRTT_MaxCount; i++ )
    {
        m_downloadableResources[ i ] = NULL;
    }
}
CGameTokenSystem::CGameTokenSystem()
{
	CGameToken::g_pGameTokenSystem = this;
	m_pScriptBind = new CScriptBind_GameToken(this);
	m_pGameTokensMap = new GameTokensMap();

#ifdef _GAMETOKENSDEBUGINFO	
	m_debugHistory.resize( DBG_HISTORYSIZE );
	ClearDebugHistory();
	REGISTER_CVAR2("gt_show", &CGameTokenSystem::m_CVarShowDebugInfo, 0, 0, "Show Game Tokens debug info. 1=screen and log, 2=screen only, 3=log only");
	REGISTER_CVAR2("gt_showPosX", &CGameTokenSystem::m_CVarPosX, 0, 0, "Defines the starting column in screen for game tokens debug info");
	REGISTER_CVAR2("gt_showPosY", &CGameTokenSystem::m_CVarPosY, 0, 0, "Defines the starting line in screen for game tokens debug info");
	REGISTER_CVAR2("gt_showLines", &CGameTokenSystem::m_CVarNumHistoricLines, DBG_HISTORYSIZE, 0, "How many lines is used by the historic list");
	m_pCVarFilter = REGISTER_STRING("gt_showFilter", NULL, VF_NULL, "In the historic list only shows game tokens that include the filter string" );
	REGISTER_COMMAND( "gt_AddToDebugList", AddGameTokenToDebugList, VF_CHEAT,"Adds a game token by name to the list of game tokens to be shown on screen" );
	REGISTER_COMMAND( "gt_RemoveFromDebugList", RemoveGameTokenFromDebugList, VF_CHEAT,"Removes a game token by name from the list of game tokens to be shown on screen" );
#endif
}
예제 #8
0
CFlowGraphModuleManager::CFlowGraphModuleManager()
: m_listeners(1)
{
	m_moduleIdMaker = 0;
	gEnv->pSystem->GetISystemEventDispatcher()->RegisterListener(this);

	DefineConstIntCVarName("fg_debugmodules", CV_fg_debugmodules, 0, VF_NULL,	"Display Module debug info.\n"\
		"0=Disabled"\
		"1=Modules only"\
		"2=Modules + Module Instances");
	fg_debugmodules_filter = REGISTER_STRING("fg_debugmodules_filter", "",  VF_NULL, CVARHELP("Only debug modules with this name"));

#if !defined (_RELEASE)
	CRY_ASSERT_MESSAGE( gEnv->pGame->GetIGameFramework(), "Unable to register as Framework listener!" );
	if (gEnv->pGame->GetIGameFramework())
	{
		gEnv->pGame->GetIGameFramework()->RegisterListener(this, "FlowGraphModuleManager", FRAMEWORKLISTENERPRIORITY_GAME);
	}
#endif
}
예제 #9
0
CAnimationGraphCVars::CAnimationGraphCVars()
{
	assert (s_pThis == 0);
	s_pThis = this;

	IConsole *pConsole = gEnv->pConsole;
	assert(pConsole);

	// TODO: remove once animation graph transition is complete
	REGISTER_CVAR2( "ag_debugExactPos", &m_debugExactPos, 0, VF_CHEAT, "Enable/disable exact positioning debugger" );
	// ~TODO

	REGISTER_CVAR2( "ac_forceSimpleMovement", &m_forceSimpleMovement, 0, VF_CHEAT, "Force enable simplified movement (not visible, dedicated server, etc)." );

	REGISTER_CVAR2( "ac_debugAnimEffects", &m_debugAnimEffects, 0, VF_CHEAT, "Print log messages when anim events spawn effects." );

	REGISTER_CVAR2( "ac_movementControlMethodHor", &m_MCMH, 0, VF_CHEAT, "Overrides the horizontal movement control method specified by AG (overrides filter)." );
	REGISTER_CVAR2( "ac_movementControlMethodVer", &m_MCMV, 0, VF_CHEAT, "Overrides the vertical movement control method specified by AG (overrides filter)." );
	REGISTER_CVAR2( "ac_movementControlMethodFilter", &m_MCMFilter, 0, VF_CHEAT, "Force reinterprets Decoupled/CatchUp MCM specified by AG as Entity MCM (H/V overrides override this)." );
	REGISTER_CVAR2( "ac_templateMCMs", &m_TemplateMCMs, 1, VF_CHEAT, "Use MCMs from AG state templates instead of AG state headers." );
	REGISTER_CVAR2( "ac_ColliderModePlayer", &m_forceColliderModePlayer, 0, VF_CHEAT, "Force override collider mode for all players." );
	REGISTER_CVAR2( "ac_ColliderModeAI", &m_forceColliderModeAI, 0, VF_CHEAT, "Force override collider mode for all AI." );
	REGISTER_CVAR2( "ac_enableExtraSolidCollider", &m_enableExtraSolidCollider, 1, VF_CHEAT, "Enable extra solid collider (for non-pushable characters)." );

	REGISTER_CVAR2( "ac_entityAnimClamp", &m_entityAnimClamp, 1, VF_CHEAT, "Forces the entity movement to be limited by animation." );
	REGISTER_CVAR2( "ac_debugAnimTarget", &m_debugAnimTarget, 0, 0, "Display debug history graphs of anim target correction." );
	REGISTER_CVAR2( "ac_debugLocationsGraphs", &m_debugLocationsGraphs, 0, 0, "Display debug history graphs of entity locations and movement." );

	REGISTER_CVAR2( "ac_debugLocations", &m_debugLocations, 0, 0, "Debug render entity location." );
	REGISTER_CVAR2( "ac_debugMotionParams", &m_debugMotionParams, 0, 0, "Display graph of motion parameters." );

	REGISTER_CVAR2( "ac_frametime", &m_debugFrameTime, 0, 0, "Display a graph of the frametime." );

	REGISTER_CVAR2( "ac_debugText", &m_debugText, 0, 0, "Display entity/animation location/movement values, etc." );
	REGISTER_CVAR2( "ac_debugXXXValues", &m_debugTempValues, 0, 0, "Display some values temporarily hooked into temp history graphs." );
	REGISTER_CVAR2( "ac_debugEntityParams", &m_debugEntityParams, 0 , VF_CHEAT, "Display entity params graphs" );
	m_pDebugFilter = REGISTER_STRING( "ac_DebugFilter", "0", 0, "Debug specified entity name only." );

	REGISTER_CVAR2( "ac_debugColliderMode", &m_debugColliderMode, 0, 0, "Display filtered and requested collider modes." );
	REGISTER_CVAR2( "ac_debugMovementControlMethods", &m_debugMovementControlMethods, 0, 0, "Display movement control methods." );

	REGISTER_CVAR2( "ac_disableSlidingContactEvents", &m_disableSlidingContactEvents, 0, 0, "Force disable sliding contact events." );
	REGISTER_CVAR2( "ac_useMovementPrediction", &m_useMovementPrediction, 1, 0, "When using animation driven motion sample animation for the root one frame ahead to take into account 1 frame of physics delay" );
	REGISTER_CVAR2( "ac_useQueuedRotation", &m_useQueuedRotation, 0, 0, "Instead of applying rotation directly, queue it until the beginning of the next frame (synchronizes rotation with translation coming from asynchronous physics)" );

	REGISTER_CVAR2( "g_landingBobTimeFactor", &m_landingBobTimeFactor, 0.2f, VF_CHEAT, "Fraction of the bob time to release full compression");
	REGISTER_CVAR2( "g_landingBobLandTimeFactor", &m_landingBobLandTimeFactor, 0.1f, VF_CHEAT, "Fraction of the bob time to be at full compression");

	REGISTER_CVAR2( "g_distanceForceNoIk", &m_distanceForceNoIk, 0.0f, VF_NULL, "Distance at which to disable ground alignment IK");
	REGISTER_CVAR2( "g_distanceForceNoLegRaycasts", &m_distanceForceNoLegRaycasts, 5.0f, VF_NULL, "Distance at which to disable ground alignment IKs raycasts");
	REGISTER_CVAR2( "g_spectatorCollisions", &m_spectatorCollisions, 1, VF_CHEAT, "Collide against the geometry in spectator mode");

	REGISTER_CVAR2( "g_groundAlignAll", &m_groundAlignAll, 1, VF_NULL, "Enable ground alignment for every character that supports it." );

	REGISTER_CVAR2("ag_turnSpeedParamScale", &m_turnSpeedParamScale, 0.2f, VF_NULL, "Scale the turn speed animation param (used for leaning)");
	REGISTER_CVAR2("ag_turnSpeedSmoothing", &m_enableTurnSpeedSmoothing, 1, VF_NULL, "Enables/Disables turn speed smoothing.");
	REGISTER_CVAR2("ag_turnAngleSmoothing", &m_enableTurnAngleSmoothing, 1, VF_NULL, "Enables/Disables turn angle smoothing.");
	REGISTER_CVAR2("ag_travelSpeedSmoothing", &m_enableTravelSpeedSmoothing, 1, VF_NULL, "Enables/Disables travel speed smoothing.");

	PoseAligner::CVars::GetInstance();
}
예제 #10
0
CInputCVars::CInputCVars()
{
	REGISTER_CVAR(i_debug, 0, 0,
		"Toggles input event debugging.\n"
		"Usage: i_debug [0/1]\n"
		"Default is 0 (off). Set to 1 to spam console with key events (only press and release).");
	REGISTER_CVAR(i_forcefeedback, 1, 0, "Enable/Disable force feedback output.");

	// mouse
	REGISTER_CVAR(i_mouse_buffered, 0, 0,
		"Toggles mouse input buffering.\n"
		"Usage: i_mouse_buffered [0/1]\n"
		"Default is 0 (off). Set to 1 to process buffered mouse input.");
	REGISTER_CVAR(i_mouse_sensitivity, 1, 0,
		"Changes mouse sensitivity.\n"
		"Usage: i_mouse_sensitivity [float number]\n"
		"Default is 1 (raw movement), Set to 0 for no movement, [0/1] for slower movement and [1/n] for faster movement" );
	REGISTER_CVAR(i_mouse_accel, 0.0f, VF_DUMPTODISK,
		"Set mouse acceleration, 0.0 means no acceleration.\n"
		"Usage: i_mouse_accel [float number] (usually a small number, 0.1 is a good one)\n"
		"Default is 0.0 (off)");
	REGISTER_CVAR(i_mouse_accel_max, 100.0f, VF_DUMPTODISK,
		"Set mouse max mouse delta when using acceleration.\n"
		"Usage: i_mouse_accel_max [float number]\n"
		"Default is 100.0");	
	REGISTER_CVAR(i_mouse_smooth, 0.0f, VF_DUMPTODISK,
		"Set mouse smoothing value, also if 0 (disabled) there will be a simple average\n"
		"between the old and the actual input.\n"
		"Usage: i_mouse_smooth [float number]\n"
		"(1.0 = very very smooth, 30 = almost instant)\n"
		"Default is 0.0");	
	REGISTER_CVAR(i_mouse_inertia, 0.0f, VF_DUMPTODISK,
		"Set mouse inertia. It is disabled (0.0) by default.\n"
		"Usage: i_mouse_inertia [float number]\n"
		"Default is 0.0");

	// keyboard
	REGISTER_CVAR(i_bufferedkeys, 1, 0,
		"Toggles key buffering.\n"
		"Usage: i_bufferedkeys [0/1]\n"
		"Default is 0 (off). Set to 1 to process buffered key strokes.");

	// xinput
	REGISTER_CVAR(i_xinput, 1, 0,
		"Number of XInput controllers to process\n"
		"Usage: i_xinput [0/1/2/3/4]\n"
		"Default is 1.");
	REGISTER_CVAR(i_xinput_poll_time, 1000, 0,
		"Number of ms between device polls in polling thread\n"
		"Usage: i_xinput_poll_time 500\n"
		"Default is 1000ms. Value must be >=0.");

  REGISTER_CVAR(i_xinput_deadzone_handling, 1, 0,
    "deadzonehandling\n"
    "Usage: i_xinput_deadzone_handling 0/1 (0 - old deadzone/ 1 - new deadzone)\n"
    "Default is 1. Value must be >=0.");

	REGISTER_CVAR(i_debugDigitalButtons, 0, 0,
		"render controller's digital button pressed info\n"
		"Usage: 0 (off), 1(on)"
		"Default is 0. Value must be >=0");

#if CRY_PLATFORM_WINDOWS
	REGISTER_CVAR(i_kinectXboxConnect, 1, 0,
		"Allow connection to Xbox for Kinect input.\n"
		"Usage: 0 = disabled, 1 = allow connection, 2 = force connection (don't try local Kinect on system) \n"
		"Default is 1");
	REGISTER_CVAR(i_kinectXboxConnectPort, 62455, 0,
		"Port used to connect to Xbox for Kinect input.\n"
		"Default is 62455 (random value different than remote compiler)");
	i_kinectXboxConnectIP = REGISTER_STRING("i_kinectXboxConnectIP","", VF_NULL,
		"Usage: force set a specific Xbox Game IP to connect to for Kinect input (use default xbox from neighbourhood when empty) \n"
		"Default is empty ");
#endif

	REGISTER_CVAR(i_useKinect, 1, 0,
		"Use Kinect");
	REGISTER_CVAR(i_kinSkeletonSmoothType, 1, 0,
		"Kinect skeleton tracking smooth type: 0 = not smoothed, 1 = using Double Exponential Smoothing");
	REGISTER_CVAR(i_kinectDebug, 1, 0,
		"1 = Draws skeleton on screen \n2 = Draws colour + depth buffers on screen \n3 = Draws both skeleton and buffers");
	REGISTER_CVAR(i_seatedTracking, 1, 0,
		"1 = Enable seated skeleton tracking");
	REGISTER_CVAR(i_kinSkeletonMovedDistance, 0.125f, 0,
		"Distance used to determine if kinect skeleton has moved in the play space.");

#if CRY_PLATFORM_DURANGO
	REGISTER_CVAR(i_useDurangoKinectSpeech, 1, 0,
		"Use Kinect Speech Recognition for Durango");
	REGISTER_CVAR(i_useDurangoKinectSpeechMode, 0, 0,
		"Use Kinect Speech Recognition Mode (for Durango): 0 (Continuous), 1 (Pausing)");
	REGISTER_CVAR(i_showDurangoKinectAudioStatus, 0, 0,
		"Show Kinect Audio status for Durango");
	REGISTER_CVAR(i_durangoKinectSpeechConfidenceThreshold, 0.2f, 0, 
		"Default Minimum confidence of a speech recognition result in Durango's Kinect to accept it as valid.");
#endif

	//Exponential Smoothing Factors
	REGISTER_CVAR(i_kinGlobalExpSmoothFactor, 0.5f, 0, "Smoothing factor for double exponential smoothing.");
	REGISTER_CVAR(i_kinGlobalExpCorrectionFactor, 0.5f, 0, "Trend correction factor for double exponential smoothing.");
	REGISTER_CVAR(i_kinGlobalExpPredictionFactor, 0.5f, 0, "Prediction factor for double exponential smoothing.");
	REGISTER_CVAR(i_kinGlobalExpJitterRadius, 0.05f, 0, "Radius to determine jitter correction for double exponential smoothing.");
	REGISTER_CVAR(i_kinGlobalExpDeviationRadius, 0.04f, 0, "Maximum deviation radius from prediction for double exponential smoothing.");

#ifdef USE_SYNERGY_INPUT
	i_synergyServer = REGISTER_STRING("i_synergyServer","", VF_NULL,
		"Usage: Set the host ip or hostname for the synergy client to connect to\n"
		"Default is empty ");
	i_synergyScreenName = REGISTER_STRING("i_synergyScreenName","Console", VF_NULL,
		"Usage: Set a screen name for this target\n"
		"Default is \"Console\"");
#endif
}
예제 #11
0
//------------------------------------------------------------------------
CVehicleCVars::CVehicleCVars()
{
	assert (s_pThis == 0);
	s_pThis = this;
  
	IConsole *pConsole = gEnv->pConsole;
	assert(pConsole);

#if ENABLE_VEHICLE_DEBUG
  // debug draw
  REGISTER_STRING("v_debugVehicle", "", 0, "Vehicle entity name to use for debugging output");    
  REGISTER_CVAR_CB(v_draw_components, 0, VF_DUMPTODISK, "Enables/disables display of components and their damage count", OnDebugDrawVarChanged);
  REGISTER_CVAR_CB(v_draw_helpers, 0, 0, "Enables/disables display of vehicle helpers", OnDebugDrawVarChanged);
  REGISTER_CVAR_CB(v_draw_seats, 0, 0, "Enables/disables display of seat positions", OnDebugDrawVarChanged);
  REGISTER_CVAR(v_draw_tm, 0, 0, "Enables/disables drawing of local part matrices");  
  REGISTER_CVAR(v_draw_passengers, 0, VF_CHEAT, "draw passenger TMs set by VehicleSeat");
  REGISTER_CVAR(v_debugdraw, 0, VF_DUMPTODISK, 
    "Displays vehicle status info on HUD\n"
    "Values:\n"
    "1:  common stuff\n"
    "2:  vehicle particles\n"
    "3:  parts\n"
    "4:  views\n"          
    "6:  parts + partIds\n"
    "7:  parts + transformations and bboxes\n"
    "8:  component damage\n"    
    "10: vehicle editor");
	REGISTER_CVAR(v_debug_mem, 0, 0, "display memory statistic for vehicles");

	REGISTER_CVAR_CB(v_debugView, 0, VF_CHEAT|VF_DUMPTODISK, "Activate a 360 degree rotating third person camera instead of the camera usually available on the vehicle class", OnDebugViewVarChanged);  
	REGISTER_CVAR(v_debugViewDetach, 0, VF_CHEAT|VF_DUMPTODISK, "Freeze vehicle camera position, (1) fixed rotation, (2) track the vehicle");
	REGISTER_CVAR(v_debugViewAbove, 0, VF_CHEAT|VF_DUMPTODISK, "Debug camera, looking down on vehicle");
	REGISTER_CVAR(v_debugViewAboveH, 10.f, VF_CHEAT|VF_DUMPTODISK, "Debug camera, looking down on vehicle, height ");
	REGISTER_CVAR(v_debugCollisionDamage, 0, VF_CHEAT, "Enable debug output for vehicle collisions");  

	REGISTER_CVAR(v_debug_flip_over, 0, VF_CHEAT, "flip over the current vehicle that the player is driving");
	REGISTER_CVAR(v_debug_reorient, 0, VF_CHEAT, "reset the orientation of the vehicle that the player is driving so that it is upright again");

	REGISTER_COMMAND("v_dump_classes", CVehicleSystem::DumpClasses, 0, "Outputs a list of vehicle classes in use");
#endif
      
  // dev vars
  REGISTER_CVAR(v_lights, 2, 0, "Controls vehicle lights.\n"
		"0: disable all lights\n"
		"1: enable lights only for local player\n"
		"2: enable all lights");
  REGISTER_CVAR(v_lights_enable_always, 0, VF_CHEAT, "Vehicle lights are always on (debugging)");    
  REGISTER_CVAR(v_autoDisable, 1, VF_CHEAT, "Enables/disables vehicle autodisabling");
  REGISTER_CVAR(v_set_passenger_tm, 1, VF_CHEAT, "enable/disable passenger entity tm update"); 
  REGISTER_CVAR(v_disable_hull, 0, 0, "Disable hull proxies");  
  REGISTER_CVAR(v_treadUpdateTime, 0, 0, "delta time for tread UV update, 0 means always update");    
  REGISTER_CVAR(v_show_all, 0, VF_CHEAT, "");  
  REGISTER_CVAR(v_transitionAnimations, 1, VF_CHEAT, "Enables enter/exit transition animations for vehicles");
	REGISTER_CVAR(v_playerTransitions, 1, VF_CHEAT, "Enables enter/exit transition animations for vehicles");
  REGISTER_CVAR(v_ragdollPassengers, 0, VF_CHEAT, "Forces vehicle passenger to detach and ragdoll when they die inside of a vehicle");
  REGISTER_CVAR(v_goliathMode, 0, VF_CHEAT, "Makes all vehicles invincible");  
	REGISTER_CVAR(v_enableMannequin, 1, VF_CHEAT, "Enables enter/exit transition animations for vehicles");

  // #AfroStalin . This fix physics lags in multiplayer. Use this dll in GameServer and Clients.
  REGISTER_CVAR(v_serverControlled, 0, VF_CHEAT|VF_REQUIRE_LEVEL_RELOAD, "Makes the vehicles server authoritative, clients only send inputs to the server who then drives the vehicles");
  //
  
  REGISTER_CVAR(v_clientPredict, 1, VF_CHEAT, "Enable client-side prediction on vehicle movement");
  REGISTER_CVAR(v_clientPredictSmoothing, 1, VF_CHEAT, "Enable client-side prediction smoothing on vehicle movement");
  REGISTER_CVAR(v_testClientPredict, 0, VF_CHEAT, "Test client-side prediction on a listen server with no clients, the value represents the number of frames to rewind and replay");
  REGISTER_CVAR(v_clientPredictSmoothingConst, 8.0f, VF_CHEAT, "The amount of smoothing to use, lower values result in smoothing looking movement but more lag behind the true position");
  REGISTER_CVAR(v_clientPredictAdditionalTime, 0.033f, VF_CHEAT, "Additional time offset to calibrate client prediction, will be added to ping and p_net_interp cvar");
  REGISTER_CVAR(v_clientPredictMaxTime, 0.5f, VF_CHEAT, "The maximum time the client can predict ahead of the server position (should be roughly equal to the maximum ping we expect in the real world)");

  // for tweaking  
  REGISTER_CVAR(v_slipSlopeFront, 0.f, VF_CHEAT, "coefficient for slip friction slope calculation (front wheels)");
  REGISTER_CVAR(v_slipSlopeRear, 0.f, VF_CHEAT, "coefficient for slip friction slope calculation (rear wheels)");  
  REGISTER_CVAR(v_slipFrictionModFront, 0.f, VF_CHEAT, "if non-zero, used as slip friction modifier (front wheels)");
  REGISTER_CVAR(v_slipFrictionModRear, 0.f, VF_CHEAT, "if non-zero, used as slip friction modifier (rear wheels)");

  REGISTER_CVAR(v_FlippedExplosionTimeToExplode, 20.f, VF_CHEAT, "The number of seconds to wait after a vehicle is flipped to attempt exploding");
  REGISTER_CVAR(v_FlippedExplosionPlayerMinDistance, 25.f, VF_CHEAT, "If a player is within this distance then don't explode yet");
  REGISTER_CVAR(v_FlippedExplosionRetryTimeMS, 10000, VF_CHEAT, "If a nearby player blocked explosion then try again after this time period");

  
  REGISTER_COMMAND("v_reload_system", "VehicleSystem.ReloadVehicleSystem()", 0, "Reloads VehicleSystem script");  
  REGISTER_COMMAND("v_exit_player", CmdExitPlayer, VF_CHEAT, "Makes the local player exit his current vehicle.");
  
	REGISTER_CVAR(v_disableEntry, 0, 0, "Don't allow players to enter vehicles");
	
  REGISTER_CVAR(v_vehicle_quality, 4, 0, "Geometry/Physics quality (1-lowspec, 4-highspec)");
  REGISTER_CVAR_CB(v_driverControlledMountedGuns, 1, VF_CHEAT, "Specifies if the driver can control the vehicles mounted gun when driving without gunner.", OnDriverControlledGunsChanged);
  REGISTER_CVAR(v_independentMountedGuns, 1, 0, "Whether mounted gunners operate their turret independently from the parent vehicle");
	
	REGISTER_CVAR(v_debugSuspensionIK, 0, 0, "Debug draw the suspension ik");
}
void NetInputChainInitCVars()
{
	REGISTER_STRING("net_input_trace", "0", VF_CHEAT, "trace an entities input processing to assist finding sync errors")->SetOnChangeCallback(OnChangeEntity);
	REGISTER_CVAR2("net_input_dump", &dump, 0, VF_CHEAT, "write net_input_trace output to a file (netinput.log)");
}