public static void OpenAndConvertAssimpFiles() { var files = GetInputFiles() .Where(AssimpLoader.CanLoad) .Select(f => new FileLoadData(f)) .ToArray(); // Load all the files foreach (var f in files) { try { (f.MemoryConsumption, f.MSecToOpen) = Util.GetMemoryConsumptionAndMSecElapsed(() => f.Scene = AssimpLoader.Load(f.SourceFile.FullName)); } catch (Exception e) { f.Error = e; } } // Convert all the Assimp scenes to G3D foreach (var f in files) { if (f.Scene == null) { continue; } try { f.MSecToConvert = Util.GetMSecElapsed(() => f.G3d = f.Scene.ToG3d()); } catch (Exception e) { f.Error = e; } } // Save all the G3D scenes Util.CreateAndClearDirectory(TestOutputFolder); foreach (var f in files) { if (f.G3d == null) { continue; } try { var outputFilePath = Path.Combine(TestOutputFolder, f.ShortName + ".g3d"); f.G3DFile = new FileInfo(outputFilePath); f.MSecToSaveG3d = Util.GetMSecElapsed(() => f.G3d.Write(outputFilePath)); } catch (Exception e) { f.Error = e; } } // Try reading back in all of the G3D scenes, measure load times and the memory consumption foreach (var f in files) { if (f.G3DFile == null) { continue; } try { G3D localG3d = null; (f.MemoryConsumptionG3d, f.MSecToOpenG3d) = Util.GetMemoryConsumptionAndMSecElapsed(() => localG3d = G3D.Read(f.G3DFile.FullName)); ValidateSameG3D(f.G3d, localG3d); } catch (Exception e) { f.Error = e; } } // Output the header for data Console.WriteLine( "Importer," + "Extension," + "File Name," + "File Size(KB)," + "Load Time(s)," + "Memory(KB)," + "# Meshes," + "Time to Convert," + "Time to Write G3D," + "G3D File Size(KB)," + "G3D Memory(KB)", "G3D Load Time(s)", "Error"); // Output the data rows foreach (var f in files) { Console.WriteLine( "Assimp," + $"{Path.GetExtension(f.ShortName)}," + $"{f.ShortName}," + $"{f.SourceFile?.Length / 1000}," + $"{f.MSecToOpen / 100f}," + $"{f.MemoryConsumption / 1000}," + $"{f.NumMeshes}," + $"{f.MSecToConvert / 100f}," + $"{f.MSecToSaveG3d / 100f}," + $"{f.G3DFile?.Length / 1000}," + $"{f.MemoryConsumptionG3d / 1000}," + $"{f.MSecToOpenG3d / 100f}," + $"{f.Error}"); } Assert.AreEqual(0, files.Count(f => f.Error != null), "Errors occurred"); }