msftLodLoaderPlugin.ts 999 B

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