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:
Diffstat (limited to 'source/blender/editors/transform/transform_conversions.c')
-rw-r--r--source/blender/editors/transform/transform_conversions.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 595303c0da4..a506c1a902c 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -1931,6 +1931,19 @@ static void editmesh_set_connectivity_distance(BMEditMesh *em, float mtx[][3], f
}
}
+static void get_edge_center(float cent_r[3], BMesh *bm, BMVert *eve)
+{
+ BMEdge *eed;
+ BMIter iter;
+
+ BM_ITER(eed, &iter, bm, BM_EDGES_OF_VERT, eve) {
+ if (BM_Selected(bm, eed)) {
+ mid_v3_v3v3(cent_r, eed->v1->co, eed->v2->co);
+ break;
+ }
+ }
+}
+
/* way to overwrite what data is edited with transform
* static void VertsToTransData(TransData *td, EditVert *eve, BakeKey *key) */
static void VertsToTransData(TransInfo *t, TransData *td, BMEditMesh *em, BMVert *eve, float *bweight)
@@ -1942,8 +1955,13 @@ static void VertsToTransData(TransInfo *t, TransData *td, BMEditMesh *em, BMVert
td->loc = eve->co;
copy_v3_v3(td->center, td->loc);
- if(t->around==V3D_LOCAL && (em->selectmode & SCE_SELECT_FACE))
- get_face_center(td->center, em->bm, eve);
+
+ if(t->around==V3D_LOCAL) {
+ if(em->selectmode & SCE_SELECT_FACE)
+ get_face_center(td->center, em->bm, eve);
+ else if(em->selectmode & SCE_SELECT_EDGE)
+ get_edge_center(td->center, em->bm, eve);
+ }
copy_v3_v3(td->iloc, td->loc);
// Setting normals