Commit: 7a4138a5b9c95a8a2e1a1691164806dffd8fe1cd Author: Julian Eisel Date: Tue Oct 11 21:53:06 2016 +0200 Branches: HMD_viewport https://developer.blender.org/rB7a4138a5b9c95a8a2e1a1691164806dffd8fe1cd
Toggle into scene camera when opening HMD window =================================================================== M source/blender/windowmanager/intern/wm_event_system.c M source/blender/windowmanager/intern/wm_operators.c =================================================================== diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 411f884..07afac2 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -3496,6 +3496,7 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U event.type = EVT_HMD_TRANSFORM; event.customdata = MEM_mallocN(sizeof(e->orientation), "HMD orientation event data"); event.customdatafree = true; + /* Take care for HMDOrientationData when changing this! */ memcpy(event.customdata, e->orientation, sizeof(e->orientation)); wm_event_add(win, &event); } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 250aa25..f2dbcca 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -4148,6 +4148,23 @@ static void hmd_view_exit(const bContext *C, Scene *scene) } } +static void hmd_view_prepare_screen(bContext *C, Scene *scene, wmWindow *win) +{ + ScrArea *sa = win->screen->areabase.first; + View3D *v3d = sa->spacedata.first; + RegionView3D *rv3d = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW)->regiondata; + + BLI_assert(sa->spacetype == SPACE_VIEW3D); + ED_screen_state_toggle(C, win, sa, SCREENFULL); + + /* sync view options */ + v3d->drawtype = scene->hmd_settings.view_shade; + v3d->fx_settings.fx_flag = scene->hmd_settings.flag; + + rv3d->persp = RV3D_CAMOB; + rv3d->camzoom = BKE_screen_view3d_zoom_from_fac(1.0f); +} + static int wm_hmd_view_toggle_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event)) { wmWindow *prevwin = CTX_wm_window(C); @@ -4172,14 +4189,7 @@ static int wm_hmd_view_toggle_invoke(bContext *C, wmOperator *UNUSED(op), const win = WM_window_open_temp(C, &rect, WM_WINDOW_HMD); wm->win_hmd = win; - /* prepare area */ - ScrArea *sa = win->screen->areabase.first; - View3D *v3d = sa->spacedata.first; - BLI_assert(sa->spacetype == SPACE_VIEW3D); - ED_screen_state_toggle(C, win, sa, SCREENFULL); - /* sync view options */ - v3d->drawtype = scene->hmd_settings.view_shade; - v3d->fx_settings.fx_flag = scene->hmd_settings.flag; + hmd_view_prepare_screen(C, scene, win); } return OPERATOR_FINISHED; @@ -4228,36 +4238,15 @@ static int hmd_session_toggle_invoke(bContext *C, wmOperator *UNUSED(op), const ScrArea *sa = hmd_win->screen->areabase.first; ARegion *ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW); View3D *v3d = sa->spacedata.first; - RegionView3D *rv3d = ar->regiondata; BLI_assert(sa->spacetype = SPACE_VIEW3D); WM_device_HMD_state_set(U.hmd_device, true); - /* XXX duplicated code from viewnumpad_exec */ - if (rv3d->persp != RV3D_CAMOB) { - Object *ob = OBACT; - /* first get the default camera for the view lock type */ - if (v3d->scenelock) { - /* sets the camera view if available */ - v3d->camera = scene->camera; - } - else { - /* use scene camera if one is not set (even though we're unlocked) */ - if (v3d->camera == NULL) { - v3d->camera = scene->camera; - } - } - /* if the camera isn't found, check a number of options */ - if (v3d->camera == NULL && ob && ob->type == OB_CAMERA) - v3d->camera = ob; - if (v3d->camera == NULL) - v3d->camera = BKE_scene_camera_find(scene); - if (v3d->camera) { - rv3d->persp = RV3D_CAMOB; - BKE_object_rot_to_quat(v3d->camera, init_rot); - } - ED_view3d_update_viewmat(scene, sa->spacedata.first, ar, NULL, NULL); + BLI_assert(v3d->camera == scene->camera); + if (scene->camera) { + BKE_object_rot_to_quat(scene->camera, init_rot); } + ED_view3d_update_viewmat(scene, sa->spacedata.first, ar, NULL, NULL); WM_window_fullscreen_toggle(hmd_win, true, false); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs