Global class names (and GDScript support for it)

This commit is contained in:
Juan Linietsky
2018-07-15 19:29:00 -03:00
parent f6ce73f724
commit a3f1ee5c57
13 changed files with 381 additions and 10 deletions

View File

@ -54,6 +54,14 @@ class ScriptServer {
static bool scripting_enabled;
static bool reload_scripts_on_save;
struct GlobalScriptClass {
StringName language;
String path;
String base;
};
static HashMap<StringName, GlobalScriptClass> global_classes;
public:
static ScriptEditRequestFunction edit_request_func;
@ -70,6 +78,16 @@ public:
static void thread_enter();
static void thread_exit();
static void global_classes_clear();
static void add_global_class(const StringName &p_class, const StringName &p_base, const StringName &p_language, const String &p_path);
static void remove_global_class(const StringName &p_class);
static bool is_global_class(const StringName &p_class);
static StringName get_global_class_language(const StringName &p_class);
static String get_global_class_path(const String &p_class);
static StringName get_global_class_base(const String &p_class);
static void get_global_class_list(List<StringName> *r_global_classes);
static void save_global_classes();
static void init_languages();
static void finish_languages();
};
@ -285,7 +303,10 @@ public:
virtual void frame();
virtual ~ScriptLanguage(){};
virtual bool handles_global_class_type(const String &p_type) const { return false; }
virtual String get_global_class_name(const String &p_path, String *r_base_type = NULL) const { return String(); }
virtual ~ScriptLanguage() {}
};
extern uint8_t script_encryption_key[32];