[Bf-blender-cvs] [7a98c43] master: BMesh: minor improvement to edge-split assignment
Campbell Barton
noreply at git.blender.org
Mon Nov 7 20:44:19 CET 2016
Commit: 7a98c43f9d9794e8aef9bd1173e123c7ca0447bc
Author: Campbell Barton
Date: Tue Nov 8 04:12:10 2016 +1100
Branches: master
https://developer.blender.org/rB7a98c43f9d9794e8aef9bd1173e123c7ca0447bc
BMesh: minor improvement to edge-split assignment
===================================================================
M source/blender/bmesh/intern/bmesh_mods.c
===================================================================
diff --git a/source/blender/bmesh/intern/bmesh_mods.c b/source/blender/bmesh/intern/bmesh_mods.c
index d3c847d..3979374 100644
--- a/source/blender/bmesh/intern/bmesh_mods.c
+++ b/source/blender/bmesh/intern/bmesh_mods.c
@@ -598,18 +598,13 @@ BMVert *BM_edge_collapse(
BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float fac)
{
BMVert *v_new, *v_other;
+ BMEdge *e_new;
BMFace **oldfaces = NULL;
- BMEdge *e_dummy;
BLI_array_staticdeclare(oldfaces, 32);
const int cd_loop_mdisp_offset = BM_edge_is_wire(e) ? -1 : CustomData_get_offset(&bm->ldata, CD_MDISPS);
BLI_assert(BM_vert_in_edge(e, v) == true);
- /* we need this for handling multi-res */
- if (!r_e) {
- r_e = &e_dummy;
- }
-
/* do we have a multi-res layer? */
if (cd_loop_mdisp_offset != -1) {
BMLoop *l;
@@ -630,17 +625,20 @@ BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float fac)
}
v_other = BM_edge_other_vert(e, v);
- v_new = bmesh_semv(bm, v, e, r_e);
+ v_new = bmesh_semv(bm, v, e, &e_new);
+ if (r_e != NULL) {
+ *r_e = e_new;
+ }
BLI_assert(v_new != NULL);
- BLI_assert(BM_vert_in_edge(*r_e, v) && BM_vert_in_edge(*r_e, v_new));
+ BLI_assert(BM_vert_in_edge(e_new, v) && BM_vert_in_edge(e_new, v_new));
BLI_assert(BM_vert_in_edge(e, v_new) && BM_vert_in_edge(e, v_other));
sub_v3_v3v3(v_new->co, v_other->co, v->co);
madd_v3_v3v3fl(v_new->co, v->co, v_new->co, fac);
- (*r_e)->head.hflag = e->head.hflag;
- BM_elem_attrs_copy(bm, bm, e, *r_e);
+ e_new->head.hflag = e->head.hflag;
+ BM_elem_attrs_copy(bm, bm, e, e_new);
/* v->v_new->v2 */
BM_data_interp_face_vert_edge(bm, v_other, v, v_new, e, fac);
@@ -656,7 +654,7 @@ BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float fac)
BM_face_calc_center_mean(oldfaces[i], f_center_old);
for (j = 0; j < 2; j++) {
- BMEdge *e1 = j ? *r_e : e;
+ BMEdge *e1 = j ? e_new : e;
BMLoop *l;
l = e1->l;
@@ -689,7 +687,7 @@ BMVert *BM_edge_split(BMesh *bm, BMEdge *e, BMVert *v, BMEdge **r_e, float fac)
/* fix boundaries a bit, doesn't work too well quite yet */
#if 0
for (j = 0; j < 2; j++) {
- BMEdge *e1 = j ? *r_e : e;
+ BMEdge *e1 = j ? e_new : e;
BMLoop *l, *l2;
l = e1->l;
More information about the Bf-blender-cvs
mailing list