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
|
@ -2390,7 +2390,7 @@ Ref<Resource> ResourceFormatLoaderGDScript::load(const String &p_path, const Str
|
||||||
}
|
}
|
||||||
|
|
||||||
Error err;
|
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.
|
// TODO: Reintroduce binary and encrypted scripts.
|
||||||
|
|
||||||
|
|
|
@ -183,20 +183,26 @@ Ref<GDScript> GDScriptCache::get_shallow_script(const String &p_path, const Stri
|
||||||
return script;
|
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);
|
MutexLock lock(singleton->lock);
|
||||||
|
|
||||||
if (!p_owner.is_empty()) {
|
if (!p_owner.is_empty()) {
|
||||||
singleton->dependencies[p_owner].insert(p_path);
|
singleton->dependencies[p_owner].insert(p_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<GDScript> script;
|
||||||
r_error = OK;
|
r_error = OK;
|
||||||
if (singleton->full_gdscript_cache.has(p_path)) {
|
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);
|
if (script.is_null()) {
|
||||||
ERR_FAIL_COND_V(script.is_null(), Ref<GDScript>());
|
script = get_shallow_script(p_path);
|
||||||
|
ERR_FAIL_COND_V(script.is_null(), Ref<GDScript>());
|
||||||
|
}
|
||||||
|
|
||||||
r_error = script->load_source_code(p_path);
|
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 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 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_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);
|
static Error finish_compiling(const String &p_owner);
|
||||||
|
|
||||||
GDScriptCache();
|
GDScriptCache();
|
||||||
|
|
Loading…
Reference in New Issue