UNPKG

wawa-vfx

Version:

A simple and easy-to-use library for creating visual effects in React Three Fiber.

87 lines (73 loc) 3.15 kB
import { ForwardRefExoticComponent } from 'react'; import { RefAttributes } from 'react'; import * as THREE from 'three'; export declare enum AppearanceMode { Square = 0, Circular = 1 } declare type EaseFunction = "easeLinear" | "easeInPower1" | "easeOutPower1" | "easeInOutPower1" | "easeInPower2" | "easeOutPower2" | "easeInOutPower2" | "easeInPower3" | "easeOutPower3" | "easeInOutPower3" | "easeInPower4" | "easeOutPower4" | "easeInOutPower4" | "easeInQuad" | "easeOutQuad" | "easeInOutQuad" | "easeInCubic" | "easeOutCubic" | "easeInOutCubic" | "easeInQuart" | "easeOutQuart" | "easeInOutQuart" | "easeInQuint" | "easeOutQuint" | "easeInOutQuint" | "easeInSine" | "easeOutSine" | "easeInOutSine" | "easeInExpo" | "easeOutExpo" | "easeInOutExpo" | "easeInCirc" | "easeOutCirc" | "easeInOutCirc" | "easeInElastic" | "easeOutElastic" | "easeInOutElastic" | "easeInBack" | "easeOutBack" | "easeInOutBack" | "easeInBounce" | "easeOutBounce" | "easeInOutBounce"; export declare enum RenderMode { StretchBillboard = "stretchBillboard", Billboard = "billboard", Mesh = "mesh" } export declare const VFXEmitter: ForwardRefExoticComponent<VFXEmitterProps & RefAttributes<VFXEmitterRef>>; declare interface VFXEmitterProps { debug?: boolean; settings: VFXEmitterSettings; emitter: string; localDirection?: boolean; autoStart?: boolean; } declare interface VFXEmitterRef extends THREE.Object3D { startEmitting: (reset?: boolean) => void; stopEmitting: () => void; emitAtPos: (position: THREE.Vector3 | null, reset?: boolean) => void; } declare interface VFXEmitterSettings { duration?: number; nbParticles?: number; spawnMode?: "time" | "burst"; loop?: boolean; delay?: number; colorStart?: string[]; colorEnd?: string[]; particlesLifetime?: [number, number]; speed?: [number, number]; size?: [number, number]; startPositionMin?: [number, number, number]; startPositionMax?: [number, number, number]; startRotationMin?: [number, number, number]; startRotationMax?: [number, number, number]; rotationSpeedMin?: [number, number, number]; rotationSpeedMax?: [number, number, number]; directionMin?: [number, number, number]; directionMax?: [number, number, number]; } export declare const VFXParticles: React.FC<VFXParticlesProps>; declare interface VFXParticlesProps { name: string; settings?: VFXParticlesSettings; alphaMap?: THREE.Texture; geometry?: React.ReactElement; } declare interface VFXParticlesSettings { nbParticles?: number; intensity?: number; renderMode?: RenderMode; stretchScale?: number; fadeSize?: [number, number]; fadeAlpha?: [number, number]; gravity?: [number, number, number]; frustumCulled?: boolean; appearance?: AppearanceMode; easeFunction?: EaseFunction; } export { } declare module "@react-three/fiber" { interface ThreeElements { particlesMaterial: ThreeElements["shaderMaterial"] & { alphaMap?: THREE.Texture; }; } }