extends RayCast3D ## Component for interacting with Interactive things. var _selected: Object @onready var parent := owner as Player func _deselect() -> void: if _selected and is_instance_valid(_selected): _selected.emit_signal(Interactive.DESELECT_SIGNAL) _selected = null func _process(_delta: float) -> void: var collider := self.get_collider() if not collider: _deselect() 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) else: _deselect() 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)