Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-03-16 14:55:30 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-03-16 14:55:30 +0400
commit7b7196e3adea4cd5a818d0653f85b363418079c3 (patch)
tree0f463390c214d11098a65aa0aee6460c80b546c1 /source/blender/blenkernel/intern/mesh.c
parent211f08d89bb48312a426fe969e0d967cf637b66c (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.c37
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.
*