import * as THREE from 'three'; import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js' interface ObjData { url : string; mesh : THREE.Mesh; } export class ObjLoaders { public list:ObjData[]; private callback:()=>void; private index:number=0; load(callback:()=>void){ this.callback = callback; this.list = [ { url:"./data/q.obj", mesh:null, }, { url:"./data/q3.obj", mesh:null, } ] this.loadObj(); } private loadObj(){ if(this.index>=this.list.length){ this.callback(); return; } const loader = new OBJLoader(); loader.load(this.list[this.index].url, (obj)=>{ this.list[this.index].mesh = obj.children[0] as THREE.Mesh; this.index++; this.loadObj(); }); } }