Browse Source

Merge pull request #40902 from Chaosus/vs_fix_bug

Fix small reconnection bug in visual shader
Yuri Roubinsky 5 years ago
parent
commit
c4da3b0248
2 changed files with 10 additions and 1 deletions
  1. 9 1
      scene/resources/visual_shader.cpp
  2. 1 0
      scene/resources/visual_shader.h

+ 9 - 1
scene/resources/visual_shader.cpp

@@ -71,7 +71,15 @@ bool VisualShaderNode::is_output_port_connected(int p_port) const {
 }
 
 void VisualShaderNode::set_output_port_connected(int p_port, bool p_connected) {
-	connected_output_ports[p_port] = p_connected;
+	if (p_connected) {
+		connected_output_ports[p_port] = true;
+		++connected_output_count;
+	} else {
+		--connected_output_count;
+		if (connected_output_count == 0) {
+			connected_output_ports[p_port] = false;
+		}
+	}
 }
 
 bool VisualShaderNode::is_input_port_connected(int p_port) const {

+ 1 - 0
scene/resources/visual_shader.h

@@ -184,6 +184,7 @@ class VisualShaderNode : public Resource {
 	Map<int, Variant> default_input_values;
 	Map<int, bool> connected_input_ports;
 	Map<int, bool> connected_output_ports;
+	int connected_output_count = 0;
 
 protected:
 	bool simple_decl;