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.
150 lines
3.7 KiB
150 lines
3.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: client sound i/o functions |
|
// |
|
//===========================================================================// |
|
#ifndef SOUND_H |
|
#define SOUND_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "basetypes.h" |
|
#include "datamap.h" |
|
#include "mathlib/vector.h" |
|
#include "mathlib/mathlib.h" |
|
#include "tier1/strtools.h" |
|
#include "soundflags.h" |
|
#include "utlvector.h" |
|
#include "engine/SndInfo.h" |
|
|
|
#define MAX_SFX 2048 |
|
|
|
#define AUDIOSOURCE_CACHE_ROOTDIR "maps/soundcache" |
|
|
|
class CSfxTable; |
|
enum soundlevel_t; |
|
struct SoundInfo_t; |
|
struct AudioState_t; |
|
class IFileList; |
|
|
|
void S_Init (void); |
|
void S_Shutdown (void); |
|
bool S_IsInitted(); |
|
|
|
void S_StopAllSounds(bool clear); |
|
void S_Update( const AudioState_t *pAudioState ); |
|
void S_ExtraUpdate (void); |
|
void S_ClearBuffer (void); |
|
void S_BlockSound (void); |
|
void S_UnblockSound (void); |
|
float S_GetMasterVolume( void ); |
|
void S_SoundFade( float percent, float holdtime, float intime, float outtime ); |
|
void S_OnLoadScreen(bool value); |
|
void S_EnableThreadedMixing( bool bEnable ); |
|
void S_EnableMusic( bool bEnable ); |
|
|
|
struct StartSoundParams_t |
|
{ |
|
StartSoundParams_t() : |
|
staticsound( false ), |
|
userdata( 0 ), |
|
soundsource( 0 ), |
|
entchannel( CHAN_AUTO ), |
|
pSfx( 0 ), |
|
bUpdatePositions( true ), |
|
fvol( 1.0f ), |
|
soundlevel( SNDLVL_NORM ), |
|
flags( SND_NOFLAGS ), |
|
pitch( PITCH_NORM ), |
|
specialdsp( 0 ), |
|
fromserver( false ), |
|
delay( 0.0f ), |
|
speakerentity( -1 ), |
|
suppressrecording( false ), |
|
initialStreamPosition( 0 ) |
|
{ |
|
origin.Init(); |
|
direction.Init(); |
|
} |
|
|
|
bool staticsound; |
|
int userdata; |
|
int soundsource; |
|
int entchannel; |
|
CSfxTable *pSfx; |
|
Vector origin; |
|
Vector direction; |
|
bool bUpdatePositions; |
|
float fvol; |
|
soundlevel_t soundlevel; |
|
int flags; |
|
int pitch; |
|
int specialdsp; |
|
bool fromserver; |
|
float delay; |
|
int speakerentity; |
|
bool suppressrecording; |
|
int initialStreamPosition; |
|
}; |
|
|
|
int S_StartSound( StartSoundParams_t& params ); |
|
void S_StopSound ( int entnum, int entchannel ); |
|
enum clocksync_index_t |
|
{ |
|
CLOCK_SYNC_CLIENT = 0, |
|
CLOCK_SYNC_SERVER, |
|
NUM_CLOCK_SYNCS |
|
}; |
|
|
|
extern float S_ComputeDelayForSoundtime( float soundtime, clocksync_index_t syncIndex ); |
|
|
|
void S_StopSoundByGuid( int guid ); |
|
float S_SoundDurationByGuid( int guid ); |
|
int S_GetGuidForLastSoundEmitted(); |
|
bool S_IsSoundStillPlaying( int guid ); |
|
void S_GetActiveSounds( CUtlVector< SndInfo_t >& sndlist ); |
|
void S_SetVolumeByGuid( int guid, float fvol ); |
|
float S_GetElapsedTimeByGuid( int guid ); |
|
bool S_IsLoopingSoundByGuid( int guid ); |
|
void S_ReloadSound( const char *pSample ); |
|
float S_GetMono16Samples( const char *pszName, CUtlVector< short >& sampleList ); |
|
|
|
CSfxTable *S_DummySfx( const char *name ); |
|
CSfxTable *S_PrecacheSound (const char *sample ); |
|
void S_PrefetchSound( char const *name, bool bPlayOnce ); |
|
void S_MarkUISound( CSfxTable *pSfx ); |
|
void S_ReloadFilesInList( IFileList *pFilesToReload ); |
|
|
|
vec_t S_GetNominalClipDist(); |
|
|
|
extern bool TestSoundChar(const char *pch, char c); |
|
extern char *PSkipSoundChars(const char *pch); |
|
|
|
#include "soundchars.h" |
|
|
|
// for recording movies |
|
void SND_MovieStart( void ); |
|
void SND_MovieEnd( void ); |
|
|
|
//------------------------------------- |
|
|
|
int S_GetCurrentStaticSounds( SoundInfo_t *pResult, int nSizeResult, int entchannel ); |
|
|
|
//----------------------------------------------------------------------------- |
|
|
|
float S_GetGainFromSoundLevel( soundlevel_t soundlevel, vec_t dist ); |
|
|
|
struct musicsave_t |
|
{ |
|
DECLARE_SIMPLE_DATADESC(); |
|
|
|
char songname[ 128 ]; |
|
int sampleposition; |
|
short master_volume; |
|
}; |
|
|
|
void S_GetCurrentlyPlayingMusic( CUtlVector< musicsave_t >& list ); |
|
void S_RestartSong( const musicsave_t *song ); |
|
|
|
#endif // SOUND_H
|
|
|