msftLodLoaderPlugin.ts 1.1 KB

12345678910111213141516171819202122232425
  1. import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from 'babylonjs/Loading/sceneLoader';
  2. import { IGLTFLoaderExtension } from 'babylonjs-loaders/glTF/2.0/glTFLoaderExtension';
  3. import { GLTF2 } from 'babylonjs-loaders/glTF/index';
  4. import { ViewerModel } from '../../model/viewerModel';
  5. import { ILoaderPlugin } from './loaderPlugin';
  6. /**
  7. * A loder plugin to use MSFT_lod extension correctly (glTF)
  8. */
  9. export class MSFTLodLoaderPlugin implements ILoaderPlugin {
  10. private _model: ViewerModel;
  11. public onInit(loader: ISceneLoaderPlugin | ISceneLoaderPluginAsync, model: ViewerModel) {
  12. this._model = model;
  13. }
  14. public onExtensionLoaded(extension: IGLTFLoaderExtension) {
  15. if (extension.name === "MSFT_lod" && this._model.configuration.loaderConfiguration) {
  16. const MSFT_lod = extension as GLTF2.MSFT_lod;
  17. MSFT_lod.enabled = !!this._model.configuration.loaderConfiguration.progressiveLoading;
  18. MSFT_lod.maxLODsToLoad = this._model.configuration.loaderConfiguration.maxLODsToLoad || Number.MAX_VALUE;
  19. }
  20. }
  21. }