[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26281] trunk/blender/source/blender: modifier.c has all its vergex group index lookups inline, use get_named_vertexgroup_num() instead.

Campbell Barton ideasman42 at gmail.com
Tue Jan 26 10:36:33 CET 2010


Revision: 26281
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26281
Author:   campbellbarton
Date:     2010-01-26 10:36:33 +0100 (Tue, 26 Jan 2010)

Log Message:
-----------
modifier.c has all its vergex group index lookups inline, use get_named_vertexgroup_num() instead.
no functional changes.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/deform.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c

Modified: trunk/blender/source/blender/blenkernel/intern/deform.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/deform.c	2010-01-26 09:25:32 UTC (rev 26280)
+++ trunk/blender/source/blender/blenkernel/intern/deform.c	2010-01-26 09:36:33 UTC (rev 26281)
@@ -173,11 +173,13 @@
 	bDeformGroup *curdef;
 	int def_nr;
 	
-	for (curdef=ob->defbase.first, def_nr=0; curdef; curdef=curdef->next, def_nr++) {
-		if (!strcmp(curdef->name, name))
-			return def_nr;
+	if(name[0] != '\0') {
+		for (curdef=ob->defbase.first, def_nr=0; curdef; curdef=curdef->next, def_nr++) {
+			if (!strcmp(curdef->name, name))
+				return def_nr;
+		}
 	}
-	
+
 	return -1;
 }
 

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-01-26 09:25:32 UTC (rev 26280)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2010-01-26 09:36:33 UTC (rev 26281)
@@ -867,24 +867,8 @@
 	}
 	else		/* --- Using Nominated VertexGroup only --- */ 
 	{
-		int defgrp_index = -1;
+		int defgrp_index = get_named_vertexgroup_num(ob, mmd->vgroup);
 		
-		/* get index of vertex group */
-		if (mmd->vgroup[0]) 
-		{
-			bDeformGroup *def;
-			
-			/* find index by comparing names - SLOW... */
-			for (i = 0, def = ob->defbase.first; def; def = def->next, i++) 
-			{
-				if (!strcmp(def->name, mmd->vgroup)) 
-				{
-					defgrp_index = i;
-					break;
-				}
-			}
-		}
-		
 		/* get dverts */
 		if (defgrp_index >= 0)
 			dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
@@ -3313,17 +3297,12 @@
 
 	options = bmd->flags|bmd->val_flags|bmd->lim_flags|bmd->e_flags;
 
-	//~ if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) {
-		//~ for (i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			//~ if (!strcmp(def->name, bmd->defgrp_name)) {
-				//~ defgrp_index = i;
-				//~ break;
-			//~ }
-		//~ }
-		//~ if (defgrp_index < 0) {
-			//~ options &= ~BME_BEVEL_VWEIGHT;
-		//~ }
-	//~ }
+	/*if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) {
+		defgrp_index = get_named_vertexgroup_num(ob, bmd->defgrp_name);
+		if (defgrp_index < 0) {
+			options &= ~BME_BEVEL_VWEIGHT;
+		}
+	}*/
 
 	bm = BME_derivedmesh_to_bmesh(derivedData);
 	BME_bevel(bm,bmd->value,bmd->res,options,defgrp_index,bmd->bevel_angle,NULL);
@@ -3574,18 +3553,8 @@
 
 	if(!dmd->texture) return;
 
-	defgrp_index = -1;
+	defgrp_index = get_named_vertexgroup_num(ob, dmd->defgrp_name);
 
-	if(dmd->defgrp_name[0]) {
-		bDeformGroup *def;
-		for(i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			if(!strcmp(def->name, dmd->defgrp_name)) {
-				defgrp_index = i;
-				break;
-			}
-		}
-	}
-
 	mvert = CDDM_get_verts(dm);
 	if(defgrp_index >= 0)
 		dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
@@ -4200,19 +4169,8 @@
 	medges = dm->getEdgeArray(dm);
 	numDMEdges = dm->getNumEdges(dm);
 
-	defgrp_index = -1;
+	defgrp_index = get_named_vertexgroup_num(ob, smd->defgrp_name);
 
-	if (smd->defgrp_name[0]) {
-		bDeformGroup *def;
-
-		for (i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			if (!strcmp(def->name, smd->defgrp_name)) {
-				defgrp_index = i;
-				break;
-			}
-		}
-	}
-
 	if (defgrp_index >= 0)
 		dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
 
@@ -4424,7 +4382,7 @@
 
 	Object *ctrl_ob = NULL;
 
-	int i, defgrp_index = -1;
+	int i, defgrp_index;
 	int has_radius = 0;
 	short flag, type;
 	float fac, facm, len = 0.0f;
@@ -4466,17 +4424,8 @@
 
 	/* 3) if we were given a vertex group name,
 	* only those vertices should be affected */
-	if (cmd->defgrp_name[0]) {
-		bDeformGroup *def;
+	defgrp_index = get_named_vertexgroup_num(ob, cmd->defgrp_name);
 
-		for (i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			if (!strcmp(def->name, cmd->defgrp_name)) {
-				defgrp_index = i;
-				break;
-			}
-		}
-	}
-
 	if ((ob->type == OB_MESH) && dm && defgrp_index >= 0)
 		dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
 
@@ -4609,7 +4558,7 @@
 	MDeformVert *dvert = NULL;
 	Object *ctrl_ob = NULL;
 
-	int i, defgrp_index = -1;
+	int i, defgrp_index;
 	int has_radius = 0;
 	short flag;
 	float fac, facm;
@@ -4633,17 +4582,8 @@
 
 	/* 3) if we were given a vertex group name,
 	* only those vertices should be affected */
-	if (cmd->defgrp_name[0]) {
-		bDeformGroup *def;
+	defgrp_index = get_named_vertexgroup_num(ob, cmd->defgrp_name);
 
-		for (i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			if (!strcmp(def->name, cmd->defgrp_name)) {
-				defgrp_index = i;
-				break;
-			}
-		}
-	}
-
 	if ((ob->type == OB_MESH) && dm && defgrp_index >= 0)
 		dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
 
@@ -5140,19 +5080,8 @@
 	}
 
 	/* get the index of the deform group */
