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>2013-07-01 04:42:44 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-01 04:42:44 +0400
commitc729c5ab4b5b44b2f3081b06143816cd5d8a4074 (patch)
treed67d267f71610795a40d63cc76ea75377c1ecbed /source/blender/blenkernel
parentb3ceab896aa6369cf4cd6c62ae3b0e2180ff8ae6 (diff)
fix [#35911] Show weights not working with a weight edit modifier in edit mode
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index aeb664b3c2f..6f86b0c3f88 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1946,9 +1946,9 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
DerivedMesh **final_r,
CustomDataMask dataMask)
{
- ModifierData *md;
+ ModifierData *md, *previewmd = NULL;
float (*deformedVerts)[3] = NULL;
- CustomDataMask mask;
+ CustomDataMask mask, previewmask = 0;
DerivedMesh *dm, *orcodm = NULL;
int i, numVerts = 0, cageIndex = modifiers_getCageIndex(scene, ob, NULL, 1);
CDMaskLink *datamasks, *curr;
@@ -1962,6 +1962,7 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
const int do_final_wmcol = FALSE;
int do_init_wmcol = ((((Mesh *)ob->data)->drawflag & ME_DRAWEIGHT) && !do_final_wmcol);
int do_init_statvis = ((((Mesh *)ob->data)->drawflag & ME_DRAW_STATVIS) && !do_init_wmcol);
+ const int do_mod_wmcol = do_init_wmcol;
modifiers_clearErrors(ob);
@@ -1972,7 +1973,18 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
dm = NULL;
md = modifiers_getVirtualModifierList(ob);
- datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode, NULL, 0);
+ /* copied from mesh_calc_modifiers */
+ if (do_mod_wmcol) {
+ previewmd = modifiers_getLastPreview(scene, md, required_mode);
+ /* even if the modifier doesn't need the data, to make a preview it may */
+ if (previewmd) {
+ if (do_mod_wmcol) {
+ previewmask = CD_MASK_MDEFORMVERT;
+ }
+ }
+ }
+
+ datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode, previewmd, previewmask);
curr = datamasks;
for (i = 0; md; i++, md = md->next, curr = curr->next) {