75 lines
1.7 KiB
GDScript
75 lines
1.7 KiB
GDScript
extends TabContainer
|
|
|
|
|
|
## Signal emitted when the control pad hand is switched
|
|
signal switch_hand(hand)
|
|
|
|
## Signal emitted when requested to go to the main scene
|
|
signal main_scene
|
|
|
|
## Signal emitted when requested to quit
|
|
signal quit
|
|
|
|
|
|
var _tween : Tween
|
|
|
|
var _player_body : XRToolsPlayerBody
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
# Apply initial scale
|
|
$Body/VBoxContainer/Scale/BodyScaleSlider.value = XRServer.world_scale
|
|
|
|
# Find the player body
|
|
_player_body = XRToolsPlayerBody.find_instance(self)
|
|
|
|
|
|
# Called to refresh the display
|
|
func _on_refresh_timer_timeout():
|
|
if _player_body and $Body.visible:
|
|
var pos := _player_body.global_position
|
|
var vel := _player_body.velocity
|
|
var pos_str := "%8.3f, %8.3f, %8.3f" % [pos.x, pos.y, pos.z]
|
|
var vel_str := "%8.3f, %8.3f, %8.3f" % [vel.x, vel.y, vel.z]
|
|
$Body/VBoxContainer/Position/Value.text = pos_str
|
|
$Body/VBoxContainer/Velocity/Value.text = vel_str
|
|
|
|
|
|
# Handle user changing the body scale slider
|
|
func _on_body_scale_slider_value_changed(value : float) -> void:
|
|
# Kill any current tween
|
|
if _tween:
|
|
_tween.kill()
|
|
|
|
# Tween the world scale over the next 1/2 second
|
|
_tween = get_tree().create_tween()
|
|
_tween.tween_method(
|
|
_set_world_scale,
|
|
XRServer.world_scale,
|
|
value,
|
|
0.5)
|
|
|
|
|
|
# Handle user selecting the left panel position
|
|
func _on_panel_left_pressed():
|
|
switch_hand.emit("LEFT")
|
|
|
|
|
|
# Handle user selecting the right panel position
|
|
func _on_panel_right_pressed():
|
|
switch_hand.emit("RIGHT")
|
|
|
|
|
|
# Handle user selecting main scene
|
|
func _on_main_scene_pressed():
|
|
main_scene.emit()
|
|
|
|
|
|
func _on_quit_pressed():
|
|
quit.emit()
|
|
|
|
|
|
# Called by the tweening to change the world scale
|
|
func _set_world_scale(new_scale : float) -> void:
|
|
XRServer.world_scale = new_scale
|