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
path: root/source
diff options
context:
space:
mode:
authorPablo Dobarro <pablodp606@gmail.com>2019-10-01 23:30:14 +0300
committerPablo Dobarro <pablodp606@gmail.com>2019-10-03 16:28:35 +0300
commit6db6267d85e9efb26af5f3d6a8318d7afd5bc10d (patch)
treea9841c5113f0d3ffdb24c81a534acc71460c8ecd /source
parentd6c440bd7ad5a0b3d5b43fa93a24760d2ba1e2f3 (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.h1
-rw-r--r--source/blender/blenkernel/intern/modifier.c17
-rw-r--r--source/blender/editors/object/object_remesh.c6
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);
}