class_name Selectable extends Area2D signal clicked var selection_sprite: Sprite2D func _ready(): if selection_sprite: return var parent_sprite = get_parent() as Sprite2D selection_sprite = Sprite2D.new() selection_sprite.texture = parent_sprite.texture.duplicate(true) var scale_x = ((selection_sprite.texture.get_size().x + 10) / selection_sprite.texture.get_size().x) var scale_y = ((selection_sprite.texture.get_size().y + 10) / selection_sprite.texture.get_size().y) selection_sprite.scale = Vector2(scale_x,scale_y) selection_sprite.show_behind_parent = true selection_sprite.modulate = Color.BLACK selection_sprite.visible = false parent_sprite.call_deferred("add_child", selection_sprite) parent_sprite.call_deferred("move_child", selection_sprite, 0) func _on_mouse_entered(): selection_sprite.show() func _on_mouse_exited(): selection_sprite.hide() func _on_input_event(viewport, event, shape_idx): if event is InputEventMouseButton and event.is_pressed(): clicked.emit()