Added adaptative port types to reroute node

This commit is contained in:
Rodz Labs 2021-11-13 14:13:38 +01:00
parent 827ce889e8
commit 2c59e78272
4 changed files with 37 additions and 11 deletions

View File

@ -2,17 +2,22 @@ tool
extends MMGenBase
class_name MMGenReroute
var port_type : String = "any"
func get_type() -> String:
return "reroute"
func set_port_type(t : String) -> void:
port_type = t
func get_type_name() -> String:
return "Reroute"
func get_input_defs() -> Array:
return [ { name="in", type="rgba" } ]
return [ { name="in", type=port_type } ]
func get_output_defs() -> Array:
return [ { type="rgba" } ]
return [ { type=port_type } ]
func get_parameter_defs() -> Array:
return []

View File

@ -1,8 +1,21 @@
extends MMGraphNodeMinimal
func _on_Area2D_mouse_entered() -> void:
print("mouse entered reroute")
func _on_Area2D_mouse_exited() -> void:
print("mouse exited reroute")
func on_connections_changed():
var graph_edit = get_parent()
var color : Color = Color(1.0, 1.0, 1.0)
var type : int = 42
var port_type : String = "any"
for c in graph_edit.get_connection_list():
if c.to == name:
var node : GraphNode = graph_edit.get_node(c.from)
color = node.get_slot_color_right(c.from_port)
type = node.get_slot_type_right(c.from_port)
port_type = node.generator.get_output_defs()[c.from_port].type
break
if c.from == name:
var node : GraphNode = graph_edit.get_node(c.to)
color = node.get_slot_color_left(c.to_port)
type = node.get_slot_type_left(c.to_port)
port_type = node.generator.get_input_defs()[c.from_port].type
set_slot(0, true, type, color, true, type, color)
generator.set_port_type(port_type)

View File

@ -47,10 +47,10 @@ rect_min_size = Vector2( 24, 24 )
theme = SubResource( 3 )
custom_constants/port_offset = 0
slot/0/left_enabled = true
slot/0/left_type = 0
slot/0/left_type = 42
slot/0/left_color = Color( 1, 1, 1, 1 )
slot/0/right_enabled = true
slot/0/right_type = 0
slot/0/right_type = 42
slot/0/right_color = Color( 1, 1, 1, 1 )
script = ExtResource( 1 )
__meta__ = {

View File

@ -163,11 +163,19 @@ func connect_node(from, from_slot, to, to_slot):
connected = true
if connected:
send_changed_signal()
for n in [ from_node, to_node ]:
if n.has_method("on_connections_changed"):
n.on_connections_changed()
func disconnect_node(from, from_slot, to, to_slot) -> void:
if generator.disconnect_children(get_node(from).generator, from_slot, get_node(to).generator, to_slot):
var from_node : MMGraphNodeMinimal = get_node(from)
var to_node : MMGraphNodeMinimal = get_node(to)
if generator.disconnect_children(from_node.generator, from_slot, to_node.generator, to_slot):
.disconnect_node(from, from_slot, to, to_slot)
send_changed_signal()
for n in [ from_node, to_node ]:
if n.has_method("on_connections_changed"):
n.on_connections_changed()
func on_connections_changed(removed_connections : Array, added_connections : Array) -> void:
for c in removed_connections: