diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-08-23 17:54:30 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-08-23 17:54:30 +0400 |
commit | 0dd42fd5138f19e22c347ac0a0817d8ba605a5c4 (patch) | |
tree | 2e38815d4bc7a4392fc4927071645142f7168784 /source/blender/bmesh/intern/bmesh_core.c | |
parent | 6a13ae2b5238a6eec82e8f5999ddb6b3f4c19ad2 (diff) |
Fix #32387: some mesh modifications breaking other shape keys.
The vertex shapekey index is now no longer copied, and propagation of offsets
in the basis to other shapekeys is disabled if new vertices were added. The
reason being that the propagation will only be done for the old vertices leaving
the new ones behind, and so doing e.g. subdivide + translate on the basis would
create a mess on other shape keys.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_core.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_core.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index 8c8cc216e96..94d94cbec3e 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -80,7 +80,14 @@ BMVert *BM_vert_create(BMesh *bm, const float co[3], const BMVert *example) CustomData_bmesh_set_default(&bm->vdata, &v->head.data); if (example) { + int *keyi; + BM_elem_attrs_copy(bm, bm, example, v); + + /* exception: don't copy the original shapekey index */ + keyi = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_SHAPE_KEYINDEX); + if(keyi) + *keyi = ORIGINDEX_NONE; } BM_CHECK_ELEMENT(v); |