[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48599] branches/meshdata_transfer/source/ blender/editors/object/object_vgroup.c: response to code review:

Ove Murberg Henriksen sorayasilvermoon at hotmail.com
Wed Jul 4 18:30:12 CEST 2012


Revision: 48599
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48599
Author:   cyborgmuppet
Date:     2012-07-04 16:30:12 +0000 (Wed, 04 Jul 2012)
Log Message:
-----------
response to code review:
http://codereview.appspot.com/6301100/diff/1/source/blender/editors/object/object_vgroup.c

Modified Paths:
--------------
    branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c

Modified: branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c	2012-07-04 16:19:54 UTC (rev 48598)
+++ branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c	2012-07-04 16:30:12 UTC (rev 48599)
@@ -375,68 +375,72 @@
 	return 1;
 }
 
-/***********************Start transfer weight*********************************/
+/***********************Start weight transfer (WT)*********************************/
 
-typedef enum VertexGroupMode {
-	REPLACE_ACTIVE_VERTEX_GROUP = 1,
-	REPLACE_ALL_VERTEX_GROUPS = 2
-} VertexGroupMode;
+typedef enum WT_VertexGroupMode {
+	WT_REPLACE_ACTIVE_VERTEX_GROUP = 1,
+	WT_REPLACE_ALL_VERTEX_GROUPS = 2
+} WT_VertexGroupMode;
 
-typedef enum Method {
-	BY_INDEX = 1,
-	BY_NEAREST_VERTEX = 2,
-	BY_NEAREST_FACE = 3,
-	BY_NEAREST_VERTEX_IN_FACE = 4
-} Method;
+typedef enum WT_Method {
+	WT_BY_INDEX = 1,
+	WT_BY_NEAREST_VERTEX = 2,
+	WT_BY_NEAREST_FACE = 3,
+	WT_BY_NEAREST_VERTEX_IN_FACE = 4
+} WT_Method;
 
-typedef enum ReplaceMode {
-	REPLACE_ALL_WEIGHTS = 1,
-	REPLACE_EMPTY_WEIGHTS = 2,
-	REPLACE_SELECTED_WEIGHTS = 3
-} ReplaceMode;
+typedef enum WT_ReplaceMode {
+	WT_REPLACE_ALL_WEIGHTS = 1,
+	WT_REPLACE_EMPTY_WEIGHTS = 2,
+	WT_REPLACE_SELECTED_WEIGHTS = 3
+} WT_ReplaceMode;
 
