/// <summary>
        /// sets the volume of the selected track to the value passed in parameters
        /// </summary>
        /// <param name="track"></param>
        /// <param name="volume"></param>
        public virtual void SetTrackVolume(MMSoundManager.MMSoundManagerTracks track, float volume)
        {
            if (volume <= 0f)
            {
                volume = MMSoundManagerSettings._minimalVolume;
            }

            switch (track)
            {
            case MMSoundManager.MMSoundManagerTracks.Master:
                TargetAudioMixer.SetFloat(Settings.MasterVolumeParameter, NormalizedToMixerVolume(volume));
                Settings.MasterVolume = volume;
                break;

            case MMSoundManager.MMSoundManagerTracks.Music:
                TargetAudioMixer.SetFloat(Settings.MusicVolumeParameter, NormalizedToMixerVolume(volume));
                Settings.MusicVolume = volume;
                break;

            case MMSoundManager.MMSoundManagerTracks.Sfx:
                TargetAudioMixer.SetFloat(Settings.SfxVolumeParameter, NormalizedToMixerVolume(volume));
                Settings.SfxVolume = volume;
                break;

            case MMSoundManager.MMSoundManagerTracks.UI:
                TargetAudioMixer.SetFloat(Settings.UIVolumeParameter, NormalizedToMixerVolume(volume));
                Settings.UIVolume = volume;
                break;
            }

            if (Settings.AutoSave)
            {
                SaveSoundSettings();
            }
        }
 public MMSoundManagerTrackFadeEvent(MMSoundManager.MMSoundManagerTracks track, float fadeDuration, float finalVolume, MMTweenType fadeTween)
 {
     Track        = track;
     FadeDuration = fadeDuration;
     FinalVolume  = finalVolume;
     FadeTween    = fadeTween;
 }
        /// <summary>
        /// Returns the volume of the specified track
        /// </summary>
        /// <param name="track"></param>
        /// <returns></returns>
        public virtual float GetTrackVolume(MMSoundManager.MMSoundManagerTracks track)
        {
            float volume = 1f;

            switch (track)
            {
            case MMSoundManager.MMSoundManagerTracks.Master:
                TargetAudioMixer.GetFloat(Settings.MasterVolumeParameter, out volume);
                break;

            case MMSoundManager.MMSoundManagerTracks.Music:
                TargetAudioMixer.GetFloat(Settings.MusicVolumeParameter, out volume);
                break;

            case MMSoundManager.MMSoundManagerTracks.Sfx:
                TargetAudioMixer.GetFloat(Settings.SfxVolumeParameter, out volume);
                break;

            case MMSoundManager.MMSoundManagerTracks.UI:
                TargetAudioMixer.GetFloat(Settings.UIVolumeParameter, out volume);
                break;
            }

            return(MixerVolumeToNormalized(volume));
        }
Example #4
0
 public static void Trigger(MMSoundManagerTrackEventTypes trackEventType, MMSoundManager.MMSoundManagerTracks track = MMSoundManager.MMSoundManagerTracks.Master, float volume = 1f)
 {
     e.TrackEventType = trackEventType;
     e.Track          = track;
     e.Volume         = volume;
     MMEventManager.TriggerEvent(e);
 }
 public static void Trigger(MMSoundManager.MMSoundManagerTracks track, float fadeDuration, float finalVolume, MMTweenType fadeTween)
 {
     e.Track        = track;
     e.FadeDuration = fadeDuration;
     e.FinalVolume  = finalVolume;
     e.FadeTween    = fadeTween;
     MMEventManager.TriggerEvent(e);
 }
 /// <summary>
 /// Draws a button
 /// </summary>
 /// <param name="buttonLabel"></param>
 /// <param name="buttonColor"></param>
 /// <param name="track"></param>
 /// <param name="action"></param>
 /// <param name="styles"></param>
 public virtual void DrawColoredButton(string buttonLabel, Color buttonColor, MMSoundManager.MMSoundManagerTracks track, System.Action <MMSoundManager.MMSoundManagerTracks> action, GUIStyle styles)
 {
     _originalBackgroundColor = GUI.backgroundColor;
     GUI.backgroundColor      = buttonColor;
     if (GUILayout.Button(buttonLabel, styles))
     {
         action.Invoke(track);
     }
     GUI.backgroundColor = _originalBackgroundColor;
 }
