Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2006-08-29 14:27:48 +0400
committerTon Roosendaal <ton@blender.org>2006-08-29 14:27:48 +0400
commit7bec4dba419b9aa63cf999e9ff08cf240f8c4d7f (patch)
treedfd7b4ee56dec542087a75c4431feb8b81a2a2b8 /source/blender/src/editdeform.c
parentd0cabce8898a542354046ca18b6e3cd9ab3cb24e (diff)
Recoded version of patch #4273, submitted by Daniel Genrich
This provides a weight-paint option that only paints on vertices that have already the weight-group assigned before. The default adds weights on all vertices painted on. Fixes in patch include: - much less code - also support for 'filter' mode - proper code styling
Diffstat (limited to 'source/blender/src/editdeform.c')
-rw-r--r--source/blender/src/editdeform.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/source/blender/src/editdeform.c b/source/blender/src/editdeform.c
index dbfbbfde0c8..22fd58c8059 100644
--- a/source/blender/src/editdeform.c
+++ b/source/blender/src/editdeform.c
@@ -102,22 +102,36 @@ void sel_verts_defgroup (int select)
else EM_deselect_flush();
}
+/* check if deform vertex has defgroup index */
+MDeformWeight *get_defweight (MDeformVert *dv, int defgroup)
+{
+ int i;
+
+ if (!dv || defgroup<0)
+ return NULL;
+
+ for (i=0; i<dv->totweight; i++){
+ if (dv->dw[i].def_nr == defgroup)
+ return dv->dw+i;
+ }
+ return NULL;
+}
+
/* Ensures that mv has a deform weight entry for
the specified defweight group */
/* Note this function is mirrored in editmesh_tools.c, for use for editvertices */
MDeformWeight *verify_defweight (MDeformVert *dv, int defgroup)
{
MDeformWeight *newdw;
- int i;
+ /* do this check always, this function is used to check for it */
if (!dv || defgroup<0)
return NULL;
-
- for (i=0; i<dv->totweight; i++){
- if (dv->dw[i].def_nr == defgroup)
- return dv->dw+i;
- }
-
+
+ newdw = get_defweight (dv, defgroup);
+ if (newdw)
+ return newdw;
+
newdw = MEM_callocN (sizeof(MDeformWeight)*(dv->totweight+1), "deformWeight");
if (dv->dw){
memcpy (newdw, dv->dw, sizeof(MDeformWeight)*dv->totweight);