diff options
Diffstat (limited to 'engine/voiceserver_impl.cpp')
| -rw-r--r-- | engine/voiceserver_impl.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/engine/voiceserver_impl.cpp b/engine/voiceserver_impl.cpp new file mode 100644 index 0000000..342e251 --- /dev/null +++ b/engine/voiceserver_impl.cpp @@ -0,0 +1,64 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: This module implements the IVoiceServer interface. +// +// $NoKeywords: $ +//=============================================================================// + +#include "quakedef.h" +#include "server.h" +#include "ivoiceserver.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +class CVoiceServer : public IVoiceServer +{ +public: + + virtual bool GetClientListening(int iReceiver, int iSender) + { + // Make into client indices.. + --iReceiver; + --iSender; + + if(iReceiver < 0 || iReceiver >= sv.GetClientCount() || iSender < 0 || iSender >= sv.GetClientCount() ) + return false; + + return sv.GetClient(iSender)->IsHearingClient( iReceiver ); + } + + virtual bool SetClientListening(int iReceiver, int iSender, bool bListen) + { + // Make into client indices.. + --iReceiver; + --iSender; + + if(iReceiver < 0 || iReceiver >= sv.GetClientCount() || iSender < 0 || iSender >= sv.GetClientCount() ) + return false; + + CGameClient *cl = sv.Client(iSender); + + cl->m_VoiceStreams.Set( iReceiver, bListen?1:0 ); + + return true; + } + virtual bool SetClientProximity(int iReceiver, int iSender, bool bUseProximity) + { + // Make into client indices.. + --iReceiver; + --iSender; + + if(iReceiver < 0 || iReceiver >= sv.GetClientCount() || iSender < 0 || iSender >= sv.GetClientCount() ) + return false; + + CGameClient *cl = sv.Client(iSender); + + cl->m_VoiceProximity.Set( iReceiver, bUseProximity ); + + return true; + } +}; + + +EXPOSE_SINGLE_INTERFACE(CVoiceServer, IVoiceServer, INTERFACEVERSION_VOICESERVER); |