From 66227ae7448cb6b9a2b11ffab0c9de00e0f372ff Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Tue, 6 Jun 2023 14:05:43 +0200 Subject: [PATCH] add transparency toggle --- bindings/action_manifest.json | 6 ++++++ src/app.cpp | 17 +++++++++++++++++ src/app.h | 2 ++ 3 files changed, 25 insertions(+) diff --git a/bindings/action_manifest.json b/bindings/action_manifest.json index 0c9128e..e9f2b6d 100644 --- a/bindings/action_manifest.json +++ b/bindings/action_manifest.json @@ -56,6 +56,11 @@ "requirement": "suggested", "type": "vector2" }, + { + "name": "/actions/cursor/in/toggle_transparent", + "requirement": "suggested", + "type": "boolean" + }, { "name": "/actions/cursor/out/scroll_haptic", "requirement": "suggested", @@ -89,6 +94,7 @@ "/actions/cursor/in/mouse_right": "right mouse button", "/actions/cursor/in/mouse_middle": "middle mouse button", "/actions/cursor/in/scroll": "scroll", + "/actions/cursor/in/toggle_transparent": "toggle transparency", "/actions/cursor/out/scroll_haptic": "scrolling haptic feedback" } ] diff --git a/src/app.cpp b/src/app.cpp index 72ff00a..7bbc85d 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -10,6 +10,7 @@ const VRMat root_start_pose = {{{1, 0, 0, 0}, {0, 1, 0, 0.8f}, {0, 0, 1, 0}}}; // 0.8m above origin const int FRAME_INTERVAL = 4; // number of update loops until the frame buffer is updated +const float TRANSPARENCY = 0.6f; App::App() { @@ -75,6 +76,8 @@ App::App() assert(action_err == 0); action_err = vr_input->GetActionHandle("/actions/cursor/in/scroll", &_input_handles.cursor.scroll); assert(action_err == 0); + action_err = vr_input->GetActionHandle("/actions/cursor/in/toggle_transparent", &_input_handles.cursor.toggle_transparent); + assert(action_err == 0); action_err = vr_input->GetActionHandle("/actions/cursor/out/scroll_haptic", &_input_handles.cursor.scroll_haptic); assert(action_err == 0); action_err = vr_input->GetActionSetHandle("/actions/main", &_input_handles.main_set); @@ -193,6 +196,20 @@ void App::UpdateInput(float dtime) } UpdateUIVisibility(); } + if (IsInputJustPressed(_input_handles.cursor.toggle_transparent)) + { + _transparent = !_transparent; + if (_transparent) + { + for (auto &panel : _panels) + panel.GetOverlay()->SetAlpha(TRANSPARENCY); + } + else + { + for (auto &panel : _panels) + panel.GetOverlay()->SetAlpha(1); + } + } if (!_hidden) { if (IsInputJustPressed(_input_handles.main.reset)) diff --git a/src/app.h b/src/app.h index fa721ce..ecbbd79 100644 --- a/src/app.h +++ b/src/app.h @@ -33,6 +33,7 @@ struct InputHandles vr::VRActionHandle_t mouse_middle; vr::VRActionHandle_t scroll; vr::VRActionHandle_t scroll_haptic; + vr::VRActionHandle_t toggle_transparent; } cursor; vr::VRActionSetHandle_t cursor_set; struct @@ -87,6 +88,7 @@ class App Overlay _root_overlay; std::vector _panels; bool _hidden = false; + bool _transparent = false; bool _edit_mode = false; std::optional _active_cursor;