// Author: Daniele Giardini - http://www.demigiant.com // Created: 2018/07/13 #if true // MODULE_MARKER using System; using UnityEngine; #if UNITY_5 || UNITY_2017_1_OR_NEWER using UnityEngine.Audio; // Required for AudioMixer #endif #pragma warning disable 1591 namespace DG.Tweening { public static class DOTweenModuleAudio { #region Shortcuts #region Audio /// Tweens an AudioSource's volume to the given value. /// Also stores the AudioSource as the tween's target so it can be used for filtered operations /// The end value to reach (0 to 1)The duration of the tween public static Tweener DOFade(this AudioSource target, float endValue, float duration) { if (endValue < 0) endValue = 0; else if (endValue > 1) endValue = 1; return DOTween.To(() => target.volume, x => target.volume = x, endValue, duration).SetTarget(target); } /// Tweens an AudioSource's pitch to the given value. /// Also stores the AudioSource as the tween's target so it can be used for filtered operations /// The end value to reachThe duration of the tween public static Tweener DOPitch(this AudioSource target, float endValue, float duration) { return DOTween.To(() => target.pitch, x => target.pitch = x, endValue, duration).SetTarget(target); } #endregion #if UNITY_5 || UNITY_2017_1_OR_NEWER #region AudioMixer (Unity 5 or Newer) /// Tweens an AudioMixer's exposed float to the given value. /// Also stores the AudioMixer as the tween's target so it can be used for filtered operations. /// Note that you need to manually expose a float in an AudioMixerGroup in order to be able to tween it from an AudioMixer. /// Name given to the exposed float to set /// The end value to reachThe duration of the tween public static Tweener DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration) { return DOTween.To(()=> { float currVal; target.GetFloat(floatName, out currVal); return currVal; }, x=> target.SetFloat(floatName, x), endValue, duration) .SetTarget(target); } #region Operation Shortcuts /// /// Completes all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens completed /// (meaning the tweens that don't have infinite loops and were not already complete) /// /// For Sequences only: if TRUE also internal Sequence callbacks will be fired, /// otherwise they will be ignored public static int DOComplete(this AudioMixer target, bool withCallbacks = false) { return DOTween.Complete(target, withCallbacks); } /// /// Kills all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens killed. /// /// If TRUE completes the tween before killing it public static int DOKill(this AudioMixer target, bool complete = false) { return DOTween.Kill(target, complete); } /// /// Flips the direction (backwards if it was going forward or viceversa) of all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens flipped. /// public static int DOFlip(this AudioMixer target) { return DOTween.Flip(target); } /// /// Sends to the given position all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens involved. /// /// Time position to reach /// (if higher than the whole tween duration the tween will simply reach its end) /// If TRUE will play the tween after reaching the given position, otherwise it will pause it public static int DOGoto(this AudioMixer target, float to, bool andPlay = false) { return DOTween.Goto(target, to, andPlay); } /// /// Pauses all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens paused. /// public static int DOPause(this AudioMixer target) { return DOTween.Pause(target); } /// /// Plays all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens played. /// public static int DOPlay(this AudioMixer target) { return DOTween.Play(target); } /// /// Plays backwards all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens played. /// public static int DOPlayBackwards(this AudioMixer target) { return DOTween.PlayBackwards(target); } /// /// Plays forward all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens played. /// public static int DOPlayForward(this AudioMixer target) { return DOTween.PlayForward(target); } /// /// Restarts all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens restarted. /// public static int DORestart(this AudioMixer target) { return DOTween.Restart(target); } /// /// Rewinds all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens rewinded. /// public static int DORewind(this AudioMixer target) { return DOTween.Rewind(target); } /// /// Smoothly rewinds all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens rewinded. /// public static int DOSmoothRewind(this AudioMixer target) { return DOTween.SmoothRewind(target); } /// /// Toggles the paused state (plays if it was paused, pauses if it was playing) of all tweens that have this target as a reference /// (meaning tweens that were started from this target, or that had this target added as an Id) /// and returns the total number of tweens involved. /// public static int DOTogglePause(this AudioMixer target) { return DOTween.TogglePause(target); } #endregion #endregion #endif #endregion } } #endif