diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2019-10-01 23:30:14 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2019-10-03 16:28:35 +0300 |
commit | 6db6267d85e9efb26af5f3d6a8318d7afd5bc10d (patch) | |
tree | a9841c5113f0d3ffdb24c81a534acc71460c8ecd /source | |
parent | d6c440bd7ad5a0b3d5b43fa93a24760d2ba1e2f3 (diff) |
Sculpt: Disable remesh operators with Multires
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D5964
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_modifier.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 17 | ||||
-rw-r--r-- | source/blender/editors/object/object_remesh.c | 6 |
3 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index b2bc30c107c..007847f8e92 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -380,6 +380,7 @@ struct Object *modifiers_isDeformedByArmature(struct Object *ob); struct Object *modifiers_isDeformedByMeshDeform(struct Object *ob); struct Object *modifiers_isDeformedByLattice(struct Object *ob); struct Object *modifiers_isDeformedByCurve(struct Object *ob); +bool modifiers_usesMultires(struct Object *ob); bool modifiers_usesArmature(struct Object *ob, struct bArmature *arm); bool modifiers_usesSubsurfFacedots(struct Scene *scene, struct Object *ob); bool modifiers_isCorrectableDeformed(struct Scene *scene, struct Object *ob); diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 656ec50f31b..1c83bec17e5 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -761,6 +761,23 @@ Object *modifiers_isDeformedByCurve(Object *ob) return NULL; } +bool modifiers_usesMultires(Object *ob) +{ + VirtualModifierData virtualModifierData; + ModifierData *md = modifiers_getVirtualModifierList(ob, &virtualModifierData); + MultiresModifierData *mmd = NULL; + + for (; md; md = md->next) { + if (md->type == eModifierType_Multires) { + mmd = (MultiresModifierData *)md; + if (mmd->totlvl != 0) { + return true; + } + } + } + return false; +} + bool modifiers_usesArmature(Object *ob, bArmature *arm) { VirtualModifierData virtualModifierData; diff --git a/source/blender/editors/object/object_remesh.c b/source/blender/editors/object/object_remesh.c index 5d5165675b2..01d3fa5d35a 100644 --- a/source/blender/editors/object/object_remesh.c +++ b/source/blender/editors/object/object_remesh.c @@ -92,6 +92,12 @@ static bool object_remesh_poll(bContext *C) return false; } + if (modifiers_usesMultires(ob)) { + CTX_wm_operator_poll_msg_set( + C, "The remesher cannot run with a Multires modifier in the modifier stack."); + return false; + } + return ED_operator_object_active_editable_mesh(C); } |