diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2010-09-09 04:14:51 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2010-09-09 04:14:51 +0400 |
commit | 4eaa10aa02994c4609e1c12e38d0eda6355f9077 (patch) | |
tree | d2a8fcc7adc471dee1c5b2f29e2431c8afbfa469 /source/blender/blenkernel/intern/modifier.c | |
parent | 2d4e8ba22fc4fd304c35af629480e80d4cb8bac2 (diff) |
== Multires ==
Fixed bug #23657, "Modifiers dosen't work when you select diffrent mesh for object"
Multires modifier now adds empty mdisps if they're missing, rather than displaying a warning
Switching an object's mesh will now check for a multires modifier; if found the modifier's total number of levels are reset to match the mesh's mdisps
Switching the mesh also forces a multires update so that sculpted changes aren't lost
Diffstat (limited to 'source/blender/blenkernel/intern/modifier.c')
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 63f0f1fa091..43d26f26d1f 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -49,6 +49,7 @@ #include "BKE_bmesh.h" #include "BKE_cloth.h" #include "BKE_key.h" +#include "BKE_multires.h" #include "MOD_modifiertypes.h" @@ -526,5 +527,21 @@ void modifier_freeTemporaryData(ModifierData *md) } } +/* ensure modifier correctness when changing ob->data */ +void test_object_modifiers(Object *ob) +{ + ModifierData *md; + + /* just multires checked for now, since only multires + modifies mesh data */ + + if(ob->type != OB_MESH) return; + for(md = ob->modifiers.first; md; md = md->next) { + if(md->type == eModifierType_Multires) { + MultiresModifierData *mmd = (MultiresModifierData*)md; + multiresModifier_set_levels_from_disps(mmd, ob); + } + } +} |