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-06-19 12:19:36 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-19 12:19:36 +0400
commitfed8f760983054169eed995b684bd44a7c224e55 (patch)
tree6e9af5973d8023e7cd2e1018b314b1db5506c40f /source/blender/modifiers
parentd9ec2efe8fc8d19628ebf425b8cc61c16f82bab1 (diff)
fix [#35795] Edge split modifier do not show result in viewport with curves.
caused by recent changes in normal calculation, however curves were not being very smart about calculating modifiers (calling unneeded re-tessellation for every modifier)
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r--source/blender/modifiers/intern/MOD_edgesplit.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c
index d877932b81d..e37fc56d08c 100644
--- a/source/blender/modifiers/intern/MOD_edgesplit.c
+++ b/source/blender/modifiers/intern/MOD_edgesplit.c
@@ -49,7 +49,7 @@
#include "DNA_object_types.h"
-static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd, Object *UNUSED(ob))
+static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd)
{
DerivedMesh *result;
BMesh *bm;
@@ -97,7 +97,8 @@ static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd, Obj
result = CDDM_from_bmesh(bm, TRUE);
BM_mesh_free(bm);
-
+
+ result->dirty |= DM_DIRTY_NORMALS;
return result;
}
@@ -119,25 +120,16 @@ static void copyData(ModifierData *md, ModifierData *target)
temd->flags = emd->flags;
}
-static DerivedMesh *edgesplitModifier_do(EdgeSplitModifierData *emd,
- Object *ob, DerivedMesh *dm)
-{
- if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG)))
- return dm;
-
- return doEdgeSplit(dm, emd, ob);
-}
-
-static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *derivedData,
+static DerivedMesh *applyModifier(ModifierData *md, Object *UNUSED(ob), DerivedMesh *dm,
ModifierApplyFlag UNUSED(flag))
{
DerivedMesh *result;
EdgeSplitModifierData *emd = (EdgeSplitModifierData *) md;
- result = edgesplitModifier_do(emd, ob, derivedData);
+ if (!(emd->flags & (MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG)))
+ return dm;
- if (result != derivedData)
- result->dirty |= DM_DIRTY_NORMALS;
+ result = doEdgeSplit(dm, emd);
return result;
}