void StopSoundByHandle( int entindex, const char *soundname, HSOUNDSCRIPTHANDLE& handle ) { if ( handle == SOUNDEMITTER_INVALID_HANDLE ) { handle = (HSOUNDSCRIPTHANDLE)soundemitterbase->GetSoundIndex( soundname ); } if ( handle == SOUNDEMITTER_INVALID_HANDLE ) return; CSoundParametersInternal *params; params = soundemitterbase->InternalGetParametersForSound( (int)handle ); if ( !params ) { return; } // HACK: we have to stop all sounds if there are > 1 in the rndwave section... int c = params->NumSoundNames(); for ( int i = 0; i < c; ++i ) { char const *wavename = soundemitterbase->GetWaveName( params->GetSoundNames()[ i ].symbol ); Assert( wavename ); enginesound->StopSound( entindex, params->GetChannel(), wavename ); TraceEmitSound( "StopSound: '%s' stopped as '%s' (ent %i)\n", soundname, wavename, entindex ); } }