void CBackgroundSource::play() { if (_Playing) stop(); CAudioMixerUser *mixer = CAudioMixerUser::instance(); const vector<CBackgroundSound::TSoundInfo> &sounds = _BackgroundSound->getSounds(); vector<CBackgroundSound::TSoundInfo>::const_iterator first(sounds.begin()), last(sounds.end()); for (; first != last; ++first) { TSubSource subSource; subSource.Source = mixer->createSource(first->SoundName, false, 0, 0, _Cluster, 0); if (subSource.Source != NULL) subSource.Source->setPriority(_Priority); subSource.Filter = first->Filter; subSource.Status = SUB_STATUS_STOP; _Sources.push_back(subSource); } updateFilterValues(mixer->getBackgroundSoundManager()->getFilterValues()); CSourceCommon::play(); }