Commit: 6111da36297dd9d40878c5805dac4b7659ee6ecd
Author: Campbell Barton
Date:   Fri May 1 06:18:04 2015 +1000
Branches: master
https://developer.blender.org/rB6111da36297dd9d40878c5805dac4b7659ee6ecd

BMesh: add bmesh_disk_vert_replace

===================================================================

M       source/blender/bmesh/intern/bmesh_core.c
M       source/blender/bmesh/intern/bmesh_structure.c
M       source/blender/bmesh/intern/bmesh_structure.h

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_core.c 
b/source/blender/bmesh/intern/bmesh_core.c
index 81cc972..87f700a 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -1508,14 +1508,7 @@ BMVert *bmesh_semv(BMesh *bm, BMVert *tv, BMEdge *e, 
BMEdge **r_e)
        bmesh_disk_edge_remove(e_new, tv);
        bmesh_disk_edge_remove(e_new, v_new);
 
-       /* remove e from tv's disk cycle */
-       bmesh_disk_edge_remove(e, tv);
-
-       /* swap out tv for v_new in e */
-       bmesh_disk_vert_swap(e, v_new, tv);
-
-       /* add e to v_new's disk cycle */
-       bmesh_disk_edge_append(e, v_new);
+       bmesh_disk_vert_replace(e, v_new, tv);
 
        /* add e_new to v_new's disk cycle */
        bmesh_disk_edge_append(e_new, v_new);
@@ -1726,12 +1719,8 @@ BMEdge *bmesh_jekv(
                                e_splice = BM_edge_exists(tv, v_old);
                        }
 
-                       /* remove e_old from v_kill's disk cycle */
-                       bmesh_disk_edge_remove(e_old, v_kill);
-                       /* relink e_old->v_kill to be e_old->tv */
-                       bmesh_disk_vert_swap(e_old, tv, v_kill);
-                       /* append e_old to tv's disk cycle */
-                       bmesh_disk_edge_append(e_old, tv);
+                       bmesh_disk_vert_replace(e_old, tv, v_kill);
+
                        /* remove e_kill from tv's disk cycle */
                        bmesh_disk_edge_remove(e_kill, tv);
 
@@ -2471,9 +2460,7 @@ BMVert *bmesh_urmv_loop_multi(
                        }
                        else {
                                /* we own the edge entirely, replace the vert */
-                               bmesh_disk_edge_remove(e, v_sep);
-                               bmesh_disk_vert_swap(e, v_new, v_sep);
-                               bmesh_disk_edge_append(e, v_new);
+                               bmesh_disk_vert_replace(e, v_new, v_sep);
                        }
 
                        /* loop vert is handled last! */
diff --git a/source/blender/bmesh/intern/bmesh_structure.c 
b/source/blender/bmesh/intern/bmesh_structure.c
index 30ab693..5bc36ce 100644
--- a/source/blender/bmesh/intern/bmesh_structure.c
+++ b/source/blender/bmesh/intern/bmesh_structure.c
@@ -74,10 +74,15 @@ void bmesh_edge_vert_swap(BMEdge *e, BMVert *v_dst, BMVert 
*v_src)
        }
 
        /* swap out edges */
+       bmesh_disk_vert_replace(e, v_dst, v_src);
+}
+
+void bmesh_disk_vert_replace(BMEdge *e, BMVert *v_dst, BMVert *v_src)
+{
        BLI_assert(e->v1 == v_src || e->v2 == v_src);
-       bmesh_disk_edge_remove(e, v_src);
-       bmesh_disk_vert_swap(e, v_dst, v_src);
-       bmesh_disk_edge_append(e, v_dst);
+       bmesh_disk_edge_remove(e, v_src);               /* remove e from tv's 
disk cycle */
+       bmesh_disk_vert_swap(e, v_dst, v_src);  /* swap out tv for v_new in e */
+       bmesh_disk_edge_append(e, v_dst);               /* add e to v_dst's 
disk cycle */
        BLI_assert(e->v1 != e->v2);
 }
 
@@ -114,6 +119,7 @@ void bmesh_edge_vert_swap(BMEdge *e, BMVert *v_dst, BMVert 
*v_src)
  * the disk cycle has no problems dealing with non-manifold conditions 
involving faces.
  *
  * Functions relating to this cycle:
+ * - #bmesh_disk_vert_replace
  * - #bmesh_disk_edge_append
  * - #bmesh_disk_edge_remove
  * - #bmesh_disk_edge_next
diff --git a/source/blender/bmesh/intern/bmesh_structure.h 
b/source/blender/bmesh/intern/bmesh_structure.h
index 9d9fb7f..07f9479 100644
--- a/source/blender/bmesh/intern/bmesh_structure.h
+++ b/source/blender/bmesh/intern/bmesh_structure.h
@@ -72,6 +72,7 @@ bool    bmesh_radial_validate(int radlen, BMLoop *l) 
ATTR_WARN_UNUSED_RESULT ATT
 /* EDGE UTILITIES */
 void    bmesh_disk_vert_swap(BMEdge *e, BMVert *v_dst, BMVert *v_src) 
ATTR_NONNULL();
 void    bmesh_edge_vert_swap(BMEdge *e, BMVert *v_dst, BMVert *v_src) 
ATTR_NONNULL();
+void    bmesh_disk_vert_replace(BMEdge *e, BMVert *v_dst, BMVert *v_src) 
ATTR_NONNULL();
 BMEdge *bmesh_disk_edge_exists(const BMVert *v1, const BMVert *v2) 
ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
 bool    bmesh_disk_validate(int len, BMEdge *e, BMVert *v) 
ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to