UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

105 lines (104 loc) 3.84 kB
import { vec3 } from 'gl-matrix'; import War3Map from '../../../parsers/w3x/map'; import Corner from '../../../parsers/w3x/w3e/corner'; import War3MapW3u from '../../../parsers/w3x/w3u/file'; import War3MapW3d from '../../../parsers/w3x/w3d/file'; import ModificationTable from '../../../parsers/w3x/w3u/modificationtable'; import { MappedData, MappedDataRow } from '../../../utils/mappeddata'; import Scene from '../../scene'; import { PathSolver } from '../../handlerresource'; import Texture from '../../texture'; import TerrainModel from './terrainmodel'; import Unit from './unit'; import Doodad from './doodad'; import TerrainDoodad from './terraindoodad'; import War3MapViewer from './viewer'; import { Resource } from '../../resource'; export default class War3MapViewerMap { viewer: War3MapViewer; map: War3Map; pathSolver: PathSolver; buildVersion: number; solverParams: { tileset: string; reforged?: boolean; hd?: boolean; }; worldScene: Scene; waterIndex: number; waterIncreasePerFrame: number; waterHeightOffset: number; waterTextures: Texture[]; maxDeepColor: Float32Array; minDeepColor: Float32Array; maxShallowColor: Float32Array; minShallowColor: Float32Array; anyReady: boolean; terrainReady: boolean; cliffsReady: boolean; doodads: Doodad[]; terrainDoodads: TerrainDoodad[]; doodadsReady: boolean; units: Unit[]; unitsReady: boolean; tilesetTextures: Texture[]; cliffTextures: Texture[]; cliffModels: TerrainModel[]; corners: Corner[][]; centerOffset: Float32Array; mapSize: Int32Array; tilesets: MappedDataRow[]; blightTextureIndex: number; cliffTilesets: MappedDataRow[]; columns: number; rows: number; vertexBuffer: WebGLBuffer | null; faceBuffer: WebGLBuffer | null; instanceBuffer: WebGLBuffer | null; textureBuffer: WebGLBuffer | null; variationBuffer: WebGLBuffer | null; waterBuffer: WebGLBuffer | null; heightMap: WebGLTexture | null; waterHeightMap: WebGLTexture | null; cliffHeightMap: WebGLTexture | null; constructor(viewer: War3MapViewer, buffer: ArrayBuffer | Uint8Array); die(): void; load(src: unknown): Promise<Resource | undefined>; loadMapInformation(): void; loadTerrainCliffsAndWater(): Promise<void>; loadDoodadsAndDestructibles(): void; loadUnitsAndItems(): void; /** * Update the map. */ update(): void; /** * Render the map. */ render(): void; renderGround(): void; renderWater(): void; renderCliffs(): void; cliffFileName(bottomLeftLayer: number, bottomRightLayer: number, topLeftLayer: number, topRightLayer: number, base: number): string; getVariation(groundTexture: number, variation: number): number; /** * Is the corner at the given column and row a cliff? */ isCliff(column: number, row: number): boolean; /** * Is the tile at the given column and row water? */ isWater(column: number, row: number): number; /** * Given a cliff index, get its ground texture index. * This is an index into the tilset textures. */ cliffGroundIndex(whichCliff: number): number; /** * Get the ground texture of a corner, whether it's normal ground, a cliff, or a blighted corner. */ cornerTexture(column: number, row: number): number; applyModificationFile(dataMap: MappedData, metadataMap: MappedData, modificationFile: War3MapW3u | War3MapW3d | undefined): void; applyModificationTable(dataMap: MappedData, metadataMap: MappedData, modificationTable: ModificationTable): void; groundNormal(out: vec3, x: number, y: number): vec3; }