/** * TerrainSystem.ts * * Heightmap-based terrain with procedural generation, * LOD meshing, and physics collision support. * * @module environment */ import { IVector3 } from '../physics/PhysicsTypes'; export interface TerrainConfig { id: string; width: number; depth: number; resolution: number; maxHeight: number; position: IVector3; } export interface TerrainLayer { id: string; texture: string; tiling: number; minHeight: number; maxHeight: number; minSlope: number; maxSlope: number; } export interface TerrainVertex { position: IVector3; normal: IVector3; uv: { u: number; v: number; }; height: number; } export interface TerrainChunk { x: number; z: number; lod: number; vertices: TerrainVertex[]; indices: number[]; } export interface TerrainCollider { getHeightAt(worldX: number, worldZ: number): number; getNormalAt(worldX: number, worldZ: number): IVector3; } export declare class TerrainSystem { private terrains; /** * Create a terrain with a procedurally generated heightmap. */ createTerrain(config: TerrainConfig, options?: { octaves?: number; lacunarity?: number; gain?: number; seed?: number; scale?: number; }): string; /** * Create terrain from an existing heightmap array. */ createFromHeightmap(config: TerrainConfig, heightmap: Float32Array): string; /** * Get height at a world position (bilinear interpolation). */ getHeightAt(terrainId: string, worldX: number, worldZ: number): number; /** * Get surface normal at a world position (finite differences). */ getNormalAt(terrainId: string, worldX: number, worldZ: number): IVector3; /** * Set height at a specific grid position. */ setHeightAt(terrainId: string, gridX: number, gridZ: number, height: number): void; /** * Get the collider interface for a terrain. */ getCollider(terrainId: string): TerrainCollider | null; setLayers(terrainId: string, layers: TerrainLayer[]): void; getLayers(terrainId: string): TerrainLayer[]; getTerrain(id: string): { config: TerrainConfig; heightmap: Float32Array; layers: TerrainLayer[]; chunks: TerrainChunk[]; } | undefined; getTerrainIds(): string[]; removeTerrain(id: string): boolean; getChunks(terrainId: string): TerrainChunk[]; private generateChunks; private getDefaultLayers; } //# sourceMappingURL=TerrainSystem.d.ts.map