From 6c15e9ff5fc385a66dfc6155ec5a9a00423992e8 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Sun, 30 May 2021 20:12:16 +0200 Subject: [PATCH] main menu loads a list of overlays, individual grabbing and setting tracking implemented --- ovr-utils/ListOverlayItem.tscn | 71 ++++++++++++++---- ovr-utils/Main.tscn | 2 +- .../interaction/overlay_grab.gd | 2 +- .../interaction/overlay_interaction.gd | 7 +- .../addons/openvr_overlay/overlay_instance.gd | 9 +++ .../settings-manager/settings_definition.gd | 2 +- ovr-utils/icons/add.svg | 2 +- ovr-utils/icons/hand_r.svg | 1 + ovr-utils/icons/hand_r.svg.import | 34 +++++++++ ovr-utils/icons/move.svg | 1 + ovr-utils/icons/move.svg.import | 34 +++++++++ ovr-utils/icons/size.svg | 2 +- ovr-utils/icons/target.svg | 1 + ovr-utils/icons/target.svg.import | 34 +++++++++ ovr-utils/icons/touch.svg | 1 + ovr-utils/icons/touch.svg.import | 34 +++++++++ ovr-utils/menu.theme | Bin 333 -> 755 bytes ovr-utils/overlay_list_item.gd | 17 ++++- ovr-utils/overlay_scripts/main_menu.gd | 8 ++ ovr-utils/overlays/MainOverlay.tscn | 36 +++++---- ovr-utils/styles/background.stylebox | Bin 0 -> 431 bytes ovr-utils/styles/buttons/normal.stylebox | Bin 0 -> 427 bytes ovr-utils/styles/buttons/pressed.stylebox | Bin 0 -> 440 bytes ovr-utils/styles/menu.theme | Bin 0 -> 593 bytes 24 files changed, 260 insertions(+), 38 deletions(-) create mode 100644 ovr-utils/icons/hand_r.svg create mode 100644 ovr-utils/icons/hand_r.svg.import create mode 100644 ovr-utils/icons/move.svg create mode 100644 ovr-utils/icons/move.svg.import create mode 100644 ovr-utils/icons/target.svg create mode 100644 ovr-utils/icons/target.svg.import create mode 100644 ovr-utils/icons/touch.svg create mode 100644 ovr-utils/icons/touch.svg.import create mode 100644 ovr-utils/styles/background.stylebox create mode 100644 ovr-utils/styles/buttons/normal.stylebox create mode 100644 ovr-utils/styles/buttons/pressed.stylebox create mode 100644 ovr-utils/styles/menu.theme diff --git a/ovr-utils/ListOverlayItem.tscn b/ovr-utils/ListOverlayItem.tscn index 6f316d9..7edaec1 100644 --- a/ovr-utils/ListOverlayItem.tscn +++ b/ovr-utils/ListOverlayItem.tscn @@ -1,13 +1,18 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=9 format=2] -[ext_resource path="res://menu.theme" type="Theme" id=1] +[ext_resource path="res://styles/menu.theme" type="Theme" id=1] [ext_resource path="res://icons/visible.svg" type="Texture" id=2] [ext_resource path="res://overlay_list_item.gd" type="Script" id=3] +[ext_resource path="res://icons/move.svg" type="Texture" id=4] +[ext_resource path="res://icons/remove.svg" type="Texture" id=5] +[ext_resource path="res://icons/reset.svg" type="Texture" id=6] +[ext_resource path="res://icons/size.svg" type="Texture" id=7] +[ext_resource path="res://icons/hand_r.svg" type="Texture" id=8] [node name="ListOverlayItem" type="PanelContainer"] margin_top = 1727.0 margin_right = 2048.0 -margin_bottom = 1855.0 +margin_bottom = 1920.0 rect_min_size = Vector2( 100, 128 ) theme = ExtResource( 1 ) script = ExtResource( 3 ) @@ -16,25 +21,63 @@ __meta__ = { } [node name="Label" type="Label" parent="."] -margin_left = 7.0 -margin_top = 10.0 -margin_right = 2041.0 -margin_bottom = 185.0 +margin_left = 8.0 +margin_top = 16.0 +margin_right = 2040.0 +margin_bottom = 191.0 text = "BatteryLevel" [node name="HBoxContainer" type="HBoxContainer" parent="."] -margin_left = 7.0 -margin_top = 7.0 -margin_right = 2041.0 -margin_bottom = 188.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = 2040.0 +margin_bottom = 199.0 alignment = 2 +[node name="Remove" type="Button" parent="HBoxContainer"] +margin_left = 1006.0 +margin_right = 1182.0 +margin_bottom = 191.0 +toggle_mode = true +icon = ExtResource( 5 ) + +[node name="Reset" type="Button" parent="HBoxContainer"] +margin_left = 1186.0 +margin_right = 1362.0 +margin_bottom = 191.0 +icon = ExtResource( 6 ) + +[node name="Target" type="OptionButton" parent="HBoxContainer"] +margin_left = 1366.0 +margin_right = 1492.0 +margin_bottom = 191.0 +text = "H" +items = [ "H", null, false, 0, null, "L", ExtResource( 8 ), false, 1, null, "R", ExtResource( 8 ), false, 2, null, "W", null, false, 3, null ] +selected = 0 + +[node name="Size" type="Button" parent="HBoxContainer"] +margin_left = 1496.0 +margin_right = 1672.0 +margin_bottom = 191.0 +toggle_mode = true +icon = ExtResource( 7 ) + +[node name="Grab" type="Button" parent="HBoxContainer"] +margin_left = 1676.0 +margin_right = 1852.0 +margin_bottom = 191.0 +toggle_mode = true +icon = ExtResource( 4 ) + [node name="Visibility" type="Button" parent="HBoxContainer"] -margin_left = 1862.0 -margin_right = 2034.0 -margin_bottom = 181.0 +margin_left = 1856.0 +margin_right = 2032.0 +margin_bottom = 191.0 toggle_mode = true pressed = true icon = ExtResource( 2 ) +[connection signal="pressed" from="HBoxContainer/Reset" to="." method="_on_Reset_pressed"] +[connection signal="item_selected" from="HBoxContainer/Target" to="." method="_on_Target_item_selected"] +[connection signal="toggled" from="HBoxContainer/Grab" to="." method="_on_Grab_toggled"] [connection signal="toggled" from="HBoxContainer/Visibility" to="." method="_on_Visibility_toggled"] diff --git a/ovr-utils/Main.tscn b/ovr-utils/Main.tscn index 65ac3d0..3acc914 100644 --- a/ovr-utils/Main.tscn +++ b/ovr-utils/Main.tscn @@ -9,6 +9,6 @@ [node name="OverlayManager" type="Node" parent="."] script = ExtResource( 6 ) -[node name="OverlayInstance" parent="OverlayManager" instance=ExtResource( 1 )] +[node name="MainOverlay" parent="OverlayManager" instance=ExtResource( 1 )] overlay_scene = ExtResource( 2 ) add_cursor = true diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd b/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd index 2ff5694..5c3069c 100644 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd +++ b/ovr-utils/addons/openvr_overlay/interaction/overlay_grab.gd @@ -23,7 +23,7 @@ func _ready() -> void: func _trigger_on(): - if Settings.s.grab_mode: + if Settings.s.grab_mode or _interaction.grab_mode: begin_move() diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd b/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd index 0b5396f..b578945 100644 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd +++ b/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd @@ -5,8 +5,9 @@ signal touch_off # a controller exited signal trigger_on # trigger pushed while touching signal trigger_off# trigger released -var touch_state = false -var trigger_state = false +var touch_state := false +var trigger_state := false +var grab_mode := false # controller that currently the trigger down var active_controller := "" @@ -56,7 +57,7 @@ func _on_OverlayArea_entered(body: Node) -> void: return touch_state = true active_controller = body.get_parent().name - get_parent().get_node("OverlayViewport/Selected").visible = Settings.s.grab_mode + get_parent().get_node("OverlayViewport/Selected").visible = Settings.s.grab_mode or grab_mode emit_signal("touch_on") diff --git a/ovr-utils/addons/openvr_overlay/overlay_instance.gd b/ovr-utils/addons/openvr_overlay/overlay_instance.gd index e63a704..775bff0 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_instance.gd +++ b/ovr-utils/addons/openvr_overlay/overlay_instance.gd @@ -185,6 +185,15 @@ func set_overlay_scene(scene: PackedScene): container.add_child(overlay_scene.instance()) +func reset_offset(): + _offsets[current_target].rot = Quat() + _offsets[current_target].pos = Vector3() + if current_target == "world": + _offsets[current_target].pos.z = -0.5 + update_offset() + save_settings() + + func _notification(what: int) -> void: if what == NOTIFICATION_TRANSFORM_CHANGED: update_offset() diff --git a/ovr-utils/addons/settings-manager/settings_definition.gd b/ovr-utils/addons/settings-manager/settings_definition.gd index dedbdf5..34c593f 100644 --- a/ovr-utils/addons/settings-manager/settings_definition.gd +++ b/ovr-utils/addons/settings-manager/settings_definition.gd @@ -59,7 +59,7 @@ const DEF = { } }, "default": { - "main": { + "MainOverlay": { "type": "MainOverlay", "width": 0.4, "target": "left", diff --git a/ovr-utils/icons/add.svg b/ovr-utils/icons/add.svg index 9f47019..afad08a 100644 --- a/ovr-utils/icons/add.svg +++ b/ovr-utils/icons/add.svg @@ -1 +1 @@ - + diff --git a/ovr-utils/icons/hand_r.svg b/ovr-utils/icons/hand_r.svg new file mode 100644 index 0000000..28ffe63 --- /dev/null +++ b/ovr-utils/icons/hand_r.svg @@ -0,0 +1 @@ + diff --git a/ovr-utils/icons/hand_r.svg.import b/ovr-utils/icons/hand_r.svg.import new file mode 100644 index 0000000..5d1d462 --- /dev/null +++ b/ovr-utils/icons/hand_r.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hand_r.svg-acd4ed4e6db8416fe852bbec606de215.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icons/hand_r.svg" +dest_files=[ "res://.import/hand_r.svg-acd4ed4e6db8416fe852bbec606de215.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=10.0 diff --git a/ovr-utils/icons/move.svg b/ovr-utils/icons/move.svg new file mode 100644 index 0000000..b83f622 --- /dev/null +++ b/ovr-utils/icons/move.svg @@ -0,0 +1 @@ + diff --git a/ovr-utils/icons/move.svg.import b/ovr-utils/icons/move.svg.import new file mode 100644 index 0000000..ad1895a --- /dev/null +++ b/ovr-utils/icons/move.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/move.svg-769d9a61af1be19356fb6cc2fedb4397.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icons/move.svg" +dest_files=[ "res://.import/move.svg-769d9a61af1be19356fb6cc2fedb4397.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=10.0 diff --git a/ovr-utils/icons/size.svg b/ovr-utils/icons/size.svg index c7b62e5..730143a 100644 --- a/ovr-utils/icons/size.svg +++ b/ovr-utils/icons/size.svg @@ -1 +1 @@ - + diff --git a/ovr-utils/icons/target.svg b/ovr-utils/icons/target.svg new file mode 100644 index 0000000..da7dfb0 --- /dev/null +++ b/ovr-utils/icons/target.svg @@ -0,0 +1 @@ + diff --git a/ovr-utils/icons/target.svg.import b/ovr-utils/icons/target.svg.import new file mode 100644 index 0000000..dd9a35f --- /dev/null +++ b/ovr-utils/icons/target.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/target.svg-39090ce3e818f4facf7f77d9c62c8a63.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icons/target.svg" +dest_files=[ "res://.import/target.svg-39090ce3e818f4facf7f77d9c62c8a63.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=10.0 diff --git a/ovr-utils/icons/touch.svg b/ovr-utils/icons/touch.svg new file mode 100644 index 0000000..aec0951 --- /dev/null +++ b/ovr-utils/icons/touch.svg @@ -0,0 +1 @@ + diff --git a/ovr-utils/icons/touch.svg.import b/ovr-utils/icons/touch.svg.import new file mode 100644 index 0000000..43b6d28 --- /dev/null +++ b/ovr-utils/icons/touch.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/touch.svg-f1357a34a6f400ba02ad51eed084a137.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icons/touch.svg" +dest_files=[ "res://.import/touch.svg-f1357a34a6f400ba02ad51eed084a137.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=10.0 diff --git a/ovr-utils/menu.theme b/ovr-utils/menu.theme index 82b25d3906b5187203caf28e1f188a35d49574cf..3dc901e6475e95a78207f7be17e4c3d05ea6026d 100644 GIT binary patch literal 755 zcmV`0G8zT zVPJp(RYO4mk1~)Z@}7H3*11XBa&NL49ML%nzti%6Iq*L-13&%g%*U*FcIAR?c4R3` z08;=_08qyxY}H}6G)|?mRrdeJ<@R$8!Dmz{I!W!E{$pIi2iHX{yVn!^pYbK(=6?cT zN%`{ST~onUPZxY@mz>~S`QPJzhOe|yi2oM?{!V+@rGW#FIXR|M$z{3VjQ2qq7!Hl7 znM+Y}nS>DUQYk7~2l{V7K}Q`YyX{l#I#MOoyv=ZRbaEAV$RlDY^qw|tWvUsr{|CO9 zON|!CCD;uEZ&^V+l_cbjIW5>Q&)m1tlc8&s8h1v|Y}TIq;B4ny86{lq2pB~;+Xv}% zOig&^!?1hW{AY00Z_>6*b=XaHPnB!dovpzX$TXT8j5Vt43mi~5C>TgaL_(en$OTO_ zvEoD1TCpM|_8_v)22RO#XM`tEpNu$L{RD7hwMV_bR zAMn0p8(XX>^A z5}*?`R8mSRLqw$oB_+*%2ghY6{P)0*Su6t=Jqn>8nLF-NTKW0onF5cmYzV2xS7xcl z%jTZM?G-wG4dp_(DjkZBHDfKXA;Ju!P$HoQYt&WIhZHu^dPUCOFXES4Yp0_dqH|ed za%qzmGLTbI`%q*g_7UvXDrhZ@yLEb`<)-zZ3Y%}k=Vhx7G8-&xxiFOQh0QLt@sUW} z$gw9m2o(7N%8GEIce5aad#nLK$b_0cbxmkN2uu9kk0{?9=G_S lKbSlT^gbL_x@t?NjZCc`I`xw%|GfRGqWwCpf;&=ELqpT(Tv7l4 literal 333 zcmV-T0kZy5Q$s@n000005C8x*0ssIt0RR9fwJ-f(H33}-05%XcFJM)Z#xM-SFbu;m z*au{V$eWS9_w(8(*}L44sP+Peqfm{!0z~HFNN;y%s=nD2BLF7=Cjjq1ST|Pu1=f}> zvN}~Uy-h6DV@VZ^UR3x`euTB@#^N6c_`5IDF!VNExTO+`DdA@5zcAEg>oGV&*`U>u z#^{F(AA2g2)GfAAtEJPh{0YC~v@FU;H481M2!?PlRAv~1USNRD*yP|rD)ibc!(}BPN51XI!?vGvhGo+A|OzL5gfw# z)d0rig|Nb%6Hqc8+vT_Bu22vFuDl`!wpL$#Nf|@(Ks~!D*F1o?0mh~nUq void: - overlay = get_node("/root/Main/OverlayManager").get_child(1) + overlay = get_node("/root/Main/OverlayManager").get_node(overlay_name) + $Label.text = overlay_name + $HBoxContainer/Target.selected = overlay.TARGETS.find(overlay.target) func _on_Visibility_toggled(state: bool) -> void: @@ -12,3 +15,15 @@ func _on_Visibility_toggled(state: bool) -> void: $HBoxContainer/Visibility.icon = preload("res://icons/visible.svg") else: $HBoxContainer/Visibility.icon = preload("res://icons/hidden.svg") + + +func _on_Target_item_selected(index: int) -> void: + overlay.target = overlay.TARGETS[index] + + +func _on_Reset_pressed() -> void: + overlay.reset_offset() + + +func _on_Grab_toggled(state: bool) -> void: + overlay.get_node("OverlayInteraction").grab_mode = state diff --git a/ovr-utils/overlay_scripts/main_menu.gd b/ovr-utils/overlay_scripts/main_menu.gd index 8aa950e..e9fe711 100644 --- a/ovr-utils/overlay_scripts/main_menu.gd +++ b/ovr-utils/overlay_scripts/main_menu.gd @@ -2,6 +2,10 @@ extends Control func _ready() -> void: + for o in Settings.s.overlays: + var new = preload("res://ListOverlayItem.tscn").instance() + new.overlay_name = o + $VSplitContainer/Control/Overlays.add_child(new) $VSplitContainer/Control/Overlays.visible = false @@ -12,3 +16,7 @@ func _on_GrabMode_toggled(state: bool) -> void: func _on_ShowOverlays_toggled(state: bool) -> void: $VSplitContainer/Control/Overlays.visible = state + + +func _on_AddOverlay_pressed() -> void: + pass # Replace with function body. diff --git a/ovr-utils/overlays/MainOverlay.tscn b/ovr-utils/overlays/MainOverlay.tscn index 9ef66e7..e6588fc 100644 --- a/ovr-utils/overlays/MainOverlay.tscn +++ b/ovr-utils/overlays/MainOverlay.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://overlay_scripts/main_menu.gd" type="Script" id=1] -[ext_resource path="res://menu.theme" type="Theme" id=2] -[ext_resource path="res://ListOverlayItem.tscn" type="PackedScene" id=3] +[ext_resource path="res://styles/menu.theme" type="Theme" id=2] +[ext_resource path="res://icons/add.svg" type="Texture" id=4] +[ext_resource path="res://icons/move.svg" type="Texture" id=5] +[ext_resource path="res://icons/list.svg" type="Texture" id=6] [node name="MainOverlay" type="Control"] anchor_right = 1.0 @@ -22,7 +24,7 @@ __meta__ = { [node name="Control" type="Control" parent="VSplitContainer"] margin_right = 2048.0 -margin_bottom = 1855.0 +margin_bottom = 1845.0 size_flags_vertical = 3 [node name="Overlays" type="VBoxContainer" parent="VSplitContainer/Control"] @@ -34,11 +36,8 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="ListOverlayItem" parent="VSplitContainer/Control/Overlays" instance=ExtResource( 3 )] -margin_top = 1660.0 - [node name="MainBar" type="HBoxContainer" parent="VSplitContainer"] -margin_top = 1867.0 +margin_top = 1857.0 margin_right = 2048.0 margin_bottom = 2048.0 __meta__ = { @@ -46,17 +45,24 @@ __meta__ = { } [node name="GrabMode" type="Button" parent="VSplitContainer/MainBar"] -margin_right = 716.0 -margin_bottom = 181.0 +margin_right = 176.0 +margin_bottom = 191.0 toggle_mode = true -text = "Grab mode" +icon = ExtResource( 5 ) [node name="ShowOverlays" type="Button" parent="VSplitContainer/MainBar"] -margin_left = 720.0 -margin_right = 1294.0 -margin_bottom = 181.0 +margin_left = 180.0 +margin_right = 356.0 +margin_bottom = 191.0 toggle_mode = true -text = "Overlays" +icon = ExtResource( 6 ) + +[node name="AddOverlay" type="Button" parent="VSplitContainer/MainBar"] +margin_left = 360.0 +margin_right = 536.0 +margin_bottom = 191.0 +icon = ExtResource( 4 ) [connection signal="toggled" from="VSplitContainer/MainBar/GrabMode" to="." method="_on_GrabMode_toggled"] [connection signal="toggled" from="VSplitContainer/MainBar/ShowOverlays" to="." method="_on_ShowOverlays_toggled"] +[connection signal="pressed" from="VSplitContainer/MainBar/AddOverlay" to="." method="_on_AddOverlay_pressed"] diff --git a/ovr-utils/styles/background.stylebox b/ovr-utils/styles/background.stylebox new file mode 100644 index 0000000000000000000000000000000000000000..0706be48f061718d4e4a12734f63bc4afedcf121 GIT binary patch literal 431 zcmV;g0Z{%@Q$s@n000005C8zv0{{S*0RR9fwJ-f((*kV_02Wd_FHnur0U$FoGcz;I z3;nan@|x@(-%py{TQ0c$F!9JC0cBxiIMDz0SC1SV1GG*7D*!D3FaVsM)leHQ`)|2= z5=O32SzO!eCEK@@F=(Umf6RY}cfJeJR_Gh`=08OG1D499)6InzYvZMywV|>VN^buV z&ij_Fiu(V!XS2kPxA=yrP)C5kK7ceO4MT_7VN$+x=J@;CKcGGWYSHVDggdh|o z(5JKymSicAjgA^|kTR|3j5vwnM5PY(8_kQ`2{x#a(^k;iAG>R#KBtXI0N$5V*&slf Z1(GU4^W3|?KQCr=3F?%4MGR6?Lqp^2z@Y#D literal 0 HcmV?d00001 diff --git a/ovr-utils/styles/buttons/normal.stylebox b/ovr-utils/styles/buttons/normal.stylebox new file mode 100644 index 0000000000000000000000000000000000000000..ab48a986df89f05746f2d2e91ac76bc64f9ff1ee GIT binary patch literal 427 zcmV;c0aX4{Q$s@n000005C8zz0{{S%0RR9fwJ-f(*8)up09H~vC=kyy2argrejzJ| z+&9E6Wbd*7i0!$r`x?8FPD!Ssam zxom9`hK5Z1xR$(FAuqf^eE}Dmjb@^d@c%(_U;z35D4@{zCq|=2kQ6A=yrP)C5kKS1>5+MJ2&8lHTP!d+xOe?WW(*u7ZK~2tg=FpigNZ zEXh(J8yz*`AZ1$58F3QDiAo*nH<}l>6Kqf;r>&s3KX%tfeNG#b0K6}!vO$0{3nW#9 V=DBx&e_qV$64WX8iWpK;LqjUG!BhYM literal 0 HcmV?d00001 diff --git a/ovr-utils/styles/buttons/pressed.stylebox b/ovr-utils/styles/buttons/pressed.stylebox new file mode 100644 index 0000000000000000000000000000000000000000..15bfdf16e0b2c76f17749933b9a726e548b46b87 GIT binary patch literal 440 zcmV;p0Z0B)Q$s@n000005C8z!0{{S^0RR9fwJ-f(*aEc-0M?Q}G*G1|9du@9W|oYZ znVFeS3%~Qr@)6mK?AAIB@)z3@9}I zODME)X#fE}`A;w)MHRpFUm&Xdvz5ftIh8MJ%I)q{)C@$ZaY>Q6nz$eZr5u0)5kt^0r*l#X+t=(+}jyn?Bc93$pk>U+;z1Ey#C z4QW+Sp&cO|3JK6t@Ii(w40O?-Di~yjR!SC5E^yJ;{eMSecPqgiH5l3Y^!uyssMVjf iH_5@nvd+!|x?Uivk{(}@d-C%_SC^pfP*<8#Q$s_6v&yOf literal 0 HcmV?d00001 diff --git a/ovr-utils/styles/menu.theme b/ovr-utils/styles/menu.theme new file mode 100644 index 0000000000000000000000000000000000000000..5c40ceb0577b370bbc1ccf9bd76c4feeeb9deffa GIT binary patch literal 593 zcmV-X0BD()Oa+Gk5i?c4T=Bpd0V(N|Y)`*iE2G3XJ5MMj)9`~5!H9m6E>W+(+d06_pl z057|-=)l>bW zX8fUMVO-koeJFR^N<`U0#|mF>^8dvHiWyC}!SR3q(z+QIlTb-O{))So%CL1mS}Jn* z??B@XrMF7qX>F9@a5j?Wjq9?;hb~#;a4R6bvdH8yXah zi;D|EVgUvXB1T-ID7uvV7Y`*&{0aU8nEWLc6_vJ3n$n41a2$_6fKK~FMizEZ*z99@ zCVaD)%>M$9x-C#!Oa%^MsBt+mL^GryCIy9bPy!-lbMq1aH62hQX;nbc1w|>z{WD|3 z5Z&j+P5tle74!jfXL#CZ#JchmP^fqtbNJH_Y=wr{n0MDl#T~ZB?LZ)gna=f$i){@@ zNnWvb~6j67Ag4c8wWC^NOl%E6aPk}>5p~| zv-k1fa5GVwu8XQ1*8;uX>!>q?G-G15IzD>zuYC>WG@rtu|wQjhw+ fk^5>z;Z|fe>gjXH63U-%RSk9L>hXpFQd2`i=Y|$h literal 0 HcmV?d00001