diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /engine/vgui_budgetpanel.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'engine/vgui_budgetpanel.cpp')
| -rw-r--r-- | engine/vgui_budgetpanel.cpp | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/engine/vgui_budgetpanel.cpp b/engine/vgui_budgetpanel.cpp new file mode 100644 index 0000000..6c99994 --- /dev/null +++ b/engine/vgui_budgetpanel.cpp @@ -0,0 +1,172 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Does anyone ever read this? +// +//===========================================================================// + +#include "client_pch.h" + +#include "vgui_budgetpanel.h" +#include "vgui_controls/Label.h" +#include "vgui_baseui_interface.h" +#include "tier0/vprof.h" +#include "tier0/fasttimer.h" +#include "materialsystem/imaterialsystem.h" +#include "VGuiMatSurface/IMatSystemSurface.h" +#include "vgui/IScheme.h" +#include "convar.h" +#include "ivrenderview.h" +#include "engine/ivmodelinfo.h" +#include "mathlib/mathlib.h" +#include "gl_cvars.h" +#include "gl_matsysiface.h" +#include "materialsystem/imaterialsystemhardwareconfig.h" +#include "cmd.h" +#include "vgui/IVGui.h" +#include "vprof_engine.h" +#include "ivprofexport.h" +#include "vprof_record.h" +#include "tier2/tier2.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +#ifdef VPROF_ENABLED + +CON_COMMAND( vprof_adddebuggroup1, "add a new budget group dynamically for debugging" ) +{ + VPROF_BUDGET( "vprof_adddebuggroup1", "vprof_adddebuggroup1" ); +} + +void IN_BudgetDown(void) +{ + GetBudgetPanel()->UserCmd_ShowBudgetPanel(); +} + +void IN_BudgetUp(void) +{ + GetBudgetPanel()->UserCmd_HideBudgetPanel(); +} + +static ConCommand startshowbudget("+showbudget", IN_BudgetDown, "" ); +static ConCommand endshowbudget("-showbudget", IN_BudgetUp, "" ); + + + +// Globals. +static CBudgetPanelEngine *g_pBudgetPanel = NULL; + + +CBudgetPanelEngine *GetBudgetPanel( void ) +{ + return g_pBudgetPanel; +} + + +CBudgetPanelEngine::CBudgetPanelEngine( vgui::Panel *pParent, const char *pElementName ) + : BaseClass( pParent, pElementName, BUDGETFLAG_CLIENT | BUDGETFLAG_OTHER | BUDGETFLAG_HIDDEN ) +{ + g_pBudgetPanel = this; + m_bShowBudgetPanelHeld = false; +} + + +CBudgetPanelEngine::~CBudgetPanelEngine() +{ + Assert( g_pBudgetPanel == this ); + g_pBudgetPanel = NULL; +} + + +void CBudgetPanelEngine::PostChildPaint() +{ + int r = 255; + int g = 0; + + int nDXSupportLevel = g_pMaterialSystemHardwareConfig->GetDXSupportLevel(); + if( ( g_fFrameRate >= 60 ) + || ( nDXSupportLevel <= 80 && g_fFrameRate >= 30 ) + || ( nDXSupportLevel <= 70 && g_fFrameRate >= 20 ) ) + { + r = 0; + g = 255; + } + + int yPos = 20; + g_pMatSystemSurface->DrawColoredText( m_hFont, 600, yPos, r, g, 0, 255, "%3i fps (showbudget 3D driver time included)", RoundFloatToInt(g_fFrameRate) ); + yPos += 14; + + g_pMatSystemSurface->DrawColoredText( m_hFont, 600, yPos, r, g, 0, 255, "%5.1f ms", g_fFrameTimeLessBudget*1000.0f ); + yPos += 14; +#ifndef _XBOX + if ( VProfRecord_IsPlayingBack() ) + { + int iCur = VProfPlayback_GetCurrentTick(); + char str[512]; + Q_snprintf( str, sizeof( str ), "VPROF playback (tick %d, %d%%)", iCur, (int)(VProfPlayback_GetCurrentPercent() * 100) ); + g_pMatSystemSurface->DrawColoredText( m_hFont, 600, yPos, 255, 0, 0, 255, "%s", str ); + yPos += 14; + } +#endif + BaseClass::PostChildPaint(); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBudgetPanelEngine::UserCmd_ShowBudgetPanel( void ) +{ + Cbuf_AddText( "vprof_on\n" ); + m_bShowBudgetPanelHeld = true; + SetVisible( true ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBudgetPanelEngine::UserCmd_HideBudgetPanel( void ) +{ + Cbuf_AddText( "vprof_off\n" ); + m_bShowBudgetPanelHeld = false; + SetVisible( false ); +} + +void CBudgetPanelEngine::OnTick() +{ + // Go away if we were on and sv_cheats is now on. + if ( m_bShowBudgetPanelHeld && !CanCheat() ) + { + UserCmd_HideBudgetPanel(); + } + + BaseClass::OnTick(); + SetVisible(m_bShowBudgetPanelHeld); +} + +void CBudgetPanelEngine::SetTimeLabelText() +{ + for ( int i=0; i < m_TimeLabels.Count(); i++ ) + { + char text[512]; + Q_snprintf( text, sizeof( text ), "%dms", (int)( i * GetConfigData().m_flTimeLabelInterval ) ); + m_TimeLabels[i]->SetText( text ); + } +} + + +void CBudgetPanelEngine::SetHistoryLabelText() +{ + Assert( m_HistoryLabels.Count() == 3 ); + m_HistoryLabels[0]->SetText( "20 fps (50 ms)" ); + m_HistoryLabels[1]->SetText( "30 fps (33 1/3 ms)" ); + m_HistoryLabels[2]->SetText( "60 fps (16 2/3 ms)" ); +} + + +bool CBudgetPanelEngine::IsBudgetPanelShown() const +{ + return m_bShowBudgetPanelHeld; +} + +#endif // VPROF_ENABLED
\ No newline at end of file |