//Run a mesher command int TriangleMesher::RunMesherCommand(MesherCommand* mc) { int ret = false; //Figure out which command to execute and run it if(mc->command_type == MesherCommand::GENERATE_RANDOM_GRID) ret = GenerateRandomGrid(mc->xmin, mc->xmax, mc->ymin, mc->ymax, mc->vertex_count); else if(mc->command_type == MesherCommand::GENERATE_UNIFORM_GRID) ret = GenerateUniformGrid(mc->xmin, mc->xmax, mc->ymin, mc->ymax, mc->xcount, mc->ycount); else if(mc->command_type == MesherCommand::GENERATE_HEX_GRID) ret = GenerateHexGrid(mc->xmin, mc->xmax, mc->ymin, mc->ymax, mc->xcount, mc->ycount); else if(mc->command_type == MesherCommand::RUN_TRIANGLE_MESHER) ret = RunTriangleMesher(mc->use_kd_tree); else if(mc->command_type == MesherCommand::LOAD_MESH_FROM_FILE) ret = LoadMeshFromFile(mc->filename, mc->load_save_triangles); else if(mc->command_type == MesherCommand::SAVE_MESH_TO_FILE) ret = SaveMeshToFile(mc->filename, mc->load_save_triangles); else if(mc->command_type == MesherCommand::WRITE_SVG) ret = WriteSVG(mc->svg_filename, mc->svg_width, mc->svg_height); else if(mc->command_type == MesherCommand::SUBDIVIDE_TRIANGLE) ret = SubdivideTriangle(mc->subdivide_vindex, mc->subdivide_triangle_local_index); else if(mc->command_type == MesherCommand::BARYCENTRIC_SUBDIVIDE) ret = BarycentricSubdivide(mc->subdivide_triangle_local_index); else if(mc->command_type == MesherCommand::BASIC_TRIANGLE_MESHER) ret = BasicTriangleMesher(); else if(mc->command_type == MesherCommand::STRETCHED_GRID) ret = StretchedGrid(mc->stretched_grid_iterations, mc->stretched_grid_alpha); else if(mc->command_type == MesherCommand::REFINE_MESH) ret = RefineMesh(mc->desired_edge_length); else if(mc->command_type == MesherCommand::DO_NOTHING) ret = true; //Update the mesher command result if(ret == false) { mc->mesher_command_result = MesherCommand::FAILURE_RESULT; return false; } else { mc->mesher_command_result = MesherCommand::SUCCESS_RESULT; return true; } return true; }
HRESULT XFileCreator::CreateXFile(WCHAR* targetFile, std::vector<Vertex> vertices, std::vector<Face> faces) { HRESULT hr; hr = CreateDevice(); PD(hr, L"create device"); if(FAILED(hr)) return hr; hr = CreateMesh(vertices, faces); PD(hr, L"create mesh"); if(FAILED(hr)) return hr; hr = SaveMeshToFile(targetFile); PD(hr, L"save mesh to file"); if(FAILED(hr)) return hr; return D3D_OK; }