LibiadaMusic.ScoreModel.ScoreTrack.MergedTracks C# (CSharp) Метод

MergedTracks() приватный Метод

The merged tracks.
private MergedTracks ( List tracks ) : CongenericScoreTrack
tracks List /// The tracks. ///
Результат CongenericScoreTrack
        private CongenericScoreTrack MergedTracks(List<CongenericScoreTrack> tracks)
        {
            // список склеенных дорожек
            var temp = (CongenericScoreTrack)tracks[0].Clone();

            // список склеенных тактов
            var tempList = new List<Measure>(temp.MeasureList);
            for (int i = 1; i < tracks.Count; i++)
            {
                if (tempList.Count != tracks[i].MeasureList.Count)
                {
                    throw new Exception("ScoreTrack: invalid measure count");
                }

                for (int j = 0; j < temp.MeasureList.Count; j++)
                {
                    // склеивание j-тых тактов
                    var tempMeasure = (Measure)tracks[i].MeasureList[j].Clone();
                    tempMeasure.MergeMeasures(tempList[j]);
                    tempList.RemoveAt(j);
                    tempList.Insert(j, tempMeasure);
                }
            }

            return new CongenericScoreTrack(temp.Name, tempList);
        }