private FFScene LoadFFScene(string scene_name)
        {
            var filename = Path.Combine(scene_name);
            var FFScene  = new FFScene(new List <FFEntity>());

            try
            {
                var file = File.Open(filename, FileMode.Open);
                try
                {
                    FFScene = (FFScene)_formatter.Deserialize(file);
                }
                catch (Exception e)
                {
                    throw new CannotLoadFileException("Could not deserialize the file", e);
                }
                finally
                {
                    file.Close();
                }
            }
            catch (Exception e)
            {
                throw new CannotLoadFileException("Could not open the file", e);
            }

            return(FFScene);
        }
        private void SaveFFScene(FFScene scene, string scene_name)
        {
            var filename = scene_name;
            var FFScene  = new FFScene(_entitiesController.GetCanvasEntities());

            try
            {
                var file = File.Open(filename, FileMode.Create);
                try
                {
                    _formatter.Serialize(file, FFScene);
                }
                catch (Exception e)
                {
                    throw new CannotSaveFileException("Could not serialize the file", e);
                }
                finally
                {
                    file.Close();
                }
            }
            catch (Exception e)
            {
                throw new CannotSaveFileException("Could not open the file", e);
            }
        }
        private void BuildButtonClick(object sender, RoutedEventArgs e)
        {
            fileName = FileTextField.Text;

            if (filePath.Length == 0)
            {
                MessageBox.Show("Erreur: Veuillez entrer un chemin");
            }
            else if (fileName.Length == 0)
            {
                MessageBox.Show("Error: Veuillez entrer un nom");
            }
            else
            {
                try
                {
                    mw.entitiesController.SaveEntitiesData();
                    FFScene scene = new FFScene(mw.entitiesController.GetCanvasEntities());
                    Codegen.Codegen.CodegenScene(Manager.Instance, scene.entities, compiler);

                    compiler.SetResourceFolder(Manager.Instance.ProjectDir);
                    compiler.SetExecutableName(fileName);
                    compiler.SetExecPath(filePath);

                    compiler.CompileToPortableExec();

                    var current_working_dir = Directory.GetCurrentDirectory();
                    var filepath            = GetFilePath();
                    var process_working_dir = filepath.Substring(0, filepath.LastIndexOf("\\"));

                    Directory.SetCurrentDirectory(process_working_dir);
                    Process.Start(GetFilePath());

                    foreach (Entity entity in mw.entitiesController.GetCanvasEntities())
                    {
                        entity.GetComponents().ForEach(x => x.engineData.Clear());
                    }

                    Directory.SetCurrentDirectory(current_working_dir);
                }
                catch (Exception exception)
                {
                #if DEBUG
                    throw exception;
                #else
                    MessageBox.Show("Il semblerait qu'il y ait eu une erreur à la compilation.", "Erreur de Compilation");
                #endif
                }
            }
        }
        public void SaveSceneAs(string name)
        {
            try
            {
                FFScene scene = new FFScene(_entitiesController.GetCanvasEntities());
                SaveFFScene(scene, name);
            }
            catch (Exception exception)
            {
#if DEBUG
                throw exception;
#else
                MessageBox.Show("Il semblerait qu'il y ait eu une erreur durant la sauvegarde de votre scène.", "Erreur de Sauvegarde");
#endif
            }
        }