gai-ca2/project/scripts/visualization/d_tree_node.gd

41 lines
1.4 KiB
GDScript

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)