diff options
Diffstat (limited to 'engine/audio/public/soundservice.h')
| -rw-r--r-- | engine/audio/public/soundservice.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/engine/audio/public/soundservice.h b/engine/audio/public/soundservice.h new file mode 100644 index 0000000..b1fb4df --- /dev/null +++ b/engine/audio/public/soundservice.h @@ -0,0 +1,135 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Applicaton-level hooks for clients of the audio subsystem +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef SOUNDSERVICE_H +#define SOUNDSERVICE_H + +#if defined( _WIN32 ) +#pragma once +#endif + +class Vector; +class QAngle; +class CAudioSource; +typedef int SoundSource; +struct SpatializationInfo_t; +typedef void *FileNameHandle_t; +struct StartSoundParams_t; + +#include "utlrbtree.h" + +//----------------------------------------------------------------------------- +// Purpose: Services required by the audio system to function, this facade +// defines the bridge between the audio code and higher level +// systems. +// +// Note that some of these currently suggest that certain +// functionality would like to exist at a deeper layer so +// systems like audio can take advantage of them +// diectly (toml 05-02-02) +//----------------------------------------------------------------------------- + +abstract_class ISoundServices +{ +public: + //--------------------------------- + // Allocate a block of memory that will be automatically + // cleaned up on level change + //--------------------------------- + virtual void *LevelAlloc( int nBytes, const char *pszTag ) = 0; + + //--------------------------------- + // Notification that someone called S_ExtraUpdate() + //--------------------------------- + virtual void OnExtraUpdate() = 0; + + //--------------------------------- + // Return false if the entity doesn't exist or is out of the PVS, in which case the sound shouldn't be heard. + //--------------------------------- + virtual bool GetSoundSpatialization( int entIndex, SpatializationInfo_t& info ) = 0; + + //--------------------------------- + // This is the client's clock, which follows the servers and thus isn't 100% smooth all the time (it is in single player) + //--------------------------------- + virtual float GetClientTime() = 0; + + //--------------------------------- + // This is the engine's filtered timer, it's pretty smooth all the time + //--------------------------------- + virtual float GetHostTime() = 0; + + //--------------------------------- + //--------------------------------- + virtual int GetViewEntity() = 0; + + //--------------------------------- + //--------------------------------- + virtual float GetHostFrametime() = 0; + virtual void SetSoundFrametime( float realDt, float hostDt ) = 0; + + //--------------------------------- + //--------------------------------- + virtual int GetServerCount() = 0; + + //--------------------------------- + //--------------------------------- + virtual bool IsPlayer( SoundSource source ) = 0; + + //--------------------------------- + //--------------------------------- + virtual void OnChangeVoiceStatus( int entity, bool status) = 0; + + // Is the player fully connected (don't do DSP processing if not) + virtual bool IsConnected() = 0; + + // Calls into client .dll with list of close caption tokens to construct a caption out of + virtual void EmitSentenceCloseCaption( char const *tokenstream ) = 0; + // Calls into client .dll with list of close caption tokens to construct a caption out of + virtual void EmitCloseCaption( char const *captionname, float duration ) = 0; + + virtual char const *GetGameDir() = 0; + + // If the game is paused, certain audio will pause, too (anything with phoneme/sentence data for now) + virtual bool IsGamePaused() = 0; + + // If the game is not active, certain audio will pause + virtual bool IsGameActive() = 0; + + // restarts the sound system externally + virtual void RestartSoundSystem() = 0; + + virtual void GetAllSoundFilesReferencedInReslists( CUtlRBTree< FileNameHandle_t, int >& list ) = 0; + virtual void GetAllManifestFiles( CUtlRBTree< FileNameHandle_t, int >& list ) = 0; + virtual void GetAllSoundFilesInManifest( CUtlRBTree< FileNameHandle_t, int >& list, char const *manifestfile ) = 0; + + virtual void CacheBuildingStart() = 0; + virtual void CacheBuildingUpdateProgress( float percent, char const *cachefile ) = 0; + virtual void CacheBuildingFinish() = 0; + + // For building sound cache manifests + virtual int GetPrecachedSoundCount() = 0; + virtual char const *GetPrecachedSound( int index ) = 0; + + virtual void OnSoundStarted( int guid, StartSoundParams_t& params, char const *soundname ) = 0; + virtual void OnSoundStopped( int guid, int soundsource, int channel, char const *soundname ) = 0; + + virtual bool GetToolSpatialization( int iUserData, int guid, SpatializationInfo_t& info ) = 0; + +#if defined( _XBOX ) + virtual bool ShouldSuppressNonUISounds() = 0; +#endif + + virtual char const *GetUILanguage() = 0; +}; + +//------------------------------------- + +extern ISoundServices *g_pSoundServices; + +//============================================================================= + +#endif // SOUNDSERVICE_H |