From 0dd42fd5138f19e22c347ac0a0817d8ba605a5c4 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 23 Aug 2012 13:54:30 +0000 Subject: 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. --- source/blender/bmesh/intern/bmesh_core.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/bmesh/intern/bmesh_core.c') 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); -- cgit v1.2.3