topical media & game development

talk show tell print

student-ar-org-papervision3d-core-geom-Pixels.ax

student-ar-org-papervision3d-core-geom-Pixels.ax [swf] [flash] flex


  package org.papervision3d.core.geom
  {
          
@Author Andy Zupko

  
          
          import org.papervision3d.core.geom.renderables.Pixel3D;
          import org.papervision3d.core.render.command.Render@ax-student-ar-org-papervision3d-core-geom-Pixels;
          import org.papervision3d.core.render.data.RenderSessionData;
          import org.papervision3d.objects.DisplayObject3D;
          import org.papervision3d.view.layer.BitmapEffectLayer;
          
          public class @ax-student-ar-org-papervision3d-core-geom-Pixels extends Vertices3D
          {
                  
                  private var vertices:Array;
                  private var renderCommand:Render@ax-student-ar-org-papervision3d-core-geom-Pixels;
                  public var pixels:Array;
                  public var layer:BitmapEffectLayer;
                  public var screenDepth:int;
                  public var sort:Boolean;
          
                  
Vertexpixels A simple Particle Renderer for Papervision3D. Renders added pixels to a given container using Flash's drawing API.

  
                  public function @ax-student-ar-org-papervision3d-core-geom-Pixels(effectLayer:BitmapEffectLayer, name:String = "pixels3d")
                  {
                          this.layer = effectLayer;
                          this.vertices = new Array();
                          this.pixels = new Array();
                          super(vertices, name);
                          this.screenDepth = 0;
                          this.sort = false;
                          this.renderCommand = new Render@ax-student-ar-org-papervision3d-core-geom-Pixels(this);
                  }
                  
                  
Project

  
                  public override function project( parent :DisplayObject3D, renderSessionData:RenderSessionData ):Number
                  {
                          super.project(parent,renderSessionData);                
                          
                          if(this.sort){
                                  
                                  pixels.sort(sortOnDepth);
                          }
                          
                          renderSessionData.renderer.addToRenderList(this.renderCommand);
                          return 1;
                  }
                  
                  
                  
                  
addParticle(particle); @param particle partical to be added and rendered by to this Vertexpixels Object.

  
                  public function addPixel3D(pixel:Pixel3D):void
                  {
                          pixel.instance = this;
                          pixels.push(pixel);
                          vertices.push(pixel.vertex3D);
                  }
                  
                  
removeParticle(pixel); @param pixel partical to be removed from this Vertexpixels Object.

  
                  public function removePixel3D(pixel:Pixel3D):void
                  {
                          pixel.instance = null;
                          pixels.splice(pixels.indexOf(pixel,1));
                          vertices.splice(vertices.indexOf(pixel.vertex3D,1));
                  }
                  
                  
removeAllpixels() removes all pixels in this Vertexpixels Object.

  
                  public function removeAllpixels():void
                  {
                          pixels = new Array();
                          vertices = new Array();
                          geometry.vertices = vertices;
                  }
                  
                  private function sortOnDepth(a:Pixel3D, b:Pixel3D):Number {
                                     
                      if(a.vertex3D.vertex3DInstance.z > b.vertex3D.vertex3DInstance.z) {
                          return 1;
                      } else if(a.vertex3D.vertex3DInstance.z < b.vertex3D.vertex3DInstance.z) {
                          return -1;
                      } else  {
                          return 0;
                      }
                  }
                  
                  
                  
          }
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.