import { Box2, Vector2, Vector3 } from 'three'; import { GroundBlock, PatchBlock, PatchBoundId, GroundBlockData } from '../utils/common_types.js'; import { Biome, BiomeInfluence } from '../procgen/Biome.js'; import { PatchBase, PatchDataContainer, PatchStub } from '../datacontainers/PatchBase.js'; import { WorldModules } from '../factory/WorldModules.js'; import { Heightmap } from '../procgen/Heightmap.js'; import { GroundDataAdapter } from '../datacontainers/BlockDataAdapter.js'; export type PatchBoundingBiomes = Record; export type GroundPatchStub = PatchStub & { valueRange?: { min: number; max: number; }; rawData: Uint32Array; }; export type BlockIteratorRes = IteratorResult; export declare const parseGroundFlags: (rawFlags: number) => { boardMode: boolean; cavern: boolean; }; export declare class GroundPatch extends PatchBase implements PatchDataContainer { biomeInfluence: BiomeInfluence | PatchBoundingBiomes | undefined; rawData: Uint32Array; dataAdapter: GroundDataAdapter; valueRange: { min: number; max: number; }; isEmpty: boolean; constructor(bounds?: Box2, margin?: number); init(bounds: Box2): void; prepare(biome: Biome): void; isTransitionPatch(): boolean; readBlockData(blockIndex: number): GroundBlockData; writeBlockData(blockIndex: number, blockData: GroundBlockData): void; getBlock(inputPos: Vector2 | Vector3, isLocalPos?: boolean): PatchBlock | undefined; setBlock(inputPos: Vector2 | Vector3, blockData: GroundBlockData, isLocalPos?: boolean): void; /** * iteration range as global coords * @param iterBounds * @param includeMargins */ iterBlocksQuery(iterBounds?: Box2, includeMargins?: boolean): Generator; getBlockBiome(blockPos: Vector2): BiomeInfluence; computeGroundBlock: (blockPos: Vector3, { heightmap, biomes }: { heightmap: Heightmap; biomes: Biome; }) => GroundBlockData; /** * whole patch by default * if genBounds specified, only sub rows/cols will be generated */ bake(worldModules: WorldModules, regionBounds?: Box2): void; toStub(): GroundPatchStub; fromStub(patchStub: GroundPatchStub): this; }