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