-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGraphNodeParameter.gd
More file actions
68 lines (54 loc) · 2.05 KB
/
GraphNodeParameter.gd
File metadata and controls
68 lines (54 loc) · 2.05 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
extends HBoxContainer
class_name GraphNodeParameter
@onready var parameter_button: Button = %ParameterButton
@onready var label: Label = %Label
@onready var hardcoded_input: LineEdit = %HardcodedInput
var parent_node_sig := ""
var _dragging := false
var line_segment: ParamConnector = null
var _hovering := false
var is_exec := false
func _input(event):
if event is InputEventMouseButton and event.is_released() and _hovering and Global.graph.dragged_param:
if event.button_index == MOUSE_BUTTON_LEFT:
Global.graph.dragged_param.line_segment.attach_param(self, true)
func init(text: String, parent_sig: String, _is_exec = false, hardcoded = false, parameter_name = ""):
label.text = text
is_exec = _is_exec
parent_node_sig = parent_sig
if is_exec:
parameter_button.modulate = Color.WHITE
if hardcoded:
hardcoded_input.visible = true
parameter_button.visible = false
if parameter_name != "":
Global.graph.graph_dict[parent_node_sig]["outputs"] = {
"value": Global.vm_state["parameters"][parameter_name]
}
func _ready():
parameter_button.button_down.connect(_on_button_down)
parameter_button.button_up.connect(_on_button_up)
parameter_button.mouse_entered.connect(_on_mouse_entered)
parameter_button.mouse_exited.connect(_on_mouse_exited)
hardcoded_input.text_changed.connect(_set_hardcoded_value)
func _on_button_down():
_dragging = true
Global.graph.dragged_param = self
line_segment = ParamConnector.new()
line_segment.attach_param(self)
Global.add_node_to_graph(line_segment)
func _on_button_up():
_dragging = false
Global.graph.dragged_param = null
func _on_mouse_entered():
_hovering = true
func _on_mouse_exited():
_hovering = false
func _process(_delta):
if not _dragging and line_segment and not line_segment.initialized:
line_segment.queue_free()
line_segment = null
func _set_hardcoded_value(text: String):
Global.graph.graph_dict[parent_node_sig]["outputs"] = {
"value": text
}