[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