From ca9befea9ebf5e87d09e3b4b1475c9a98cb702ea Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 9 Sep 2021 10:59:05 +0300 Subject: [PATCH] Fix ComputePan crash --- src/audio/AudioManager.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 17cd3d28..a0772d92 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -1214,8 +1214,10 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannel3DPosition(j, position.x, position.y, position.z); SampleManager.SetChannel3DDistances(j, sample.m_MaxDistance, 0.25f * sample.m_MaxDistance); #else - sample.m_nPan = ComputePan(sample.m_fDistance, &position); - SampleManager.SetChannelPan(j, sample.m_nPan); + sample.m_nPan = ComputePan(sample.m_MaxDistance, &position); + if (sample.m_nPan != m_asActiveSamples[j].m_nPan) + m_asActiveSamples[j].m_nPan = Clamp2((int8)sample.m_nPan, (int8)m_asActiveSamples[j].m_nPan, 10); + SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nPan); #endif } #if !defined(GTA_PS2) || defined(AUDIO_REVERB) @@ -1261,7 +1263,7 @@ cAudioManager::ProcessActiveQueues() if (!m_asActiveSamples[k].m_bIs2D) { TranslateEntity(&m_asActiveSamples[k].m_vecPos, &position); #ifndef EXTERNAL_3D_SOUND - m_asActiveSamples[j].m_nPan = ComputePan(m_asActiveSamples[j].m_fDistance, &position); + m_asActiveSamples[j].m_nPan = ComputePan(m_asActiveSamples[j].m_MaxDistance, &position); #endif } emittingVol = m_bDoubleVolume ? 2 * Min(63, m_asActiveSamples[j].WORKING_VOLUME_FIELD) : m_asActiveSamples[j].WORKING_VOLUME_FIELD;