diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 3451e427f34..bd0ea02eeb0 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -181,6 +181,14 @@
[/codeblocks]
+
+
+
+
+
+ Returns the number of connections from [param from_port] of [param from_node].
+
+
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index 7e07f4a2023..7d01f24298c 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -337,6 +337,16 @@ const List[> &GraphEdit::get_connection_list() const {
return connections;
}
+int GraphEdit::get_connection_count(const StringName &p_node, int p_port) {
+ int count = 0;
+ for (const Ref &conn : connections) {
+ if ((conn->from_node == p_node && conn->from_port == p_port) || (conn->to_node == p_node && conn->to_port == p_port)) {
+ count += 1;
+ }
+ }
+ return count;
+}
+
void GraphEdit::set_scroll_offset(const Vector2 &p_offset) {
setting_scroll_offset = true;
h_scrollbar->set_value(p_offset.x);
@@ -2640,6 +2650,7 @@ void GraphEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("disconnect_node", "from_node", "from_port", "to_node", "to_port"), &GraphEdit::disconnect_node);
ClassDB::bind_method(D_METHOD("set_connection_activity", "from_node", "from_port", "to_node", "to_port", "amount"), &GraphEdit::set_connection_activity);
ClassDB::bind_method(D_METHOD("get_connection_list"), &GraphEdit::_get_connection_list);
+ ClassDB::bind_method(D_METHOD("get_connection_count", "from_node", "from_port"), &GraphEdit::get_connection_count);
ClassDB::bind_method(D_METHOD("get_closest_connection_at_point", "point", "max_distance"), &GraphEdit::_get_closest_connection_at_point, DEFVAL(4.0));
ClassDB::bind_method(D_METHOD("get_connections_intersecting_with_rect", "rect"), &GraphEdit::_get_connections_intersecting_with_rect);
ClassDB::bind_method(D_METHOD("clear_connections"), &GraphEdit::clear_connections);
diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h
index 20c98c462c4..e39bbac13a1 100644
--- a/scene/gui/graph_edit.h
+++ b/scene/gui/graph_edit.h
@@ -399,6 +399,7 @@ public:
// Connection related methods.
Error connect_node(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port);
bool is_node_connected(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port);
+ int get_connection_count(const StringName &p_node, int p_port);
void disconnect_node(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port);
void clear_connections();
]