package starling.extensions {
import starling.textures.Texture;
import starling.styles.MeshStyle;
import starling.rendering.Painter;
import starling.display.Mesh;
import starling.display.DisplayObject;
import starling.animation.IAnimatable;
import openfl.geom.Rectangle;
import openfl.geom.Point;
/**
 *  Dispatched when emission of particles is finished. 
 * @externs
 */
public class ParticleSystem extends starling.display.Mesh implements starling.animation.IAnimatable {
	public function ParticleSystem(texture:starling.textures.Texture = undefined) {
		super(undefined, undefined, undefined);
	}
	public static const MAX_NUM_PARTICLES:int = 16383;
	/**
	 *  @inheritDoc 
	 */
	override public function dispose():void {}
	/**
	 *  Always returns <code>null</code>. An actual test would be too expensive. 
	 */
	override public function hitTest(localPoint:openfl.geom.Point):starling.display.DisplayObject { return null; }
	/**
	 *  Starts the emitter for a certain time. @default infinite time 
	 */
	public function start(duration:Number = undefined):void {}
	/**
	 *  Stops emitting new particles. Depending on 'clearParticles', the existing particles
	 *         *  will either keep animating until they die or will be removed right away. 
	 */
	public function stop(clearParticles:Boolean = undefined):void {}
	/**
	 *  Removes all currently active particles. 
	 */
	public function clear():void {}
	/**
	 *  Returns an empty rectangle at the particle system's position. Calculating the
	 *         *  actual bounds would be too expensive. 
	 */
	override public function getBounds(targetSpace:starling.display.DisplayObject, resultRect:openfl.geom.Rectangle = undefined):openfl.geom.Rectangle { return null; }
	public function advanceTime(time:Number):void {}
	override public function render(painter:starling.rendering.Painter):void {}
	/**
	 *  Initialize the <code>ParticleSystem</code> with particles distributed randomly
	 *         *  throughout their lifespans. 
	 */
	public function populate(count:int):void {}
	public function get capacity():int { return 0; }
	public function set capacity(value:int):void {}
	public function get isEmitting():Boolean { return false; }
	public function get numParticles():int { return 0; }
	public function get emissionRate():Number { return 0; }
	public function set emissionRate(value:Number):void {}
	public function get emitterX():Number { return 0; }
	public function set emitterX(value:Number):void {}
	public function get emitterY():Number { return 0; }
	public function set emitterY(value:Number):void {}
	public function get blendFactorSource():String { return null; }
	public function set blendFactorSource(value:String):void {}
	public function get blendFactorDestination():String { return null; }
	public function set blendFactorDestination(value:String):void {}
	override public function setStyle(meshStyle:starling.styles.MeshStyle = undefined, mergeWithPredecessor:Boolean = undefined):void {}
	/**
	 *  Indicates if this object will be added to the painter's batch on rendering,
	 *         *  or if it will draw itself right away. Note that this should only be enabled if the
	 *         *  number of particles is reasonably small. 
	 */
	public function get batchable():Boolean { return false; }
	public function set batchable(value:Boolean):void {}
}
}
