Commit: 6db6267d85e9efb26af5f3d6a8318d7afd5bc10d
Author: Pablo Dobarro
Date:   Tue Oct 1 22:30:14 2019 +0200
Branches: master
https://developer.blender.org/rB6db6267d85e9efb26af5f3d6a8318d7afd5bc10d

Sculpt: Disable remesh operators with Multires

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5964

===================================================================

M       source/blender/blenkernel/BKE_modifier.h
M       source/blender/blenkernel/intern/modifier.c
M       source/blender/editors/object/object_remesh.c

===================================================================

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);
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to