extends RayCast3D ## Component for interacting with Interactive things. @onready var parent := owner as Player var _selected: Object func _process(_delta: float) -> void: var collider := self.get_collider() if not collider: if _selected and is_instance_valid(_selected): _selected.emit_signal(Interactive.DESELECT_SIGNAL) _selected = null return if collider.has_user_signal(Interactive.SELECT_SIGNAL): if collider != _selected: if not _selected and is_instance_valid(_selected): _selected.emit_signal(Interactive.DESELECT_SIGNAL) _selected = collider collider.emit_signal(Interactive.SELECT_SIGNAL) if ( parent.activity_enabled and Input.is_action_just_pressed("interact") and collider.has_user_signal(Interactive.ACTIVATE_SIGNAL) ): collider.emit_signal(Interactive.ACTIVATE_SIGNAL)