import * as THREE from 'three'; import { BaseScatterSystem, BaseScatterConfig, ChunkData } from '../core'; /** * Configuration for heightmap-based scatter */ export interface HeightmapScatterConfig extends BaseScatterConfig { /** World size in units */ worldSize: number; /** World size on Z axis (defaults to worldSize for square worlds) */ worldSizeZ?: number; /** World origin (min X, min Z). Defaults to centered world: (-worldSize/2, -worldSize/2) */ worldOrigin?: THREE.Vector2; /** URL to height map image */ heightMapUrl?: string; /** Direct height map data (RGBA) */ heightMapData?: Uint8Array | Uint8ClampedArray; /** Height map dimensions when using direct data */ heightMapSize?: [number, number]; /** Height multiplier */ heightMapScale?: number; /** URL to mask image (white = place, black = no place) */ maskMapUrl?: string; /** Direct mask map data (RGBA) */ maskMapData?: Uint8Array | Uint8ClampedArray; /** Mask map dimensions when using direct data */ maskMapSize?: [number, number]; /** Maximum slope in degrees for placement */ slopeLimit?: number; /** * When the scatter group is parented under transformed objects, instance matrices are expressed in * local space while placement uses world XZ + sampled height. Premultiply each composed instance * matrix by this inverse (typically `parent.matrixWorld.clone().invert()`) so instances align with * the sampled world surface. */ scatterSpaceInverse?: THREE.Matrix4; } /** * Scatter system using heightmap textures for terrain-based distribution */ export declare class HeightmapScatterSystem extends BaseScatterSystem { private heightMap; private heightMapData; private heightMapWidth; private heightMapHeight; private maskMap; private maskMapData; private maskMapWidth; private maskMapHeight; private worldSizeX; private worldSizeZ; private worldOrigin; private heightMapScale; private slopeLimit; private scatterSpaceInverse; constructor(config: HeightmapScatterConfig); protected initializeDistribution(): Promise; protected updateChunks(): void; protected populateChunk(chunk: ChunkData, centerX: number, centerZ: number): void; private extractTextureData; private resolveDataDimensions; private worldToUV; private sampleHeight; private sampleNormal; private calculateSlope; private checkMask; } //# sourceMappingURL=HeightmapScatterSystem.d.ts.map