threepipe
Version:
A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.
170 lines • 6.93 kB
TypeScript
import { ImportAssetOptions, ImportResult, ProcessRawOptions } from './IAssetImporter';
import { EventDispatcher } from 'three';
import { ISerializedConfig, IViewerPlugin, ThreeViewer } from '../viewer';
import { AssetImporter } from './AssetImporter';
import { IAsset } from './IAsset';
import { AddObjectOptions } from '../core';
import { MaterialManager } from './MaterialManager';
import { GLTFLoader2 } from './import';
import { ValOrArr } from 'ts-browser-helpers';
import { AssetExporter } from './AssetExporter';
import { GLTFWriter2 } from './export';
import { GLTFLoaderPlugin, GLTFParser } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { GLTFExporterPlugin } from 'three/examples/jsm/exporters/GLTFExporter.js';
export interface AssetManagerOptions {
/**
* simple memory based cache for downloaded files, default = false
*/
simpleCache?: boolean;
/**
* Cache Storage for downloaded files, can use with `caches.open`
* When true and by default uses `caches.open('threepipe-assetmanager')`, set to false to disable
* @default true
*/
storage?: Cache | Storage | boolean;
}
export interface AddAssetOptions extends AddObjectOptions {
/**
* Automatically set any loaded HDR, EXR file as the scene environment map
* @default true
*/
autoSetEnvironment?: boolean;
/**
* Automatically set any loaded image(ITexture) file as the scene background
*/
autoSetBackground?: boolean;
}
export interface ImportAddOptions extends ImportAssetOptions, AddAssetOptions {
}
export interface AddRawOptions extends ProcessRawOptions, AddAssetOptions {
}
export interface AssetManagerEventMap {
loadAsset: {
data: ImportResult;
};
processStateUpdate: object;
}
/**
* Asset Manager
*
* Utility class to manage import, export, and material management.
* @category Asset Manager
*/
export declare class AssetManager extends EventDispatcher<AssetManagerEventMap> {
readonly viewer: ThreeViewer;
readonly importer: AssetImporter;
readonly exporter: AssetExporter;
readonly materials: MaterialManager;
get storage(): Storage | Cache | undefined;
constructor(viewer: ThreeViewer, cacheOptions?: AssetManagerOptions);
addAsset<T extends ImportResult = ImportResult>(assetOrPath?: string | IAsset | IAsset[] | File | File[], options?: ImportAddOptions): Promise<(T | undefined)[]>;
loadImported<T extends ValOrArr<ImportResult | undefined> = ImportResult>(imported: T, { autoSetEnvironment, autoSetBackground, ...options }?: AddAssetOptions): Promise<T>;
/**
* same as {@link loadImported}
* @param imported
* @param options
*/
addProcessedAssets<T extends ImportResult | undefined = ImportResult>(imported: (T | undefined)[], options?: AddAssetOptions): Promise<(T | undefined)[]>;
addAssetSingle<T extends ImportResult = ImportResult>(asset?: string | IAsset | File, options?: ImportAssetOptions): Promise<T | undefined>;
addRaw<T extends (ImportResult | undefined) = ImportResult>(res: T | T[], options?: AddRawOptions): Promise<(T | undefined)[]>;
addRawSingle<T extends ImportResult | undefined = ImportResult | undefined>(res: T, options?: AddRawOptions): Promise<T | undefined>;
private _sceneUpdated;
dispose(): void;
protected _addImporters(): void;
private _gltfExporter;
protected _addExporters(): void;
protected _setupObjectProcess(): void;
protected _setupObjectExport(): void;
/**
* Load the embedded `rootPath` dependencies within this object
* @param object
* @private
*/
private _loadObjectDependencies;
/**
* State of download/upload/process/other processes in the viewer.
* Subscribes to importer and exporter by default, more can be added by plugins like {@link FileTransferPlugin}
*/
processState: Map<string, {
state: string;
progress?: number | undefined;
}>;
/**
* Set process state for a path
* Progress should be a number between 0 and 100
* Pass undefined in value to remove the state
* @param path
* @param value
*/
setProcessState(path: string, value: {
state: string;
progress?: number | undefined;
} | undefined): void;
protected _setupProcessState(): void;
gltfExtensions: {
name: string;
import: (parser: GLTFParser, viewer?: ThreeViewer) => GLTFLoaderPlugin;
export: (parser: GLTFWriter2) => GLTFExporterPlugin;
textures?: Record<string, string | number>;
}[];
protected _setupGltfExtensions(): void;
protected _loaderCreate({ loader }: {
loader: GLTFLoader2;
}): void;
registerGltfExtension(ext: AssetManager['gltfExtensions'][number]): void;
unregisterGltfExtension(name: string): void;
/**
* @deprecated use addRaw instead
* @param res
* @param options
*/
addImported<T extends (ImportResult | undefined) = ImportResult>(res: T | T[], options?: AddRawOptions): Promise<(T | undefined)[]>;
/**
* @deprecated use addAsset instead
* @param path
* @param options
*/
addFromPath(path: string, options?: ImportAddOptions): Promise<any[]>;
/**
* @deprecated use {@link ThreeViewer.exportConfig} instead
* @param binary - if set to false, encodes all the array buffers to base64
*/
exportViewerConfig(binary?: boolean): Record<string, any>;
/**
* @deprecated use {@link ThreeViewer.exportPluginsConfig} instead
* @param filter
*/
exportPluginPresets(filter?: string[]): import('../viewer').ISerializedViewerConfig;
/**
* @deprecated use {@link ThreeViewer.exportPluginConfig} instead
* @param plugin
*/
exportPluginPreset(plugin: IViewerPlugin): ISerializedConfig | Record<string, never>;
/**
* @deprecated use {@link ThreeViewer.importPluginConfig} instead
* @param json
* @param plugin
*/
importPluginPreset(json: any, plugin?: IViewerPlugin): Promise<IViewerPlugin<ThreeViewer, boolean> | undefined>;
/**
* @deprecated use {@link ThreeViewer.importConfig} instead
* @param viewerConfig
*/
importViewerConfig(viewerConfig: any): Promise<ThreeViewer | IViewerPlugin<ThreeViewer, boolean> | undefined>;
/**
* @deprecated use {@link ThreeViewer.fromJSON} instead
* @param viewerConfig
*/
applyViewerConfig(viewerConfig: any, resources?: any): ThreeViewer | null;
/**
* @deprecated moved to {@link ThreeViewer.loadConfigResources}
* @param json
* @param extraResources - preloaded resources in the format of viewer config resources.
*/
importConfigResources(json: any, extraResources?: any): Promise<any>;
/**
* @deprecated not a plugin anymore
*/
static readonly PluginType = "AssetManager";
}
//# sourceMappingURL=../src/assetmanager/AssetManager.d.ts.map