UNPKG

raindrop-fx

Version:
100 lines 3.02 kB
import { Rect } from "@sardinefish/zogra-renderer"; import { RainDrop } from "./raindrop"; import { Spawner } from "./spawner"; import { Time } from "./utils"; export interface SimulatorOptions { viewport: Rect; /** * Time range between two raindrop spwan. */ spawnInterval: [number, number]; /** * Random size range when spawn a new raindrop */ spawnSize: [number, number]; /** * Maximal amount of spawned raindrops. * Recommend less than 2000 */ spawnLimit: number; /** * Recommend in range (0..1), other value should be ok. */ slipRate: number; /** * Describe how often a raindrop change its motion state */ motionInterval: [number, number]; /** * Random velociy x relative to velocity y. Recommend in range (0..0.1) */ xShifting: [number, number]; /** * Relative size for collision check. Recommend in range (0.6..1.2) */ colliderSize: number; /** * Mass density of the slipping trail raindrop. * Recommend in range (0.1..0.3) * * A large value cause a raindrop quickly lose its size during slipping. */ trailDropDensity: number; /** * Random size range of slipping trail drop. Recommend in range (0.3..0.5) */ trailDropSize: [number, number]; /** * Random distance range between two slipping trail drop. Recommend in range (20..40) */ trailDistance: [number, number]; /** * Vertical spread of a new spawned slipping trail drop. Recommend in range (0.4..0.6) */ trailSpread: number; /** * Spread rate when a new spawned raindrop hit the screen. Recommend in range (0.4..0.7) */ initialSpread: number; /** * Spread shrink rate per seconds. Recommend in range (0.01..0.02) */ shrinkRate: number; /** * Spread rate by velocity Y. Recommend in range (0.2..0.4) * * Raindrop with higher fall speed looks more narrow. */ velocitySpread: number; /** * Mass lose per second. Recommend in range (10..30) */ evaporate: number; /** * Gravity acceleration in pixels/s. Recommend 2400 */ gravity: number; } export declare class CollisionGrid extends Array<RainDrop> { /**@deprecated */ push(...item: RainDrop[]): number; add(raindrop: RainDrop): void; delete(raindrop: RainDrop): void; } export declare class RaindropSimulator { options: SimulatorOptions; spawner: Spawner; raindrops: RainDrop[]; grid: CollisionGrid[]; constructor(options: SimulatorOptions); get gridSize(): number; resize(): void; gridAt(gridX: number, gridY: number): CollisionGrid | undefined; gridAtWorldPos(x: number, y: number): CollisionGrid | undefined; worldToGrid(x: number, y: number): [number, number]; add(raindrop: RainDrop): void; update(time: Time): void; raindropUpdate(time: Time): void; collisionUpdate(): void; } //# sourceMappingURL=simulator.d.ts.map