Allow class_name scripts to have nested inheritance
This commit is contained in:
parent
a38bf5287a
commit
25f9aee005
9 changed files with 17 additions and 8 deletions
|
|
@ -946,7 +946,7 @@ void ResourceLoader::add_custom_loaders() {
|
|||
for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
|
||||
|
||||
StringName class_name = E->get();
|
||||
StringName base_class = ScriptServer::get_global_class_base(class_name);
|
||||
StringName base_class = ScriptServer::get_global_class_native_base(class_name);
|
||||
|
||||
if (base_class == custom_loader_base_class) {
|
||||
String path = ScriptServer::get_global_class_path(class_name);
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ void ResourceSaver::add_custom_savers() {
|
|||
for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
|
||||
|
||||
StringName class_name = E->get();
|
||||
StringName base_class = ScriptServer::get_global_class_base(class_name);
|
||||
StringName base_class = ScriptServer::get_global_class_native_base(class_name);
|
||||
|
||||
if (base_class == custom_saver_base_class) {
|
||||
String path = ScriptServer::get_global_class_path(class_name);
|
||||
|
|
|
|||
|
|
@ -190,6 +190,14 @@ StringName ScriptServer::get_global_class_base(const String &p_class) {
|
|||
ERR_FAIL_COND_V(!global_classes.has(p_class), String());
|
||||
return global_classes[p_class].base;
|
||||
}
|
||||
StringName ScriptServer::get_global_class_native_base(const String &p_class) {
|
||||
ERR_FAIL_COND_V(!global_classes.has(p_class), String());
|
||||
String base = global_classes[p_class].base;
|
||||
while (global_classes.has(base)) {
|
||||
base = global_classes[base].base;
|
||||
}
|
||||
return base;
|
||||
}
|
||||
void ScriptServer::get_global_class_list(List<StringName> *r_global_classes) {
|
||||
const StringName *K = NULL;
|
||||
List<StringName> classes;
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ public:
|
|||
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 StringName get_global_class_native_base(const String &p_class);
|
||||
static void get_global_class_list(List<StringName> *r_global_classes);
|
||||
static void save_global_classes();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue