Sourcetype recipe = {count : int;speed : float * float;direction : float;spread : float;life : float * float;size : float * float;spin : float;gravity : float;drag : float;
} Sourcetype 'a particle = {x : float;y : float;vx : float;vy : float;angle : float;spin : float;size : float;age : float;life : float;gravity : float;drag : float;data : 'a;
} Sourceval empty : ?cap:int -> seed:int -> unit -> 'a t Sourceval burst : recipe -> data:(float -> 'a) -> float -> float -> 'a t -> 'a t Sourceval step : dt:float -> 'a t -> 'a t