class_name InteractableArea extends Area3D signal interactEvent(playerEntity:Player) signal interactable(playerEntity:Player) signal notInteractable(playerEntity:Player) func _enter_tree() -> void: area_entered.connect(onAreaEntered) area_exited.connect(onAreaExited) func _exit_tree() -> void: area_entered.disconnect(onAreaEntered) area_exited.disconnect(onAreaExited) func onAreaEntered(area:Area3D) -> void: if !area.get_parent() or !(area.get_parent() is Player): return var player:Player = area.get_parent() as Player interactable.emit(player) func onAreaExited(area:Area3D) -> void: if !area.get_parent() or !(area.get_parent() is Player): return var player:Player = area.get_parent() as Player notInteractable.emit(player)