/** * Merged hex-tile geometry — the shared base used by both the raycast * proxy mesh (`buildPlanetMesh`) and the interactive hex mesh * (`buildInteractiveMesh`). Kept internal to the hex-mesh cluster so * external consumers only see the finished meshes. */ import * as THREE from 'three'; import type { TerrainLevel } from '../types/terrain.types'; import type { BodySimulation } from '../../sim/BodySimulation'; /** Vertex range in the merged buffer for a single tile. */ export interface TileVertexRange { start: number; count: number; } /** Aggregate returned by {@link buildMergedGeometry} — geometry + hover lookups. */ export interface MergedGeometry { geometry: THREE.BufferGeometry; faceToTileId: number[]; tileVertexRange: Map; } /** * Builds the merged hex geometry used by the focused body renderer. * * Every tile is extruded into a prism (top cap + walls); when the body * carries a liquid surface, the walls extend down to the deepest palette * band so the shore seals without gap. Vertex buffers (color, roughness, * metalness, land-flag, tile center, tile radius) are pre-baked so the * downstream shader can read them directly. * * The output geometry is a single merged `BufferGeometry`; shaders can * still index per-tile vertex ranges via the returned `tileVertexRange` * map (e.g. to repaint a tile's colour on hover without touching the * whole buffer). */ export declare function buildMergedGeometry(sim: BodySimulation, levels: TerrainLevel[]): MergedGeometry; //# sourceMappingURL=hexMergedGeometry.d.ts.map