[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44066] branches/bmesh/blender/source/ blender/editors/space_view3d/view3d_buttons.c: Fix for bevel weights not being set in toolbar buttons (edit mode).

Bastien Montagne montagne29 at wanadoo.fr
Sun Feb 12 19:17:30 CET 2012


Revision: 44066
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44066
Author:   mont29
Date:     2012-02-12 18:17:30 +0000 (Sun, 12 Feb 2012)
Log Message:
-----------
Fix for bevel weights not being set in toolbar buttons (edit mode).

Code simply mimics crease one...

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_buttons.c

Modified: branches/bmesh/blender/source/blender/editors/space_view3d/view3d_buttons.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/space_view3d/view3d_buttons.c	2012-02-12 17:44:10 UTC (rev 44065)
+++ branches/bmesh/blender/source/blender/editors/space_view3d/view3d_buttons.c	2012-02-12 18:17:30 UTC (rev 44066)
@@ -436,7 +436,7 @@
 
 					BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
 						if(BM_elem_flag_test(eed, BM_ELEM_SELECT)) {
-							float *crease = CustomData_bmesh_get(&em->bm->edata, eed->head.data, CD_CREASE);
+							float *crease = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_CREASE);
 							if (!crease) break;
 							
 							*crease= fixed_crease;
@@ -458,7 +458,7 @@
 						
 						BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
 							if(BM_elem_flag_test(eed, BM_ELEM_SELECT) && !BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
-								float *crease = CustomData_bmesh_get(&em->bm->edata, eed->head.data, CD_CREASE);
+								float *crease = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_CREASE);
 								
 								if (!crease) break;
 								
@@ -473,7 +473,7 @@
 
 						BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
 							if(BM_elem_flag_test(eed, BM_ELEM_SELECT) && !BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
-								float *crease = CustomData_bmesh_get(&em->bm->edata, eed->head.data, CD_CREASE);
+								float *crease = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_CREASE);
 								if (!crease) break;
 
 								*crease = 1.0f - ((1.0f - *crease) * sca);
@@ -483,24 +483,27 @@
 					}
 				}
 			}
-			if (median[6] != 0.0f) {
-#if 0 // BMESH_TODO
-				EditEdge *eed;
-				const float fixed_bweight= (ve_median[6] <= 0.0f ? 0.0f : (ve_median[6] >= 1.0f ? 1.0f : FLT_MAX));
 
+			if(median[6] != 0.0f) {
+				BMEdge *eed;
+				const float fixed_bweight = (ve_median[6] <= 0.0f ? 0.0f : (ve_median[6] >= 1.0f ? 1.0f : FLT_MAX));
+
 				if(fixed_bweight != FLT_MAX) {
 					/* simple case */
 
-					for(eed= em->edges.first; eed; eed= eed->next) {
-						if(eed->f & SELECT) {
-							eed->bweight= fixed_bweight;
+					BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
+						if(BM_elem_flag_test(eed, BM_ELEM_SELECT)) {
+							float *bweight = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_BWEIGHT);
+							if(!bweight) break;
+							
+							*bweight = fixed_bweight;
 						}
 					}
 				}
 				else {
 					/* scale crease to target median */
-					float median_new= ve_median[6];
-					float median_orig= ve_median[6] - median[6]; /* previous median value */
+					float median_new = ve_median[6];
+					float median_orig = ve_median[6] - median[6]; /* previous median value */
 
 					/* incase of floating point error */
 					CLAMP(median_orig, 0.0f, 1.0f);
@@ -508,28 +511,33 @@
 
 					if(median_new < median_orig) {
 						/* scale down */
-						const float sca= median_new / median_orig;
-
-						for(eed= em->edges.first; eed; eed= eed->next) {
-							if(eed->f & SELECT) {
-								eed->bweight *= sca;
-								CLAMP(eed->bweight, 0.0f, 1.0f);
+						const float sca = median_new / median_orig;
+						
+						BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
+							if(BM_elem_flag_test(eed, BM_ELEM_SELECT) && !BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
+								float *bweight = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_BWEIGHT);
+								if(!bweight) break;
+								
+								*bweight *= sca;
+								CLAMP(*bweight, 0.0f, 1.0f);
 							}
 						}
 					}
 					else {
 						/* scale up */
-						const float sca= (1.0f - median_new) / (1.0f - median_orig);
+						const float sca = (1.0f - median_new) / (1.0f - median_orig);
 
-						for(eed= em->edges.first; eed; eed= eed->next) {
-							if(eed->f & SELECT) {
-								eed->bweight = 1.0f - ((1.0f - eed->bweight) * sca);
-								CLAMP(eed->bweight, 0.0f, 1.0f);
+						BM_ITER(eed, &iter, em->bm, BM_EDGES_OF_MESH, NULL) {
+							if(BM_elem_flag_test(eed, BM_ELEM_SELECT) && !BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
+								float *bweight = bm_get_cd_float(&em->bm->edata, eed->head.data, CD_BWEIGHT);
+								if(!bweight) break;
+
+								*bweight = 1.0f - ((1.0f - *bweight) * sca);
+								CLAMP(*bweight, 0.0f, 1.0f);
 							}
 						}
 					}
 				}
-#endif // BMESH_TODO
 			}
 			EDBM_RecalcNormals(em);
 		}




More information about the Bf-blender-cvs mailing list