Files
tgcc/core/game_menu/hoover_tween.gd
2026-05-12 23:48:04 +02:00

39 lines
1.2 KiB
GDScript

extends Node
@export_group("Settings")
@export var always_active: bool = false
@export var detector_node: Control
@export var visual_node: Control
@export var scale_amount: Vector2 = Vector2(1.1, 1.1)
@export var duration: float = 0.5
var hover_tween: Tween
func _ready():
if not detector_node or not visual_node:
return
if always_active:
hover_tween = create_tween().set_loops()
hover_tween.tween_property(visual_node, "scale", scale_amount, duration).set_trans(Tween.TRANS_SINE)
hover_tween.tween_property(visual_node, "scale", Vector2.ONE, duration).set_trans(Tween.TRANS_SINE)
return
detector_node.mouse_entered.connect(_on_mouse_entered)
detector_node.mouse_exited.connect(_on_mouse_exited)
func _on_mouse_entered():
if hover_tween: hover_tween.kill()
hover_tween = create_tween().set_loops()
hover_tween.tween_property(visual_node, "scale", scale_amount, duration).set_trans(Tween.TRANS_SINE)
hover_tween.tween_property(visual_node, "scale", Vector2.ONE, duration).set_trans(Tween.TRANS_SINE)
func _on_mouse_exited():
if hover_tween: hover_tween.kill()
var exit_tween = create_tween()
exit_tween.tween_property(visual_node, "scale", Vector2.ONE, 0.2).set_trans(Tween.TRANS_QUAD)