4c881027a1
- persistent files - Hiscore
67 lines
1.9 KiB
GDScript
67 lines
1.9 KiB
GDScript
@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()
|