[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41904] branches/bmesh/blender/source/ blender: set the index on newly added vert/edge/faces

Campbell Barton ideasman42 at gmail.com
Wed Nov 16 07:17:57 CET 2011


Revision: 41904
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41904
Author:   campbellbarton
Date:     2011-11-16 06:17:56 +0000 (Wed, 16 Nov 2011)
Log Message:
-----------
set the index on newly added vert/edge/faces

added BM_ElemIndex_Ensure(...), not used yet.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mesh.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c
    branches/bmesh/blender/source/blender/editors/mesh/knifetool.c

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h	2011-11-16 03:56:34 UTC (rev 41903)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h	2011-11-16 06:17:56 UTC (rev 41904)
@@ -87,14 +87,14 @@
  *
 */
 
-/*BMHeader->type*/
+/*BMHeader->htype (char) */
 #define BM_VERT 	1
 #define BM_EDGE 	2
 #define BM_LOOP 	4
 #define BM_FACE 	8
 #define BM_ALL		(BM_VERT | BM_EDGE | BM_LOOP | BM_FACE)
 
-/*BMHeader->flag*/
+/*BMHeader->hflag (char, all bits used!) */
 #define BM_SELECT	(1<<0)
 
 #define BM_SEAM		(1<<1)
@@ -305,6 +305,8 @@
 /*clear all data in bm*/
 void BM_Clear_Mesh(BMesh *bm);
 
+void BM_ElemIndex_Ensure(BMesh *bm, const char hflag);
+
 /*start/stop edit*/
 void bmesh_begin_edit(struct BMesh *bm, int flag);
 void bmesh_end_edit(struct BMesh *bm, int flag);

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mesh.c	2011-11-16 03:56:34 UTC (rev 41903)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mesh.c	2011-11-16 06:17:56 UTC (rev 41904)
@@ -481,3 +481,36 @@
 	BM_Compute_Normals(bm);
 	BM_SelectMode_Flush(bm);
 }
+
+void BM_ElemIndex_Ensure(BMesh *bm, const char hflag)
+{
+	BMIter iter;
+	BMHeader *ele;
+	int index;
+
+	/* TODO, mark arrays as dirty, only calculate if needed! */
+
+	if (hflag & BM_VERT) {
+		index= 0;
+		BM_ITER(ele, &iter, bm, BM_VERTS_OF_MESH, NULL) {
+			BM_SetIndex(ele, index);
+			index++;
+		}
+	}
+
+	if (hflag & BM_EDGE) {
+		index= 0;
+		BM_ITER(ele, &iter, bm, BM_EDGES_OF_MESH, NULL) {
+			BM_SetIndex(ele, index);
+			index++;
+		}
+	}
+
+	if (hflag & BM_FACE) {
+		index= 0;
+		BM_ITER(ele, &iter, bm, BM_FACES_OF_MESH, NULL) {
+			BM_SetIndex(ele, index);
+			index++;
+		}
+	}
+}

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c	2011-11-16 03:56:34 UTC (rev 41903)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c	2011-11-16 06:17:56 UTC (rev 41904)
@@ -22,7 +22,9 @@
 BMVert *BM_Make_Vert(BMesh *bm, float co[3], const struct BMVert *example)
 {
 	BMVert *v = BLI_mempool_calloc(bm->vpool);
-	
+
+	BM_SetIndex(v, bm->totvert);
+
 	bm->totvert += 1;
 
 	v->head.htype = BM_VERT;
@@ -76,7 +78,11 @@
 		return (BMEdge*)e;
 	
 	e = BLI_mempool_calloc(bm->epool);
+
+	BM_SetIndex(e, bm->totedge);
+
 	bm->totedge += 1;
+
 	e->head.htype = BM_EDGE;
 	
 	/*allocate flags*/
@@ -221,7 +227,11 @@
 	}
 	
 	f = BLI_mempool_calloc(bm->fpool);
+
+	BM_SetIndex(f, bm->totface);
+
 	bm->totface += 1;
+
 	f->head.htype = BM_FACE;
 
 	startl = lastl = BM_Add_FaceBoundary(bm, (BMFace*)f, verts[0], edges[0]);

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c	2011-11-16 03:56:34 UTC (rev 41903)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c	2011-11-16 06:17:56 UTC (rev 41904)
@@ -1254,7 +1254,7 @@
 				state = 1;
 				break;
 			default:
-				printf("unrecognized bmop format char: %c\n", *fmt);
+				printf("%s: unrecognized bmop format char: %c\n", __func__, *fmt);
 				break;
 			}
 		}
@@ -1275,7 +1275,7 @@
 
 	va_start(list, fmt);
 	if (!BMO_VInitOpf(bm, op, fmt, list)) {
-		printf("BMO_InitOpf failed\n");
+		printf("%s: failed\n", __func__);
 		va_end(list);
 		return 0;
 	}
@@ -1291,7 +1291,7 @@
 
 	va_start(list, fmt);
 	if (!BMO_VInitOpf(bm, &op, fmt, list)) {
-		printf("BMO_CallOpf failed, format is:\n    \"%s\"\n", fmt);
+		printf("%s: failed, format is:\n    \"%s\"\n", __func__, fmt);
 		va_end(list);
 		return 0;
 	}

Modified: branches/bmesh/blender/source/blender/editors/mesh/knifetool.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-11-16 03:56:34 UTC (rev 41903)
+++ branches/bmesh/blender/source/blender/editors/mesh/knifetool.c	2011-11-16 06:17:56 UTC (rev 41904)
@@ -1147,8 +1147,8 @@
 		if (cure && p) {
 			if (!kcd->ignore_edge_snapping || !(cure->e)) {
 				if (kcd->snap_midpoints) {
-					interp_v3_v3v3(p, cure->v1->co, cure->v2->co, 0.5f);
-					interp_v3_v3v3(cagep, cure->v1->cageco, cure->v2->cageco, 0.5f);
+					mid_v3_v3v3(p, cure->v1->co, cure->v2->co);
+					mid_v3_v3v3(cagep, cure->v1->cageco, cure->v2->cageco);
 				} else {
 					float d;
 					




More information about the Bf-blender-cvs mailing list