You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.3 KiB
112 lines
3.3 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: VGUI panel which can play back video, in-engine |
|
// |
|
//============================================================================= |
|
|
|
#include "cbase.h" |
|
#include <vgui/IVGui.h> |
|
#include <vgui/ISurface.h> |
|
#include <KeyValues.h> |
|
#include "vgui_video.h" |
|
#include "tf_vgui_video.h" |
|
#include "engine/IEngineSound.h" |
|
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
|
|
DECLARE_BUILD_FACTORY( CTFVideoPanel ); |
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
CTFVideoPanel::CTFVideoPanel( vgui::Panel *parent, const char *panelName ) : VideoPanel( 0, 0, 50, 50 ) |
|
{ |
|
SetParent( parent ); |
|
SetProportional( true ); |
|
SetKeyBoardInputEnabled( false ); |
|
|
|
SetBlackBackground( false ); |
|
|
|
m_flStartAnimDelay = 0.0f; |
|
m_flEndAnimDelay = 0.0f; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
CTFVideoPanel::~CTFVideoPanel() |
|
{ |
|
ReleaseVideo(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::ReleaseVideo() |
|
{ |
|
enginesound->NotifyEndMoviePlayback(); |
|
|
|
// Destroy any previously allocated video |
|
if ( g_pVideo && m_VideoMaterial != NULL ) |
|
{ |
|
g_pVideo->DestroyVideoMaterial( m_VideoMaterial ); |
|
m_VideoMaterial = NULL; |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::ApplySettings( KeyValues *inResourceData ) |
|
{ |
|
BaseClass::ApplySettings( inResourceData ); |
|
|
|
SetExitCommand( inResourceData->GetString( "command", "" ) ); |
|
m_flStartAnimDelay = inResourceData->GetFloat( "start_delay", 0.0 ); |
|
m_flEndAnimDelay = inResourceData->GetFloat( "end_delay", 0.0 ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::GetPanelPos( int &xpos, int &ypos ) |
|
{ |
|
vgui::ipanel()->GetAbsPos( GetVPanel(), xpos, ypos ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::OnVideoOver() |
|
{ |
|
BaseClass::OnVideoOver(); |
|
PostMessage( GetParent(), new KeyValues( "IntroFinished" ) ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::OnClose() |
|
{ |
|
// Fire an exit command if we're asked to do so |
|
if ( m_szExitCommand[0] ) |
|
{ |
|
engine->ClientCmd( m_szExitCommand ); |
|
} |
|
|
|
// intentionally skipping VideoPanel::OnClose() |
|
EditablePanel::OnClose(); |
|
|
|
SetVisible( false ); |
|
} |
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CTFVideoPanel::Shutdown() |
|
{ |
|
OnClose(); |
|
ReleaseVideo(); |
|
} |