[Bf-blender-cvs] [d7c0421493d] temp-object-multi-mode: Revert transform changes, in favor of more comprehensive ones
Campbell Barton
noreply at git.blender.org
Tue Apr 10 19:11:45 CEST 2018
Commit: d7c0421493d25ea9f834851cf2eb211f047c1f2c
Author: Campbell Barton
Date: Sun Apr 8 09:45:08 2018 +0200
Branches: temp-object-multi-mode
https://developer.blender.org/rBd7c0421493d25ea9f834851cf2eb211f047c1f2c
Revert transform changes, in favor of more comprehensive ones
===================================================================
M source/blender/editors/transform/transform_conversions.c
===================================================================
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 55a4e2152ee..2d7ff1eb523 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2461,16 +2461,13 @@ static void createTransEditVerts(TransInfo *t)
{
TransData *tob = NULL;
TransDataExtension *tx = NULL;
- const Mesh *me = t->obedit->data;
+ BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
+ Mesh *me = t->obedit->data;
+ BMesh *bm = em->bm;
BMVert *eve;
BMIter iter;
-#if 0
float (*mappedcos)[3] = NULL, (*quats)[4] = NULL;
-#endif
- float mtx[3][3], smtx[3][3];
-#if 0
- float (*defmats)[3][3] = NULL, (*defcos)[3] = NULL;
-#endif
+ float mtx[3][3], smtx[3][3], (*defmats)[3][3] = NULL, (*defcos)[3] = NULL;
float *dists = NULL;
int a;
const int prop_mode = (t->flag & T_PROP_EDIT) ? (t->flag & T_PROP_EDIT_ALL) : 0;
@@ -2478,11 +2475,9 @@ static void createTransEditVerts(TransInfo *t)
int cd_vert_bweight_offset = -1;
bool use_topology = (me->editflag & ME_EDIT_MIRROR_TOPO) != 0;
-#if 0
struct TransIslandData *island_info = NULL;
int island_info_tot;
int *island_vert_map = NULL;
-#endif
/* Even for translation this is needed because of island-orientation, see: T51651. */
const bool is_island_center = (t->around == V3D_AROUND_LOCAL_ORIGINS);
@@ -2491,77 +2486,45 @@ static void createTransEditVerts(TransInfo *t)
int *dists_index = NULL;
if (t->flag & T_MIRROR) {
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- EDBM_verts_mirror_cache_begin(em, 0, false, (t->flag & T_PROP_EDIT) == 0, use_topology);
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
+ EDBM_verts_mirror_cache_begin(em, 0, false, (t->flag & T_PROP_EDIT) == 0, use_topology);
mirror = 1;
}
-#if 0
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- BMesh *bm = em->bm;
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
-#endif
-
/**
* Quick check if we can transform.
*
* \note ignore modes here, even in edge/face modes, transform data is created by selected vertices.
* \note in prop mode we need at least 1 selected.
*/
-
- int totvertsel_multi = 0;
- int select_mode = -1;
- {
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- if (select_mode == -1) {
- select_mode = em->selectmode;
- }
- totvertsel_multi += em->bm->totvertsel;
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
-
- if (totvertsel_multi == 0) {
- goto cleanup;
- }
+ if (bm->totvertsel == 0) {
+ goto cleanup;
}
if (t->mode == TFM_BWEIGHT) {
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- BMesh *bm = em->bm;
- BM_mesh_cd_flag_ensure(bm, BKE_mesh_from_object(ob_iter), ME_CDFLAG_VERT_BWEIGHT);
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
+ BM_mesh_cd_flag_ensure(bm, BKE_mesh_from_object(t->obedit), ME_CDFLAG_VERT_BWEIGHT);
+ cd_vert_bweight_offset = CustomData_get_offset(&bm->vdata, CD_BWEIGHT);
}
if (prop_mode) {
unsigned int count = 0;
- unsigned int count_total = 0;
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- BMesh *bm = em->bm;
- BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
- if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
- count++;
- }
+ BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
+ if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
+ count++;
}
- count_total += bm->totvert;
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
+ }
t->total = count;
/* allocating scratch arrays */
if (prop_mode & T_PROP_CONNECTED) {
- dists = MEM_mallocN(count_total * sizeof(float), __func__);
+ dists = MEM_mallocN(em->bm->totvert * sizeof(float), __func__);
if (is_island_center) {
- dists_index = MEM_mallocN(count_total * sizeof(int), __func__);
+ dists_index = MEM_mallocN(em->bm->totvert * sizeof(int), __func__);
}
}
}
else {
- t->total = totvertsel_multi;
+ t->total = bm->totvertsel;
}
tob = t->data = MEM_callocN(t->total * sizeof(TransData), "TransObData(Mesh EditMode)");
@@ -2580,21 +2543,15 @@ static void createTransEditVerts(TransInfo *t)
pseudoinverse_m3_m3(smtx, mtx, PSEUDOINVERSE_EPSILON);
if (prop_mode & T_PROP_CONNECTED) {
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- editmesh_set_connectivity_distance(em->bm, mtx, dists, dists_index);
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
+ editmesh_set_connectivity_distance(em->bm, mtx, dists, dists_index);
}
- /* TODO */
- (void)editmesh_islands_info_calc;
-# if 0
if (is_island_center) {
/* In this specific case, near-by vertices will need to know the island of the nearest connected vertex. */
const bool calc_single_islands = (
(prop_mode & T_PROP_CONNECTED) &&
(t->around == V3D_AROUND_LOCAL_ORIGINS) &&
- (select_mode & SCE_SELECT_VERTEX));
+ (em->selectmode & SCE_SELECT_VERTEX));
island_info = editmesh_islands_info_calc(em, &island_info_tot, &island_vert_map, calc_single_islands);
}
@@ -2629,15 +2586,9 @@ static void createTransEditVerts(TransInfo *t)
MEM_freeN(defcos);
}
}
-#endif /* XXX, TODO */
/* find out which half we do */
if (mirror) {
-
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- BMesh *bm = em->bm;
-
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
if (BM_elem_flag_test(eve, BM_ELEM_SELECT) && eve->co[0] != 0.0f) {
if (eve->co[0] < 0.0f) {
@@ -2647,28 +2598,19 @@ static void createTransEditVerts(TransInfo *t)
break;
}
}
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
}
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- BMesh *bm = em->bm;
-
- cd_vert_bweight_offset = CustomData_get_offset(&bm->vdata, CD_BWEIGHT);
-
BM_ITER_MESH_INDEX (eve, &iter, bm, BM_VERTS_OF_MESH, a) {
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
if (prop_mode || BM_elem_flag_test(eve, BM_ELEM_SELECT)) {
struct TransIslandData *v_island = NULL;
float *bweight = (cd_vert_bweight_offset != -1) ? BM_ELEM_CD_GET_VOID_P(eve, cd_vert_bweight_offset) : NULL;
-#if 0
if (island_info) {
const int connected_index = (dists_index && dists_index[a] != -1) ? dists_index[a] : a;
v_island = (island_vert_map[connected_index] != -1) ?
&island_info[island_vert_map[connected_index]] : NULL;
}
-#endif
VertsToTransData(t, tob, tx, em, eve, bweight, v_island);
@@ -2689,7 +2631,6 @@ static void createTransEditVerts(TransInfo *t)
}
}
-#if 0
/* CrazySpace */
if (defmats || (quats && BM_elem_flag_test(eve, BM_ELEM_TAG))) {
float mat[3][3], qmat[3][3], imat[3][3];
@@ -2711,9 +2652,7 @@ static void createTransEditVerts(TransInfo *t)
copy_m3_m3(tob->smtx, imat);
copy_m3_m3(tob->mtx, mat);
}
- else
-#endif
- {
+ else {
copy_m3_m3(tob->smtx, smtx);
copy_m3_m3(tob->mtx, mtx);
}
@@ -2729,16 +2668,11 @@ static void createTransEditVerts(TransInfo *t)
}
}
}
-
- /* XXX, no indent, avoid diff noise */
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
-
-#if 0
+
if (island_info) {
MEM_freeN(island_info);
MEM_freeN(island_vert_map);
}
-#endif
if (mirror != 0) {
tob = t->data;
@@ -2751,22 +2685,17 @@ static void createTransEditVerts(TransInfo *t)
cleanup:
/* crazy space free */
-#if 0
if (quats)
MEM_freeN(quats);
if (defmats)
MEM_freeN(defmats);
-#endif
if (dists)
MEM_freeN(dists);
if (dists_index)
MEM_freeN(dists_index);
if (t->flag & T_MIRROR) {
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- EDBM_verts_mirror_cache_end(em);
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
+ EDBM_verts_mirror_cache_end(em);
}
}
@@ -3004,6 +2933,7 @@ static void createTransUVs(bContext *C, TransInfo *t)
ToolSettings *ts = CTX_data_tool_settings(C);
TransData *td = NULL;
TransData2D *td2d = NULL;
+ BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
BMFace *efa;
BMIter iter, liter;
UvElementMap *elementmap = NULL;
@@ -3013,13 +2943,12 @@ static void createTransUVs(bContext *C, TransInfo *t)
const bool is_prop_edit = (t->flag & T_PROP_EDIT) != 0;
const bool is_prop_connected = (t->flag & T_PROP_CONNECTED) != 0;
const bool is_island_center = (t->around == V3D_AROUND_LOCAL_ORIGINS);
+ const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
if (!ED_space_image_show_uvedit(sima, t->obedit))
return;
/* count */
- if (0) {
- BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
if (is_prop_connected || is_island_center) {
/* create element map with island information */
const bool use_facesel = (ts->uv_flag & UV_SYNC_SELECTION) == 0;
@@ -3036,14 +2965,6 @@ static void createTransUVs(bContext *C, TransInfo *t)
island_center = MEM_callocN(sizeof(*island_center) * elementmap->totalIslands, __func__);
}
}
- }
-
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object(ob_iter);
- const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
- if (cd_loop_uv_offset == -1) {
- continue;
- }
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
BMLoop *l;
@@ -3081,7 +3002,6 @@ static void createTransUVs(bContext *C, TransInfo *t)
}
}
}
- } FOREACH_OBJECT_IN_EDIT_MODE_END;
/* note: in prop mode we need at least 1 selected */
if (countsel == 0) {
@@ -3109,13 +3029,6 @@ static void createTransUVs(bContext *C, TransInfo *t)
td = t->data;
td2d = t->data2d;
- FOREACH_OBJECT_IN_EDIT_MODE_BEGIN (t->eval_ctx.view_layer, ob_iter) {
- BMEditMesh *em = BKE_editmesh_from_object
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list