From ce9f2ee5f9ab84945805aa4a0b680cad7ffe57c9 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Wed, 17 Oct 2012 19:30:41 +0000 Subject: [PATCH] Check last listener number instead of clc.clientNum in S_AL_HearingThroughEntity so sound work correctly when spectate following a client. (Related to bug 5741.) --- code/client/snd_openal.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index b907ae68..9b307d5f 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -540,6 +540,7 @@ static src_t srcList[MAX_SRC]; static int srcCount = 0; static int srcActiveCnt = 0; static qboolean alSourcesInitialised = qfalse; +static int lastListenerNumber = -1; static vec3_t lastListenerOrigin = { 0.0f, 0.0f, 0.0f }; typedef struct sentity_s @@ -640,7 +641,7 @@ static qboolean S_AL_HearingThroughEntity( int entityNum ) { float distanceSq; - if( clc.clientNum == entityNum ) + if( lastListenerNumber == entityNum ) { // FIXME: 28/02/06 This is an outrageous hack to detect // whether or not the player is rendering in third person or not. We can't @@ -2151,6 +2152,7 @@ void S_AL_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int orientation[0] = axis[0][0]; orientation[1] = axis[0][1]; orientation[2] = axis[0][2]; orientation[3] = axis[2][0]; orientation[4] = axis[2][1]; orientation[5] = axis[2][2]; + lastListenerNumber = entityNum; VectorCopy( sorigin, lastListenerOrigin ); // Set OpenAL listener paramaters