Example #1
0
 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);
 }
Example #2
0
        private MyApplication()
        {
            gameWindow.KeyDown += GameWindow_KeyDown;
            gameWindow.RenderFrame += game_RenderFrame;
            visualContext = new VisualContext();
            var textures = new Textures(visualContext);
            var shaders = new Shaders(visualContext, NewShaderFile);
            demo = new DemoModel(visualContext, shaders, textures, false);
            demo.TimeSource.OnTimeFinished += () => gameWindow.Close();

            var arguments = Environment.GetCommandLineArgs();
            if (3 > arguments.Length)
            {
                MessageBox.Show("DemoRecorder <configfile> <saveDirectory> [<resX> <resY> <frameRate>]"
                    + Environment.NewLine
                    + " Please give the demo config file name as application parameter followed by the render buffer resolution.");
                gameWindow.Close();
            }
            bufferWidth = gameWindow.Width;
            bufferHeight = gameWindow.Height;
            try
            {
                bufferWidth = int.Parse(arguments.ElementAt(3));
                bufferHeight = int.Parse(arguments.ElementAt(4));
            }
            catch
            {
                bufferWidth = gameWindow.Width;
                bufferHeight = gameWindow.Height;
            }
            try
            {
                frameRate = int.Parse(arguments.ElementAt(5));
            }
            catch
            {
                frameRate = 25;
            }
            try
            {
                DemoLoader.LoadFromFile(demo, arguments.ElementAt(1));
                saveDirectory = Directory.CreateDirectory(arguments.ElementAt(2)).FullName;
                saveDirectory += Path.DirectorySeparatorChar;
                saveDirectory += DateTime.Now.ToString("yyyyMMdd HHmmss");
                saveDirectory += Path.DirectorySeparatorChar;
                Directory.CreateDirectory(saveDirectory);
                fileNumber = 0;
            }
            catch (Exception e)
            {
                MessageBox.Show("Error loading demo '" + arguments.ElementAt(1) + '"'
                    + Environment.NewLine + e.Message);
                gameWindow.Close();
            }
        }
Example #3
0
 private static bool LoadTextures(IEnumerable<string> textures, DemoModel demo, ErrorEventHandler progressHandler)
 {
     foreach (var tex in textures)
     {
         bool success = demo.Textures.AddUpdate(tex);
         if(null != progressHandler)
         {
             var msg = success ? "Texture file '" + tex + "' loaded" : "Could not load texture file '" + tex + "'";
             var args = new ProgressEventArgs(msg);
             progressHandler(demo, args);
             if (args.Cancel) return false;
         }
     }
     return true;
 }
Example #4
0
        public static void LoadFromFile(DemoModel demo, string fileName, ErrorEventHandler progressHandler = null)
        {
            var data = Serialize.ObjFromXMLFile(fileName, typeof(DemoData2.DemoData2)) as DemoData2.DemoData2;
            data.ConvertToAbsolutePath(Path.GetDirectoryName(Path.GetFullPath(fileName)));
            demo.Clear();
            if (!LoadSound(data.SoundFileName, demo, progressHandler)) return;
            foreach (var track in data.Tracks)
            {
                //todo1: load track.Name;
                foreach (var shaderKeyframe in track.ShaderKeyframes)
                {
                    demo.Shaders.AddUpdateShader(shaderKeyframe.ShaderPath);
                    demo.ShaderKeyframes.AddUpdate(shaderKeyframe.Time, shaderKeyframe.ShaderPath);
                }
            }
            if (!LoadTextures(data.Textures, demo, progressHandler)) return;

            LoadUniforms(data.Uniforms, demo);
        }
