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); }
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); }
private void Play(SoundPack.IData data) { Illusion.Game.Utils.Sound.Get(Manager.Sound.Type.SystemSE, data.AssetBundleName, data.AssetName, (string)null)?.Play(); }