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:
authorRohan Rathi <rohanrathi08@gmail.com>2017-06-11 20:51:42 +0300
committerRohan Rathi <rohanrathi08@gmail.com>2017-06-11 20:51:42 +0300
commit9673aa8c151b463e05922b192bcd403c2c7c319e (patch)
tree1f8895f21fd3ccbac9d26d7acbb584d20e97bd0f /source/blender/editors/transform/transform.c
parentbf892c10fc353aee82cf423de4bebbac5ac7dbd6 (diff)
Added point normals to target.
Moved common loop functions and made changes to structure
Diffstat (limited to 'source/blender/editors/transform/transform.c')
-rw-r--r--source/blender/editors/transform/transform.c66
1 files changed, 18 insertions, 48 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 63c734354a7..98d46eb1b66 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -108,8 +108,6 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], const
static void initSnapSpatial(TransInfo *t, float r_snap[3]);
static void StoreCustomlnorValue(TransInfo *t, BMesh *bm);
-static void InitTransDataNormal(TransInfo *t, BMesh *bm, TransDataLoopNormal *tob, BMLoop *l, int offset);
-
/* Transform Callbacks */
static void initBend(TransInfo *t);
@@ -1474,12 +1472,14 @@ int transformEvent(TransInfo *t, const wmEvent *event)
case NKEY:
if (ELEM(t->mode, TFM_ROTATION)) {
if (t->obedit && t->obedit->type == OB_MESH) {
- restoreTransObjects(t);
- resetTransModal(t);
- resetTransRestrictions(t);
- initNormalRotation(t);
- t->redraw = TREDRAW_HARD;
- handled = true;
+ if (((Mesh *)(t->obedit->data))->flag & ME_AUTOSMOOTH) {
+ restoreTransObjects(t);
+ resetTransModal(t);
+ resetTransRestrictions(t);
+ initNormalRotation(t);
+ t->redraw = TREDRAW_HARD;
+ handled = true;
+ }
}
}
break;
@@ -3766,7 +3766,6 @@ static void headerRotation(TransInfo *t, char str[UI_MAX_DRAW_STR], float final)
ofs += BLI_snprintf(str + ofs, UI_MAX_DRAW_STR - ofs, IFACE_("Rot: %.2f%s %s"),
RAD2DEGF(final), t->con.text, t->proptext);
}
- float x = RAD2DEGF(final);
if (t->flag & T_PROP_EDIT_ALL) {
ofs += BLI_snprintf(str + ofs, UI_MAX_DRAW_STR - ofs, IFACE_(" Proportional size: %.2f"), t->prop_size);
@@ -4195,20 +4194,6 @@ static void applyTrackball(TransInfo *t, const int UNUSED(mval[2]))
/** \name Transform Normal Rotation
* \{ */
-static void InitTransDataNormal(TransInfo *t, BMesh *bm, TransDataLoopNormal *tld, BMLoop *l, int offset)
-{
- int l_index = BM_elem_index_get(l);
- tld->loop_index = l_index;
- short *clnors_data = BM_ELEM_CD_GET_VOID_P(l, offset);
-
- float custom_normal[3];
- BKE_lnor_space_custom_data_to_normal(bm->bmspacearr.lspacearr[l_index], clnors_data, custom_normal);
-
- tld->clnors_data = clnors_data;
- copy_v3_v3(tld->loc, custom_normal);
- copy_v3_v3(tld->iloc, custom_normal);
-}
-
static void StoreCustomlnorValue(TransInfo *t, BMesh *bm)
{
TransDataLoopNormal *tob;
@@ -4223,11 +4208,7 @@ static void StoreCustomlnorValue(TransInfo *t, BMesh *bm)
copy_m3_m4(mtx, t->obedit->obmat);
pseudoinverse_m3_m3(smtx, mtx, PSEUDOINVERSE_EPSILON);
- BM_ITER_MESH(v, &viter, bm, BM_VERTS_OF_MESH) {
- if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
- totloopsel += BM_vert_face_count(v);
- }
- }
+ totloopsel = BM_total_loop_select(bm);
tob = ld->normal = MEM_mallocN(sizeof(TransData) * totloopsel, "__func__");
int cd_custom_normal_offset = CustomData_get_offset(&bm->ldata, CD_CUSTOMLOOPNORMAL);
@@ -4236,7 +4217,7 @@ static void StoreCustomlnorValue(TransInfo *t, BMesh *bm)
if (BM_elem_flag_test(v, BM_ELEM_SELECT)){
BM_ITER_ELEM(l, &liter, v, BM_LOOPS_OF_VERT) {
- InitTransDataNormal(t, bm, tob, l, cd_custom_normal_offset);
+ InitTransDataNormal(bm, tob, NULL, l, cd_custom_normal_offset);
copy_m3_m3(tob->smtx, smtx);
copy_m3_m3(tob->mtx, mtx);
tob++;
@@ -4260,7 +4241,7 @@ void freeCustomNormalArray(TransInfo *t, TransCustomData *custom_data)
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->bmspacearr.lspacearr[tld->loop_index], tld->iloc, tld->clnors_data);
+ BKE_lnor_space_custom_normal_to_data(bm->bmspacearr.lspacearr[tld->loop_index], tld->niloc, tld->clnors_data);
}
}
@@ -4286,20 +4267,9 @@ static void initNormalRotation(TransInfo *t)
BMEditMesh *em = BKE_editmesh_from_object(t->obedit);
Mesh *me = t->obedit->data;
BMesh *bm = em->bm;
- float(*lnors)[3];
- if (bm->bmspacearr.lspacearr == NULL) {
- if (CustomData_has_layer(&me->ldata, CD_NORMAL)) {
- lnors = CustomData_get_layer(&me->ldata, CD_NORMAL);
- }
- else {
- lnors = CustomData_add_layer(&me->ldata, CD_NORMAL, CD_DEFAULT, NULL, me->totloop);
- }
- BM_lnorspacearr_store(bm, lnors);
- }
- if (bm->spacearr_dirty & (BM_SPACEARR_DIRTY | BM_SPACEARR_DIRTY_ALL)) {
- BM_lnorspace_rebuild(bm, false);
- }
+ BM_lnorspace_update(bm);
+
StoreCustomlnorValue(t, bm);
copy_v3_v3(t->axis_orig, t->axis);
@@ -4343,15 +4313,15 @@ static void applyNormalRotation(TransInfo *t, const int mval[2])
mul_m3_m3m3(totmat, mat, tld->mtx);
mul_m3_m3m3(smat, tld->smtx, totmat);
- sub_v3_v3v3(vec, tld->iloc, center);
+ sub_v3_v3v3(vec, tld->niloc, center);
mul_m3_v3(smat, vec);
- add_v3_v3v3(tld->loc, vec, center);
+ add_v3_v3v3(tld->nloc, vec, center);
- sub_v3_v3v3(vec, tld->loc, tld->iloc);
- add_v3_v3v3(tld->loc, tld->iloc, vec);
+ sub_v3_v3v3(vec, tld->nloc, tld->niloc);
+ add_v3_v3v3(tld->nloc, tld->niloc, vec);
- BKE_lnor_space_custom_normal_to_data(bm->bmspacearr.lspacearr[tld->loop_index], tld->loc, tld->clnors_data);
+ BKE_lnor_space_custom_normal_to_data(bm->bmspacearr.lspacearr[tld->loop_index], tld->nloc, tld->clnors_data);
}
recalcData(t);