private void Import(string data) { Task.Run(() => { MeshG m = MeshReadWriter.ParseMeshString(data); m.FindCenter(); if (m.Vertices.Count == 0 || m.Triangles.Count == 0) { Dispatcher.Invoke(() => { MessageBox.Show("No valid vertices or triangles in imesh file."); }); return; } Dispatcher.Invoke(() => { cameraPosition.x = -m.center.x; cameraPosition.y = -m.center.y; cameraPosition.z = -100.0f; didImport = true; lGenTime.Text = "0ms"; isGen = true; mesh = null; mesh = m; positions = m.Vertices.ToArray(); indices = m.Triangles.ToArray(); normals = m.Normals.ToArray(); colors = m.Colors.ToArray(); lTriangleCount.Text = (indices.Length / 3).ToString("#,##"); }); Dispatcher.Invoke(() => { isGen = false; Render(glControl); }); }); }
private void btnExport_Click(object sender, RoutedEventArgs e) { if (mesh != null) { SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.AddExtension = true; saveDialog.DefaultExt = "Image Mesh(*.imesh)|*.imesh"; saveDialog.Filter = "Image Mesh(*.imesh)|*.imesh"; saveDialog.CheckPathExists = true; if (saveDialog.ShowDialog() == true) { string path = saveDialog.FileName; Task.Run(() => { MeshReadWriter.WriteMeshToFile(mesh, path); }); } } }