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