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-05-23 10:19:04 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-23 10:19:04 +0400
commit0ff22044cd130c1a1b534522ee89b1194a91d0ac (patch)
tree991b0e1463393d4bd9415f8021c499c19eba74a0 /source/blender/bmesh/intern/bmesh_edgeloop.c
parent4625e7043065b7dbb405fee6acb2f36d21a8bf67 (diff)
Support for bridge tool subdivisions, smoothing and shape along the profile.
also added the underlying subdivision as a standalone operator in the edge menu, named: subdivide edge-ring. http://www.graphicall.org/ftp/ideasman42/bridge_subd.png
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_edgeloop.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_edgeloop.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/source/blender/bmesh/intern/bmesh_edgeloop.c b/source/blender/bmesh/intern/bmesh_edgeloop.c
index 7ebefbb8d92..816b2a1547e 100644
--- a/source/blender/bmesh/intern/bmesh_edgeloop.c
+++ b/source/blender/bmesh/intern/bmesh_edgeloop.c
@@ -504,9 +504,28 @@ const float *BM_edgeloop_center_get(struct BMEdgeLoopStore *el_store)
return el_store->co;
}
-
+#define NODE_AS_V(n) ((BMVert *)((LinkData *)n)->data)
#define NODE_AS_CO(n) ((BMVert *)((LinkData *)n)->data)->co
+/**
+ * edges are assined to one vert -> the next.
+ */
+void BM_edgeloop_edges_get(struct BMEdgeLoopStore *el_store, BMEdge **e_arr)
+{
+ LinkData *node;
+ int i = 0;
+ for (node = el_store->verts.first; node && node->next; node = node->next) {
+ e_arr[i++] = BM_edge_exists(NODE_AS_V(node), NODE_AS_V(node->next));
+ BLI_assert(e_arr[i - 1] != NULL);
+ }
+
+ if (el_store->flag & BM_EDGELOOP_IS_CLOSED) {
+ e_arr[i] = BM_edge_exists(NODE_AS_V(el_store->verts.first), NODE_AS_V(el_store->verts.last));
+ BLI_assert(e_arr[i] != NULL);
+ }
+ BLI_assert(el_store->len == i + 1);
+}
+
void BM_edgeloop_calc_center(BMesh *UNUSED(bm), BMEdgeLoopStore *el_store)
{
LinkData *node_curr = el_store->verts.last;