[Bf-blender-cvs] [6db6267d85e] master: Sculpt: Disable remesh operators with Multires

Pablo Dobarro noreply at git.blender.org
Thu Oct 3 15:26:15 CEST 2019


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



More information about the Bf-blender-cvs mailing list