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 82b25d3..3dc901e 100644 Binary files a/ovr-utils/menu.theme and b/ovr-utils/menu.theme differ diff --git a/ovr-utils/overlay_list_item.gd b/ovr-utils/overlay_list_item.gd index ee6c003..d61ce43 100644 --- a/ovr-utils/overlay_list_item.gd +++ b/ovr-utils/overlay_list_item.gd @@ -1,9 +1,12 @@ extends PanelContainer +export var overlay_name: String var overlay func _ready() -> 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 0000000..0706be4 Binary files /dev/null and b/ovr-utils/styles/background.stylebox differ diff --git a/ovr-utils/styles/buttons/normal.stylebox b/ovr-utils/styles/buttons/normal.stylebox new file mode 100644 index 0000000..ab48a98 Binary files /dev/null and b/ovr-utils/styles/buttons/normal.stylebox differ diff --git a/ovr-utils/styles/buttons/pressed.stylebox b/ovr-utils/styles/buttons/pressed.stylebox new file mode 100644 index 0000000..15bfdf1 Binary files /dev/null and b/ovr-utils/styles/buttons/pressed.stylebox differ diff --git a/ovr-utils/styles/menu.theme b/ovr-utils/styles/menu.theme new file mode 100644 index 0000000..5c40ceb Binary files /dev/null and b/ovr-utils/styles/menu.theme differ