Example #1
0
    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);
    }
Example #2
0
    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
                   ));
    }