extends Machine @export var separation: float = 16.0; func _ready() -> void: remove_accepted_item_nodes = false func set_start(node: Machine): global_position = node.global_position add_source(node) #$Line.points = [Vector2(0,0)] $Line.belt_stopped = true #node.connect("item_available", accept_item) func add_point(point: Vector2): $Line.points.append(to_local(point)) func set_end(node: Machine): $Line.points[1] = to_local(node.global_position) #$Line.points.append(to_local(node.global_position)) $Line.calculate_length() add_sink(node) $Line.belt_stopped = false #connect("item_available", node.accept_item) func can_accept_item(item: Item) -> bool: return super(item) \ and !$Line.belt_stopped \ and $Line.get_first_object_progress() >= separation func offer_item(node: ItemNode) -> bool: if $Line.belt_stopped: return false var ok: bool = super(node) if ok: $Line.add_transported_object(node) return ok func _on_line_node_at_end(node: Node) -> void: if node is ItemNode: if can_send_item(node.item_type): fetch_item_from_storage(node.item_type, 1) var sent: bool = send_item(node) if sent: $Line.remove_transported_object(node)