static SerializableAnimation ProcessAnimation(AnimationContent xnaAnimation) { SerializableAnimation animation = new SerializableAnimation(); animation.name = xnaAnimation.Name; animation.length = (float)xnaAnimation.Duration.TotalSeconds; foreach (KeyValuePair <string, AnimationChannel> xnaAnimationChannelPair in xnaAnimation.Channels) { AnimationChannel xnaAnimationChannel = xnaAnimationChannelPair.Value; string xnaAnimationChannelName = xnaAnimationChannelPair.Key; SerializableTrack track = new SerializableTrack(); track.name = xnaAnimationChannelName; animation.tracks.Add(track); for (int i = 0; i < xnaAnimationChannel.Count; i++) { AnimationKeyframe xnaKeyframe = xnaAnimationChannel[i]; SerializableKeyFrame keyframe = new SerializableKeyFrame((float)xnaKeyframe.Time.TotalSeconds, xnaKeyframe.Transform); track.AddKeyFrame(keyframe); } } return(animation); }
public static void StoreResult(ITrack track, IVehicleModel vehicle, ISummary summary, string imageFilePath, string fileName) { var serializableSummary = new SerialzableSimulationResult { SimulationTime = summary.SimulationTime.TotalSeconds, Result = summary.Result, Log = summary.Log.Select(SerializableEventFactory.From), Track = SerializableTrack.From(track.TileSize, track.Circuit, track.OccupancyGrid), VehicleModel = vehicle, TrackImageFilePath = imageFilePath }; var json = JsonConvert.SerializeObject(serializableSummary, CustomJsonSerializationSettings.Default); File.WriteAllText(fileName, json); }
public static void Save(string path, ICircuit circuit, string svg, double tileSize) { Directory.CreateDirectory(path); // svg var svgFileName = $"{path}/visualization.svg"; File.WriteAllText(svgFileName, svg); // png var pngFileName = $"{path}/rasterized_visualization.png"; Images.Convert(svgFileName, pngFileName); // occupancy grid var occupancyGrid = Images.LoadOccupancyGrid(pngFileName, tileSize); // json var track = SerializableTrack.From(tileSize, circuit, occupancyGrid); var jsonFileName = $"{path}/circuit_definition.json"; var json = JsonConvert.SerializeObject(track, CustomJsonSerializationSettings.Default); File.WriteAllText(jsonFileName, json); }