protected override Task ExportFileImpl(Scene scene, string filePath) { if (scene.Meshes == null || scene.Meshes.Count != 1) { throw new ArgumentException("Can only deal with scenes containing a single mesh"); } return(Task.Run(() => { var mesh = scene.Meshes[0]; var plyFile = ConstructPlyFile(mesh, filePath); var headerParser = new PlyHeaderReaderWriter(); headerParser.WriteFileStructure(plyFile); using (var elementReadWriter = PlyReaderWriterFactory.GetReaderWriter(plyFile, OperationType.Export)) { elementReadWriter.WriteElements(mesh); } File.SetCreationTime(filePath, DateTime.Now); })); }
public override Task <Scene> ImportFileImpl(string filePath) { return(Task.Run(() => { var mesh = new Mesh(); var scene = new Scene(); scene.Meshes.Add(mesh); var headerParser = new PlyHeaderReaderWriter(); PlyFile plyFile = headerParser.ReadFileStructure(filePath); if (plyFile.Header.PlyFileFormat == PlyFileFormat.BinaryBigEndian) { throw new Exception($"{nameof(PlyFileFormat.BinaryBigEndian)} format is not currently supported"); } using var elementReadWriter = PlyReaderWriterFactory.GetReaderWriter(plyFile, OperationType.Import); BuildElements(elementReadWriter, plyFile); BuildMeshStructure(mesh, plyFile); return scene; })); }