Пример #1
0
 private void FillToEnd(BeatTimesList list)
 {
     for (; nextBeatIndex < onePassBeats.Length; ++nextBeatIndex)
     {
         list.Add(onePassBeats[nextBeatIndex].Offset(Offset));
     }
     nextBeatIndex = 0;
     ++currentLoops;
 }
Пример #2
0
 public void FillBeatsUntil(float t, BeatTimesList list)
 {
     if (t > repeatLength * (currentLoops + 1))
     {
         FillToEnd(list);
     }
     t -= Offset;
     for (; nextBeatIndex < onePassBeats.Length && onePassBeats[nextBeatIndex].T <= t; ++nextBeatIndex)
     {
         list.Add(onePassBeats[nextBeatIndex].Offset(Offset));
     }
 }
 public void AddPlayed(TimedBeatId beat, IMatchResultsCollector results)
 {
     if (!patternBeats.Beats.IsEmpty)
     {
         var diff = beat.T - patternBeats.Beats.Next.T;
         if (Math.Abs(diff) <= settings.MaxMatchingTime)
         {
             var match = new BeatsMatch(patternBeats.Beats.RemoveNext(), beat, Accuracy(diff));
             results.Match(match);
             return;
         }
     }
     playedBeats.Add(beat);
 }