[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26030] trunk/blender/source/blender: mirror modifier vgroup option was doing string name conversion to find the flipped name for every vertex for every weight .

Campbell Barton ideasman42 at gmail.com
Sat Jan 16 02:15:49 CET 2010


Revision: 26030
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26030
Author:   campbellbarton
Date:     2010-01-16 02:15:47 +0100 (Sat, 16 Jan 2010)

Log Message:
-----------
mirror modifier vgroup option was doing string name conversion to find the flipped name for every vertex for every weight.
the vertex flip mapping only needs to be made once.

warning fixes too.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/editors/space_console/console_ops.c
    trunk/blender/source/blender/makesrna/intern/rna_wm_api.c

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-01-16 00:59:59 UTC (rev 26029)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-01-16 01:15:47 UTC (rev 26030)
@@ -1813,9 +1813,8 @@
 	int maxVerts = dm->getNumVerts(dm);
 	int maxEdges = dm->getNumEdges(dm);
 	int maxFaces = dm->getNumFaces(dm);
-	int vector_size=0, j, a, b;
-	bDeformGroup *def, *defb;
-	bDeformGroup **vector_def = NULL;
+	int *flip_map;
+	int do_vgroup_mirr= (mmd->flag & MOD_MIR_VGROUP);
 	int (*indexMap)[2];
 	float mtx[4][4], imtx[4][4];
 
@@ -1826,18 +1825,10 @@
 	result = CDDM_from_template(dm, maxVerts * 2, maxEdges * 2, maxFaces * 2);
 
 
-	if (mmd->flag & MOD_MIR_VGROUP) {
-		/* calculate the number of deformedGroups */
-		for(vector_size = 0, def = ob->defbase.first; def;
-		    def = def->next, vector_size++);
-
-		/* load the deformedGroups for fast access */
-		vector_def =
-		    (bDeformGroup **)MEM_mallocN(sizeof(bDeformGroup*) * vector_size,
-		                                 "group_index");
-		for(a = 0, def = ob->defbase.first; def; def = def->next, a++) {
-			vector_def[a] = def;
-		}
+	if (do_vgroup_mirr) {
+		flip_map= get_defgroup_flip_map(ob);
+		if(flip_map == NULL)
+			do_vgroup_mirr= 0;
 	}
 
 	if (mmd->mirror_ob) {
@@ -1884,7 +1875,6 @@
 			mv->flag |= ME_VERT_MERGED;
 		} else {
 			MVert *mv2 = CDDM_get_vert(result, numVerts);
-			MDeformVert *dvert = NULL;
 			
 			DM_copy_vert_data(dm, result, i, numVerts, 1);
 			*mv2 = *mv;
@@ -1895,35 +1885,13 @@
 			}
 			copy_v3_v3(mv2->co, co);
 			
-			if (mmd->flag & MOD_MIR_VGROUP){
-				dvert = DM_get_vert_data(result, numVerts, CD_MDEFORMVERT);
-				
-				if (dvert)
-				{
-					for(j = 0; j < dvert[0].totweight; ++j)
-					{
-						char tmpname[32];
-						
-						if(dvert->dw[j].def_nr < 0 ||
-						   dvert->dw[j].def_nr >= vector_size)
-							continue;
-						
-						def = vector_def[dvert->dw[j].def_nr];
-						flip_vertexgroup_name(tmpname, def->name, 0);
-						
-						for(b = 0, defb = ob->defbase.first; defb;
-						    defb = defb->next, b++)
-						{
-							if(!strcmp(defb->name, tmpname))
-							{
-								dvert->dw[j].def_nr = b;
-								break;
-							}
-						}
-					}
+			if (do_vgroup_mirr) {
+				MDeformVert *dvert= DM_get_vert_data(result, numVerts, CD_MDEFORMVERT);
+				if(dvert) {
+					flip_defvert(dvert, flip_map);
 				}
 			}
-			
+
 			numVerts++;
 		}
 	}
@@ -2008,7 +1976,7 @@
 		}
 	}
 
-	if (vector_def) MEM_freeN(vector_def);
+	if (flip_map) MEM_freeN(flip_map);
 
 	MEM_freeN(indexMap);
 

Modified: trunk/blender/source/blender/editors/space_console/console_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/console_ops.c	2010-01-16 00:59:59 UTC (rev 26029)
+++ trunk/blender/source/blender/editors/space_console/console_ops.c	2010-01-16 01:15:47 UTC (rev 26030)
@@ -279,13 +279,13 @@
 
 	return 1;
 }
-
+#if 0
 static int console_poll(bContext *C)
 {
 	return (CTX_wm_space_console(C) != NULL);
 }
+#endif
 
-
 /* static funcs for text editing */
 
 /* similar to the text editor, with some not used. keep compatible */

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2010-01-16 00:59:59 UTC (rev 26029)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2010-01-16 01:15:47 UTC (rev 26030)
@@ -145,9 +145,10 @@
 }
 
 /* since event isnt needed... */
-static int rna_Operator_enum_search_invoke(bContext *C, wmOperator *op)
+static void rna_Operator_enum_search_invoke(bContext *C, wmOperator *op)
 {
 	WM_enum_search_invoke(C, op, NULL);
+	
 }
 
 #else
@@ -194,7 +195,7 @@
 
 	/* invoke enum */
 	func= RNA_def_function(srna, "invoke_search_popup", "rna_Operator_enum_search_invoke");
-	rna_generic_op_invoke(func, 0, 1);
+	rna_generic_op_invoke(func, 0, 0);
 
 	/* invoke functions, for use with python */
 	func= RNA_def_function(srna, "invoke_popup", "WM_operator_ui_popup");





More information about the Bf-blender-cvs mailing list