-static EnumPropertyItem vertex_group_mode_item[] = {
-    {REPLACE_ACTIVE_VERTEX_GROUP, "REPLACE_ACTIVE_VERTEX_GROUP", 1, "Active", "Transfer active vertex group from selected to active mesh."},
-    {REPLACE_ALL_VERTEX_GROUPS, "REPLACE_ALL_VERTEX_GROUPS", 1, "All", "Transfer all vertex groups from selected to active mesh."},
+static EnumPropertyItem WT_vertex_group_mode_item[] = {
+    {WT_REPLACE_ACTIVE_VERTEX_GROUP, "WT_REPLACE_ACTIVE_VERTEX_GROUP", 1, "Active", "Transfer active vertex group from selected to active mesh."},
+    {WT_REPLACE_ALL_VERTEX_GROUPS, "WT_REPLACE_ALL_VERTEX_GROUPS", 1, "All", "Transfer all vertex groups from selected to active mesh."},
     {0, NULL, 0, NULL, NULL}
 };
 
-static EnumPropertyItem method_item[] = {
-    {BY_INDEX, "BY_INDEX", 1, "Vertex index", "Copy for identical meshes."},
-    {BY_NEAREST_VERTEX, "BY_NEAREST_VERTEX", 1, "Nearest vertex", "Copy weight from closest vertex."},
-    {BY_NEAREST_FACE, "BY_NEAREST_FACE", 1, "Nearest face", "Barycentric interpolation from nearest face."},
-    {BY_NEAREST_VERTEX_IN_FACE, "BY_NEAREST_VERTEX_IN_FACE", 1, "Nearest vertex in face", "Copy weight from closest vertex in nearest face."},
+static EnumPropertyItem WT_method_item[] = {
+    {WT_BY_INDEX, "WT_BY_INDEX", 1, "Vertex index", "Copy for identical meshes."},
+    {WT_BY_NEAREST_VERTEX, "WT_BY_NEAREST_VERTEX", 1, "Nearest vertex", "Copy weight from closest vertex."},
+    {WT_BY_NEAREST_FACE, "WT_BY_NEAREST_FACE", 1, "Nearest face", "Barycentric interpolation from nearest face."},
+    {WT_BY_NEAREST_VERTEX_IN_FACE, "WT_BY_NEAREST_VERTEX_IN_FACE", 1, "Nearest vertex in face", "Copy weight from closest vertex in nearest face."},
     {0, NULL, 0, NULL, NULL}
 };
 
-static EnumPropertyItem replace_mode_item[] = {
-    {REPLACE_ALL_WEIGHTS, "REPLACE_ALL_WEIGHTS", 1, "All", "Overwrites all weights."},
-    {REPLACE_EMPTY_WEIGHTS, "REPLACE_EMPTY_WEIGHTS", 1, "Empty", "Adds weights to vertices with no weight."},
-    {REPLACE_SELECTED_WEIGHTS, "REPLACE_SELECTED_WEIGHTS", 1, "Selected", "Replace selected weights."},
+static EnumPropertyItem WT_replace_mode_item[] = {
+    {WT_REPLACE_ALL_WEIGHTS, "WT_REPLACE_ALL_WEIGHTS", 1, "All", "Overwrites all weights."},
+    {WT_REPLACE_EMPTY_WEIGHTS, "WT_REPLACE_EMPTY_WEIGHTS", 1, "Empty", "Adds weights to vertices with no weight."},
+    {WT_REPLACE_SELECTED_WEIGHTS, "WT_REPLACE_SELECTED_WEIGHTS", 1, "Selected", "Replace selected weights."},
     {0, NULL, 0, NULL, NULL}
 };
 
 /*copy weight*/
-void vgroup_transfer_weight(MVert *mv_dst, float *weight_dst, float weight_src, ReplaceMode replace_mode)
+void vgroup_transfer_weight(MVert *mv_dst, float *weight_dst, float weight_src, WT_ReplaceMode replace_mode)
 {
 	switch (replace_mode) {
 
-		case REPLACE_ALL_WEIGHTS:
+		case WT_REPLACE_ALL_WEIGHTS:
 			*weight_dst = weight_src;
 			break;
 
-		case REPLACE_EMPTY_WEIGHTS:
+		case WT_REPLACE_EMPTY_WEIGHTS:
 			if (*weight_dst == 0) *weight_dst = weight_src;
 			break;
 
-		case REPLACE_SELECTED_WEIGHTS:
+		case WT_REPLACE_SELECTED_WEIGHTS:
 			if (mv_dst->flag & SELECT) *weight_dst = weight_src;
 			break;
+
+		default:
+			BLI_assert(0);
+			break;
 	}
 }
 
 int ED_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGroup *dg_src, Scene *scene,
-                              Method method, ReplaceMode replace_mode, wmOperator *op)
+                              WT_Method method, WT_ReplaceMode replace_mode, wmOperator *op)
 {
 	bDeformGroup *dg_dst;
 	Mesh *me_dst, *me_src;
@@ -452,7 +456,7 @@
 	float weight, tmp_weight[4], tmp_co[3], normal[3], tmp_mat[4][4], dist_v1, dist_v2, dist_v3, dist_v4;
 
 	/* create new and overwrite vertex group on destination without data */
-	if (!defgroup_find_name(ob_dst, dg_src->name) || replace_mode == REPLACE_ALL_WEIGHTS) {
+	if (!defgroup_find_name(ob_dst, dg_src->name) || replace_mode == WT_REPLACE_ALL_WEIGHTS) {
 		ED_vgroup_delete(ob_dst, defgroup_find_name(ob_dst, dg_src->name));
 		ED_vgroup_add_name(ob_dst, dg_src->name);
 	}
@@ -491,7 +495,7 @@
 	mult_m4_m4m4(tmp_mat, ob_src->imat, ob_dst->obmat);
 
 	/* clear weights */
-	if (replace_mode == REPLACE_ALL_WEIGHTS) {
+	if (replace_mode == WT_REPLACE_ALL_WEIGHTS) {
 		for(i = 0, dv_dst = dv_array_dst; i < me_dst->totvert; i++, dv_dst++) {
 			dw_dst = defvert_verify_index(*dv_dst, index_dst);
 			if (dw_dst) (*dw_dst).weight = 0;
@@ -500,7 +504,7 @@
 
 	switch (method) {
 
-		case BY_INDEX:
+		case WT_BY_INDEX:
 			/* check if indices are matching, delete and return if not */
 			if (ob_dst == ob_src || dv_tot_dst == 0 || dv_tot_dst != dv_tot_src ||
 			    dv_array_src == NULL || dv_array_dst == NULL)
@@ -525,7 +529,7 @@
 			}
 			break;
 
-		case BY_NEAREST_VERTEX:
+		case WT_BY_NEAREST_VERTEX:
 			/* make node tree */
 			bvhtree_from_mesh_verts(&tree_mesh_vertices_src, dmesh_src, FLT_EPSILON, 2, 6);
 
@@ -544,7 +548,7 @@
 				BLI_bvhtree_find_nearest(tree_mesh_vertices_src.tree, tmp_co,
 				                         &nearest, tree_mesh_vertices_src.nearest_callback, &tree_mesh_vertices_src);
 
-				/* copy weight */
+				/* copy weight that are not NULL including weight value 0. Existing target weights are overwritten prior to this in relevant cases. */
 				dw_src = defvert_find_index(dv_array_src[nearest.index], index_src);
 				if(dw_src && dw_src->weight) {
 					dw_dst = defvert_verify_index(*dv_dst, index_dst);
@@ -556,7 +560,7 @@
 			free_bvhtree_from_mesh(&tree_mesh_vertices_src);
 			break;
 
-		case BY_NEAREST_FACE:
+		case WT_BY_NEAREST_FACE:
 			/* get faces */
 			DM_ensure_tessface(dmesh_src);
 			mface_src = dmesh_src->getTessFaceArray(dmesh_src);
@@ -601,7 +605,7 @@
 					weight += tmp_weight[f_index] * defvert_find_weight(dv_array_src[v_index], index_src);
 				} while (f_index--);
 
-				/* copy weight */
+				/* copy weight that are not NULL including weight value 0. Existing target weights are overwritten prior to this in relevant cases. */
 				if(weight > 0) {
 					dw_dst = defvert_verify_index(*dv_dst, index_dst);
 					vgroup_transfer_weight(mv_dst, &dw_dst->weight, weight, replace_mode);
@@ -612,7 +616,7 @@
 			free_bvhtree_from_mesh(&tree_mesh_faces_src);
 			break;
 
-		case BY_NEAREST_VERTEX_IN_FACE:
+		case WT_BY_NEAREST_VERTEX_IN_FACE:
 			/* get faces */
 			DM_ensure_tessface(dmesh_src);
 			mface_src = dmesh_src->getTessFaceArray(dmesh_src);
@@ -654,7 +658,7 @@
 					}
 				}
 
-				/* copy weight */
+				/* copy weight that are not NULL including weight value 0. Existing target weights are overwritten prior to this in relevant cases. */
 				dw_src = defvert_find_index(dv_array_src[index_nearest_vertex], index_src);
 				if(dw_src && dw_src->weight) {
 					dw_dst = defvert_verify_index(*dv_dst, index_dst);
@@ -665,6 +669,10 @@
 			/* free memory */
 			free_bvhtree_from_mesh(&tree_mesh_faces_src);
 			break;
+
+		default:
+			BLI_assert(0);
+			break;
 	}
 
 	/*free memory*/
@@ -675,7 +683,7 @@
 	return 1;
 }
 
-/***********************End transfer weight***********************************/
+/***********************End weight transfer (WT)***********************************/
 
 /* for Mesh in Object mode */
 /* allows editmode for Lattice */
@@ -3065,9 +3073,9 @@
 	bDeformGroup *dg_src;
 	int fail = 0;
 
-	VertexGroupMode vertex_group_mode = RNA_enum_get(op->ptr, "vertex_group_mode");
-	Method method = RNA_enum_get(op->ptr, "method");
-	ReplaceMode replace_mode = RNA_enum_get(op->ptr, "replace_mode");
+	WT_VertexGroupMode vertex_group_mode = RNA_enum_get(op->ptr, "WT_vertex_group_mode");
+	WT_Method method = RNA_enum_get(op->ptr, "WT_method");
+	WT_ReplaceMode replace_mode = RNA_enum_get(op->ptr, "WT_replace_mode");
 
 	/* Macro to loop through selected objects and perform operation depending on function, option and method */
 	CTX_DATA_BEGIN (C, Object *, ob_slc, selected_editable_objects)
@@ -3076,17 +3084,21 @@
 		if (ob_act != ob_slc && ob_slc->defbase.first) {
 			switch (vertex_group_mode) {
 
-				case REPLACE_ACTIVE_VERTEX_GROUP:
+				case WT_REPLACE_ACTIVE_VERTEX_GROUP:
 					if (!ED_vgroup_transfer_weight(
 					        ob_act, ob_slc, BLI_findlink(&ob_slc->defbase, ob_slc->actdef - 1), scene, method, replace_mode, op)) fail++;
 					break;
 
-				case REPLACE_ALL_VERTEX_GROUPS:
+				case WT_REPLACE_ALL_VERTEX_GROUPS:
 					for (dg_src = ob_slc->defbase.first; dg_src; dg_src = dg_src->next) {
 						if (!ED_vgroup_transfer_weight(
 						        ob_act, ob_slc, dg_src, scene, method, replace_mode, op)) fail++;
 					}
 					break;
+
+				default:
+					BLI_assert(0);
+					break;
 			}
 		}
 	}
@@ -3118,9 +3130,9 @@
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
 	/* properties */
-	ot->prop = RNA_def_enum(ot->srna, "vertex_group_mode", vertex_group_mode_item, 1, "Group", "");
-	ot->prop = RNA_def_enum(ot->srna, "method", method_item, 3, "Method", "");
-	ot->prop = RNA_def_enum(ot->srna, "replace_mode", replace_mode_item, 1, "Replace", "");
+	ot->prop = RNA_def_enum(ot->srna, "WT_vertex_group_mode", WT_vertex_group_mode_item, 1, "Group", "");

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list