/** * Parallax Forest Composer * * Orchestrates multiple depth layers of trees with parallax scrolling, * atmospheric fog, and natural tree distribution. * * Creates immersive depth through: * - 4-6 depth layers from far to near * - Size/opacity scaling with depth * - Parallax movement rates * - Atmospheric fog integration */ import { type GeneratedTree } from "../trees/SpaceColonizationTree.js"; import { type GeneratedConifer } from "../trees/StochasticConiferTree.js"; import { type GeneratedBareTree } from "../trees/BareTree.js"; export type TreeType = "deciduous" | "conifer" | "bare"; export interface ForestTreeInstance { id: string; x: number; baseY: number; scale: number; depth: number; layerIndex: number; treeType: TreeType; subType: string; generatedData: GeneratedTree | GeneratedConifer | GeneratedBareTree; opacity: number; parallaxOffset: number; } export interface ForestLayer { index: number; depth: number; treeCount: number; trees: ForestTreeInstance[]; parallaxFactor: number; scale: number; opacity: number; yOffset: number; fogColor: string; fogOpacity: number; } export interface ParallaxForestConfig { width: number; height: number; layerCount: number; treesPerLayer: number[]; layerDepths: number[]; treeSpacing: number; heightVariation: number; groundLineY: number; coniferRatio: number; deciduousRatio: number; bareRatio: number; parallaxRange: number; parallaxSmoothing: number; fogNearColor: string; fogFarColor: string; fogDensity: number; nearScale: number; farScale: number; } export declare class ParallaxForestComposer { private config; private noise; private layers; private treeIdCounter; private deciduousGenerator; private coniferGenerators; private bareGenerators; constructor(config?: Partial, seed?: number); /** * Generate all forest layers and trees */ generate(): ForestLayer[]; private generateLayer; private generateTreesForLayer; private generateTree; private distributeTreePositions; /** * Update parallax positions based on input value * @param parallaxValue -1 to 1, typically from mouse/tilt */ updateParallax(parallaxValue: number): void; /** * Get all layers in order (far to near) */ getLayers(): ForestLayer[]; /** * Get all trees across all layers, sorted for rendering */ getAllTreesSorted(): ForestTreeInstance[]; /** * Regenerate trees in a specific layer */ regenerateLayer(layerIndex: number): void; /** * Update canvas dimensions and regenerate */ resize(width: number, height: number): void; /** * Get fog properties for a specific depth */ getFogAtDepth(depth: number): { color: string; opacity: number; }; private lerpColor; private hexToRgb; getConfig(): ParallaxForestConfig; getStats(): { layerCount: number; totalTrees: number; treesByType: Record; }; } //# sourceMappingURL=ParallaxForestComposer.d.ts.map