diff options
author | Julian Eisel <julian@blender.org> | 2020-06-16 12:31:33 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-06-16 12:31:33 +0300 |
commit | cfde6ebf450594faa57c4bfeaecff10fe512c91b (patch) | |
tree | 7fb4059f2575c720e8a5a5c19e6c5bd6441dc300 /source/blender/editors/transform/transform_mode_edge_slide.c | |
parent | 5e50380ddc99dd8c8c8067482b2dce186e7c3fb4 (diff) | |
parent | d2587f6f930cd858c0d646c2bdd5242ed2506cdf (diff) |
Merge branch 'master' into asset-uuid
Diffstat (limited to 'source/blender/editors/transform/transform_mode_edge_slide.c')
-rw-r--r-- | source/blender/editors/transform/transform_mode_edge_slide.c | 58 |
1 files changed, 17 insertions, 41 deletions
diff --git a/source/blender/editors/transform/transform_mode_edge_slide.c b/source/blender/editors/transform/transform_mode_edge_slide.c index 9f9e5742ffe..42f75f041b9 100644 --- a/source/blender/editors/transform/transform_mode_edge_slide.c +++ b/source/blender/editors/transform/transform_mode_edge_slide.c @@ -519,7 +519,7 @@ static void calcEdgeSlide_even(TransInfo *t, } } -static bool createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *tc) +static EdgeSlideData *createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *tc) { BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); BMesh *bm = em->bm; @@ -554,8 +554,9 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *t } if (numsel == 0 || numsel > 2) { + /* Invalid edge selection. */ MEM_freeN(sld); - return false; /* invalid edge selection */ + return NULL; } } } @@ -566,7 +567,7 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *t if (!BM_edge_is_manifold(e) && !BM_edge_is_boundary(e)) { /* can edges with at least once face user */ MEM_freeN(sld); - return false; + return NULL; } } } @@ -595,7 +596,7 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *t if (!j) { MEM_freeN(sld); MEM_freeN(sv_table); - return false; + return NULL; } sv_tot = j; } @@ -870,18 +871,16 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransDataContainer *t calcEdgeSlide_even(t, tc, sld, mval); } - tc->custom.mode.data = sld; - MEM_freeN(sv_table); - return true; + return sld; } /** * A simple version of #createEdgeSlideVerts_double_side * Which assumes the longest unselected. */ -static bool createEdgeSlideVerts_single_side(TransInfo *t, TransDataContainer *tc) +static EdgeSlideData *createEdgeSlideVerts_single_side(TransInfo *t, TransDataContainer *tc) { BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); BMesh *bm = em->bm; @@ -933,7 +932,7 @@ static bool createEdgeSlideVerts_single_side(TransInfo *t, TransDataContainer *t if (!j) { MEM_freeN(sld); - return false; + return NULL; } sv_tot = j; @@ -1055,24 +1054,9 @@ static bool createEdgeSlideVerts_single_side(TransInfo *t, TransDataContainer *t calcEdgeSlide_even(t, tc, sld, mval); } - tc->custom.mode.data = sld; - MEM_freeN(sv_table); - return true; -} - -void projectEdgeSlideData(TransInfo *t, bool is_final) -{ - FOREACH_TRANS_DATA_CONTAINER (t, tc) { - EdgeSlideData *sld = tc->custom.mode.data; - - if (sld == NULL) { - continue; - } - - trans_mesh_customdata_correction_apply(tc, is_final); - } + return sld; } static void freeEdgeSlideVerts(TransInfo *UNUSED(t), @@ -1450,12 +1434,14 @@ void initEdgeSlide_ex( if (use_double_side) { FOREACH_TRANS_DATA_CONTAINER (t, tc) { - ok |= createEdgeSlideVerts_double_side(t, tc); - } - } - else { - FOREACH_TRANS_DATA_CONTAINER (t, tc) { - ok |= createEdgeSlideVerts_single_side(t, tc); + sld = use_double_side ? createEdgeSlideVerts_double_side(t, tc) : + createEdgeSlideVerts_single_side(t, tc); + if (sld) { + tc->custom.mode.data = sld; + tc->custom.mode.free_cb = freeEdgeSlideVerts; + trans_mesh_customdata_correction_init(t, tc); + ok = true; + } } } @@ -1464,16 +1450,6 @@ void initEdgeSlide_ex( return; } - FOREACH_TRANS_DATA_CONTAINER (t, tc) { - sld = tc->custom.mode.data; - if (!sld) { - continue; - } - tc->custom.mode.free_cb = freeEdgeSlideVerts; - } - - trans_mesh_customdata_correction_init(t); - /* set custom point first if you want value to be initialized by init */ calcEdgeSlideCustomPoints(t); initMouseInputMode(t, &t->mouse, INPUT_CUSTOM_RATIO_FLIP); |