Merge pull request #63224 from Rindbee/update-GDScript-cache
Load/update GDScript from disk on load if cache mode is CACHE_MODE_IGNORE
This commit is contained in:
commit
15ac442247
3 changed files with 12 additions and 6 deletions
|
@ -2390,7 +2390,7 @@ Ref<Resource> ResourceFormatLoaderGDScript::load(const String &p_path, const Str
|
|||
}
|
||||
|
||||
Error err;
|
||||
Ref<GDScript> script = GDScriptCache::get_full_script(p_path, err);
|
||||
Ref<GDScript> script = GDScriptCache::get_full_script(p_path, err, "", p_cache_mode == CACHE_MODE_IGNORE);
|
||||
|
||||
// TODO: Reintroduce binary and encrypted scripts.
|
||||
|
||||
|
|
|
@ -183,20 +183,26 @@ Ref<GDScript> GDScriptCache::get_shallow_script(const String &p_path, const Stri
|
|||
return script;
|
||||
}
|
||||
|
||||
Ref<GDScript> GDScriptCache::get_full_script(const String &p_path, Error &r_error, const String &p_owner) {
|
||||
Ref<GDScript> GDScriptCache::get_full_script(const String &p_path, Error &r_error, const String &p_owner, bool p_update_from_disk) {
|
||||
MutexLock lock(singleton->lock);
|
||||
|
||||
if (!p_owner.is_empty()) {
|
||||
singleton->dependencies[p_owner].insert(p_path);
|
||||
}
|
||||
|
||||
Ref<GDScript> script;
|
||||
r_error = OK;
|
||||
if (singleton->full_gdscript_cache.has(p_path)) {
|
||||
return singleton->full_gdscript_cache[p_path];
|
||||
script = Ref<GDScript>(singleton->full_gdscript_cache[p_path]);
|
||||
if (!p_update_from_disk) {
|
||||
return script;
|
||||
}
|
||||
}
|
||||
|
||||
Ref<GDScript> script = get_shallow_script(p_path);
|
||||
ERR_FAIL_COND_V(script.is_null(), Ref<GDScript>());
|
||||
if (script.is_null()) {
|
||||
script = get_shallow_script(p_path);
|
||||
ERR_FAIL_COND_V(script.is_null(), Ref<GDScript>());
|
||||
}
|
||||
|
||||
r_error = script->load_source_code(p_path);
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ public:
|
|||
static Ref<GDScriptParserRef> get_parser(const String &p_path, GDScriptParserRef::Status status, Error &r_error, const String &p_owner = String());
|
||||
static String get_source_code(const String &p_path);
|
||||
static Ref<GDScript> get_shallow_script(const String &p_path, const String &p_owner = String());
|
||||
static Ref<GDScript> get_full_script(const String &p_path, Error &r_error, const String &p_owner = String());
|
||||
static Ref<GDScript> get_full_script(const String &p_path, Error &r_error, const String &p_owner = String(), bool p_update_from_disk = false);
|
||||
static Error finish_compiling(const String &p_owner);
|
||||
|
||||
GDScriptCache();
|
||||
|
|
Loading…
Reference in a new issue