From 70892dcb7b2241dc3c522ee9054b26b1cbb463bf Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Tue, 25 May 2021 18:56:52 +0200 Subject: [PATCH] offsets and overlay properties are saved to settings.json --- .../interaction/overlay_interaction.gd | 1 + .../addons/openvr_overlay/overlay_instance.gd | 44 +++++++++++++++++-- ovr-utils/addons/settings-manager/settings.gd | 2 +- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd b/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd index fb44e18..e0a29d4 100644 --- a/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd +++ b/ovr-utils/addons/openvr_overlay/interaction/overlay_interaction.gd @@ -88,6 +88,7 @@ func finish_move(): # reset current_target (parent handles fallback) get_parent().update_current_target() + get_parent().save_settings() _update_target() is_moving = false diff --git a/ovr-utils/addons/openvr_overlay/overlay_instance.gd b/ovr-utils/addons/openvr_overlay/overlay_instance.gd index f811b19..cddb2bf 100644 --- a/ovr-utils/addons/openvr_overlay/overlay_instance.gd +++ b/ovr-utils/addons/openvr_overlay/overlay_instance.gd @@ -30,10 +30,6 @@ onready var container = $OverlayViewport/Container func _ready() -> void: current_target = target - # TEMP - offsets[current_target].pos = translation - offsets[current_target].rot = transform.basis.get_rotation_quat() - ### ARVRServer.connect("tracker_added", self, "_tracker_changed") ARVRServer.connect("tracker_removed", self, "_tracker_changed") @@ -48,6 +44,46 @@ func _ready() -> void: emit_signal("target_changed") set_notify_transform(true) + call_deferred("load_settings") + + +func load_settings(): + if Settings.s.overlays.has(name): + target = Settings.s.overlays[name].target + # TODO target fallback + update_current_target() + set_width_in_meters(Settings.s.overlays[name].width) + for t_key in Settings.s.overlays[name].offsets: + var t_offset = Settings.s.overlays[name].offsets[t_key] + offsets[t_key].pos = t_offset.pos + offsets[t_key].rot = t_offset.rot + update_offset() + else: + #TEMP defaults + offsets[current_target].pos = translation + offsets[current_target].rot = transform.basis.get_rotation_quat() + update_offset() + #### + + Settings.s.overlays[name] = {} + save_settings() + + +func save_settings(): + Settings.s.overlays[name].target = target + Settings.s.overlays[name].width = width_meters + + if not Settings.s.overlays[name].has("offsets"): + Settings.s.overlays[name]["offsets"] = {} + + for t_key in offsets: + if not Settings.s.overlays[name].offsets.has(t_key): + Settings.s.overlays[name].offsets[t_key] = {} + Settings.s.overlays[name].offsets[t_key].pos = offsets[t_key].pos + Settings.s.overlays[name].offsets[t_key].rot = offsets[t_key].rot + Settings.save_settings() + + func update_tracker_id() -> void: _tracker_id = -1 diff --git a/ovr-utils/addons/settings-manager/settings.gd b/ovr-utils/addons/settings-manager/settings.gd index 0ba03e8..cfee950 100644 --- a/ovr-utils/addons/settings-manager/settings.gd +++ b/ovr-utils/addons/settings-manager/settings.gd @@ -3,7 +3,7 @@ extends Node signal settings_saved signal settings_loaded # emitted when settings are loaded from file, needs to be connected in _init() -var DEBUG_SETTINGS = true +var DEBUG_SETTINGS = false var SETTINGS_PATH = "user://settings.json" const SETTINGS_DEF = preload("res://addons/settings-manager/settings_definition.gd").DEF