diff options
author | Matt Ebb <matt@mke3.net> | 2009-12-07 13:40:55 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2009-12-07 13:40:55 +0300 |
commit | f888903eaf45b02a41b100b8ef758a9913102688 (patch) | |
tree | c7282f50113052408dd30160572398a1e337bd55 /source | |
parent | a94a2c8c722f50415dcb2c0dad536f787eb42e2b (diff) |
Fix for [#20159] Orthographic camera + viewport
Patch provided by Aurel W. Thanks!
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 844ee2973ce..0ea185589e1 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1628,36 +1628,43 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) RegionView3D *rv3d= CTX_wm_region_view3d(C); Scene *scene= CTX_data_scene(C); static int perspo=RV3D_PERSP; - int viewnum, align_active; + int viewnum, align_active, nextperspo; viewnum = RNA_enum_get(op->ptr, "type"); align_active = RNA_boolean_get(op->ptr, "align_active"); + /* Use this to test if we started out with a camera */ + if (rv3d->persp == RV3D_CAMOB) { + nextperspo= rv3d->lpersp; + } else { + nextperspo= perspo; + } + switch (viewnum) { case RV3D_VIEW_BOTTOM : - axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_BACK: - axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, perspo, align_active); + axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, nextperspo, align_active); break; case RV3D_VIEW_LEFT: - axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, perspo, align_active); + axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, nextperspo, align_active); break; case RV3D_VIEW_TOP: - axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_FRONT: - axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, perspo, align_active); + axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, nextperspo, align_active); break; case RV3D_VIEW_RIGHT: - axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, perspo, align_active); + axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, nextperspo, align_active); break; case RV3D_VIEW_CAMERA: |