Avoid regressing in progress reporting in resource load
(cherry picked from commit f5ca58d32f
)
This commit is contained in:
parent
00cfd6dcac
commit
15ac760e4a
|
@ -506,20 +506,20 @@ Ref<ResourceLoader::LoadToken> ResourceLoader::_load_start(const String &p_path,
|
|||
float ResourceLoader::_dependency_get_progress(const String &p_path) {
|
||||
if (thread_load_tasks.has(p_path)) {
|
||||
ThreadLoadTask &load_task = thread_load_tasks[p_path];
|
||||
float current_progress = 0.0;
|
||||
int dep_count = load_task.sub_tasks.size();
|
||||
if (dep_count > 0) {
|
||||
float dep_progress = 0;
|
||||
for (const String &E : load_task.sub_tasks) {
|
||||
dep_progress += _dependency_get_progress(E);
|
||||
current_progress += _dependency_get_progress(E);
|
||||
}
|
||||
dep_progress /= float(dep_count);
|
||||
dep_progress *= 0.5;
|
||||
dep_progress += load_task.progress * 0.5;
|
||||
return dep_progress;
|
||||
current_progress /= float(dep_count);
|
||||
current_progress *= 0.5;
|
||||
current_progress += load_task.progress * 0.5;
|
||||
} else {
|
||||
return load_task.progress;
|
||||
current_progress = load_task.progress;
|
||||
}
|
||||
|
||||
load_task.max_reported_progress = MAX(load_task.max_reported_progress, current_progress);
|
||||
return load_task.max_reported_progress;
|
||||
} else {
|
||||
return 1.0; //assume finished loading it so it no longer exists
|
||||
}
|
||||
|
|
|
@ -168,7 +168,8 @@ private:
|
|||
String remapped_path;
|
||||
String dependent_path;
|
||||
String type_hint;
|
||||
float progress = 0.0;
|
||||
float progress = 0.0f;
|
||||
float max_reported_progress = 0.0f;
|
||||
ThreadLoadStatus status = THREAD_LOAD_IN_PROGRESS;
|
||||
ResourceFormatLoader::CacheMode cache_mode = ResourceFormatLoader::CACHE_MODE_REUSE;
|
||||
Error error = OK;
|
||||
|
|
Loading…
Reference in New Issue