Beispiel #1
0
            public bool UpdateFade(float delta)
            {
                timer += delta;
                float t    = timer * duration;
                bool  done = t >= 1f;

                t             = Mathf.Sin(Mathf.PI * (Mathf.Clamp01(t) - 0.5f)) * 0.5f + 0.5f;
                source.volume = Mathf.LerpUnclamped(volumeFrom, volumeTo, t);
                if (done)
                {
                    switch (fadingStatus)
                    {
                    case eFadingStatus.FadingPause:
                        source.Pause();
                        break;

                    case eFadingStatus.FadingStop:
                        onAudioFinished(this, true);
                        break;
                    }
                    fadingStatus = eFadingStatus.None;
                    return(true);
                }
                return(false);
            }
Beispiel #2
0
 public void Resume(bool fade)
 {
     source.UnPause();
     if (fade)
     {
         fadingStatus = eFadingStatus.Fading;
         timer        = 0f;
         duration     = 1f / MUSIC_FADE_DURATION;
         volumeFrom   = source.volume;
         volumeTo     = mVolume;
         onBeginFading(this);
     }
     else
     {
         source.volume = mVolume;
     }
     if (source.clip != null)
     {
         if (source.loop)
         {
             if (mCallback != null)
             {
                 mTimerId = Timer.Register(source.clip.length - source.time, mOnLoopAudioTimer);
             }
         }
         else
         {
             mTimerId = Timer.Register(source.clip.length - source.time, mOnAudioFinished);
         }
     }
 }
Beispiel #3
0
 public void FadeOutStop(float fadeout)
 {
     if (fadeout <= 0f)
     {
         onAudioFinished(this, true);
         return;
     }
     fadingStatus = eFadingStatus.FadingStop;
     timer        = 0f;
     duration     = 1f / fadeout;
     volumeFrom   = source.volume;
     volumeTo     = 0f;
     onBeginFading(this);
 }
Beispiel #4
0
            public void Clear()
            {
                AudioClip clip = source.clip;

                if (clip != null)
                {
                    source.clip = null;
                    loader.ReleaseAudio(clip);
                }
                id           = -1;
                mCallback    = null;
                fadingStatus = eFadingStatus.None;
                folder       = null;
                sfx          = null;
            }
Beispiel #5
0
 public void Pause(bool fade)
 {
     if (!fade)
     {
         source.Pause();
         return;
     }
     fadingStatus = eFadingStatus.FadingPause;
     timer        = 0f;
     duration     = 1f / MUSIC_FADE_DURATION;
     volumeFrom   = source.volume;
     volumeTo     = 0f;
     Timer.Unregister(mTimerId);
     onBeginFading(this);
 }
Beispiel #6
0
            private void OnAudioLoaded(AudioClip clip)
            {
                if (!onLoaded(this, clip))
                {
                    loader.ReleaseAudio(clip);
                    return;
                }
#if UNITY_EDITOR
                source.name = clip.name;
#endif
                float delay = mStartTime - Time.unscaledTime;
                source.clip = clip;
                if (delay > 0f)
                {
                    source.PlayDelayed(delay);                    //.Play((ulong)Mathf.RoundToInt(delay * 44100));
                }
                else
                {
                    source.Play();
                    delay = 0f;
                }
                if (source.loop)
                {
                    if (mCallback != null)
                    {
                        mTimerId = Timer.Register(clip.length + delay, mOnLoopAudioTimer);
                    }
                }
                else
                {
                    mTimerId = Timer.Register(clip.length + delay, mOnAudioFinished);
                }
                if (mFadeIn > 0f)
                {
                    source.volume = 0f;
                    fadingStatus  = eFadingStatus.Fading;
                    timer         = -delay;
                    duration      = 1f / mFadeIn;
                    volumeFrom    = 0f;
                    volumeTo      = mVolume;
                    onBeginFading(this);
                }
            }