Implement restoring node connections on opening an MMMaterian in mat_maker_gd's editor.

This commit is contained in:
Relintai 2021-10-09 19:30:57 +02:00
parent da126d1d45
commit c07ca3d8d8
3 changed files with 62 additions and 12 deletions

View File

@ -61,9 +61,31 @@ func recreate() -> void:
_graph_edit.add_child(gn) _graph_edit.add_child(gn)
#connect them #connect them
for n in _material.nodes:
if n:
for ip in n.input_properties:
if ip.input_property:
var input_node : Node = find_graph_node_for(n)
var output_node : Node = find_graph_node_for(ip.input_property.owner)
var to_slot : int = input_node.get_input_property_graph_node_slot_index(ip)
var from_slot : int = output_node.get_output_property_graph_node_slot_index(ip.input_property)
_graph_edit.connect_node(output_node.name, from_slot, input_node.name, to_slot)
_material.render() _material.render()
func find_graph_node_for(nnode) -> Node:
for c in _graph_edit.get_children():
if c is GraphNode:
if c.has_method("get_material_node"):
var n = c.get_material_node()
if n == nnode:
return c
return null
func set_mmmaterial(object : MMMateial): func set_mmmaterial(object : MMMateial):
_material = object _material = object

View File

@ -325,6 +325,30 @@ func disconnect_slot(slot_idx : int, to_node : Node, to_slot_idx : int) -> bool:
return true return true
func get_input_property_graph_node_slot_index(property) -> int:
var property_index : int = -1
for i in range(properties.size()):
if properties[i][1] != -1:
property_index += 1
if properties[i][6] == property:
break
return property_index
func get_output_property_graph_node_slot_index(property) -> int:
var property_index : int = -1
for i in range(properties.size()):
if properties[i][2] != -1:
property_index += 1
if properties[i][6] == property:
break
return property_index
func get_property_control(slot_idx : int) -> Node: func get_property_control(slot_idx : int) -> Node:
return properties[slot_idx][5] return properties[slot_idx][5]
@ -397,3 +421,6 @@ func on_universal_texture_changed(slot_idx : int) -> void:
func on_slot_line_edit_text_entered(text : String, slot_idx : int) -> void: func on_slot_line_edit_text_entered(text : String, slot_idx : int) -> void:
_node.call(properties[slot_idx][4], text) _node.call(properties[slot_idx][4], text)
func get_material_node() -> MMNode:
return _node

View File

@ -39,6 +39,15 @@ default_vector2 = Vector2( 0, 0 )
default_vector3 = Vector3( 0, 0, 0 ) default_vector3 = Vector3( 0, 0, 0 )
default_color = Color( 0, 0, 0, 1 ) default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=10]
script = ExtResource( 5 )
default_type = 5
default_int = 0
default_float = 0.0
default_vector2 = Vector2( 0, 0 )
default_vector3 = Vector3( 0, 0, 0 )
default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=4] [sub_resource type="Resource" id=4]
script = ExtResource( 5 ) script = ExtResource( 5 )
default_type = 1 default_type = 1
@ -47,10 +56,11 @@ default_float = 0.65
default_vector2 = Vector2( 0, 0 ) default_vector2 = Vector2( 0, 0 )
default_vector3 = Vector3( 0, 0, 0 ) default_vector3 = Vector3( 0, 0, 0 )
default_color = Color( 0, 0, 0, 1 ) default_color = Color( 0, 0, 0, 1 )
input_property = SubResource( 10 )
[sub_resource type="Resource" id=5] [sub_resource type="Resource" id=5]
script = ExtResource( 4 ) script = ExtResource( 4 )
graph_position = Vector2( -340, -340 ) graph_position = Vector2( -360, -340 )
image = SubResource( 7 ) image = SubResource( 7 )
shape_type = 4 shape_type = 4
sides = 11 sides = 11
@ -68,7 +78,7 @@ default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=6] [sub_resource type="Resource" id=6]
script = ExtResource( 6 ) script = ExtResource( 6 )
graph_position = Vector2( -20, -340 ) graph_position = Vector2( -20, -320 )
image = SubResource( 13 ) image = SubResource( 13 )
postfix = "-test" postfix = "-test"
@ -81,15 +91,6 @@ default_vector2 = Vector2( 0, 0 )
default_vector3 = Vector3( 0, 0, 0 ) default_vector3 = Vector3( 0, 0, 0 )
default_color = Color( 0, 0, 0, 1 ) default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=10]
script = ExtResource( 5 )
default_type = 5
default_int = 0
default_float = 0.0
default_vector2 = Vector2( 0, 0 )
default_vector3 = Vector3( 0, 0, 0 )
default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=11] [sub_resource type="Resource" id=11]
script = ExtResource( 5 ) script = ExtResource( 5 )
default_type = 1 default_type = 1
@ -101,7 +102,7 @@ default_color = Color( 0, 0, 0, 1 )
[sub_resource type="Resource" id=12] [sub_resource type="Resource" id=12]
script = ExtResource( 4 ) script = ExtResource( 4 )
graph_position = Vector2( -720, -60 ) graph_position = Vector2( -760, -60 )
image = SubResource( 10 ) image = SubResource( 10 )
shape_type = 3 shape_type = 3
sides = 6 sides = 6