using System; using System.Collections.Generic; using System.Linq; namespace JD.Serialization { public class TrackUtils { public static void SetupTapeTracksFromPlayerCount(Tape tape, int playerCount) { var tracksToHave = new List(); //We add the move tracks for (int i = 0; i < playerCount; i++) { var trackName = $"Moves{i + 1}"; var track = tape.GetOrCreateTrack(trackName); track.MoveType = MotionClip.MoveType_Enum.MoveType_HandOnly; track.CoachId = (MotionClip.CoachId_Enum)i; tracksToHave.Add(track); } //We add the kinect move tracks for (int i = 0; i < playerCount; i++) { var trackName = $"CameraMoves{i + 1}"; var track = tape.GetOrCreateTrack(trackName); track.MoveType = MotionClip.MoveType_Enum.MoveType_FullBody; track.CoachId = (MotionClip.CoachId_Enum)i; tracksToHave.Add(track); } //We add the picto track { var track = tape.GetOrCreateTrack("Pictos"); tracksToHave.Add(track); } //We add the gold effects track { var track = tape.GetOrCreateTrack(GoldEffectTrack.DefaultName); tracksToHave.Add(track); } foreach (var track in tracksToHave) { //We ensure tracks are sorted in correct order tape.Tracks.Move(track.Index, tracksToHave.IndexOf(track)); } var tracksToDelete = tape.Tracks.Where(track => !tracksToHave.Contains(track)).ToList(); if (tracksToDelete.Any()) { foreach (var track in tracksToDelete) { tape.Tracks.Remove(track); } } } } }