topical media & game development
student-ar-org-papervision3d-core-render-project-BasicProjectionPipeline.ax
student-ar-org-papervision3d-core-render-project-BasicProjectionPipeline.ax
[swf]
[flash]
flex
package org.papervision3d.core.render.project {
import org.papervision3d.core.render.data.RenderSessionData;
import org.papervision3d.objects.DisplayObject3D;
public class @ax-student-ar-org-papervision3d-core-render-project-BasicProjectionPipeline extends ProjectionPipeline
{
public function @ax-student-ar-org-papervision3d-core-render-project-BasicProjectionPipeline()
{
super();
init();
}
protected function init():void
{
}
project(renderSessionData:RenderSessionData);
Projects all base objects
returns: void;
override public function project(renderSessionData:RenderSessionData):void
{
// Transform camera
renderSessionData.camera.transformView();
//Start looping through all objects in the scene.
var objects:Array = renderSessionData.renderObjects;
var p:DisplayObject3D;
var i:Number = objects.length;
var test:Number;
//The frustum camera requires 4x4 matrices.
if( renderSessionData.camera.useProjectionMatrix ){
for each(p in objects){
//Test if the object is set to visible
if(p.visible){
//If we filter objects per viewport..then....
if(renderSessionData.viewPort.viewportObjectFilter){
//...test if the object should be rendered to this viewport.
test = renderSessionData.viewPort.viewportObjectFilter.testObject(p)
if(test){
// project it.
projectObject(p, renderSessionData, test);
}else{
//...if the object shouldn't be rendered on this viewport
renderSessionData.renderStatistics.filteredObjects++;
}
}else{
//If we don't filter objects.
projectObject(p, renderSessionData, 1);
}
}
}
}else{
for each(p in objects){
//Test if the object is set to visible
if( p.visible){
//If we filter objects per viewport..then....
if(renderSessionData.viewPort.viewportObjectFilter){
test = renderSessionData.viewPort.viewportObjectFilter.testObject(p);
if(test){
// project it.
projectObject(p, renderSessionData, test);
}else{
//The object is filtered.
renderSessionData.renderStatistics.filteredObjects++;
}
}else{
// project it
projectObject(p, renderSessionData, 1);
}
}
}
}
}
protected function projectObject(object:DisplayObject3D, renderSessionData:RenderSessionData, test:Number):void
{
//Collect everything from the object
object.cullTest = test;
object.project(renderSessionData.camera, renderSessionData);
}
}
}
(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.