threepipe
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Importer.ts 1.4KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import {IAssetImporter} from './IAssetImporter'
  2. import {IImporter, ILoader} from './IImporter'
  3. import {Class} from 'ts-browser-helpers'
  4. /**
  5. * Importer for loading files through AssetImporter. By default, it's a wrapper for threejs loaders.
  6. */
  7. export class Importer<T extends ILoader = ILoader> implements IImporter {
  8. cls?: Class<T>
  9. onCtor?: (l: T|undefined, ai: IAssetImporter, i: IImporter) => T|undefined
  10. ctor(assetImporter: IAssetImporter): ILoader | undefined { // attach all created loaders to this instance and create dispose method to dispose all.
  11. const loader = this.cls && new this.cls(assetImporter.loadingManager)
  12. return typeof this.onCtor === 'function' ? this.onCtor(loader, assetImporter, this) : loader
  13. }
  14. /**
  15. * Supported ext, must be in lower case.
  16. */
  17. ext: string[] // ['json', 'png', 'jpg', 'data:image/png'...]
  18. /**
  19. * Supported mime types, must be in lower case.
  20. */
  21. mime: string[]
  22. root: boolean
  23. extensions: any[] = []
  24. constructor(cls: Class<T>, ext: string[], mime: string[], root: boolean, onCtor?: (l: T|undefined, ai: IAssetImporter, i: Importer) => T|undefined) {
  25. this.cls = cls
  26. this.ext = ext.filter(Boolean).map(e => e.toLowerCase())
  27. this.mime = mime.filter(Boolean).map(e => e.toLowerCase())
  28. this.root = root
  29. this.onCtor = onCtor
  30. }
  31. }