Example #7
0
        static public AudioSource Trigger(AudioClip audioClip, MMSoundManager.MMSoundManagerTracks mmSoundManagerTrack, Vector3 location,
                                          bool loop       = false, float volume            = 1.0f, int ID = 0,
                                          bool fade       = false, float fadeInitialVolume = 0f, float fadeDuration = 1f, MMTweenType fadeTween = null,
                                          bool persistent = false,
                                          AudioSource recycleAudioSource = null, AudioMixerGroup audioGroup = null,
                                          float pitch          = 1f, float panStereo = 0f, float spatialBlend = 0.0f,
                                          bool soloSingleTrack = false, bool soloAllTracks         = false, bool autoUnSoloOnEnd   = false,
                                          bool bypassEffects   = false, bool bypassListenerEffects = false, bool bypassReverbZones = false, int priority            = 128, float reverbZoneMix = 1f,
                                          float dopplerLevel   = 1f, int spread = 0, AudioRolloffMode rolloffMode = AudioRolloffMode.Logarithmic, float minDistance = 1f, float maxDistance    = 500f)
        {
            MMSoundManagerPlayOptions options = MMSoundManagerPlayOptions.Default;

            options.MmSoundManagerTrack = mmSoundManagerTrack;
            options.Location            = location;
            options.Loop                  = loop;
            options.Volume                = volume;
            options.ID                    = ID;
            options.Fade                  = fade;
            options.FadeInitialVolume     = fadeInitialVolume;
            options.FadeDuration          = fadeDuration;
            options.FadeTween             = fadeTween;
            options.Persistent            = persistent;
            options.RecycleAudioSource    = recycleAudioSource;
            options.AudioGroup            = audioGroup;
            options.Pitch                 = pitch;
            options.PanStereo             = panStereo;
            options.SpatialBlend          = spatialBlend;
            options.SoloSingleTrack       = soloSingleTrack;
            options.SoloAllTracks         = soloAllTracks;
            options.AutoUnSoloOnEnd       = autoUnSoloOnEnd;
            options.BypassEffects         = bypassEffects;
            options.BypassListenerEffects = bypassListenerEffects;
            options.BypassReverbZones     = bypassReverbZones;
            options.Priority              = priority;
            options.ReverbZoneMix         = reverbZoneMix;
            options.DopplerLevel          = dopplerLevel;
            options.Spread                = spread;
            options.RolloffMode           = rolloffMode;
            options.MinDistance           = minDistance;
            options.MaxDistance           = maxDistance;

            return(OnEvent?.Invoke(audioClip, options));
        }
        /// <summary>
        /// Draws track controls for the specified track
        /// </summary>
        /// <param name="title"></param>
        /// <param name="mute"></param>
        /// <param name="track"></param>
        /// <param name="muteColor"></param>
        /// <param name="unmuteColor"></param>
        /// <param name="pauseColor"></param>
        /// <param name="stopColor"></param>
        /// <param name="playColor"></param>
        /// <param name="freeColor"></param>
        protected virtual void DrawTrack(string title, bool mute, MMSoundManager.MMSoundManagerTracks track, Color muteColor, Color unmuteColor, Color pauseColor, Color stopColor, Color playColor, Color freeColor)
        {
            GUILayout.Space(10);
            GUILayout.Label(title, EditorStyles.boldLabel);

            EditorGUI.BeginDisabledGroup(!Application.isPlaying);

            // we draw the volume slider
            EditorGUILayout.BeginHorizontal();

            GUILayout.Label("Volume");

            float newVolume = 0;

            switch (track)
            {
            case MMSoundManager.MMSoundManagerTracks.Master:
                newVolume = EditorGUILayout.Slider(_masterVolume, MMSoundManagerSettings._minimalVolume, MMSoundManagerSettings._maxVolume);
                if (newVolume != _masterVolume)
                {
                    MMSoundManager.Instance.settingsSo.SetTrackVolume(MMSoundManager.MMSoundManagerTracks.Master, newVolume);
                }
                break;

            case MMSoundManager.MMSoundManagerTracks.Music:
                newVolume = EditorGUILayout.Slider(_musicVolume, MMSoundManagerSettings._minimalVolume, MMSoundManagerSettings._maxVolume);
                if (newVolume != _musicVolume)
                {
                    MMSoundManager.Instance.settingsSo.SetTrackVolume(MMSoundManager.MMSoundManagerTracks.Music, newVolume);
                }
                break;

            case MMSoundManager.MMSoundManagerTracks.Sfx:
                newVolume = EditorGUILayout.Slider(_sfxVolume, MMSoundManagerSettings._minimalVolume, MMSoundManagerSettings._maxVolume);
                if (newVolume != _sfxVolume)
                {
                    MMSoundManager.Instance.settingsSo.SetTrackVolume(MMSoundManager.MMSoundManagerTracks.Sfx, newVolume);
                }
                break;

            case MMSoundManager.MMSoundManagerTracks.UI:
                newVolume = EditorGUILayout.Slider(_uiVolume, MMSoundManagerSettings._minimalVolume, MMSoundManagerSettings._maxVolume);
                if (newVolume != _uiVolume)
                {
                    MMSoundManager.Instance.settingsSo.SetTrackVolume(MMSoundManager.MMSoundManagerTracks.UI, newVolume);
                }
                break;
            }
            EditorGUILayout.EndHorizontal();

            // we draw the buttons
            EditorGUILayout.BeginHorizontal();
            {
                if (mute)
                {
                    DrawColoredButton("Mute", muteColor, track, _mmSoundManager.MuteTrack, EditorStyles.miniButtonLeft);
                }
                else
                {
                    DrawColoredButton("Unmute", unmuteColor, track, _mmSoundManager.UnmuteTrack, EditorStyles.miniButtonMid);
                }
                DrawColoredButton("Pause", pauseColor, track, _mmSoundManager.PauseTrack, EditorStyles.miniButtonMid);
                DrawColoredButton("Stop", stopColor, track, _mmSoundManager.StopTrack, EditorStyles.miniButtonMid);
                DrawColoredButton("Play", playColor, track, _mmSoundManager.PlayTrack, EditorStyles.miniButtonMid);
                DrawColoredButton("Free", freeColor, track, _mmSoundManager.FreeTrack, EditorStyles.miniButtonRight);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUI.EndDisabledGroup();
        }
Example #9
0
 public MMSoundManagerTrackEvent(MMSoundManagerTrackEventTypes trackEventType, MMSoundManager.MMSoundManagerTracks track = MMSoundManager.MMSoundManagerTracks.Master, float volume = 1f)
 {
     TrackEventType = trackEventType;
     Track          = track;
     Volume         = volume;
 }