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.
135 lines
4.7 KiB
135 lines
4.7 KiB
//========= 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
|
|
|