[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