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>2019-11-27 22:12:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-27 22:17:14 +0300
commit7711231838e726055c6690757f3799dff90bfd96 (patch)
tree4e41e96ddaeb612dc128bf160c4baa8fafb60ded /source/blender/editors/mesh/editmesh_utils.c
parente7502ee0aa8e27247689ef8debccaaa3b8b056bf (diff)
Fix T71865: Separating mesh parts breaks shape keys
This was an old bug which could be caused by saving after separating. Changes from 79b703bb635e made this fail reliably. Update shape key indices when they may be used again later.
Diffstat (limited to 'source/blender/editors/mesh/editmesh_utils.c')
-rw-r--r--source/blender/editors/mesh/editmesh_utils.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c
index 522c2f32d27..42404554ed8 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -325,7 +325,7 @@ void EDBM_mesh_make(Object *ob, const int select_mode, const bool add_key_index)
* \warning This can invalidate the #Mesh runtime cache of other objects (for linked duplicates).
* Most callers should run #DEG_id_tag_update on \a ob->data, see: T46738, T46913
*/
-void EDBM_mesh_load(Main *bmain, Object *ob)
+void EDBM_mesh_load_ex(Main *bmain, Object *ob, bool free_data)
{
Mesh *me = ob->data;
BMesh *bm = me->edit_mesh->bm;
@@ -341,6 +341,7 @@ void EDBM_mesh_load(Main *bmain, Object *ob)
me,
(&(struct BMeshToMeshParams){
.calc_object_remap = true,
+ .update_shapekey_indices = !free_data,
}));
/* Free derived mesh. usually this would happen through depsgraph but there
@@ -380,6 +381,11 @@ void EDBM_mesh_clear(BMEditMesh *em)
}
}
+void EDBM_mesh_load(Main *bmain, Object *ob)
+{
+ EDBM_mesh_load_ex(bmain, ob, true);
+}
+
/**
* Should only be called on the active editmesh, otherwise call #BKE_editmesh_free
*/