-	defgrp_index = -1;
+	defgrp_index = get_named_vertexgroup_num(ob, wmd->defgrp_name);
 
-	if(wmd->defgrp_name[0]) {
-		int i;
-		bDeformGroup *def;
-		for(i = 0, def = ob->defbase.first; def; def = def->next, i++) {
-			if(!strcmp(def->name, wmd->defgrp_name)) {
-				defgrp_index = i;
-				break;
-			}
-		}
-	}
-
 	if(defgrp_index >= 0){
 		dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
 	}
@@ -5579,50 +5508,46 @@
 		}
 	} 
 	else if(hmd->name[0]) {	/* vertex group hook */
-		bDeformGroup *curdef;
 		Mesh *me = ob->data;
-		int index = 0;
-		int use_dverts;
+		int use_dverts = 0;
 		int maxVerts = 0;
-		
-		/* find the group (weak loop-in-loop) */
-		for(curdef = ob->defbase.first; curdef; curdef = curdef->next, index++)
-			if(!strcmp(curdef->name, hmd->name)) break;
+		int defgrp_index = get_named_vertexgroup_num(ob, hmd->name);
 
-		if(dm)
+		if(dm) {
 			if(dm->getVertData(dm, 0, CD_MDEFORMVERT)) {
-			use_dverts = 1;
-			maxVerts = dm->getNumVerts(dm);
-			} else use_dverts = 0;
-			else if(me->dvert) {
+				maxVerts = dm->getNumVerts(dm);
 				use_dverts = 1;
-				maxVerts = me->totvert;
-			} else use_dverts = 0;
-		
-			if(curdef && use_dverts) {
-				MDeformVert *dvert = me->dvert;
-				int i, j;
-			
-				for(i = 0; i < maxVerts; i++, dvert++) {
-					if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
-					for(j = 0; j < dvert->totweight; j++) {
-						if(dvert->dw[j].def_nr == index) {
-							float fac = hmd->force*dvert->dw[j].weight;
-							float *co = vertexCos[i];
-						
-							if(hmd->falloff != 0.0) {
-								float len = len_v3v3(co, hmd->cent);
-								if(len > hmd->falloff) fac = 0.0;
-								else if(len > 0.0)
-									fac *= sqrt(1.0 - len / hmd->falloff);
-							}
-						
-							mul_v3_m4v3(vec, mat, co);
-							interp_v3_v3v3(co, co, vec, fac);
+			}
+		}
+		else if(me->dvert) {
+			maxVerts = me->totvert;
+			use_dverts = 1;
+		}
+
+		if(defgrp_index >= 0 && use_dverts) {
+			MDeformVert *dvert = me->dvert;
+			int i, j;
+
+			for(i = 0; i < maxVerts; i++, dvert++) {
+				if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT);
+				for(j = 0; j < dvert->totweight; j++) {
+					if(dvert->dw[j].def_nr == defgrp_index) {
+						float fac = hmd->force*dvert->dw[j].weight;
+						float *co = vertexCos[i];
+
+						if(hmd->falloff != 0.0) {
+							float len = len_v3v3(co, hmd->cent);
+							if(len > hmd->falloff) fac = 0.0;
+							else if(len > 0.0)
+								fac *= sqrt(1.0 - len / hmd->falloff);
 						}
+
+						mul_v3_m4v3(vec, mat, co);
+						interp_v3_v3v3(co, co, vec, fac);
 					}
 				}
 			}
+		}
 	}
 }
 
@@ -5785,7 +5710,7 @@
 	tsmd->crease_inner = smd->crease_inner;
 	tsmd->crease_outer = smd->crease_outer;
 	tsmd->crease_rim = smd->crease_rim;
-	strcpy(tsmd->vgroup, smd->vgroup);
+	strcpy(tsmd->defgrp_name, smd->defgrp_name);
 }
 
 static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md,
