blob: c1a19ac7d1ec1ed8f828c61aa82d47dc4c379105 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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;
}
|