rodolpheh
8b932e3a3c
The more I made changes, the more it crashed. Got it to a point where it doesn't crash when starting the editor, but it will crash when exciting.
126 lines
3.4 KiB
GDScript
126 lines
3.4 KiB
GDScript
extends CanvasLayer
|
|
|
|
@export var tracking : UltraleapHandTracking
|
|
|
|
signal tracking_mode_request(tracking_mode : UltraleapTypes.TrackingMode)
|
|
signal device_selection(serial : String)
|
|
signal undistort_toggled(enabled : bool)
|
|
signal view_type_selected(index : int)
|
|
|
|
var latest_update : float = 0
|
|
|
|
var panel_hidden : bool = true
|
|
|
|
# This variable is assumed now but we need to check if it can be received
|
|
# by the service if another client pause/resume the tracking
|
|
var tracking_paused : bool = false
|
|
|
|
func _ready():
|
|
$AnimationPlayer.play("show_subtitle")
|
|
$AnimationPlayer.seek(0, true)
|
|
$AnimationPlayer.stop(false)
|
|
|
|
|
|
func _physics_process(_delta):
|
|
if Time.get_unix_time_from_system() - latest_update > 0.5:
|
|
var frame : UltraleapFrame = tracking.get_last_frame()
|
|
if frame != null:
|
|
$Footer/TrackingFramerate.text = "Tracking Frame Rate: " + str(ceil(frame.framerate))
|
|
latest_update = Time.get_unix_time_from_system()
|
|
|
|
|
|
func play_floating_bottom_text(text : String):
|
|
$LabelAnchor/Label.text = text
|
|
$AnimationPlayer.play("show_subtitle")
|
|
|
|
|
|
func tracking_mode_changed(tracking_mode):
|
|
$TrackingChoice.selected = tracking_mode
|
|
play_floating_bottom_text("Tracking mode changed to " + tracking_mode_to_str(tracking_mode))
|
|
|
|
|
|
func button_item_selected(index):
|
|
var error = emit_signal("tracking_mode_request", index)
|
|
if error != OK:
|
|
printerr("Failure emitting the signal for tracking mode request")
|
|
|
|
tracking.set_tracking_mode(index)
|
|
|
|
|
|
func on_device_added(device):
|
|
var was_empty : bool = $Devices.item_count == 0
|
|
$Devices.add_item(device.serial)
|
|
if was_empty:
|
|
$Devices.selected = 0
|
|
device_selected(0)
|
|
|
|
|
|
func on_device_removed(device):
|
|
for i in range($Devices.item_count):
|
|
if $Devices.get_item_text(i) == device.serial:
|
|
$Devices.remove_item(i)
|
|
break
|
|
|
|
|
|
func device_selected(index):
|
|
var serial : String = $Devices.get_item_text(index)
|
|
|
|
var error = emit_signal("device_selection", serial)
|
|
if error != OK:
|
|
printerr("Failure emitting the signal for device selection")
|
|
|
|
|
|
func tracking_mode_to_str(tracking_mode : UltraleapTypes.TrackingMode):
|
|
return ["Desktop", "HMD", "Screentop"][tracking_mode]
|
|
|
|
func _on_undistort_button_toggled(button_pressed):
|
|
emit_signal("undistort_toggled", button_pressed)
|
|
|
|
|
|
func on_view_type_selected(index):
|
|
emit_signal("view_type_selected", index)
|
|
|
|
func on_images_policy_changed(state : bool):
|
|
$Toggles/ImagesEnabledToggle.set_pressed_no_signal(state)
|
|
|
|
func on_images_enabled_toggle_pressed(state : bool):
|
|
tracking.set_images_policy(state)
|
|
|
|
func on_panel_button_pressed():
|
|
if (panel_hidden):
|
|
$LeftPanelAnimationPlayer.play("Show_Panel")
|
|
panel_hidden = false
|
|
else:
|
|
$LeftPanelAnimationPlayer.play("Hide_Panel")
|
|
panel_hidden = true
|
|
|
|
func on_pause_resume_button_pressed():
|
|
if tracking_paused:
|
|
$PauseResumeTracking.text = "⏸"
|
|
tracking_paused = false
|
|
else:
|
|
$PauseResumeTracking.text = "⏵"
|
|
tracking_paused = true
|
|
tracking.set_pause(tracking_paused)
|
|
|
|
|
|
func _on_presence_of_device_changed(is_present):
|
|
if is_present:
|
|
$TrackingChoice.disabled = false
|
|
$Devices.disabled = false
|
|
else:
|
|
$TrackingChoice.disabled = true
|
|
$Devices.clear()
|
|
$Devices.disabled = true
|
|
|
|
func _on_allow_pause_resume_toggle_toggled(button_pressed):
|
|
tracking.set_allow_pause_resume_policy(button_pressed)
|
|
|
|
func _on_allow_pause_resume_policy_changed(state):
|
|
$PanelAnchor/Panel/VBoxContainer/AllowPauseResumeToggle.set_pressed_no_signal(state)
|
|
$PauseResumeTracking.disabled = !state
|
|
|
|
|
|
func _on_device_changed(device):
|
|
$TrackingChoice.selected = tracking.get_tracking_mode()
|