modelLoader.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { AbstractViewer } from "..";
  2. import { ISceneLoaderPlugin, ISceneLoaderPluginAsync, Tools, SceneLoader, Tags, GLTFFileLoader } from "babylonjs";
  3. import { IModelConfiguration } from "../configuration/configuration";
  4. import { ViewerModel, ModelState } from "./viewerModel";
  5. export class ModelLoader {
  6. private _loadId: number;
  7. private _disposed = false;
  8. private _loaders: Array<ISceneLoaderPlugin | ISceneLoaderPluginAsync>;
  9. constructor(private _viewer: AbstractViewer) {
  10. this._loaders = [];
  11. this._loadId = 0;
  12. }
  13. public load(modelConfiguration: IModelConfiguration): ViewerModel {
  14. const model = new ViewerModel(this._viewer.scene, modelConfiguration);
  15. model.loadId = this._loadId++;
  16. this._loaders.push(model.loader);
  17. return model;
  18. }
  19. public dispose() {
  20. this._loaders.forEach(loader => {
  21. if (loader.name === "gltf") {
  22. (<GLTFFileLoader>loader).dispose();
  23. }
  24. });
  25. this._loaders.length = 0;
  26. this._disposed = true;
  27. }
  28. }