Esempio n. 1
0
 public LineLayer()
 {
     InitializeComponent();
     NoteRelations = new NoteRelationCollection();
 }
Esempio n. 2
0
        private static void ProcessNoteRelations(Note root, IDictionary <int, bool> noteProcessed, IDictionary <int, ScoreNote> map, NoteRelationCollection relations)
        {
            var waitingList = new Queue <Note>();

            waitingList.Enqueue(root);
            while (waitingList.Count > 0)
            {
                var note = waitingList.Dequeue();
                if (noteProcessed[note.ID])
                {
                    continue;
                }
                noteProcessed[note.ID] = true;

                if (note.HasPrevSync)
                {
                    if (!relations.ContainsPair(map[note.ID], map[note.PrevSyncTarget.ID]))
                    {
                        relations.Add(map[note.ID], map[note.PrevSyncTarget.ID], NoteRelation.Sync);
                        waitingList.Enqueue(note.PrevSyncTarget);
                    }
                }
                if (note.HasNextSync)
                {
                    if (!relations.ContainsPair(map[note.ID], map[note.NextSyncTarget.ID]))
                    {
                        relations.Add(map[note.ID], map[note.NextSyncTarget.ID], NoteRelation.Sync);
                        waitingList.Enqueue(note.NextSyncTarget);
                    }
                }
                if (note.HasNextFlickOrSlide)
                {
                    if (!relations.ContainsPair(map[note.ID], map[note.NextFlickOrSlideNote.ID]))
                    {
                        relations.Add(map[note.ID], map[note.NextFlickOrSlideNote.ID], NoteRelation.FlickOrSlide);
                        waitingList.Enqueue(note.NextFlickOrSlideNote);
                    }
                }
                if (note.HasPrevFlickOrSlide)
                {
                    if (!relations.ContainsPair(map[note.ID], map[note.PrevFlickOrSlideNote.ID]))
                    {
                        relations.Add(map[note.ID], map[note.PrevFlickOrSlideNote.ID], NoteRelation.FlickOrSlide);
                        waitingList.Enqueue(note.PrevFlickOrSlideNote);
                    }
                }
                if (note.IsHoldStart)
                {
                    if (!relations.ContainsPair(map[note.ID], map[note.HoldTarget.ID]))
                    {
                        relations.Add(map[note.ID], map[note.HoldTarget.ID], NoteRelation.Hold);
                        waitingList.Enqueue(note.HoldTarget);
                    }
                }
            }
        }