import { ShaderRegisterElement, ShaderRegisterCache, ShaderRegisterData } from '@awayjs/stage';
import { ShaderBase, AnimationRegisterData, IElements, IAnimationSet, AnimationNodeBase } from '@awayjs/renderer';
import { ParticleCollection } from './data/ParticleCollection';
import { AnimationElements } from './data/AnimationElements';
import { ParticleNodeBase } from './nodes/ParticleNodeBase';
import { AnimationSetBase } from './AnimationSetBase';
/**
* The animation data set used by particle-based animators, containing particle animation data.
*
* @see away.animators.ParticleAnimator
*/
export declare class ParticleAnimationSet extends AnimationSetBase implements IAnimationSet {
/** @private */
_iAnimationRegisterData: AnimationRegisterData;
private _timeNode;
/**
* Property used by particle nodes that require compilers at the end of the shader
*/
static POST_PRIORITY: number;
/**
* Property used by particle nodes that require color compilers
*/
static COLOR_PRIORITY: number;
private _animationElements;
private _particleNodes;
private _localDynamicNodes;
private _localStaticNodes;
private _totalLenOfOneVertex;
hasUVNode: boolean;
needVelocity: boolean;
hasBillboard: boolean;
hasColorMulNode: boolean;
hasColorAddNode: boolean;
/**
* Initialiser function for static particle properties. Needs to reference a with the following format
*
*
* initParticleFunc(prop:ParticleProperties)
* {
* //code for settings local properties
* }
*
*
* Aside from setting any properties required in particle animation nodes using local static properties, the initParticleFunc function
* is required to time node requirements as they may be needed. These properties on the ParticleProperties object can include
* startTime, duration and delay. The use of these properties is determined by the setting
* arguments passed in the constructor of the particle animation set. By default, only the startTime property is required.
*/
initParticleFunc: Function;
/**
* Initialiser function scope for static particle properties
*/
initParticleScope: Object;
/**
* Creates a new ParticleAnimationSet
*
* @param [optional] usesDuration Defines whether the animation set uses the duration data in its static properties to determine how long a particle is visible for. Defaults to false.
* @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime, duration and delay data in its static properties function. Defaults to false. Requires usesDuration to be true.
* @param [optional] usesDelay Defines whether the animation set uses the delay data in its static properties to determine how long a particle is hidden for. Defaults to false. Requires usesLooping to be true.
*/
constructor(usesDuration?: boolean, usesLooping?: boolean, usesDelay?: boolean);
/**
* Returns a vector of the particle animation nodes contained within the set.
*/
get particleNodes(): Array;
/**
* @inheritDoc
*/
addAnimation(node: AnimationNodeBase): void;
/**
* @inheritDoc
*/
getAGALVertexCode(shader: ShaderBase, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
/**
* @inheritDoc
*/
getAGALUVCode(shader: ShaderBase, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
/**
* @inheritDoc
*/
getAGALFragmentCode(shader: ShaderBase, registerCache: ShaderRegisterCache, shadedTarget: ShaderRegisterElement): string;
/**
* @inheritDoc
*/
doneAGALCode(shader: ShaderBase): void;
/**
* @inheritDoc
*/
get usesCPU(): boolean;
/**
* @inheritDoc
*/
cancelGPUCompatibility(): void;
dispose(): void;
getAnimationElements(particleCollection: ParticleCollection, elements: IElements): AnimationElements;
/** @private */
_iGenerateAnimationElements(particleCollection: ParticleCollection): void;
}
//# sourceMappingURL=ParticleAnimationSet.d.ts.map