From 634ea013b7d96b9633ee22f91c7672a7b509118f Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Sun, 30 May 2021 13:20:34 +0200 Subject: [PATCH] main menu basic mockup --- ovr-utils/ListOverlayItem.tscn | 40 +++++++++++++ .../addons/openvr_overlay/overlay_init.gd | 1 + .../addons/openvr_overlay/overlay_instance.gd | 16 ++++-- ovr-utils/menu.theme | Bin 0 -> 333 bytes ovr-utils/overlay_list_item.gd | 14 +++++ ovr-utils/overlay_scripts/main_menu.gd | 6 +- ovr-utils/overlay_scripts/ui_demo.gd | 2 + ovr-utils/overlays/MainOverlay.tscn | 54 +++++++++++++----- ovr-utils/project.godot | 5 ++ 9 files changed, 120 insertions(+), 18 deletions(-) create mode 100644 ovr-utils/ListOverlayItem.tscn create mode 100644 ovr-utils/menu.theme create mode 100644 ovr-utils/overlay_list_item.gd diff --git a/ovr-utils/ListOverlayItem.tscn b/ovr-utils/ListOverlayItem.tscn new file mode 100644 index 0000000..6f316d9 --- /dev/null +++ b/ovr-utils/ListOverlayItem.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://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] + +[node name="ListOverlayItem" type="PanelContainer"] +margin_top = 1727.0 +margin_right = 2048.0 +margin_bottom = 1855.0 +rect_min_size = Vector2( 100, 128 ) +theme = ExtResource( 1 ) +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_left = 7.0 +margin_top = 10.0 +margin_right = 2041.0 +margin_bottom = 185.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 +alignment = 2 + +[node name="Visibility" type="Button" parent="HBoxContainer"] +margin_left = 1862.0 +margin_right = 2034.0 +margin_bottom = 181.0 +toggle_mode = true +pressed = true +icon = ExtResource( 2 ) + +[connection signal="toggled" from="HBoxContainer/Visibility" to="." method="_on_Visibility_toggled"] diff --git a/ovr-utils/addons/openvr_overlay/overlay_init.gd b/ovr-utils/addons/openvr_overlay/overlay_init.gd index 77572a6..284d7f7 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_init.gd +++ b/ovr-utils/addons/openvr_overlay/overlay_init.gd @@ -11,6 +11,7 @@ var trackers = { } func _init() -> void: + OS.window_minimized = true ovr_config = preload("res://addons/godot-openvr/OpenVRConfig.gdns").new() ovr_config.set_application_type(2) # Set to OVERLAY MODE = 2, NORMAL MODE = 1 ovr_config.set_tracking_universe(1) # Set to SEATED MODE = 0, STANDING MODE = 1, RAW MODE = 2 diff --git a/ovr-utils/addons/openvr_overlay/overlay_instance.gd b/ovr-utils/addons/openvr_overlay/overlay_instance.gd index 1ddbd60..e63a704 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_instance.gd +++ b/ovr-utils/addons/openvr_overlay/overlay_instance.gd @@ -25,12 +25,12 @@ var _offsets:Dictionary = { # what's actually tracking var current_target: String = "world" setget _set_current_target# most of the time the actual target, but will fall back var fallback = ["left", "right", "head"] # TODO setget that updates tracking (not important) +var interaction_handler: Node var _tracker_id: int = 0 onready var container = $OverlayViewport/Container - func _ready() -> void: current_target = target @@ -42,12 +42,12 @@ func _ready() -> void: load_settings() if add_cursor or add_grabbing: - var interaction_handler = load("res://addons/openvr_overlay/OverlayInteraction.tscn").instance() + interaction_handler = load("res://addons/openvr_overlay/OverlayInteraction.tscn").instance() add_child(interaction_handler) if add_cursor: - interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayCursor.tscn").instance()) + add_cursor() if add_grabbing: - interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayGrab.tscn").instance()) + add_grab() if overlay_scene: container.add_child(overlay_scene.instance()) @@ -55,6 +55,14 @@ func _ready() -> void: update_tracker_id() +func add_cursor(): + interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayCursor.tscn").instance()) + +func add_grab(): + interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayGrab.tscn").instance()) + + + func load_settings(): if Settings.s.overlays.has(name): if Settings.s.overlays[name].has("fallback"): diff --git a/ovr-utils/menu.theme b/ovr-utils/menu.theme new file mode 100644 index 0000000000000000000000000000000000000000..82b25d3906b5187203caf28e1f188a35d49574cf GIT binary patch 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) + + +func _on_Visibility_toggled(state: bool) -> void: + overlay.get_node("OverlayViewport").overlay_visible = state + if state: + $HBoxContainer/Visibility.icon = preload("res://icons/visible.svg") + else: + $HBoxContainer/Visibility.icon = preload("res://icons/hidden.svg") diff --git a/ovr-utils/overlay_scripts/main_menu.gd b/ovr-utils/overlay_scripts/main_menu.gd index de68db6..8aa950e 100644 --- a/ovr-utils/overlay_scripts/main_menu.gd +++ b/ovr-utils/overlay_scripts/main_menu.gd @@ -2,9 +2,13 @@ extends Control func _ready() -> void: - pass + $VSplitContainer/Control/Overlays.visible = false func _on_GrabMode_toggled(state: bool) -> void: Settings.s.grab_mode = state Settings.emit_signal("settings_changed") + + +func _on_ShowOverlays_toggled(state: bool) -> void: + $VSplitContainer/Control/Overlays.visible = state diff --git a/ovr-utils/overlay_scripts/ui_demo.gd b/ovr-utils/overlay_scripts/ui_demo.gd index aa2823d..6fdd811 100644 --- a/ovr-utils/overlay_scripts/ui_demo.gd +++ b/ovr-utils/overlay_scripts/ui_demo.gd @@ -7,6 +7,8 @@ var oinst func _ready() -> void: oinst = get_viewport().get_parent() ihandler = get_viewport().get_node("../OverlayInteraction/OverlayGrab") + if not oinst.add_cursor: + oinst.add_cursor() for t in oinst.TARGETS: $OptionButton.add_item(t) $OptionButton.selected = oinst.TARGETS.find(oinst.target) diff --git a/ovr-utils/overlays/MainOverlay.tscn b/ovr-utils/overlays/MainOverlay.tscn index e1b971d..9ef66e7 100644 --- a/ovr-utils/overlays/MainOverlay.tscn +++ b/ovr-utils/overlays/MainOverlay.tscn @@ -1,34 +1,62 @@ [gd_scene load_steps=4 format=2] [ext_resource path="res://overlay_scripts/main_menu.gd" type="Script" id=1] -[ext_resource path="res://fonts/OpenSans-Bold.ttf" type="DynamicFontData" id=2] - -[sub_resource type="DynamicFont" id=1] -size = 64 -font_data = ExtResource( 2 ) +[ext_resource path="res://menu.theme" type="Theme" id=2] +[ext_resource path="res://ListOverlayItem.tscn" type="PackedScene" id=3] [node name="MainOverlay" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 2 ) script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } -[node name="HBoxContainer" type="HBoxContainer" parent="."] -anchor_top = 1.0 +[node name="VSplitContainer" type="VSplitContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 -margin_top = -99.0 __meta__ = { "_edit_use_anchors_": false } -[node name="GrabMode" type="Button" parent="HBoxContainer"] -margin_right = 366.0 -margin_bottom = 99.0 -custom_fonts/font = SubResource( 1 ) +[node name="Control" type="Control" parent="VSplitContainer"] +margin_right = 2048.0 +margin_bottom = 1855.0 +size_flags_vertical = 3 + +[node name="Overlays" type="VBoxContainer" parent="VSplitContainer/Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 3 +alignment = 2 +__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_right = 2048.0 +margin_bottom = 2048.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GrabMode" type="Button" parent="VSplitContainer/MainBar"] +margin_right = 716.0 +margin_bottom = 181.0 toggle_mode = true text = "Grab mode" -[connection signal="toggled" from="HBoxContainer/GrabMode" to="." method="_on_GrabMode_toggled"] +[node name="ShowOverlays" type="Button" parent="VSplitContainer/MainBar"] +margin_left = 720.0 +margin_right = 1294.0 +margin_bottom = 181.0 +toggle_mode = true +text = "Overlays" + +[connection signal="toggled" from="VSplitContainer/MainBar/GrabMode" to="." method="_on_GrabMode_toggled"] +[connection signal="toggled" from="VSplitContainer/MainBar/ShowOverlays" to="." method="_on_ShowOverlays_toggled"] diff --git a/ovr-utils/project.godot b/ovr-utils/project.godot index 77c6449..4846021 100644 --- a/ovr-utils/project.godot +++ b/ovr-utils/project.godot @@ -21,6 +21,11 @@ config/icon="res://textures/icon.png" Settings="*res://addons/settings-manager/Settings.tscn" OverlayInit="*res://addons/openvr_overlay/overlay_init.gd" +[display] + +window/size/width=2048 +window/size/height=2048 + [editor_plugins] enabled=PoolStringArray( "res://addons/godot-openvr/plugin.cfg", "res://addons/openvr_overlay/plugin.cfg", "res://addons/settings-manager/plugin.cfg" )