Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/cdderivedmesh.c
| Show First 20 Lines • Show All 1,685 Lines • ▼ Show 20 Lines | if (index) { | ||||
| if (orig == ORIGINDEX_NONE) continue; | if (orig == ORIGINDEX_NONE) continue; | ||||
| func(userData, orig, mv[med->v1].co, mv[med->v2].co); | func(userData, orig, mv[med->v1].co, mv[med->v2].co); | ||||
| } | } | ||||
| else | else | ||||
| func(userData, i, mv[med->v1].co, mv[med->v2].co); | func(userData, i, mv[med->v1].co, mv[med->v2].co); | ||||
| } | } | ||||
| } | } | ||||
| static void cdDM_foreachMappedLoop( | |||||
| DerivedMesh *dm, | |||||
| void (*func)(void *userData, int vertex_index, int face_index, const float co[3], const float no[3]), | |||||
| void *userData, | |||||
| DMForeachFlag flag) | |||||
| { | |||||
| /* We can't use dm->getLoopDataLayout(dm) here, we want to always access dm->loopData, EditDerivedBMesh would | |||||
| * return loop data from bmesh itself. */ | |||||
| const float (*lnors)[3] = (flag & DM_FOREACH_USE_NORMAL) ? DM_get_loop_data_layer(dm, CD_NORMAL) : NULL; | |||||
| const MVert *mv = CDDM_get_verts(dm); | |||||
| const MLoop *ml = CDDM_get_loops(dm); | |||||
| const MPoly *mp = CDDM_get_polys(dm); | |||||
| const int *v_index = DM_get_vert_data_layer(dm, CD_ORIGINDEX); | |||||
| const int *f_index = DM_get_poly_data_layer(dm, CD_ORIGINDEX); | |||||
| int p_idx, i; | |||||
| for (p_idx = 0; p_idx < dm->numPolyData; ++p_idx, ++mp) { | |||||
| for (i = 0; i < mp->totloop; ++i, ++ml) { | |||||
| const int v_idx = v_index ? v_index[ml->v] : ml->v; | |||||
| const int f_idx = f_index ? f_index[p_idx] : p_idx; | |||||
| const float *no = lnors ? *lnors++ : NULL; | |||||
| if (!ELEM(ORIGINDEX_NONE, v_idx, f_idx)) { | |||||
| func(userData, v_idx, f_idx, mv[ml->v].co, no); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| static void cdDM_foreachMappedFaceCenter( | static void cdDM_foreachMappedFaceCenter( | ||||
campbellbarton: for sake of completeness shouldn't it `else {` and loop over loops still? | |||||
| DerivedMesh *dm, | DerivedMesh *dm, | ||||
| void (*func)(void *userData, int index, const float cent[3], const float no[3]), | void (*func)(void *userData, int index, const float cent[3], const float no[3]), | ||||
| void *userData, | void *userData, | ||||
| DMForeachFlag flag) | DMForeachFlag flag) | ||||
| { | { | ||||
| CDDerivedMesh *cddm = (CDDerivedMesh *)dm; | CDDerivedMesh *cddm = (CDDerivedMesh *)dm; | ||||
| MVert *mvert = cddm->mvert; | MVert *mvert = cddm->mvert; | ||||
| MPoly *mp; | MPoly *mp; | ||||
| ▲ Show 20 Lines • Show All 123 Lines • ▼ Show 20 Lines | static CDDerivedMesh *cdDM_create(const char *desc) | ||||
| dm->drawFacesGLSL = cdDM_drawFacesGLSL; | dm->drawFacesGLSL = cdDM_drawFacesGLSL; | ||||
| dm->drawMappedFaces = cdDM_drawMappedFaces; | dm->drawMappedFaces = cdDM_drawMappedFaces; | ||||
| dm->drawMappedFacesTex = cdDM_drawMappedFacesTex; | dm->drawMappedFacesTex = cdDM_drawMappedFacesTex; | ||||
| dm->drawMappedFacesGLSL = cdDM_drawMappedFacesGLSL; | dm->drawMappedFacesGLSL = cdDM_drawMappedFacesGLSL; | ||||
| dm->drawMappedFacesMat = cdDM_drawMappedFacesMat; | dm->drawMappedFacesMat = cdDM_drawMappedFacesMat; | ||||
| dm->foreachMappedVert = cdDM_foreachMappedVert; | dm->foreachMappedVert = cdDM_foreachMappedVert; | ||||
| dm->foreachMappedEdge = cdDM_foreachMappedEdge; | dm->foreachMappedEdge = cdDM_foreachMappedEdge; | ||||
| dm->foreachMappedLoop = cdDM_foreachMappedLoop; | |||||
| dm->foreachMappedFaceCenter = cdDM_foreachMappedFaceCenter; | dm->foreachMappedFaceCenter = cdDM_foreachMappedFaceCenter; | ||||
| dm->release = cdDM_release; | dm->release = cdDM_release; | ||||
| return cddm; | return cddm; | ||||
| } | } | ||||
| DerivedMesh *CDDM_new(int numVerts, int numEdges, int numTessFaces, int numLoops, int numPolys) | DerivedMesh *CDDM_new(int numVerts, int numEdges, int numTessFaces, int numLoops, int numPolys) | ||||
| ▲ Show 20 Lines • Show All 1,205 Lines • Show Last 20 Lines | |||||
for sake of completeness shouldn't it else { and loop over loops still?