diff options
-rw-r--r-- | main/main.cpp | 24 | ||||
-rw-r--r-- | modules/gdscript/gd_script.h | 1 |
2 files changed, 24 insertions, 1 deletions
diff --git a/main/main.cpp b/main/main.cpp index 752a248b2f..149b3b775e 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1327,6 +1327,29 @@ bool Main::start() { //autoload List<PropertyInfo> props; Globals::get_singleton()->get_property_list(&props); + + //first pass, add the constants so they exist before any script is loaded + for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { + + String s = E->get().name; + if (!s.begins_with("autoload/")) + continue; + String name = s.get_slicec('/',1); + String path = Globals::get_singleton()->get(s); + bool global_var=false; + if (path.begins_with("*")) { + global_var=true; + } + + if (global_var) { + for(int i=0;i<ScriptServer::get_language_count();i++) { + ScriptServer::get_language(i)->add_global_constant(name,Variant()); + } + } + + } + + //second pass, load into global constants for(List<PropertyInfo>::Element *E=props.front();E;E=E->next()) { String s = E->get().name; @@ -1374,7 +1397,6 @@ bool Main::start() { } } - } } diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h index cf8f762a86..a69f99314a 100644 --- a/modules/gdscript/gd_script.h +++ b/modules/gdscript/gd_script.h @@ -534,6 +534,7 @@ public: virtual void auto_indent_code(String& p_code,int p_from_line,int p_to_line) const; virtual void add_global_constant(const StringName& p_variable,const Variant& p_value); + /* DEBUGGER FUNCTIONS */ virtual String debug_get_error() const; |