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
TypeScript
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;
};
}
}