diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-11-19 15:19:06 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-11-19 15:19:06 +0400 |
commit | 000312ab515b77f00725a91b235685ff0c774e57 (patch) | |
tree | f6f36e58e1d4df2a65be158a3f7e4364bf55a8ec /source/blender/makesrna/intern/rna_object_force.c | |
parent | c566e408e42836c136d8818cbea93ce870be09ea (diff) |
Remove Surface modifier when removing force field from object
Summary:
Before this adding Surface type of force field and removing
this field would leave Surface modifier alive in the stack.
This might be really misleading and annoying.
Now removing force field will ensure no modifiers needed for
it are remained in the stack.
This also fixes missing notifier to redraw modifier stack
when changing force field type.
Reviewers: brecht, campbellbarton
Reviewed By: brecht
Differential Revision: http://developer.blender.org/D13
Diffstat (limited to 'source/blender/makesrna/intern/rna_object_force.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_object_force.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 33ae256c042..2a93925a8e5 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -517,21 +517,9 @@ static void rna_FieldSettings_shape_update(Main *bmain, Scene *scene, PointerRNA { if (!particle_id_check(ptr)) { Object *ob = (Object *)ptr->id.data; - PartDeflect *pd = ob->pd; - ModifierData *md = modifiers_findByType(ob, eModifierType_Surface); - - /* add/remove modifier as needed */ - if (!md) { - if (pd && (pd->shape == PFIELD_SHAPE_SURFACE) && ELEM(pd->forcefield, PFIELD_GUIDE, PFIELD_TEXTURE) == 0) - if (ELEM4(ob->type, OB_MESH, OB_SURF, OB_FONT, OB_CURVE)) - ED_object_modifier_add(NULL, bmain, scene, ob, NULL, eModifierType_Surface); - } - else { - if (!pd || pd->shape != PFIELD_SHAPE_SURFACE) - ED_object_modifier_remove(NULL, bmain, ob, md); - } - + ED_object_check_force_modifiers(bmain, scene, ob); WM_main_add_notifier(NC_OBJECT | ND_DRAW, ob); + WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ob); } } |