diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-06-15 15:53:10 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-06-15 15:53:18 +0300 |
commit | cf42721fe28f7fb4c5419ff7a51cba72e986f491 (patch) | |
tree | c3d2b6b17af6a11f8f455ff0d80fca240c1a3c09 /source/blender/editors/transform/transform_mode_vert_slide.c | |
parent | 046afacbc69069a2244f10a3a38e2f8afd8a5f39 (diff) |
Cleanup: Rearrange Vert and Edge slide functions
And make `trans_mesh_customdata_correction` a more generic utility.
Diffstat (limited to 'source/blender/editors/transform/transform_mode_vert_slide.c')
-rw-r--r-- | source/blender/editors/transform/transform_mode_vert_slide.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/source/blender/editors/transform/transform_mode_vert_slide.c b/source/blender/editors/transform/transform_mode_vert_slide.c index 7bee48337f9..62415b1ddc6 100644 --- a/source/blender/editors/transform/transform_mode_vert_slide.c +++ b/source/blender/editors/transform/transform_mode_vert_slide.c @@ -197,7 +197,7 @@ static void calcVertSlideMouseActiveEdges(struct TransInfo *t, const int mval[2] } } -static bool createVertSlideVerts(TransInfo *t, TransDataContainer *tc) +static VertSlideData *createVertSlideVerts(TransInfo *t, const TransDataContainer *tc) { BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); BMesh *bm = em->bm; @@ -234,7 +234,7 @@ static bool createVertSlideVerts(TransInfo *t, TransDataContainer *tc) if (!j) { MEM_freeN(sld); - return false; + return NULL; } sv_array = MEM_callocN(sizeof(TransDataVertSlideVert) * j, "sv_array"); @@ -272,8 +272,6 @@ static bool createVertSlideVerts(TransInfo *t, TransDataContainer *tc) sld->sv = sv_array; sld->totsv = j; - tc->custom.mode.data = sld; - /* most likely will be set below */ unit_m4(sld->proj_mat); @@ -288,13 +286,7 @@ static bool createVertSlideVerts(TransInfo *t, TransDataContainer *tc) } } - /* XXX, calc vert slide across all objects */ - if (tc == t->data_container) { - calcVertSlideMouseActiveVert(t, t->mval); - calcVertSlideMouseActiveEdges(t, t->mval); - } - - return true; + return sld; } static void freeVertSlideVerts(TransInfo *UNUSED(t), @@ -381,13 +373,6 @@ static eRedrawFlag handleEventVertSlide(struct TransInfo *t, const struct wmEven return TREDRAW_NOTHING; } -void projectVertSlideData(TransInfo *t, bool is_final) -{ - FOREACH_TRANS_DATA_CONTAINER (t, tc) { - trans_mesh_customdata_correction_apply(tc, is_final); - } -} - void drawVertSlide(TransInfo *t) { if ((t->mode == TFM_VERT_SLIDE) && TRANS_DATA_CONTAINER_FIRST_OK(t)->custom.mode.data) { @@ -628,10 +613,12 @@ void initVertSlide_ex(TransInfo *t, bool use_even, bool flipped, bool use_clamp) bool ok = false; FOREACH_TRANS_DATA_CONTAINER (t, tc) { - ok |= createVertSlideVerts(t, tc); - VertSlideData *sld = tc->custom.mode.data; + VertSlideData *sld = createVertSlideVerts(t, tc); if (sld) { + tc->custom.mode.data = sld; tc->custom.mode.free_cb = freeVertSlideVerts; + trans_mesh_customdata_correction_init(t, tc); + ok = true; } } @@ -640,7 +627,8 @@ void initVertSlide_ex(TransInfo *t, bool use_even, bool flipped, bool use_clamp) return; } - trans_mesh_customdata_correction_init(t); + calcVertSlideMouseActiveVert(t, t->mval); + calcVertSlideMouseActiveEdges(t, t->mval); /* set custom point first if you want value to be initialized by init */ calcVertSlideCustomPoints(t); |