msftLodLoaderPlugin.ts 1.0 KB

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