public static void SaveToFile(DemoModel demo, string fileName) { var data = new DemoData2.DemoData2(); Save(demo, data); data.ConvertToRelativePath(Path.GetDirectoryName(Path.GetFullPath(fileName))); data.ObjIntoXMLFile(fileName); }
static void Main(string[] args) { if (2 > args.Count()) return; try { var fileName = args[0]; var fileNameNew = args[1]; var dataOld = Serialize.ObjFromXMLFile(fileName, typeof(DemoData)) as DemoData; string oldDir = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.GetDirectoryName(Path.GetFullPath(fileName))); var soundFileName = PathTools.GetFullPath(dataOld.SoundFileName); Directory.SetCurrentDirectory(oldDir); //calculating demo length float length = 100.0f; if (!string.IsNullOrWhiteSpace(soundFileName)) { var sound = DemoTimeSource.FromMediaFile(soundFileName); if (null == sound) { Console.WriteLine("Could not load sound file '" + soundFileName + "'"); return; } length = sound.Length; } var ratios = dataOld.ShaderRatios.Select((item) => new Tuple<float, string>(item.Ratio, item.ShaderPath)); //convert ratios to absolute times var keyframes = ShaderKeyframes.CalculatePosFromRatios(ratios, length); //save to new format DemoData2 data = new DemoData2(); data.SoundFileName = dataOld.SoundFileName; data.Textures = dataOld.Textures.ToList(); var track = new Track(); track.Name = "sum"; data.Tracks.Add(track); foreach (var element in keyframes) { track.ShaderKeyframes.Add(new ShaderKeyframe(element.Item1, element.Item2)); } foreach (var uniformOld in dataOld.Uniforms) { var uniform = new Uniform(uniformOld.UniformName); foreach (var keyframeOld in uniformOld.Keyframes) { uniform.Keyframes.Add(new ShaderForm.DemoData2.Keyframe(keyframeOld.Time, keyframeOld.Value)); } data.Uniforms.Add(uniform); } data.ObjIntoXMLFile(fileNameNew); } catch (Exception e) { Console.WriteLine("Error exception '" + e.Message + "'"); } }