[Bf-blender-cvs] [9d9db8f] HMD_viewport: Fix checkbox for getting IPD from device always disabled while no HMD session runs
Julian Eisel
noreply at git.blender.org
Tue Oct 11 18:55:09 CEST 2016
Commit: 9d9db8f748bd8c9bb3fdd6777a0e61f16a450a5a
Author: Julian Eisel
Date: Tue Oct 11 18:41:26 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rB9d9db8f748bd8c9bb3fdd6777a0e61f16a450a5a
Fix checkbox for getting IPD from device always disabled while no HMD session runs
===================================================================
M source/blender/blenloader/intern/versioning_270.c
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index d5cb0c2..9c9d8eb 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -1430,7 +1430,7 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
if (!DNA_struct_elem_find(fd->filesdna, "Scene", "HMDViewSettings", "hmd_settings")) {
for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
scene->hmd_settings.view_shade = OB_MATERIAL;
- scene->hmd_settings.flag |= HMDVIEW_USE_LENSDIST_FX;
+ scene->hmd_settings.flag |= (HMDVIEW_USE_LENSDIST_FX | HMDVIEW_USE_DEVICE_IPD);
}
}
}
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 1ea9e1b..469df35 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -793,14 +793,30 @@ static void rna_Scene_hmd_view_lensdist_set(PointerRNA *ptr, int value)
static int rna_Scene_use_hmd_device_ipd_editeable(PointerRNA *ptr, const char **r_info)
{
+ Scene *scene = ptr->data;
+ bool editable = true;
- if (U.hmd_device == -1 || WM_device_HMD_IPD_get() == -1) {
- Scene *scene = ptr->data;
+ if (U.hmd_device == -1) {
+ *r_info = "No valid HMD device selected (see User Preferences)";
+ editable = false;
+ }
+ else {
+ const bool has_active_device = WM_device_HMD_current_get() >= 0;
- *r_info = (U.hmd_device == -1) ?
- "No valid HMD device selected (see User Preferences)" :
- "Active HMD device doesn't return valid interocular distance";
+ if (!has_active_device) {
+ /* temporary activate device to see if it returns an IPD */
+ WM_device_HMD_state_set(U.hmd_device, true);
+ }
+ if (WM_device_HMD_IPD_get() == -1.0f) {
+ *r_info = "Active HMD device doesn't return valid interocular distance";
+ editable = false;
+ }
+ if (!has_active_device) {
+ WM_device_HMD_state_set(U.hmd_device, false);
+ }
+ }
+ if (!editable) {
scene->hmd_settings.flag |= HMDVIEW_USE_DEVICE_IPD;
return false;
}
@@ -7377,7 +7393,7 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "HMD View Lens Distortion", "Draw the HMD viewport using a distorted lens");
prop = RNA_def_property(srna, "use_hmd_device_ipd", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_DEVICE_IPD);
+ RNA_def_property_boolean_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_DEVICE_IPD);
RNA_def_property_ui_text(prop, "Interocular Distance from HMD",
"Request the interocular distance (distance between eyes) from the HMD driver");
RNA_def_property_editable_func(prop, "rna_Scene_use_hmd_device_ipd_editeable");
More information about the Bf-blender-cvs
mailing list