xrjamfeb2025/scenes/main_menu/main_menu_level.gd

42 lines
984 B
GDScript

@tool
extends DemoSceneBase
func _update_demo_positions() -> void:
# Update and count the visible teleporters
var count = 0
var visible_children := []
for teleporter in $Demos.get_children():
teleporter.set_collision_disabled(!teleporter.visible)
if teleporter.visible:
count += 1
visible_children.append(teleporter)
# Arrange the visible teleporters
if count > 1:
var angle = 2.0 * PI / count
for i in count:
var t = Transform3D()
t.origin = Vector3(0.0, 0.0, -10.0)
t = t.rotated(Vector3.UP, angle * i)
visible_children[i].transform = t
func _ready():
super()
_update_demo_positions()
for teleporter in $Demos.get_children():
teleporter.connect("visibility_changed",_update_demo_positions)
func _on_Demos_child_entered_tree(_node):
_update_demo_positions()
func _on_Demos_child_exiting_tree(_node):
_update_demo_positions()
func _on_settings_ui_player_height_changed(_new_height):
$XROrigin3D/PlayerBody.calibrate_player_height()