39 lines
1.2 KiB
GDScript
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)
|