196 lines
6.1 KiB
TypeScript
196 lines
6.1 KiB
TypeScript
// Typings for pixi-particles 2.1.9, requires Pixi.js typings
|
|
declare namespace PIXI.particles {
|
|
type TexSrc = string|PIXI.Texture;
|
|
|
|
export interface ParticleConstructor {
|
|
new (emitter:Emitter):Particle;
|
|
}
|
|
|
|
export interface AnimatedParticleArt {
|
|
textures:(TexSrc|{count:number, texture:TexSrc})[];
|
|
framerate:number|"matchLife";
|
|
loop?:boolean;
|
|
}
|
|
|
|
export interface ParsedAnimatedParticleArt {
|
|
textures:PIXI.Texture[];
|
|
framerate:number;
|
|
elapsed:number;
|
|
loop:boolean;
|
|
}
|
|
|
|
export class AnimatedParticle extends Particle {
|
|
private textures:PIXI.Texture[];
|
|
private duration:number;
|
|
private framerate:number;
|
|
private elapsed:number;
|
|
private loop:boolean;
|
|
|
|
public static parseArt(art:AnimatedParticleArt[]):ParsedAnimatedParticleArt[];
|
|
|
|
public applyArt(art:ParsedAnimatedParticleArt):void;
|
|
}
|
|
|
|
export class Emitter {
|
|
private _particleConstructor:new (emitter:Emitter)=>Particle;
|
|
private _frequency:number;
|
|
private _spawnFunc:(p:Particle, emitPosX:number, emitPosY:number, i:number)=>void;
|
|
private _prevEmitterPos:PIXI.Point;
|
|
private _prevPosIsValid:boolean;
|
|
private _posChanged:boolean;
|
|
private _parentIsPC:boolean;
|
|
private _parent:PIXI.Container;
|
|
private _emit:boolean;
|
|
private _spawnTimer:number;
|
|
private _emitterLife:number;
|
|
private _activeParticlesFirst:Particle;
|
|
private _activeParticlesLast:Particle;
|
|
private _poolFirst:Particle;
|
|
private _origConfig:any;
|
|
private _origArt:any;
|
|
private _autoUpdate:boolean;
|
|
private _destroyWhenComplete:boolean;
|
|
private _completeCallback:()=>void;
|
|
|
|
public particleImages:any[];
|
|
public startAlpha:number;
|
|
public endAlpha:number;
|
|
public startSpeed:number;
|
|
public endSpeed:number;
|
|
public minimumSpeedMultiplier:number;
|
|
public acceleration:PIXI.Point;
|
|
public maxSpeed:number;
|
|
public startScale:number;
|
|
public endScale:number;
|
|
public minimumScaleMultiplier:number;
|
|
public startColor:[number, number, number];
|
|
public endColor:[number, number, number];
|
|
public minLifetime:number;
|
|
public maxLifetime:number;
|
|
public minStartRotation:number;
|
|
public maxStartRotation:number;
|
|
public noRotation:boolean;
|
|
public minRotationSpeed:number;
|
|
public maxRotationSpeed:number;
|
|
public particleBlendMode:number;
|
|
public customEase:(time:number)=>number;
|
|
public extraData:any;
|
|
public maxParticles:number;
|
|
public emitterLifetime:number;
|
|
public readonly spawnPos:PIXI.Point;
|
|
public readonly spawnType:"point"|"rectangle"|"circle"|"burst"|"ring";
|
|
public spawnRect:PIXI.Rectangle;
|
|
public spawnCircle:PIXI.Circle;
|
|
public particlesPerWave:number;
|
|
public particleSpacing:number;
|
|
public angleStart:number;
|
|
public readonly rotation:number;
|
|
public readonly ownerPos:PIXI.Point;
|
|
public addAtBack:boolean;
|
|
public readonly particleCount:number;
|
|
public frequency:number;
|
|
public particleConstructor:ParticleConstructor;
|
|
public parent:PIXI.Container;
|
|
public emit:boolean;
|
|
public autoUpdate:boolean;
|
|
|
|
constructor(particleParent:PIXI.Container, particleImages:any, config:any);
|
|
|
|
private recycle(p:Particle):void;
|
|
private _spawnPoint(p:Particle, emitPosX:number, emitPosY:number, i:number):void;
|
|
private _spawnRect(p:Particle, emitPosX:number, emitPosY:number, i:number):void;
|
|
private _spawnCircle(p:Particle, emitPosX:number, emitPosY:number, i:number):void;
|
|
private _spawnRing(p:Particle, emitPosX:number, emitPosY:number, i:number):void;
|
|
private _spawnBurst(p:Particle, emitPosX:number, emitPosY:number, i:number):void;
|
|
|
|
public init(art:any, config:any):void;
|
|
public rotate(newRot:number):void;
|
|
public updateSpawnPos(x:number, y:number):void;
|
|
public updateOwnerPos(x:number, y:number):void;
|
|
public resetPositionTracking():void;
|
|
public update(delta:number):void;
|
|
public playOnceAndDestroy(callback?:()=>void):void;
|
|
public playOnce(callback?:()=>void):void;
|
|
public cleanup():void;
|
|
public destroy():void;
|
|
}
|
|
|
|
export class Particle extends PIXI.Sprite {
|
|
private _sR:number;
|
|
private _sG:number;
|
|
private _sB:number;
|
|
private _eR:number;
|
|
private _eG:number;
|
|
private _eB:number;
|
|
private _doAlpha:boolean;
|
|
private _doScale:boolean;
|
|
private _doSpeed:boolean;
|
|
private _doAcceleration:boolean;
|
|
private _doColor:boolean;
|
|
private _doNormalMovement:boolean;
|
|
private _oneOverLife:number;
|
|
private next:Particle;
|
|
private prev:Particle;
|
|
|
|
public emitter:Emitter;
|
|
public velocity:PIXI.Point;
|
|
public maxLife:number;
|
|
public age:number;
|
|
public ease:(time:number)=>number;
|
|
public extraData:any;
|
|
public startAlpha:number;
|
|
public endAlpha:number;
|
|
public startSpeed:number;
|
|
public endSpeed:number;
|
|
public acceleration:PIXI.Point;
|
|
public maxSpeed:number;
|
|
public startScale:number;
|
|
public endScale:number;
|
|
public startColor:number[];
|
|
public endColor:number[];
|
|
|
|
/** Note that for Particle, the parameter is an array of strings or PIXI.Textures, and an array of Textures is returned. */
|
|
public static parseArt(art:any):any;
|
|
public static parseData(data:any):any;
|
|
|
|
constructor(emitter:Emitter);
|
|
|
|
protected Particle_init():void;
|
|
protected Particle_update(delta:number):number;
|
|
|
|
public init():void;
|
|
/** Note that for Particle, the parameter is of type PIXI.Texture */
|
|
public applyArt(art:any):void;
|
|
public update(delta:number):number;
|
|
public kill():void;
|
|
public destroy():void;
|
|
}
|
|
|
|
export interface EaseSegment {
|
|
cp:number;
|
|
s:number;
|
|
e:number;
|
|
}
|
|
|
|
export class ParticleUtils {
|
|
public static verbose:boolean;
|
|
public static rotatePoint(angle:number, p:PIXI.Point):void;
|
|
public static combineRGBComponents(r:number, g:number, b:number):number;
|
|
public static normalize(p:PIXI.Point):void;
|
|
public static scaleBy(p:PIXI.Point, value:number):void;
|
|
public static length(p:PIXI.Point):number;
|
|
public static hexToRGB(color:string, output?:[number, number, number]):[number, number, number];
|
|
public static generateEase(segments:EaseSegment[]):(time:number)=>number;
|
|
public static getBlendMode(name:string):number;
|
|
}
|
|
|
|
export class PathParticle extends Particle {
|
|
public path:(x:number)=>number;
|
|
public initialRotation:number;
|
|
public initialPosition:PIXI.Point;
|
|
public movement:number;
|
|
|
|
public static parseArt(art:TexSrc[]):PIXI.Texture[];
|
|
public static parseData(data:{path:string}):any;
|
|
}
|
|
} |