File size: 1,038 Bytes
5f32ba4 3b7903d 5f32ba4 3b7903d 1b5e137 3b7903d 1b5e137 3b7903d 1b5e137 cc654e9 3b7903d 5f32ba4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import type { Scene } from "../core/Scene";
class Loader {
static async LoadAsync(url: string, scene: Scene, onProgress?: (progress: number) => void): Promise<void> {
const req = await fetch(url, {
mode: "cors",
credentials: "omit",
});
if (req.status != 200) {
throw new Error(req.status + " Unable to load " + req.url);
}
const reader = req.body!.getReader();
const contentLength = parseInt(req.headers.get("content-length") as string);
const data = new Uint8Array(contentLength);
let bytesRead = 0;
while (true) {
const { done, value } = await reader.read();
if (done) break;
data.set(value, bytesRead);
bytesRead += value.length;
onProgress?.(bytesRead / contentLength);
}
const rowLength = 3 * 4 + 3 * 4 + 4 + 4;
const vertexCount = data.length / rowLength;
scene.setData(data, vertexCount);
}
}
export { Loader };
|