From 451cb25e4e87f1b7e8a505cd93b0fb1c6dac59df Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Fri, 1 Dec 2006 22:44:27 +0000 Subject: [PATCH] Added warning in the multires panel to alert user if they have a modifier that changes mesh topology enabled, the render level will not have any effect. --- source/blender/include/multires.h | 1 + source/blender/src/buttons_editing.c | 6 ++++++ source/blender/src/multires.c | 24 ++++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/source/blender/include/multires.h b/source/blender/include/multires.h index 82a4629408d..f69fdf59c2b 100644 --- a/source/blender/include/multires.h +++ b/source/blender/include/multires.h @@ -52,5 +52,6 @@ void multires_update_levels(Mesh *me); void multires_level_to_mesh(Object *ob, Mesh *me); void multires_calc_level_maps(MultiresLevel *lvl); void multires_edge_level_update(void *ob, void *me); +int multires_modifier_warning(); #endif diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index 0c307382187..9f6ea8ec2a3 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -4802,6 +4802,12 @@ void editing_panel_mesh_multires() uiDefButC(block,NUM,B_NOP,"Render: ",cx,cy,200,19,&me->mr->renderlvl,1.0,me->mr->level_count,0,0,"Set level to render"); cy-= 20; + + if(multires_modifier_warning()) { + char *tip= "One or more modifiers are enabled that modify mesh topology"; + uiDefIconBut(block,LABEL,B_NOP,ICON_ERROR, cx,cy,20,20, 0,0,0,0,0, tip); + uiDefBut(block,LABEL,B_NOP, "Cannot use render level", cx+20,cy,180,19, 0,0,0,0,0, tip); + } } } diff --git a/source/blender/src/multires.c b/source/blender/src/multires.c index 752b9e8cf03..45806e1efd4 100644 --- a/source/blender/src/multires.c +++ b/source/blender/src/multires.c @@ -39,6 +39,7 @@ #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" +#include "DNA_modifier_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_vec_types.h" @@ -47,6 +48,7 @@ #include "BKE_depsgraph.h" #include "BKE_global.h" #include "BKE_mesh.h" +#include "BKE_modifier.h" #include "BIF_screen.h" #include "BIF_space.h" @@ -1366,3 +1368,25 @@ void multires_edge_level_update(void *ob, void *me_v) allqueue(REDRAWVIEW3D, 0); } + +int multires_modifier_warning() +{ + ModifierData *md; + + for(md= modifiers_getVirtualModifierList(OBACT); md; md= md->next) { + if(md->mode & eModifierMode_Render) { + switch(md->type) { + case eModifierType_Subsurf: + case eModifierType_Build: + case eModifierType_Mirror: + case eModifierType_Decimate: + case eModifierType_Boolean: + case eModifierType_Array: + case eModifierType_EdgeSplit: + return 1; + } + } + } + + return 0; +}