//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef GLOBALVARS_BASE_H #define GLOBALVARS_BASE_H #ifdef _WIN32 #pragma once #endif class CSaveRestoreData; //----------------------------------------------------------------------------- // Purpose: Global variables used by shared code //----------------------------------------------------------------------------- class CGlobalVarsBase { public: CGlobalVarsBase( bool bIsClient ); // This can be used to filter debug output or to catch the client or server in the act. // ONLY valid during debugging. #ifdef _DEBUG bool IsClient() const; #endif public: // Absolute time (per frame still) float realtime; // Absolute frmae counter int framecount; // Non-paused frametime float absoluteframetime; // Current time // // On the client, this (along with tickcount) takes a different meaning based on what // piece of code you're in: // // - While receiving network packets (like in PreDataUpdate/PostDataUpdate and proxies), // this is set to the SERVER TICKCOUNT for that packet. There is no interval between // the server ticks. // [server_current_Tick * tick_interval] // // - While rendering, this is the exact client clock // [(client_current_tick + interpolation_amount) * tick_interval] // // - During prediction, this is based on the client's current tick: // [client_current_tick * tick_interval] float curtime; // Time spent on last server or client frame (has nothing to do with think intervals) float frametime; // current maxplayers int maxClients; // Simulation ticks int tickcount; // Simulation tick interval float interval_per_tick; // interpolation amount ( client-only ) based on fraction of next tick which has elapsed float interpolation_amount; // current saverestore data CSaveRestoreData *pSaveData; private: // Set to true in client code. This can only be used for debugging code. bool m_bClient; }; inline CGlobalVarsBase::CGlobalVarsBase( bool bIsClient ) { m_bClient = bIsClient; } #ifdef _DEBUG inline bool CGlobalVarsBase::IsClient() const { return m_bClient; } #endif #endif // GLOBALVARS_BASE_H