From 9953b2ab43843e40410e5c19e3dd1030de18143e Mon Sep 17 00:00:00 2001 From: Chaosus Date: Wed, 24 Apr 2019 08:44:48 +0300 Subject: [PATCH] Disallow loopback connection in visual scripts and visual shaders (cherry picked from commit 21ca9f6c7c1bc2f8ae7b53da97d2ad8037573781) --- editor/plugins/visual_shader_editor_plugin.cpp | 1 - scene/resources/visual_shader.cpp | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index df6775a3ee2..85de0cd46ae 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -517,7 +517,6 @@ void VisualShaderEditor::_connection_request(const String &p_from, int p_from_in int to = p_to.to_int(); if (!visual_shader->can_connect_nodes(type, from, p_from_index, to, p_to_index)) { - EditorNode::get_singleton()->show_warning(TTR("Unable to connect, port may be in use or connection may be invalid.")); return; } diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 4e5909eb2eb..9da2fd27ffb 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -240,6 +240,9 @@ bool VisualShader::can_connect_nodes(Type p_type, int p_from_node, int p_from_po if (!g->nodes.has(p_from_node)) return false; + if (p_from_node == p_to_node) + return false; + if (p_from_port < 0 || p_from_port >= g->nodes[p_from_node].node->get_output_port_count()) return false;