From d7ed26e3c6293c70fd01ae2e86e313529fea076d Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Fri, 11 Nov 2005 10:46:26 +0000 Subject: [PATCH] Deleting Effectors (deflectors or Fields) now update particle systems and softbody. (report #3385) --- source/blender/blenkernel/intern/library.c | 2 -- source/blender/blenkernel/intern/object.c | 9 ++++++++- source/blender/src/editobject.c | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 5f21beaccea..28808bb900f 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -468,8 +468,6 @@ void free_libblock(ListBase *lb, void *idv) BLI_remlink(lb, id); MEM_freeN(id); - /* should not be here!! this is an interface-thing */ - allspace(OOPS_TEST, 0); } void free_libblock_us(ListBase *lb, void *idv) /* test users */ diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index fe3ab612525..8917178fea9 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -246,7 +246,7 @@ void unlink_object(Object *ob) unlink_controllers(&ob->controllers); unlink_actuators(&ob->actuators); - /* check all objects: parents en bevels */ + /* check all objects: parents en bevels and fields */ obt= G.main->object.first; while(obt) { if(obt->id.lib==NULL) { @@ -298,6 +298,13 @@ void unlink_object(Object *ob) obt->recalc |= OB_RECALC_OB; } } + /* object is deflector or field */ + if(ob->pd) { + if(give_parteff(obt)) + obt->recalc |= OB_RECALC_DATA; + else if(obt->soft) + obt->recalc |= OB_RECALC_DATA; + } } obt= obt->id.next; } diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index cf97f7e7619..12f11e6a37c 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -269,6 +269,7 @@ void delete_obj(int ok) allqueue (REDRAWACTION, 0); allqueue(REDRAWIPO, 0); allqueue(REDRAWDATASELECT, 0); + allspace(OOPS_TEST, 0); allqueue(REDRAWOOPS, 0); allqueue(REDRAWACTION, 0); allqueue(REDRAWNLA, 0); @@ -2356,6 +2357,7 @@ void convertmenu(void) countall(); allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWOOPS, 0); + allspace(OOPS_TEST, 0); allqueue(REDRAWBUTSEDIT, 0); BIF_undo_push("Convert Object");