From d1ef6be4a770c8b2caacc70cb93d3cf9ab52e0d9 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 5 Feb 2019 18:37:42 -0200 Subject: Fix T61204: Can't select Camera in stereoscopy mode This was deliberately disabled since I didn't get the drawing working originally. It is fully working now. Note: camera lens widget still needs to be fixed since it still draws it wrongly. --- source/blender/draw/modes/object_mode.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'source') diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index 78e256039d8..cf6c9e39028 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -1868,22 +1868,23 @@ static void DRW_shgroup_camera(OBJECT_ShadingGroupList *sgl, Object *ob, ViewLay if (look_through && !is_stereo3d_cameras) { /* Only draw the frame. */ float mat[4][4]; - if (is_selection_camera_stereo) { - /* Make sure selection uses the same matrix for camera as the one used while viewing. */ + if (is_stereo3d) { const bool is_left = v3d->multiview_eye == STEREO_LEFT_ID; - BKE_camera_multiview_model_matrix(&scene->r, ob, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, mat); + const char *view_name = is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME; + BKE_camera_multiview_model_matrix(&scene->r, ob, view_name, mat); + const float shiftx = BKE_camera_multiview_shift_x(&scene->r, ob, view_name); + cam->drwcorners[0][0][0] += shiftx; + cam->drwcorners[0][1][0] += shiftx; + cam->drwcorners[0][2][0] += shiftx; + cam->drwcorners[0][3][0] += shiftx; } else { copy_m4_m4(mat, ob->obmat); } - /* TODO (dfelinto): Disabling this for now since it is extremely wrong. - * Besides selection and multiview still works bad even on its finest day. */ - if (!is_multiview) { - DRW_shgroup_call_dynamic_add( - sgl->camera_frame, color, cam->drwcorners[0], - &cam->drwdepth[0], cam->drwtria, mat); - } + DRW_shgroup_call_dynamic_add( + sgl->camera_frame, color, cam->drwcorners[0], + &cam->drwdepth[0], cam->drwtria, mat); } else if (!look_through) { if (!is_stereo3d_cameras) { -- cgit v1.2.3