index.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { TelemetryLoaderPlugin } from "./telemetryLoaderPlugin";
  2. import { ILoaderPlugin } from "./loaderPlugin";
  3. import { MSFTLodLoaderPlugin } from './msftLodLoaderPlugin';
  4. import { ApplyMaterialConfigPlugin } from './applyMaterialConfig';
  5. import { ExtendedMaterialLoaderPlugin } from './extendedMaterialLoaderPlugin';
  6. import { Tools } from "@babylonjs/core/Misc/tools";
  7. const pluginCache: { [key: string]: ILoaderPlugin } = {};
  8. export { TelemetryLoaderPlugin, ILoaderPlugin, MSFTLodLoaderPlugin, ApplyMaterialConfigPlugin, ExtendedMaterialLoaderPlugin };
  9. /**
  10. * Get a loader plugin according to its name.
  11. * The plugin will be cached and will be reused if called for again.
  12. *
  13. * @param name the name of the plugin
  14. */
  15. export function getLoaderPluginByName(name: string) {
  16. if (!pluginCache[name]) {
  17. switch (name) {
  18. case 'telemetry':
  19. pluginCache[name] = new TelemetryLoaderPlugin();
  20. break;
  21. case 'msftLod':
  22. pluginCache[name] = new MSFTLodLoaderPlugin();
  23. break;
  24. case 'applyMaterialConfig':
  25. pluginCache[name] = new ApplyMaterialConfigPlugin();
  26. break;
  27. case 'extendedMaterial':
  28. pluginCache[name] = new ExtendedMaterialLoaderPlugin();
  29. break;
  30. }
  31. }
  32. return pluginCache[name];
  33. }
  34. /**
  35. *
  36. */
  37. export function addLoaderPlugin(name: string, plugin: ILoaderPlugin) {
  38. if (pluginCache[name]) {
  39. Tools.Warn("Overwriting plugin with the same name - " + name);
  40. }
  41. pluginCache[name] = plugin;
  42. }