-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGraph.gd
48 lines (37 loc) · 1.41 KB
/
Graph.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
extends Node2D
class_name Graph
@onready var search_node_scene = preload("res://Searchbar.tscn")
var graph_dict := {}
var dragged_param: GraphNodeParameter = null
var added_nodes := 0
var _search_bar_node: Control = null
var _selected_node: ScriptingGraphNode = null
func _ready():
Global.graph = self
func _input(event):
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed():
if _search_bar_node:
_search_bar_node.queue_free()
_search_bar_node = null
_search_bar_node = search_node_scene.instantiate()
add_child(_search_bar_node)
_search_bar_node.node_added.connect(_on_node_added)
_search_bar_node.global_position = get_global_mouse_position()
if Input.is_action_pressed("ui_cancel"):
if _selected_node:
update_selected_node(null)
if _search_bar_node:
_search_bar_node.queue_free()
_search_bar_node = null
if Input.is_action_pressed("ui_text_backspace") and _selected_node:
_selected_node.queue_free()
_selected_node = null
func update_selected_node(graph_node: ScriptingGraphNode):
if _selected_node:
_selected_node.deselect_node()
_selected_node = graph_node
func _on_node_added():
if _search_bar_node:
_search_bar_node.queue_free()
_search_bar_node = null