public static string ExportTimeline(TimelineAsset timeline, bool prettyPrint = false) { List <TrackAsset> tracks = new List <TrackAsset>(timeline.GetOutputTracks()); SequenceCollection sequenceCollection = new SequenceCollection(); foreach (TrackAsset track in tracks) { if (track is CrazyflieTrack) { CrazyflieTrack crazyflieTrack = track as CrazyflieTrack; SequenceTrack sequenceTrack = new SequenceTrack(); IEnumerable <IMarker> markers = crazyflieTrack.GetMarkers(); Tuple <List <ColorKeyframe>, List <Waypoint> > processedKeyframes = ProcessKeyframes(sequenceTrack, markers); List <ColorKeyframe> sortedColorKeyframes = processedKeyframes.Item1; List <Waypoint> sortedWaypoints = processedKeyframes.Item2; sequenceTrack.LedTimings = ColorExporter.Process(sortedColorKeyframes); sequenceTrack.CompressedTrajectory = TrajectoryExporter.Process(sortedWaypoints); sequenceTrack.StartPosition = GetStart(sortedWaypoints); sequenceTrack.StartColor = GetStart(sortedColorKeyframes); sequenceTrack.Name = crazyflieTrack.name; sequenceCollection.Tracks.Add(sequenceTrack); } } sequenceCollection.Length = (float)timeline.duration; sequenceCollection.DroneCount = sequenceCollection.Tracks.Count; string jsonText = JsonUtility.ToJson(sequenceCollection, prettyPrint); return(jsonText); }
private static Color GetStart(List <ColorKeyframe> keyframes) { if (keyframes.Count == 0) { return(Color.black); } Color firstColor = keyframes[0].LightColor; return(new Color( ColorExporter.ToByte(firstColor.r), ColorExporter.ToByte(firstColor.g), ColorExporter.ToByte(firstColor.b), 0 )); }