예제 #1
0
        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);
        }
예제 #2
0
        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>());
        }
예제 #3
0
 public abstract void LoadSound(SoundID sound);
예제 #4
0
 public SoundEffect(string name, float volume, int maxSoundsAtOnce)
 {
     ID              = new SoundID(name);
     Volume          = volume;
     MaxSoundsAtOnce = maxSoundsAtOnce;
 }