|
@@ -340,7 +340,7 @@ void ResourceLoader::_thread_load_function(void *p_userdata) {
|
|
|
|
|
|
if (load_task.resource.is_valid()) {
|
|
|
if (load_task.cache_mode != ResourceFormatLoader::CACHE_MODE_IGNORE) {
|
|
|
- load_task.resource->set_path(load_task.local_path);
|
|
|
+ load_task.resource->set_path(load_task.local_path, load_task.cache_mode == ResourceFormatLoader::CACHE_MODE_REPLACE);
|
|
|
} else if (!load_task.local_path.is_resource_file()) {
|
|
|
load_task.resource->set_path_cache(load_task.local_path);
|
|
|
}
|
|
@@ -361,6 +361,17 @@ void ResourceLoader::_thread_load_function(void *p_userdata) {
|
|
|
if (_loaded_callback) {
|
|
|
_loaded_callback(load_task.resource, load_task.local_path);
|
|
|
}
|
|
|
+ } else if (load_task.cache_mode != ResourceFormatLoader::CACHE_MODE_IGNORE) {
|
|
|
+ Ref<Resource> existing = ResourceCache::get_ref(load_task.local_path);
|
|
|
+ if (existing.is_valid()) {
|
|
|
+ load_task.resource = existing;
|
|
|
+ load_task.status = THREAD_LOAD_LOADED;
|
|
|
+ load_task.progress = 1.0;
|
|
|
+
|
|
|
+ if (_loaded_callback) {
|
|
|
+ _loaded_callback(load_task.resource, load_task.local_path);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
thread_load_mutex.unlock();
|
|
@@ -463,7 +474,7 @@ Ref<ResourceLoader::LoadToken> ResourceLoader::_load_start(const String &p_path,
|
|
|
load_task.type_hint = p_type_hint;
|
|
|
load_task.cache_mode = p_cache_mode;
|
|
|
load_task.use_sub_threads = p_thread_mode == LOAD_THREAD_DISTRIBUTE;
|
|
|
- if (p_cache_mode != ResourceFormatLoader::CACHE_MODE_IGNORE) {
|
|
|
+ if (p_cache_mode == ResourceFormatLoader::CACHE_MODE_REUSE) {
|
|
|
Ref<Resource> existing = ResourceCache::get_ref(local_path);
|
|
|
if (existing.is_valid()) {
|
|
|
//referencing is fine
|