Example #5
0
        private MyApplication()
        {
            gameWindow.Load += GameWindow_Load;
            gameWindow.KeyDown += GameWindow_KeyDown;
            gameWindow.RenderFrame += game_RenderFrame;
            visualContext = new VisualContext();
            var textures = new Textures(visualContext);
            var shaders = new Shaders(visualContext, NewShaderFile);
            demo = new DemoModel(visualContext, shaders, textures, false);
            demo.TimeSource.OnTimeFinished += () => gameWindow.Close();

            var arguments = Environment.GetCommandLineArgs();
            if (1 == arguments.Length)
            {
                MessageBox.Show("DemoPlayer <configfile> [<resX> <resY>]"
                    + Environment.NewLine
                    + " Please give the demo config file name you wish to play as application parameter followed by the render buffer resolution.");
                gameWindow.Close();
            }
            bufferWidth = gameWindow.Width;
            bufferHeight = gameWindow.Height;
            try
            {
                bufferWidth = int.Parse(arguments.ElementAt(2));
                bufferHeight = int.Parse(arguments.ElementAt(3));
            }
            catch
            {
                bufferWidth = gameWindow.Width;
                bufferHeight = gameWindow.Height;
            }
            try
            {
                DemoLoader.LoadFromFile(demo, arguments.ElementAt(1));
            }
            catch (Exception e)
            {
                MessageBox.Show("Error loading demo '" + arguments.ElementAt(1) + '"'
                    + Environment.NewLine + e.Message);
                gameWindow.Close();
            }
        }
Example #6
0
 private static bool LoadSound(string soundFileName, DemoModel demo, ErrorEventHandler progressHandler)
 {
     if (!string.IsNullOrWhiteSpace(soundFileName))
     {
         var sound = DemoTimeSource.FromMediaFile(soundFileName);
         if (null == sound && null != progressHandler)
         {
             var args = new ProgressEventArgs("Could not load sound file '" + soundFileName + "'");
             progressHandler(demo, args);
             if (args.Cancel) return false;
         }
         demo.TimeSource.Load(sound);
         if (null != sound && null != progressHandler)
         {
             var args = new ProgressEventArgs("Sound file '" + soundFileName + "' loaded");
             progressHandler(demo, args);
             if (args.Cancel) return false;
         }
     }
     return true;
 }
Example #7
0
 private void GlControl_Load(object sender, EventArgs eArgs)
 {
     try
     {
         demo = DemoModelFactory.Create(this);
         //make for valid time source even if no new demo is loaded afterwards (when starting with shader cmd line argument)
         Demo_OnTimeSourceLoaded(null, EventArgs.Empty);
         demo.OnSetCustomUniforms += Demo_OnSetCustomUniforms;
         demo.TimeSource.OnLoaded += Demo_OnTimeSourceLoaded;
         demo.Uniforms.OnAdd += Uniforms_OnAdd;
         demo.Uniforms.OnRemove += Uniforms_OnRemove;
         demo.Uniforms.OnAdd += multiGraph.Uniforms_OnAdd;
         demo.Uniforms.OnRemove += multiGraph.Uniforms_OnRemove;
         demo.Uniforms.OnChangeKeyframes += multiGraph.Uniforms_OnChange;
         demo.Uniforms.OnChangeKeyframes += (s, a) => camera.UpdateFromUniforms(demo.Uniforms, demo.TimeSource.Position);
         demo.Uniforms.OnChangeKeyframes += (s, a) => glControl.Invalidate();
         demo.Shaders.OnChange += Shaders_OnChange;
         demo.ShaderKeyframes.OnChange += ShaderKeframes_OnChange;
         demo.Textures.OnChange += Textures_OnChange;
     }
     catch (Exception e)
     {
         log.Append(e.Message);
     }
 }
Example #8
0
 private static void LoadUniforms(IEnumerable<Uniform> uniforms, DemoModel demo)
 {
     foreach (var uniform in uniforms)
     {
         demo.Uniforms.Add(uniform.UniformName);
         var kfs = demo.Uniforms.GetKeyFrames(uniform.UniformName);
         foreach (var kf in uniform.Keyframes)
         {
             kfs.AddUpdate(kf.Time, kf.Value);
         }
     }
 }
Example #9
0
 private static void Save(DemoModel demo, DemoData2.DemoData2 data)
 {
     data.SoundFileName = demo.TimeSource.SoundFileName;
     data.Textures = demo.Textures.ToList();
     var track = new Track();
     track.Name = "sum";
     data.Tracks.Add(track);
     foreach (var element in demo.ShaderKeyframes.Items)
     {
         track.ShaderKeyframes.Add(new ShaderKeyframe(element.Key, element.Value));
     }
     foreach (var uniform in demo.Uniforms.Names)
     {
         var un = new Uniform(uniform, demo.Uniforms.GetKeyFrames(uniform));
         data.Uniforms.Add(un);
     }
 }