react-xrplayer
Version:
An excellent xr player for react
63 lines (54 loc) • 1.72 kB
JavaScript
/**
* 支持向全景场景中心加入可以360°观看的3D模型
*/
import FBXLoader from './loader/FBXLoader';
import ObjLoader from './loader/ObjLoader';
class CenterModelHelper {
constructor(scene) {
this.scene = scene;
this.modelLoaderMap = new Map();
}
loadModel = (model_key, model) => {
const promise = new Promise((resolve, reject) => {
const loader = this.getLoader(model);
this.modelLoaderMap.set(model_key, loader);
loader.loadObj(model);
resolve();
}).catch((reason) => {
})
promise.then();
}
loadModelList = (model_list) => {
model_list && model_list.forEach(data => {
this.loadModel(data[0], data[1])
})
}
removeModel = (model_key) => {
const modelLoader = this.modelLoaderMap.get(model_key);
modelLoader && modelLoader.remove();
this.modelLoaderMap.delete(model_key);
}
removeAllModel = () => {
const loaderArray = Array.from(this.modelLoaderMap.values());
loaderArray.forEach(loader => {
loader.remove();
});
this.modelLoaderMap.clear();
}
getLoader = (data) => {
switch (data.modeFormat) {
case 'fbx':
return new FBXLoader(this.scene);
case 'obj':
return new ObjLoader(this.scene);
default: return null;
}
}
update = () => {
this.modelLoaderMap.forEach(data => {
const loader = data;
loader && loader.update();
})
}
}
export default CenterModelHelper;