106 lines
2.5 KiB
GDScript
106 lines
2.5 KiB
GDScript
extends Node3D
|
|
|
|
@onready var _controller := XRHelpers.get_xr_controller(self)
|
|
|
|
@onready var nav_view = $AnimationContainer/Navigation/View
|
|
@onready var nav_edit: Button3D = $AnimationContainer/Navigation/Edit
|
|
@onready var menu_edit: Node3D = $AnimationContainer/Content/EditMenu
|
|
@onready var nav_room = $AnimationContainer/Navigation/Room
|
|
@onready var menu_room: Node3D = $AnimationContainer/Content/RoomMenu
|
|
@onready var nav_automate = $AnimationContainer/Navigation/Automate
|
|
@onready var nav_settings = $AnimationContainer/Navigation/Settings
|
|
@onready var menu_settings: Node3D = $AnimationContainer/Content/SettingsMenu
|
|
|
|
@onready var menu_root = $AnimationContainer
|
|
@onready var content = $AnimationContainer/Content
|
|
@onready var nav = $AnimationContainer/Navigation
|
|
@onready var animation_player = $AnimationPlayer
|
|
|
|
enum Menu {
|
|
VIEW,
|
|
EDIT,
|
|
ROOM,
|
|
AUTOMATE,
|
|
SETTINGS
|
|
}
|
|
|
|
var selected_menu := Menu.EDIT
|
|
var show_menu := true:
|
|
get:
|
|
return show_menu
|
|
set(value):
|
|
show_menu = value
|
|
if value:
|
|
animation_player.play_backwards("hide_menu")
|
|
AudioPlayer.play_effect("open_menu")
|
|
else:
|
|
animation_player.play("hide_menu")
|
|
AudioPlayer.play_effect("close_menu")
|
|
|
|
func _ready():
|
|
_controller.button_pressed.connect(func(button):
|
|
print(button)
|
|
if button == "by_button":
|
|
show_menu = !show_menu
|
|
)
|
|
|
|
select_menu(selected_menu)
|
|
|
|
func _on_click(event):
|
|
if event.target == nav_view:
|
|
select_menu(Menu.VIEW)
|
|
elif event.target == nav_edit:
|
|
select_menu(Menu.EDIT)
|
|
elif event.target == nav_room:
|
|
select_menu(Menu.ROOM)
|
|
elif event.target == nav_automate:
|
|
select_menu(Menu.AUTOMATE)
|
|
elif event.target == nav_settings:
|
|
select_menu(Menu.SETTINGS)
|
|
|
|
func select_menu(menu: Menu):
|
|
selected_menu = menu
|
|
for child in content.get_children():
|
|
content.remove_child(child)
|
|
|
|
var menu_node = enum_to_menu(menu)
|
|
var nav_node = enum_to_nav(menu)
|
|
|
|
if nav_node != null:
|
|
nav_node.disabled = true
|
|
|
|
if menu_node != null:
|
|
menu_node.visible = true
|
|
content.add_child(menu_node)
|
|
|
|
for child in nav.get_children():
|
|
if child.active && child != nav_node:
|
|
child.active = false
|
|
child.disabled = false
|
|
|
|
func enum_to_nav(menu: Menu):
|
|
match menu:
|
|
Menu.VIEW:
|
|
return nav_view
|
|
Menu.EDIT:
|
|
return nav_edit
|
|
Menu.ROOM:
|
|
return nav_room
|
|
Menu.AUTOMATE:
|
|
return nav_automate
|
|
Menu.SETTINGS:
|
|
return nav_settings
|
|
|
|
func enum_to_menu(menu: Menu):
|
|
match menu:
|
|
Menu.VIEW:
|
|
return null
|
|
Menu.EDIT:
|
|
return menu_edit
|
|
Menu.ROOM:
|
|
return menu_room
|
|
Menu.AUTOMATE:
|
|
return null
|
|
Menu.SETTINGS:
|
|
return menu_settings
|