diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2017-06-27 00:06:42 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-06-27 00:06:42 +0200 | 
| commit | 6f0762ba5dbc78f380798da52b0d66bd2dd44e3b (patch) | |
| tree | 0c61cbc3c566e89ecc390816f0fcb1b2ad0aa427 | |
| parent | f1cc3b700a1400a045950af65a5a8f959434befc (diff) | |
| parent | 8ff5e50513bfbd2fcd060f4e927978a2159ad66a (diff) | |
Merge pull request #9195 from kubecz3k/obj-incoming-connections
Ability to get a list of signals that are targeting given object
| -rw-r--r-- | core/object.cpp | 16 | ||||
| -rw-r--r-- | core/object.h | 1 | 
2 files changed, 17 insertions, 0 deletions
| diff --git a/core/object.cpp b/core/object.cpp index d83b2d0c6e..3416cd8c5a 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1357,6 +1357,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()) { @@ -1683,6 +1698,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); diff --git a/core/object.h b/core/object.h index fabd10fa1f..dec4949c8d 100644 --- a/core/object.h +++ b/core/object.h @@ -443,6 +443,7 @@ private:  	Variant _emit_signal(const Variant **p_args, int p_argcount, Variant::CallError &r_error);  	Array _get_signal_list() const;  	Array _get_signal_connection_list(const String &p_signal) const; +	Array _get_incoming_connections() const;  	void _set_bind(const String &p_set, const Variant &p_value);  	Variant _get_bind(const String &p_name) const; |