Fix ped comments playing at full volume behind the wall

This commit is contained in:
Sergeanur 2021-08-16 14:21:51 +03:00
parent bcb5b4f94d
commit 076b324539
2 changed files with 16 additions and 6 deletions

View File

@ -3622,7 +3622,10 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex;
pedComment.m_vecPos = m_sQueueSample.m_vecPos; pedComment.m_vecPos = m_sQueueSample.m_vecPos;
pedComment.m_fDistance = m_sQueueSample.m_fDistance; pedComment.m_fDistance = m_sQueueSample.m_fDistance;
pedComment.m_bVolume = m_sQueueSample.m_nVolume; pedComment.m_nVolume = m_sQueueSample.m_nVolume;
#if defined(EXTERNAL_3D_SOUND) && defined(FIX_BUGS)
pedComment.m_nEmittingVolume = emittingVol;
#endif
m_sPedComments.Add(&pedComment); m_sPedComments.Add(&pedComment);
} }
} }
@ -6010,7 +6013,7 @@ cPedComments::Add(tPedComment *com)
if (m_nCommentsInBank[m_nActiveBank] >= NUM_PED_COMMENTS_SLOTS) { if (m_nCommentsInBank[m_nActiveBank] >= NUM_PED_COMMENTS_SLOTS) {
index = m_nIndexMap[m_nActiveBank][NUM_PED_COMMENTS_SLOTS - 1]; index = m_nIndexMap[m_nActiveBank][NUM_PED_COMMENTS_SLOTS - 1];
if (m_asPedComments[m_nActiveBank][index].m_bVolume > com->m_bVolume) if (m_asPedComments[m_nActiveBank][index].m_nVolume > com->m_nVolume)
return; return;
} else { } else {
index = m_nCommentsInBank[m_nActiveBank]++; index = m_nCommentsInBank[m_nActiveBank]++;
@ -6021,7 +6024,7 @@ cPedComments::Add(tPedComment *com)
uint32 i = 0; uint32 i = 0;
if (index != 0) { if (index != 0) {
for (i = 0; i < index; i++) { for (i = 0; i < index; i++) {
if (m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_bVolume < m_asPedComments[m_nActiveBank][index].m_bVolume) { if (m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_nVolume < m_asPedComments[m_nActiveBank][index].m_nVolume) {
break; break;
} }
} }
@ -6052,7 +6055,7 @@ cPedComments::Process()
AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex;
AudioManager.m_sQueueSample.m_nBankIndex = SFX_BANK_PED_COMMENTS; AudioManager.m_sQueueSample.m_nBankIndex = SFX_BANK_PED_COMMENTS;
AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3; AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3;
AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume; AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nVolume;
AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance;
AudioManager.m_sQueueSample.m_nLoopCount = 1; AudioManager.m_sQueueSample.m_nLoopCount = 1;
#ifndef GTA_PS2 #ifndef GTA_PS2
@ -6060,8 +6063,12 @@ cPedComments::Process()
AudioManager.m_sQueueSample.m_nLoopEnd = -1; AudioManager.m_sQueueSample.m_nLoopEnd = -1;
#endif // !GTA_PS2 #endif // !GTA_PS2
#ifdef EXTERNAL_3D_SOUND #ifdef EXTERNAL_3D_SOUND
#ifdef FIX_BUGS
AudioManager.m_sQueueSample.m_nEmittingVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEmittingVolume;
#else
AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME;
#endif // !EXTERNAL_3D_SOUND #endif // FIX_BUGS
#endif // EXTERNAL_3D_SOUND
AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f; AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f;
switch (sampleIndex) { switch (sampleIndex) {
case SFX_POLICE_HELI_1: case SFX_POLICE_HELI_1:

View File

@ -78,8 +78,11 @@ public:
int32 m_nEntityIndex; int32 m_nEntityIndex;
CVector m_vecPos; CVector m_vecPos;
float m_fDistance; float m_fDistance;
uint8 m_bVolume; uint8 m_nVolume;
int8 m_nProcess; int8 m_nProcess;
#if defined(EXTERNAL_3D_SOUND) && defined(FIX_BUGS)
uint8 m_nEmittingVolume;
#endif
}; };
VALIDATE_SIZE(tPedComment, 28); VALIDATE_SIZE(tPedComment, 28);