From b22831e5cee300258129d86b3dba01931c42bfc5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 15 Aug 2014 10:07:39 +0200 Subject: Modifiers: consider all constructive modifiers as 'preview' ones as well. Indeed, constructive modifiers are highly likely to modify CDLayers like vgroups or vcols! See vertexgroup2.blend file ({F93770}) in T40523, especially obvious with subsurf modifier. --- source/blender/blenkernel/intern/DerivedMesh.c | 4 +--- source/blender/blenkernel/intern/modifier.c | 7 +++++-- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 46f04ff03b2..7771b451af4 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -2022,9 +2022,7 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D 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; - } + previewmask = CD_MASK_MDEFORMVERT; } } diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 1c42603cf4a..074a91ea2cf 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -171,11 +171,14 @@ bool modifier_isPreview(ModifierData *md) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); - if (!(mti->flags & eModifierTypeFlag_UsesPreview)) + /* Constructive modifiers are highly likely to also modify data like vgroups or vcol! */ + if (!((mti->flags & eModifierTypeFlag_UsesPreview) || (mti->type == eModifierTypeType_Constructive))) { return false; + } - if (md->mode & eModifierMode_Realtime) + if (md->mode & eModifierMode_Realtime) { return true; + } return false; } -- cgit v1.2.3