- // This is a 'new' sound if thread_clone not set.
- if( !src->thread_clone || src->flags & SFX_FLAG_ONESHOT )
- {
- src->thread_clone = sfx_alloc();
- if( !src->thread_clone )
- break;
- }
- else
- {
- // Modifying an active system spawns a small fadeout ghost system
- sfx_system *ghost_system = sfx_alloc();
-
- if( !ghost_system )
- break;
-
- ghost_system->source = src->source;
- ghost_system->ch = src->ch;
- ghost_system->end = src->end;
- ghost_system->cur = src->cur_lagged;
- ghost_system->flags = SFX_FLAG_GHOST;
- ghost_system->fadeout = FADEOUT_LENGTH;
- ghost_system->fadeout_current = FADEOUT_LENGTH;
- ghost_system->vol_src = src->vol_src;
- ghost_system->name = src->name;
- ghost_system->thread_clone = src;
- }
-
- clone = src->thread_clone;