[Bf-blender-cvs] [409154f] HMD_viewport: Don't allow to open multiple HMD views
Julian Eisel
noreply at git.blender.org
Wed Mar 16 16:11:01 CET 2016
Commit: 409154f1f8f6fc5c98998de80c0013eaa0247d60
Author: Julian Eisel
Date: Fri Mar 11 03:24:23 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB409154f1f8f6fc5c98998de80c0013eaa0247d60
Don't allow to open multiple HMD views
And cleanup.
===================================================================
M source/blender/editors/space_view3d/view3d_edit.c
M source/blender/windowmanager/intern/wm_operators.c
===================================================================
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index a7cd860..8c36e24 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -4800,50 +4800,12 @@ void VIEW3D_OT_enable_manipulator(wmOperatorType *ot)
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
}
-/* ***************** TODO ******************* */
+/* ***************** HMD Session ******************* */
typedef struct HMDData {
float orientation[4];
} HMDData;
-static int hmd_refresh_poll(bContext *C)
-{
- Scene *scene = CTX_data_scene(C);
- return ((scene->r.scemode & R_HMD_IGNORE_ROT) == 0 && (scene->flag & SCE_HMD_RUNNING));
-}
-
-static int hmd_refresh_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
-{
- Scene *scene = CTX_data_scene(C);
- View3D *v3d = CTX_wm_view3d(C);
- Object *camera_ob = v3d ? v3d->camera : scene->camera;
- HMDData *data = event->customdata;
- float quad[4] = {M_SQRT1_2, M_SQRT1_2, 0.0f, 0.0f};
-
- mul_qt_qtqt(camera_ob->quat, quad, data->orientation);
- normalize_qt(camera_ob->quat);
- loc_quat_size_to_mat4(camera_ob->obmat, camera_ob->loc, camera_ob->quat, camera_ob->size);
-
- DAG_id_tag_update(&camera_ob->id, 0); /* sets recalc flags */
- ED_region_tag_redraw(CTX_wm_region(C));
-
- return OPERATOR_FINISHED;
-}
-
-void VIEW3D_OT_hmd_refresh(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name = "Refresh HMD Data";
- ot->description = "Updates the orientation of the head mounted display";
- ot->idname = "VIEW3D_OT_hmd_refresh";
-
- /* api callbacks */
- ot->invoke = hmd_refresh_invoke;
- ot->poll = hmd_refresh_poll;
-
- /* flags */
- ot->flag = OPTYPE_INTERNAL;
-}
static void hmd_run_exit(wmWindow *win, Scene *scene)
{
scene->flag &= ~SCE_HMD_RUNNING;
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index b96dfc3..45d51e3 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5097,6 +5097,17 @@ static void WM_OT_stereo3d_set(wmOperatorType *ot)
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
}
+static int wm_hmd_view_open_poll(bContext *C)
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ for (wmWindow *win = wm->windows.first; win; win = win->next) {
+ if (UNLIKELY(win->screen->flag & SCREEN_FLAG_HMD_SCREEN)) {
+ return false;
+ }
+ }
+ return true;
+}
+
static int wm_hmd_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event))
{
wmWindow *win = wm_window_copy_test(C, CTX_wm_window(C));
@@ -5144,7 +5155,7 @@ static void WM_OT_hmd_view_open(wmOperatorType *ot)
ot->description = "Open a separate window for display on a head mounted display";
ot->invoke = wm_hmd_view_open_invoke;
- ot->poll = WM_operator_winactive;
+ ot->poll = wm_hmd_view_open_poll;
}
/* ******************************************************* */
More information about the Bf-blender-cvs
mailing list