diff options
author | Diego Borghetti <bdiego@gmail.com> | 2010-06-09 19:35:10 +0400 |
---|---|---|
committer | Diego Borghetti <bdiego@gmail.com> | 2010-06-09 19:35:10 +0400 |
commit | e2bc4ca9cee0c66c10efb9cf552c1135f30e7a4b (patch) | |
tree | 34c0e88f6e5b8134bee1528b7eae1aeb443b63b6 /source/blender/blenkernel | |
parent | 1a3686701736cd60defc2e034f5e3806845291bf (diff) |
Fix #22317 View reamins in camera's view after camera is deleted (again)
The problem was not in the editors, the code in blenkernel have a XXX
in the perspective value. Now unlink_object also update the ARegion.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index c544e27a102..ac4fd28bd28 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -320,6 +320,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec ob->recalc |= OB_RECALC; } } + void unlink_object(Scene *scene, Object *ob) { Object *obt; @@ -334,6 +335,8 @@ void unlink_object(Scene *scene, Object *ob) bConstraint *con; //bActionStrip *strip; // XXX animsys ModifierData *md; + ARegion *ar; + RegionView3D *rv3d; int a; unlink_controllers(&ob->controllers); @@ -606,17 +609,27 @@ void unlink_object(Scene *scene, Object *ob) while(sa) { SpaceLink *sl; + if (sa->spacetype == SPACE_VIEW3D) { + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + rv3d= (RegionView3D *)ar->regiondata; + if (rv3d->persp == RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + if (rv3d->localvd && rv3d->localvd->persp == RV3D_CAMOB) + rv3d->localvd->persp= RV3D_PERSP; + } + } + } + for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; if(v3d->camera==ob) { v3d->camera= NULL; - // XXX if(v3d->persp==V3D_CAMOB) v3d->persp= V3D_PERSP; } if(v3d->localvd && v3d->localvd->camera==ob ) { v3d->localvd->camera= NULL; - // XXX if(v3d->localvd->persp==V3D_CAMOB) v3d->localvd->persp= V3D_PERSP; } } else if(sl->spacetype==SPACE_OUTLINER) { |