public SoundEffectInstance GetNextFreeInstance(SoundID soundID, int maxInstances) { var list = instances[soundID]; foreach (var instance in list) { if (instance.State == SoundState.Playing) { maxInstances--; } if (maxInstances <= 0) { return(null); } if (instance.State == SoundState.Stopped) { return(instance); } } var newInstance = SoundBank.GetMappedKey(soundID).CreateInstance(); list.Add(newInstance); return(newInstance); }
public override void LoadSound(SoundID sound) { if (instances.ContainsKey(sound)) { return; } var soundContent = soundLoader.LoadContent(sound); SoundBank.SetMapping(sound, soundContent); instances.Add(sound, new List <SoundEffectInstance>()); }
public abstract void LoadSound(SoundID sound);
public SoundEffect(string name, float volume, int maxSoundsAtOnce) { ID = new SoundID(name); Volume = volume; MaxSoundsAtOnce = maxSoundsAtOnce; }