Flint Pixels 2 – Random Drift and Rotate Emitter

Monday, December 22nd, 2008 | examples


source

package
{
	import flash.events.Event;
	import flash.filters.BlurFilter;
	import flash.filters.ColorMatrixFilter;
 
	import org.flintparticles.common.actions.Age;
	import org.flintparticles.common.counters.Steady;
	import org.flintparticles.common.initializers.ColorInit;
	import org.flintparticles.common.initializers.Lifetime;
	import org.flintparticles.threeD.actions.Move;
	import org.flintparticles.threeD.actions.RandomDrift;
	import org.flintparticles.threeD.activities.RotateEmitter;
	import org.flintparticles.threeD.emitters.Emitter3D;
	import org.flintparticles.threeD.geom.Vector3D;
	import org.flintparticles.threeD.initializers.Velocity;
	import org.flintparticles.threeD.papervision3d.PV3DPixelRenderer;
	import org.flintparticles.threeD.zones.DiscZone;
	import org.papervision3d.core.effects.BitmapLayerEffect;
	import org.papervision3d.core.geom.Pixels;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.view.layer.BitmapEffectLayer;	
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class FlintPixels2 extends BasicView
	{
		private var emitter:Emitter3D;
		private var emitter2:Emitter3D;
		private var flintRenderer:PV3DPixelRenderer;
		private var bitmapEffectLayer:BitmapEffectLayer;
		private var pixels:Pixels;
 
		public function FlintPixels2()
		{
			camera.z = -300;
 
			setupPixels();
			setupEmitter();
			setupEmitter2();
			setupFlintRenderer();
 
			emitter.start();
			emitter2.start();
 
			startRendering();
		}
 
		private function setupPixels():void
		{
			bitmapEffectLayer = new BitmapEffectLayer(viewport);
			viewport.containerSprite.addLayer( bitmapEffectLayer );
 
			pixels = new Pixels(bitmapEffectLayer);
			bitmapEffectLayer.addDisplayObject3D(pixels);
			scene.addChild(pixels);
 
			bitmapEffectLayer.addEffect(new BitmapLayerEffect(new BlurFilter(2, 2, 1)));
			//@see http://livedocs.adobe.com/flex/3/langref/flash/filters/ColorMatrixFilter.html
			bitmapEffectLayer.addEffect(new BitmapLayerEffect(new ColorMatrixFilter([1.09,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0])));
		}
 
		private function setupEmitter():void
		{
			emitter = new Emitter3D();
			emitter.counter = new Steady(500);
 
			emitter.position.x = -150;
 
			emitter.addInitializer(new ColorInit(0xffcccc00, 0xffffffff));
			emitter.addInitializer(new Velocity(new DiscZone(new Vector3D(340, 0, 0), new Vector3D(0, 1, 0), 100, 100)));
			emitter.addInitializer(new Lifetime(4));
 
			emitter.addAction(new Move());
			emitter.addAction(new Age());
			emitter.addAction(new RandomDrift(3000, 3000, 3000));
 
			emitter.addActivity(new RotateEmitter(new Vector3D(.1, .3, 0)));
		}
 
		private function setupEmitter2():void
		{
			emitter2 = new Emitter3D();
			emitter2.counter = new Steady(500);
 
			emitter2.position.x = 150;
 
			emitter2.addInitializer(new ColorInit(0xffcccc00, 0xffffffff));
			emitter2.addInitializer(new Velocity(new DiscZone(new Vector3D(-340, 0, 0), new Vector3D(0, 1, 0), 100, 100)));
			emitter2.addInitializer(new Lifetime(4));
 
			emitter2.addAction(new Move());
			emitter2.addAction(new Age());
			emitter2.addAction(new RandomDrift(3000, 3000, 3000));
 
			emitter2.addActivity(new RotateEmitter(new Vector3D(.1, -.3, 0)));
		}
 
		private function setupFlintRenderer():void
		{
			flintRenderer = new PV3DPixelRenderer(pixels);
			flintRenderer.addEmitter(emitter);
			flintRenderer.addEmitter(emitter2);
		}
 
		override protected function onRenderTick(event:Event = null):void
		{
			renderer.renderScene(scene, camera, viewport);
		}
	}
}

Tags:

  • TK
    That's pretty freakin sweet.
  • supernova!
blog comments powered by Disqus

Search

Recommended Books

Speaking at FITC Toronto

 

December 2008
M T W T F S S
« Nov   Jan »
1234567
891011121314
15161718192021
22232425262728
293031  

Preferred Video Tutorial Resolution

  • 1024x768 (53%, 85 Votes)
  • 1280x1024 (15%, 24 Votes)
  • 1920x1080 (15%, 24 Votes)
  • 800x600 (13%, 20 Votes)
  • 480x320 (4%, 6 Votes)
  • 640x480 (0%, 2 Votes)

Total Voters: 160

Loading ... Loading ...