Skip to content

Commit 131b167

Browse files
committed
feat(types): add typings for the plugin API
1 parent bd85e82 commit 131b167

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

src/base/TilesRendererBase.d.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
11
import { LRUCache } from '../utilities/LRUCache';
22
import { PriorityQueue } from '../utilities/PriorityQueue';
3+
import { Tile } from './Tile';
34

4-
export class TilesRendererBase {
5+
export type Attribution =
6+
| { type: 'string'; value: string }
7+
| { type: 'html'; value: string }
8+
| { type: 'image'; value: string };
9+
10+
export interface TilesRendererBasePlugin {
11+
init?: ( renderer: TilesRendererBase ) => void;
12+
13+
fetchData?: ( url: RequestInfo, options: RequestInit ) => Promise<Response>;
14+
parseTile?: ( content: ArrayBuffer | DataView, tile: Tile, extension: string, uri: string ) => Promise<void>;
15+
preprocessURL?: ( uri: string ) => string;
16+
preprocessNode?: ( tile: Tile, tileSetDir: string, parentTile: Tile | null ) => void;
17+
loadRootTileSet?: () => Promise<void>;
18+
disposeTile?: ( tile: Tile ) => void;
19+
getAttributions?: ( target: Attribution[] ) => void;
20+
21+
dispose?: () => void;
22+
}
23+
24+
export class TilesRendererBase<TPlugin extends TilesRendererBasePlugin = TilesRendererBasePlugin> {
525

626
readonly rootTileSet : object | null;
727
readonly root : object | null;
@@ -20,9 +40,9 @@ export class TilesRendererBase {
2040

2141
constructor( url?: string );
2242
update() : void;
23-
registerPlugin( plugin: object ) : void;
24-
unregisterPlugin( plugin: object | string ) : boolean;
25-
getPluginByName( plugin: object | string ) : object;
43+
registerPlugin( plugin: TPlugin ) : void;
44+
unregisterPlugin( plugin: TPlugin | string ) : boolean;
45+
getPluginByName( plugin: string ) : TPlugin;
2646
traverse(
2747
beforeCb : ( ( tile : object, parent : object, depth : number ) => boolean ) | null,
2848
afterCb : ( ( tile : object, parent : object, depth : number ) => boolean ) | null

src/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// three.js
22
export { DebugTilesRenderer } from './three/DebugTilesRenderer';
3-
export { TilesRenderer } from './three/TilesRenderer';
3+
export { TilesRenderer, TilesRendererPlugin } from './three/TilesRenderer';
44
export { TilesGroup } from './three/TilesGroup';
55
export { B3DMLoader, B3DMScene } from './three/loaders/B3DMLoader';
66
export { I3DMLoader, I3DMScene } from './three/loaders/I3DMLoader';
@@ -24,7 +24,7 @@ export * from './three/plugins/DebugTilesPlugin';
2424
export { ImplicitTilingPlugin } from './base/plugins/ImplicitTilingPlugin';
2525

2626
// common
27-
export { TilesRendererBase } from './base/TilesRendererBase';
27+
export { TilesRendererBase, TilesRendererBasePlugin } from './base/TilesRendererBase';
2828
export { Tile } from './base/Tile';
2929
export { TileBase } from './base/TileBase';
3030
export { Tileset } from './base/Tileset';

src/three/TilesRenderer.d.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { Box3, Camera, Vector2, Matrix4, WebGLRenderer, Object3D, LoadingManager, Sphere } from 'three';
22
import { Tile } from '../base/Tile';
3-
import { TilesRendererBase } from '../base/TilesRendererBase';
3+
import { TilesRendererBase, TilesRendererBasePlugin } from '../base/TilesRendererBase';
44
import { TilesGroup } from './TilesGroup';
55
import { Ellipsoid } from './math/Ellipsoid';
66

7-
export class TilesRenderer extends TilesRendererBase {
7+
export interface TilesRendererPlugin extends TilesRendererBasePlugin {
8+
processTileModel?: ( scene: Object3D, tile: Tile ) => Promise<void>;
9+
doTilesNeedUpdate?: () => boolean;
10+
}
11+
12+
export class TilesRenderer extends TilesRendererBase<TilesRendererPlugin> {
813

914
ellipsoid: Ellipsoid;
1015
autoDisableRendererCulling : boolean;

0 commit comments

Comments
 (0)