void Start() { sequence = gameObject.AddComponent <AudioSequence>(); sequence.Play(introClip, loopClip); AudioSequenceData data = sequence.GetData(loopClip); data.source.loop = true; }
public AudioSequenceData GetData(AudioClip clip) { if (!playMap.ContainsKey(clip)) { AudioSource source = gameObject.AddComponent <AudioSource>(); source.clip = clip; playMap[clip] = new AudioSequenceData(source); } return(playMap[clip]); }
public void Boot() { if (GetComponent <Game>().playMusic) { sequence = gameObject.AddComponent <AudioSequence>(); sequence.Play(introClip, loopClip); AudioSequenceData data = sequence.GetData(loopClip); data.source.loop = true; } }
double GetNextStartTime() { AudioSequenceData lastToPlay = GetLast(); if (lastToPlay != null && lastToPlay.endTime > AudioSettings.dspTime) { return(lastToPlay.endTime); } else { return(AudioSettings.dspTime); } }
AudioSequenceData GetLast() { double highestEndTime = double.MinValue; AudioSequenceData lastData = null; foreach (AudioSequenceData data in playMap.Values) { if (data.isScheduled && data.endTime > highestEndTime) { highestEndTime = data.endTime; lastData = data; } } return(lastData); }
AudioSequenceData GetFirst() { double lowestStartTime = double.MaxValue; AudioSequenceData firstData = null; foreach (AudioSequenceData data in playMap.Values) { if (data.isScheduled && data.startTime < lowestStartTime) { lowestStartTime = data.startTime; firstData = data; } } return(firstData); }
public void Play(params AudioClip[] clips) { if (playMode == PlayMode.Stopped) { playMode = PlayMode.Playing; } else if (playMode == PlayMode.Paused) { UnPause(); } double startTime = GetNextStartTime(); for (int i = 0; i < clips.Length; ++i) { AudioClip clip = clips[i]; AudioSequenceData data = GetData(clip); data.Schedule(startTime); startTime += clip.length; data.source.volume = PlayerOptions.Volume; } }