mirror of
https://github.com/CrispyPin/ovr-utils.git
synced 2024-11-22 07:30:25 +01:00
plugin: grab and cursor modules are loaded at runtime instead of being manual
This commit is contained in:
parent
7634b952be
commit
97a3fb5e80
4 changed files with 24 additions and 18 deletions
|
@ -1,14 +1,11 @@
|
||||||
[gd_scene load_steps=10 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://addons/openvr_overlay/OverlayInstance.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://addons/openvr_overlay/OverlayInstance.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://overlays/FPSOverlay.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://overlays/FPSOverlay.tscn" type="PackedScene" id=2]
|
||||||
[ext_resource path="res://overlays/TimeOverlay.tscn" type="PackedScene" id=3]
|
[ext_resource path="res://overlays/TimeOverlay.tscn" type="PackedScene" id=3]
|
||||||
[ext_resource path="res://overlays/xyz_widget/XYZ Widget.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://overlays/xyz_widget/XYZ Widget.tscn" type="PackedScene" id=4]
|
||||||
[ext_resource path="res://overlays/UI_demo.tscn" type="PackedScene" id=5]
|
[ext_resource path="res://overlays/UI_demo.tscn" type="PackedScene" id=5]
|
||||||
[ext_resource path="res://addons/openvr_overlay/OverlayGrab.tscn" type="PackedScene" id=6]
|
|
||||||
[ext_resource path="res://overlays/BatteryOverlay.tscn" type="PackedScene" id=7]
|
[ext_resource path="res://overlays/BatteryOverlay.tscn" type="PackedScene" id=7]
|
||||||
[ext_resource path="res://addons/openvr_overlay/OverlayInteraction.tscn" type="PackedScene" id=8]
|
|
||||||
[ext_resource path="res://addons/openvr_overlay/OverlayCursor.tscn" type="PackedScene" id=9]
|
|
||||||
|
|
||||||
[node name="Overlays" type="Node"]
|
[node name="Overlays" type="Node"]
|
||||||
|
|
||||||
|
@ -24,12 +21,7 @@ width_meters = 0.1
|
||||||
[node name="OverlayInstance UI demo" parent="." instance=ExtResource( 1 )]
|
[node name="OverlayInstance UI demo" parent="." instance=ExtResource( 1 )]
|
||||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.25 )
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.25 )
|
||||||
overlay_scene = ExtResource( 5 )
|
overlay_scene = ExtResource( 5 )
|
||||||
|
add_cursor = true
|
||||||
[node name="OverlayInteraction" parent="OverlayInstance UI demo" instance=ExtResource( 8 )]
|
|
||||||
|
|
||||||
[node name="OverlayCursor" parent="OverlayInstance UI demo/OverlayInteraction" instance=ExtResource( 9 )]
|
|
||||||
|
|
||||||
[node name="OverlayGrab" parent="OverlayInstance UI demo/OverlayInteraction" instance=ExtResource( 6 )]
|
|
||||||
|
|
||||||
[node name="XYZ Widget" parent="." instance=ExtResource( 4 )]
|
[node name="XYZ Widget" parent="." instance=ExtResource( 4 )]
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ export (String, "head", "left", "right", "world") var target = "left" setget se
|
||||||
export var overlay_scene =\
|
export var overlay_scene =\
|
||||||
preload("res://addons/openvr_overlay/MissingOverlay.tscn") setget set_overlay_scene
|
preload("res://addons/openvr_overlay/MissingOverlay.tscn") setget set_overlay_scene
|
||||||
export var width_meters = 0.4 setget set_width_in_meters
|
export var width_meters = 0.4 setget set_width_in_meters
|
||||||
|
export var add_grabbing := true # add grabbing module
|
||||||
|
export var add_cursor := false # add cursor module
|
||||||
|
|
||||||
# if this is exported, all overlays sync offset when a controller is turned off/on
|
# if this is exported, all overlays sync offset when a controller is turned off/on
|
||||||
# this seems to be a bug with the godot editor-
|
# this seems to be a bug with the godot editor-
|
||||||
|
@ -35,16 +37,25 @@ func _ready() -> void:
|
||||||
ARVRServer.connect("tracker_added", self, "_tracker_changed")
|
ARVRServer.connect("tracker_added", self, "_tracker_changed")
|
||||||
ARVRServer.connect("tracker_removed", self, "_tracker_changed")
|
ARVRServer.connect("tracker_removed", self, "_tracker_changed")
|
||||||
|
|
||||||
$OverlayViewport.overlay_width_in_meters = width_meters
|
# $OverlayViewport.overlay_width_in_meters = width_meters
|
||||||
$OverlayViewport.size = OverlayInit.ovr_interface.get_render_targetsize()
|
$OverlayViewport.size = OverlayInit.ovr_interface.get_render_targetsize()
|
||||||
|
# emit_signal("target_changed")
|
||||||
|
set_notify_transform(true)
|
||||||
|
|
||||||
|
# call_deferred("load_settings") # TODO call directly (when overlays are loaded at runtime, after settings have loaded
|
||||||
|
load_settings()
|
||||||
|
if add_cursor or add_grabbing:
|
||||||
|
var 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())
|
||||||
|
if add_grabbing:
|
||||||
|
interaction_handler.add_child(load("res://addons/openvr_overlay/OverlayGrab.tscn").instance())
|
||||||
|
|
||||||
if overlay_scene:
|
if overlay_scene:
|
||||||
container.add_child(overlay_scene.instance())
|
container.add_child(overlay_scene.instance())
|
||||||
|
|
||||||
update_tracker_id()
|
update_tracker_id()
|
||||||
emit_signal("target_changed")
|
|
||||||
set_notify_transform(true)
|
|
||||||
|
|
||||||
call_deferred("load_settings")
|
|
||||||
|
|
||||||
|
|
||||||
func load_settings():
|
func load_settings():
|
||||||
|
@ -133,7 +144,7 @@ func set_target(new: String):
|
||||||
target = new
|
target = new
|
||||||
call_deferred("update_offset")
|
call_deferred("update_offset")
|
||||||
update_current_target()
|
update_current_target()
|
||||||
save_settings()
|
# save_settings()
|
||||||
|
|
||||||
|
|
||||||
func _set_current_target(new: String): # overrides target
|
func _set_current_target(new: String): # overrides target
|
||||||
|
|
|
@ -49,6 +49,9 @@ func save_settings():
|
||||||
file.close()
|
file.close()
|
||||||
emit_signal("settings_saved")
|
emit_signal("settings_saved")
|
||||||
|
|
||||||
|
if DEBUG_SETTINGS:
|
||||||
|
print("Settings saved to file")
|
||||||
|
|
||||||
|
|
||||||
func _save_sub_setting(val, def):
|
func _save_sub_setting(val, def):
|
||||||
if has_flag(def, "no_save"):
|
if has_flag(def, "no_save"):
|
||||||
|
@ -92,7 +95,7 @@ func load_settings() -> void:
|
||||||
emit_signal("settings_loaded")
|
emit_signal("settings_loaded")
|
||||||
if DEBUG_SETTINGS:
|
if DEBUG_SETTINGS:
|
||||||
print("Loaded settings from file")
|
print("Loaded settings from file")
|
||||||
print(s)
|
# print(s)
|
||||||
|
|
||||||
|
|
||||||
func _load_sub_setting(val, def):
|
func _load_sub_setting(val, def):
|
||||||
|
|
|
@ -18,8 +18,8 @@ config/icon="res://icon.png"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
OverlayInit="*res://addons/openvr_overlay/overlay_init.gd"
|
|
||||||
Settings="*res://addons/settings-manager/Settings.tscn"
|
Settings="*res://addons/settings-manager/Settings.tscn"
|
||||||
|
OverlayInit="*res://addons/openvr_overlay/overlay_init.gd"
|
||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue