Ambient generic: stop and toggle fix: Difference between revisions
Jump to navigation
Jump to search
TomEdwards (talk | contribs) (fix code) |
TomEdwards (talk | contribs) mNo edit summary |
||
Line 14: | Line 14: | ||
(m_dpv.vol * 0.01), m_iSoundLevel, flags, m_dpv.pitch); | (m_dpv.vol * 0.01), m_iSoundLevel, flags, m_dpv.pitch); | ||
<span style="color:red">// | <span style="color:red">// Only mark active if this is a looping sound. If not looping, each | ||
// trigger will cause the sound to play. If the sound is still | // trigger will cause the sound to play. If the sound is still | ||
// playing from a previous trigger press, it will be shut off | // playing from a previous trigger press, it will be shut off |
Revision as of 14:31, 2 March 2008
Insert code in red into CAmbientGeneric::SendSound
to overcome "unstoppable sound" issues:
if ( pSoundSource ) { if ( flags == SND_STOP ) { UTIL_EmitAmbientSound(pSoundSource->GetSoundSourceIndex(), pSoundSource->GetAbsOrigin(), szSoundFile, 0, SNDLVL_NONE, flags, 0); m_fActive = false; } else { UTIL_EmitAmbientSound(pSoundSource->GetSoundSourceIndex(), pSoundSource->GetAbsOrigin(), szSoundFile, (m_dpv.vol * 0.01), m_iSoundLevel, flags, m_dpv.pitch); // Only mark active if this is a looping sound. If not looping, each // trigger will cause the sound to play. If the sound is still // playing from a previous trigger press, it will be shut off // and then restarted. if (m_fLooping) m_fActive = true; } } else { if ( ( flags == SND_STOP ) && ( m_nSoundSourceEntIndex != -1 ) ) { UTIL_EmitAmbientSound(m_nSoundSourceEntIndex, GetAbsOrigin(), szSoundFile, 0, SNDLVL_NONE, flags, 0); m_fActive = false; } }
This moves the job of setting m_fActive to the very top of the chain, denying any ambient_generic function wriggle room to escape it! This opens up the use of the volume and pitch inputs, and allows you to safely start a sound with a map.