mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-12-25 01:12:53 +00:00
parallelize
This commit is contained in:
parent
751f4d1797
commit
fbb336dc0a
1 changed files with 31 additions and 8 deletions
|
|
@ -5,8 +5,12 @@ import src.ResourceLoader;
|
|||
class ResourceLoaderWorker {
|
||||
var tasks:Array<(() -> Void)->Void> = [];
|
||||
|
||||
var paralleltasks:Array<(() -> Void)->Void> = [];
|
||||
|
||||
var onFinish:() -> Void;
|
||||
|
||||
var parallelstarted:Bool = false;
|
||||
|
||||
public function new(onFinish:() -> Void) {
|
||||
this.onFinish = onFinish;
|
||||
}
|
||||
|
|
@ -16,17 +20,36 @@ class ResourceLoaderWorker {
|
|||
}
|
||||
|
||||
public function run() {
|
||||
var task = tasks.shift();
|
||||
task(() -> {
|
||||
if (tasks.length > 0) {
|
||||
run();
|
||||
} else {
|
||||
onFinish();
|
||||
if (!parallelstarted && paralleltasks.length > 0) {
|
||||
parallelstarted = true;
|
||||
var taskcount = paralleltasks.length;
|
||||
var tasksdone = 0;
|
||||
for (task in paralleltasks) {
|
||||
task(() -> {
|
||||
tasksdone++;
|
||||
if (tasksdone == taskcount) {
|
||||
this.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (tasks.length > 0) {
|
||||
var task = tasks.shift();
|
||||
task(() -> {
|
||||
if (tasks.length > 0) {
|
||||
run();
|
||||
} else {
|
||||
onFinish();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
onFinish();
|
||||
}
|
||||
}
|
||||
|
||||
public function loadFile(path:String) {
|
||||
addTask(fwd -> ResourceLoader.load(path).entry.load(fwd));
|
||||
paralleltasks.push(fwd -> ResourceLoader.load(path).entry.load(fwd));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue