summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-08-28 20:57:27 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-08-28 20:59:01 -0300
commit748836e0b373a0139c11473f862c8071bed244b7 (patch)
tree2a6e4c601f388808d2c2f7c5bb73fa6b9f2108ce /core
parent1b80edafcaeca5c9f61c86448a16238fd82bb6da (diff)
Several all around fixes to visual scripting (in the process of creating demos)
Diffstat (limited to 'core')
-rw-r--r--core/globals.cpp13
-rw-r--r--core/globals.h1
2 files changed, 8 insertions, 6 deletions
diff --git a/core/globals.cpp b/core/globals.cpp
index 3f0edd68f4..b822f52f15 100644
--- a/core/globals.cpp
+++ b/core/globals.cpp
@@ -1332,17 +1332,18 @@ Variant _GLOBAL_DEF( const String& p_var, const Variant& p_default) {
void Globals::add_singleton(const Singleton &p_singleton) {
singletons.push_back(p_singleton);
+ singleton_ptrs[p_singleton.name]=p_singleton.ptr;
}
Object* Globals::get_singleton_object(const String& p_name) const {
- for(const List<Singleton>::Element *E=singletons.front();E;E=E->next()) {
- if (E->get().name == p_name) {
- return E->get().ptr;
- };
- };
- return NULL;
+ const Map<StringName,Object*>::Element *E=singleton_ptrs.find(p_name);
+ if (!E)
+ return NULL;
+ else
+ return E->get();
+
};
bool Globals::has_singleton(const String& p_name) const {
diff --git a/core/globals.h b/core/globals.h
index f24b2daf79..5e0bdb0e54 100644
--- a/core/globals.h
+++ b/core/globals.h
@@ -91,6 +91,7 @@ protected:
Error _save_settings_binary(const String& p_file,const Map<String,List<String> > &props,const CustomMap& p_custom=CustomMap());
List<Singleton> singletons;
+ Map<StringName,Object*> singleton_ptrs;
Error _save_custom_bnd(const String& p_file);