Revision: 41607
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41607
Author: campbellbarton
Date: 2011-11-07 11:08:33 +0000 (Mon, 07 Nov 2011)
Log Message:
-----------
don't write into bmesh edge indices when calculating solidify normals
Modified Paths:
--------------
branches/bmesh/blender/source/blender/bmesh/editmesh_tools.c
branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
Modified: branches/bmesh/blender/source/blender/bmesh/editmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/editmesh_tools.c
2011-11-07 09:33:49 UTC (rev 41606)
+++ branches/bmesh/blender/source/blender/bmesh/editmesh_tools.c
2011-11-07 11:08:33 UTC (rev 41607)
@@ -5227,7 +5227,7 @@
interp_v2_v2v2(uv_tmp, suv->origuv, (perc>=0)?suv->uv_up:suv->uv_down,
fabs(perc));
fuv_link =
suv->fuv_list;
while
(fuv_link) {
-
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+
copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
@@ -5257,7 +5257,7 @@
interp_v2_v2v2(uv_tmp, suv->uv_down, suv->uv_up, fabs(newlen));
fuv_link = suv->fuv_list;
while
(fuv_link) {
-
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+
copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
@@ -5274,7 +5274,7 @@
interp_v2_v2v2(uv_tmp, suv->uv_up, suv->uv_down, fabs(newlen));
fuv_link = suv->fuv_list;
while
(fuv_link) {
-
VECCOPY2D(((float *)fuv_link->link), uv_tmp);
+
copy_v2_v2(((float *)fuv_link->link), uv_tmp);
fuv_link = fuv_link->next;
}
}
Modified: branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
2011-11-07 09:33:49 UTC (rev 41606)
+++ branches/bmesh/blender/source/blender/bmesh/operators/extrudeops.c
2011-11-07 11:08:33 UTC (rev 41607)
@@ -348,16 +348,17 @@
float edge_normal[3];
int i;
- /* Clear indices of verts & edges */
+ /* can't use BM_Edge_FaceCount because we need to count only marked
faces */
+ int *edge_face_count= MEM_callocN(sizeof(int) * bm->totedge, __func__);
+
BM_ITER(v, &viter, bm, BM_VERTS_OF_MESH, NULL) {
BM_SetHFlag(v, BM_TMP_TAG);
}
- /* BMESH_TODO, don't abuse vertex index index info */
- /* this is used to count edge users, we can probably
- * use bmesh connectivity info here - campbell*/
+ /* todo - replace with func! */
+ i= 0;
BM_ITER(e, &eiter, bm, BM_EDGES_OF_MESH, NULL) {
- BM_SetIndex(e, 0);
+ BM_SetIndex(e, i++);
}
BM_ITER(f, &fiter, bm, BM_FACES_OF_MESH, NULL) {
@@ -366,15 +367,13 @@
}
BM_ITER(e, &eiter, bm, BM_EDGES_OF_FACE, f) {
- /* Count number of marked faces using e */
- i = BM_GetIndex(e);
- BM_SetIndex(e, i+1);
/* And mark all edges and vertices on the
marked faces */
BMO_SetFlag(bm, e, EDGE_MARK);
BMO_SetFlag(bm, e->v1, VERT_MARK);
BMO_SetFlag(bm, e->v2, VERT_MARK);
+ edge_face_count[BM_GetIndex(e)]++;
}
}
@@ -383,7 +382,7 @@
continue;
}
- i = BM_GetIndex(e);
+ i = edge_face_count[BM_GetIndex(e)]++;
if (i == 0 || i > 2) {
/* Edge & vertices are non-manifold even when
considering
@@ -393,6 +392,8 @@
BMO_SetFlag(bm, e->v2, VERT_NONMAN);
}
}
+ MEM_freeN(edge_face_count);
+ edge_face_count= NULL; /* dont re-use */
BM_ITER(v, &viter, bm, BM_VERTS_OF_MESH, NULL) {
if (BM_Nonmanifold_Vert(bm, v)) {
@@ -508,6 +509,7 @@
float *angles = NULL;
BLI_array_staticdeclare(angles, 16);
+ /* BMESH_TODO, remove this when we are sure the array will be valid */
i = 0;
BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) {
BM_SetIndex(v, i++);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs