diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-03-16 14:55:30 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-03-16 14:55:30 +0400 |
commit | 7b7196e3adea4cd5a818d0653f85b363418079c3 (patch) | |
tree | 0f463390c214d11098a65aa0aee6460c80b546c1 /source/blender/blenkernel/intern/mesh.c | |
parent | 211f08d89bb48312a426fe969e0d967cf637b66c (diff) |
Code cleanup: modifier_skin_customdata_ensure was a bad level call
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 838f93e5222..b7ebd5c013d 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -337,6 +337,43 @@ static void mesh_ensure_tessellation_customdata(Mesh *me) } } +void BKE_mesh_ensure_skin_customdata(Mesh *me) +{ + BMesh *bm = me->edit_btmesh ? me->edit_btmesh->bm : NULL; + MVertSkin *vs; + + if (bm) { + if (!CustomData_has_layer(&bm->vdata, CD_MVERT_SKIN)) { + BMVert *v; + BMIter iter; + + BM_data_layer_add(bm, &bm->vdata, CD_MVERT_SKIN); + + /* Mark an arbitrary vertex as root */ + BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) { + vs = CustomData_bmesh_get(&bm->vdata, v->head.data, + CD_MVERT_SKIN); + vs->flag |= MVERT_SKIN_ROOT; + break; + } + } + } + else { + if (!CustomData_has_layer(&me->vdata, CD_MVERT_SKIN)) { + vs = CustomData_add_layer(&me->vdata, + CD_MVERT_SKIN, + CD_DEFAULT, + NULL, + me->totvert); + + /* Mark an arbitrary vertex as root */ + if (vs) { + vs->flag |= MVERT_SKIN_ROOT; + } + } + } +} + /* this ensures grouped customdata (e.g. mtexpoly and mloopuv and mtface, or * mloopcol and mcol) have the same relative active/render/clone/mask indices. * |