UNPKG

@fluritheme/fluri

Version:

Interactive snowfall for websites: DOM-aware snow accumulation, mouse interactions, snow physics, Canvas 2D rendering, and Christmas effects.

65 lines • 2.29 kB
import type { PluginContext, Surface, TriggerOptions, TriggerType, Vec2 } from '../types.js'; export interface PointerInput extends Vec2 { vx: number; vy: number; pressed: boolean; shiftKey: boolean; kind: 'down' | 'move' | 'up' | 'cancel'; time: number; } export interface Snowball extends Vec2 { id: number; vx: number; vy: number; radius: number; mass: number; state: 'gathering' | 'airborne' | 'resting'; support?: Surface; localX: number; } export declare const radiusFromMass: (mass: number) => number; export declare const massFromRadius: (radius: number) => number; /** Removes real stored mass, never visual depth. Used by gestures and the plough. */ export declare function gatherMass(surface: Surface, localX: number, radius: number, requested: number): number; /** Recognizes coherent loops with bounded history; ordinary straight cursor motion cannot activate it. */ export declare class CircleRecognizer { private points; reset(): void; sample(x: number, y: number, time: number): boolean; } export declare class Actors { private readonly context; readonly balls: Snowball[]; private snowmen; private ploughs; private active; private nextId; private circle; private lastPointer; constructor(context: PluginContext); get gathering(): boolean; get counts(): { snowballs: number; snowmen: number; ploughs: number; }; get snowballCount(): number; get snowmanCount(): number; private selected; private createBall; trigger(type: TriggerType, options?: TriggerOptions): void; pointer(input: PointerInput): void; private release; update(dt: number, time: number): void; private fragment; private spill; private collideBalls; private assemble; render(ctx: CanvasRenderingContext2D, time: number): void; clear(): void; destroy(): void; } export declare function drawSnowball(ctx: CanvasRenderingContext2D, x: number, y: number, radius: number): void; /** Original tiny vector vehicle; no bitmap downloads or third-party artwork. */ export declare function drawPlough(ctx: CanvasRenderingContext2D, style?: 'classic' | 'minimal' | 'festive'): void; //# sourceMappingURL=Actors.d.ts.map