示例#1
0
        public void Update(GameTime gameTime)
        {
            if (NextSong != null)
            {
                _transition = Mathf.Clamp01(_transition - gameTime.GetDeltaTime());
            }

            if (_transition == 0f)
            {
                _transition = 1f;
                PlayingSong = NextSong;
                NextSong    = null;
                MediaPlayer.Play(PlayingSong);
            }

            MediaPlayer.Volume = Rise.Config.MasterVolume * Rise.Config.MusicVolume * _transition;

            var finishInstance = new List <SoundEffectInstance>();

            foreach (var instance in SoundEffectInstances)
            {
                if (instance.State != SoundState.Playing)
                {
                    finishInstance.Add(instance);
                }

                instance.Volume = Rise.Config.MasterVolume * Rise.Config.EffectVolume;
            }

            finishInstance.ForEach(i => SoundEffectInstances.Remove(i));
        }
示例#2
0
        public void Play(SoundEffect soundEffect, bool RandomPitch = false)
        {
            var instance = soundEffect.CreateInstance();

            if (RandomPitch)
            {
                instance.Pitch = Rise.Rnd.NextFloatRange(0.5f) - 0.25f;
            }
            instance.Volume = Rise.Config.MasterVolume * Rise.Config.EffectVolume;
            SoundEffectInstances.Add(instance);
            instance.Play();
        }