class_name DTreeNode extends GraphNode var left_slots: Array[String] = [] var right_slots: Array[String] = [] var color_highlighted: StyleBoxFlat = StyleBoxFlat.new() var color_normal: StyleBoxFlat = StyleBoxFlat.new() func _ready() -> void: color_highlighted.bg_color = Color(0.67058825, 1.0, 0.5411765) color_normal.bg_color = Color(1.0, 1.0, 1.0) func add_label(label_text: String, left: bool, right: bool) -> Vector3i: var new_label: Label = Label.new() new_label.text = label_text new_label.add_theme_color_override("font_color", Color(0, 0, 0, 1)) self.add_child(new_label) var child_index: int = self.get_child_count() - 1 if left: self.set_slot_enabled_left(child_index, true) self.set_slot_color_left(child_index, Color(0.9, 0.9, 0.9, 1)) left_slots.append(label_text) if right: self.set_slot_enabled_right(child_index, true) self.set_slot_color_right(child_index, Color(0.9, 0.9, 0.9, 1)) right_slots.append(label_text) # the port index is counted separately from the left and right slots return Vector3i(child_index, left_slots.size() - 1, right_slots.size() - 1) func set_highlighted(highlight: bool) -> void: if highlight: self.add_theme_stylebox_override("panel", color_highlighted) else: self.add_theme_stylebox_override("panel", color_normal)