summaryrefslogtreecommitdiff
path: root/engine/enginestats.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engine/enginestats.cpp')
-rw-r--r--engine/enginestats.cpp131
1 files changed, 131 insertions, 0 deletions
diff --git a/engine/enginestats.cpp b/engine/enginestats.cpp
new file mode 100644
index 0000000..c1a19ac
--- /dev/null
+++ b/engine/enginestats.cpp
@@ -0,0 +1,131 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "quakedef.h"
+#include "enginestats.h"
+#include "basetypes.h"
+#include "clientstats.h"
+#include "limits.h"
+#include "sysexternal.h"
+#include "gl_matsysiface.h"
+#include "filesystem_engine.h"
+#include "tier0/vprof.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+//-----------------------------------------------------------------------------
+// itty bitty interface for stat time
+//-----------------------------------------------------------------------------
+
+class CStatTime : public IClientStatsTime
+{
+public:
+ float GetTime()
+ {
+ return Sys_FloatTime();
+ }
+};
+
+CStatTime g_StatTime;
+
+
+CEngineStats::CEngineStats() : m_InFrame( false )
+{
+ m_bInRun = false;
+}
+
+void CEngineStats::BeginRun( void )
+{
+ m_bInRun = true;
+ m_totalNumFrames = 0;
+
+ // frame timing data
+ m_runStartTime = Sys_FloatTime();
+}
+
+
+void CEngineStats::EndRun( void )
+{
+ m_runEndTime = Sys_FloatTime();
+ m_bInRun = false;
+}
+
+void CEngineStats::BeginFrame( void )
+{
+ m_bPaused = false;
+ m_InFrame = false;
+}
+
+
+void CEngineStats::ComputeFrameTimeStats( void )
+{
+ m_StatGroup.m_StatFrameTime[ENGINE_STATS_FRAME_TIME] = m_flFrameTime / 1000.0f;
+ m_StatGroup.m_StatFrameTime[ENGINE_STATS_FPS_VARIABILITY] = m_flFPSVariability / 1000.0f;
+ m_StatGroup.m_StatFrameTime[ENGINE_STATS_FPS] = (m_flFrameTime != 0.0f) ? ( 1.0f / (1000.0f * m_flFrameTime) ) : 0.0f;
+}
+
+
+void CEngineStats::EndFrame( void )
+{
+ if (!m_InFrame)
+ return;
+}
+
+
+//-----------------------------------------------------------------------------
+// Advances the next frame for the stats...
+//-----------------------------------------------------------------------------
+void CEngineStats::NextFrame()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Pause those stats!
+//-----------------------------------------------------------------------------
+void CEngineStats::PauseStats( bool bPaused )
+{
+ if (bPaused)
+ {
+ if (m_InFrame)
+ {
+ m_bPaused = true;
+ m_InFrame = false;
+ }
+ }
+ else // !bPaused
+ {
+ if (m_bPaused)
+ {
+ m_InFrame = true;
+ m_bPaused = false;
+ }
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// returns timed stats
+//-----------------------------------------------------------------------------
+
+double CEngineStats::TimedStatInFrame( EngineTimedStatId_t stat ) const
+{
+ return m_StatGroup.m_StatFrameTime[stat];
+}
+
+double CEngineStats::TotalTimedStat( EngineTimedStatId_t stat ) const
+{
+ return m_StatGroup.m_TotalStatTime[stat];
+}
+
+
+double CEngineStats::GetRunTime( void )
+{
+ return m_runEndTime - m_runStartTime;
+}
+