summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2015-05-10 15:45:33 -0300
committerJuan Linietsky <reduzio@gmail.com>2015-05-10 15:45:33 -0300
commit9b692b174b06ebb80d6e5a82309b9c9fc44c797d (patch)
tree9ab3b9b6ec39cdd9ce02ff2edb8689f204a413d1 /core
parentd1e4d6e997d2c2f753ee510fcd13dee08b214968 (diff)
-convert to subscene keeps signal connections, fixes #1863
Diffstat (limited to 'core')
-rw-r--r--core/object.cpp17
-rw-r--r--core/object.h1
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);