Merge pull request #116 from Alivebyte/master

Sound support for vgui_movie_display
This commit is contained in:
Blixibon 2021-04-25 14:27:24 -05:00 committed by GitHub
commit 5e2d1cccca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 5 deletions

View File

@ -13,6 +13,7 @@
IMPLEMENT_CLIENTCLASS_DT( C_MovieDisplay, DT_MovieDisplay, CMovieDisplay ) IMPLEMENT_CLIENTCLASS_DT( C_MovieDisplay, DT_MovieDisplay, CMovieDisplay )
RecvPropBool( RECVINFO( m_bEnabled ) ), RecvPropBool( RECVINFO( m_bEnabled ) ),
RecvPropBool( RECVINFO( m_bLooping ) ), RecvPropBool( RECVINFO( m_bLooping ) ),
RecvPropBool( RECVINFO( m_bMuted ) ),
RecvPropString( RECVINFO( m_szMovieFilename ) ), RecvPropString( RECVINFO( m_szMovieFilename ) ),
RecvPropString( RECVINFO( m_szGroupName ) ), RecvPropString( RECVINFO( m_szGroupName ) ),
END_RECV_TABLE() END_RECV_TABLE()

View File

@ -20,6 +20,7 @@ public:
bool IsEnabled( void ) const { return m_bEnabled; } bool IsEnabled( void ) const { return m_bEnabled; }
bool IsLooping( void ) const { return m_bLooping; } bool IsLooping( void ) const { return m_bLooping; }
bool IsMuted(void) const { return m_bMuted; }
const char *GetMovieFilename( void ) const { return m_szMovieFilename; } const char *GetMovieFilename( void ) const { return m_szMovieFilename; }
const char *GetGroupName( void ) const { return m_szGroupName; } const char *GetGroupName( void ) const { return m_szGroupName; }
@ -27,6 +28,7 @@ public:
private: private:
bool m_bEnabled; bool m_bEnabled;
bool m_bLooping; bool m_bLooping;
bool m_bMuted;
char m_szMovieFilename[128]; char m_szMovieFilename[128];
char m_szGroupName[128]; char m_szGroupName[128];
}; };

View File

@ -81,7 +81,6 @@ private:
bool m_bBlackBackground; bool m_bBlackBackground;
bool m_bSlaved; bool m_bSlaved;
bool m_bInitialized; bool m_bInitialized;
bool m_bLastActiveState; // HACK: I'd rather get a real callback... bool m_bLastActiveState; // HACK: I'd rather get a real callback...
// VGUI specifics // VGUI specifics
@ -110,10 +109,9 @@ CMovieDisplayScreen::CMovieDisplayScreen( vgui::Panel *parent, const char *panel
m_bBlackBackground = true; m_bBlackBackground = true;
m_bSlaved = false; m_bSlaved = false;
m_bInitialized = false; m_bInitialized = false;
// Add ourselves to the global list of movie displays // Add ourselves to the global list of movie displays
g_MovieDisplays.AddToTail( this ); g_MovieDisplays.AddToTail( this );
//m_VideoMaterial->SetMuted(true);
m_bLastActiveState = IsActive(); m_bLastActiveState = IsActive();
} }
@ -295,6 +293,11 @@ void CMovieDisplayScreen::UpdateMovie( void )
// OnVideoOver(); // OnVideoOver();
// StopPlayback(); // StopPlayback();
} }
if (!m_hScreenEntity->IsMuted())
{
m_VideoMaterial->SetMuted(false);
}
} }
} }
@ -376,14 +379,17 @@ bool CMovieDisplayScreen::BeginPlayback( const char *pFilename )
if ( m_VideoMaterial == NULL ) if ( m_VideoMaterial == NULL )
return false; return false;
m_VideoMaterial->SetMuted( true ); // FIXME: Allow?
m_VideoMaterial->SetMuted(true); // FIXME: Allow?
if ( m_hScreenEntity->IsLooping() ) if ( m_hScreenEntity->IsLooping() )
{ {
m_VideoMaterial->SetLooping( true ); m_VideoMaterial->SetLooping( true );
} }
if ( m_VideoMaterial->HasAudio() ) if ( m_VideoMaterial->HasAudio())
{ {
// We want to be the sole audio source // We want to be the sole audio source
enginesound->NotifyBeginMoviePlayback(); enginesound->NotifyBeginMoviePlayback();

View File

@ -21,6 +21,8 @@ public:
DECLARE_DATADESC(); DECLARE_DATADESC();
DECLARE_SERVERCLASS(); DECLARE_SERVERCLASS();
CMovieDisplay() { m_bMuted = true; }
virtual ~CMovieDisplay(); virtual ~CMovieDisplay();
virtual bool KeyValue( const char *szKeyName, const char *szValue ); virtual bool KeyValue( const char *szKeyName, const char *szValue );
@ -53,6 +55,7 @@ private:
private: private:
CNetworkVar( bool, m_bEnabled ); CNetworkVar( bool, m_bEnabled );
CNetworkVar( bool, m_bLooping ); CNetworkVar( bool, m_bLooping );
CNetworkVar( bool, m_bMuted);
CNetworkString( m_szDisplayText, 128 ); CNetworkString( m_szDisplayText, 128 );
@ -93,6 +96,7 @@ BEGIN_DATADESC( CMovieDisplay )
DEFINE_KEYFIELD( m_iScreenWidth, FIELD_INTEGER, "width" ), DEFINE_KEYFIELD( m_iScreenWidth, FIELD_INTEGER, "width" ),
DEFINE_KEYFIELD( m_iScreenHeight, FIELD_INTEGER, "height" ), DEFINE_KEYFIELD( m_iScreenHeight, FIELD_INTEGER, "height" ),
DEFINE_KEYFIELD( m_bLooping, FIELD_BOOLEAN, "looping" ), DEFINE_KEYFIELD( m_bLooping, FIELD_BOOLEAN, "looping" ),
DEFINE_KEYFIELD( m_bMuted, FIELD_BOOLEAN, "muted"),
DEFINE_FIELD( m_bDoFullTransmit, FIELD_BOOLEAN ), DEFINE_FIELD( m_bDoFullTransmit, FIELD_BOOLEAN ),
@ -108,6 +112,7 @@ END_DATADESC()
IMPLEMENT_SERVERCLASS_ST( CMovieDisplay, DT_MovieDisplay ) IMPLEMENT_SERVERCLASS_ST( CMovieDisplay, DT_MovieDisplay )
SendPropBool( SENDINFO( m_bEnabled ) ), SendPropBool( SENDINFO( m_bEnabled ) ),
SendPropBool( SENDINFO( m_bLooping ) ), SendPropBool( SENDINFO( m_bLooping ) ),
SendPropBool( SENDINFO( m_bMuted ) ),
SendPropString( SENDINFO( m_szMovieFilename ) ), SendPropString( SENDINFO( m_szMovieFilename ) ),
SendPropString( SENDINFO( m_szGroupName ) ), SendPropString( SENDINFO( m_szGroupName ) ),
END_SEND_TABLE() END_SEND_TABLE()
@ -120,6 +125,7 @@ CMovieDisplay::~CMovieDisplay()
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Read in Hammer data // Read in Hammer data
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CMovieDisplay::KeyValue( const char *szKeyName, const char *szValue ) bool CMovieDisplay::KeyValue( const char *szKeyName, const char *szValue )
{ {
// NOTE: Have to do these separate because they set two values instead of one // NOTE: Have to do these separate because they set two values instead of one