DuckRun/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd

68 lines
1.9 KiB
GDScript3
Raw Normal View History

@tool
extends Control
signal open_script(node_name: String, method_signature: String)
var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn")
var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn")
# Properties
# |===================================|
# |===================================|
# |===================================|
const SOURCE_COLOR: Color = Color.SKY_BLUE
const DESTINATION_COLOR: Color = Color.CORAL
const CONNECTION_TYPE: int = 0
@onready var arrange_nodes_checkbox: CheckBox = %ArrangeNodesCheckBox
@onready var signal_details_checkbox: CheckBox = %SignalDetailsCheckBox
@onready var signal_tree: Tree = %SignalTree
@onready var graph: GraphEdit = %Graph
# Lifecycle
# |===================================|
# |===================================|
# |===================================|
# Signals
# |===================================|
# |===================================|
# |===================================|
func _on_clear_graph_button_pressed():
clear()
func _on_generate_graph_button_pressed():
clear()
var scene_signal_graph = SignalGraphUtility.create_signal_graph_from_node(get_tree().edited_scene_root, true)
SignalGraphUtility.generate_signal_graph_nodes(scene_signal_graph, graph, _on_open_signal_in_script)
SignalGraphUtility.generate_signal_graph_tree(scene_signal_graph, signal_tree)
if arrange_nodes_checkbox.button_pressed:
graph.arrange_nodes()
func _on_open_signal_in_script(data: SignalGraphNodeItem.Metadata):
open_script.emit(data.node_name, data.method_signature)
# Methods
# |===================================|
# |===================================|
# |===================================|
func clear():
_clear_graph_nodes()
_clear_tree()
func _clear_graph_nodes():
graph.clear_connections()
for child in graph.get_children():
if child is SignalGraphNode:
child.queue_free()
func _clear_tree():
signal_tree.clear()