using System; using System.Collections.Generic; using UnityEngine.Audio; using UnityEngine.Playables; namespace UnityEngine.Timeline { // Token: 0x0200002C RID: 44 [TrackClipType(typeof(AudioPlayableAsset))] [TrackClipType(typeof(AudioClip))] [TrackMediaType(TimelineAsset.MediaType.Audio)] [Serializable] public class AudioTrack : TrackAsset { // Token: 0x0600019C RID: 412 RVA: 0x00008130 File Offset: 0x00006330 public TimelineClip CreateClip(AudioClip clip) { TimelineClip timelineClip; if (clip == null) { timelineClip = null; } else { TimelineClip timelineClip2 = base.CreateDefaultClip(); AudioPlayableAsset audioPlayableAsset = timelineClip2.asset as AudioPlayableAsset; if (audioPlayableAsset != null) { audioPlayableAsset.clip = clip; } timelineClip2.underlyingAsset = clip; timelineClip2.duration = (double)clip.length; timelineClip2.displayName = clip.name; timelineClip = timelineClip2; } return timelineClip; } // Token: 0x0600019D RID: 413 RVA: 0x000081A0 File Offset: 0x000063A0 internal override Playable OnCreatePlayableGraph(PlayableGraph graph, GameObject go, IntervalTree tree) { AudioMixerPlayable audioMixerPlayable = AudioMixerPlayable.Create(graph, base.clips.Length, false); for (int i = 0; i < base.clips.Length; i++) { TimelineClip timelineClip = base.clips[i]; PlayableAsset playableAsset = timelineClip.asset as PlayableAsset; if (!(playableAsset == null)) { float num = 0.1f; AudioPlayableAsset audioPlayableAsset = timelineClip.asset as AudioPlayableAsset; if (audioPlayableAsset != null) { num = audioPlayableAsset.bufferingTime; } Playable playable = playableAsset.CreatePlayable(graph, go); tree.Add(new ScheduleRuntimeClip(timelineClip, playable, audioMixerPlayable, (double)num, 0.1)); graph.Connect(playable, 0, audioMixerPlayable, i); playable.SetSpeed(timelineClip.timeScale); playable.SetDuration(timelineClip.extrapolatedDuration); audioMixerPlayable.SetInputWeight(playable, 1f); } } return audioMixerPlayable; } // Token: 0x0600019E RID: 414 RVA: 0x00008298 File Offset: 0x00006498 internal override void OnCreateClipFromAsset(Object asset, TimelineClip newClip) { if (asset is AudioClip) { AudioPlayableAsset audioPlayableAsset = ScriptableObject.CreateInstance(); audioPlayableAsset.clip = asset as AudioClip; newClip.asset = audioPlayableAsset; newClip.underlyingAsset = asset; newClip.duration = audioPlayableAsset.duration; newClip.displayName = (asset as AudioClip).name; } } // Token: 0x17000086 RID: 134 // (get) Token: 0x0600019F RID: 415 RVA: 0x000082F4 File Offset: 0x000064F4 public override IEnumerable outputs { get { yield return new PlayableBinding { sourceObject = this, streamName = base.name, streamType = DataStreamType.Audio, sourceBindingType = typeof(AudioSource) }; yield break; } } } }