58 lines
2 KiB
C#
58 lines
2 KiB
C#
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<TapeTrack>();
|
|
|
|
//We add the move tracks
|
|
for (int i = 0; i < playerCount; i++)
|
|
{
|
|
var trackName = $"Moves{i + 1}";
|
|
var track = tape.GetOrCreateTrack<MoveTrack>(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<MoveTrack>(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<PictoTrack>("Pictos");
|
|
tracksToHave.Add(track);
|
|
}
|
|
//We add the gold effects track
|
|
{
|
|
var track = tape.GetOrCreateTrack<GoldEffectTrack>(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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|