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
TypeScript
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;
}