diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-05-06 18:55:50 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-05-06 18:56:24 +0400 |
commit | 63a66478f5cebe1d80249eb7cc52c3fe0789d296 (patch) | |
tree | f71a45881566fa488d027534f2d2544a202f1adb /source/blender/blenkernel/intern/cdderivedmesh.c | |
parent | 80e137e826cac408e66d79d16db44d732e117b01 (diff) |
Over-optimized stuff in the previous commit, sorry.
Diffstat (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/cdderivedmesh.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 2650fad238d..205282c1de7 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -222,7 +222,7 @@ static const MeshElemMap *cdDM_getPolyMap(Object *ob, DerivedMesh *dm) return cddm->pmap; } -static bool check_sculpt_object_deformed(Object *object) +static bool check_sculpt_object_deformed(Object *object, bool for_construction) { bool deformed = false; @@ -232,10 +232,16 @@ static bool check_sculpt_object_deformed(Object *object) */ deformed |= object->sculpt->modifiers_active; - /* as in case with modifiers, we can't synchronize deformation made against - * PBVH and non-locked keyblock, so also use PBVH only for brushes and - * final DM to give final result to user */ - deformed |= object->sculpt->kb && (object->shapeflag & OB_SHAPE_LOCK) == 0; + if (for_construction) { + deformed |= object->sculpt->kb != NULL; + } + else { + /* As in case with modifiers, we can't synchronize deformation made against + * PBVH and non-locked keyblock, so also use PBVH only for brushes and + * final DM to give final result to user. + */ + deformed |= object->sculpt->kb && (object->shapeflag & OB_SHAPE_LOCK) == 0; + } return deformed; } @@ -244,7 +250,7 @@ static bool can_pbvh_draw(Object *ob, DerivedMesh *dm) { CDDerivedMesh *cddm = (CDDerivedMesh *) dm; Mesh *me = ob->data; - bool deformed = check_sculpt_object_deformed(ob); + bool deformed = check_sculpt_object_deformed(ob, false); if (deformed) { return false; @@ -301,7 +307,7 @@ static PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) pbvh_show_diffuse_color_set(cddm->pbvh, ob->sculpt->show_diffuse_color); - deformed = check_sculpt_object_deformed(ob); + deformed = check_sculpt_object_deformed(ob, true); if (deformed && ob->derivedDeform) { DerivedMesh *deformdm = ob->derivedDeform; |