@@ -8239,22 +8164,11 @@
 			VECCOPY(dco[a], co)
 	}
 
-	defgrp_index = -1;
+	defgrp_index = get_named_vertexgroup_num(ob, mmd->defgrp_name);
 
-	if(mmd->defgrp_name[0]) {
-		bDeformGroup *def;
+	if (defgrp_index >= 0)
+		dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT);
 
-		for(a=0, def=ob->defbase.first; def; def=def->next, a++) {
-			if(!strcmp(def->name, mmd->defgrp_name)) {
-				defgrp_index= a;
-				break;
-			}
-		}
-
-		if (defgrp_index >= 0)
-			dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT);
-	}
-
 	/* do deformation */
 	fac= 1.0f;
 

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2010-01-26 09:25:32 UTC (rev 26280)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2010-01-26 09:36:33 UTC (rev 26281)
@@ -679,7 +679,7 @@
 typedef struct SolidifyModifierData {
 	ModifierData modifier;
 
-	char vgroup[32];		/* name of vertex group to use */
+	char defgrp_name[32];		/* name of vertex group to use */
 	float offset;			/* new surface offset level*/
 	float crease_inner;
 	float crease_outer;

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2010-01-26 09:25:32 UTC (rev 26280)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2010-01-26 09:36:33 UTC (rev 26281)
@@ -328,7 +328,7 @@
 static void rna_SolidifyModifier_vgroup_set(PointerRNA *ptr, const char *value)
 {
 	SolidifyModifierData *smd= (SolidifyModifierData*)ptr->data;
-	rna_object_vgroup_name_set(ptr, value, smd->vgroup, sizeof(smd->vgroup));
+	rna_object_vgroup_name_set(ptr, value, smd->defgrp_name, sizeof(smd->defgrp_name));
 }
 
 static void rna_DisplaceModifier_uvlayer_set(PointerRNA *ptr, const char *value)
@@ -2050,7 +2050,7 @@
 	RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
 	prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
-	RNA_def_property_string_sdna(prop, NULL, "vgroup");
+	RNA_def_property_string_sdna(prop, NULL, "defgrp_name");
 	RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name.");
 	RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SolidifyModifier_vgroup_set");
 	RNA_def_property_update(prop, 0, "rna_Modifier_update");





More information about the Bf-blender-cvs mailing list