diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-06-28 14:53:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-28 14:53:23 +0200 |
commit | ce7f5992083bdebf2d828a0117d5197eff624710 (patch) | |
tree | 7a6fd2660f0ecf5bc116f57d3587e4eeefadd431 /editor/plugins/visual_shader_editor_plugin.cpp | |
parent | f030b0c83df14192384290d82ef77bc507d267aa (diff) | |
parent | 46cd36f00995b23dc3184316fa46c2fcfefa6619 (diff) |
Merge pull request #49690 from Chaosus/vs_fix_input_connection
Fix auto-connection from output node to input (VisualShaders)
Diffstat (limited to 'editor/plugins/visual_shader_editor_plugin.cpp')
-rw-r--r-- | editor/plugins/visual_shader_editor_plugin.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index 00750c3032..16d36ad053 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -2315,6 +2315,13 @@ void VisualShaderEditor::_add_node(int p_idx, int p_op_idx, String p_resource_pa undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, _from_node, _from_slot, to_node, to_slot); undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, _from_node, _from_slot, to_node, to_slot); } else { + // Need to setting up Input node properly before committing since `is_port_types_compatible` (calling below) is using `mode` and `shader_type`. + VisualShaderNodeInput *input = Object::cast_to<VisualShaderNodeInput>(vsnode.ptr()); + if (input) { + input->set_shader_mode(visual_shader->get_mode()); + input->set_shader_type(visual_shader->get_shader_type()); + } + // Attempting to connect to the first correct port. for (int i = 0; i < vsnode->get_output_port_count(); i++) { if (visual_shader->is_port_types_compatible(vsnode->get_output_port_type(i), input_port_type)) { |