diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-07-01 04:42:44 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-07-01 04:42:44 +0400 |
commit | c729c5ab4b5b44b2f3081b06143816cd5d8a4074 (patch) | |
tree | d67d267f71610795a40d63cc76ea75377c1ecbed /source/blender/blenkernel/intern/DerivedMesh.c | |
parent | b3ceab896aa6369cf4cd6c62ae3b0e2180ff8ae6 (diff) |
fix [#35911] Show weights not working with a weight edit modifier in edit mode
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 18 |
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) { |