Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }