diff options
author | Campbell Barton <ideasman42@gmail.com> | 2006-03-27 09:28:36 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2006-03-27 09:28:36 +0400 |
commit | 75ce4ca859f7949193015462b5a203137656a7de (patch) | |
tree | 72e93a8148a3bb8733effb03a5980b9588b59894 /source/blender/src/transform_generics.c | |
parent | 7b1d69a35c80cffef4965616731deb68760b6fb2 (diff) |
Added rotate about centre for active Vert/Edge/Face in mesh editmode. also works for getting the V/E/F normal. Means we can now rotate about the last selected edge.
Diffstat (limited to 'source/blender/src/transform_generics.c')
-rwxr-xr-x | source/blender/src/transform_generics.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/source/blender/src/transform_generics.c b/source/blender/src/transform_generics.c index ae5b0704578..87113427dad 100755 --- a/source/blender/src/transform_generics.c +++ b/source/blender/src/transform_generics.c @@ -727,6 +727,31 @@ void calculateCenter(TransInfo *t) break; case V3D_ACTIVE: /* set median, and if if if... do object center */ + + /* EDIT MODE ACTIVE FACE */ + if (G.obedit && G.obedit->type == OB_MESH && G.editMesh->selected.last) { + EditSelection *ese= G.editMesh->selected.last; + EditFace *efa; + EditEdge *eed; + EditVert *eve; + float vec[3]= {0,0,0}; + if (ese->type==EDITVERT) { + eve= ese->data; + VecCopyf(vec, eve->co); + } else if (ese->type==EDITEDGE) { + eed= ese->data; + VecAddf(vec, eed->v1->co, eed->v2->co); + VecMulf(vec, 0.5); + } else if (ese->type==EDITFACE) { + efa= ese->data; + VecCopyf(vec, efa->cent); + } + VecCopyf(t->center, vec); + projectIntView(t, t->center, t->center2d); + break; + } + /* END EDIT MODE ACTIVE FACE */ + calculateCenterMedian(t); if((t->flag & (T_EDIT|T_POSE))==0) { Object *ob= OBACT; @@ -735,7 +760,6 @@ void calculateCenter(TransInfo *t) projectIntView(t, t->center, t->center2d); } } - } /* setting constraint center */ |