Ambient generic: stop and toggle fix: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
GamerDude27 (talk | contribs) mNo edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Insert the code that is highlighted | Insert the code that is highlighted, into the <code>CAmbientGeneric::SendSound( SoundFlags_t flags)</code>, located in '''src\game\server\sound.cpp''' (line 878) to overcome the Sound bug: | ||
<source lang=cpp highlight=7,14-19,29> | |||
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; | |||
} | |||
} | |||
</source> | |||
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. | This moves the job of setting <code>m_fActive</code> 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. | |||
== See also == | == See also == |
Latest revision as of 19:49, 13 September 2020
Insert the code that is highlighted, into the CAmbientGeneric::SendSound( SoundFlags_t flags)
, located in src\game\server\sound.cpp (line 878) to overcome the Sound bug:
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.