[Bf-blender-cvs] [bee47fe7d5c] temp-object-multi-mode: Vertex slide now works on a basic level
Campbell Barton
noreply at git.blender.org
Tue Apr 10 19:12:03 CEST 2018
Commit: bee47fe7d5c4fdbbe00f56e545e130b375b358ba
Author: Campbell Barton
Date: Tue Apr 10 15:46:03 2018 +0200
Branches: temp-object-multi-mode
https://developer.blender.org/rBbee47fe7d5c4fdbbe00f56e545e130b375b358ba
Vertex slide now works on a basic level
===================================================================
M source/blender/editors/transform/transform.c
===================================================================
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 9ce0bf26159..d1d5d2953b0 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -5732,12 +5732,12 @@ static void slide_origdata_interp_data_vert(
}
static void slide_origdata_interp_data(
- TransInfo *t, SlideOrigData *sod,
+ Object *obedit, SlideOrigData *sod,
TransDataGenericSlideVert *sv, unsigned int v_stride, unsigned int v_num,
bool is_final)
{
if (sod->use_origfaces) {
- BMEditMesh *em = BKE_editmesh_from_object(THAND_FIRST_EVIL(t)->obedit);
+ BMEditMesh *em = BKE_editmesh_from_object(obedit);
BMesh *bm = em->bm;
unsigned int i;
const bool has_mdisps = (sod->cd_loop_mdisp_offset != -1);
@@ -5997,11 +5997,11 @@ static BMLoop *get_next_loop(BMVert *v, BMLoop *l,
* Calculate screenspace `mval_start` / `mval_end`, optionally slide direction.
*/
static void calcEdgeSlide_mval_range(
- TransInfo *t, EdgeSlideData *sld, const int *sv_table, const int loop_nr,
+ TransInfo *t, TransHandle *th, EdgeSlideData *sld, const int *sv_table, const int loop_nr,
const float mval[2], const bool use_occlude_geometry, const bool use_calc_direction)
{
TransDataEdgeSlideVert *sv_array = sld->sv;
- BMEditMesh *em = BKE_editmesh_from_object(THAND_FIRST_EVIL(t)->obedit);
+ BMEditMesh *em = BKE_editmesh_from_object(th->obedit);
BMesh *bm = em->bm;
ARegion *ar = t->ar;
View3D *v3d = NULL;
@@ -6028,7 +6028,7 @@ static void calcEdgeSlide_mval_range(
unit_m4(projectMat);
}
else {
- ED_view3d_ob_project_mat_get(rv3d, THAND_FIRST_EVIL(t)->obedit, projectMat);
+ ED_view3d_ob_project_mat_get(rv3d, th->obedit, projectMat);
}
if (use_occlude_geometry) {
@@ -6071,7 +6071,7 @@ static void calcEdgeSlide_mval_range(
/* This test is only relevant if object is not wire-drawn! See [#32068]. */
if (use_occlude_geometry &&
- !BMBVH_EdgeVisible(bmbvh, e_other, t->depsgraph, ar, v3d, THAND_FIRST_EVIL(t)->obedit))
+ !BMBVH_EdgeVisible(bmbvh, e_other, t->depsgraph, ar, v3d, th->obedit))
{
continue;
}
@@ -6159,7 +6159,7 @@ static void calcEdgeSlide_mval_range(
}
static void calcEdgeSlide_even(
- TransInfo *t, EdgeSlideData *sld, const float mval[2])
+ TransInfo *t, TransHandle *th, EdgeSlideData *sld, const float mval[2])
{
TransDataEdgeSlideVert *sv = sld->sv;
@@ -6184,7 +6184,7 @@ static void calcEdgeSlide_even(
unit_m4(projectMat);
}
else {
- ED_view3d_ob_project_mat_get(rv3d, THAND_FIRST_EVIL(t)->obedit, projectMat);
+ ED_view3d_ob_project_mat_get(rv3d, th->obedit, projectMat);
}
for (i = 0; i < sld->totsv; i++, sv++) {
@@ -6543,10 +6543,10 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransHandle *th, bool
if (t->spacetype == SPACE_VIEW3D) {
v3d = t->sa ? t->sa->spacedata.first : NULL;
rv3d = t->ar ? t->ar->regiondata : NULL;
- use_occlude_geometry = (v3d && THAND_FIRST_EVIL(t)->obedit->dt > OB_WIRE && v3d->drawtype > OB_WIRE);
+ use_occlude_geometry = (v3d && THAND_FIRST_OK(t)->obedit->dt > OB_WIRE && v3d->drawtype > OB_WIRE);
}
- calcEdgeSlide_mval_range(t, sld, sv_table, loop_nr, mval, use_occlude_geometry, true);
+ calcEdgeSlide_mval_range(t, th, sld, sv_table, loop_nr, mval, use_occlude_geometry, true);
/* create copies of faces for customdata projection */
bmesh_edit_begin(bm, BMO_OPTYPE_FLAG_UNTAN_MULTIRES);
@@ -6554,7 +6554,7 @@ static bool createEdgeSlideVerts_double_side(TransInfo *t, TransHandle *th, bool
slide_origdata_create_data(t, th, &sld->orig_data, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv);
if (rv3d) {
- calcEdgeSlide_even(t, sld, mval);
+ calcEdgeSlide_even(t, th, sld, mval);
}
sld->em = em;
@@ -6746,10 +6746,10 @@ static bool createEdgeSlideVerts_single_side(TransInfo *t, TransHandle *th, bool
if (t->spacetype == SPACE_VIEW3D) {
v3d = t->sa ? t->sa->spacedata.first : NULL;
rv3d = t->ar ? t->ar->regiondata : NULL;
- use_occlude_geometry = (v3d && THAND_FIRST_EVIL(t)->obedit->dt > OB_WIRE && v3d->drawtype > OB_WIRE);
+ use_occlude_geometry = (v3d && THAND_FIRST_OK(t)->obedit->dt > OB_WIRE && v3d->drawtype > OB_WIRE);
}
- calcEdgeSlide_mval_range(t, sld, sv_table, loop_nr, mval, use_occlude_geometry, false);
+ calcEdgeSlide_mval_range(t, th, sld, sv_table, loop_nr, mval, use_occlude_geometry, false);
/* create copies of faces for customdata projection */
bmesh_edit_begin(bm, BMO_OPTYPE_FLAG_UNTAN_MULTIRES);
@@ -6757,7 +6757,7 @@ static bool createEdgeSlideVerts_single_side(TransInfo *t, TransHandle *th, bool
slide_origdata_create_data(t, th, &sld->orig_data, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv);
if (rv3d) {
- calcEdgeSlide_even(t, sld, mval);
+ calcEdgeSlide_even(t, th, sld, mval);
}
sld->em = em;
@@ -6781,7 +6781,7 @@ void projectEdgeSlideData(TransInfo *t, bool is_final)
return;
}
- slide_origdata_interp_data(t, sod, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv, is_final);
+ slide_origdata_interp_data(th->obedit, sod, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv, is_final);
} // FIXME(indent)
}
@@ -6931,7 +6931,7 @@ static void drawEdgeSlide(TransInfo *t)
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
gpuPushMatrix();
- gpuMultMatrix(THAND_FIRST_EVIL(t)->obedit->obmat);
+ gpuMultMatrix(THAND_FIRST_OK(t)->obedit->obmat);
unsigned int pos = GWN_vertformat_attr_add(immVertexFormat(), "pos", GWN_COMP_F32, 3, GWN_FETCH_FLOAT);
@@ -7166,7 +7166,7 @@ static void applyEdgeSlide(TransInfo *t, const int UNUSED(mval[2]))
static void calcVertSlideCustomPoints(struct TransInfo *t)
{
- VertSlideData *sld = THAND_FIRST_EVIL(t)->custom.mode.data;
+ VertSlideData *sld = THAND_FIRST_OK(t)->custom.mode.data;
TransDataVertSlideVert *sv = &sld->sv[sld->curr_sv_index];
const float *co_orig_3d = sv->co_orig_3d;
@@ -7202,7 +7202,7 @@ static void calcVertSlideCustomPoints(struct TransInfo *t)
static void calcVertSlideMouseActiveVert(struct TransInfo *t, const int mval[2])
{
/* Active object may have no selected vertices. */
- VertSlideData *sld = THAND_FIRST_EVIL(t)->custom.mode.data;
+ VertSlideData *sld = THAND_FIRST_OK(t)->custom.mode.data;
float mval_fl[2] = {UNPACK2(mval)};
TransDataVertSlideVert *sv;
@@ -7229,7 +7229,7 @@ static void calcVertSlideMouseActiveVert(struct TransInfo *t, const int mval[2])
*/
static void calcVertSlideMouseActiveEdges(struct TransInfo *t, const int mval[2])
{
- VertSlideData *sld = THAND_FIRST_EVIL(t)->custom.mode.data;
+ VertSlideData *sld = THAND_FIRST_OK(t)->custom.mode.data;
float imval_fl[2] = {UNPACK2(t->mouse.imval)};
float mval_fl[2] = {UNPACK2(mval)};
@@ -7257,7 +7257,7 @@ static void calcVertSlideMouseActiveEdges(struct TransInfo *t, const int mval[2]
float dir_dot;
sub_v3_v3v3(tdir, sv->co_orig_3d, sv->co_link_orig_3d[j]);
- mul_mat3_m4_v3(THAND_FIRST_EVIL(t)->obedit->obmat, tdir);
+ mul_mat3_m4_v3(THAND_FIRST_OK(t)->obedit->obmat, tdir);
project_plane_v3_v3v3(tdir, tdir, t->viewinv[2]);
normalize_v3(tdir);
@@ -7277,7 +7277,7 @@ static void calcVertSlideMouseActiveEdges(struct TransInfo *t, const int mval[2]
static bool createVertSlideVerts(TransInfo *t, TransHandle *th, bool use_even, bool flipped, bool use_clamp)
{
- BMEditMesh *em = BKE_editmesh_from_object(THAND_FIRST_EVIL(t)->obedit);
+ BMEditMesh *em = BKE_editmesh_from_object(th->obedit);
BMesh *bm = em->bm;
BMIter iter;
BMIter eiter;
@@ -7375,7 +7375,7 @@ static bool createVertSlideVerts(TransInfo *t, TransHandle *th, bool use_even, b
rv3d = ar ? ar->regiondata : NULL;
if (rv3d) {
- ED_view3d_ob_project_mat_get(rv3d, THAND_FIRST_EVIL(t)->obedit, sld->proj_mat);
+ ED_view3d_ob_project_mat_get(rv3d, th->obedit, sld->proj_mat);
}
}
@@ -7394,7 +7394,7 @@ void projectVertSlideData(TransInfo *t, bool is_final)
VertSlideData *sld = th->custom.mode.data;
SlideOrigData *sod = &sld->orig_data;
if (sod->use_origfaces == true) {
- slide_origdata_interp_data(t, sod, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv, is_final);
+ slide_origdata_interp_data(th->obedit, sod, (TransDataGenericSlideVert *)sld->sv, sizeof(*sld->sv), sld->totsv, is_final);
}
} // FIXME(indent)
}
@@ -7557,7 +7557,7 @@ static void drawVertSlide(TransInfo *t)
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
gpuPushMatrix();
- gpuMultMatrix(THAND_FIRST_EVIL(t)->obedit->obmat);
+ gpuMultMatrix(THAND_FIRST_OK(t)->obedit->obmat);
glLineWidth(line_size);
@@ -7612,13 +7612,13 @@ static void drawVertSlide(TransInfo *t)
mval_ofs[0] = t->mval[0] - t->mouse.imval[0];
mval_ofs[1] = t->mval[1] - t->mouse.imval[1];
- mul_v3_m4v3(co_orig_3d, THAND_FIRST_EVIL(t)->obedit->obmat, curr_sv->co_orig_3d);
+ mul_v3_m4v3(co_orig_3d, THAND_FIRST_OK(t)->obedit->obmat, curr_sv->co_orig_3d);
zfac = ED_view3d_calc_zfac(t->ar->regiondata, co_orig_3d, NULL);
ED_view3d_win_to_delta(t->ar, mval_ofs, co_dest_3d, zfac);
- invert_m4_m4(THAND_FIRST_EVIL(t)->obedit->imat, THAND_FIRST_EVIL(t)->obedit->obmat);
- mul_mat3_m4_v3(THAND_FIRST_EVIL(t)->obedit->imat, co_dest_3d);
+ invert_m4_m4(THAND_FIRST_OK(t)->obedit->imat, THAND_FIRST_OK(t)->obedit->obmat);
+ mul_mat3_m4_v3(THAND_FIRST_OK(t)->obedit->imat, co_dest_3d);
add_v3_v3(co_dest_3d, curr_sv->co_orig_3d);
@@ -7653,7 +7653,8 @@ static void drawVertSlide(TransInfo *t)
static void doVertSlide(TransInfo *t, float perc)
{
- VertSlideData *sld = THAND_FIRST_OK(t)->custom.mode.data;
+ FOREACH_THAND (t, th) {
+ VertSlideData *sld = th->custom.mode.data;
TransDataVertSlideVert *svlist = sld->sv, *sv;
int i;
@@ -7690,6 +7691,7 @@ static void doVertSlide(TransInfo *t, float perc)
}
}
}
+ } // FIXME(indent)
}
static void applyVertSlide(TransInfo *t, const int UNUSED(mval[2]))
More information about the Bf-blender-cvs
mailing list