diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-10-04 20:18:05 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-10-04 20:18:05 +0300 |
commit | 63c472b4f9f7eae787bf4ce36160a28a1777bc76 (patch) | |
tree | 0e3144ddeacb83b7ff2a769af178824b1dea5563 /source/blender/editors/mesh/meshtools.c | |
parent | 9422db7796e17bc23a9544d44f2a2e00a9b7e775 (diff) | |
parent | 296757804cc2e97a3d95b4e44a6cc5d508e1c345 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/editors/mesh/meshtools.c')
-rw-r--r-- | source/blender/editors/mesh/meshtools.c | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 5261baeab57..da0da05bb13 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -80,7 +80,7 @@ static void join_mesh_single( bContext *C, Main *bmain, Scene *scene, - Object *ob_dst, Base *base_src, float imat[4][4], + Object *ob_dst, Object *ob_src, float imat[4][4], MVert **mvert_pp, MEdge **medge_pp, MLoop **mloop_pp, MPoly **mpoly_pp, CustomData *vdata, CustomData *edata, CustomData *ldata, CustomData *pdata, int totvert, int totedge, int totloop, int totpoly, @@ -91,7 +91,7 @@ static void join_mesh_single( EvaluationContext eval_ctx; int a, b; - Mesh *me = base_src->object->data; + Mesh *me = ob_src->data; MVert *mvert = *mvert_pp; MEdge *medge = *medge_pp; MLoop *mloop = *mloop_pp; @@ -117,10 +117,10 @@ static void join_mesh_single( /* Build src to merged mapping of vgroup indices. */ bDeformGroup *dg_src; - int *vgroup_index_map = alloca(sizeof(*vgroup_index_map) * BLI_listbase_count(&base_src->object->defbase)); + int *vgroup_index_map = alloca(sizeof(*vgroup_index_map) * BLI_listbase_count(&ob_src->defbase)); bool is_vgroup_remap_needed = false; - for (dg_src = base_src->object->defbase.first, b = 0; dg_src; dg_src = dg_src->next, b++) { + 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); } @@ -135,11 +135,11 @@ static void join_mesh_single( } /* if this is the object we're merging into, no need to do anything */ - if (base_src->object != ob_dst) { + if (ob_src != ob_dst) { float cmat[4][4]; /* watch this: switch matmul order really goes wrong */ - mul_m4_m4m4(cmat, imat, base_src->object->obmat); + mul_m4_m4m4(cmat, imat, ob_src->obmat); /* transform vertex coordinates into new space */ for (a = 0, mvert = *mvert_pp; a < me->totvert; a++, mvert++) { @@ -216,13 +216,13 @@ static void join_mesh_single( } if (me->totloop) { - if (base_src->object != ob_dst) { + if (ob_src != ob_dst) { MultiresModifierData *mmd; - multiresModifier_prepare_join(&eval_ctx, scene, base_src->object, ob_dst); + multiresModifier_prepare_join(&eval_ctx, scene, ob_src, ob_dst); - if ((mmd = get_multires_modifier(scene, base_src->object, true))) { - ED_object_iter_other(bmain, base_src->object, true, + if ((mmd = get_multires_modifier(scene, ob_src, true))) { + ED_object_iter_other(bmain, ob_src, true, ED_object_multires_update_totlevels_cb, &mmd->totlvl); } @@ -240,8 +240,8 @@ static void join_mesh_single( if (me->totpoly) { if (matmap) { /* make mapping for materials */ - for (a = 1; a <= base_src->object->totcol; a++) { - Material *ma = give_current_material(base_src->object, a); + for (a = 1; a <= ob_src->totcol; a++) { + Material *ma = give_current_material(ob_src, a); for (b = 0; b < totcol; b++) { if (ma == matar[b]) { @@ -276,8 +276,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) { Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); - Base *ob_base = CTX_data_active_base(C); - Object *ob = ob_base->object; + Object *ob = CTX_data_active_object(C); Material **matar = NULL, *ma; Mesh *me; MVert *mvert = NULL; @@ -500,7 +499,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) */ join_mesh_single( C, bmain, scene, - ob, ob_base, imat, + ob, ob, imat, &mvert, &medge, &mloop, &mpoly, &vdata, &edata, &ldata, &pdata, totvert, totedge, totloop, totpoly, @@ -517,7 +516,7 @@ int join_mesh_exec(bContext *C, wmOperator *op) if (base->object->type == OB_MESH) { join_mesh_single( C, bmain, scene, - ob, base, imat, + ob, base->object, imat, &mvert, &medge, &mloop, &mpoly, &vdata, &edata, &ldata, &pdata, totvert, totedge, totloop, totpoly, |