[Bf-blender-cvs] [51e196f7163] soc-2017-normal-tools: Moar cleanup.
Bastien Montagne
noreply at git.blender.org
Tue Mar 13 10:58:22 CET 2018
Commit: 51e196f7163b405157351e5e9654105a34aa1394
Author: Bastien Montagne
Date: Tue Mar 13 10:25:30 2018 +0100
Branches: soc-2017-normal-tools
https://developer.blender.org/rB51e196f7163b405157351e5e9654105a34aa1394
Moar cleanup.
===================================================================
M source/blender/bmesh/intern/bmesh_mesh.c
M source/blender/editors/transform/transform.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 36033aa8fe9..640cb2f3448 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1396,14 +1396,14 @@ BMLoopNorEditDataArray *BM_loop_normal_editdata_array_init(BMesh *bm)
}
else { /* If multiple selection modes are inactive OR no such loop is found, fall back to editing all loops. */
totloopsel = BM_total_loop_select(bm);
- BMLoopNorEditData *tld = lnors_ed_arr->lnor_editdata = MEM_mallocN(sizeof(*tld) * totloopsel, __func__);
+ BMLoopNorEditData *lnor_ed = lnors_ed_arr->lnor_editdata = MEM_mallocN(sizeof(*lnor_ed) * totloopsel, __func__);
BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) {
- loop_normal_editdata_init(bm, tld, v, l, cd_custom_normal_offset);
- lnors_ed_arr->lidx_to_lnor_editdata[BM_elem_index_get(l)] = tld;
- tld++;
+ loop_normal_editdata_init(bm, lnor_ed, v, l, cd_custom_normal_offset);
+ lnors_ed_arr->lidx_to_lnor_editdata[BM_elem_index_get(l)] = lnor_ed;
+ lnor_ed++;
}
}
}
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 95a78e818f0..68ab54ad2a1 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -109,7 +109,7 @@ static void postInputRotation(TransInfo *t, float values[3]);
static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], const short around);
static void initSnapSpatial(TransInfo *t, float r_snap[3]);
-static void StoreCustomlnorValue(TransInfo *t, BMesh *bm);
+static void storeCustomLNorValue(TransInfo *t, BMesh *bm);
/* Transform Callbacks */
static void initBend(TransInfo *t);
@@ -2396,19 +2396,21 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
if ((prop = RNA_struct_find_property(op->ptr, "preserve_clnor"))) {
if (t->obedit && t->obedit->type == OB_MESH && (((Mesh *)(t->obedit->data))->flag & ME_AUTOSMOOTH)) {
BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
- bool all_select = false;
+ bool do_skip = false;
- /* Currently only used for 3 most frequent transform ops, can include more ops. */
- if (ELEM(t->mode, TFM_TRANSLATION, TFM_ROTATION, TFM_RESIZE)) {
+ /* Currently only used for two of three most frequent transform ops, can include more ops.
+ * Note that scaling cannot be included here, non-uniform scaling will affect normals. */
+ if (ELEM(t->mode, TFM_TRANSLATION, TFM_ROTATION)) {
if (em->bm->totvertsel == em->bm->totvert) {
/* No need to invalidate if whole mesh is selected. */
- all_select = true;
+ do_skip = true;
}
}
+
if (t->flag & T_MODAL) {
RNA_property_boolean_set(op->ptr, prop, false);
}
- if (!all_select) {
+ else if (!do_skip) {
const bool preserve_clnor = RNA_property_boolean_get(op->ptr, prop);
if (preserve_clnor) {
BKE_editmesh_lnorspace_update(em);
@@ -4219,40 +4221,41 @@ static void applyTrackball(TransInfo *t, const int UNUSED(mval[2]))
/** \name Transform Normal Rotation
* \{ */
-static void StoreCustomlnorValue(TransInfo *t, BMesh *bm)
+static void storeCustomLNorValue(TransInfo *t, BMesh *bm)
{
float mtx[3][3], smtx[3][3];
- BMLoopNorEditDataArray *ld = BM_loop_normal_editdata_array_init(bm);
+ BMLoopNorEditDataArray *lnors_ed_arr = BM_loop_normal_editdata_array_init(bm);
copy_m3_m4(mtx, t->obedit->obmat);
pseudoinverse_m3_m3(smtx, mtx, PSEUDOINVERSE_EPSILON);
- BMLoopNorEditData *tld = ld->lnor_editdata;
- for (int i = 0; i < ld->totloop; i++, tld++) {
- copy_m3_m3(tld->mtx, mtx);
- copy_m3_m3(tld->smtx, smtx);
+ BMLoopNorEditData *lnor_ed = lnors_ed_arr->lnor_editdata;
+ for (int i = 0; i < lnors_ed_arr->totloop; i++, lnor_ed++) {
+ copy_m3_m3(lnor_ed->mtx, mtx);
+ copy_m3_m3(lnor_ed->smtx, smtx);
}
- t->custom.mode.data = ld;
+ t->custom.mode.data = lnors_ed_arr;
t->custom.mode.free_cb = freeCustomNormalArray;
}
void freeCustomNormalArray(TransInfo *t, TransCustomData *custom_data)
{
- BMLoopNorEditDataArray *ld = custom_data->data;
+ BMLoopNorEditDataArray *lnors_ed_arr = custom_data->data;
if (t->state == TRANS_CANCEL) {
- BMLoopNorEditData *tld = ld->lnor_editdata;
+ BMLoopNorEditData *lnor_ed = lnors_ed_arr->lnor_editdata;
BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
BMesh *bm = em->bm;
- for (int i = 0; i < ld->totloop; i++, tld++) { /* Restore custom loop normal on cancel */
- BKE_lnor_space_custom_normal_to_data(bm->lnor_spacearr->lspacearr[tld->loop_index], tld->niloc, tld->clnors_data);
+ for (int i = 0; i < lnors_ed_arr->totloop; i++, lnor_ed++) { /* Restore custom loop normal on cancel */
+ BKE_lnor_space_custom_normal_to_data(
+ bm->lnor_spacearr->lspacearr[lnor_ed->loop_index], lnor_ed->niloc, lnor_ed->clnors_data);
}
}
- BM_loop_normal_editdata_array_free(ld);
+ BM_loop_normal_editdata_array_free(lnors_ed_arr);
t->custom.mode.data = NULL;
t->custom.mode.free_cb = NULL;
@@ -4282,8 +4285,8 @@ static void initNormalRotation(TransInfo *t)
BKE_editmesh_lnorspace_update(em);
- StoreCustomlnorValue(t, bm);
-
+ storeCustomLNorValue(t, bm);
+
negate_v3_v3(t->axis, t->viewinv[2]);
normalize_v3(t->axis);
@@ -4305,8 +4308,8 @@ static void applyNormalRotation(TransInfo *t, const int UNUSED(mval[2]))
copy_v3_v3(t->axis, t->axis_orig);
}
- BMLoopNorEditDataArray *ld = t->custom.mode.data;
- BMLoopNorEditData *tld = ld->lnor_editdata;
+ BMLoopNorEditDataArray *lnors_ed_arr = t->custom.mode.data;
+ BMLoopNorEditData *lnor_ed = lnors_ed_arr->lnor_editdata;
float axis[3];
float mat[3][3];
@@ -4323,23 +4326,24 @@ static void applyNormalRotation(TransInfo *t, const int UNUSED(mval[2]))
axis_angle_normalized_to_mat3(mat, axis, angle);
- for (int i = 0; i < ld->totloop; i++, tld++) {
+ for (int i = 0; i < lnors_ed_arr->totloop; i++, lnor_ed++) {
float center[3];
float vec[3], totmat[3][3], smat[3][3];
zero_v3(center);
- mul_m3_m3m3(totmat, mat, tld->mtx);
- mul_m3_m3m3(smat, tld->smtx, totmat);
+ mul_m3_m3m3(totmat, mat, lnor_ed->mtx);
+ mul_m3_m3m3(smat, lnor_ed->smtx, totmat);
- sub_v3_v3v3(vec, tld->niloc, center);
+ sub_v3_v3v3(vec, lnor_ed->niloc, center);
mul_m3_v3(smat, vec);
- add_v3_v3v3(tld->nloc, vec, center);
+ add_v3_v3v3(lnor_ed->nloc, vec, center);
- sub_v3_v3v3(vec, tld->nloc, tld->niloc);
- add_v3_v3v3(tld->nloc, tld->niloc, vec);
+ sub_v3_v3v3(vec, lnor_ed->nloc, lnor_ed->niloc);
+ add_v3_v3v3(lnor_ed->nloc, lnor_ed->niloc, vec);
- BKE_lnor_space_custom_normal_to_data(bm->lnor_spacearr->lspacearr[tld->loop_index], tld->nloc, tld->clnors_data);
+ BKE_lnor_space_custom_normal_to_data(
+ bm->lnor_spacearr->lspacearr[lnor_ed->loop_index], lnor_ed->nloc, lnor_ed->clnors_data);
}
recalcData(t);
More information about the Bf-blender-cvs
mailing list