summaryrefslogtreecommitdiff
path: root/engine/audio/public/soundservice.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/audio/public/soundservice.h')
-rw-r--r--engine/audio/public/soundservice.h135
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