diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/object.cpp | 17 | ||||
-rw-r--r-- | core/object.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/core/object.cpp b/core/object.cpp index 07e24655c2..c1904d05d7 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1282,6 +1282,23 @@ void Object::get_signal_list(List<MethodInfo> *p_signals ) const { } } + +void Object::get_all_signal_connections(List<Connection> *p_connections) const { + + const StringName *S=NULL; + + while((S=signal_map.next(S))) { + + const Signal *s=&signal_map[*S]; + + for(int i=0;i<s->slot_map.size();i++) { + + p_connections->push_back(s->slot_map.getv(i).conn); + } + } + +} + void Object::get_signal_connection_list(const StringName& p_signal,List<Connection> *p_connections) const { const Signal *s=signal_map.getptr(p_signal); diff --git a/core/object.h b/core/object.h index 44464ab199..fc64b91412 100644 --- a/core/object.h +++ b/core/object.h @@ -574,6 +574,7 @@ public: void emit_signal(const StringName& p_name,VARIANT_ARG_LIST); void get_signal_list(List<MethodInfo> *p_signals ) const; void get_signal_connection_list(const StringName& p_signal,List<Connection> *p_connections) const; + void get_all_signal_connections(List<Connection> *p_connections) const; Error connect(const StringName& p_signal, Object *p_to_object, const StringName& p_to_method,const Vector<Variant>& p_binds=Vector<Variant>(),uint32_t p_flags=0); void disconnect(const StringName& p_signal, Object *p_to_object, const StringName& p_to_method); |