private void GlControl_DragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string file in files) { //check if texture if (!demo.Textures.AddUpdate(file)) { //check if sound file var sound = DemoTimeSource.FromMediaFile(file); if (!ReferenceEquals(null, sound)) { demo.TimeSource.Load(sound, file); } else { //test if control key was pressed if (8 == (e.KeyState & 8)) { //add stuff AddShader(file); } else { //replace stuff camera.Reset(); demo.Shaders.Clear(); demo.ShaderKeyframes.Clear(); AddShader(file); } } } } }
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 (ReferenceEquals(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 + "'"); } }
public FormMain() { InitializeComponent(); string demoFilter = DefaultFiles.GetDemoExtension() + " (*" + DefaultFiles.GetDemoExtension() + ")|*" + DefaultFiles.GetDemoExtension(); menuSizeSetting.SelectedIndexChanged += (sender, e) => glControl.Invalidate(); multiGraph.ChangedPosition += (pos) => soundPlayerBar1.Position = pos; multiGraph.KeyDown += FormMain_KeyDown; camera.Redraw += (position) => glControl.Invalidate(); cameraWindowToolStripMenuItem.Click += (s, e) => camera.Show(); addCameraUniformsToolStripMenuItem.Click += (s, e) => camera.AddKeyFrames(demo.TimeSource.Position, demo.Uniforms); logToolStripMenuItem.Click += (s, e) => log.Show(); soundPlayerBar1.PositionChanged += (position) => glControl.Invalidate(); soundPlayerBar1.PositionChanged += (position) => multiGraph.UpdatePosition(position); soundPlayerBar1.PositionChanged += (position) => camera.UpdateFromUniforms(demo.Uniforms, position); menuOnTop.CheckedChanged += (s, e) => TopMost = menuOnTop.Checked; menuHelp.Click += (sender, e) => Dialogs.Help(); menuLoad.Click += (sender, e) => Dialogs.OpenFile(demoFilter , (fileName) => LoadDemo(fileName)); menuSound.Click += (sender, e) => Dialogs.OpenFile("sound (*.*)|*.*", (fileName) => demo.TimeSource.Load(DemoTimeSource.FromMediaFile(fileName), fileName)); MenuShaderAdd.Click += (sender, e) => Dialogs.OpenFile("glsl (*.glsl)|*.glsl", (fileName) => AddShader(fileName)); MenuTextureAdd.Click += (sender, e) => Dialogs.OpenFile("texture (*.*)|*.*", (fileName) => demo.Textures.AddUpdate(fileName)); menuSave.Click += (sender, e) => Dialogs.SaveFile(demoFilter, (fileName) => { try { DemoLoader.SaveToFile(demo, fileName); } catch (Exception ex) { log.Append(ex.Message); } }); menuScreenshot.Click += (sender, e) => Dialogs.SaveFile("png (*.png)|*.png", (fileName) => { glControl.Invalidate(); demo.SaveBuffer(fileName); }); KeyDown += (sender, e) => { camera.KeyChange(e.KeyCode, true); }; KeyUp += (sender, e) => { camera.KeyChange(e.KeyCode, false); }; }