[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13831] trunk/blender/source/blender: -> Bevel tools and Bmesh kernel

Geoffrey Bantle hairbat at yahoo.com
Sat Feb 23 23:46:55 CET 2008


Revision: 13831
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13831
Author:   briggs
Date:     2008-02-23 23:46:55 +0100 (Sat, 23 Feb 2008)

Log Message:
-----------
-> Bevel tools and Bmesh kernel

more missed files!

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
    trunk/blender/source/blender/src/transform_conversions.c

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2008-02-23 22:26:58 UTC (rev 13830)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2008-02-23 22:46:55 UTC (rev 13831)
@@ -942,6 +942,7 @@
 
 	/* TODO what to do with vert_r->flag and vert_r->mat_nr? */
 	vert_r->mat_nr = 0;
+	vert_r->bweight = (unsigned char) (ev->bweight*255.0f);
 }
 
 void emDM_getEdge(DerivedMesh *dm, int index, MEdge *edge_r)
@@ -954,6 +955,7 @@
 	for(i = 0; i < index; ++i) ee = ee->next;
 
 	edge_r->crease = (unsigned char) (ee->crease*255.0f);
+	edge_r->bweight = (unsigned char) (ee->bweight*255.0f);
 	/* TODO what to do with edge_r->flag? */
 	edge_r->flag = ME_EDGEDRAW|ME_EDGERENDER;
 	if (ee->seam) edge_r->flag |= ME_SEAM;
@@ -1034,6 +1036,7 @@
 		/* TODO what to do with vert_r->flag and vert_r->mat_nr? */
 		vert_r->mat_nr = 0;
 		vert_r->flag = 0;
+		vert_r->bweight = (unsigned char) (ev->bweight*255.0f);
 	}
 }
 
@@ -1050,6 +1053,7 @@
 
 	for( ; ee; ee = ee->next, ++edge_r) {
 		edge_r->crease = (unsigned char) (ee->crease*255.0f);
+		edge_r->bweight = (unsigned char) (ee->bweight*255.0f);
 		/* TODO what to do with edge_r->flag? */
 		edge_r->flag = ME_EDGEDRAW|ME_EDGERENDER;
 		if (ee->seam) edge_r->flag |= ME_SEAM;
@@ -1318,6 +1322,7 @@
 				/* not supported yet */
 				edge_r->flag = 0;
 				edge_r->crease = 0;
+				edge_r->bweight = 0;
 				break;
 			}
 		}
@@ -1424,6 +1429,7 @@
 			/* not supported yet */
 			edge_r->flag = 0;
 			edge_r->crease = 0;
+			edge_r->bweight = 0;
 		}
 	}
 }

Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c	2008-02-23 22:26:58 UTC (rev 13830)
+++ trunk/blender/source/blender/src/transform_conversions.c	2008-02-23 22:46:55 UTC (rev 13831)
@@ -97,6 +97,7 @@
 #include "BKE_particle.h"
 #include "BKE_softbody.h"
 #include "BKE_utildefines.h"
+#include "BKE_bmesh.h"
 
 #include "BIF_editaction.h"
 #include "BIF_editview.h"
@@ -386,8 +387,14 @@
 
 			td->ext = NULL;
 			td->tdi = NULL;
-			td->val = &(eed->crease);
-			td->ival = eed->crease;
+			if (t->mode == TFM_BWEIGHT) {
+				td->val = &(eed->bweight);
+				td->ival = eed->bweight;
+			}
+			else {
+				td->val = &(eed->crease);
+				td->ival = eed->crease;
+			}
 
 			td++;
 		}
@@ -1795,6 +1802,10 @@
 	td->tdi = NULL;
 	td->val = NULL;
 	td->tdmir= NULL;
+	if (BIF_GetTransInfo()->mode == TFM_BWEIGHT) {
+		td->val = &(eve->bweight);
+		td->ival = eve->bweight;
+	}
 
 #ifdef WITH_VERSE
 	if(eve->vvert) {
@@ -1947,6 +1958,31 @@
 
 }
 
+void createTransBMeshVerts(TransInfo *t, BME_Mesh *bm, BME_TransData_Head *td) {
+	BME_Vert *v;
+	BME_TransData *vtd;
+	TransData *tob;
+	int i;
+
+	tob = t->data = MEM_callocN(td->len*sizeof(TransData), "TransObData(Bevel tool)");
+
+	for (i=0,v=bm->verts.first;v;v=v->next) {
+		if (vtd = BME_get_transdata(td,v)) {
+			tob->loc = vtd->loc;
+			tob->val = &vtd->factor;
+			VECCOPY(tob->iloc,vtd->co);
+			VECCOPY(tob->center,vtd->org);
+			VECCOPY(tob->axismtx[0],vtd->vec);
+			tob->axismtx[1][0] = vtd->max ? *vtd->max : 0;
+			tob++;
+			i++;
+		}
+	}
+	/* since td is a memarena, it can hold more transdata than actual elements
+	 * (i.e. we can't depend on td->len to determine the number of actual elements) */
+	t->total = i;
+}
+
 static void createTransEditVerts(TransInfo *t)
 {
 	TransData *tob = NULL;
@@ -3693,6 +3729,9 @@
 			sort_trans_data_dist(t);
 		}
 	}
+	else if (t->context == CTX_BMESH) {
+		createTransBMeshVerts(t, G.editBMesh->bm, G.editBMesh->td);
+	}
 	else if (t->spacetype == SPACE_IMAGE) {
 		t->flag |= T_POINTS|T_2D_EDIT;
 		createTransUVs(t);





More information about the Bf-blender-cvs mailing list