Switch to the Fetch API
This commit is contained in:
parent
ee9c1a7998
commit
d0dd883ddf
|
@ -91,14 +91,16 @@ class AppController {
|
||||||
pointSize: FONT_SIZE,
|
pointSize: FONT_SIZE,
|
||||||
};
|
};
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest;
|
window.fetch(PARTITION_FONT_ENDPOINT_URL, {
|
||||||
xhr.addEventListener('load', () => {
|
method: 'POST',
|
||||||
this.meshes = new PathfinderMeshes(xhr.responseText);
|
headers: { 'Content-Type': 'application/json' },
|
||||||
this.meshesReceived();
|
body: JSON.stringify(request),
|
||||||
}, false);
|
}).then((response) => {
|
||||||
xhr.open('POST', PARTITION_FONT_ENDPOINT_URL, true);
|
response.text().then((encodedMeshes) => {
|
||||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
this.meshes = new PathfinderMeshes(encodedMeshes);
|
||||||
xhr.send(JSON.stringify(request));
|
this.meshesReceived();
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
meshesReceived() {
|
meshesReceived() {
|
||||||
|
@ -134,43 +136,34 @@ class PathfinderView {
|
||||||
}
|
}
|
||||||
|
|
||||||
loadShaders(): Promise<ShaderMap> {
|
loadShaders(): Promise<ShaderMap> {
|
||||||
return new Promise((resolve, reject) => {
|
let shaders: ShaderMap = {};
|
||||||
let shaders: ShaderMap = {};
|
const shaderKeys = Object.keys(SHADER_URLS);
|
||||||
const shaderKeys = Object.keys(SHADER_URLS);
|
|
||||||
let shaderKeysLeft = shaderKeys.length;
|
|
||||||
|
|
||||||
let loaded = (type: ShaderType, shaderKey: string, source: string) => {
|
let promises = [];
|
||||||
const shader = this.gl.createShader(type);
|
for (const shaderKey of shaderKeys) {
|
||||||
if (shader == null)
|
for (const typeName of ['vertex', 'fragment'] as Array<ShaderTypeName>) {
|
||||||
throw new Error("Failed to create shader!");
|
const type = {
|
||||||
this.gl.shaderSource(shader, source);
|
vertex: this.gl.VERTEX_SHADER,
|
||||||
this.gl.compileShader(shader);
|
fragment: this.gl.FRAGMENT_SHADER,
|
||||||
if (!(shaderKey in shaders))
|
}[typeName];
|
||||||
shaders[shaderKey] = {};
|
|
||||||
shaders[shaderKey][type] = shader;
|
|
||||||
|
|
||||||
shaderKeysLeft--;
|
const url = SHADER_URLS[shaderKey][typeName];
|
||||||
if (shaderKeysLeft == 0)
|
promises.push(window.fetch(url).then((response) => {
|
||||||
resolve(shaders);
|
return response.text().then((source) => {
|
||||||
};
|
const shader = this.gl.createShader(type);
|
||||||
|
if (shader == null)
|
||||||
for (const shaderKey of shaderKeys) {
|
throw new Error("Failed to create shader!");
|
||||||
for (const typeName of ['vertex', 'fragment'] as Array<ShaderTypeName>) {
|
this.gl.shaderSource(shader, source);
|
||||||
const type = {
|
this.gl.compileShader(shader);
|
||||||
vertex: this.gl.VERTEX_SHADER,
|
if (!(shaderKey in shaders))
|
||||||
fragment: this.gl.FRAGMENT_SHADER,
|
shaders[shaderKey] = {};
|
||||||
}[typeName];
|
shaders[shaderKey][type] = shader;
|
||||||
|
});
|
||||||
const xhr = new XMLHttpRequest;
|
}));
|
||||||
xhr.addEventListener('load',
|
|
||||||
() => loaded(type, shaderKey, xhr.responseText),
|
|
||||||
false);
|
|
||||||
xhr.addEventListener('error', () => reject(), false);
|
|
||||||
xhr.open('GET', SHADER_URLS[shaderKey][typeName], true);
|
|
||||||
xhr.send();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
return Promise.all(promises).then(() => shaders);
|
||||||
}
|
}
|
||||||
|
|
||||||
linkShaders(shaders: ShaderMap): Promise<ShaderProgramMap> {
|
linkShaders(shaders: ShaderMap): Promise<ShaderProgramMap> {
|
||||||
|
|
Loading…
Reference in New Issue