vis-three loader-manager plugin
npm install @vis-three/plugin-loader-managerLoaderManagerPlugin
LOADER_MANAGER_PLUGIN
ts
export interface LoaderManagerParameters {
/*加载器拓展 /
loaderExtends: { [key: string]: Loader };
}
export interface LoaderManagerPluginParameters extends LoaderManagerParameters {
/*公共前缀路径 /
path?: string;
}
`
$3
支持拓展不同格式的加载资源类型和覆盖当前的加载器。
`ts
import { Loader } from "three";
class MyGLFTLoader extends Loader {}
engine.install(
LoaderManagerPlugin({
loaderExtends: {
pmx: new PMXLoader(),
glft: new MyGLTFLoader(),
},
})
);
`
:::tip
自定义的加载器建议继承three.js的Loader。
:::
$3
统一的资源前缀,这个对于有不同域名的服务地址会很有用。
`ts
engine.install(
LoaderManagerPlugin({
path: "https://www.mywebsite.com/model",
})
);
engine.loadResources(["/home/desk.fbx"]);
// /home/desk.fbx -> https://www.mywebsite.com/model/home/desk.fbx
`
引擎拓展
`ts
export interface LoaderManagerEngine extends Engine {
/*资源加载器管理器 /
loaderManager: LoaderManager;
/*加载资源函数 /
loadResources: (
urlList: Array,
callback: (err: Error | undefined, event?: LoadedEvent) => void
) => LoaderManagerEngine;
/*异步加载资源函数 /
loadResourcesAsync: (urlList: Array) => Promise;
}
`
加载 Blob 临时链接
可以通过指定当前资源的类型进行。
`ts
engine.loadResources([
{
url: "blob:https://shiotsukikaedesari.gitee.io/1e09dae0-94a2-4a32-bd9f-eeae8df51907",
ext: "glft",
},
]);
`
LoaderManager
此类继承@vis-three/core的Dispatcher
$3
`ts
export enum LOADER_EVENT {
BEFORELOAD = "beforeLoad",
LOADING = "loading",
DETAILLOADING = "detailLoading",
DETAILLOADED = "detailLoaded",
LOADED = "loaded",
}
`
$3
`ts
export interface LoadDetail {
url: string;
progress: number;
error: boolean;
message: string;
}
export interface BeforeLoadEvent extends BaseEvent {
urlList: string[];
}
export interface LoadingEvent extends BaseEvent {
loadTotal: number;
loadSuccess: number;
loadError: number;
}
export interface DetailEvent extends BaseEvent {
detail: LoadDetail;
}
export interface LoadedEvent extends BaseEvent {
loadTotal: number;
loadSuccess: number;
loadError: number;
resourceMap: Map;
}
`
$3
▸ getLoader(ext): null \| Loader
获取加载器
#### Parameters
| Name | Type | Description |
| :---- | :------- | :---------- |
| ext | string | 资源类型 |
#### Returns
null \| Loader
$3
▸ getResource(url): unknown
获取 url 下的资源
#### Parameters
| Name | Type |
| :---- | :------- |
| url | string |
#### Returns
unknown
$3
▸ load(urlList): LoaderManager
加载资源
#### Parameters
| Name | Type | Description |
| :-------- | :------------------------------------- | :--------------------------------------- |
| urlList | LoadUnit[] | string[] \| [{ext: string, url: string}] |
#### Returns
this
$3
▸ register(ext, loader): LoaderManager
注册 loader
#### Parameters
| Name | Type | Description |
| :------- | :------- | :------------------ |
| ext | string | 文件格式: jpg |
| loader | Loader | extend THREE.Loader |
#### Returns
this
$3
▸ reset(): LoaderManager
重置加载管理器属性
#### Returns
this
$3
▸ setLoadDetailMap(map): LoaderManager
Deprecated
设置详细资源信息
#### Parameters
| Name | Type |
| :---- | :------- |
| map | Object |
#### Returns
this
$3
▸ setPath(path): LoaderManager
设置统一资源路径前缀
#### Parameters
| Name | Type |
| :----- | :------- |
| path | string |
#### Returns
this
$3
▸ setRequestHeader(headers): LoaderManager
设置请求头
#### Parameters
| Name | Type |
| :-------- | :---------------------------- |
| headers | Record<string, string\> |
#### Returns
this
$3
▸ setResponseType(responseType): LoaderManager
设置响应类型
#### Parameters
| Name | Type |
| :------------- | :------- |
| responseType | string |
#### Returns
this
$3
▸ toJSON(): string
#### Returns
string`