diff --git a/data/layout.xml b/data/layout.xml
index b1015e3..0753c45 100644
--- a/data/layout.xml
+++ b/data/layout.xml
@@ -272,6 +272,10 @@
+
+
+
+
diff --git a/libs/openvr b/libs/openvr
index 5aa6c5f..e3d3756 160000
--- a/libs/openvr
+++ b/libs/openvr
@@ -1 +1 @@
-Subproject commit 5aa6c5f0f6520c59c4dce124541ecc62604fd7a5
+Subproject commit e3d37563fd0405117f035c111346f60ca12625ba
diff --git a/src/app.cpp b/src/app.cpp
index 848426f..a54db64 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -472,6 +472,7 @@ void App::init()
if (Settings::value_or("auto-timelapse", true))
rec_start();
+ Settings::value("vr-controllers-enabled", vr_controllers_enabled);
if (!check_license())
{
diff --git a/src/app.h b/src/app.h
index 8d3a90b..11624aa 100644
--- a/src/app.h
+++ b/src/app.h
@@ -132,6 +132,7 @@ public:
std::string doc_filename;
bool has_stylus = false;
bool has_vr = false;
+ bool vr_controllers_enabled = true;
float off_x = 0;
float off_y = 0;
float width;
diff --git a/src/app_layout.cpp b/src/app_layout.cpp
index 8840278..5470ed2 100644
--- a/src/app_layout.cpp
+++ b/src/app_layout.cpp
@@ -1004,6 +1004,25 @@ void App::init_menu_tools()
};
}
+ if (auto vr_btn = popup_time->find("tools-vr-controllers"))
+ {
+ NodeCheckBox* cb = vr_btn->find("tools-vr-controllers-check");
+ cb->set_value(vr_controllers_enabled);
+
+ vr_btn->on_click = [this, vr_btn](Node* b)
+ {
+ NodeCheckBox* cb = vr_btn->find("tools-vr-controllers-check");
+ cb->set_value(!cb->checked, true);
+ };
+
+ vr_btn->find("tools-vr-controllers-check")->on_value_changed = [this, main](Node* target, bool checked)
+ {
+ vr_controllers_enabled = checked;
+ Settings::set("vr-controllers-enabled", Serializer::Boolean(checked));
+ Settings::save();
+ };
+ }
+
if (auto btn = popup_time->find("tools-timelapse"))
{
NodeCheckBox* cb = btn->find("tools-timelapse-check");
diff --git a/src/app_vr.cpp b/src/app_vr.cpp
index e2240af..d97e21f 100644
--- a/src/app_vr.cpp
+++ b/src/app_vr.cpp
@@ -49,6 +49,8 @@ void App::vr_draw_ui()
void App::vr_update(float dt)
{
+ if (!vr_controllers_enabled)
+ return;
canvas->m_canvas->m_cam_fov = 60;
float tan_fov = glm::tan(glm::radians(canvas->m_canvas->m_cam_fov / 2.f));
glm::vec3 aspect = { (float)uirtt.getWidth() / (float)uirtt.getHeight(), 1.f, 1.f };
@@ -106,6 +108,8 @@ void App::vr_update(float dt)
void App::vr_analog(const VRController& c, VRController::kButton b, VRController::kAction a, glm::vec2 force)
{
+ if (!vr_controllers_enabled)
+ return;
if (b == VRController::kButton::Trigger)
{
if (!down_controller && (ui_inside || ui_capture) && ui_visible)
@@ -151,7 +155,9 @@ void App::vr_analog(const VRController& c, VRController::kButton b, VRController
void App::vr_digital(const VRController& c, VRController::kButton b, VRController::kAction a, glm::vec2 axis)
{
- if ((b == VRController::kButton::A || b == VRController::kButton::Menu || b == VRController::kButton::Pad)
+ if (!vr_controllers_enabled)
+ return;
+ if ((b == VRController::kButton::A || b == VRController::kButton::Menu || b == VRController::kButton::Pad)
&& a == VRController::kAction::Press)
{
if (glm::length(axis) < 0.5f)
@@ -400,7 +406,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
}
// draw the cursor
- if (ui_visible && ui_inside)
+ if (ui_visible /*&& ui_inside*/)
{
auto cur = (glm::vec2(cursor.x / width * zoom, 1.f - cursor.y / height * zoom) - 0.5f) * 2.f;
auto mvp = proj * camera *
@@ -418,7 +424,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
// draw the motion controller sphere
- if (ui_visible && ui_inside)
+ if (vr_controllers_enabled && ui_visible && ui_inside)
{
auto mvp = proj * camera * vr_controllers[0].m_mat;
ShaderManager::use(kShader::Color);
@@ -429,7 +435,7 @@ void App::vr_draw(const glm::mat4& proj, const glm::mat4& camera, const glm::mat
// draw the motion controller brush
- if (!ui_visible || !ui_inside)
+ if (vr_controllers_enabled && (!ui_visible || !ui_inside))
{
glm::vec3 cpos = vr_controllers[0].get_pos() - xyz(pose[3]);
auto pos = glm::translate(glm::normalize(cpos) * 100.f);