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-12-20 05:33:14 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-12-20 05:33:14 +0400
commitefb4eff35312afb372e2a46aa598d12a74ff4a52 (patch)
treeb039276297f2deea8bff39e606c9bf89b0dbc590 /source/blender/modifiers/intern/MOD_weightvgmix.c
parent2457d4f5abd65095ae48be937ed43d026d47124a (diff)
parent71ce197bbb09af00980f6efc4891dc2a7ffda36b (diff)
svn merge ^/trunk/blender -r42722:42742
Diffstat (limited to 'source/blender/modifiers/intern/MOD_weightvgmix.c')
-rw-r--r--source/blender/modifiers/intern/MOD_weightvgmix.c56
1 files changed, 4 insertions, 52 deletions
diff --git a/source/blender/modifiers/intern/MOD_weightvgmix.c b/source/blender/modifiers/intern/MOD_weightvgmix.c
index 43f503a7624..34e73adb4b4 100644
--- a/source/blender/modifiers/intern/MOD_weightvgmix.c
+++ b/source/blender/modifiers/intern/MOD_weightvgmix.c
@@ -219,10 +219,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
int UNUSED(useRenderParams), int UNUSED(isFinalCalc))
{
WeightVGMixModifierData *wmd = (WeightVGMixModifierData*) md;
- DerivedMesh *dm = derivedData, *ret = NULL;
-#if 0
- Mesh *ob_m = NULL;
-#endif
+ DerivedMesh *dm = derivedData;
MDeformVert *dvert = NULL;
MDeformWeight **dw1, **tdw1, **dw2, **tdw2;
int numVerts;
@@ -232,7 +229,6 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
int *tidx, *indices = NULL;
int numIdx = 0;
int i;
- char rel_ret = 0; /* Boolean, whether we have to release ret dm or not, when not using it! */
/* Get number of verts. */
numVerts = dm->getNumVerts(dm);
@@ -254,49 +250,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
return dm;
}
- /* XXX All this to avoid copying dm when not needed... However, it nearly doubles compute
- * time! See scene 5 of the WeighVG test file...
- */
-#if 0
- /* Get actual dverts (ie vertex group data). */
- dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
- /* If no dverts, return unmodified data... */
- if (dvert == NULL)
- return dm;
-
- /* Get org mesh, only to test whether affected cdata layer has already been copied
- * somewhere up in the modifiers stack.
- */
- ob_m = get_mesh(ob);
- if (ob_m == NULL)
- return dm;
-
- /* Create a copy of our dmesh, only if our affected cdata layer is the same as org mesh. */
- if (dvert == CustomData_get_layer(&ob_m->vdata, CD_MDEFORMVERT)) {
- /* XXX Seems to create problems with weightpaint mode???
- * I'm missing something here, I guess...
- */
-// DM_set_only_copy(dm, CD_MASK_MDEFORMVERT); /* Only copy defgroup layer. */
- ret = CDDM_copy(dm);
- dvert = ret->getVertDataArray(ret, CD_MDEFORMVERT);
- if (dvert == NULL) {
- ret->release(ret);
- return dm;
- }
- rel_ret = 1;
- }
- else
- ret = dm;
-#else
- ret = CDDM_copy(dm, 0);
- rel_ret = 1;
- dvert = ret->getVertDataArray(ret, CD_MDEFORMVERT);
- if (dvert == NULL) {
- if (rel_ret)
- ret->release(ret);
- return dm;
- }
-#endif
+ dvert = CustomData_duplicate_referenced_layer(&dm->vertData, CD_MDEFORMVERT, numVerts);
/* Find out which vertices to work on. */
tidx = MEM_mallocN(sizeof(int) * numVerts, "WeightVGMix Modifier, tidx");
@@ -364,8 +318,6 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
MEM_freeN(tdw1);
MEM_freeN(tdw2);
MEM_freeN(tidx);
- if (rel_ret)
- ret->release(ret);
return dm;
}
if (numIdx != -1) {
@@ -400,7 +352,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
}
/* Do masking. */
- weightvg_do_mask(numIdx, indices, org_w, new_w, ob, ret, wmd->mask_constant,
+ weightvg_do_mask(numIdx, indices, org_w, new_w, ob, dm, wmd->mask_constant,
wmd->mask_defgrp_name, wmd->mask_texture, wmd->mask_tex_use_channel,
wmd->mask_tex_mapping, wmd->mask_tex_map_obj, wmd->mask_tex_uvlayer_name);
@@ -419,7 +371,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
MEM_freeN(indices);
/* Return the vgroup-modified mesh. */
- return ret;
+ return dm;
}
static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,