rl-loadout-lib
Version:
Load Rocket League assets into three.js
67 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const rocket_config_1 = require("../model/rocket-config");
const three_1 = require("three");
const tga_loader_1 = require("../utils/three/tga-loader");
/**
* Wrapper around THREE.js loaders to work with Promises.
*/
class PromiseLoader {
constructor(loader) {
this.loader = loader;
}
load(url) {
return new Promise((resolve, reject) => {
if (url) {
this.loader.load(url, resolve, undefined, reject);
}
else {
resolve(undefined);
}
});
}
}
exports.PromiseLoader = PromiseLoader;
/**
* Image loader that handles multiple texture formats using ImageLoader and TGALoader.
*/
class MultiImageLoader {
constructor(format, loadingManager) {
this.format = format;
if (this.format === rocket_config_1.TextureFormat.TGA) {
this.loader = new tga_loader_1.TGALoader(loadingManager);
}
else {
this.loader = new three_1.ImageLoader(loadingManager);
}
}
load(url, onLoad, onProgress, onError) {
this.loader.load(url, onLoad, onProgress, onError);
}
}
exports.MultiImageLoader = MultiImageLoader;
/**
* Texture loader that handles multiple texture formats using ImageLoader and TGALoader.
*/
class ImageTextureLoader {
constructor(format, loadingManager) {
this.format = format;
if (this.format === rocket_config_1.TextureFormat.TGA) {
this.loader = new tga_loader_1.TGALoader(loadingManager);
}
else {
this.loader = new three_1.TextureLoader(loadingManager);
}
}
load(url, onLoad, onProgress, onError) {
this.loader.load(url, texture => {
texture.wrapS = three_1.RepeatWrapping;
texture.wrapT = three_1.RepeatWrapping;
texture.encoding = three_1.LinearEncoding;
texture.flipY = false;
onLoad(texture);
}, onProgress, onError);
}
}
exports.ImageTextureLoader = ImageTextureLoader;
//# sourceMappingURL=loader.js.map