Exemplo n.º 1
0
        private AudioClip Load(SoundPack.IData data)
        {
            if (data.AssetBundleName.IsNullOrEmpty() || data.AssetName.IsNullOrEmpty())
            {
                if (Debug.get_isDebugBuild())
                {
                    Debug.LogWarning((object)string.Format("SoundPack:Load BundleName[{0}] AssetName[{1}] に未記入があります", (object)(data.AssetBundleName ?? string.Empty), (object)(data.AssetName ?? string.Empty)));
                }
                return((AudioClip)null);
            }
            Dictionary <string, AudioClip> dictionary1;

            if (!SoundPack._audioClipTable.TryGetValue(data.AssetBundleName, out dictionary1))
            {
                Dictionary <string, AudioClip> dictionary2 = new Dictionary <string, AudioClip>();
                SoundPack._audioClipTable[data.AssetBundleName] = dictionary2;
                dictionary1 = dictionary2;
            }
            AudioClip audioClip1;

            if (!dictionary1.TryGetValue(data.AssetName, out audioClip1) || Object.op_Equality((Object)audioClip1, (Object)null))
            {
                AudioClip audioClip2 = CommonLib.LoadAsset <AudioClip>(data.AssetBundleName, data.AssetName, false, string.Empty);
                dictionary1[data.AssetName] = audioClip2;
                audioClip1 = audioClip2;
            }
            return(audioClip1);
        }
Exemplo n.º 2
0
        public AudioSource Play(SoundPack.IData data, Manager.Sound.Type type, float fadeTime = 0.0f)
        {
            AudioClip clip = this.Load(data);

            if (Object.op_Equality((Object)clip, (Object)null))
            {
                return((AudioSource)null);
            }
            AudioSource audio = Illusion.Game.Utils.Sound.Play(type, clip, fadeTime);

            if (type == Manager.Sound.Type.GameSE3D && Object.op_Inequality((Object)audio, (Object)null))
            {
                this.PlayingAudioList.RemoveAll((Predicate <AudioSource>)(x => Object.op_Equality((Object)x, (Object)null) || Object.op_Equality((Object)((Component)x).get_gameObject(), (Object)null)));
                if (this._soundSystemInfo.Game3DMaxCount <= this.PlayingAudioList.Count)
                {
                    int                num             = this.PlayingAudioList.Count - this._soundSystemInfo.Game3DMaxCount + 1;
                    Transform          cameraT         = ((Component)Singleton <Manager.Map> .Instance.Player.CameraControl.CameraComponent).get_transform();
                    List <AudioSource> audioSourceList = ListPool <AudioSource> .Get();

                    audioSourceList.AddRange((IEnumerable <AudioSource>) this.PlayingAudioList);
                    audioSourceList.Sort((Comparison <AudioSource>)((a1, a2) => this.GetSqrDistanceSort(cameraT, ((Component)a2).get_transform(), ((Component)a1).get_transform())));
                    for (int index = 0; index < num; ++index)
                    {
                        AudioSource element = audioSourceList.GetElement <AudioSource>(index);
                        this.PlayingAudioList.Remove(element);
                        Object.Destroy((Object)((Component)element).get_gameObject());
                    }
                    ListPool <AudioSource> .Release(audioSourceList);
                }
                ObservableExtensions.Subscribe <Unit>((IObservable <M0>)ObservableTriggerExtensions.OnDestroyAsObservable((Component)audio), (System.Action <M0>)(_ =>
                {
                    if (!Object.op_Inequality((Object)audio, (Object)null))
                    {
                        return;
                    }
                    this.PlayingAudioList.Remove(audio);
                }));
                this.PlayingAudioList.Add(audio);
            }
            if (data is SoundPack.Data3D data3D)
            {
                audio.set_minDistance(data3D.MinDistance);
                audio.set_maxDistance(data3D.MaxDistance);
            }
            return(audio);
        }
Exemplo n.º 3
0
 private void Play(SoundPack.IData data)
 {
     Illusion.Game.Utils.Sound.Get(Manager.Sound.Type.SystemSE, data.AssetBundleName, data.AssetName, (string)null)?.Play();
 }