mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
132
utils/hlfaceposer/wavefile.cpp
Normal file
132
utils/hlfaceposer/wavefile.cpp
Normal file
@@ -0,0 +1,132 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "wavefile.h"
|
||||
#include "wavebrowser.h"
|
||||
#include "sentence.h"
|
||||
#include "ifaceposersound.h"
|
||||
#include "SoundEmitterSystem/isoundemittersystembase.h"
|
||||
#include "snd_wave_source.h"
|
||||
#include "filesystem.h"
|
||||
#include "UtlBuffer.h"
|
||||
#include "phonemeeditor.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *name -
|
||||
//-----------------------------------------------------------------------------
|
||||
CWaveFile::CWaveFile( char const *filename )
|
||||
{
|
||||
m_bAsyncLoading = false;
|
||||
|
||||
m_bSentenceLoaded = false;
|
||||
|
||||
m_Sentence.Reset();
|
||||
|
||||
Q_strncpy( m_szName, filename, sizeof( m_szName ) );
|
||||
|
||||
Q_snprintf( m_szFileName, sizeof( m_szFileName ), "sound/%s", filename );
|
||||
}
|
||||
|
||||
CWaveFile::~CWaveFile()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : int
|
||||
//-----------------------------------------------------------------------------
|
||||
int CWaveFile::GetLanguageId()
|
||||
{
|
||||
return GetCloseCaptionLanguageId();
|
||||
}
|
||||
|
||||
bool SceneManager_LoadSentenceFromWavFile( char const *wavfile, CSentence& sentence );
|
||||
|
||||
void CWaveFile::EnsureSentence()
|
||||
{
|
||||
if ( m_bSentenceLoaded )
|
||||
return;
|
||||
|
||||
m_bSentenceLoaded = true;
|
||||
|
||||
if ( m_szFileName[ 0 ] )
|
||||
{
|
||||
SceneManager_LoadSentenceFromWavFile( m_szFileName, m_Sentence );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Output : Returns true on success, false on failure.
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CWaveFile::HasLoadedSentenceInfo() const
|
||||
{
|
||||
return m_bSentenceLoaded;
|
||||
}
|
||||
|
||||
char const *CWaveFile::GetName() const
|
||||
{
|
||||
return m_szName;
|
||||
}
|
||||
|
||||
char const *CWaveFile::GetFileName() const
|
||||
{
|
||||
return m_szFileName;
|
||||
}
|
||||
|
||||
char const *CWaveFile::GetSentenceText()
|
||||
{
|
||||
EnsureSentence();
|
||||
return m_Sentence.GetText();
|
||||
}
|
||||
|
||||
int CWaveFile::GetPhonemeCount()
|
||||
{
|
||||
EnsureSentence();
|
||||
return m_Sentence.CountPhonemes();
|
||||
}
|
||||
|
||||
int CWaveFile::GetWordCount()
|
||||
{
|
||||
EnsureSentence();
|
||||
return m_Sentence.m_Words.Count();
|
||||
}
|
||||
|
||||
|
||||
void CWaveFile::Play()
|
||||
{
|
||||
Con_Printf( "Playing '%s' : '%s'\n", GetFileName(), GetSentenceText() );
|
||||
|
||||
g_pPhonemeEditor->SetCurrentWaveFile( GetFileName() );
|
||||
g_pPhonemeEditor->Play();
|
||||
}
|
||||
|
||||
|
||||
bool CWaveFile::GetVoiceDuck()
|
||||
{
|
||||
EnsureSentence();
|
||||
return m_Sentence.GetVoiceDuck();
|
||||
}
|
||||
|
||||
int CWaveFile::GetIconIndex() const
|
||||
{
|
||||
return 0; // IMAGE_WAV;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : sentence -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CWaveFile::SetThreadLoadedSentence( CSentence& sentence )
|
||||
{
|
||||
if ( m_bSentenceLoaded )
|
||||
return;
|
||||
|
||||
m_bSentenceLoaded = true;
|
||||
m_Sentence = sentence;
|
||||
}
|
||||
Reference in New Issue
Block a user