Ejemplo n.º 1
0
        private void stopBGMPlayed(AudioSource audio, ClipDetail clipDetail, AudioLoopCallbacks callback, bool immediatly)
        {
            if (!audio)
            {
                return;
            }

            if (immediatly)
            {
                audio.volume = 0;
                audio.Stop();
                audio.clip = null;
                callback?.Unsubscribe();
            }
            else
            {
                DOVirtual.Float(1, 0, timeFade, (x) =>
                {
                    audio.volume = globalBGMVolume * clipDetail.localVolume * x;
                }).OnComplete(() =>
                {
                    audio.volume = 0;
                    audio.Stop();
                    audio.clip = null;
                    callback?.Unsubscribe();
                });
            }
        }
Ejemplo n.º 2
0
        private void playBGMDefaultAdvance(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end)
        {
            var                audioSourceData = audioSources.GetAudio(audioSource);
            AudioSource        audio           = audioSourceData.audio;
            AudioLoopCallbacks callback        = audioSourceData.callback;

            ClipDetail clipDetail = audioLibrary.GetBGMClip(musicName);

            if (!audio)
            {
                var source = setNewAudioSource(audioSource, true);
                audio    = source.audio;
                callback = source.callback;
            }

            if (audio.isPlaying)
            {
                stopBGMPlayed(audio, clipDetail, callback, true);
            }

            audio.loop   = true;
            audio.clip   = clipDetail.clip;
            audio.volume = globalBGMVolume * clipDetail.localVolume;
            audioLoopFunction.SetAudioSource(ref audio, ref callback);
            audioLoopFunction.PlayLoops(loopType, start, end);
        }
Ejemplo n.º 3
0
        private void playBGMTransitionAdvance(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end)
        {
            var                audioSourceData = audioSources.GetAudio(audioSource);
            AudioSource        audio           = audioSourceData.audio;
            AudioLoopCallbacks callback        = audioSourceData.callback;

            if (!audio)
            {
                var source = setNewAudioSource(audioSource, true);
                audio    = source.audio;
                callback = source.callback;
            }

            if (audio.isPlaying)
            {
                ClipDetail clipDetail = audioLibrary.GetBGMClip(audio.clip);
                DOVirtual.Float(1, 0, timeFade, (x) =>
                {
                    audio.volume = globalBGMVolume * clipDetail.localVolume * x;
                }).OnComplete(() => playBGMInTransitionAdvance(audio, musicName, loopType, start, end));
            }
            else
            {
                playBGMInTransitionAdvance(audio, musicName, loopType, start, end);
            }
        }
Ejemplo n.º 4
0
        private void playBGMDefault(string audioSource, string musicName, bool loop)
        {
            var                audioSourceData = audioSources.GetAudio(audioSource);
            AudioSource        audio           = audioSourceData.audio;
            AudioLoopCallbacks callback        = audioSourceData.callback;

            ClipDetail clipDetail = audioLibrary.GetBGMClip(musicName);

            if (!audio)
            {
                var source = setNewAudioSource(audioSource, false);
                audio    = source.audio;
                callback = source.callback;
            }

            if (audio.isPlaying)
            {
                stopBGMPlayed(audio, clipDetail, callback, true);
            }

            audio.loop   = loop;
            audio.clip   = clipDetail.clip;
            audio.volume = globalBGMVolume * clipDetail.localVolume;
            audio.Play();
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Set the audio source to define where the audio source being affected by this AudioLoop function
 /// </summary>
 /// <param name="source">Is the audio source will be modify to loop the music</param>
 public void SetAudioSource(ref AudioSource source)
 {
     this.source = source;
     if (callbacks == null)
     {
         callbacks = source.transform.gameObject.AddComponent <AudioLoopCallbacks>();
     }
 }
Ejemplo n.º 6
0
        public void SetAudio(string audioSourceName, AudioSource source, AudioLoopCallbacks callback = null)
        {
            if (audioSources == null)
            {
                Init();
            }

            if (!audioSources.Any(e => e.audioSourceName == audioSourceName) && source != null)
            {
                audioSources.Add(new TWAudioSource(audioSourceName, source, callback));
            }
        }
Ejemplo n.º 7
0
        private (AudioSource audio, AudioLoopCallbacks callback) setNewAudioSource(string audioSource, bool usingCallbackFunction)
        {
            GameObject         audioObject = Instantiate(prefab, audioParent.transform);
            AudioSource        audio       = audioObject.GetComponent <AudioSource>();
            AudioLoopCallbacks callback    = audioObject.GetComponent <AudioLoopCallbacks>();

            callback.enabled = usingCallbackFunction;

            audioSources.SetAudio(audioSource, audio, callback);

            return(audio, callback);
        }
Ejemplo n.º 8
0
        private void stopBGMPlayed(string audioSource, bool immediatly)
        {
            var                audioSourceData = audioSources.GetAudio(audioSource);
            AudioSource        audio           = audioSourceData.audio;
            AudioLoopCallbacks callback        = audioSourceData.callback;

            Debug.Log(audio + " " + audioSourceData);

            if (!audio || !audio.isPlaying)
            {
                return;
            }

            if (immediatly)
            {
                audio.volume = 0;
                audio.Stop();
                audio.clip = null;
                callback?.Unsubscribe();
            }
            else
            {
                ClipDetail clipDetail = audioLibrary.GetBGMClip(audio.clip);

                DOVirtual.Float(1f, 0f, timeFade, (x) =>
                {
                    audio.volume = globalBGMVolume * clipDetail.localVolume * x;
                }).OnComplete(() =>
                {
                    audio.volume = 0;
                    audio.Stop();
                    audio.clip = null;
                    callback?.Unsubscribe();
                });
            }
        }
Ejemplo n.º 9
0
 public TWAudioSource(string audioSourceName, AudioSource audio, AudioLoopCallbacks callback)
 {
     this.audioSourceName = audioSourceName;
     this.audio           = audio;
     this.callback        = callback;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Set the audio source to define where the audio source being affected by this AudioLoop function
 /// </summary>
 /// <param name="source">Is the audio source will be modify to loop the music</param>
 public void SetAudioSource(ref AudioSource source, ref AudioLoopCallbacks callbacks)
 {
     this.source       = source;
     this.callbacks    = callbacks;
     callbacks.enabled = true;
 }