extends Control class_name Playable func _ready() -> void: hide() ## Awaitable that encapsulates the core interaction with this Playable func play() -> void: push_warning("Playeable[base].play() not overridden") await get_tree().process_frame # Dummy wait so this is a coroutine func handle_hover(_area: Draggable): #prints("Playable[base].handle_hover", _area, _area.name) pass func appear(): self.modulate = Color.TRANSPARENT show() var tween := create_tween().set_ease(Tween.EASE_IN) tween.tween_property(self, "modulate", Color.WHITE, 1.5) await tween.finished func vanish(): var tween := create_tween().set_ease(Tween.EASE_OUT) tween.tween_property(self, "modulate", Color.TRANSPARENT, 1.5) await tween.finished hide()