threepipe
Version:
A 3D viewer framework built on top of three.js in TypeScript with a focus on quality rendering, modularity and extensibility.
93 lines • 4.52 kB
TypeScript
import { Event, EventDispatcher, EventListener, LoadingManager } from 'three';
import { IAssetImporter, IAssetImporterEventTypes, ImportAssetOptions, ImportFilesOptions, ImportResult, ProcessRawOptions } from './IAssetImporter';
import { IAsset, IFile } from './IAsset';
import { IImporter, ILoader } from './IImporter';
export type IAssetImporterEvent = Event & {
type: IAssetImporterEventTypes;
data?: ImportResult;
options?: ProcessRawOptions;
path?: string;
progress?: number;
state?: string;
error?: any;
files?: Map<string, IFile>;
url?: string;
loaded?: number;
total?: number;
loader?: ILoader;
};
/**
* Asset Importer
*
* Utility class to import assets from local files, blobs, urls, etc.
* Used in {@link AssetManager} to import assets.
* Acts as a wrapper over three.js LoadingManager and adds support for dynamically loading loaders, caching assets, better event dispatching and file tracking.
* @category Asset Manager
*/
export declare class AssetImporter extends EventDispatcher<IAssetImporterEvent, IAssetImporterEventTypes> implements IAssetImporter {
private _loadingManager;
private _logger;
protected _rootContext?: {
path: string;
rootUrl: string;
};
private _loaderCache;
private _fileDatabase;
private _cachedAssets;
readonly importers: IImporter[];
constructor(logging?: boolean);
get loadingManager(): LoadingManager;
get cachedAssets(): IAsset[];
addImporter(...importers: IImporter[]): void;
removeImporter(...importers: IImporter[]): void;
import<T extends ImportResult | undefined = ImportResult>(assetOrPath?: string | IAsset | IAsset[] | File | File[], options?: ImportAssetOptions): Promise<(T | undefined)[]>;
importSingle<T extends ImportResult | undefined = ImportResult>(asset?: IAsset | string, options?: ImportAssetOptions): Promise<T | undefined>;
importPath<T extends ImportResult | undefined = ImportResult | undefined>(path: string, options?: ImportAssetOptions): Promise<T[]>;
importAsset<T extends ImportResult | undefined = ImportResult | undefined>(asset?: IAsset, options?: ImportAssetOptions, onDownloadProgress?: (e: ProgressEvent) => void): Promise<T[]>;
importFile<T extends ImportResult | undefined = ImportResult | undefined>(file?: File, options?: ImportAssetOptions, onDownloadProgress?: (e: ProgressEvent) => void): Promise<T[]>;
/**
* Import multiple local files/blobs from a map of files, like when a local folder is loaded, or when multiple files are dropped.
* @param files
* @param options
*/
importFiles<T extends ImportResult | undefined = ImportResult | undefined>(files: Map<string, IFile>, options?: ImportFilesOptions): Promise<Map<string, T[]>>;
private _loadFile;
/**
* Register a file in the database and return a loader for it. If the loader does not exist, it will be created.
* @param path
* @param file
*/
registerFile(path: string, file?: IFile): ILoader | undefined;
/**
* Remove a file from the database and revoke the object url if it exists.
* @param path
*/
unregisterFile(path: string): void;
processRaw<T extends (ImportResult | undefined) = ImportResult>(res: T | T[], options: ProcessRawOptions, path?: string): Promise<T[]>;
processRawSingle<T extends (ImportResult | undefined) = ImportResult>(res: T, options: ProcessRawOptions, path?: string): Promise<T>;
dispose(): void;
/**
* Clear memory asset and loader cache. Browser cache and custom cache storage is not cleared with this.
*/
clearCache(): void;
unregisterAllFiles(): void;
clearLoaderCache(): void;
resolveURL(url: string): string;
protected _urlModifier(url: string): string;
private _isRootFile;
private _getImporter;
private _getLoader;
private _createLoader;
addEventListener<T extends IAssetImporterEvent['type'] & IAssetImporterEventTypes>(type: T, listener: EventListener<IAssetImporterEvent, T, this>): void;
protected _onLoad(): void;
protected _onProgress(url: string, loaded: number, total: number): void;
protected _onError(url: string): void;
protected _onStart(url: string, loaded: number, total: number): void;
/**
* @deprecated use {@link processRaw} instead
* @param res
* @param options
*/
processImported(res: any, options: ProcessRawOptions, path?: string): Promise<any[]>;
}
//# sourceMappingURL=AssetImporter.d.ts.map