diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 1d7ba4cf098..4c0847871b4 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -208,6 +208,23 @@
Returns the points which would make up a connection between [param from_node] and [param to_node].
+
+
+
+
+ Returns an [Array] containing a list of all connections for [param node].
+ A connection is represented as a [Dictionary] in the form of:
+ [codeblock]
+ {
+ from_node: StringName,
+ from_port: int,
+ to_node: StringName,
+ to_port: int,
+ keep_alive: bool
+ }
+ [/codeblock]
+
+
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index d0bf8d7819e..f9916bf1e0b 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -2329,6 +2329,22 @@ TypedArray GraphEdit::_get_connections_intersecting_with_rect(const
return arr;
}
+TypedArray GraphEdit::_get_connection_list_from_node(const StringName &p_node) const {
+ List[> connections_from_node = connection_map.get(p_node);
+ TypedArray connections_from_node_dict;
+
+ for (const Ref &conn : connections_from_node) {
+ Dictionary d;
+ d["from_node"] = conn->from_node;
+ d["from_port"] = conn->from_port;
+ d["to_node"] = conn->to_node;
+ d["to_port"] = conn->to_port;
+ d["keep_alive"] = conn->keep_alive;
+ connections_from_node_dict.push_back(d);
+ }
+ return connections_from_node_dict;
+}
+
void GraphEdit::_zoom_minus() {
set_zoom(zoom / zoom_step);
}
@@ -2689,6 +2705,7 @@ void GraphEdit::_bind_methods() {
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_connection_list_from_node", "node"), &GraphEdit::_get_connection_list_from_node);
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);
ClassDB::bind_method(D_METHOD("force_connection_drag_end"), &GraphEdit::force_connection_drag_end);
diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h
index ab8a493d8a8..303b5637494 100644
--- a/scene/gui/graph_edit.h
+++ b/scene/gui/graph_edit.h
@@ -344,6 +344,7 @@ private:
TypedArray _get_connection_list() const;
Dictionary _get_closest_connection_at_point(const Vector2 &p_point, float p_max_distance = 4.0) const;
TypedArray _get_connections_intersecting_with_rect(const Rect2 &p_rect) const;
+ TypedArray _get_connection_list_from_node(const StringName &p_node) const;
Rect2 _compute_shrinked_frame_rect(const GraphFrame *p_frame);
void _set_drag_frame_attached_nodes(GraphFrame *p_frame, bool p_drag);
]