vrp-gruppe-sechs/disco-escape-roomv-5/spray_button.gd

46 lines
1.2 KiB
GDScript

extends StaticBody3D
signal button_pressed
@onready var mesh_instance: MeshInstance3D = $MeshInstance3D
@onready var collision_shape: CollisionShape3D = $CollisionShape3D
var original_color: Color = Color.DODGER_BLUE
var hover_color: Color = Color.CYAN
var press_color: Color = Color.WHITE
func _ready():
# Setze die Collision Layer für XR Tools
collision_layer = 1 << 20
collision_mask = 0
# Stelle sicher dass ein Material existiert
if mesh_instance and mesh_instance.get_surface_override_material_count() == 0:
var material = StandardMaterial3D.new()
material.albedo_color = original_color
mesh_instance.set_surface_override_material(0, material)
func pointer_event(event):
if not event is XRToolsPointerEvent:
return
match event.event_type:
XRToolsPointerEvent.Type.ENTERED:
set_button_color(hover_color)
XRToolsPointerEvent.Type.EXITED:
set_button_color(original_color)
XRToolsPointerEvent.Type.PRESSED:
set_button_color(press_color)
button_pressed.emit()
XRToolsPointerEvent.Type.RELEASED:
set_button_color(hover_color)
func set_button_color(color: Color):
if mesh_instance and mesh_instance.mesh:
var material = mesh_instance.get_surface_override_material(0)
if material:
material.albedo_color = color