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:
authorCampbell Barton <ideasman42@gmail.com>2011-09-17 08:59:14 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-09-17 08:59:14 +0400
commit1ff373ef5bb0c1462ad8b0f30cfb773e30cbb2bb (patch)
treeb6ec7b01b644cc8c0d4d743a4d3d94551b59f2b1 /source/blender/modifiers/intern/MOD_weightvgedit.c
parent594b0298c7a672fca44890d3afd1e5bf4f06c1da (diff)
parent2636be0ac0d3139b2c9cf54f6380b2e9a3d3ed51 (diff)
svn merge -r40166:40279 ^/trunk/blender
Diffstat (limited to 'source/blender/modifiers/intern/MOD_weightvgedit.c')
-rw-r--r--source/blender/modifiers/intern/MOD_weightvgedit.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/modifiers/intern/MOD_weightvgedit.c b/source/blender/modifiers/intern/MOD_weightvgedit.c
index fffb3c6de2f..8e609ad5929 100644
--- a/source/blender/modifiers/intern/MOD_weightvgedit.c
+++ b/source/blender/modifiers/intern/MOD_weightvgedit.c
@@ -187,6 +187,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
Mesh *ob_m = NULL;
#endif
MDeformVert *dvert = NULL;
+ MDeformWeight **dw = NULL;
float *org_w; /* Array original weights. */
float *new_w; /* Array new weights. */
int numVerts;
@@ -257,13 +258,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
/* Get org weights, assuming 0.0 for vertices not in given vgroup. */
org_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, org_w");
- new_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, org_w");
+ new_w = MEM_mallocN(sizeof(float) * numVerts, "WeightVGEdit Modifier, new_w");
+ dw = MEM_mallocN(sizeof(MDeformWeight*) * numVerts, "WeightVGEdit Modifier, dw");
for (i = 0; i < numVerts; i++) {
- MDeformWeight *dw= defvert_find_index(&dvert[i], defgrp_idx);
- org_w[i] = new_w[i] = wmd->default_weight;
-
- if(dw) {
- org_w[i] = new_w[i] = dw->weight;
+ dw[i] = defvert_find_index(&dvert[i], defgrp_idx);
+ if(dw[i]) {
+ org_w[i] = new_w[i] = dw[i]->weight;
+ }
+ else {
+ org_w[i] = new_w[i] = wmd->default_weight;
}
}
@@ -278,12 +281,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
wmd->mask_tex_mapping, wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
/* Update/add/remove from vgroup. */
- weightvg_update_vg(dvert, defgrp_idx, numVerts, NULL, org_w, do_add, wmd->add_threshold,
+ weightvg_update_vg(dvert, defgrp_idx, dw, numVerts, NULL, org_w, do_add, wmd->add_threshold,
do_rem, wmd->rem_threshold);
/* Freeing stuff. */
MEM_freeN(org_w);
MEM_freeN(new_w);
+ MEM_freeN(dw);
/* Return the vgroup-modified mesh. */
return ret;