@spearwolf/twopoint5d
Version:
Create 2.5D realtime graphics and pixelart with WebGL and three.js
52 lines • 1.83 kB
TypeScript
import type { Matrix4, Object3D, Vector2, Vector3 } from 'three/webgpu';
import type { AABB2 } from './AABB2.js';
import type { Map2DTileCoordsUtil } from './Map2DTileCoordsUtil.js';
export interface IMap2DRenderableArea {
aabb: AABB2;
}
export interface IMap2DTileDataProvider {
getTileIdAt(col: number, row: number): number;
getTileIdsWithin(left: number, top: number, width: number, height: number, target?: Uint32Array): Uint32Array;
}
export interface IMap2DTileCoords {
id: string;
x: number;
y: number;
view: AABB2;
}
export interface IMapTileFactory<T = unknown> {
addToNode(node: Object3D): void;
removeFromNode(node: Object3D): void;
createTile(tileCoords: IMap2DTileCoords): T | undefined;
updateTile(tile: T, tileCoords: IMap2DTileCoords): void;
destroyTile(tile: T): void;
update(): void;
}
export interface IMap2DTileRenderer {
node: Object3D;
beginUpdatingTiles(position: Vector3): void;
addTile(tileCoords: IMap2DTileCoords): void;
reuseTile(tileCoords: IMap2DTileCoords): void;
removeTile(tileCoords: IMap2DTileCoords): void;
endUpdatingTiles(): void;
clearTiles(): void;
dispose(): void;
}
export interface IMap2DVisibleTiles {
tiles: IMap2DTileCoords[];
offset?: Vector2;
translate?: Vector3;
removeTiles?: IMap2DTileCoords[];
reuseTiles?: IMap2DTileCoords[];
createTiles?: IMap2DTileCoords[];
}
export interface IMap2DVisibilitor {
computeVisibleTiles(previousTiles: IMap2DTileCoords[], centerPoint: [number, number], tileCoords: Map2DTileCoordsUtil, matrixWorld: Matrix4): IMap2DVisibleTiles | undefined;
}
export interface IMap2DVisibilitorHelpers {
add(scene: Object3D): void;
remove(scene: Object3D): void;
update(): void;
show: boolean;
}
//# sourceMappingURL=types.d.ts.map