From 2c59e7827239900f3c6ef1fb25d2451c25d3ab18 Mon Sep 17 00:00:00 2001 From: Rodz Labs Date: Sat, 13 Nov 2021 14:13:38 +0100 Subject: [PATCH] Added adaptative port types to reroute node --- addons/material_maker/engine/gen_reroute.gd | 9 +++++-- material_maker/nodes/reroute/reroute.gd | 25 ++++++++++++++----- material_maker/nodes/reroute/reroute.tscn | 4 +-- .../panels/graph_edit/graph_edit.gd | 10 +++++++- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/addons/material_maker/engine/gen_reroute.gd b/addons/material_maker/engine/gen_reroute.gd index 2fc60f84..00967173 100644 --- a/addons/material_maker/engine/gen_reroute.gd +++ b/addons/material_maker/engine/gen_reroute.gd @@ -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 [] diff --git a/material_maker/nodes/reroute/reroute.gd b/material_maker/nodes/reroute/reroute.gd index fd087bab..a312f152 100644 --- a/material_maker/nodes/reroute/reroute.gd +++ b/material_maker/nodes/reroute/reroute.gd @@ -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) diff --git a/material_maker/nodes/reroute/reroute.tscn b/material_maker/nodes/reroute/reroute.tscn index 5c784a2d..160c9c40 100644 --- a/material_maker/nodes/reroute/reroute.tscn +++ b/material_maker/nodes/reroute/reroute.tscn @@ -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__ = { diff --git a/material_maker/panels/graph_edit/graph_edit.gd b/material_maker/panels/graph_edit/graph_edit.gd index de512ebc..16838a5b 100644 --- a/material_maker/panels/graph_edit/graph_edit.gd +++ b/material_maker/panels/graph_edit/graph_edit.gd @@ -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: