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:
authorCampbell Barton <ideasman42@gmail.com>2013-04-26 19:05:19 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-04-26 19:05:19 +0400
commitdfc406fc2c5b4e547330c5383cf6c555e5866511 (patch)
tree22813b3a2859c2cdab228b889f650e963ca24107 /source/blender/bmesh/operators/bmo_subdivide.c
parent722175e4b95ca1b5df199012789d5edefbc69863 (diff)
fix/feature [#35085] Loop cut slide
Loop cut slide now works with multicut. issue is that since edge slide now supports more configurations, cases where loop-cut-slide silently failed before, now slide (albeit in an awkward way at times). Fix this my adjusting the selection of after loopcut so edge slide can properly operate on it.
Diffstat (limited to 'source/blender/bmesh/operators/bmo_subdivide.c')
-rw-r--r--source/blender/bmesh/operators/bmo_subdivide.c32
1 files changed, 7 insertions, 25 deletions
diff --git a/source/blender/bmesh/operators/bmo_subdivide.c b/source/blender/bmesh/operators/bmo_subdivide.c
index 8df52c3a6ae..157dbef6057 100644
--- a/source/blender/bmesh/operators/bmo_subdivide.c
+++ b/source/blender/bmesh/operators/bmo_subdivide.c
@@ -1086,10 +1086,12 @@ void bmo_subdivide_edges_exec(BMesh *bm, BMOperator *op)
for (j = 0; j < BLI_array_count(loops_split); j++) {
if (loops_split[j][0]) {
+ BMFace *f_new;
BLI_assert(BM_edge_exists(loops_split[j][0]->v, loops_split[j][1]->v) == NULL);
-
- /* BMFace *f_new = */ /* UNUSED */
- BM_face_split(bm, face, loops_split[j][0]->v, loops_split[j][1]->v, &l_new, NULL, false);
+ f_new = BM_face_split(bm, face, loops_split[j][0]->v, loops_split[j][1]->v, &l_new, NULL, false);
+ if (f_new) {
+ BMO_elem_flag_enable(bm, l_new->e, ELE_INNER);
+ }
}
}
@@ -1183,28 +1185,8 @@ void BM_mesh_esubdivide(BMesh *bm, const char edge_hflag,
/* deselect input */
BM_mesh_elem_hflag_disable_all(bm, BM_VERT | BM_EDGE | BM_FACE, BM_ELEM_SELECT, false);
- for (ele = BMO_iter_new(&iter, op.slots_out, "geom_inner.out", BM_EDGE | BM_VERT); ele; ele = BMO_iter_step(&iter)) {
- BM_elem_select_set(bm, ele, true);
-
- if (ele->head.htype == BM_VERT) {
- BMEdge *e;
- BMIter eiter;
-
- BM_ITER_ELEM (e, &eiter, ele, BM_EDGES_OF_VERT) {
- if (!BM_elem_flag_test(e, BM_ELEM_SELECT) &&
- BM_elem_flag_test(e->v1, BM_ELEM_SELECT) &&
- BM_elem_flag_test(e->v2, BM_ELEM_SELECT))
- {
- BM_edge_select_set(bm, e, true);
- }
- else if (BM_elem_flag_test(e, BM_ELEM_SELECT) &&
- (!BM_elem_flag_test(e->v1, BM_ELEM_SELECT) ||
- !BM_elem_flag_test(e->v2, BM_ELEM_SELECT)))
- {
- BM_edge_select_set(bm, e, false);
- }
- }
- }
+ for (ele = BMO_iter_new(&iter, op.slots_out, "geom_inner.out", BM_EDGE); ele; ele = BMO_iter_step(&iter)) {
+ BM_edge_select_set(bm, (BMEdge *)ele, true);
}
}