From 95ca0aa7ad616b2fdcfaf5b57411ec4e5e59cab3 Mon Sep 17 00:00:00 2001 From: JekSun97 Date: Sat, 23 Nov 2024 04:59:38 +0600 Subject: [PATCH] Add get_connetion_count function to GraphEdit --- doc/classes/GraphEdit.xml | 8 ++++++++ scene/gui/graph_edit.cpp | 11 +++++++++++ scene/gui/graph_edit.h | 1 + 3 files changed, 20 insertions(+) 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();