@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
32 lines (30 loc) • 968 B
JavaScript
/**
*
* @param {Texture} t
* @returns {Promise<Texture>}
*/
function promiseTextureLoaded(t) {
return new Promise(function (resolve, reject) {
let image = t.image;
if (image === undefined) {
//FIXME this is not a pleasant logic which should be replaced. THREE.js v75 (current) does not offer a better way.
Object.defineProperty(t, 'image', {
set: function (i) {
image = i;
resolve();
},
get: function () {
return image;
}
});
} else if (image.complete) {
resolve(t);
} else if (typeof image.addEventListener === "function") {
image.addEventListener('load', resolve);
image.addEventListener('error', reject);
} else {
resolve();
}
})
}
export { promiseTextureLoaded };