private void GenFlat() { if (meshifier == null) { return; } didImport = false; btnExport.IsEnabled = false; UpdateMeshifier(); meshifier.Sphererize = false; lGenMessage.Visibility = Visibility.Visible; lGenMessage.BringIntoView(); isGen = true; mesh = null; cameraPosition.x = -(image.Width * scale) * 0.5f; cameraPosition.y = -(image.Height * scale) * 0.5f; cameraPosition.z = -100.0f; cameraRotation.x = 0; cameraRotation.y = 0; cameraRotation.z = 0; Task.Run(async() => { long ms = DateTime.Now.Ticks; MeshG m = await meshifier.Generate(); Dispatcher.Invoke(() => { mesh = m; mesh.center.x = (image.Width * scale) * 0.5f; mesh.center.y = (image.Height * scale) * 0.5f; positions = mesh.Vertices.ToArray(); colors = mesh.Colors.ToArray(); indices = mesh.Triangles.ToArray(); normals = mesh.Normals.ToArray(); }); long end = DateTime.Now.Ticks - ms; float totalMs = (float)end / 10000.0f; Dispatcher.Invoke(() => { isGen = false; lGenTime.Text = totalMs + "ms"; lTriangleCount.Text = meshifier.TriangleCount.ToString("#,##"); lGenMessage.Visibility = Visibility.Hidden; btnExport.IsEnabled = true; Render(glControl); }); }); }
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); }); }); }