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); }
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); } } }
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); }
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; }
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); }
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); } }