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>2018-03-06 11:13:41 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-03-06 11:13:41 +0300
commita5a0dcec902d6bbff0fe0fc1bb7fb21045823166 (patch)
tree3d155f73d865b418a1e59889587223b2a9e2b6aa /source/blender/editors/mesh/meshtools.c
parentdd611dd0b87a36ffafb04177ec923e3b6d76bf71 (diff)
parentb5b5260464fbba81610f26d4e04e5aedeef8cfd6 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/editors/mesh/meshtools.c')
-rw-r--r--source/blender/editors/mesh/meshtools.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 64b6f5b8010..4daa4a23470 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -58,6 +58,7 @@
#include "BKE_mesh.h"
#include "BKE_material.h"
#include "BKE_object.h"
+#include "BKE_object_deform.h"
#include "BKE_report.h"
#include "BKE_editmesh.h"
#include "BKE_multires.h"
@@ -117,21 +118,12 @@ static void join_mesh_single(
BLI_assert(dvert != NULL);
/* Build src to merged mapping of vgroup indices. */
- bDeformGroup *dg_src;
- int *vgroup_index_map = alloca(sizeof(*vgroup_index_map) * BLI_listbase_count(&ob_src->defbase));
- bool is_vgroup_remap_needed = false;
-
- for (dg_src = ob_src->defbase.first, b = 0; dg_src; dg_src = dg_src->next, b++) {
- vgroup_index_map[b] = defgroup_name_index(ob_dst, dg_src->name);
- is_vgroup_remap_needed = is_vgroup_remap_needed || (vgroup_index_map[b] != b);
- }
-
- if (is_vgroup_remap_needed) {
- for (a = 0; a < me->totvert; a++) {
- for (b = 0; b < dvert[a].totweight; b++) {
- dvert[a].dw[b].def_nr = vgroup_index_map[dvert_src[a].dw[b].def_nr];
- }
- }
+ int *vgroup_index_map;
+ int vgroup_index_map_len;
+ vgroup_index_map = BKE_object_defgroup_index_map_create(ob_src, ob_dst, &vgroup_index_map_len);
+ BKE_object_defgroup_index_map_apply(dvert, me->totvert, vgroup_index_map, vgroup_index_map_len);
+ if (vgroup_index_map != NULL) {
+ MEM_freeN(vgroup_index_map);
}
}