mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-26 12:41:40 +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 {
|
class ResourceLoaderWorker {
|
||||||
var tasks:Array<(() -> Void)->Void> = [];
|
var tasks:Array<(() -> Void)->Void> = [];
|
||||||
|
|
||||||
|
var paralleltasks:Array<(() -> Void)->Void> = [];
|
||||||
|
|
||||||
var onFinish:() -> Void;
|
var onFinish:() -> Void;
|
||||||
|
|
||||||
|
var parallelstarted:Bool = false;
|
||||||
|
|
||||||
public function new(onFinish:() -> Void) {
|
public function new(onFinish:() -> Void) {
|
||||||
this.onFinish = onFinish;
|
this.onFinish = onFinish;
|
||||||
}
|
}
|
||||||
|
|
@ -16,17 +20,36 @@ class ResourceLoaderWorker {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function run() {
|
public function run() {
|
||||||
var task = tasks.shift();
|
if (!parallelstarted && paralleltasks.length > 0) {
|
||||||
task(() -> {
|
parallelstarted = true;
|
||||||
if (tasks.length > 0) {
|
var taskcount = paralleltasks.length;
|
||||||
run();
|
var tasksdone = 0;
|
||||||
} else {
|
for (task in paralleltasks) {
|
||||||
onFinish();
|
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) {
|
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