summaryrefslogtreecommitdiffstats
path: root/core/object.cpp
diff options
context:
space:
mode:
authorJakub Grzesik <kubecz3k@gmail.com>2017-06-15 15:31:57 +0200
committerJakub Grzesik <kubecz3k@gmail.com>2017-06-15 15:32:30 +0200
commit8ff5e50513bfbd2fcd060f4e927978a2159ad66a (patch)
tree8c83378d62000c6ba1fb532cedba8dfff4b8935e /core/object.cpp
parent47b34bf79be1ba2fe4a99c8931732efac68a0b87 (diff)
downloadredot-engine-8ff5e50513bfbd2fcd060f4e927978a2159ad66a.tar.gz
Ability to get a list of signals that are targeting object
Diffstat (limited to 'core/object.cpp')
-rw-r--r--core/object.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/object.cpp b/core/object.cpp
index f20e93f9d7..c760a9ea98 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -1332,6 +1332,21 @@ Array Object::_get_signal_connection_list(const String &p_signal) const {
return ret;
}
+Array Object::_get_incoming_connections() const {
+
+ Array ret;
+ int connections_amount = connections.size();
+ for (int idx_conn = 0; idx_conn < connections_amount; idx_conn++) {
+ Dictionary conn_data;
+ conn_data["source"] = connections[idx_conn].source;
+ conn_data["signal_name"] = connections[idx_conn].signal;
+ conn_data["method_name"] = connections[idx_conn].method;
+ ret.push_back(conn_data);
+ }
+
+ return ret;
+}
+
void Object::get_signal_list(List<MethodInfo> *p_signals) const {
if (!script.is_null()) {
@@ -1641,6 +1656,7 @@ void Object::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_signal_list"), &Object::_get_signal_list);
ClassDB::bind_method(D_METHOD("get_signal_connection_list", "signal"), &Object::_get_signal_connection_list);
+ ClassDB::bind_method(D_METHOD("get_incoming_connections"), &Object::_get_incoming_connections);
ClassDB::bind_method(D_METHOD("connect", "signal", "target:Object", "method", "binds", "flags"), &Object::connect, DEFVAL(Array()), DEFVAL(0));
ClassDB::bind_method(D_METHOD("disconnect", "signal", "target:Object", "method"), &Object::disconnect);