// ================================================================= // Read all loose edges. // Important: This function assumes that all edges from existing // faces have allready been generated and added to me->medge // So this function MUST be called after read_faces() (see below) // ================================================================= void MeshImporter::read_lines(COLLADAFW::Mesh *mesh, Mesh *me) { unsigned int loose_edge_count = get_loose_edge_count(mesh); if (loose_edge_count > 0) { unsigned int face_edge_count = me->totedge; /* unsigned int total_edge_count = loose_edge_count + face_edge_count; */ /* UNUSED */ mesh_add_edges(me, loose_edge_count); MEdge *med = me->medge + face_edge_count; COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); for (int i = 0; i < prim_arr.getCount(); i++) { COLLADAFW::MeshPrimitive *mp = prim_arr[i]; int type = mp->getPrimitiveType(); if (type == COLLADAFW::MeshPrimitive::LINES) { unsigned int edge_count = mp->getFaceCount(); unsigned int *indices = mp->getPositionIndices().getData(); for (int i = 0; i < edge_count; i++, med++) { med->bweight = 0; med->crease = 0; med->flag |= ME_LOOSEEDGE; med->v1 = indices[2 * i]; med->v2 = indices[2 * i + 1]; } } } } }
void ED_mesh_edges_add(Mesh *mesh, ReportList *reports, int count) { if(mesh->edit_mesh) { BKE_report(reports, RPT_ERROR, "Can't add edges in edit mode."); return; } mesh_add_edges(mesh, count); }
void ED_mesh_geometry_add(Mesh *mesh, ReportList *reports, int verts, int edges, int faces) { if(mesh->edit_mesh) { BKE_report(reports, RPT_ERROR, "Can't add geometry in edit mode."); return; } if(verts) mesh_add_verts(mesh, verts); if(edges) mesh_add_edges(mesh, edges); if(faces) mesh_add_faces(mesh, faces); }