public double AddTrack(AudioTracks.Tracks track) { if (this._usedTracks.ContainsKey(track)) { return(0); } var source = GetAudioSource(); this._usedTracks.Add(track, source); var audio = this._tracks.Clips[track]; source.clip = audio.Clip; source.volume = audio.Volume; source.loop = true; source.transform.parent = null; source.spatialBlend = 0; var bars = 4 - (this._bar + 1); var delay = GetTimeUntilBeat(1, false, BeatType.Full); var totalDelay = bars * this.TimeBetweenEvents * (double)BeatType.Full + delay; var schedule = AudioSettings.dspTime + totalDelay; source.PlayScheduled(schedule); FreeAudioSource(source, double.MaxValue); return(totalDelay); }
public double RemoveTrack(AudioTracks.Tracks track) { if (!this._usedTracks.ContainsKey(track)) { return(0); } var source = this._usedTracks[track]; var next = GetTimeUntilBeat(1, false, BeatType.Full); FreeAudioSource(source, next + AudioSettings.dspTime); this._usedTracks.Remove(track); return(next); }