Section 1
//Blocker (away3d.core.block.Blocker)
package away3d.core.block {
import away3d.core.draw.*;
public class Blocker extends DrawPrimitive {
public function block(_arg1:DrawPrimitive):Boolean{
return (false);
}
}
}//package away3d.core.block
Section 2
//BlockerArray (away3d.core.block.BlockerArray)
package away3d.core.block {
import away3d.core.render.*;
public class BlockerArray implements IBlockerConsumer {
private var clip:Clipping;
private var blockers:Array;
public function BlockerArray(_arg1:Clipping){
this.clip = _arg1;
this.blockers = [];
}
public function blocker(_arg1:Blocker):void{
if (clip.check(_arg1)){
blockers.push(_arg1);
};
}
public function list():Array{
var _local1:Array;
_local1 = this.blockers;
this.blockers = null;
_local1.sortOn("screenZ", Array.NUMERIC);
return (_local1);
}
}
}//package away3d.core.block
Section 3
//IBlockerConsumer (away3d.core.block.IBlockerConsumer)
package away3d.core.block {
public interface IBlockerConsumer {
function blocker(_arg1:Blocker):void;
}
}//package away3d.core.block
Section 4
//IBlockerProvider (away3d.core.block.IBlockerProvider)
package away3d.core.block {
import away3d.core.render.*;
public interface IBlockerProvider {
function blockers(_arg1:Projection, _arg2:IBlockerConsumer):void;
}
}//package away3d.core.block
Section 5
//BitmapParticleSegment (away3d.core.draw.BitmapParticleSegment)
package away3d.core.draw {
import flash.display.*;
import flash.geom.*;
public class BitmapParticleSegment extends DrawPrimitive implements IBitmapPrimitive {
private var mate:Matrix;
private var mats:Matrix;
private var cte:ColorTransform;
public var blendMode:String;// = "normal"
private var cts:ColorTransform;
private var bh2:Number;
private var front:Boolean;// = false
private var _bitmap:BitmapData;
public var scale:Number;// = 1
public var ppe:int;// = 4
private var bw2:Number;
private static var mat:Matrix = new Matrix();
private static var ct:ColorTransform = new ColorTransform();
public function BitmapParticleSegment(){
mats = new Matrix();
mate = new Matrix();
cts = new ColorTransform();
cte = new ColorTransform();
ppe = 4;
scale = 1;
blendMode = "normal";
front = false;
super();
}
public function renderBitmap(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{
var _local4:int;
var _local5:Matrix;
var _local6:Matrix;
var _local7:Number;
_local4 = 0;
if (front){
_local5 = mats;
_local6 = mate;
} else {
_local5 = mate;
_local6 = mats;
};
while (_local4 < ppe) {
_local7 = (_local4 / ppe);
mat.a = ((_local5.a * (1 - _local7)) + (_local6.a * _local7));
mat.b = ((_local5.b * (1 - _local7)) + (_local6.b * _local7));
mat.c = ((_local5.c * (1 - _local7)) + (_local6.c * _local7));
mat.d = ((_local5.d * (1 - _local7)) + (_local6.d * _local7));
mat.tx = ((_local5.tx * (1 - _local7)) + (_local6.tx * _local7));
mat.ty = ((_local5.ty * (1 - _local7)) + (_local6.ty * _local7));
ct.greenMultiplier = (ct.blueMultiplier = (ct.redMultiplier = ((cts.alphaMultiplier * (1 - _local7)) + (cte.alphaMultiplier * _local7))));
mat.translate(_arg2, _arg3);
_arg1.draw(_bitmap, mat, ct, blendMode);
_local4++;
};
}
public function update(_arg1:Vertex2D, _arg2:Vertex2D, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):void{
mats.identity();
mats.translate(-(bw2), -(bh2));
mats.scale((_arg3 * scale), (_arg3 * scale));
mats.rotate(_arg7);
mats.translate(_arg1.x, _arg1.y);
cts.alphaMultiplier = _arg5;
mate.identity();
mate.translate(-(bw2), -(bh2));
mate.scale((_arg4 * scale), (_arg4 * scale));
mate.rotate(_arg7);
mate.translate(_arg2.x, _arg2.y);
cte.alphaMultiplier = _arg6;
if (_arg1.z > _arg2.z){
front = true;
} else {
front = false;
};
screenZ = ((_arg1.z + _arg2.z) / 2);
}
public function set bitmap(_arg1:BitmapData):void{
bw2 = (_arg1.width / 2);
bh2 = (_arg1.height / 2);
_bitmap = _arg1;
}
}
}//package away3d.core.draw
Section 6
//BitmapScaledBitmap (away3d.core.draw.BitmapScaledBitmap)
package away3d.core.draw {
import flash.display.*;
import away3d.core.render.*;
import flash.geom.*;
public class BitmapScaledBitmap extends DrawPrimitive implements IBitmapPrimitive {
public var blendMode:String;// = "normal"
private var bh2:Number;
public var bitmap:BitmapData;
public var scale:Number;
public var mat:Matrix;
public var alpha:Number;// = 1
public var ct:ColorTransform;
public var v:Vertex2D;
private var bw2:Number;
public var rotation:Number;
private static var toRADIANS:Number = 0.0174532925199433;
public function BitmapScaledBitmap(_arg1:BitmapData){
alpha = 1;
blendMode = BlendMode.NORMAL;
super();
this.bitmap = _arg1;
this.ct = new ColorTransform();
this.mat = new Matrix();
}
override public function render(_arg1:RenderSession):void{
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (true);
}
public function update(_arg1:Vertex2D, _arg2:Number):void{
bw2 = (bitmap.width / 2);
bh2 = (bitmap.height / 2);
this.v = _arg1;
this.scale = _arg2;
mat.identity();
mat.translate(-(bw2), -(bh2));
mat.rotate((rotation * toRADIANS));
mat.scale(_arg2, _arg2);
mat.translate(_arg1.x, _arg1.y);
screenZ = _arg1.z;
}
override public function clear():void{
bitmap = null;
}
public function renderBitmap(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{
mat.translate(_arg2, _arg3);
_arg1.draw(bitmap, mat, ct, blendMode);
}
}
}//package away3d.core.draw
Section 7
//BitmapTriangle (away3d.core.draw.BitmapTriangle)
package away3d.core.draw {
import flash.display.*;
public class BitmapTriangle extends DrawTriangle implements IBitmapPrimitive {
public function renderBitmap(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{
material.bitmapRenderTriangle(this, _arg1, _arg2, _arg3);
}
}
}//package away3d.core.draw
Section 8
//DrawPrimitive (away3d.core.draw.DrawPrimitive)
package away3d.core.draw {
import away3d.core.proto.*;
import away3d.core.render.*;
public class DrawPrimitive {
public var minX:int;
public var minZ:Number;
public var source:Object3D;
public var projection:Projection;
public var minY:int;
public var screenZ:Number;
public var maxX:int;
public var maxY:int;
public var maxZ:Number;
public function getZ(_arg1:Number, _arg2:Number):Number{
return (screenZ);
}
public function clear():void{
}
public function render(_arg1:RenderSession):void{
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
public function riddle(_arg1:DrawTriangle, _arg2:Number):Array{
return (null);
}
public function quarter(_arg1:Number):Array{
return (null);
}
public function toString():String{
return ((((((("P{ screenZ = " + screenZ) + ", minZ = ") + minZ) + ", maxZ = ") + maxZ) + " }"));
}
protected static function assert(_arg1:Boolean, _arg2:String="Assert failure"):void{
if (!_arg1){
throw (new Error(_arg2));
};
}
}
}//package away3d.core.draw
Section 9
//DrawScaledBitmap (away3d.core.draw.DrawScaledBitmap)
package away3d.core.draw {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.render.*;
import flash.geom.*;
public class DrawScaledBitmap extends DrawPrimitive {
public var v:Vertex2D;
public var height:Number;
public var scale:Number;
public var top:Number;
public var left:Number;
public var bitmap:BitmapData;
public var width:Number;
public function DrawScaledBitmap(_arg1:Object3D, _arg2:BitmapData, _arg3:Vertex2D, _arg4:Number){
this.source = _arg1;
this.bitmap = _arg2;
this.v = _arg3;
this.scale = _arg4;
calc();
}
override public function clear():void{
bitmap = null;
}
override public function render(_arg1:RenderSession):void{
var _local2:Graphics;
_local2 = _arg1.graphics;
_local2.lineStyle();
_local2.beginBitmapFill(bitmap, new Matrix(scale, 0, 0, scale, minX, minY), false);
_local2.drawRect(minX, minY, (maxX - minX), (maxY - minY));
_local2.endFill();
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (true);
}
public function calc():void{
screenZ = v.z;
minZ = screenZ;
maxZ = screenZ;
width = (bitmap.width * scale);
height = (bitmap.height * scale);
left = (v.x - (width / 2));
top = (v.y - (height / 2));
minX = int(Math.ceil(left));
minY = int(Math.ceil(top));
maxX = int(Math.floor((left + width)));
maxY = int(Math.floor((top + height)));
}
}
}//package away3d.core.draw
Section 10
//DrawSegment (away3d.core.draw.DrawSegment)
package away3d.core.draw {
import away3d.core.proto.*;
import away3d.core.render.*;
import away3d.core.material.*;
public class DrawSegment extends DrawPrimitive {
public var v1:Vertex2D;
public var length:Number;
public var v0:Vertex2D;
public var material:ISegmentMaterial;
override public function getZ(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
if (projection == null){
return (screenZ);
};
_local3 = projection.focus;
_local4 = v0.x;
_local5 = v0.y;
_local6 = v0.z;
_local7 = v1.x;
_local8 = v1.y;
_local9 = v1.z;
if ((((_local4 == _arg1)) && ((_local5 == _arg2)))){
return (_local6);
};
if ((((_local7 == _arg1)) && ((_local8 == _arg2)))){
return (_local9);
};
_local10 = (_local7 - _local4);
_local11 = (_local8 - _local5);
_local12 = (_local6 / _local3);
_local13 = (_local9 / _local3);
_local14 = (1 + _local12);
_local15 = (1 + _local13);
_local16 = _arg1;
_local17 = _arg2;
_local18 = ((_local4 * _local14) - (_arg1 * _local12));
_local19 = ((_local7 * _local15) - (_arg1 * _local13));
_local20 = ((_local5 * _local14) - (_arg2 * _local12));
_local21 = ((_local8 * _local15) - (_arg2 * _local13));
_local22 = ((_local10 * (_local18 - _local19)) + (_local11 * (_local20 - _local21)));
_local23 = ((_local10 * (_local18 - _arg1)) + (_local11 * (_local20 - _arg2)));
_local24 = ((_local10 * (_arg1 - _local19)) + (_local11 * (_arg2 - _local21)));
return ((((_local24 * _local6) + (_local23 * _local9)) / _local22));
}
override public function clear():void{
v0 = null;
v1 = null;
}
public function distanceToCenter(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
_local3 = ((v0.x + v1.x) / 2);
_local4 = ((v0.y + v1.y) / 2);
return (Math.sqrt((((_local3 - _arg1) * (_local3 - _arg1)) + ((_local4 - _arg2) * (_local4 - _arg2)))));
}
override public function render(_arg1:RenderSession):void{
material.renderSegment(this, _arg1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if (Math.abs((((v0.x * (_arg2 - v1.y)) + (v1.x * (v0.y - _arg2))) + (_arg1 * (v1.y - v0.y)))) > ((0.001 * 1000) * 1000)){
return (false);
};
if ((distanceToCenter(_arg1, _arg2) * 2) > length){
return (false);
};
return (true);
}
public function calc():void{
minZ = Math.min(v0.z, v1.z);
maxZ = Math.max(v0.z, v1.z);
screenZ = ((v0.z + v1.z) / 2);
minX = int(Math.min(v0.x, v1.x));
maxX = int(Math.max(v0.x, v1.x));
minY = int(Math.min(v0.y, v1.y));
maxY = int(Math.max(v0.y, v1.y));
length = Math.sqrt((((maxX - minX) * (maxX - minX)) + ((maxY - minY) * (maxY - minY))));
}
override public function riddle(_arg1:DrawTriangle, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Vertex2D;
if (_arg1.minZ > maxZ){
return (null);
};
if (_arg1.maxZ < minZ){
return (null);
};
if (_arg1.minX > maxX){
return (null);
};
if (_arg1.maxX < minX){
return (null);
};
if (_arg1.minY > maxY){
return (null);
};
if (_arg1.maxY < minY){
return (null);
};
_local3 = _arg1.v0.z;
_local4 = (1 + (_local3 / _arg2));
_local5 = (_arg1.v0.x * _local4);
_local6 = (_arg1.v0.y * _local4);
_local7 = _arg1.v1.z;
_local8 = (1 + (_local7 / _arg2));
_local9 = (_arg1.v1.x * _local8);
_local10 = (_arg1.v1.y * _local8);
_local11 = _arg1.v2.z;
_local12 = (1 + (_local11 / _arg2));
_local13 = (_arg1.v2.x * _local12);
_local14 = (_arg1.v2.y * _local12);
_local15 = (_local9 - _local5);
_local16 = (_local10 - _local6);
_local17 = (_local7 - _local3);
_local18 = (_local13 - _local5);
_local19 = (_local14 - _local6);
_local20 = (_local11 - _local3);
_local21 = ((_local16 * _local20) - (_local17 * _local19));
_local22 = ((_local17 * _local18) - (_local15 * _local20));
_local23 = ((_local15 * _local19) - (_local16 * _local18));
_local24 = -((((_local21 * _local5) + (_local22 * _local6)) + (_local23 * _local3)));
if ((((_local21 * _local21) + (_local22 * _local22)) + (_local23 * _local23)) < 1){
return (null);
};
_local25 = v0.z;
_local26 = (1 + (_local25 / _arg2));
_local27 = (v0.x * _local26);
_local28 = (v0.y * _local26);
_local29 = v1.z;
_local30 = (1 + (_local29 / _arg2));
_local31 = (v1.x * _local30);
_local32 = (v1.y * _local30);
_local33 = ((((_local21 * _local27) + (_local22 * _local28)) + (_local23 * _local25)) + _local24);
_local34 = ((((_local21 * _local31) + (_local22 * _local32)) + (_local23 * _local29)) + _local24);
if ((_local33 * _local34) >= 0){
return (null);
};
_local35 = (_local34 - _local33);
_local36 = (_local34 / _local35);
_local37 = (-(_local33) / _local35);
_local38 = ((_local25 * _local36) + (_local29 * _local37));
_local39 = (1 / (1 + (_local38 / _arg2)));
_local40 = (((_local27 * _local36) + (_local31 * _local37)) * _local39);
_local41 = (((_local28 * _local36) + (_local32 * _local37)) * _local39);
if (!_arg1.contains(_local40, _local41)){
return (null);
};
_local42 = new Vertex2D(_local40, _local41, _local38);
return ([create(source, material, projection, v0, _local42), create(source, material, projection, _local42, v1)]);
}
override public function quarter(_arg1:Number):Array{
var _local2:Vertex2D;
if (length < 5){
return (null);
};
_local2 = Vertex2D.median(v0, v1, _arg1);
return ([create(source, material, projection, v0, _local2), create(source, material, projection, _local2, v1)]);
}
override public function toString():String{
return ((((((("S{ screenZ = " + screenZ) + ", minZ = ") + minZ) + ", maxZ = ") + maxZ) + " }"));
}
public static function test():void{
}
public static function create(_arg1:Object3D, _arg2:ISegmentMaterial, _arg3:Projection, _arg4:Vertex2D, _arg5:Vertex2D):DrawSegment{
var _local6:DrawSegment;
_local6 = new (DrawSegment);
_local6.source = _arg1;
_local6.material = _arg2;
_local6.projection = _arg3;
_local6.v0 = _arg4;
_local6.v1 = _arg5;
_local6.calc();
return (_local6);
}
}
}//package away3d.core.draw
Section 11
//DrawTriangle (away3d.core.draw.DrawTriangle)
package away3d.core.draw {
import away3d.core.proto.*;
import away3d.core.geom.*;
import away3d.core.render.*;
import away3d.core.material.*;
import flash.geom.*;
public class DrawTriangle extends DrawPrimitive {
private var transMatrix:Matrix;
public var area:Number;
public var material:ITriangleMaterial;
public var uv0:NumberUV;
public var uv2:NumberUV;
public var uv1:NumberUV;
public var texturemapping:Matrix;
public var face:Face3D;
public var v0:Vertex2D;
public var v1:Vertex2D;
public var v2:Vertex2D;
public function DrawTriangle(){
transMatrix = new Matrix();
super();
}
public function bisect(_arg1:Number):Array{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = Vertex2D.distanceSqr(v0, v1);
_local3 = Vertex2D.distanceSqr(v1, v2);
_local4 = Vertex2D.distanceSqr(v2, v0);
if ((((_local3 >= _local2)) && ((_local3 >= _local4)))){
return (bisect12(_arg1));
};
if (_local2 >= _local4){
return (bisect01(_arg1));
};
return (bisect20(_arg1));
}
private function bisect01(_arg1:Number):Array{
var _local2:Vertex2D;
var _local3:NumberUV;
_local2 = Vertex2D.median(v0, v1, _arg1);
_local3 = NumberUV.median(uv0, uv1);
return ([create(source, material, projection, v2, v0, _local2, uv2, uv0, _local3), create(source, material, projection, _local2, v1, v2, _local3, uv1, uv2)]);
}
public function transformUV(_arg1:IUVMaterial):Matrix{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local2 = _arg1.width;
_local3 = _arg1.height;
_local4 = (_local2 * uv0.u);
_local5 = (_local2 * uv1.u);
_local6 = (_local2 * uv2.u);
_local7 = (_local3 * (1 - uv0.v));
_local8 = (_local3 * (1 - uv1.v));
_local9 = (_local3 * (1 - uv2.v));
if ((((((_local4 == _local5)) && ((_local7 == _local8)))) || ((((_local4 == _local6)) && ((_local7 == _local9)))))){
_local4 = (_local4 - ((_local4)>0.05) ? 0.05 : -0.05);
_local7 = (_local7 - ((_local7)>0.07) ? 0.07 : -0.07);
};
if ((((_local6 == _local5)) && ((_local9 == _local8)))){
_local6 = (_local6 - ((_local6)>0.05) ? 0.04 : -0.04);
_local9 = (_local9 - ((_local9)>0.06) ? 0.06 : -0.06);
};
transMatrix.a = (_local5 - _local4);
transMatrix.b = (_local8 - _local7);
transMatrix.c = (_local6 - _local4);
transMatrix.d = (_local9 - _local7);
transMatrix.tx = _local4;
transMatrix.ty = _local7;
transMatrix.invert();
return (transMatrix);
}
override public function render(_arg1:RenderSession):void{
material.renderTriangle(this, _arg1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if ((((v0.x * (_arg2 - v1.y)) + (v1.x * (v0.y - _arg2))) + (_arg1 * (v1.y - v0.y))) < -0.001){
return (false);
};
if ((((v0.x * (v2.y - _arg2)) + (_arg1 * (v0.y - v2.y))) + (v2.x * (_arg2 - v0.y))) < -0.001){
return (false);
};
if ((((_arg1 * (v2.y - v1.y)) + (v1.x * (_arg2 - v2.y))) + (v2.x * (v1.y - _arg2))) < -0.001){
return (false);
};
return (true);
}
public function minEdgeSqr():Number{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = Vertex2D.distanceSqr(v0, v1);
_local2 = Vertex2D.distanceSqr(v1, v2);
_local3 = Vertex2D.distanceSqr(v2, v0);
return (Math.min(Math.min(_local1, _local2), _local3));
}
private function bisect12(_arg1:Number):Array{
var _local2:Vertex2D;
var _local3:NumberUV;
_local2 = Vertex2D.median(v1, v2, _arg1);
_local3 = NumberUV.median(uv1, uv2);
return ([create(source, material, projection, v0, v1, _local2, uv0, uv1, _local3), create(source, material, projection, _local2, v2, v0, _local3, uv2, uv0)]);
}
override public function quarter(_arg1:Number):Array{
var _local2:Vertex2D;
var _local3:Vertex2D;
var _local4:Vertex2D;
var _local5:NumberUV;
var _local6:NumberUV;
var _local7:NumberUV;
if (area < 20){
return (null);
};
_local2 = Vertex2D.median(v0, v1, _arg1);
_local3 = Vertex2D.median(v1, v2, _arg1);
_local4 = Vertex2D.median(v2, v0, _arg1);
_local5 = NumberUV.median(uv0, uv1);
_local6 = NumberUV.median(uv1, uv2);
_local7 = NumberUV.median(uv2, uv0);
return ([create(source, material, projection, v0, _local2, _local4, uv0, _local5, _local7), create(source, material, projection, v1, _local3, _local2, uv1, _local6, _local5), create(source, material, projection, v2, _local4, _local3, uv2, _local7, _local6), create(source, material, projection, _local2, _local3, _local4, _local5, _local6, _local7)]);
}
override public function riddle(_arg1:DrawTriangle, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Number;
var _local53:Vertex3D;
var _local54:Vertex3D;
var _local55:Vertex3D;
if (area < 10){
return (null);
};
if (_arg1.area < 10){
return (null);
};
if (_arg1.minZ > maxZ){
return (null);
};
if (_arg1.maxZ < minZ){
return (null);
};
if (!overlap(this, _arg1)){
return (null);
};
_local3 = _arg1.v0.z;
_local4 = (1 + (_local3 / _arg2));
_local5 = (_arg1.v0.x * _local4);
_local6 = (_arg1.v0.y * _local4);
_local7 = _arg1.v1.z;
_local8 = (1 + (_local7 / _arg2));
_local9 = (_arg1.v1.x * _local8);
_local10 = (_arg1.v1.y * _local8);
_local11 = _arg1.v2.z;
_local12 = (1 + (_local11 / _arg2));
_local13 = (_arg1.v2.x * _local12);
_local14 = (_arg1.v2.y * _local12);
_local15 = (_local9 - _local5);
_local16 = (_local10 - _local6);
_local17 = (_local7 - _local3);
_local18 = (_local13 - _local5);
_local19 = (_local14 - _local6);
_local20 = (_local11 - _local3);
_local21 = ((_local16 * _local20) - (_local17 * _local19));
_local22 = ((_local17 * _local18) - (_local15 * _local20));
_local23 = ((_local15 * _local19) - (_local16 * _local18));
_local24 = -((((_local21 * _local5) + (_local22 * _local6)) + (_local23 * _local3)));
if ((((_local21 * _local21) + (_local22 * _local22)) + (_local23 * _local23)) < 1){
return (null);
};
_local25 = v0.z;
_local26 = (1 + (_local25 / _arg2));
_local27 = (v0.x * _local26);
_local28 = (v0.y * _local26);
_local29 = v1.z;
_local30 = (1 + (_local29 / _arg2));
_local31 = (v1.x * _local30);
_local32 = (v1.y * _local30);
_local33 = v2.z;
_local34 = (1 + (_local33 / _arg2));
_local35 = (v2.x * _local34);
_local36 = (v2.y * _local34);
_local37 = ((((_local21 * _local27) + (_local22 * _local28)) + (_local23 * _local25)) + _local24);
_local38 = ((((_local21 * _local31) + (_local22 * _local32)) + (_local23 * _local29)) + _local24);
_local39 = ((((_local21 * _local35) + (_local22 * _local36)) + (_local23 * _local33)) + _local24);
if ((_local37 * _local37) < 0.001){
_local37 = 0;
};
if ((_local38 * _local38) < 0.001){
_local38 = 0;
};
if ((_local39 * _local39) < 0.001){
_local39 = 0;
};
if (((((((_local37 * _local38) >= -0.01)) && (((_local38 * _local39) >= -0.01)))) && (((_local39 * _local37) >= -0.01)))){
return (null);
};
_local40 = (_local31 - _local27);
_local41 = (_local32 - _local28);
_local42 = (_local29 - _local25);
_local43 = (_local35 - _local27);
_local44 = (_local36 - _local28);
_local45 = (_local33 - _local25);
_local46 = ((_local41 * _local45) - (_local42 * _local44));
_local47 = ((_local42 * _local43) - (_local40 * _local45));
_local48 = ((_local40 * _local44) - (_local41 * _local43));
_local49 = -((((_local46 * _local27) + (_local47 * _local28)) + (_local48 * _local25)));
if ((((_local46 * _local46) + (_local47 * _local47)) + (_local48 * _local48)) < 1){
return (null);
};
_local50 = ((((_local46 * _local5) + (_local47 * _local6)) + (_local48 * _local3)) + _local49);
_local51 = ((((_local46 * _local9) + (_local47 * _local10)) + (_local48 * _local7)) + _local49);
_local52 = ((((_local46 * _local13) + (_local47 * _local14)) + (_local48 * _local11)) + _local49);
if ((_local50 * _local50) < 0.001){
_local50 = 0;
};
if ((_local51 * _local51) < 0.001){
_local51 = 0;
};
if ((_local52 * _local52) < 0.001){
_local52 = 0;
};
if (((((((_local50 * _local51) >= -0.01)) && (((_local51 * _local52) >= -0.01)))) && (((_local52 * _local50) >= -0.01)))){
return (null);
};
_local53 = v0.deperspective(_arg2);
_local54 = v1.deperspective(_arg2);
_local55 = v2.deperspective(_arg2);
if ((_local38 * _local39) >= -1){
return (fivepointcut(source, material, projection, v2, Vertex3D.weighted(_local55, _local53, -(_local37), _local39).perspective(_arg2), v0, Vertex3D.weighted(_local53, _local54, _local38, -(_local37)).perspective(_arg2), v1, uv2, NumberUV.weighted(uv2, uv0, -(_local37), _local39), uv0, NumberUV.weighted(uv0, uv1, _local38, -(_local37)), uv1));
};
if ((_local37 * _local38) >= -1){
return (fivepointcut(source, material, projection, v1, Vertex3D.weighted(_local54, _local55, -(_local39), _local38).perspective(_arg2), v2, Vertex3D.weighted(_local55, _local53, _local37, -(_local39)).perspective(_arg2), v0, uv1, NumberUV.weighted(uv1, uv2, -(_local39), _local38), uv2, NumberUV.weighted(uv2, uv0, _local37, -(_local39)), uv0));
};
return (fivepointcut(source, material, projection, v0, Vertex3D.weighted(_local53, _local54, -(_local38), _local37).perspective(_arg2), v1, Vertex3D.weighted(_local54, _local55, _local39, -(_local38)).perspective(_arg2), v2, uv0, NumberUV.weighted(uv0, uv1, -(_local38), _local37), uv1, NumberUV.weighted(uv1, uv2, _local39, -(_local38)), uv2));
}
public function minDistortSqr(_arg1:Number):Number{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = Vertex2D.distortSqr(v0, v1, _arg1);
_local3 = Vertex2D.distortSqr(v1, v2, _arg1);
_local4 = Vertex2D.distortSqr(v2, v0, _arg1);
return (Math.min(Math.min(_local2, _local3), _local4));
}
override public function getZ(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
if (projection == null){
return (screenZ);
};
_local3 = projection.focus;
_local4 = v0.x;
_local5 = v0.y;
_local6 = v0.z;
_local7 = v1.x;
_local8 = v1.y;
_local9 = v1.z;
_local10 = v2.x;
_local11 = v2.y;
_local12 = v2.z;
if ((((_local4 == _arg1)) && ((_local5 == _arg2)))){
return (_local6);
};
if ((((_local7 == _arg1)) && ((_local8 == _arg2)))){
return (_local9);
};
if ((((_local10 == _arg1)) && ((_local11 == _arg2)))){
return (_local12);
};
_local13 = (_local6 / _local3);
_local14 = (_local9 / _local3);
_local15 = (_local12 / _local3);
_local16 = (1 + _local13);
_local17 = (1 + _local14);
_local18 = (1 + _local15);
_local19 = ((_local4 * _local16) - (_arg1 * _local13));
_local20 = ((_local7 * _local17) - (_arg1 * _local14));
_local21 = ((_local10 * _local18) - (_arg1 * _local15));
_local22 = ((_local5 * _local16) - (_arg2 * _local13));
_local23 = ((_local8 * _local17) - (_arg2 * _local14));
_local24 = ((_local11 * _local18) - (_arg2 * _local15));
_local25 = (((_local19 * (_local23 - _local24)) + (_local20 * (_local24 - _local22))) + (_local21 * (_local22 - _local23)));
_local26 = (((_arg1 * (_local23 - _local24)) + (_local20 * (_local24 - _arg2))) + (_local21 * (_arg2 - _local23)));
_local27 = (((_local19 * (_arg2 - _local24)) + (_arg1 * (_local24 - _local22))) + (_local21 * (_local22 - _arg2)));
_local28 = (((_local19 * (_local23 - _arg2)) + (_local20 * (_arg2 - _local22))) + (_arg1 * (_local22 - _local23)));
return (((((_local26 * _local6) + (_local27 * _local9)) + (_local28 * _local12)) / _local25));
}
public function distanceToCenter(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
_local3 = (((v0.x + v1.x) + v2.x) / 3);
_local4 = (((v0.y + v1.y) + v2.y) / 3);
return (Math.sqrt((((_local3 - _arg1) * (_local3 - _arg1)) + ((_local4 - _arg2) * (_local4 - _arg2)))));
}
override public function clear():void{
v0 = null;
v1 = null;
v2 = null;
uv0 = null;
uv1 = null;
uv2 = null;
texturemapping = null;
}
public function maxDistortSqr(_arg1:Number):Number{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = Vertex2D.distortSqr(v0, v1, _arg1);
_local3 = Vertex2D.distortSqr(v1, v2, _arg1);
_local4 = Vertex2D.distortSqr(v2, v0, _arg1);
return (Math.max(Math.max(_local2, _local3), _local4));
}
public function acuteAngled():Boolean{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local1 = Vertex2D.distanceSqr(v0, v1);
_local2 = Vertex2D.distanceSqr(v1, v2);
_local3 = Vertex2D.distanceSqr(v2, v0);
_local4 = (_local1 * _local1);
_local5 = (_local2 * _local2);
_local6 = (_local3 * _local3);
return ((((((_local4 <= (_local5 + _local6))) && ((_local5 <= (_local6 + _local4))))) && ((_local6 <= (_local4 + _local5)))));
}
private function bisect20(_arg1:Number):Array{
var _local2:Vertex2D;
var _local3:NumberUV;
_local2 = Vertex2D.median(v2, v0, _arg1);
_local3 = NumberUV.median(uv2, uv0);
return ([create(source, material, projection, v1, v2, _local2, uv1, uv2, _local3), create(source, material, projection, _local2, v0, v1, _local3, uv0, uv1)]);
}
public function maxEdgeSqr():Number{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = Vertex2D.distanceSqr(v0, v1);
_local2 = Vertex2D.distanceSqr(v1, v2);
_local3 = Vertex2D.distanceSqr(v2, v0);
return (Math.max(Math.max(_local1, _local2), _local3));
}
public function distortbisect(_arg1:Number):Array{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = Vertex2D.distortSqr(v0, v1, _arg1);
_local3 = Vertex2D.distortSqr(v1, v2, _arg1);
_local4 = Vertex2D.distortSqr(v2, v0, _arg1);
if ((((_local3 >= _local2)) && ((_local3 >= _local4)))){
return (bisect12(_arg1));
};
if (_local2 >= _local4){
return (bisect01(_arg1));
};
return (bisect20(_arg1));
}
public function calc():void{
minZ = Math.min(v0.z, Math.min(v1.z, v2.z));
maxZ = Math.max(v0.z, Math.max(v1.z, v2.z));
screenZ = (((v0.z + v1.z) + v2.z) / 3);
minX = int(Math.floor(Math.min(v0.x, Math.min(v1.x, v2.x))));
minY = int(Math.floor(Math.min(v0.y, Math.min(v1.y, v2.y))));
maxX = int(Math.ceil(Math.max(v0.x, Math.max(v1.x, v2.x))));
maxY = int(Math.ceil(Math.max(v0.y, Math.max(v1.y, v2.y))));
area = (0.5 * (((v0.x * (v2.y - v1.y)) + (v1.x * (v0.y - v2.y))) + (v2.x * (v1.y - v0.y))));
}
override public function toString():String{
var _local1:String;
_local1 = "";
if ((material is WireColorMaterial)){
switch ((material as WireColorMaterial).fillColor){
case 0xFF00:
_local1 = "green";
break;
case 0xFFFF00:
_local1 = "yellow";
break;
case 0xFF0000:
_local1 = "red";
break;
case 0xFF:
_local1 = "blue";
break;
};
};
return (((((((((("T{" + _local1) + int(area)) + " screenZ = ") + num(screenZ)) + ", minZ = ") + num(minZ)) + ", maxZ = ") + num(maxZ)) + " }"));
}
public function getUV(_arg1:Number, _arg2:Number):NumberUV{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
if (uv0 == null){
return (null);
};
if (uv1 == null){
return (null);
};
if (uv2 == null){
return (null);
};
_local3 = uv0.u;
_local4 = uv0.v;
_local5 = uv1.u;
_local6 = uv1.v;
_local7 = uv2.u;
_local8 = uv2.v;
_local9 = projection.focus;
_local10 = v0.x;
_local11 = v0.y;
_local12 = v0.z;
_local13 = v1.x;
_local14 = v1.y;
_local15 = v1.z;
_local16 = v2.x;
_local17 = v2.y;
_local18 = v2.z;
if ((((_local10 == _arg1)) && ((_local11 == _arg2)))){
return (uv0);
};
if ((((_local13 == _arg1)) && ((_local14 == _arg2)))){
return (uv1);
};
if ((((_local16 == _arg1)) && ((_local17 == _arg2)))){
return (uv2);
};
_local19 = (_local12 / _local9);
_local20 = (_local15 / _local9);
_local21 = (_local18 / _local9);
_local22 = (1 + _local19);
_local23 = (1 + _local20);
_local24 = (1 + _local21);
_local25 = ((_local10 * _local22) - (_arg1 * _local19));
_local26 = ((_local13 * _local23) - (_arg1 * _local20));
_local27 = ((_local16 * _local24) - (_arg1 * _local21));
_local28 = ((_local11 * _local22) - (_arg2 * _local19));
_local29 = ((_local14 * _local23) - (_arg2 * _local20));
_local30 = ((_local17 * _local24) - (_arg2 * _local21));
_local31 = (((_local25 * (_local29 - _local30)) + (_local26 * (_local30 - _local28))) + (_local27 * (_local28 - _local29)));
_local32 = (((_arg1 * (_local29 - _local30)) + (_local26 * (_local30 - _arg2))) + (_local27 * (_arg2 - _local29)));
_local33 = (((_local25 * (_arg2 - _local30)) + (_arg1 * (_local30 - _local28))) + (_local27 * (_local28 - _arg2)));
_local34 = (((_local25 * (_local29 - _arg2)) + (_local26 * (_arg2 - _local28))) + (_arg1 * (_local28 - _local29)));
return (new NumberUV(((((_local32 * _local3) + (_local33 * _local5)) + (_local34 * _local7)) / _local31), ((((_local32 * _local4) + (_local33 * _local6)) + (_local34 * _local8)) / _local31)));
}
public static function test():void{
}
public static function create(_arg1:Object3D, _arg2:ITriangleMaterial, _arg3:Projection, _arg4:Vertex2D, _arg5:Vertex2D, _arg6:Vertex2D, _arg7:NumberUV, _arg8:NumberUV, _arg9:NumberUV):DrawTriangle{
var _local10:DrawTriangle;
_local10 = new (DrawTriangle);
_local10.source = _arg1;
_local10.material = _arg2;
_local10.projection = _arg3;
_local10.v0 = _arg4;
_local10.v1 = _arg5;
_local10.v2 = _arg6;
_local10.uv0 = _arg7;
_local10.uv1 = _arg8;
_local10.uv2 = _arg9;
_local10.calc();
return (_local10);
}
public static function fivepointcut(_arg1:Object3D, _arg2:ITriangleMaterial, _arg3:Projection, _arg4:Vertex2D, _arg5:Vertex2D, _arg6:Vertex2D, _arg7:Vertex2D, _arg8:Vertex2D, _arg9:NumberUV, _arg10:NumberUV, _arg11:NumberUV, _arg12:NumberUV, _arg13:NumberUV):Array{
if (Vertex2D.distanceSqr(_arg4, _arg7) < Vertex2D.distanceSqr(_arg5, _arg8)){
return ([create(_arg1, _arg2, _arg3, _arg4, _arg5, _arg7, _arg9, _arg10, _arg12), create(_arg1, _arg2, _arg3, _arg5, _arg6, _arg7, _arg10, _arg11, _arg12), create(_arg1, _arg2, _arg3, _arg4, _arg7, _arg8, _arg9, _arg12, _arg13)]);
};
return ([create(_arg1, _arg2, _arg3, _arg4, _arg5, _arg8, _arg9, _arg10, _arg13), create(_arg1, _arg2, _arg3, _arg5, _arg6, _arg7, _arg10, _arg11, _arg12), create(_arg1, _arg2, _arg3, _arg5, _arg7, _arg8, _arg10, _arg12, _arg13)]);
}
private static function num(_arg1:Number):Number{
return ((int((_arg1 * 1000)) / 1000));
}
public static function overlap(_arg1:DrawTriangle, _arg2:DrawTriangle):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Boolean;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Number;
var _local53:Number;
var _local54:Number;
var _local55:Number;
var _local56:Number;
var _local57:Number;
if (_arg1.minX > _arg2.maxX){
return (false);
};
if (_arg1.maxX < _arg2.minX){
return (false);
};
if (_arg1.minY > _arg2.maxY){
return (false);
};
if (_arg1.maxY < _arg2.minY){
return (false);
};
_local3 = _arg1.v0.x;
_local4 = _arg1.v0.y;
_local5 = _arg1.v1.x;
_local6 = _arg1.v1.y;
_local7 = _arg1.v2.x;
_local8 = _arg1.v2.y;
_local9 = _arg2.v0.x;
_local10 = _arg2.v0.y;
_local11 = _arg2.v1.x;
_local12 = _arg2.v1.y;
_local13 = _arg2.v2.x;
_local14 = _arg2.v2.y;
_local15 = (_local6 - _local4);
_local16 = (_local3 - _local5);
_local17 = -(((_local16 * _local4) + (_local15 * _local3)));
_local18 = (((_local15 * _local7) + (_local16 * _local8)) + _local17);
_local19 = ((((_local15 * _local9) + (_local16 * _local10)) + _local17) * _local18);
_local20 = ((((_local15 * _local11) + (_local16 * _local12)) + _local17) * _local18);
_local21 = ((((_local15 * _local13) + (_local16 * _local14)) + _local17) * _local18);
if ((((((_local19 <= 0.0001)) && ((_local20 <= 0.0001)))) && ((_local21 <= 0.0001)))){
return (false);
};
_local22 = (_local8 - _local6);
_local23 = (_local5 - _local7);
_local24 = (((_local22 * _local22) + (_local23 * _local23)) > 0.0001);
_local25 = -(((_local23 * _local6) + (_local22 * _local5)));
_local26 = (((_local22 * _local3) + (_local23 * _local4)) + _local25);
_local27 = ((((_local22 * _local9) + (_local23 * _local10)) + _local25) * _local26);
_local28 = ((((_local22 * _local11) + (_local23 * _local12)) + _local25) * _local26);
_local29 = ((((_local22 * _local13) + (_local23 * _local14)) + _local25) * _local26);
if ((((((_local27 <= 0.0001)) && ((_local28 <= 0.0001)))) && ((_local29 <= 0.0001)))){
return (false);
};
_local30 = (_local4 - _local8);
_local31 = (_local7 - _local3);
_local32 = -(((_local31 * _local8) + (_local30 * _local7)));
_local33 = (((_local30 * _local5) + (_local31 * _local6)) + _local32);
_local34 = ((((_local30 * _local9) + (_local31 * _local10)) + _local32) * _local33);
_local35 = ((((_local30 * _local11) + (_local31 * _local12)) + _local32) * _local33);
_local36 = ((((_local30 * _local13) + (_local31 * _local14)) + _local32) * _local33);
if ((((((_local34 <= 0.0001)) && ((_local35 <= 0.0001)))) && ((_local36 <= 0.0001)))){
return (false);
};
_local37 = (_local12 - _local10);
_local38 = (_local9 - _local11);
_local39 = -(((_local38 * _local10) + (_local37 * _local9)));
_local40 = (((_local37 * _local13) + (_local38 * _local14)) + _local39);
_local41 = ((((_local37 * _local3) + (_local38 * _local4)) + _local39) * _local40);
_local42 = ((((_local37 * _local5) + (_local38 * _local6)) + _local39) * _local40);
_local43 = ((((_local37 * _local7) + (_local38 * _local8)) + _local39) * _local40);
if ((((((_local41 <= 0.0001)) && ((_local42 <= 0.0001)))) && ((_local43 <= 0.0001)))){
return (false);
};
_local44 = (_local14 - _local12);
_local45 = (_local11 - _local13);
_local46 = -(((_local45 * _local12) + (_local44 * _local11)));
_local47 = (((_local44 * _local9) + (_local45 * _local10)) + _local46);
_local48 = ((((_local44 * _local3) + (_local45 * _local4)) + _local46) * _local47);
_local49 = ((((_local44 * _local5) + (_local45 * _local6)) + _local46) * _local47);
_local50 = ((((_local44 * _local7) + (_local45 * _local8)) + _local46) * _local47);
if ((((((_local48 <= 0.0001)) && ((_local49 <= 0.0001)))) && ((_local50 <= 0.0001)))){
return (false);
};
_local51 = (_local10 - _local14);
_local52 = (_local13 - _local9);
_local53 = -(((_local52 * _local14) + (_local51 * _local13)));
_local54 = (((_local51 * _local11) + (_local52 * _local12)) + _local53);
_local55 = ((((_local51 * _local3) + (_local52 * _local4)) + _local53) * _local54);
_local56 = ((((_local51 * _local5) + (_local52 * _local6)) + _local53) * _local54);
_local57 = ((((_local51 * _local7) + (_local52 * _local8)) + _local53) * _local54);
if ((((((_local55 <= 0.0001)) && ((_local56 <= 0.0001)))) && ((_local57 <= 0.0001)))){
return (false);
};
return (true);
}
}
}//package away3d.core.draw
Section 12
//IBitmapPrimitive (away3d.core.draw.IBitmapPrimitive)
package away3d.core.draw {
import flash.display.*;
public interface IBitmapPrimitive {
function renderBitmap(_arg1:BitmapData, _arg2:Number, _arg3:Number):void;
}
}//package away3d.core.draw
Section 13
//Vertex2D (away3d.core.draw.Vertex2D)
package away3d.core.draw {
import away3d.core.geom.*;
public class Vertex2D {
public var num:Number;
public var visible:Boolean;
public var extra:Object;
public var x:Number;
public var y:Number;
public var z:Number;
public function Vertex2D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.visible = false;
}
public function deperspective(_arg1:Number):Vertex3D{
var _local2:Number;
_local2 = (1 + (z / _arg1));
return (new Vertex3D((x * _local2), (y * _local2), z));
}
public function toString():String{
return ((((((("new Vertex2D(" + x) + ", ") + y) + ", ") + z) + ")"));
}
public static function distortSqr(_arg1:Vertex2D, _arg2:Vertex2D, _arg3:Number):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local4 = (_arg3 + _arg1.z);
_local5 = (_arg3 + _arg2.z);
_local6 = (2 / (_local4 + _local5));
_local7 = (((_arg1.x * _local4) + (_arg2.x * _local5)) * _local6);
_local8 = (((_arg1.y * _local4) + (_arg2.y * _local5)) * _local6);
_local9 = ((_arg1.x + _arg2.x) - _local7);
_local10 = ((_arg1.y + _arg2.y) - _local8);
return ((50 * (((_local9 * _local9) + _local10) + _local10)));
}
public static function median(_arg1:Vertex2D, _arg2:Vertex2D, _arg3:Number):Vertex2D{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local4 = ((_arg1.z + _arg2.z) / 2);
_local5 = (_arg3 + _arg1.z);
_local6 = (_arg3 + _arg2.z);
_local7 = ((1 / (_arg3 + _local4)) / 2);
return (new Vertex2D((((_arg1.x * _local5) + (_arg2.x * _local6)) * _local7), (((_arg1.y * _local5) + (_arg2.y * _local6)) * _local7), _local4));
}
public static function distance(_arg1:Vertex2D, _arg2:Vertex2D):Number{
return (Math.sqrt((((_arg1.x - _arg2.x) * (_arg1.x - _arg2.x)) + ((_arg1.y - _arg2.y) * (_arg1.y - _arg2.y)))));
}
public static function weighted(_arg1:Vertex2D, _arg2:Vertex2D, _arg3:Number, _arg4:Number, _arg5:Number):Vertex2D{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
if ((((_arg4 == 0)) && ((_arg3 == 0)))){
throw (new Error("Zero weights"));
};
if (_arg4 == 0){
return (new Vertex2D(_arg1.x, _arg1.y, _arg1.z));
};
if (_arg3 == 0){
return (new Vertex2D(_arg2.x, _arg2.y, _arg2.z));
};
_local6 = (_arg3 + _arg4);
_local7 = (_arg3 / _local6);
_local8 = (_arg4 / _local6);
_local9 = ((_arg1.x * _local7) + (_arg2.x * _local8));
_local10 = ((_arg1.y * _local7) + (_arg2.y * _local8));
_local11 = (_arg1.z / _arg5);
_local12 = (_arg2.z / _arg5);
_local13 = (1 + _local11);
_local14 = (1 + _local12);
_local15 = ((_arg1.x * _local13) - (_local9 * _local11));
_local16 = ((_arg2.x * _local14) - (_local9 * _local12));
_local17 = ((_arg1.y * _local13) - (_local10 * _local11));
_local18 = ((_arg2.y * _local14) - (_local10 * _local12));
_local19 = ((_local15 * _local18) - (_local16 * _local17));
_local20 = ((_local9 * _local18) - (_local16 * _local10));
_local21 = ((_local15 * _local10) - (_local9 * _local17));
return (new Vertex2D(_local9, _local10, (((_local20 * _arg1.z) + (_local21 * _arg2.z)) / _local19)));
}
public static function distanceSqr(_arg1:Vertex2D, _arg2:Vertex2D):Number{
return ((((_arg1.x - _arg2.x) * (_arg1.x - _arg2.x)) + ((_arg1.y - _arg2.y) * (_arg1.y - _arg2.y))));
}
}
}//package away3d.core.draw
Section 14
//BitmapMesh3D (away3d.core.geom.BitmapMesh3D)
package away3d.core.geom {
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.material.*;
public class BitmapMesh3D extends Mesh3D implements IPrimitiveProvider {
public function BitmapMesh3D(_arg1:IMaterial, _arg2:Object=null){
super(_arg1, _arg2);
}
override public function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void{
var _local3:BitmapTriangle;
var _local4:ITriangleMaterial;
var _local5:Face3D;
var _local6:Vertex2D;
var _local7:NumberUV;
_local4 = ((material is ITriangleMaterial)) ? (material as ITriangleMaterial) : null;
for each (_local5 in faces) {
if (!_local5.visible){
} else {
_local3 = ((_local3) || (new BitmapTriangle()));
_local3.v0 = _local5.v0.project(_arg1);
_local3.v1 = _local5.v1.project(_arg1);
_local3.v2 = _local5.v2.project(_arg1);
if (!_local3.v0.visible){
} else {
if (!_local3.v1.visible){
} else {
if (!_local3.v2.visible){
} else {
_local3.calc();
if (_local3.maxZ < 0){
} else {
_local3.material = ((_local5.material) || (_local4));
if (_local3.material == null){
} else {
if (!_local3.material.visible){
} else {
if (((!(bothsides)) && ((_local3.area <= 0)))){
} else {
if (pushback){
_local3.screenZ = _local3.maxZ;
};
if (pushfront){
_local3.screenZ = _local3.minZ;
};
_local3.uv0 = _local5.uv0;
_local3.uv1 = _local5.uv1;
_local3.uv2 = _local5.uv2;
if (_local3.uv0 != null){
if (_local5.texturemapping == null){
if ((_local3.material is IUVMaterial)){
_local5.texturemapping = _local3.transformUV((_local3.material as IUVMaterial));
};
};
_local3.texturemapping = _local5.texturemapping;
};
if (_local3.area <= 0){
_local3.texturemapping = null;
_local6 = _local3.v1;
_local3.v1 = _local3.v2;
_local3.v2 = _local6;
_local7 = _local3.uv1;
_local3.uv1 = _local5.uv2;
_local3.uv2 = _local7;
};
_local3.source = this;
_local3.face = _local5;
_local3.projection = _arg1;
_arg2.primitive(_local3);
_local3 = null;
};
};
};
};
};
};
};
};
};
}
}
}//package away3d.core.geom
Section 15
//Face3D (away3d.core.geom.Face3D)
package away3d.core.geom {
import away3d.core.math.*;
import away3d.core.material.*;
import flash.geom.*;
import away3d.core.physics.*;
public class Face3D extends ChildObject3D {
public var v2:Vertex3D;
public var extra:Object;
public var material:ITriangleMaterial;
public var uv0:NumberUV;
public var uv1:NumberUV;
public var uv2:NumberUV;
public var texturemapping:Matrix;
public var a:Number3D;
public var b:Number3D;
public var normal:Number3D;
public var visible:Boolean;// = true
public var v0:Vertex3D;
public var v1:Vertex3D;
public function Face3D(_arg1:Vertex3D, _arg2:Vertex3D, _arg3:Vertex3D, _arg4:ITriangleMaterial=null, _arg5:NumberUV=null, _arg6:NumberUV=null, _arg7:NumberUV=null){
visible = true;
super();
this.v0 = _arg1;
this.v1 = _arg2;
this.v2 = _arg3;
this.material = _arg4;
this.uv0 = _arg5;
this.uv1 = _arg6;
this.uv2 = _arg7;
}
}
}//package away3d.core.geom
Section 16
//Mesh3D (away3d.core.geom.Mesh3D)
package away3d.core.geom {
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.material.*;
import away3d.core.*;
import flash.geom.*;
public class Mesh3D extends Vertices3D implements IPrimitiveProvider {
public var pushback:Boolean;
public var bothsides:Boolean;
public var material:IMaterial;
public var pushfront:Boolean;
public var surfaces:Array;
public var segments:Array;
public var faces:Array;
public var surface:Face3D;
public function Mesh3D(_arg1:IMaterial, _arg2:Object=null){
faces = [];
surfaces = [];
segments = [];
super(_arg2);
_arg2 = Init.parse(_arg2);
bothsides = _arg2.getBoolean("bothsides", false);
pushback = _arg2.getBoolean("pushback", false);
pushfront = _arg2.getBoolean("pushfront", false);
this.material = ((_arg1) || (new WireColorMaterial()));
}
public function insideShape(_arg1:Array, _arg2:Array):Boolean{
var _local3:Boolean;
var _local4:Point;
var _local5:Number;
var _local6:Number;
var _local7:Point;
var _local8:Point;
for each (_local4 in _arg1) {
_local3 = true;
_local6 = 0;
while (_local6 < _arg2.length) {
_local5 = ((_local6)==0) ? (_arg2.length - 1) : (_local6 - 1);
_local7 = _arg2[_local5];
_local8 = _arg2[_local6];
if (((((((_local7.x * _local8.y) - (_local7.y * _local8.x)) - (_local4.x * _local8.y)) + (_local4.y * _local8.x)) + (_local4.x * _local7.y)) - (_local4.y * _local7.x)) < -0.5){
_local3 = false;
};
_local6++;
};
if (_local3){
return (true);
};
};
for each (_local4 in _arg2) {
_local3 = true;
_local6 = 0;
while (_local6 < _arg1.length) {
_local5 = ((_local6)==0) ? (_arg1.length - 1) : (_local6 - 1);
_local7 = _arg1[_local5];
_local8 = _arg1[_local6];
if (((((((_local7.x * _local8.y) - (_local7.y * _local8.x)) - (_local4.x * _local8.y)) + (_local4.y * _local8.x)) + (_local4.x * _local7.y)) - (_local4.y * _local7.x)) < -0.5){
_local3 = false;
};
_local6++;
};
if (_local3){
return (true);
};
};
return (_local3);
}
public function quarterFaces():void{
var _local1:Array;
var _local2:Face3D;
var _local3:Vertex3D;
var _local4:Vertex3D;
var _local5:Vertex3D;
var _local6:Vertex3D;
var _local7:Vertex3D;
var _local8:Vertex3D;
var _local9:NumberUV;
var _local10:NumberUV;
var _local11:NumberUV;
var _local12:NumberUV;
var _local13:NumberUV;
var _local14:NumberUV;
var _local15:ITriangleMaterial;
_local1 = faces;
faces = [];
for each (_local2 in _local1) {
_local3 = _local2.v0;
_local4 = _local2.v1;
_local5 = _local2.v2;
_local6 = Vertex3D.median(_local3, _local4);
_local7 = Vertex3D.median(_local4, _local5);
_local8 = Vertex3D.median(_local5, _local3);
_local9 = _local2.uv0;
_local10 = _local2.uv1;
_local11 = _local2.uv2;
_local12 = NumberUV.median(_local9, _local10);
_local13 = NumberUV.median(_local10, _local11);
_local14 = NumberUV.median(_local11, _local9);
_local15 = _local2.material;
addFace3D(new Face3D(_local3, _local6, _local8, _local15, _local9, _local12, _local14));
addFace3D(new Face3D(_local6, _local4, _local7, _local15, _local12, _local10, _local13));
addFace3D(new Face3D(_local8, _local7, _local5, _local15, _local14, _local13, _local11));
addFace3D(new Face3D(_local7, _local8, _local6, _local15, _local13, _local14, _local12));
};
}
public function inverseFaces():void{
var _local1:Face3D;
var _local2:Vertex3D;
var _local3:NumberUV;
for each (_local1 in faces) {
_local2 = _local1.v1;
_local1.v1 = _local1.v2;
_local1.v2 = _local2;
_local3 = _local1.uv1;
_local1.uv1 = _local1.uv2;
_local1.uv2 = _local3;
};
}
public function addFace3D(_arg1:Face3D):Face3D{
if (_arg1 == null){
throw (new Error("Vertices3D.addFace3D(null)"));
};
if (_arg1.parent == this){
return (_arg1);
};
_arg1.parent = null;
faces.push(_arg1);
_arg1._parent = this;
_arg1.scenePosition = sceneTransform.transformPoint(_arg1.position);
return (_arg1);
}
public function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void{
var _local3:DrawTriangle;
var _local4:ITriangleMaterial;
var _local5:Face3D;
var _local6:DrawSegment;
var _local7:ISegmentMaterial;
var _local8:Segment3D;
var _local9:Vertex2D;
var _local10:NumberUV;
_local4 = ((material is ITriangleMaterial)) ? (material as ITriangleMaterial) : null;
for each (_local5 in faces) {
if (!_local5.visible){
} else {
_local3 = ((_local3) || (new DrawTriangle()));
_local3.v0 = _local5.v0.project(_arg1);
_local3.v1 = _local5.v1.project(_arg1);
_local3.v2 = _local5.v2.project(_arg1);
if (!_local3.v0.visible){
} else {
if (!_local3.v1.visible){
} else {
if (!_local3.v2.visible){
} else {
_local3.calc();
if (_local3.maxZ < 0){
} else {
_local3.material = ((_local5.material) || (_local4));
if (_local3.material == null){
} else {
if (!_local3.material.visible){
} else {
if (((!(bothsides)) && ((_local3.area <= 0)))){
} else {
if (pushback){
_local3.screenZ = _local3.maxZ;
};
if (pushfront){
_local3.screenZ = _local3.minZ;
};
_local3.uv0 = _local5.uv0;
_local3.uv1 = _local5.uv1;
_local3.uv2 = _local5.uv2;
if (_local3.uv0 != null){
if (_local5.texturemapping == null){
if ((_local3.material is IUVMaterial)){
_local5.texturemapping = _local3.transformUV((_local3.material as IUVMaterial));
};
};
_local3.texturemapping = _local5.texturemapping;
};
if (_local3.area <= 0){
_local3.texturemapping = null;
_local9 = _local3.v1;
_local3.v1 = _local3.v2;
_local3.v2 = _local9;
_local10 = _local3.uv1;
_local3.uv1 = _local5.uv2;
_local3.uv2 = _local10;
};
_local3.source = this;
_local3.face = _local5;
_local3.projection = _arg1;
_arg2.primitive(_local3);
_local3 = null;
};
};
};
};
};
};
};
};
};
_local7 = ((material is ISegmentMaterial)) ? (material as ISegmentMaterial) : null;
for each (_local8 in segments) {
_local6 = ((_local6) || (new DrawSegment()));
_local6.v0 = _local8.v0.project(_arg1);
_local6.v1 = _local8.v1.project(_arg1);
if (!_local6.v0.visible){
} else {
if (!_local6.v1.visible){
} else {
_local6.calc();
if (_local6.maxZ < 0){
} else {
_local6.material = ((_local8.material) || (_local7));
if (_local6.material == null){
} else {
if (!_local6.material.visible){
} else {
_local6.source = this;
_local6.projection = _arg1;
_arg2.primitive(_local6);
_local6 = null;
};
};
};
};
};
};
}
}
}//package away3d.core.geom
Section 17
//NumberUV (away3d.core.geom.NumberUV)
package away3d.core.geom {
public class NumberUV {
public var u:Number;
public var v:Number;
public function NumberUV(_arg1:Number=0, _arg2:Number=0){
this.u = _arg1;
this.v = _arg2;
}
public function toString():String{
return (((("u:" + u) + " v:") + v));
}
public static function median(_arg1:NumberUV, _arg2:NumberUV):NumberUV{
if (_arg1 == null){
return (null);
};
if (_arg2 == null){
return (null);
};
return (new NumberUV(((_arg1.u + _arg2.u) / 2), ((_arg1.v + _arg2.v) / 2)));
}
public static function weighted(_arg1:NumberUV, _arg2:NumberUV, _arg3:Number, _arg4:Number):NumberUV{
var _local5:Number;
var _local6:Number;
var _local7:Number;
if (_arg1 == null){
return (null);
};
if (_arg2 == null){
return (null);
};
_local5 = (_arg3 + _arg4);
_local6 = (_arg3 / _local5);
_local7 = (_arg4 / _local5);
return (new NumberUV(((_arg1.u * _local6) + (_arg2.u * _local7)), ((_arg1.v * _local6) + (_arg2.v * _local7))));
}
}
}//package away3d.core.geom
Section 18
//ParticleMesh (away3d.core.geom.ParticleMesh)
package away3d.core.geom {
import away3d.dof.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.material.*;
import away3d.core.*;
import flash.utils.*;
public class ParticleMesh extends Mesh3D implements IPrimitiveProvider {
private var segmentGfx:Array;
public var ppe:Number;
private var center:Vertex3D;
public var scaling:Number;
public var r:Number;// = 0
public var blendMode:String;
private var dofEngine:DofEngine;
public var lastVertex:Vertex3D;
public function ParticleMesh(_arg1:IMaterial, _arg2:Object=null){
center = new Vertex3D();
r = 0;
_arg2 = Init.parse(_arg2);
dofEngine = ((_arg2 as Init).getObject("dofEngine", null) as DofEngine);
scaling = (_arg2 as Init).getNumber("scaling", 1);
segmentGfx = new Array();
super(_arg1, _arg2);
}
public function clearSegments():void{
segmentGfx = new Array();
segments = new Array();
}
public function setupSegments():void{
var _local1:Dictionary;
var _local2:Face3D;
var _local3:int;
var _local4:Object;
var _local5:Vertex3D;
var _local6:Dictionary;
var _local7:Object;
var _local8:Vertex3D;
var _local9:BitmapParticleSegment;
_local1 = new Dictionary();
for each (_local2 in faces) {
if (_local1[_local2.v0] == null){
_local1[_local2.v0] = new Dictionary();
};
if (_local1[_local2.v1] == null){
_local1[_local2.v1] = new Dictionary();
};
if (_local1[_local2.v2] == null){
_local1[_local2.v2] = new Dictionary();
};
if ((((_local1[_local2.v0][_local2.v1] == undefined)) && ((_local1[_local2.v1][_local2.v0] == undefined)))){
_local1[_local2.v0][_local2.v1] = true;
};
if ((((_local1[_local2.v0][_local2.v2] == undefined)) && ((_local1[_local2.v2][_local2.v0] == undefined)))){
_local1[_local2.v0][_local2.v2] = true;
};
if ((((_local1[_local2.v1][_local2.v2] == undefined)) && ((_local1[_local2.v2][_local2.v1] == undefined)))){
_local1[_local2.v1][_local2.v2] = true;
};
};
_local3 = 0;
segmentGfx = new Array();
for (_local4 in _local1) {
_local5 = (_local4 as Vertex3D);
_local6 = _local1[_local4];
for (_local7 in _local6) {
_local8 = (_local7 as Vertex3D);
segments.push(new Segment3D(_local5, _local8));
_local9 = new BitmapParticleSegment();
_local9.ppe = ppe;
segmentGfx.push(_local9);
_local3++;
};
};
}
override public function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void{
var _local3:Vertex2D;
var _local4:Vertex2D;
var _local5:Vertex2D;
var _local6:BitmapParticleSegment;
var _local7:int;
var _local8:Segment3D;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local7 = 0;
for each (_local8 in segments) {
_local6 = segmentGfx[_local7];
_local3 = _local8.v0.project(_arg1);
_local4 = _local8.v1.project(_arg1);
_local9 = (_arg1.zoom / (1 + (_local3.z / _arg1.focus)));
_local10 = (_arg1.zoom / (1 + (_local4.z / _arg1.focus)));
_local11 = (((_local9 - 3) / 2) + 0.5);
_local12 = (((_local10 - 3) / 2) + 0.5);
_local6.bitmap = dofEngine.getBitmap(((_local3.z + _local4.z) / 2));
_local6.update(_local3, _local4, (_local9 * scaling), (_local10 * scaling), Math.min((_local11 * _local11), 1), Math.min(1, (_local12 * _local12)), r);
_arg2.primitive(_local6);
_local7++;
};
}
public function appendSegment(_arg1:Vertex3D, _arg2:Number=1, _arg3:String="normal"):void{
var _local4:Segment3D;
var _local5:BitmapParticleSegment;
_local4 = new Segment3D(lastVertex, new Vertex3D(_arg1.x, _arg1.y, _arg1.z));
segments.push(_local4);
_local5 = new BitmapParticleSegment();
_local5.ppe = ppe;
_local5.scale = _arg2;
_local5.blendMode = _arg3;
segmentGfx.push(_local5);
lastVertex = _local4.v1;
}
}
}//package away3d.core.geom
Section 19
//Segment3D (away3d.core.geom.Segment3D)
package away3d.core.geom {
import away3d.core.material.*;
public class Segment3D {
public var v0:Vertex3D;
public var v1:Vertex3D;
public var material:ISegmentMaterial;
public function Segment3D(_arg1:Vertex3D, _arg2:Vertex3D, _arg3:ISegmentMaterial=null){
this.v0 = _arg1;
this.v1 = _arg2;
this.material = _arg3;
}
}
}//package away3d.core.geom
Section 20
//Vertex3D (away3d.core.geom.Vertex3D)
package away3d.core.geom {
import away3d.core.math.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.physics.*;
public class Vertex3D extends ChildObject3D {
protected var _y:Number;
public var extra:Object;
private var projection:Projection;
private var projected:Vertex2D;
protected var _x:Number;
protected var _z:Number;
public function Vertex3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
_x = _arg1;
_y = _arg2;
_z = _arg3;
oldPosition = position;
}
public function get y():Number{
return (_y);
}
public function project(_arg1:Projection):Vertex2D{
var _local2:Matrix3D;
var _local3:Number;
var _local4:Number;
if (this.projection == _arg1){
return (projected);
};
this.projection = _arg1;
if (projected == null){
projected = new Vertex2D();
};
_local2 = _arg1.view;
_local3 = ((((x * _local2.n31) + (y * _local2.n32)) + (z * _local2.n33)) + _local2.n34);
if ((_local3 * 2) <= -(_arg1.focus)){
projected.visible = false;
return (projected);
};
projected.visible = true;
_local4 = (_arg1.zoom / (1 + (_local3 / _arg1.focus)));
projected.z = _local3;
projected.x = (((((x * _local2.n11) + (y * _local2.n12)) + (z * _local2.n13)) + _local2.n14) * _local4);
projected.y = (((((x * _local2.n21) + (y * _local2.n22)) + (z * _local2.n23)) + _local2.n24) * _local4);
return (projected);
}
public function get x():Number{
return (_x);
}
override public function get position():Number3D{
return (new Number3D(x, y, z));
}
public function perspective(_arg1:Number):Vertex2D{
var _local2:Number;
_local2 = (1 / (1 + (z / _arg1)));
return (new Vertex2D((x * _local2), (y * _local2), z));
}
override public function set position(_arg1:Number3D):void{
x = _arg1.x;
y = _arg1.y;
z = _arg1.z;
}
public function set(_arg1:Number, _arg2:Number, _arg3:Number):void{
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
public function set x(_arg1:Number):void{
_x = (oldPosition.x = _arg1);
}
public function set y(_arg1:Number):void{
_y = (oldPosition.y = _arg1);
}
public function toString():String{
return ((((((("Vertex3D(" + x) + ", ") + y) + ", ") + z) + ")"));
}
public function set z(_arg1:Number):void{
_z = (oldPosition.z = _arg1);
}
public function get z():Number{
return (_z);
}
public static function median(_arg1:Vertex3D, _arg2:Vertex3D):Vertex3D{
return (new Vertex3D(((_arg1.x + _arg2.x) / 2), ((_arg1.y + _arg2.y) / 2), ((_arg1.z + _arg2.z) / 2)));
}
public static function weighted(_arg1:Vertex3D, _arg2:Vertex3D, _arg3:Number, _arg4:Number):Vertex3D{
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local5 = (_arg3 + _arg4);
_local6 = (_arg3 / _local5);
_local7 = (_arg4 / _local5);
return (new Vertex3D(((_arg1.x * _local6) + (_arg2.x * _local7)), ((_arg1.y * _local6) + (_arg2.y * _local7)), ((_arg1.z * _local6) + (_arg2.z * _local7))));
}
}
}//package away3d.core.geom
Section 21
//Vertices3D (away3d.core.geom.Vertices3D)
package away3d.core.geom {
import away3d.core.proto.*;
public class Vertices3D extends Object3D {
public var height:Number;// = 100
public var yMax:Number;// = -1000000
public var yMin:Number;// = 1000000
public var wrap:Boolean;// = true
public var minradius:Number;// = 0
public var particle:Vertex3D;
public var zMax:Number;// = -1000000
public var zMin:Number;// = 1000000
public var particles:Array;
public var xMin:Number;// = 1000000
public var depth:Number;// = 100
public var width:Number;// = 100
public var xMax:Number;// = -1000000
public var length:Number;
public var maxradius:Number;// = -1
public var vertices:Array;
public function Vertices3D(_arg1:Object=null){
vertices = [];
particles = [];
maxradius = -1;
minradius = 0;
xMin = 1000000;
xMax = -1000000;
yMin = 1000000;
yMax = -1000000;
zMin = 1000000;
zMax = -1000000;
width = 100;
height = 100;
depth = 100;
wrap = true;
super(_arg1);
}
public function addVertex3D(_arg1:Vertex3D):Vertex3D{
if (_arg1 == null){
throw (new Error("Vertices3D.addVertex(null)"));
};
if (_arg1.parent == this){
return (_arg1);
};
_arg1.parent = null;
vertices.push(_arg1);
_arg1._parent = this;
_arg1.scenePosition = sceneTransform.transformPoint(_arg1.position);
return (_arg1);
}
}
}//package away3d.core.geom
Section 22
//BitmapMaterial (away3d.core.material.BitmapMaterial)
package away3d.core.material {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.*;
import flash.geom.*;
public class BitmapMaterial implements ITriangleMaterial, IUVMaterial {
var v1:Vertex2D;
public var bounce:Number;
public var friction:Number;
var graphics:Graphics;
var mapping:Matrix;
public var debug:Boolean;
public var blendMode:String;// = "normal"
public var repeat:Boolean;
protected var mat:Matrix;
public var smooth:Boolean;
public var bitmap:BitmapData;
public var ct:ColorTransform;
public var traction:Number;
protected var spr:Sprite;
var v0:Vertex2D;
var v2:Vertex2D;
public function BitmapMaterial(_arg1:BitmapData, _arg2:Object=null){
blendMode = BlendMode.NORMAL;
ct = new ColorTransform();
spr = new Sprite();
mat = new Matrix();
super();
this.bitmap = _arg1;
_arg2 = Init.parse(_arg2);
smooth = _arg2.getBoolean("smooth", false);
debug = _arg2.getBoolean("debug", false);
repeat = _arg2.getBoolean("repeat", false);
}
public function get width():Number{
return (bitmap.width);
}
private function render(_arg1:DrawTriangle, _arg2:Graphics):void{
mapping = ((_arg1.texturemapping) || (_arg1.transformUV(this)));
v0 = _arg1.v0;
v1 = _arg1.v1;
v2 = _arg1.v2;
RenderTriangle.renderBitmap(_arg2, bitmap, mapping.a, mapping.b, mapping.c, mapping.d, mapping.tx, mapping.ty, v0.x, v0.y, v1.x, v1.y, v2.x, v2.y, smooth, repeat);
}
public function bitmapRenderTriangle(_arg1:DrawTriangle, _arg2:BitmapData, _arg3:Number, _arg4:Number):void{
spr.graphics.clear();
render(_arg1, spr.graphics);
mat.tx = _arg3;
mat.ty = _arg4;
_arg2.draw(spr, mat, ct, blendMode);
}
public function get height():Number{
return (bitmap.height);
}
public function get visible():Boolean{
return (true);
}
public function renderTriangle(_arg1:DrawTriangle, _arg2:RenderSession):void{
render(_arg1, _arg2.graphics);
}
}
}//package away3d.core.material
Section 23
//CenterLightingMaterial (away3d.core.material.CenterLightingMaterial)
package away3d.core.material {
import flash.display.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.*;
public class CenterLightingMaterial implements ITriangleMaterial {
public var draw_normal:Boolean;// = false
public var draw_fall_k:Number;// = 1
public var diffuse_brightness:Number;// = 1
public var draw_reflect:Boolean;// = false
public var draw_fall:Boolean;// = false
public var ambient_brightness:Number;// = 1
public var specular_brightness:Number;// = 1
public var ak:Number;// = 20
public var draw_reflect_k:Number;// = 1
public function CenterLightingMaterial(_arg1:Object=null){
ambient_brightness = 1;
diffuse_brightness = 1;
specular_brightness = 1;
ak = 20;
draw_normal = false;
draw_fall = false;
draw_fall_k = 1;
draw_reflect = false;
draw_reflect_k = 1;
super();
_arg1 = Init.parse(_arg1);
ak = _arg1.getNumber("ak", 20);
}
public function bitmapRenderTriangle(_arg1:DrawTriangle, _arg2:BitmapData, _arg3:Number, _arg4:Number):void{
}
public function get visible():Boolean{
throw (new Error("Not implemented"));
}
public function renderTri(_arg1:DrawTriangle, _arg2:RenderSession, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number):void{
throw (new Error("Not implemented"));
}
public function renderTriangle(_arg1:DrawTriangle, _arg2:RenderSession):void{
var _local3:Vertex2D;
var _local4:Vertex2D;
var _local5:Vertex2D;
var _local6:Projection;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:PointLightSource;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Number;
var _local53:Number;
var _local54:Number;
var _local55:Number;
var _local56:Number;
var _local57:Number;
var _local58:Number;
var _local59:Graphics;
var _local60:Number;
var _local61:Number;
var _local62:Number;
var _local63:Number;
var _local64:Number;
var _local65:Number;
var _local66:Number;
var _local67:Number;
var _local68:Number;
var _local69:Number;
var _local70:Number;
var _local71:Number;
var _local72:Number;
var _local73:Number;
var _local74:Number;
var _local75:Number;
_local3 = _arg1.v0;
_local4 = _arg1.v1;
_local5 = _arg1.v2;
_local6 = _arg1.projection;
_local7 = _local6.focus;
_local8 = _local6.zoom;
_local9 = _local3.z;
_local10 = ((1 + (_local9 / _local7)) / _local8);
_local11 = (_local3.x * _local10);
_local12 = (_local3.y * _local10);
_local13 = _local4.z;
_local14 = ((1 + (_local13 / _local7)) / _local8);
_local15 = (_local4.x * _local14);
_local16 = (_local4.y * _local14);
_local17 = _local5.z;
_local18 = ((1 + (_local17 / _local7)) / _local8);
_local19 = (_local5.x * _local18);
_local20 = (_local5.y * _local18);
_local21 = (_local15 - _local11);
_local22 = (_local16 - _local12);
_local23 = (_local13 - _local9);
_local24 = (_local19 - _local11);
_local25 = (_local20 - _local12);
_local26 = (_local17 - _local9);
_local27 = ((_local22 * _local26) - (_local23 * _local25));
_local28 = ((_local23 * _local24) - (_local21 * _local26));
_local29 = ((_local21 * _local25) - (_local22 * _local24));
_local30 = Math.sqrt((((_local27 * _local27) + (_local28 * _local28)) + (_local29 * _local29)));
_local27 = (_local27 / _local30);
_local28 = (_local28 / _local30);
_local29 = (_local29 / _local30);
_local31 = (((_local11 + _local15) + _local19) / 3);
_local32 = (((_local12 + _local16) + _local20) / 3);
_local33 = (((_local9 + _local13) + _local17) / 3);
_local34 = 0;
_local35 = 0;
_local36 = 0;
_local37 = 0;
_local38 = 0;
_local39 = 0;
_local40 = 0;
_local41 = 0;
_local42 = 0;
for each (_local43 in _arg2.lightarray.points) {
_local44 = _local43.red;
_local45 = _local43.green;
_local46 = _local43.blue;
_local47 = (_local43.x - _local31);
_local48 = (_local43.y - _local32);
_local49 = (_local43.z - _local33);
_local50 = Math.sqrt((((_local47 * _local47) + (_local48 * _local48)) + (_local49 * _local49)));
_local47 = (_local47 / _local50);
_local48 = (_local48 / _local50);
_local49 = (_local49 / _local50);
_local51 = ((1 / _local50) / _local50);
_local52 = ((_local43.ambient * _local51) * ambient_brightness);
_local34 = (_local34 + (_local44 * _local52));
_local35 = (_local35 + (_local45 * _local52));
_local36 = (_local36 + (_local46 * _local52));
_local53 = (((_local47 * _local27) + (_local48 * _local28)) + (_local49 * _local29));
if (_local53 < 0){
} else {
_local54 = (((_local43.diffuse * _local51) * _local53) * diffuse_brightness);
_local37 = (_local37 + (_local44 * _local54));
_local38 = (_local38 + (_local45 * _local54));
_local39 = (_local39 + (_local46 * _local54));
_local55 = (_local47 - ((2 * _local53) * _local27));
_local56 = (_local48 - ((2 * _local53) * _local28));
_local57 = (_local49 - ((2 * _local53) * _local29));
if (_local57 < 0){
} else {
_local58 = (((_local43.specular * _local51) * Math.pow(_local57, ak)) * specular_brightness);
_local40 = (_local40 + (_local44 * _local58));
_local41 = (_local41 + (_local45 * _local58));
_local42 = (_local42 + (_local46 * _local58));
};
};
};
renderTri(_arg1, _arg2, _local34, _local35, _local36, _local37, _local38, _local39, _local40, _local41, _local42);
if (((((draw_fall) || (draw_reflect))) || (draw_normal))){
_local59 = _arg2.graphics;
_local60 = _local33;
_local61 = ((_local31 * _local8) / (1 + (_local60 / _local7)));
_local62 = ((_local32 * _local8) / (1 + (_local60 / _local7)));
if (draw_normal){
_local63 = (_local33 + (30 * _local29));
_local64 = ((((_local31 + (30 * _local27)) * _local8) * _local7) / (_local7 + _local63));
_local65 = ((((_local32 + (30 * _local28)) * _local8) * _local7) / (_local7 + _local63));
_local59.lineStyle(1, 0, 1);
_local59.moveTo(_local61, _local62);
_local59.lineTo(_local64, _local65);
_local59.moveTo(_local61, _local62);
_local59.drawCircle(_local61, _local62, 2);
};
if (((draw_fall) || (draw_reflect))){
for each (_local43 in _arg2.lightarray.points) {
_local44 = _local43.red;
_local45 = _local43.green;
_local46 = _local43.blue;
_local66 = (((_local44 + _local45) + _local46) / 0xFF);
_local44 = (_local44 / _local66);
_local45 = (_local45 / _local66);
_local46 = (_local46 / _local66);
_local47 = (_local43.x - _local31);
_local48 = (_local43.y - _local32);
_local49 = (_local43.z - _local33);
_local50 = Math.sqrt((((_local47 * _local47) + (_local48 * _local48)) + (_local49 * _local49)));
_local47 = (_local47 / _local50);
_local48 = (_local48 / _local50);
_local49 = (_local49 / _local50);
_local53 = (((_local47 * _local27) + (_local48 * _local28)) + (_local49 * _local29));
if (_local53 < 0){
} else {
if (draw_fall){
_local67 = (_local33 + ((30 * _local49) * (1 - draw_fall_k)));
_local68 = ((((_local31 + ((30 * _local47) * (1 - draw_fall_k))) * _local8) * _local7) / (_local7 + _local67));
_local69 = ((((_local32 + ((30 * _local48) * (1 - draw_fall_k))) * _local8) * _local7) / (_local7 + _local67));
_local70 = (_local33 + (30 * _local49));
_local71 = ((((_local31 + (30 * _local47)) * _local8) * _local7) / (_local7 + _local70));
_local72 = ((((_local32 + (30 * _local48)) * _local8) * _local7) / (_local7 + _local70));
_local59.lineStyle(1, (((int(_local44) * 65536) + (int(_local45) * 0x0100)) + int(_local46)), 1);
_local59.moveTo(_local68, _local69);
_local59.lineTo(_local71, _local72);
_local59.moveTo(_local68, _local69);
};
if (draw_reflect){
_local55 = (_local47 - ((2 * _local53) * _local27));
_local56 = (_local48 - ((2 * _local53) * _local28));
_local57 = (_local49 - ((2 * _local53) * _local29));
_local73 = (_local33 - ((30 * _local57) * draw_reflect_k));
_local74 = ((((_local31 - ((30 * _local55) * draw_reflect_k)) * _local8) * _local7) / (_local7 + _local73));
_local75 = ((((_local32 - ((30 * _local56) * draw_reflect_k)) * _local8) * _local7) / (_local7 + _local73));
_local59.lineStyle(1, (((int((_local44 / 2)) * 65536) + (int((_local45 / 2)) * 0x0100)) + int((_local46 / 2))), 1);
_local59.moveTo(_local61, _local62);
_local59.lineTo(_local74, _local75);
_local59.moveTo(_local61, _local62);
};
};
};
};
};
}
}
}//package away3d.core.material
Section 24
//ColorMaterial (away3d.core.material.ColorMaterial)
package away3d.core.material {
public class ColorMaterial extends WireColorMaterial {
public function ColorMaterial(_arg1:int=-1, _arg2:Number=1){
if (_arg1 == -1){
_arg1 = int((0xFFFFFF * Math.random()));
};
super(_arg1, 0, _arg2, 0, 0);
}
}
}//package away3d.core.material
Section 25
//IMaterial (away3d.core.material.IMaterial)
package away3d.core.material {
public interface IMaterial {
function get visible():Boolean;
}
}//package away3d.core.material
Section 26
//ISegmentMaterial (away3d.core.material.ISegmentMaterial)
package away3d.core.material {
import away3d.core.draw.*;
import away3d.core.render.*;
public interface ISegmentMaterial extends IMaterial {
function renderSegment(_arg1:DrawSegment, _arg2:RenderSession):void;
}
}//package away3d.core.material
Section 27
//ITriangleMaterial (away3d.core.material.ITriangleMaterial)
package away3d.core.material {
import flash.display.*;
import away3d.core.draw.*;
import away3d.core.render.*;
public interface ITriangleMaterial extends IMaterial {
function bitmapRenderTriangle(_arg1:DrawTriangle, _arg2:BitmapData, _arg3:Number, _arg4:Number):void;
function renderTriangle(_arg1:DrawTriangle, _arg2:RenderSession):void;
}
}//package away3d.core.material
Section 28
//IUVMaterial (away3d.core.material.IUVMaterial)
package away3d.core.material {
public interface IUVMaterial extends IMaterial {
function get width():Number;
function get height():Number;
}
}//package away3d.core.material
Section 29
//RenderTriangle (away3d.core.material.RenderTriangle)
package away3d.core.material {
import flash.display.*;
import flash.geom.*;
public class RenderTriangle {
private static var matrix:Matrix = new Matrix();
public static function renderBitmap(_arg1:Graphics, _arg2:BitmapData, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Number, _arg15:Boolean, _arg16:Boolean):void{
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
_local17 = (_arg11 - _arg9);
_local18 = (_arg12 - _arg10);
_local19 = (_arg13 - _arg9);
_local20 = (_arg14 - _arg10);
matrix.a = ((_arg3 * _local17) + (_arg4 * _local19));
matrix.b = ((_arg3 * _local18) + (_arg4 * _local20));
matrix.c = ((_arg5 * _local17) + (_arg6 * _local19));
matrix.d = ((_arg5 * _local18) + (_arg6 * _local20));
matrix.tx = (((_arg7 * _local17) + (_arg8 * _local19)) + _arg9);
matrix.ty = (((_arg7 * _local18) + (_arg8 * _local20)) + _arg10);
_arg1.lineStyle();
_arg1.beginBitmapFill(_arg2, matrix, _arg16, ((_arg15) && (((((_arg9 * (_arg14 - _arg12)) + (_arg11 * (_arg10 - _arg14))) + (_arg13 * (_arg12 - _arg10))) > 400))));
_arg1.moveTo(_arg9, _arg10);
_arg1.lineTo(_arg11, _arg12);
_arg1.lineTo(_arg13, _arg14);
_arg1.endFill();
}
public static function renderColor(_arg1:Graphics, _arg2:int, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number):void{
_arg1.lineStyle();
_arg1.beginFill(_arg2, _arg3);
_arg1.moveTo(_arg4, _arg5);
_arg1.lineTo(_arg6, _arg7);
_arg1.lineTo(_arg8, _arg9);
_arg1.endFill();
}
}
}//package away3d.core.material
Section 30
//ShadingColorMaterial (away3d.core.material.ShadingColorMaterial)
package away3d.core.material {
import away3d.core.math.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.*;
public class ShadingColorMaterial extends CenterLightingMaterial {
public var specular:int;
public var ambient:int;
public var diffuse:int;
public function ShadingColorMaterial(_arg1:Object=null){
var _local2:int;
super(_arg1);
_arg1 = Init.parse(_arg1);
_local2 = _arg1.getColor("color", 0xFFFFFF);
ambient = _arg1.getColor("ambient", _local2);
diffuse = _arg1.getColor("diffuse", _local2);
specular = _arg1.getColor("specular", _local2);
}
override public function get visible():Boolean{
return (true);
}
override public function renderTri(_arg1:DrawTriangle, _arg2:RenderSession, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number):void{
var _local12:Vertex2D;
var _local13:Vertex2D;
var _local14:Vertex2D;
var _local15:int;
var _local16:int;
var _local17:int;
var _local18:int;
_local12 = _arg1.v0;
_local13 = _arg1.v1;
_local14 = _arg1.v2;
_local15 = int((((((ambient & 0xFF0000) * _arg3) + ((diffuse & 0xFF0000) * _arg6)) + ((specular & 0xFF0000) * _arg9)) >> 16));
_local16 = int((((((ambient & 0xFF00) * _arg4) + ((diffuse & 0xFF00) * _arg7)) + ((specular & 0xFF00) * _arg10)) >> 8));
_local17 = int(((((ambient & 0xFF) * _arg5) + ((diffuse & 0xFF) * _arg8)) + ((specular & 0xFF) * _arg11)));
if (_local15 > 0xFF){
_local15 = 0xFF;
};
if (_local16 > 0xFF){
_local16 = 0xFF;
};
if (_local17 > 0xFF){
_local17 = 0xFF;
};
_local18 = ((int((_local15 * 65536)) + int((_local16 * 0x0100))) + _local17);
_arg2.renderTriangleColor(_local18, 1, _local12.x, _local12.y, _local13.x, _local13.y, _local14.x, _local14.y);
}
}
}//package away3d.core.material
Section 31
//WireColorMaterial (away3d.core.material.WireColorMaterial)
package away3d.core.material {
import flash.display.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import flash.geom.*;
public class WireColorMaterial implements ITriangleMaterial, ISegmentMaterial {
public var lineAlpha:Number;
var graphics:Graphics;
public var fillAlpha:Number;
public var lineColor:int;
public var fillColor:int;
private var mat:Matrix;
public var lineWidth:Number;
private var spr:Sprite;
public function WireColorMaterial(_arg1:int=-1, _arg2:int=0, _arg3:Number=1, _arg4:Number=1, _arg5:Number=1){
spr = new Sprite();
mat = new Matrix();
super();
if (_arg1 == -1){
_arg1 = int((0xFFFFFF * Math.random()));
};
fillColor = _arg1;
lineColor = _arg2;
fillAlpha = _arg3;
lineAlpha = _arg4;
lineWidth = _arg5;
}
public function bitmapRenderTriangle(_arg1:DrawTriangle, _arg2:BitmapData, _arg3:Number, _arg4:Number):void{
graphics = spr.graphics;
graphics.clear();
if (lineAlpha > 0){
graphics.lineStyle(lineWidth, lineColor, lineAlpha);
} else {
graphics.lineStyle();
};
if (fillAlpha > 0){
graphics.beginFill(fillColor, fillAlpha);
};
graphics.moveTo(_arg1.v0.x, _arg1.v0.y);
graphics.lineTo(_arg1.v1.x, _arg1.v1.y);
graphics.lineTo(_arg1.v2.x, _arg1.v2.y);
if (lineAlpha > 0){
graphics.lineTo(_arg1.v0.x, _arg1.v0.y);
};
if (fillAlpha > 0){
graphics.endFill();
};
mat.identity();
mat.tx = _arg3;
mat.ty = _arg4;
_arg2.draw(spr, mat);
}
public function get visible():Boolean{
return ((((fillAlpha > 0)) || ((lineAlpha > 0))));
}
public function renderSegment(_arg1:DrawSegment, _arg2:RenderSession):void{
if (lineAlpha > 0){
graphics = _arg2.graphics;
graphics.lineStyle(lineWidth, lineColor, lineAlpha);
graphics.moveTo(_arg1.v0.x, _arg1.v0.y);
graphics.lineTo(_arg1.v1.x, _arg1.v1.y);
graphics.moveTo(_arg1.v0.x, _arg1.v0.y);
};
}
public function renderTriangle(_arg1:DrawTriangle, _arg2:RenderSession):void{
graphics = _arg2.graphics;
if (lineAlpha > 0){
graphics.lineStyle(lineWidth, lineColor, lineAlpha);
} else {
graphics.lineStyle();
};
if (fillAlpha > 0){
graphics.beginFill(fillColor, fillAlpha);
};
graphics.moveTo(_arg1.v0.x, _arg1.v0.y);
graphics.lineTo(_arg1.v1.x, _arg1.v1.y);
graphics.lineTo(_arg1.v2.x, _arg1.v2.y);
if (lineAlpha > 0){
graphics.lineTo(_arg1.v0.x, _arg1.v0.y);
};
if (fillAlpha > 0){
graphics.endFill();
};
}
}
}//package away3d.core.material
Section 32
//Matrix3D (away3d.core.math.Matrix3D)
package away3d.core.math {
public class Matrix3D {
public var n31:Number;
public var n32:Number;
public var n11:Number;
public var n13:Number;
public var n14:Number;
public var n33:Number;
public var n12:Number;
public var n21:Number;
public var n22:Number;
public var n23:Number;
public var n24:Number;
public var n34:Number;
private static var toDEGREES:Number = (180 / Math.PI);
private static var toRADIANS:Number = (Math.PI / 180);
public function Matrix3D(){
n11 = (n22 = (n33 = 1));
n12 = (n13 = (n14 = (n21 = (n23 = (n24 = (n31 = (n32 = (n34 = 0))))))));
}
public function transformPoint(_arg1:Number3D):Number3D{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = _arg1.x;
_local3 = _arg1.y;
_local4 = _arg1.z;
return (new Number3D(((((n11 * _local2) + (n12 * _local3)) + (n13 * _local4)) + n14), ((((n21 * _local2) + (n22 * _local3)) + (n23 * _local4)) + n24), ((((n31 * _local2) + (n32 * _local3)) + (n33 * _local4)) + n34)));
}
public function scale(_arg1:Number, _arg2:Number, _arg3:Number):void{
n11 = (n11 * _arg1);
n21 = (n21 * _arg1);
n31 = (n31 * _arg1);
n12 = (n12 * _arg2);
n22 = (n22 * _arg2);
n32 = (n32 * _arg2);
n13 = (n13 * _arg3);
n23 = (n23 * _arg3);
n33 = (n33 * _arg3);
}
public function get det():Number{
return ((((((n11 * n22) - (n21 * n12)) * n33) - (((n11 * n32) - (n31 * n12)) * n23)) + (((n21 * n32) - (n31 * n22)) * n13)));
}
public function copy3x3(_arg1:Matrix3D):Matrix3D{
n11 = _arg1.n11;
n12 = _arg1.n12;
n13 = _arg1.n13;
n21 = _arg1.n21;
n22 = _arg1.n22;
n23 = _arg1.n23;
n31 = _arg1.n31;
n32 = _arg1.n32;
n33 = _arg1.n33;
return (this);
}
public function clone():Matrix3D{
var _local1:Matrix3D;
_local1 = new Matrix3D();
_local1.n11 = n11;
_local1.n12 = n12;
_local1.n13 = n13;
_local1.n14 = n14;
_local1.n21 = n21;
_local1.n22 = n22;
_local1.n23 = n23;
_local1.n24 = n24;
_local1.n31 = n31;
_local1.n32 = n32;
_local1.n33 = n33;
_local1.n34 = n34;
return (_local1);
}
public function toString():String{
var _local1:String;
_local1 = "";
_local1 = (_local1 + ((((((((int((n11 * 1000)) / 1000) + "\t\t") + (int((n12 * 1000)) / 1000)) + "\t\t") + (int((n13 * 1000)) / 1000)) + "\t\t") + (int((n14 * 1000)) / 1000)) + "\n"));
_local1 = (_local1 + ((((((((int((n21 * 1000)) / 1000) + "\t\t") + (int((n22 * 1000)) / 1000)) + "\t\t") + (int((n23 * 1000)) / 1000)) + "\t\t") + (int((n24 * 1000)) / 1000)) + "\n"));
_local1 = (_local1 + ((((((((int((n31 * 1000)) / 1000) + "\t\t") + (int((n32 * 1000)) / 1000)) + "\t\t") + (int((n33 * 1000)) / 1000)) + "\t\t") + (int((n34 * 1000)) / 1000)) + "\n"));
return (_local1);
}
public static function multiply(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
var _local3:Matrix3D;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
_local3 = new (Matrix3D);
_local4 = _arg1.n11;
_local5 = _arg2.n11;
_local6 = _arg1.n21;
_local7 = _arg2.n21;
_local8 = _arg1.n31;
_local9 = _arg2.n31;
_local10 = _arg1.n12;
_local11 = _arg2.n12;
_local12 = _arg1.n22;
_local13 = _arg2.n22;
_local14 = _arg1.n32;
_local15 = _arg2.n32;
_local16 = _arg1.n13;
_local17 = _arg2.n13;
_local18 = _arg1.n23;
_local19 = _arg2.n23;
_local20 = _arg1.n33;
_local21 = _arg2.n33;
_local22 = _arg1.n14;
_local23 = _arg2.n14;
_local24 = _arg1.n24;
_local25 = _arg2.n24;
_local26 = _arg1.n34;
_local27 = _arg2.n34;
_local3.n11 = (((_local4 * _local5) + (_local10 * _local7)) + (_local16 * _local9));
_local3.n12 = (((_local4 * _local11) + (_local10 * _local13)) + (_local16 * _local15));
_local3.n13 = (((_local4 * _local17) + (_local10 * _local19)) + (_local16 * _local21));
_local3.n14 = ((((_local4 * _local23) + (_local10 * _local25)) + (_local16 * _local27)) + _local22);
_local3.n21 = (((_local6 * _local5) + (_local12 * _local7)) + (_local18 * _local9));
_local3.n22 = (((_local6 * _local11) + (_local12 * _local13)) + (_local18 * _local15));
_local3.n23 = (((_local6 * _local17) + (_local12 * _local19)) + (_local18 * _local21));
_local3.n24 = ((((_local6 * _local23) + (_local12 * _local25)) + (_local18 * _local27)) + _local24);
_local3.n31 = (((_local8 * _local5) + (_local14 * _local7)) + (_local20 * _local9));
_local3.n32 = (((_local8 * _local11) + (_local14 * _local13)) + (_local20 * _local15));
_local3.n33 = (((_local8 * _local17) + (_local14 * _local19)) + (_local20 * _local21));
_local3.n34 = ((((_local8 * _local23) + (_local14 * _local25)) + (_local20 * _local27)) + _local26);
return (_local3);
}
public static function euler2quaternion(_arg1:Number, _arg2:Number, _arg3:Number):Quaternion{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Quaternion;
_local4 = Math.sin((_arg1 * 0.5));
_local5 = Math.cos((_arg1 * 0.5));
_local6 = Math.sin((_arg2 * 0.5));
_local7 = Math.cos((_arg2 * 0.5));
_local8 = Math.sin((_arg3 * 0.5));
_local9 = Math.cos((_arg3 * 0.5));
_local10 = (_local5 * _local7);
_local11 = (_local4 * _local6);
_local12 = new Quaternion();
_local12.x = ((_local8 * _local10) - (_local9 * _local11));
_local12.y = (((_local9 * _local4) * _local7) + ((_local8 * _local5) * _local6));
_local12.z = (((_local9 * _local5) * _local6) - ((_local8 * _local4) * _local7));
_local12.w = ((_local9 * _local10) + (_local8 * _local11));
return (_local12);
}
public static function multiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
var _local3:Matrix3D;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
_local3 = new (Matrix3D);
_local4 = _arg1.n11;
_local5 = _arg2.n11;
_local6 = _arg1.n21;
_local7 = _arg2.n21;
_local8 = _arg1.n31;
_local9 = _arg2.n31;
_local10 = _arg1.n12;
_local11 = _arg2.n12;
_local12 = _arg1.n22;
_local13 = _arg2.n22;
_local14 = _arg1.n32;
_local15 = _arg2.n32;
_local16 = _arg1.n13;
_local17 = _arg2.n13;
_local18 = _arg1.n23;
_local19 = _arg2.n23;
_local20 = _arg1.n33;
_local21 = _arg2.n33;
_local3.n11 = (((_local4 * _local5) + (_local10 * _local7)) + (_local16 * _local9));
_local3.n12 = (((_local4 * _local11) + (_local10 * _local13)) + (_local16 * _local15));
_local3.n13 = (((_local4 * _local17) + (_local10 * _local19)) + (_local16 * _local21));
_local3.n21 = (((_local6 * _local5) + (_local12 * _local7)) + (_local18 * _local9));
_local3.n22 = (((_local6 * _local11) + (_local12 * _local13)) + (_local18 * _local15));
_local3.n23 = (((_local6 * _local17) + (_local12 * _local19)) + (_local18 * _local21));
_local3.n31 = (((_local8 * _local5) + (_local14 * _local7)) + (_local20 * _local9));
_local3.n32 = (((_local8 * _local11) + (_local14 * _local13)) + (_local20 * _local15));
_local3.n33 = (((_local8 * _local17) + (_local14 * _local19)) + (_local20 * _local21));
_local3.n14 = _arg1.n14;
_local3.n24 = _arg1.n24;
_local3.n34 = _arg1.n34;
return (_local3);
}
public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Matrix3D;
_local4 = new (Matrix3D);
_local4.n11 = _arg1;
_local4.n22 = _arg2;
_local4.n33 = _arg3;
return (_local4);
}
public static function fromArray(_arg1:Array):Matrix3D{
var _local2:Matrix3D;
_local2 = new (Matrix3D);
if (_arg1.length >= 12){
_local2.n11 = _arg1[0];
_local2.n12 = _arg1[1];
_local2.n13 = _arg1[2];
_local2.n14 = _arg1[3];
_local2.n21 = _arg1[4];
_local2.n22 = _arg1[5];
_local2.n23 = _arg1[6];
_local2.n24 = _arg1[7];
_local2.n31 = _arg1[8];
_local2.n32 = _arg1[9];
_local2.n33 = _arg1[10];
_local2.n34 = _arg1[11];
};
return (_local2);
}
public static function inverse(_arg1:Matrix3D):Matrix3D{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Matrix3D;
_local2 = _arg1.det;
if (Math.abs(_local2) < 0.001){
return (null);
};
_local2 = (1 / _local2);
_local3 = _arg1.n11;
_local4 = _arg1.n21;
_local5 = _arg1.n31;
_local6 = _arg1.n12;
_local7 = _arg1.n22;
_local8 = _arg1.n32;
_local9 = _arg1.n13;
_local10 = _arg1.n23;
_local11 = _arg1.n33;
_local12 = _arg1.n14;
_local13 = _arg1.n24;
_local14 = _arg1.n34;
_local15 = new (Matrix3D);
_local15.n11 = (_local2 * ((_local7 * _local11) - (_local8 * _local10)));
_local15.n12 = (-(_local2) * ((_local6 * _local11) - (_local8 * _local9)));
_local15.n13 = (_local2 * ((_local6 * _local10) - (_local7 * _local9)));
_local15.n14 = (-(_local2) * (((_local6 * ((_local10 * _local14) - (_local11 * _local13))) - (_local7 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local8 * ((_local9 * _local13) - (_local10 * _local12)))));
_local15.n21 = (-(_local2) * ((_local4 * _local11) - (_local5 * _local10)));
_local15.n22 = (_local2 * ((_local3 * _local11) - (_local5 * _local9)));
_local15.n23 = (-(_local2) * ((_local3 * _local10) - (_local4 * _local9)));
_local15.n24 = (_local2 * (((_local3 * ((_local10 * _local14) - (_local11 * _local13))) - (_local4 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local5 * ((_local9 * _local13) - (_local10 * _local12)))));
_local15.n31 = (_local2 * ((_local4 * _local8) - (_local5 * _local7)));
_local15.n32 = (-(_local2) * ((_local3 * _local8) - (_local5 * _local6)));
_local15.n33 = (_local2 * ((_local3 * _local7) - (_local4 * _local6)));
_local15.n34 = (-(_local2) * (((_local3 * ((_local7 * _local14) - (_local8 * _local13))) - (_local4 * ((_local6 * _local14) - (_local8 * _local12)))) + (_local5 * ((_local6 * _local13) - (_local7 * _local12)))));
return (_local15);
}
public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Matrix3D;
_local4 = new (Matrix3D);
_local4.n14 = _arg1;
_local4.n24 = _arg2;
_local4.n34 = _arg3;
return (_local4);
}
public static function quaternion2matrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix3D{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Matrix3D;
_local5 = (_arg1 * _arg1);
_local6 = (_arg1 * _arg2);
_local7 = (_arg1 * _arg3);
_local8 = (_arg1 * _arg4);
_local9 = (_arg2 * _arg2);
_local10 = (_arg2 * _arg3);
_local11 = (_arg2 * _arg4);
_local12 = (_arg3 * _arg3);
_local13 = (_arg3 * _arg4);
_local14 = new (Matrix3D);
_local14.n11 = (1 - (2 * (_local9 + _local12)));
_local14.n12 = (2 * (_local6 - _local13));
_local14.n13 = (2 * (_local7 + _local11));
_local14.n21 = (2 * (_local6 + _local13));
_local14.n22 = (1 - (2 * (_local5 + _local12)));
_local14.n23 = (2 * (_local10 - _local8));
_local14.n31 = (2 * (_local7 - _local11));
_local14.n32 = (2 * (_local10 + _local8));
_local14.n33 = (1 - (2 * (_local5 + _local9)));
return (_local14);
}
public static function matrix2euler(_arg1:Matrix3D):Number3D{
var _local2:Number3D;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local2 = new Number3D();
_local3 = -(Math.asin(Math.max(-1, Math.min(1, _arg1.n13))));
_local4 = Math.cos(_local3);
_local2.y = (_local3 * toDEGREES);
if (Math.abs(_local4) > 0.005){
_local5 = (_arg1.n33 / _local4);
_local6 = (-(_arg1.n23) / _local4);
_local2.x = (Math.atan2(_local6, _local5) * toDEGREES);
_local5 = (_arg1.n11 / _local4);
_local6 = (-(_arg1.n12) / _local4);
_local2.z = (Math.atan2(_local6, _local5) * toDEGREES);
} else {
_local2.x = 0;
_local5 = _arg1.n22;
_local6 = _arg1.n21;
_local2.z = (Math.atan2(_local6, _local5) * toDEGREES);
};
return (_local2);
}
public static function get IDENTITY():Matrix3D{
return (new (Matrix3D));
}
public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix3D{
var _local5:Matrix3D;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
_local5 = new (Matrix3D);
_local6 = Math.cos(_arg4);
_local7 = Math.sin(_arg4);
_local8 = (1 - _local6);
_local9 = ((_arg1 * _arg2) * _local8);
_local10 = ((_arg2 * _arg3) * _local8);
_local11 = ((_arg1 * _arg3) * _local8);
_local12 = (_local7 * _arg3);
_local13 = (_local7 * _arg2);
_local14 = (_local7 * _arg1);
_local5.n11 = (_local6 + ((_arg1 * _arg1) * _local8));
_local5.n12 = (-(_local12) + _local9);
_local5.n13 = (_local13 + _local11);
_local5.n21 = (_local12 + _local9);
_local5.n22 = (_local6 + ((_arg2 * _arg2) * _local8));
_local5.n23 = (-(_local14) + _local10);
_local5.n31 = (-(_local13) + _local11);
_local5.n32 = (_local14 + _local10);
_local5.n33 = (_local6 + ((_arg3 * _arg3) * _local8));
return (_local5);
}
}
}//package away3d.core.math
Section 33
//Number2D (away3d.core.math.Number2D)
package away3d.core.math {
public class Number2D {
public var x:Number;
public var y:Number;
public static var LEFT:Number2D = new Number2D(-1, 0);
;
public static var DOWN:Number2D = new Number2D(0, -1);
;
public static var UP:Number2D = new Number2D(0, 1);
;
public static var RIGHT:Number2D = new Number2D(1, 0);
;
public function Number2D(_arg1:Number=0, _arg2:Number=0){
this.x = _arg1;
this.y = _arg2;
}
public function normalize():void{
var _local1:Number;
_local1 = modulo;
if (((!((_local1 == 0))) && (!((_local1 == 1))))){
this.x = (this.x / _local1);
this.y = (this.y / _local1);
};
}
public function get modulo():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function toString():String{
return (((("x:" + x) + " y:") + y));
}
public function clone():Number2D{
return (new Number2D(x, y));
}
public static function sub(_arg1:Number2D, _arg2:Number2D):Number2D{
return (new Number2D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)));
}
public static function add(_arg1:Number3D, _arg2:Number3D):Number2D{
return (new Number2D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)));
}
public static function scale(_arg1:Number2D, _arg2:Number):Number2D{
return (new Number2D((_arg1.x * _arg2), (_arg1.y * _arg2)));
}
public static function dot(_arg1:Number2D, _arg2:Number2D):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
}
}//package away3d.core.math
Section 34
//Number3D (away3d.core.math.Number3D)
package away3d.core.math {
public class Number3D {
public var x:Number;
public var y:Number;
public var z:Number;
public static var BACKWARD:Number3D = new Number3D(0, 0, -1);
;
public static var FORWARD:Number3D = new Number3D(0, 0, 1);
;
public static var ZERO:Number3D = new Number3D(0, 0, 0);
;
public static var LEFT:Number3D = new Number3D(-1, 0, 0);
;
public static var DOWN:Number3D = new Number3D(0, -1, 0);
;
public static var UP:Number3D = new Number3D(0, 1, 0);
;
public static var RIGHT:Number3D = new Number3D(1, 0, 0);
;
public function Number3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
public function toString():String{
return (((((("x:" + x) + " y:") + y) + " z:") + z));
}
public function normalize(_arg1:Number=1):void{
var _local2:Number;
_local2 = (modulo * _arg1);
if (((!((_local2 == 0))) && (!((_local2 == 1))))){
x = (x / _local2);
y = (y / _local2);
z = (z / _local2);
};
}
public function get modulo():Number{
return (Math.sqrt(modulo2));
}
public function rotate(_arg1:Matrix3D):Number3D{
var _local2:Number3D;
_local2 = new Number3D((((x * _arg1.n11) + (y * _arg1.n12)) + (z * _arg1.n13)), (((x * _arg1.n21) + (y * _arg1.n22)) + (z * _arg1.n23)), (((x * _arg1.n31) + (y * _arg1.n32)) + (z * _arg1.n33)));
_local2.normalize();
return (_local2);
}
public function get modulo2():Number{
return ((((x * x) + (y * y)) + (z * z)));
}
public function clone():Number3D{
return (new Number3D(x, y, z));
}
public static function cross(_arg1:Number3D, _arg2:Number3D):Number3D{
return (new Number3D(((_arg2.y * _arg1.z) - (_arg2.z * _arg1.y)), ((_arg2.z * _arg1.x) - (_arg2.x * _arg1.z)), ((_arg2.x * _arg1.y) - (_arg2.y * _arg1.x))));
}
public static function add(_arg1:Number3D, _arg2:Number3D):Number3D{
return (new Number3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z)));
}
public static function sub(_arg1:Number3D, _arg2:Number3D):Number3D{
return (new Number3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z)));
}
public static function dot(_arg1:Number3D, _arg2:Number3D):Number{
return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg2.z * _arg1.z)));
}
public static function scale(_arg1:Number3D, _arg2:Number):Number3D{
return (new Number3D((_arg1.x * _arg2), (_arg1.y * _arg2), (_arg1.z * _arg2)));
}
public static function closestPointOnPlane(_arg1:Number3D, _arg2:Number3D, _arg3:Number3D):Number3D{
var _local4:Number;
_local4 = Number3D.dot(_arg3, Number3D.sub(_arg1, _arg2));
return (Number3D.sub(_arg1, Number3D.scale(_arg3, _local4)));
}
public static function getAngle(_arg1:Number3D, _arg2:Number3D=null):Number{
if (_arg2 == null){
_arg2 = new (Number3D);
};
return (Math.acos((Number3D.dot(_arg1, _arg2) / (_arg1.modulo * _arg2.modulo))));
}
}
}//package away3d.core.math
Section 35
//Quaternion (away3d.core.math.Quaternion)
package away3d.core.math {
public class Quaternion {
public var w:Number;
public var x:Number;
public var y:Number;
public var z:Number;
}
}//package away3d.core.math
Section 36
//ChildObject3D (away3d.core.physics.ChildObject3D)
package away3d.core.physics {
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.*;
public class ChildObject3D {
public var minX:Number;
public var minZ:Number;
public var _parent:Object3D;// = null
public var scenePosition:Number3D;
public var minY:Number;
public var acceleration:Number3D;
public var dt2:Number;
public var oldScenePosition:Number3D;
public var oldPosition:Number3D;
public var maxX:Number;
public var maxY:Number;
public var maxZ:Number;
public function ChildObject3D(_arg1:Object=null):void{
_parent = null;
scenePosition = new Number3D();
acceleration = new Number3D();
super();
_arg1 = Init.parse(_arg1);
parent = (_arg1.getObject("parent") as Object3D);
}
public function set parent(_arg1:Object3D):void{
_parent = _arg1;
}
public function set position(_arg1:Number3D):void{
}
public function get position():Number3D{
return (new Number3D());
}
public function get parent():Object3D{
return (_parent);
}
}
}//package away3d.core.physics
Section 37
//Camera3D (away3d.core.proto.Camera3D)
package away3d.core.proto {
import away3d.core.math.*;
import away3d.core.*;
public class Camera3D extends Object3D {
public var zoom:Number;
public var focus:Number;
private static var _flipY:Matrix3D = Matrix3D.scaleMatrix(1, -1, 1);
public function Camera3D(_arg1:Object=null){
var _local2:Object3D;
super(_arg1);
_arg1 = Init.parse(_arg1);
zoom = _arg1.getNumber("zoom", 3);
focus = _arg1.getNumber("focus", 500);
_local2 = _arg1.getObject3D("lookat");
if (_local2 != null){
lookAt(_local2);
};
}
public function tilt(_arg1:Number):void{
super.pitch(_arg1);
}
public function pan(_arg1:Number):void{
super.yaw(_arg1);
}
public function getView():Matrix3D{
return (Matrix3D.inverse(Matrix3D.multiply(transform, _flipY)));
}
}
}//package away3d.core.proto
Section 38
//ILightConsumer (away3d.core.proto.ILightConsumer)
package away3d.core.proto {
import away3d.core.math.*;
import away3d.core.render.*;
public interface ILightConsumer {
function ambientLight(_arg1:int, _arg2:Number):void;
function pointLight(_arg1:Projection, _arg2:int, _arg3:Number, _arg4:Number, _arg5:Number):void;
function directedLight(_arg1:Number3D, _arg2:int, _arg3:Number):void;
}
}//package away3d.core.proto
Section 39
//ILightProvider (away3d.core.proto.ILightProvider)
package away3d.core.proto {
import away3d.core.render.*;
public interface ILightProvider {
function light(_arg1:Projection, _arg2:ILightConsumer):void;
}
}//package away3d.core.proto
Section 40
//ILODObject (away3d.core.proto.ILODObject)
package away3d.core.proto {
public interface ILODObject {
function matchLOD(_arg1:View3D):Boolean;
}
}//package away3d.core.proto
Section 41
//Light3D (away3d.core.proto.Light3D)
package away3d.core.proto {
import away3d.core.math.*;
import away3d.core.geom.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import away3d.core.material.*;
import away3d.core.*;
public class Light3D extends Object3D implements ILightProvider, IPrimitiveProvider {
public var color:int;
public var ambient:Number;
public var specular:Number;
public var showsource:Boolean;// = true
public var diffuse:Number;
public function Light3D(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null){
var _local6:Number;
showsource = true;
super(_arg5);
_arg5 = Init.parse(_arg5);
_local6 = _arg5.getNumber("distance", 30);
this.color = _arg1;
this.ambient = ((_arg2 * _local6) * _local6);
this.diffuse = ((_arg3 * _local6) * _local6);
this.specular = ((_arg4 * _local6) * _local6);
}
public function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void{
var _local3:Vertex3D;
var _local4:Vertex2D;
var _local5:DrawTriangle;
if (!showsource){
return;
};
_local3 = new Vertex3D(0, 0, 0);
_local4 = _local3.project(_arg1);
if (!_local4.visible){
return;
};
_local5 = new DrawTriangle();
_local5.v0 = new Vertex2D((_local4.x + 3), (_local4.y + 2), _local4.z);
_local5.v1 = new Vertex2D((_local4.x - 3), (_local4.y + 2), _local4.z);
_local5.v2 = new Vertex2D(_local4.x, (_local4.y - 3), _local4.z);
_local5.calc();
_local5.source = this;
_local5.projection = _arg1;
_local5.material = new ColorMaterial(color);
_arg2.primitive(_local5);
}
public function light(_arg1:Projection, _arg2:ILightConsumer):void{
_arg2.pointLight(_arg1, color, ambient, diffuse, specular);
}
}
}//package away3d.core.proto
Section 42
//MouseEvent3D (away3d.core.proto.MouseEvent3D)
package away3d.core.proto {
import flash.events.*;
import away3d.core.geom.*;
import away3d.core.draw.*;
public class MouseEvent3D extends Event {
public var shiftKey:Boolean;
public var worldX:Number;
public var worldY:Number;
public var worldZ:Number;
public var uv:NumberUV;
public var drawpri:DrawPrimitive;
public var view:View3D;
public var screenY:Number;
public var screenZ:Number;
public var screenX:Number;
public var ctrlKey:Boolean;
public var element:Object;
public var object:Object3D;
public function MouseEvent3D(_arg1:String){
super(_arg1);
}
override public function clone():Event{
var _local1:MouseEvent3D;
_local1 = new MouseEvent3D(type);
_local1.screenX = screenX;
_local1.screenY = screenY;
_local1.screenZ = screenZ;
_local1.worldX = worldX;
_local1.worldY = worldY;
_local1.worldZ = worldZ;
_local1.view = view;
_local1.object = object;
_local1.element = element;
_local1.drawpri = drawpri;
_local1.uv = uv;
_local1.ctrlKey = ctrlKey;
_local1.shiftKey = shiftKey;
return (_local1);
}
}
}//package away3d.core.proto
Section 43
//Object3D (away3d.core.proto.Object3D)
package away3d.core.proto {
import away3d.core.math.*;
import away3d.core.*;
import away3d.core.physics.*;
public class Object3D extends ChildObject3D {
public var extra:Object;
private var _rotationX:Number;// = 0
private var _rotationY:Number;// = 0
private var _rotationZ:Number;// = 0
public var constraints:Array;
private var _events:Object3DEvents;
public var sceneTransform:Matrix3D;
public var transformUpdate:Boolean;// = false
private var _scaleX:Number;// = 1
private var _scaleY:Number;// = 1
private var _scaleZ:Number;// = 1
public var visible:Boolean;// = true
public var innerCollisions:Boolean;// = false
public var name:String;
private var _transformDirty:Boolean;// = false
private var _transform:Matrix3D;
public var accelerations:Array;
private var _rotationDirty:Boolean;// = false
private static var toDEGREES:Number = 57.2957795130823;
private static var toRADIANS:Number = 0.0174532925199433;
public function Object3D(_arg1:Object=null):void{
var _local2:Number;
innerCollisions = false;
constraints = new Array();
accelerations = new Array();
visible = true;
_transform = new Matrix3D();
transformUpdate = false;
_transformDirty = false;
_rotationDirty = false;
_rotationX = 0;
_rotationY = 0;
_rotationZ = 0;
_scaleX = 1;
_scaleY = 1;
_scaleZ = 1;
super(_arg1);
_arg1 = Init.parse(_arg1);
name = _arg1.getString("name", null);
visible = _arg1.getBoolean("visible", true);
_transform.n14 = _arg1.getNumber("x", 0);
_transform.n24 = _arg1.getNumber("y", 0);
_transform.n34 = _arg1.getNumber("z", 0);
rotationX = _arg1.getNumber("rotationX", 0);
rotationY = _arg1.getNumber("rotationY", 0);
rotationZ = _arg1.getNumber("rotationZ", 0);
_local2 = _arg1.getNumber("scale", 1);
scaleX = (_arg1.getNumber("scaleX", 1) * _local2);
scaleY = (_arg1.getNumber("scaleY", 1) * _local2);
scaleZ = (_arg1.getNumber("scaleZ", 1) * _local2);
extra = _arg1.getObject("extra");
innerCollisions = _arg1.getBoolean("innerCollisions", innerCollisions);
accelerations = _arg1.getArray("accelerations");
oldPosition = position;
sceneTransform = transform;
scenePosition = position;
}
public function moveDown(_arg1:Number):void{
translate(_arg1, Number3D.DOWN);
}
public function get events():Object3DEvents{
if (_events == null){
_events = new Object3DEvents();
};
return (_events);
}
public function project():void{
if ((transformUpdate = ((_parent.transformUpdate) || (transformUpdate)))){
sceneTransform = Matrix3D.multiply(_parent.sceneTransform, transform);
};
}
override public function get position():Number3D{
return (new Number3D(x, y, z));
}
public function lookAt(_arg1, _arg2:Number3D=null):void{
var _local3:Number3D;
var _local4:Number3D;
var _local5:Number3D;
var _local6:Number3D;
var _local7:Number3D;
var _local8:Matrix3D;
_local3 = new Number3D(x, y, z);
_local4 = new Number3D(_arg1.x, _arg1.y, _arg1.z);
_local5 = Number3D.sub(_local4, _local3);
_local5.normalize();
if (_local5.modulo > 0.1){
_local6 = Number3D.cross(_local5, ((_arg2) || (Number3D.UP)));
_local6.normalize();
_local7 = Number3D.cross(_local5, _local6);
_local7.normalize();
_local8 = _transform;
_local8.n11 = _local6.x;
_local8.n21 = _local6.y;
_local8.n31 = _local6.z;
_local8.n12 = -(_local7.x);
_local8.n22 = -(_local7.y);
_local8.n32 = -(_local7.z);
_local8.n13 = _local5.x;
_local8.n23 = _local5.y;
_local8.n33 = _local5.z;
_transformDirty = false;
transformUpdate = (_rotationDirty = true);
};
}
public function set rotationX(_arg1:Number):void{
_rotationX = (-(_arg1) * toRADIANS);
transformUpdate = (_transformDirty = true);
}
public function set rotationZ(_arg1:Number):void{
_rotationZ = (-(_arg1) * toRADIANS);
transformUpdate = (_transformDirty = true);
}
public function set rotationY(_arg1:Number):void{
_rotationY = (-(_arg1) * toRADIANS);
transformUpdate = (_transformDirty = true);
}
public function moveUp(_arg1:Number):void{
translate(_arg1, Number3D.UP);
}
public function translate(_arg1:Number, _arg2:Number3D):void{
var _local3:Number3D;
_local3 = _arg2.rotate(transform);
x = (x + (_arg1 * _local3.x));
y = (y + (_arg1 * _local3.y));
z = (z + (_arg1 * _local3.z));
}
public function pitch(_arg1:Number):void{
var _local2:Number3D;
var _local3:Matrix3D;
_local2 = Number3D.RIGHT.rotate(transform);
_local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, (_arg1 * toRADIANS));
_transform.copy3x3(Matrix3D.multiply3x3(_local3, transform));
transformUpdate = (_rotationDirty = true);
}
override public function set position(_arg1:Number3D):void{
_transform.n14 = _arg1.x;
_transform.n24 = _arg1.y;
_transform.n34 = _arg1.z;
transformUpdate = true;
}
public function get hasEvents():Boolean{
return (!((_events == null)));
}
override public function set parent(_arg1:Object3D):void{
if (_arg1 == _parent){
return;
};
if (_parent != null){
(_parent as ObjectContainer3D).removeChild(this);
};
if (_arg1 != null){
(_arg1 as ObjectContainer3D).addChild(this);
};
}
public function distanceTo(_arg1:Object3D):Number{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = (x - _arg1.x);
_local3 = (y - _arg1.y);
_local4 = (z - _arg1.z);
return (Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4))));
}
private function updateRotation():void{
var _local1:Number3D;
_local1 = Matrix3D.matrix2euler(_transform);
_rotationX = (_local1.x * toRADIANS);
_rotationY = (_local1.y * toRADIANS);
_rotationZ = (_local1.z * toRADIANS);
_rotationDirty = false;
}
public function get transform():Matrix3D{
if (_transformDirty){
updateTransform();
};
return (_transform);
}
public function moveLeft(_arg1:Number):void{
translate(_arg1, Number3D.LEFT);
}
public function traverse(_arg1:Traverser):void{
_arg1.apply(this);
}
public function get z():Number{
return (_transform.n34);
}
public function toString():String{
return (((((((name + ": x:") + Math.round(x)) + " y:") + Math.round(y)) + " z:") + Math.round(z)));
}
public function roll(_arg1:Number):void{
var _local2:Number3D;
var _local3:Matrix3D;
_local2 = Number3D.FORWARD.rotate(transform);
_local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, (_arg1 * toRADIANS));
_transform.copy3x3(Matrix3D.multiply3x3(_local3, transform));
transformUpdate = (_rotationDirty = true);
}
public function get x():Number{
return (_transform.n14);
}
public function get y():Number{
return (_transform.n24);
}
public function yaw(_arg1:Number):void{
var _local2:Number3D;
var _local3:Matrix3D;
_local2 = Number3D.UP.rotate(transform);
_local3 = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, (_arg1 * toRADIANS));
_transform.copy3x3(Matrix3D.multiply3x3(_local3, transform));
transformUpdate = (_rotationDirty = true);
}
public function set scale(_arg1:Number):void{
_scaleX = _arg1;
_scaleY = _arg1;
_scaleZ = _arg1;
transformUpdate = (_transformDirty = true);
}
public function get rotationX():Number{
if (_rotationDirty){
updateRotation();
};
return ((-(_rotationX) * toDEGREES));
}
public function get rotationY():Number{
if (_rotationDirty){
updateRotation();
};
return ((-(_rotationY) * toDEGREES));
}
public function get rotationZ():Number{
if (_rotationDirty){
updateRotation();
};
return ((-(_rotationZ) * toDEGREES));
}
public function tick(_arg1:int):void{
}
public function set scaleY(_arg1:Number):void{
_scaleY = _arg1;
transformUpdate = (_transformDirty = true);
}
public function set scaleZ(_arg1:Number):void{
_scaleZ = _arg1;
transformUpdate = (_transformDirty = true);
}
public function set scaleX(_arg1:Number):void{
_scaleX = _arg1;
transformUpdate = (_transformDirty = true);
}
private function updateTransform():void{
var _local1:Quaternion;
var _local2:Matrix3D;
if (!_transformDirty){
return;
};
_local1 = Matrix3D.euler2quaternion(-(_rotationY), -(_rotationZ), _rotationX);
_local2 = Matrix3D.quaternion2matrix(_local1.x, _local1.y, _local1.z, _local1.w);
_local2.n14 = _transform.n14;
_local2.n24 = _transform.n24;
_local2.n34 = _transform.n34;
_local2.scale(_scaleX, _scaleY, _scaleZ);
_transform = _local2;
_transformDirty = false;
}
public function moveForward(_arg1:Number):void{
translate(_arg1, Number3D.FORWARD);
}
public function moveRight(_arg1:Number):void{
translate(_arg1, Number3D.RIGHT);
}
public function relative(_arg1:Object3D=null):Matrix3D{
var _local2:Matrix3D;
var _local3:Object3D;
_local2 = new Matrix3D();
_local3 = this;
while (_local3 != _arg1) {
_local2 = Matrix3D.multiply(_local3.transform, _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public function moveBackward(_arg1:Number):void{
translate(_arg1, Number3D.BACKWARD);
}
public function set transform(_arg1:Matrix3D):void{
_transform = _arg1.clone();
_transformDirty = false;
transformUpdate = (_rotationDirty = true);
}
public function set x(_arg1:Number):void{
_transform.n14 = (oldPosition.x = _arg1);
transformUpdate = true;
}
public function set y(_arg1:Number):void{
_transform.n24 = (oldPosition.y = _arg1);
transformUpdate = true;
}
public function set z(_arg1:Number):void{
_transform.n34 = (oldPosition.z = _arg1);
transformUpdate = true;
}
}
}//package away3d.core.proto
Section 44
//Object3DEvents (away3d.core.proto.Object3DEvents)
package away3d.core.proto {
import flash.events.*;
public class Object3DEvents extends EventDispatcher {
}
}//package away3d.core.proto
Section 45
//ObjectContainer3D (away3d.core.proto.ObjectContainer3D)
package away3d.core.proto {
import away3d.core.math.*;
public class ObjectContainer3D extends Object3D {
public var children:Array;
public var child:Object3D;
public function ObjectContainer3D(_arg1:Object=null, ... _args){
children = new Array();
if (((!((_arg1 == null))) && ((_arg1 is Object3D)))){
_args.push(_arg1);
_arg1 = null;
};
super(_arg1);
for each (child in _args) {
addChild(child);
};
}
public function getChildByName(_arg1:String):Object3D{
var _local2:Object3D;
for each (_local2 in children) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
public function removeChildByName(_arg1:String):void{
removeChild(getChildByName(_arg1));
}
public function removeChild(_arg1:Object3D):void{
var _local2:int;
if (_arg1._parent != this){
throw (new Error("Child doesn't belong to container"));
};
_local2 = children.indexOf(_arg1);
if (_local2 == -1){
throw (new Error("Child not found in children list"));
};
children.splice(_local2, 1);
_arg1._parent = null;
}
public function addChild(_arg1:Object3D):Object3D{
if (_arg1 == null){
throw (new Error("ObjectContainer3D.addChild(null)"));
};
if (_arg1.parent == this){
return (_arg1);
};
_arg1.parent = null;
children.push(_arg1);
_arg1._parent = this;
_arg1.sceneTransform = Matrix3D.multiply(sceneTransform, _arg1.transform);
_arg1.scenePosition = sceneTransform.transformPoint(_arg1.position);
return (_arg1);
}
public function addChildren(... _args):void{
var _local2:Object3D;
for each (_local2 in _args) {
addChild(_local2);
};
}
override public function traverse(_arg1:Traverser):void{
for each (child in children) {
if (_arg1.match(child)){
_arg1.enter(child);
child.traverse(_arg1);
_arg1.leave(child);
};
};
_arg1.apply(this);
}
}
}//package away3d.core.proto
Section 46
//Scene3D (away3d.core.proto.Scene3D)
package away3d.core.proto {
import flash.utils.*;
public class Scene3D extends ObjectContainer3D {
public function Scene3D(_arg1:Object=null, ... _args){
if (((!((_arg1 == null))) && ((_arg1 is Object3D)))){
_args.push(_arg1);
_arg1 = null;
};
super(_arg1);
for each (child in _args) {
addChild(child);
};
}
public function updateTime(_arg1:int=-1):void{
if (_arg1 == -1){
_arg1 = getTimer();
};
traverse(new TickTraverser(_arg1));
}
}
}//package away3d.core.proto
Section 47
//TickTraverser (away3d.core.proto.TickTraverser)
package away3d.core.proto {
public class TickTraverser extends Traverser {
protected var now:int;
public function TickTraverser(_arg1:int){
this.now = _arg1;
}
override public function enter(_arg1:Object3D):void{
_arg1.tick(now);
}
}
}//package away3d.core.proto
Section 48
//Traverser (away3d.core.proto.Traverser)
package away3d.core.proto {
public class Traverser {
public function match(_arg1:Object3D):Boolean{
return (true);
}
public function leave(_arg1:Object3D):void{
}
public function enter(_arg1:Object3D):void{
}
public function apply(_arg1:Object3D):void{
}
}
}//package away3d.core.proto
Section 49
//View3D (away3d.core.proto.View3D)
package away3d.core.proto {
import flash.events.*;
import flash.display.*;
import away3d.core.render.*;
import away3d.core.*;
public class View3D extends Sprite {
public var events:Object3DEvents;
public var camera:Camera3D;
public var background:Sprite;
public var clip:Clipping;
public var canvas:Sprite;
public var scene:Scene3D;
public var renderer:IRenderer;
protected var mousedown:Boolean;
public var hud:Sprite;
public function View3D(_arg1:Scene3D=null, _arg2:Camera3D=null, _arg3:IRenderer=null){
this.scene = ((_arg1) || (new Scene3D()));
this.camera = ((_arg2) || (new Camera3D({x:1000, y:1000, z:1000, lookat:new Object3D()})));
this.renderer = ((_arg3) || (new BasicRenderer()));
events = new Object3DEvents();
background = new Sprite();
addChild(background);
canvas = new Sprite();
addChild(canvas);
hud = new Sprite();
addChild(hud);
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
mouseChildren = false;
}
private function onMouseUp(_arg1:MouseEvent):void{
mousedown = false;
fireMouseEvent(MouseEvent.MOUSE_UP, _arg1.localX, _arg1.localY, _arg1.ctrlKey, _arg1.shiftKey);
}
public function clear():void{
if (canvas != null){
removeChild(canvas);
};
canvas = new Sprite();
addChildAt(canvas, 1);
}
private function onMouseOut(_arg1:MouseEvent):void{
if (mousedown){
mousedown = false;
fireMouseEvent(MouseEvent.MOUSE_UP, _arg1.localX, _arg1.localY, _arg1.ctrlKey, _arg1.shiftKey);
};
}
public function render():void{
var _local1:Clipping;
Init.checkUnusedArguments();
clear();
if ((renderer is IBitmapRenderer)){
renderer.render(this);
return;
};
_local1 = clip;
clip = ((clip) || (Clipping.screen(this)));
renderer.render(this);
clip = _local1;
fireMouseMoveEvent();
}
protected function onMouseDown(_arg1:MouseEvent):void{
mousedown = true;
fireMouseEvent(MouseEvent.MOUSE_DOWN, _arg1.localX, _arg1.localY, _arg1.ctrlKey, _arg1.shiftKey);
}
public function fireMouseEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false):void{
var _local6:FindHitTraverser;
var _local7:MouseEvent3D;
var _local8:Object3D;
_local6 = new FindHitTraverser(this, _arg2, _arg3);
scene.traverse(_local6);
_local7 = _local6.getMouseEvent(_arg1);
_local7.ctrlKey = _arg4;
_local7.shiftKey = _arg5;
events.dispatchEvent(_local7);
_local8 = _local7.object;
while (_local8 != null) {
if (_local8.hasEvents){
_local8.events.dispatchEvent(_local7);
};
_local8 = _local8.parent;
};
}
public function fireMouseMoveEvent():void{
fireMouseEvent(MouseEvent.MOUSE_MOVE, mouseX, mouseY);
}
}
}//package away3d.core.proto
Section 50
//AnotherRivalFilter (away3d.core.render.AnotherRivalFilter)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.draw.*;
import flash.utils.*;
public class AnotherRivalFilter implements IPrimitiveQuadrantFilter {
public var maxdelay:int;
private static var ZOrderHigher:int = -1;
private static var ZOrderSame:int = 0;
private static var ZOrderDeeper:int = 1;
private static var ZOrderIrrelevant:int = 0;
public function AnotherRivalFilter(_arg1:int=60000){
this.maxdelay = _arg1;
}
public function filter(_arg1:PrimitiveQuadrantTree, _arg2:Scene3D, _arg3:Camera3D, _arg4:Sprite, _arg5:Clipping):void{
var _local6:int;
var _local7:int;
var _local8:Array;
var _local9:int;
var _local10:Array;
var _local11:DrawPrimitive;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Array;
var _local16:DrawPrimitive;
var _local17:Array;
var _local18:DrawPrimitive;
_local6 = getTimer();
_local7 = 0;
_local8 = _arg1.list();
_local9 = 0;
while (_local8.length > 0) {
_local10 = new Array();
for each (_local11 in _local8) {
_local7++;
if (_local7 == 10){
if ((getTimer() - _local6) > maxdelay){
return;
};
_local7 = 0;
};
_local12 = (_local11.maxZ + 1000);
_local13 = (_local11.minZ - 1000);
_local14 = 0;
_local15 = _arg1.get(_local11.minX, _local11.minY, _local11.maxX, _local11.maxY, null);
for each (_local16 in _local15) {
if (_local16 == _local11){
} else {
switch (zconflict(_local11, _local16)){
case ZOrderIrrelevant:
break;
case ZOrderDeeper:
_local13 = Math.max(_local13, _local16.screenZ);
break;
case ZOrderHigher:
_local12 = Math.min(_local12, _local16.screenZ);
break;
};
};
};
if ((((_local12 >= _local11.screenZ)) && ((_local11.screenZ >= _local13)))){
} else {
if ((_local12 > _local13)){
_local11.screenZ = ((_local12 + _local13) / 2);
} else {
if ((_local9 % 3) == 2){
_local17 = _local11.quarter(_arg3.focus);
if (_local17 != null){
_arg1.remove(_local11);
for each (_local18 in _local17) {
_local18.screenZ = _local11.screenZ;
_local10.push(_local18);
_arg1.push(_local18);
};
};
} else {
_local10.push(_local11);
};
};
};
};
_local8 = _local10;
_local9 = (_local9 + 1);
if (_local9 == 20){
break;
};
};
}
public function toString():String{
return (("AnotherRivalFilter" + ((maxdelay)==60000) ? "" : (("(" + maxdelay) + "ms)")));
}
private static function zconflictTB(_arg1:DrawTriangle, _arg2:DrawScaledBitmap):int{
if (_arg1.contains(_arg2.v.x, _arg2.v.y)){
return (zcompare(_arg1, _arg2, _arg2.v.x, _arg2.v.y));
};
if (_arg1.contains(_arg2.minX, _arg2.minY)){
return (zcompare(_arg1, _arg2, _arg2.minX, _arg2.minY));
};
if (_arg1.contains(_arg2.minX, _arg2.maxY)){
return (zcompare(_arg1, _arg2, _arg2.minX, _arg2.maxY));
};
if (_arg1.contains(_arg2.maxX, _arg2.minY)){
return (zcompare(_arg1, _arg2, _arg2.maxX, _arg2.minY));
};
if (_arg1.contains(_arg2.maxX, _arg2.maxY)){
return (zcompare(_arg1, _arg2, _arg2.maxX, _arg2.maxY));
};
return (ZOrderIrrelevant);
}
private static function zconflictTT(_arg1:DrawTriangle, _arg2:DrawTriangle):int{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Boolean;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Number;
var _local53:Number;
var _local54:Number;
var _local55:Number;
var _local56:Number;
var _local57:Number;
var _local58:Boolean;
var _local59:Boolean;
var _local60:Boolean;
var _local61:Boolean;
var _local62:Boolean;
var _local63:Boolean;
var _local64:Boolean;
var _local65:Boolean;
var _local66:Boolean;
var _local67:Number;
var _local68:Number;
var _local69:Number;
var _local70:Number;
var _local71:Number;
var _local72:Number;
var _local73:Number;
var _local74:Number;
var _local75:Number;
var _local76:Number;
var _local77:Number;
var _local78:Number;
var _local79:Number;
var _local80:Number;
var _local81:Number;
var _local82:Number;
var _local83:Number;
var _local84:Number;
var _local85:int;
var _local86:Number;
var _local87:Number;
var _local88:Number;
var _local89:Number;
var _local90:Number;
var _local91:Number;
var _local92:Number;
var _local93:Number;
var _local94:Number;
var _local95:Number;
var _local96:Number;
_local3 = _arg1.v0.x;
_local4 = _arg1.v0.y;
_local5 = _arg1.v1.x;
_local6 = _arg1.v1.y;
_local7 = _arg1.v2.x;
_local8 = _arg1.v2.y;
_local9 = _arg2.v0.x;
_local10 = _arg2.v0.y;
_local11 = _arg2.v1.x;
_local12 = _arg2.v1.y;
_local13 = _arg2.v2.x;
_local14 = _arg2.v2.y;
_local15 = (_local6 - _local4);
_local16 = (_local3 - _local5);
_local17 = -(((_local16 * _local4) + (_local15 * _local3)));
_local18 = (((_local15 * _local7) + (_local16 * _local8)) + _local17);
_local19 = ((((_local15 * _local9) + (_local16 * _local10)) + _local17) * _local18);
_local20 = ((((_local15 * _local11) + (_local16 * _local12)) + _local17) * _local18);
_local21 = ((((_local15 * _local13) + (_local16 * _local14)) + _local17) * _local18);
if ((((((_local19 <= 0.0001)) && ((_local20 <= 0.0001)))) && ((_local21 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local22 = (_local8 - _local6);
_local23 = (_local5 - _local7);
_local24 = (((_local22 * _local22) + (_local23 * _local23)) > 0.0001);
_local25 = -(((_local23 * _local6) + (_local22 * _local5)));
_local26 = (((_local22 * _local3) + (_local23 * _local4)) + _local25);
_local27 = ((((_local22 * _local9) + (_local23 * _local10)) + _local25) * _local26);
_local28 = ((((_local22 * _local11) + (_local23 * _local12)) + _local25) * _local26);
_local29 = ((((_local22 * _local13) + (_local23 * _local14)) + _local25) * _local26);
if ((((((_local27 <= 0.0001)) && ((_local28 <= 0.0001)))) && ((_local29 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local30 = (_local4 - _local8);
_local31 = (_local7 - _local3);
_local32 = -(((_local31 * _local8) + (_local30 * _local7)));
_local33 = (((_local30 * _local5) + (_local31 * _local6)) + _local32);
_local34 = ((((_local30 * _local9) + (_local31 * _local10)) + _local32) * _local33);
_local35 = ((((_local30 * _local11) + (_local31 * _local12)) + _local32) * _local33);
_local36 = ((((_local30 * _local13) + (_local31 * _local14)) + _local32) * _local33);
if ((((((_local34 <= 0.0001)) && ((_local35 <= 0.0001)))) && ((_local36 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local37 = (_local12 - _local10);
_local38 = (_local9 - _local11);
_local39 = -(((_local38 * _local10) + (_local37 * _local9)));
_local40 = (((_local37 * _local13) + (_local38 * _local14)) + _local39);
_local41 = ((((_local37 * _local3) + (_local38 * _local4)) + _local39) * _local40);
_local42 = ((((_local37 * _local5) + (_local38 * _local6)) + _local39) * _local40);
_local43 = ((((_local37 * _local7) + (_local38 * _local8)) + _local39) * _local40);
if ((((((_local41 <= 0.0001)) && ((_local42 <= 0.0001)))) && ((_local43 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local44 = (_local14 - _local12);
_local45 = (_local11 - _local13);
_local46 = -(((_local45 * _local12) + (_local44 * _local11)));
_local47 = (((_local44 * _local9) + (_local45 * _local10)) + _local46);
_local48 = ((((_local44 * _local3) + (_local45 * _local4)) + _local46) * _local47);
_local49 = ((((_local44 * _local5) + (_local45 * _local6)) + _local46) * _local47);
_local50 = ((((_local44 * _local7) + (_local45 * _local8)) + _local46) * _local47);
if ((((((_local48 <= 0.0001)) && ((_local49 <= 0.0001)))) && ((_local50 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local51 = (_local10 - _local14);
_local52 = (_local13 - _local9);
_local53 = -(((_local52 * _local14) + (_local51 * _local13)));
_local54 = (((_local51 * _local11) + (_local52 * _local12)) + _local53);
_local55 = ((((_local51 * _local3) + (_local52 * _local4)) + _local53) * _local54);
_local56 = ((((_local51 * _local5) + (_local52 * _local6)) + _local53) * _local54);
_local57 = ((((_local51 * _local7) + (_local52 * _local8)) + _local53) * _local54);
if ((((((_local55 <= 0.0001)) && ((_local56 <= 0.0001)))) && ((_local57 <= 0.0001)))){
return (ZOrderIrrelevant);
};
if (((((((((((_local41 * _local41) <= 0.0001)) || (((_local48 * _local48) <= 0.0001)))) || (((_local55 * _local55) <= 0.0001)))) && (((((((_local42 * _local42) <= 0.0001)) || (((_local49 * _local49) <= 0.0001)))) || (((_local56 * _local56) <= 0.0001)))))) && (((((((_local43 * _local43) <= 0.0001)) || (((_local50 * _local50) <= 0.0001)))) || (((_local57 * _local57) <= 0.0001)))))){
return (zcompare(_arg1, _arg2, (((_local3 + _local5) + _local7) / 3), (((_local4 + _local6) + _local8) / 3)));
};
if (((((((((((_local19 * _local19) <= 0.0001)) || (((_local27 * _local27) <= 0.0001)))) || (((_local34 * _local34) <= 0.0001)))) && (((((((_local20 * _local20) <= 0.0001)) || (((_local28 * _local28) <= 0.0001)))) || (((_local35 * _local35) <= 0.0001)))))) && (((((((_local21 * _local21) <= 0.0001)) || (((_local29 * _local29) <= 0.0001)))) || (((_local36 * _local36) <= 0.0001)))))){
return (zcompare(_arg1, _arg2, (((_local9 + _local11) + _local13) / 3), (((_local10 + _local12) + _local14) / 3)));
};
_local58 = ((((_local41 * _local42) < 0.0001)) && (((_local19 * _local20) < 0.0001)));
_local59 = ((((_local42 * _local43) < 0.0001)) && (((_local27 * _local28) < 0.0001)));
_local60 = ((((_local43 * _local41) < 0.0001)) && (((_local34 * _local35) < 0.0001)));
_local61 = ((((_local48 * _local49) < 0.0001)) && (((_local20 * _local21) < 0.0001)));
_local62 = ((((_local49 * _local50) < 0.0001)) && (((_local28 * _local29) < 0.0001)));
_local63 = ((((_local50 * _local48) < 0.0001)) && (((_local35 * _local36) < 0.0001)));
_local64 = ((((_local55 * _local56) < 0.0001)) && (((_local21 * _local19) < 0.0001)));
_local65 = ((((_local56 * _local57) < 0.0001)) && (((_local29 * _local27) < 0.0001)));
_local66 = ((((_local57 * _local55) < 0.0001)) && (((_local36 * _local34) < 0.0001)));
_local85 = 0;
_local86 = 0;
_local87 = 0;
if ((((((_local19 > 0.0001)) && ((_local27 > 0.0001)))) && ((_local34 > 0.0001)))){
_local86 = (_local86 + _local9);
_local87 = (_local87 + _local10);
_local85 = (_local85 + 1);
};
if ((((((_local20 > 0.0001)) && ((_local28 > 0.0001)))) && ((_local35 > 0.0001)))){
_local86 = (_local86 + _local11);
_local87 = (_local87 + _local12);
_local85 = (_local85 + 1);
};
if ((((((_local21 > 0.0001)) && ((_local29 > 0.0001)))) && ((_local36 > 0.0001)))){
_local86 = (_local86 + _local13);
_local87 = (_local87 + _local14);
_local85 = (_local85 + 1);
};
if ((((((_local41 > 0.0001)) && ((_local48 > 0.0001)))) && ((_local55 > 0.0001)))){
_local86 = (_local86 + _local3);
_local87 = (_local87 + _local4);
_local85 = (_local85 + 1);
};
if ((((((_local42 > 0.0001)) && ((_local49 > 0.0001)))) && ((_local56 > 0.0001)))){
_local86 = (_local86 + _local5);
_local87 = (_local87 + _local6);
_local85 = (_local85 + 1);
};
if ((((((_local43 > 0.0001)) && ((_local50 > 0.0001)))) && ((_local57 > 0.0001)))){
_local86 = (_local86 + _local7);
_local87 = (_local87 + _local8);
_local85 = (_local85 + 1);
};
if (_local58){
_local88 = ((_local15 * _local38) - (_local16 * _local37));
if ((((_local15 * _local38) - (_local16 * _local37)) * _local88) > 0.0001){
_local67 = (((_local16 * _local39) - (_local17 * _local38)) / _local88);
_local68 = (((_local17 * _local37) - (_local15 * _local39)) / _local88);
_local86 = (_local86 + _local67);
_local87 = (_local87 + _local68);
_local85 = (_local85 + 1);
};
};
if (_local59){
_local89 = ((_local22 * _local38) - (_local23 * _local37));
if ((((_local22 * _local38) - (_local23 * _local37)) * _local89) > 0.0001){
_local69 = (((_local23 * _local39) - (_local25 * _local38)) / _local89);
_local70 = (((_local25 * _local37) - (_local22 * _local39)) / _local89);
_local86 = (_local86 + _local69);
_local87 = (_local87 + _local70);
_local85 = (_local85 + 1);
};
};
if (_local60){
_local90 = ((_local30 * _local38) - (_local31 * _local37));
if ((((_local30 * _local38) - (_local31 * _local37)) * _local90) > 0.0001){
_local71 = (((_local31 * _local39) - (_local32 * _local38)) / _local90);
_local72 = (((_local32 * _local37) - (_local30 * _local39)) / _local90);
_local86 = (_local86 + _local71);
_local87 = (_local87 + _local72);
_local85 = (_local85 + 1);
};
};
if (_local61){
_local91 = ((_local15 * _local45) - (_local16 * _local44));
if ((((_local15 * _local45) - (_local16 * _local44)) * _local91) > 0.0001){
_local73 = (((_local16 * _local46) - (_local17 * _local45)) / _local91);
_local74 = (((_local17 * _local44) - (_local15 * _local46)) / _local91);
_local86 = (_local86 + _local73);
_local87 = (_local87 + _local74);
_local85 = (_local85 + 1);
};
};
if (_local62){
_local92 = ((_local22 * _local45) - (_local23 * _local44));
if ((((_local22 * _local45) - (_local23 * _local44)) * _local92) > 0.0001){
_local75 = (((_local23 * _local46) - (_local25 * _local45)) / _local92);
_local76 = (((_local25 * _local44) - (_local22 * _local46)) / _local92);
_local86 = (_local86 + _local75);
_local87 = (_local87 + _local76);
_local85 = (_local85 + 1);
};
};
if (_local63){
_local93 = ((_local30 * _local45) - (_local31 * _local44));
if ((((_local30 * _local45) - (_local31 * _local44)) * _local93) > 0.0001){
_local77 = (((_local31 * _local46) - (_local32 * _local45)) / _local93);
_local78 = (((_local32 * _local44) - (_local30 * _local46)) / _local93);
_local86 = (_local86 + _local77);
_local87 = (_local87 + _local78);
_local85 = (_local85 + 1);
};
};
if (_local64){
_local94 = ((_local15 * _local52) - (_local16 * _local51));
if ((((_local15 * _local52) - (_local16 * _local51)) * _local94) > 0.0001){
_local79 = (((_local16 * _local53) - (_local17 * _local52)) / _local94);
_local80 = (((_local17 * _local51) - (_local15 * _local53)) / _local94);
_local86 = (_local86 + _local79);
_local87 = (_local87 + _local80);
_local85 = (_local85 + 1);
};
};
if (_local65){
_local95 = ((_local22 * _local52) - (_local23 * _local51));
if ((((_local22 * _local52) - (_local23 * _local51)) * _local95) > 0.0001){
_local81 = (((_local23 * _local53) - (_local25 * _local52)) / _local95);
_local82 = (((_local25 * _local51) - (_local22 * _local53)) / _local95);
_local86 = (_local86 + _local81);
_local87 = (_local87 + _local82);
_local85 = (_local85 + 1);
};
};
if (_local66){
_local96 = ((_local30 * _local52) - (_local31 * _local51));
if ((((_local30 * _local52) - (_local31 * _local51)) * _local96) > 0.0001){
_local83 = (((_local31 * _local53) - (_local32 * _local52)) / _local96);
_local84 = (((_local32 * _local51) - (_local30 * _local53)) / _local96);
_local86 = (_local86 + _local83);
_local87 = (_local87 + _local84);
_local85 = (_local85 + 1);
};
};
return (zcompare(_arg1, _arg2, (_local86 / _local85), (_local87 / _local85)));
}
private static function zconflictTS(_arg1:DrawTriangle, _arg2:DrawSegment):int{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Boolean;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Boolean;
var _local39:Boolean;
var _local40:Boolean;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:int;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Number;
_local3 = _arg1.v0.x;
_local4 = _arg1.v0.y;
_local5 = _arg1.v1.x;
_local6 = _arg1.v1.y;
_local7 = _arg1.v2.x;
_local8 = _arg1.v2.y;
_local9 = _arg2.v0.x;
_local10 = _arg2.v0.y;
_local11 = _arg2.v1.x;
_local12 = _arg2.v1.y;
_local13 = (_local6 - _local4);
_local14 = (_local3 - _local5);
_local15 = -(((_local14 * _local4) + (_local13 * _local3)));
_local16 = (((_local13 * _local7) + (_local14 * _local8)) + _local15);
_local17 = ((((_local13 * _local9) + (_local14 * _local10)) + _local15) * _local16);
_local18 = ((((_local13 * _local11) + (_local14 * _local12)) + _local15) * _local16);
if ((((_local17 <= 0.0001)) && ((_local18 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local19 = (_local8 - _local6);
_local20 = (_local5 - _local7);
_local21 = (((_local19 * _local19) + (_local20 * _local20)) > 0.0001);
_local22 = -(((_local20 * _local6) + (_local19 * _local5)));
_local23 = (((_local19 * _local3) + (_local20 * _local4)) + _local22);
_local24 = ((((_local19 * _local9) + (_local20 * _local10)) + _local22) * _local23);
_local25 = ((((_local19 * _local11) + (_local20 * _local12)) + _local22) * _local23);
if ((((_local24 <= 0.0001)) && ((_local25 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local26 = (_local4 - _local8);
_local27 = (_local7 - _local3);
_local28 = -(((_local27 * _local8) + (_local26 * _local7)));
_local29 = (((_local26 * _local5) + (_local27 * _local6)) + _local28);
_local30 = ((((_local26 * _local9) + (_local27 * _local10)) + _local28) * _local29);
_local31 = ((((_local26 * _local11) + (_local27 * _local12)) + _local28) * _local29);
if ((((_local30 <= 0.0001)) && ((_local31 <= 0.0001)))){
return (ZOrderIrrelevant);
};
_local32 = (_local12 - _local10);
_local33 = (_local9 - _local11);
_local34 = -(((_local33 * _local10) + (_local32 * _local9)));
_local35 = (((_local32 * _local3) + (_local33 * _local4)) + _local34);
_local36 = (((_local32 * _local5) + (_local33 * _local6)) + _local34);
_local37 = (((_local32 * _local7) + (_local33 * _local8)) + _local34);
if (((((((_local35 * _local36) >= 0.0001)) && (((_local36 * _local37) >= 0.0001)))) && (((_local37 * _local35) >= 0.0001)))){
return (ZOrderIrrelevant);
};
if ((((((((_local17 > -0.0001)) && ((_local24 > -0.0001)))) && ((_local30 > -0.0001)))) && ((((((_local18 > -0.0001)) && ((_local25 > -0.0001)))) && ((_local31 > -0.0001)))))){
return (zcompare(_arg1, _arg2, ((_local9 + _local11) / 2), ((_local10 + _local12) / 2)));
};
_local38 = ((((_local35 * _local36) < 0.0001)) && (((_local17 * _local18) < 0.0001)));
_local39 = ((((_local36 * _local37) < 0.0001)) && (((_local24 * _local25) < 0.0001)));
_local40 = ((((_local37 * _local35) < 0.0001)) && (((_local30 * _local31) < 0.0001)));
_local47 = 0;
_local48 = 0;
_local49 = 0;
if ((((((_local17 > 0.0001)) && ((_local24 > 0.0001)))) && ((_local30 > 0.0001)))){
_local48 = (_local48 + _local9);
_local49 = (_local49 + _local10);
_local47 = (_local47 + 1);
};
if ((((((_local18 > 0.0001)) && ((_local25 > 0.0001)))) && ((_local31 > 0.0001)))){
_local48 = (_local48 + _local11);
_local49 = (_local49 + _local12);
_local47 = (_local47 + 1);
};
if (_local38){
_local50 = ((_local13 * _local33) - (_local14 * _local32));
if ((((_local13 * _local33) - (_local14 * _local32)) * _local50) > 0.0001){
_local41 = (((_local14 * _local34) - (_local15 * _local33)) / _local50);
_local42 = (((_local15 * _local32) - (_local13 * _local34)) / _local50);
_local48 = (_local48 + _local41);
_local49 = (_local49 + _local42);
_local47 = (_local47 + 1);
};
};
if (_local39){
_local51 = ((_local19 * _local33) - (_local20 * _local32));
if ((((_local19 * _local33) - (_local20 * _local32)) * _local51) > 0.0001){
_local43 = (((_local20 * _local34) - (_local22 * _local33)) / _local51);
_local44 = (((_local22 * _local32) - (_local19 * _local34)) / _local51);
_local48 = (_local48 + _local43);
_local49 = (_local49 + _local44);
_local47 = (_local47 + 1);
};
};
if (_local40){
_local52 = ((_local26 * _local33) - (_local27 * _local32));
if ((((_local26 * _local33) - (_local27 * _local32)) * _local52) > 0.0001){
_local45 = (((_local27 * _local34) - (_local28 * _local33)) / _local52);
_local46 = (((_local28 * _local32) - (_local26 * _local34)) / _local52);
_local48 = (_local48 + _local45);
_local49 = (_local49 + _local46);
_local47 = (_local47 + 1);
};
};
return (zcompare(_arg1, _arg2, (_local48 / _local47), (_local49 / _local47)));
}
public static function zconflict(_arg1:DrawPrimitive, _arg2:DrawPrimitive):int{
if ((_arg1 is DrawTriangle)){
if ((_arg2 is DrawTriangle)){
return (zconflictTT((_arg1 as DrawTriangle), (_arg2 as DrawTriangle)));
};
if ((_arg2 is DrawSegment)){
return (zconflictTS((_arg1 as DrawTriangle), (_arg2 as DrawSegment)));
};
if ((_arg1 is DrawScaledBitmap)){
return (zconflictTB((_arg1 as DrawTriangle), (_arg2 as DrawScaledBitmap)));
};
} else {
if ((_arg1 is DrawSegment)){
if ((_arg2 is DrawTriangle)){
return (-(zconflictTS((_arg2 as DrawTriangle), (_arg1 as DrawSegment))));
};
} else {
if ((_arg1 is DrawScaledBitmap)){
if ((_arg2 is DrawTriangle)){
return (-(zconflictTB((_arg2 as DrawTriangle), (_arg1 as DrawScaledBitmap))));
};
if ((_arg2 is DrawScaledBitmap)){
return (zconflictBB((_arg1 as DrawScaledBitmap), (_arg2 as DrawScaledBitmap)));
};
};
};
};
return (ZOrderIrrelevant);
}
private static function zconflictBB(_arg1:DrawScaledBitmap, _arg2:DrawScaledBitmap):int{
if (_arg1.screenZ > _arg2.screenZ){
return (ZOrderDeeper);
};
if (_arg1.screenZ < _arg2.screenZ){
return (ZOrderHigher);
};
return (ZOrderSame);
}
private static function zcompare(_arg1:DrawPrimitive, _arg2:DrawPrimitive, _arg3:Number, _arg4:Number):int{
var _local5:Number;
var _local6:Number;
_local5 = _arg1.getZ(_arg3, _arg4);
_local6 = _arg2.getZ(_arg3, _arg4);
if (_local5 > _local6){
return (ZOrderDeeper);
};
if (_local5 < _local6){
return (ZOrderHigher);
};
return (ZOrderSame);
}
}
}//package away3d.core.render
Section 51
//BasicRenderer (away3d.core.render.BasicRenderer)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.draw.*;
import away3d.core.block.*;
import flash.utils.*;
public class BasicRenderer implements IRenderer {
private var tricount:int;
private var sumtriarea:int;
public var info:String;
private var maxtriarea:Number;
private var filters:Array;
public function BasicRenderer(... _args){
this.filters = _args;
this.filters.push(new ZSortFilter());
}
public function desc():String{
return ((("Basic [" + filters.join("+")) + "]"));
}
public function render(_arg1:View3D):void{
var _local2:Scene3D;
var _local3:Camera3D;
var _local4:Sprite;
var _local5:Clipping;
var _local6:int;
var _local7:Graphics;
var _local8:BlockerArray;
var _local9:BlockerTraverser;
var _local10:Array;
var _local11:PrimitiveArray;
var _local12:LightArray;
var _local13:PrimitiveTraverser;
var _local14:Array;
var _local15:IPrimitiveFilter;
var _local16:RenderSession;
var _local17:DrawPrimitive;
_local2 = _arg1.scene;
_local3 = _arg1.camera;
_local4 = _arg1.canvas;
_local5 = _arg1.clip;
_local6 = getTimer();
info = "";
_local7 = _local4.graphics;
_local8 = new BlockerArray(_local5);
_local9 = new BlockerTraverser(_local8, _arg1);
_local2.traverse(_local9);
_local10 = _local8.list();
_local11 = new PrimitiveArray(_local5, _local10);
_local12 = new LightArray();
_local13 = new PrimitiveTraverser(_local11, _local12, _arg1);
_local2.traverse(_local13);
_local14 = _local11.list();
info = (info + ((getTimer() - _local6) + "ms "));
_local6 = getTimer();
for each (_local15 in filters) {
_local14 = _local15.filter(_local14, _local2, _local3, _local4, _local5);
};
tricount = _local14.length;
info = (info + ((getTimer() - _local6) + "ms "));
_local6 = getTimer();
_local16 = new RenderSession(_local2, _local3, _local4, _local5, _local12);
for each (_local17 in _local14) {
_local17.render(_local16);
};
info = (info + ((getTimer() - _local6) + "ms "));
_local6 = getTimer();
}
public function stats():String{
return ("");
}
}
}//package away3d.core.render
Section 52
//BlockerTraverser (away3d.core.render.BlockerTraverser)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.block.*;
public class BlockerTraverser extends ProjectionTraverser {
private var consumer:IBlockerConsumer;
public function BlockerTraverser(_arg1:IBlockerConsumer, _arg2:View3D){
this.consumer = _arg1;
super(_arg2);
}
override public function apply(_arg1:Object3D):void{
var _local2:IBlockerProvider;
var _local3:Projection;
if ((_arg1 is IBlockerProvider)){
_local2 = (_arg1 as IBlockerProvider);
_local3 = new Projection(view, _arg1.sceneTransform);
_local2.blockers(_local3, consumer);
};
}
}
}//package away3d.core.render
Section 53
//Clipping (away3d.core.render.Clipping)
package away3d.core.render {
import flash.display.*;
import away3d.core.draw.*;
import flash.geom.*;
public class Clipping {
public function rect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Boolean{
return (true);
}
public function asRectangleClipping():RectangleClipping{
return (new RectangleClipping(-1000000, -1000000, 1000000, 1000000));
}
public function check(_arg1:DrawPrimitive):Boolean{
return (true);
}
public static function screen(_arg1:Sprite):Clipping{
var _local2:Point;
if (((_arg1.stage) && ((_arg1.stage.align == StageAlign.TOP_LEFT)))){
_local2 = _arg1.globalToLocal(new Point(0, 0));
return (new RectangleClipping(_local2.x, _local2.y, (_local2.x + _arg1.stage.stageWidth), (_local2.y + _arg1.stage.stageHeight)));
};
return (new (Clipping));
}
}
}//package away3d.core.render
Section 54
//FindHitTraverser (away3d.core.render.FindHitTraverser)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.geom.*;
import away3d.core.draw.*;
public class FindHitTraverser extends ProjectionTraverser implements IPrimitiveConsumer {
public var worldZ:Number;
public var worldX:Number;
public var worldY:Number;
public var uv:NumberUV;
public var drawpri:DrawPrimitive;
public var screenX:Number;
public var screenY:Number;
public var screenZ:Number;// = INF
public var element:Object;
public var object:Object3D;
public function FindHitTraverser(_arg1:View3D, _arg2:Number, _arg3:Number){
screenZ = Infinity;
super(_arg1);
screenX = _arg2;
screenY = _arg3;
}
public function primitive(_arg1:DrawPrimitive):void{
var _local2:Number;
var _local3:Number;
var _local4:Matrix3D;
var _local5:DrawTriangle;
if (_arg1.minX > screenX){
return;
};
if (_arg1.maxX < screenX){
return;
};
if (_arg1.minY > screenY){
return;
};
if (_arg1.maxY < screenY){
return;
};
if (_arg1.contains(screenX, screenY)){
_local2 = _arg1.getZ(screenX, screenY);
if (_local2 < screenZ){
screenZ = _local2;
_local3 = (view.camera.zoom / (1 + (screenZ / view.camera.focus)));
_local4 = Matrix3D.inverse(view.camera.getView());
worldX = (((((screenX / _local3) * _local4.n11) + ((screenY / _local3) * _local4.n12)) + (screenZ * _local4.n13)) + _local4.n14);
worldY = (((((screenX / _local3) * _local4.n21) + ((screenY / _local3) * _local4.n22)) + (screenZ * _local4.n23)) + _local4.n24);
worldZ = (((((screenX / _local3) * _local4.n31) + ((screenY / _local3) * _local4.n32)) + (screenZ * _local4.n33)) + _local4.n34);
drawpri = _arg1;
object = _arg1.source;
element = null;
uv = null;
if ((_arg1 is DrawTriangle)){
_local5 = (_arg1 as DrawTriangle);
uv = _local5.getUV(screenX, screenY);
};
};
};
}
public function getMouseEvent(_arg1:String):MouseEvent3D{
var _local2:MouseEvent3D;
_local2 = new MouseEvent3D(_arg1);
_local2.screenX = screenX;
_local2.screenY = screenY;
_local2.screenZ = screenZ;
_local2.worldX = worldX;
_local2.worldY = worldY;
_local2.worldZ = worldZ;
_local2.view = view;
_local2.drawpri = drawpri;
_local2.element = element;
_local2.object = object;
_local2.uv = uv;
return (_local2);
}
override public function apply(_arg1:Object3D):void{
var _local2:IPrimitiveProvider;
var _local3:Projection;
if ((_arg1 is IPrimitiveProvider)){
_local2 = (_arg1 as IPrimitiveProvider);
_local3 = new Projection(view, _arg1.sceneTransform);
_local2.primitives(_local3, this);
};
}
}
}//package away3d.core.render
Section 55
//IBitmapRenderer (away3d.core.render.IBitmapRenderer)
package away3d.core.render {
public interface IBitmapRenderer {
}
}//package away3d.core.render
Section 56
//IPrimitiveConsumer (away3d.core.render.IPrimitiveConsumer)
package away3d.core.render {
import away3d.core.draw.*;
public interface IPrimitiveConsumer {
function primitive(_arg1:DrawPrimitive):void;
}
}//package away3d.core.render
Section 57
//IPrimitiveFilter (away3d.core.render.IPrimitiveFilter)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
public interface IPrimitiveFilter {
function filter(_arg1:Array, _arg2:Scene3D, _arg3:Camera3D, _arg4:Sprite, _arg5:Clipping):Array;
}
}//package away3d.core.render
Section 58
//IPrimitiveProvider (away3d.core.render.IPrimitiveProvider)
package away3d.core.render {
public interface IPrimitiveProvider {
function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void;
}
}//package away3d.core.render
Section 59
//IPrimitiveQuadrantFilter (away3d.core.render.IPrimitiveQuadrantFilter)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
public interface IPrimitiveQuadrantFilter {
function filter(_arg1:PrimitiveQuadrantTree, _arg2:Scene3D, _arg3:Camera3D, _arg4:Sprite, _arg5:Clipping):void;
}
}//package away3d.core.render
Section 60
//IRenderer (away3d.core.render.IRenderer)
package away3d.core.render {
import away3d.core.proto.*;
public interface IRenderer {
function desc():String;
function render(_arg1:View3D):void;
function stats():String;
}
}//package away3d.core.render
Section 61
//LightArray (away3d.core.render.LightArray)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.math.*;
public class LightArray implements ILightConsumer {
public var points:Array;
private var directed:Array;
private var ambients:Array;
public function LightArray(){
ambients = [];
directed = [];
points = [];
super();
}
public function ambientLight(_arg1:int, _arg2:Number):void{
throw (new Error("Not implemented"));
}
public function pointLight(_arg1:Projection, _arg2:int, _arg3:Number, _arg4:Number, _arg5:Number):void{
var _local6:Matrix3D;
var _local7:PointLightSource;
_local6 = _arg1.view;
_local7 = new PointLightSource();
_local7.x = _local6.n14;
_local7.y = _local6.n24;
_local7.z = _local6.n34;
_local7.red = ((_arg2 & 0xFF0000) >> 16);
_local7.green = ((_arg2 & 0xFF00) >> 8);
_local7.blue = (_arg2 & 0xFF);
_local7.ambient = _arg3;
_local7.diffuse = _arg4;
_local7.specular = _arg5;
points.push(_local7);
}
public function directedLight(_arg1:Number3D, _arg2:int, _arg3:Number):void{
throw (new Error("Not implemented"));
}
}
}//package away3d.core.render
Section 62
//PointLightSource (away3d.core.render.PointLightSource)
package away3d.core.render {
public class PointLightSource {
public var green:Number;
public var diffuse:Number;
public var blue:Number;
public var specular:Number;
public var red:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public var ambient:Number;
}
}//package away3d.core.render
Section 63
//PrimitiveArray (away3d.core.render.PrimitiveArray)
package away3d.core.render {
import away3d.core.draw.*;
import away3d.core.block.*;
public class PrimitiveArray implements IPrimitiveConsumer {
private var triangles:Array;
private var clip:Clipping;
private var blockers:Array;
public function PrimitiveArray(_arg1:Clipping, _arg2:Array){
triangles = [];
super();
this.clip = _arg1;
this.blockers = _arg2;
}
public function list():Array{
var _local1:Array;
_local1 = this.triangles;
this.triangles = null;
return (_local1);
}
public function primitive(_arg1:DrawPrimitive):void{
var _local2:int;
var _local3:int;
var _local4:Blocker;
if (clip.check(_arg1)){
if (!blockers){
triangles.push(_arg1);
return;
};
_local2 = blockers.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = blockers[_local3];
if (_local4.screenZ > _arg1.minZ){
break;
};
if (_local4.block(_arg1)){
return;
};
_local3++;
};
triangles.push(_arg1);
};
}
}
}//package away3d.core.render
Section 64
//PrimitiveQuadrantTree (away3d.core.render.PrimitiveQuadrantTree)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.draw.*;
public class PrimitiveQuadrantTree implements IPrimitiveConsumer {
private var root:PrimitiveQuadrantTreeNode;
private var clip:Clipping;
public function PrimitiveQuadrantTree(_arg1:Clipping){
var _local2:RectangleClipping;
super();
this.clip = _arg1;
_local2 = _arg1.asRectangleClipping();
root = new PrimitiveQuadrantTreeNode(((_local2.minX + _local2.maxX) / 2), ((_local2.minY + _local2.maxY) / 2), ((_local2.maxX - _local2.minX) / 2), ((_local2.maxY - _local2.minY) / 2), 0);
}
public function render(_arg1:RenderSession):void{
root.render(_arg1, -(Infinity));
}
public function add(_arg1:Array):void{
var _local2:DrawPrimitive;
for each (_local2 in _arg1) {
root.push(_local2);
};
}
public function remove(_arg1:DrawPrimitive):void{
root.remove(_arg1);
}
public function primitive(_arg1:DrawPrimitive):void{
if (clip.check(_arg1)){
root.push(_arg1);
};
}
public function push(_arg1:DrawPrimitive):void{
root.push(_arg1);
}
public function get(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object3D):Array{
return (root.get(_arg1, _arg2, _arg3, _arg4, _arg5));
}
public function list():Array{
return (root.get(-1000000, -1000000, 1000000, 1000000, null));
}
}
}//package away3d.core.render
Section 65
//PrimitiveQuadrantTreeNode (away3d.core.render.PrimitiveQuadrantTreeNode)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.draw.*;
public class PrimitiveQuadrantTreeNode {
private var righttop:PrimitiveQuadrantTreeNode;
private var level:Number;
private var center:Array;
private var onlysource:Object3D;
private var xdiv:Number;
private var split:Boolean;
private var rightbottom:PrimitiveQuadrantTreeNode;
private var halfheight:Number;
private var render_center_length:int;// = -1
private var lefttop:PrimitiveQuadrantTreeNode;
private var render_children_index:int;// = -1
private var render_center_index:int;// = -1
private var halfwidth:Number;
private var ydiv:Number;
private var leftbottom:PrimitiveQuadrantTreeNode;
private var render_children_length:int;// = -1
private var children:Array;
private static var dummysource:Object3D = new Object3D();
public function PrimitiveQuadrantTreeNode(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number){
render_center_length = -1;
render_center_index = -1;
render_children_length = -1;
render_children_index = -1;
super();
this.level = _arg5;
this.xdiv = _arg1;
this.ydiv = _arg2;
halfwidth = (_arg3 / 2);
halfheight = (_arg4 / 2);
onlysource = dummysource;
}
public function render(_arg1:RenderSession, _arg2:Number):void{
var _local3:DrawPrimitive;
if (render_center_length == -1){
if (center != null){
render_center_length = center.length;
if (render_center_length > 1){
center.sortOn("screenZ", (Array.DESCENDING | Array.NUMERIC));
};
} else {
render_center_length = 0;
};
render_center_index = 0;
if (children != null){
render_children_length = children.length;
if (render_children_length > 1){
children.sortOn("screenZ", (Array.DESCENDING | Array.NUMERIC));
};
} else {
render_children_length = 0;
};
render_children_index = 0;
};
while (render_center_index < render_center_length) {
_local3 = center[render_center_index];
if (_local3.screenZ < _arg2){
break;
};
render_other(_arg1, _local3.screenZ);
_local3.render(_arg1);
render_center_index++;
};
render_other(_arg1, _arg2);
}
public function remove(_arg1:DrawPrimitive):void{
var _local2:int;
if ((((((_arg1.maxX > xdiv)) && ((_arg1.minX < xdiv)))) || ((((_arg1.maxY > ydiv)) && ((_arg1.minY < ydiv)))))){
if (center == null){
throw (new Error("Can't remove"));
};
_local2 = center.indexOf(_arg1);
if (_local2 == -1){
throw (new Error("Can't remove"));
};
center.splice(_local2, 1);
return;
};
if (!split){
if (children == null){
throw (new Error("Can't remove"));
};
_local2 = children.indexOf(_arg1);
if (_local2 == -1){
throw (new Error("Can't remove"));
};
children.splice(_local2, 1);
return;
};
if (_arg1.maxX <= xdiv){
if (_arg1.maxY <= ydiv){
if (lefttop == null){
throw (new Error("Can't remove"));
};
lefttop.remove(_arg1);
} else {
if (leftbottom == null){
throw (new Error("Can't remove"));
};
leftbottom.remove(_arg1);
};
} else {
if (_arg1.minX >= xdiv){
if (_arg1.maxY <= ydiv){
if (righttop == null){
throw (new Error("Can't remove"));
};
righttop.remove(_arg1);
} else {
if (rightbottom == null){
throw (new Error("Can't remove"));
};
rightbottom.remove(_arg1);
};
};
};
}
private function getList(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object3D, _arg6:Array):void{
var _local7:DrawPrimitive;
if (onlysource != null){
if (_arg5 == onlysource){
return;
};
};
if (center != null){
for each (_local7 in center) {
if (_local7.maxX < _arg1){
} else {
if (_local7.minX > _arg3){
} else {
if (_local7.maxY < _arg2){
} else {
if (_local7.minY > _arg4){
} else {
if (_arg5 != null){
//unresolved if
} else {
_arg6.push(_local7);
};
};
};
};
};
};
};
if (!split){
if (children != null){
for each (_local7 in children) {
if (_local7.maxX < _arg1){
} else {
if (_local7.minX > _arg3){
} else {
if (_local7.maxY < _arg2){
} else {
if (_local7.minY > _arg4){
} else {
if (_arg5 != null){
//unresolved if
} else {
_arg6.push(_local7);
};
};
};
};
};
};
};
return;
};
if (_arg1 < xdiv){
if (_arg2 < ydiv){
if (lefttop != null){
lefttop.getList(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
};
};
if (_arg4 > ydiv){
if (leftbottom != null){
leftbottom.getList(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
};
};
};
if (_arg3 > xdiv){
if (_arg2 < ydiv){
if (righttop != null){
righttop.getList(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
};
};
if (_arg4 > ydiv){
if (rightbottom != null){
rightbottom.getList(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
};
};
};
}
private function render_other(_arg1:RenderSession, _arg2:Number):void{
var _local3:DrawPrimitive;
if (render_children_length > 0){
while (render_children_index < render_children_length) {
_local3 = children[render_children_index];
if (_local3.screenZ < _arg2){
return;
};
_local3.render(_arg1);
render_children_index++;
};
} else {
if (lefttop != null){
lefttop.render(_arg1, _arg2);
};
if (leftbottom != null){
leftbottom.render(_arg1, _arg2);
};
if (righttop != null){
righttop.render(_arg1, _arg2);
};
if (rightbottom != null){
rightbottom.render(_arg1, _arg2);
};
};
}
public function get(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object3D):Array{
var _local6:Array;
_local6 = [];
getList(_arg1, _arg2, _arg3, _arg4, _arg5, _local6);
return (_local6);
}
public function push(_arg1:DrawPrimitive):void{
var _local2:DrawPrimitive;
if (onlysource == dummysource){
onlysource = _arg1.source;
} else {
if (onlysource != _arg1.source){
(onlysource == null);
};
};
if ((((((_arg1.maxX > xdiv)) && ((_arg1.minX < xdiv)))) || ((((_arg1.maxY > ydiv)) && ((_arg1.minY < ydiv)))))){
if (center == null){
center = new Array();
};
center.push(_arg1);
return;
};
if (!split){
if (children == null){
children = new Array();
};
children.push(_arg1);
if (children.length > (level * 2)){
split = true;
for each (_local2 in children) {
push(_local2);
};
children = null;
};
return;
};
if (_arg1.maxX <= xdiv){
if (_arg1.maxY <= ydiv){
if (lefttop == null){
lefttop = new PrimitiveQuadrantTreeNode((xdiv - (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, (level + 1));
};
lefttop.push(_arg1);
} else {
if (leftbottom == null){
leftbottom = new PrimitiveQuadrantTreeNode((xdiv - (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, (level + 1));
};
leftbottom.push(_arg1);
};
} else {
if (_arg1.minX >= xdiv){
if (_arg1.maxY <= ydiv){
if (righttop == null){
righttop = new PrimitiveQuadrantTreeNode((xdiv + (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, (level + 1));
};
righttop.push(_arg1);
} else {
if (rightbottom == null){
rightbottom = new PrimitiveQuadrantTreeNode((xdiv + (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, (level + 1));
};
rightbottom.push(_arg1);
};
};
};
}
}
}//package away3d.core.render
Section 66
//PrimitiveTraverser (away3d.core.render.PrimitiveTraverser)
package away3d.core.render {
import away3d.core.proto.*;
public class PrimitiveTraverser extends ProjectionTraverser {
private var consumer:IPrimitiveConsumer;
private var lights:ILightConsumer;
public function PrimitiveTraverser(_arg1:IPrimitiveConsumer, _arg2:ILightConsumer, _arg3:View3D){
this.consumer = _arg1;
this.lights = _arg2;
super(_arg3);
}
override public function apply(_arg1:Object3D):void{
var _local2:Projection;
var _local3:IPrimitiveProvider;
var _local4:ILightProvider;
_local2 = new Projection(view, _arg1.sceneTransform);
if ((_arg1 is IPrimitiveProvider)){
_local3 = (_arg1 as IPrimitiveProvider);
_local3.primitives(_local2, consumer);
};
if ((_arg1 is ILightProvider)){
_local4 = (_arg1 as ILightProvider);
_local4.light(_local2, lights);
};
}
}
}//package away3d.core.render
Section 67
//Projection (away3d.core.render.Projection)
package away3d.core.render {
import away3d.core.proto.*;
import away3d.core.math.*;
public class Projection {
public var view:Matrix3D;
public var transform:Matrix3D;
public var zoom:Number;
public var focus:Number;
public function Projection(_arg1:View3D, _arg2:Matrix3D=null){
this.transform = _arg2;
this.view = Matrix3D.multiply(_arg1.camera.getView(), _arg2);
this.focus = _arg1.camera.focus;
this.zoom = _arg1.camera.zoom;
}
}
}//package away3d.core.render
Section 68
//ProjectionTraverser (away3d.core.render.ProjectionTraverser)
package away3d.core.render {
import away3d.core.proto.*;
public class ProjectionTraverser extends Traverser {
protected var view:View3D;
public function ProjectionTraverser(_arg1:View3D){
this.view = _arg1;
}
override public function match(_arg1:Object3D):Boolean{
if (!_arg1.visible){
return (false);
};
if ((_arg1 is ILODObject)){
return ((_arg1 as ILODObject).matchLOD(view));
};
return (true);
}
override public function leave(_arg1:Object3D):void{
_arg1.transformUpdate = false;
}
override public function enter(_arg1:Object3D):void{
_arg1.project();
}
}
}//package away3d.core.render
Section 69
//QuadrantRenderer (away3d.core.render.QuadrantRenderer)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
public class QuadrantRenderer implements IRenderer {
private var qdrntfilters:Array;
public function QuadrantRenderer(... _args){
var _local2:IPrimitiveQuadrantFilter;
super();
qdrntfilters = [];
for each (_local2 in _args) {
qdrntfilters.push(_local2);
};
}
public function desc():String{
return ((("Quadrant [" + qdrntfilters.join("+")) + "]"));
}
public function render(_arg1:View3D):void{
var _local2:Scene3D;
var _local3:Camera3D;
var _local4:Sprite;
var _local5:Clipping;
var _local6:Graphics;
var _local7:PrimitiveQuadrantTree;
var _local8:LightArray;
var _local9:PrimitiveTraverser;
var _local10:RenderSession;
var _local11:IPrimitiveQuadrantFilter;
_local2 = _arg1.scene;
_local3 = _arg1.camera;
_local4 = _arg1.canvas;
_local5 = _arg1.clip;
_local6 = _local4.graphics;
_local7 = new PrimitiveQuadrantTree(_local5);
_local8 = new LightArray();
_local9 = new PrimitiveTraverser(_local7, _local8, _arg1);
_local2.traverse(_local9);
_local10 = new RenderSession(_local2, _local3, _local4, _local5, _local8);
for each (_local11 in qdrntfilters) {
_local11.filter(_local7, _local2, _local3, _local4, _local5);
};
_local7.render(_local10);
}
public function stats():String{
return ("");
}
}
}//package away3d.core.render
Section 70
//QuadrantRiddleFilter (away3d.core.render.QuadrantRiddleFilter)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.draw.*;
import flash.utils.*;
public class QuadrantRiddleFilter implements IPrimitiveQuadrantFilter {
public var maxdelay:int;
public function QuadrantRiddleFilter(_arg1:int=60000){
this.maxdelay = _arg1;
}
public function filter(_arg1:PrimitiveQuadrantTree, _arg2:Scene3D, _arg3:Camera3D, _arg4:Sprite, _arg5:Clipping):void{
var _local6:int;
var _local7:int;
var _local8:Array;
var _local9:int;
var _local10:Array;
var _local11:DrawPrimitive;
var _local12:Array;
var _local13:DrawPrimitive;
var _local14:DrawTriangle;
var _local15:Array;
var _local16:DrawPrimitive;
_local6 = getTimer();
_local7 = 0;
_local8 = _arg1.list();
_local9 = 0;
while (_local8.length > 0) {
_local10 = new Array();
for each (_local11 in _local8) {
_local12 = _arg1.get(_local11.minX, _local11.minY, _local11.maxX, _local11.maxY, _local11.source);
for each (_local13 in _local12) {
if (_local13 == _local11){
} else {
if (_local11.source != null){
//unresolved if
} else {
if (_local13.minZ >= _local11.maxZ){
} else {
if (_local13.maxZ <= _local11.minZ){
} else {
if (!(_local13 is DrawTriangle)){
} else {
_local14 = (_local13 as DrawTriangle);
_local15 = _local11.riddle(_local14, _arg3.focus);
if (_local15 == null){
} else {
_arg1.remove(_local11);
for each (_local16 in _local15) {
_local10.push(_local16);
_arg1.push(_local16);
};
break;
};
};
};
};
};
};
};
};
_local8 = _local10;
_local9 = (_local9 + 1);
if (_local9 == 40){
break;
};
};
}
public function toString():String{
return (("QuadrantRiddleFilter" + ((maxdelay)==60000) ? "" : (("(" + maxdelay) + "ms)")));
}
}
}//package away3d.core.render
Section 71
//RectangleClipping (away3d.core.render.RectangleClipping)
package away3d.core.render {
import away3d.core.draw.*;
public class RectangleClipping extends Clipping {
public var minX:Number;
public var maxX:Number;
public var maxY:Number;
public var minY:Number;
public function RectangleClipping(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
this.minX = _arg1;
this.maxX = _arg3;
this.minY = _arg2;
this.maxY = _arg4;
}
override public function rect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Boolean{
if (this.maxX < _arg1){
return (false);
};
if (this.minX > _arg3){
return (false);
};
if (this.maxY < _arg2){
return (false);
};
if (this.minY > _arg4){
return (false);
};
return (true);
}
override public function check(_arg1:DrawPrimitive):Boolean{
if (_arg1.maxX < minX){
return (false);
};
if (_arg1.minX > maxX){
return (false);
};
if (_arg1.maxY < minY){
return (false);
};
if (_arg1.minY > maxY){
return (false);
};
return (true);
}
override public function asRectangleClipping():RectangleClipping{
return (this);
}
}
}//package away3d.core.render
Section 72
//Renderer (away3d.core.render.Renderer)
package away3d.core.render {
public class Renderer {
public static function get INTERSECTING_OBJECTS():IRenderer{
return (new QuadrantRenderer(new QuadrantRiddleFilter(), new AnotherRivalFilter()));
}
public static function get CORRECT_Z_ORDER():IRenderer{
return (new QuadrantRenderer(new AnotherRivalFilter()));
}
public static function get BASIC():IRenderer{
return (new BasicRenderer());
}
}
}//package away3d.core.render
Section 73
//RenderSession (away3d.core.render.RenderSession)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
import flash.utils.*;
public class RenderSession {
public var container:Sprite;
public var lightarray:LightArray;
public var camera:Camera3D;
public var scene:Scene3D;
public var time:int;
public var clip:Clipping;
private var _graphics:Graphics;
public function RenderSession(_arg1:Scene3D, _arg2:Camera3D, _arg3:Sprite, _arg4:Clipping, _arg5:LightArray){
this.scene = _arg1;
this.camera = _arg2;
this.container = _arg3;
this.clip = _arg4;
this.lightarray = _arg5;
this.time = getTimer();
}
public function get graphics():Graphics{
var _local1:Sprite;
if (_graphics == null){
_local1 = new Sprite();
container.addChild(_local1);
_graphics = _local1.graphics;
};
return (_graphics);
}
public function addDisplayObject(_arg1:DisplayObject):void{
_graphics = null;
container.addChild(_arg1);
}
public function renderTriangleColor(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{
var _local9:Graphics;
_local9 = ((_graphics) || (this.graphics));
_local9.lineStyle();
_local9.beginFill(_arg1, _arg2);
_local9.moveTo(_arg3, _arg4);
_local9.lineTo(_arg5, _arg6);
_local9.lineTo(_arg7, _arg8);
_local9.endFill();
}
}
}//package away3d.core.render
Section 74
//ZSortFilter (away3d.core.render.ZSortFilter)
package away3d.core.render {
import flash.display.*;
import away3d.core.proto.*;
public class ZSortFilter implements IPrimitiveFilter {
public function filter(_arg1:Array, _arg2:Scene3D, _arg3:Camera3D, _arg4:Sprite, _arg5:Clipping):Array{
_arg1.sortOn("screenZ", (Array.DESCENDING | Array.NUMERIC));
return (_arg1);
}
public function toString():String{
return ("ZSort");
}
}
}//package away3d.core.render
Section 75
//Debug (away3d.core.Debug)
package away3d.core {
public class Debug {
public static var warningsAsErrors:Boolean = false;
public static var active:Boolean = false;
public static function warning(_arg1:Object):void{
if (warningsAsErrors){
error(_arg1);
return;
};
trace(("WARNING: " + _arg1));
}
public static function trace(_arg1:Object):void{
dotrace(_arg1);
}
public static function delimiter():void{
}
public static function clear():void{
}
public static function error(_arg1:Object):void{
trace(("ERROR: " + _arg1));
throw (new Error(_arg1));
}
}
}//package away3d.core
private const dotrace:Function = function (_arg1:Object):void{
trace(_arg1);
};
Section 76
//Init (away3d.core.Init)
package away3d.core {
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.loaders.*;
public class Init {
private var init:Object;
private static var inits:Array = [];
public function Init(_arg1:Object){
this.init = _arg1;
}
public function getArray(_arg1:String):Array{
var _local2:Array;
if (init == null){
return ([]);
};
if (!init.hasOwnProperty(_arg1)){
return ([]);
};
_local2 = init[_arg1];
delete init[_arg1];
return (_local2);
}
public function getObject3D(_arg1:String):Object3D{
var _local2:Object3D;
if (init == null){
return (null);
};
if (!init.hasOwnProperty(_arg1)){
return (null);
};
_local2 = init[_arg1];
delete init[_arg1];
return (_local2);
}
public function getString(_arg1:String, _arg2:String):String{
var _local3:String;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local3 = init[_arg1];
delete init[_arg1];
return (_local3);
}
public function getColor(_arg1:String, _arg2:uint):uint{
var _local3:uint;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local3 = Cast.color(init[_arg1]);
delete init[_arg1];
return (_local3);
}
public function getNumber2D(_arg1:String):Number2D{
var _local2:Number2D;
if (init == null){
return (new Number2D());
};
if (!init.hasOwnProperty(_arg1)){
return (new Number2D());
};
_local2 = init[_arg1];
delete init[_arg1];
return (_local2);
}
public function getBoolean(_arg1:String, _arg2:Boolean):Boolean{
var _local3:Boolean;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local3 = init[_arg1];
delete init[_arg1];
return (_local3);
}
public function getObject(_arg1:String, _arg2:Object=null):Object{
var _local3:Object;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local3 = init[_arg1];
delete init[_arg1];
return (_local3);
}
public function getNumber3D(_arg1:String):Number3D{
var _local2:Number3D;
if (init == null){
return (new Number3D());
};
if (!init.hasOwnProperty(_arg1)){
return (new Number3D());
};
_local2 = init[_arg1];
delete init[_arg1];
return (_local2);
}
public function getInt(_arg1:String, _arg2:int, _arg3:Object=null):int{
var _local4:int;
var _local5:int;
var _local6:int;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local4 = init[_arg1];
if (_arg3 != null){
if (_arg3.hasOwnProperty("min")){
_local5 = _arg3["min"];
if (_local4 < _local5){
_local4 = _local5;
};
};
if (_arg3.hasOwnProperty("max")){
_local6 = _arg3["max"];
if (_local4 > _local6){
_local4 = _local6;
};
};
};
delete init[_arg1];
return (_local4);
}
public function getNumber(_arg1:String, _arg2:Number, _arg3:Object=null):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
if (init == null){
return (_arg2);
};
if (!init.hasOwnProperty(_arg1)){
return (_arg2);
};
_local4 = init[_arg1];
if (_arg3 != null){
if (_arg3.hasOwnProperty("min")){
_local5 = _arg3["min"];
if (_local4 < _local5){
_local4 = _local5;
};
};
if (_arg3.hasOwnProperty("max")){
_local6 = _arg3["max"];
if (_local4 > _local6){
_local4 = _local6;
};
};
};
delete init[_arg1];
return (_local4);
}
public static function checkUnusedArguments():void{
var _local1:Array;
var _local2:Object;
var _local3:String;
var _local4:String;
if (inits.length == 0){
return;
};
_local1 = inits;
inits = [];
for each (_local2 in _local1) {
_local3 = null;
for (_local4 in _local2) {
if (_local3 == null){
_local3 = "";
} else {
_local3 = (_local3 + ", ");
};
_local3 = (_local3 + ((_local4 + ":") + _local2[_local4]));
};
if (_local3 != null){
Debug.warning((("Unused arguments: {" + _local3) + "}"));
};
};
}
public static function parse(_arg1:Object):Init{
if (_arg1 == null){
return (new Init(null));
};
if ((_arg1 is Init)){
return ((_arg1 as Init));
};
inits.push(_arg1);
return (new Init(_arg1));
}
}
}//package away3d.core
Section 77
//DofEngine (away3d.dof.DofEngine)
package away3d.dof {
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
public class DofEngine {
private var bitmaps:Array;
private var dofScale:Number;
private var levels:Number;
public var focus:Number;
public static var engines:Dictionary = new Dictionary();
public function DofEngine(_arg1:Boolean, _arg2:Number, _arg3:BitmapData, _arg4:Number=30, _arg5:Number=40){
var _local6:Matrix;
var _local7:Point;
var _local8:Number;
var _local9:BlurFilter;
var _local10:int;
var _local11:BitmapData;
super();
this.dofScale = _arg4;
this.levels = _arg2;
_local6 = new Matrix();
_local7 = new Point(0, 0);
bitmaps = new Array(_arg2);
_local8 = 0;
while (_local8 < _arg2) {
_local9 = new BlurFilter((2 + ((_arg5 * _local8) / _arg2)), (2 + ((_arg5 * _local8) / _arg2)), 4);
_local6.identity();
_local10 = (_arg3.width * (1 + (_local8 / (_arg2 / 2))));
_local6.translate((-(_arg3.width) / 2), (-(_arg3.height) / 2));
_local6.translate((_local10 / 2), (_local10 / 2));
_local11 = new BitmapData(_local10, _local10, true, 0);
_local11.draw(_arg3, _local6);
_local11.applyFilter(_local11, _local11.rect, _local7, _local9);
bitmaps[_local8] = _local11;
_local8++;
};
}
public function getBitmap(_arg1:Number):BitmapData{
var _local2:int;
_local2 = Math.floor(Math.max(0, Math.min((levels - 1), (Math.abs((focus - _arg1)) / dofScale))));
return (bitmaps[_local2]);
}
public static function getDofEngine(_arg1:String, _arg2:Number, _arg3:BitmapData, _arg4:Number=30, _arg5:Number=40):DofEngine{
if (engines[_arg1] == null){
engines[_arg1] = new DofEngine(true, _arg2, _arg3, _arg4, _arg5);
};
return (engines[_arg1]);
}
}
}//package away3d.dof
Section 78
//Cast (away3d.loaders.Cast)
package away3d.loaders {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.geom.*;
import away3d.core.material.*;
import away3d.core.*;
import flash.utils.*;
public class Cast {
private static var colornames:Dictionary;
private static var hexchars:String = "0123456789abcdefABCDEF";
public static function color(_arg1):uint{
var _local2:uint;
_local2 = trycolor(_arg1);
return (_local2);
}
public static function material(_arg1):IMaterial{
if (_arg1 == null){
return (null);
};
if ((_arg1 is Class)){
_arg1 = new (_arg1);
};
if ((_arg1 is IMaterial)){
return (_arg1);
};
if ((_arg1 is BitmapData)){
return (new BitmapMaterial(_arg1, {smooth:true}));
};
if (_arg1.bitmapData){
return (new BitmapMaterial(_arg1.bitmapData, {smooth:true}));
};
return (null);
}
public static function trycolor(_arg1):uint{
if ((_arg1 is uint)){
return ((_arg1 as uint));
};
if ((_arg1 is int)){
return ((_arg1 as uint));
};
if ((_arg1 is String)){
if (_arg1 == "random"){
return (uint((Math.random() * 16777216)));
};
if (colornames == null){
colornames = new Dictionary();
colornames["steelblue"] = 4620980;
colornames["royalblue"] = 267920;
colornames["cornflowerblue"] = 6591981;
colornames["lightsteelblue"] = 11584734;
colornames["mediumslateblue"] = 8087790;
colornames["slateblue"] = 6970061;
colornames["darkslateblue"] = 4734347;
colornames["midnightblue"] = 1644912;
colornames["navy"] = 128;
colornames["darkblue"] = 139;
colornames["mediumblue"] = 205;
colornames["blue"] = 0xFF;
colornames["dodgerblue"] = 2003199;
colornames["deepskyblue"] = 49151;
colornames["lightskyblue"] = 8900346;
colornames["skyblue"] = 8900331;
colornames["lightblue"] = 11393254;
colornames["powderblue"] = 11591910;
colornames["azure"] = 15794175;
colornames["lightcyan"] = 14745599;
colornames["paleturquoise"] = 11529966;
colornames["mediumturquoise"] = 4772300;
colornames["lightseagreen"] = 2142890;
colornames["darkcyan"] = 0x8B8B;
colornames["teal"] = 0x8080;
colornames["cadetblue"] = 6266528;
colornames["darkturquoise"] = 52945;
colornames["aqua"] = 0xFFFF;
colornames["cyan"] = 0xFFFF;
colornames["turquoise"] = 4251856;
colornames["aquamarine"] = 8388564;
colornames["mediumaquamarine"] = 6737322;
colornames["darkseagreen"] = 9419919;
colornames["mediumseagreen"] = 3978097;
colornames["seagreen"] = 3050327;
colornames["darkgreen"] = 0x6400;
colornames["green"] = 0x8000;
colornames["forestgreen"] = 2263842;
colornames["limegreen"] = 3329330;
colornames["lime"] = 0xFF00;
colornames["chartreuse"] = 0x7FFF00;
colornames["lawngreen"] = 0x7CFC00;
colornames["greenyellow"] = 11403055;
colornames["yellowgreen"] = 10145074;
colornames["palegreen"] = 10025880;
colornames["lightgreen"] = 9498256;
colornames["springgreen"] = 65407;
colornames["mediumspringgreen"] = 64154;
colornames["darkolivegreen"] = 5597999;
colornames["olivedrab"] = 7048739;
colornames["olive"] = 0x808000;
colornames["darkkhaki"] = 12433259;
colornames["darkgoldenrod"] = 12092939;
colornames["goldenrod"] = 14329120;
colornames["gold"] = 0xFFD700;
colornames["yellow"] = 0xFFFF00;
colornames["khaki"] = 15787660;
colornames["palegoldenrod"] = 15657130;
colornames["blanchedalmond"] = 16772045;
colornames["moccasin"] = 16770229;
colornames["wheat"] = 16113331;
colornames["navajowhite"] = 16768685;
colornames["burlywood"] = 14596231;
colornames["tan"] = 13808780;
colornames["rosybrown"] = 12357519;
colornames["sienna"] = 10506797;
colornames["saddlebrown"] = 9127187;
colornames["chocolate"] = 13789470;
colornames["peru"] = 13468991;
colornames["sandybrown"] = 16032864;
colornames["darkred"] = 0x8B0000;
colornames["maroon"] = 0x800000;
colornames["brown"] = 10824234;
colornames["firebrick"] = 11674146;
colornames["indianred"] = 13458524;
colornames["lightcoral"] = 15761536;
colornames["salmon"] = 16416882;
colornames["darksalmon"] = 15308410;
colornames["lightsalmon"] = 16752762;
colornames["coral"] = 16744272;
colornames["tomato"] = 16737095;
colornames["darkorange"] = 0xFF8C00;
colornames["orange"] = 0xFFA500;
colornames["orangered"] = 0xFF4500;
colornames["crimson"] = 14423100;
colornames["red"] = 0xFF0000;
colornames["deeppink"] = 16716947;
colornames["fuchsia"] = 0xFF00FF;
colornames["magenta"] = 0xFF00FF;
colornames["hotpink"] = 16738740;
colornames["lightpink"] = 16758465;
colornames["pink"] = 16761035;
colornames["palevioletred"] = 14381203;
colornames["mediumvioletred"] = 13047173;
colornames["purple"] = 0x800080;
colornames["darkmagenta"] = 0x8B008B;
colornames["mediumpurple"] = 9662683;
colornames["blueviolet"] = 9055202;
colornames["indigo"] = 0x4B0082;
colornames["darkviolet"] = 0x9400D3;
colornames["darkorchid"] = 10040012;
colornames["mediumorchid"] = 12211667;
colornames["orchid"] = 14315734;
colornames["violet"] = 15631086;
colornames["plum"] = 14524637;
colornames["thistle"] = 14204888;
colornames["lavender"] = 15132410;
colornames["ghostwhite"] = 16316671;
colornames["aliceblue"] = 15792383;
colornames["mintcream"] = 16121850;
colornames["honeydew"] = 15794160;
colornames["lightgoldenrodyellow"] = 16448210;
colornames["lemonchiffon"] = 16775885;
colornames["cornsilk"] = 16775388;
colornames["lightyellow"] = 16777184;
colornames["ivory"] = 16777200;
colornames["floralwhite"] = 16775920;
colornames["linen"] = 16445670;
colornames["oldlace"] = 16643558;
colornames["antiquewhite"] = 16444375;
colornames["bisque"] = 16770244;
colornames["peachpuff"] = 16767673;
colornames["papayawhip"] = 16773077;
colornames["beige"] = 16119260;
colornames["seashell"] = 16774638;
colornames["lavenderblush"] = 16773365;
colornames["mistyrose"] = 16770273;
colornames["snow"] = 16775930;
colornames["white"] = 0xFFFFFF;
colornames["whitesmoke"] = 0xF5F5F5;
colornames["gainsboro"] = 0xDCDCDC;
colornames["lightgrey"] = 0xD3D3D3;
colornames["silver"] = 0xC0C0C0;
colornames["darkgrey"] = 0xA9A9A9;
colornames["grey"] = 0x808080;
colornames["lightslategrey"] = 7833753;
colornames["slategrey"] = 7372944;
colornames["dimgrey"] = 0x696969;
colornames["darkslategrey"] = 3100495;
colornames["black"] = 0;
colornames["transparent"] = 4278190080;
};
if (colornames[_arg1] != null){
return (colornames[_arg1]);
};
if ((((_arg1.length == 6)) && (hexstring(_arg1)))){
return (parseInt(("0x" + _arg1)));
};
};
return (4294967295);
}
private static function hexstring(_arg1:String):Boolean{
var _local2:int;
_local2 = 0;
while (_local2 < _arg1.length) {
if (hexchars.indexOf(_arg1.charAt(_local2)) == -1){
return (false);
};
_local2++;
};
return (true);
}
public static function bitmap(_arg1):BitmapData{
if ((_arg1 is Class)){
_arg1 = new (_arg1);
};
if ((_arg1 is BitmapData)){
return (_arg1);
};
if (_arg1.bitmapData){
return (_arg1.bitmapData);
};
return (null);
}
public static function string(_arg1):String{
if ((_arg1 is Class)){
_arg1 = new (_arg1);
};
if ((_arg1 is String)){
return (_arg1);
};
return (String(_arg1));
}
public static function xml(_arg1):XML{
if ((_arg1 is Class)){
_arg1 = new (_arg1);
};
if ((_arg1 is XML)){
return (_arg1);
};
return (XML(_arg1));
}
public static function library(_arg1):MaterialLibrary{
var _local2:MaterialLibrary;
var _local3:String;
if (_arg1 == null){
return (new MaterialLibrary());
};
if ((_arg1 is Class)){
_arg1 = new (_arg1);
};
if ((_arg1 is MaterialLibrary)){
return (_arg1);
};
if ((_arg1 is IMaterial)){
return (new MaterialLibrary(_arg1));
};
if ((_arg1 is BitmapData)){
return (new MaterialLibrary(new BitmapMaterial(_arg1, {smooth:true})));
};
if (_arg1.bitmapData){
return (new MaterialLibrary(new BitmapMaterial(_arg1.bitmapData, {smooth:true})));
};
_local2 = new MaterialLibrary();
for (_local3 in _arg1) {
_local2.add(Cast.material(_arg1[_local3]), _local3);
};
return (_local2);
}
}
}//package away3d.loaders
Section 79
//MaterialLibrary (away3d.loaders.MaterialLibrary)
package away3d.loaders {
import away3d.core.material.*;
import flash.utils.*;
public class MaterialLibrary {
private var def:IMaterial;
private var materials:Dictionary;
public function MaterialLibrary(_arg1:IMaterial=null):void{
materials = new Dictionary();
super();
this.def = _arg1;
}
public function add(_arg1:IMaterial, _arg2:String):void{
if (_arg2 == "def"){
def = _arg1;
} else {
materials[_arg2] = _arg1;
};
}
public function getTriangleMaterial(_arg1:String):ITriangleMaterial{
return ((((materials[_arg1]) || (def)) as ITriangleMaterial));
}
public function getMaterialByName(_arg1:String):IMaterial{
return (((materials[_arg1]) || (def)));
}
}
}//package away3d.loaders
Section 80
//Obj (away3d.loaders.Obj)
package away3d.loaders {
import flash.events.*;
import away3d.core.proto.*;
import away3d.core.geom.*;
import away3d.core.material.*;
import away3d.core.*;
import flash.net.*;
public class Obj {
private var mat;
private var scaling:Number;
private var mesh:Mesh3D;
private var url:String;
private var myURLLoader:URLLoader;
public function Obj(_arg1:String, _arg2:IMaterial, _arg3:Object=null, _arg4:Number=1){
url = url;
mat = _arg2;
_arg3 = Init.parse(_arg3);
scaling = _arg4;
if ((_arg3 as Init).getBoolean("particleMesh", false)){
mesh = new ParticleMesh(null, _arg3);
} else {
if ((_arg3 as Init).getBoolean("bitmapMesh", false)){
mesh = new BitmapMesh3D(null, _arg3);
} else {
mesh = new Mesh3D(null, _arg3);
};
};
parseObj(_arg1);
}
private function parseObj(_arg1:String):void{
var lines:Array;
var line:String;
var trunk:Array;
var face0:Array;
var face1:Array;
var face2:Array;
var face3:Array;
var face:Face3D;
var uvA:NumberUV;
var uvB:NumberUV;
var uvC:NumberUV;
var x:Number;
var y:Number;
var z:Number;
var UVs:Array;
var i:int;
var myPattern:RegExp;
var filestring = _arg1;
filestring = unescape(filestring);
lines = filestring.split("\n");
UVs = new Array();
while (lines.length) {
line = String(lines.shift());
i = (i + 1);
if (line.substring(0, 2) == "v "){
try {
trunk = line.substring(2, line.length).split(" ");
if (trunk.length == 4){
trunk.shift();
};
x = (Number(trunk[0]) * scaling);
y = (-(Number(trunk[2])) * scaling);
z = (Number(trunk[1]) * scaling);
mesh.vertices.push(new Vertex3D(x, y, z));
} catch(error:Error) {
};
};
if (line.substring(0, 2) == "vt"){
try {
trunk = line.substring(2, line.length).split(" ");
trunk.shift();
if (trunk.length == 4){
trunk.shift();
};
UVs.push({u:parseFloat(trunk[0]), v:parseFloat(trunk[1])});
} catch(error:Error) {
};
};
if (line.substring(0, 2) == "f "){
if (line.indexOf("-") != -1){
myPattern = new RegExp("-", "g");
line = line.substring(2, line.length).replace(myPattern, "");
trunk = line.split(" ");
} else {
trunk = line.substring(2, line.length).split(" ");
};
try {
if (((((((trunk[0]) && (trunk[1]))) && (trunk[2]))) && (trunk[3]))){
if (trunk[0].indexOf("/") != -1){
face0 = trunk[0].split("/");
} else {
face0 = [trunk[0]];
};
if (trunk[1].indexOf("/") != -1){
face1 = trunk[1].split("/");
} else {
face1 = [trunk[1]];
};
if (trunk[2].indexOf("/") != -1){
face2 = trunk[2].split("/");
} else {
face2 = [trunk[2]];
};
if (trunk[3].indexOf("/") != -1){
face3 = trunk[3].split("/");
} else {
face3 = [trunk[3]];
};
try {
if (((((((face0[1]) && (face1[1]))) && (face2[1]))) && (face3[1]))){
uvA = new NumberUV(UVs[(Number(face3[1]) - 1)].u, UVs[(Number(face3[1]) - 1)].v);
uvB = new NumberUV(UVs[(Number(face0[1]) - 1)].u, UVs[(Number(face0[1]) - 1)].v);
uvC = new NumberUV(UVs[(Number(face1[1]) - 1)].u, UVs[(Number(face1[1]) - 1)].v);
face = new Face3D(mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face0[0]) - 1)], mesh.vertices[(Number(face3[0]) - 1)], mat, uvC, uvB, uvA);
mesh.faces.push(face);
uvA = new NumberUV(UVs[(Number(face3[1]) - 1)].u, UVs[(Number(face3[1]) - 1)].v);
uvB = new NumberUV(UVs[(Number(face1[1]) - 1)].u, UVs[(Number(face1[1]) - 1)].v);
uvC = new NumberUV(UVs[(Number(face2[1]) - 1)].u, UVs[(Number(face2[1]) - 1)].v);
face = new Face3D(mesh.vertices[(Number(face2[0]) - 1)], mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face3[0]) - 1)], mat, uvC, uvB, uvA);
mesh.faces.push(face);
} else {
face = new Face3D(mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face0[0]) - 1)], mesh.vertices[(Number(face3[0]) - 1)], mat, null, null, null);
mesh.faces.push(face);
face = new Face3D(mesh.vertices[(Number(face2[0]) - 1)], mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face3[0]) - 1)], mat, null, null, null);
mesh.faces.push(face);
};
} catch(error:Error) {
};
} else {
if (((((trunk[0]) && (trunk[1]))) && (trunk[2]))){
if (trunk[0].indexOf("/") != -1){
face0 = trunk[0].split("/");
} else {
face0 = [trunk[0]];
};
if (trunk[1].indexOf("/") != -1){
face1 = trunk[1].split("/");
} else {
face1 = [trunk[1]];
};
if (trunk[2].indexOf("/") != -1){
face2 = trunk[2].split("/");
} else {
face2 = [trunk[2]];
};
try {
if (((((face0[1]) && (face1[1]))) && (face2[1]))){
uvA = new NumberUV(UVs[(Number(face0[1]) - 1)].u, UVs[(Number(face0[1]) - 1)].v);
uvB = new NumberUV(UVs[(Number(face1[1]) - 1)].u, UVs[(Number(face1[1]) - 1)].v);
uvC = new NumberUV(UVs[(Number(face2[1]) - 1)].u, UVs[(Number(face2[1]) - 1)].v);
face = new Face3D(mesh.vertices[(Number(face2[0]) - 1)], mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face0[0]) - 1)], mat, uvC, uvB, uvA);
mesh.faces.push(face);
} else {
face = new Face3D(mesh.vertices[(Number(face2[0]) - 1)], mesh.vertices[(Number(face1[0]) - 1)], mesh.vertices[(Number(face0[0]) - 1)], mat, null, null, null);
mesh.faces.push(face);
};
} catch(error:Error) {
};
};
};
} catch(error:Error) {
};
};
};
trace(("parsed obj file :" + mesh.faces.length));
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
trace("---> ioError .obj file, probably not found");
}
private function progressHandler(_arg1:ProgressEvent):void{
}
public static function parse(_arg1:String, _arg2=null, _arg3:Object=null, _arg4:Number=1):Mesh3D{
var _local5:Obj;
_local5 = new Obj(_arg1, Cast.material(_arg2), _arg3, _arg4);
return (_local5.mesh);
}
}
}//package away3d.loaders
Section 81
//FireMedusaEffect (effects.blinds.FireMedusaEffect)
package effects.blinds {
import synch.*;
import flash.display.*;
import flash.geom.*;
public class FireMedusaEffect extends AbstractDemoEffect {
private var particle:BitmapData;
private var furs:Array;
private var fCount:Number;
private var rot:Number;// = 0
private var mat:Matrix;
private var goalX:Number;
private var stiff:Number;// = 0.8
private var joints:Number;// = 8
private var force:Number;
private var goalY:Number;
private var angStiff:Number;// = 50
private var jLength:Number;// = 20
private var g:Number;// = 0
private var ballX:Number;
private var ballY:Number;
private var counter:Number;
public function FireMedusaEffect(){
mat = new Matrix();
furs = new Array();
jLength = 20;
joints = 8;
stiff = 0.8;
angStiff = 50;
g = 0;
counter = int((Math.random() * 62040));
rot = 0;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Array;
var _local8:Number;
var _local9:Object;
_buffer = _arg1;
this.fCount = _arg2.tentacleAmount;
this.ballX = (this.goalX = _arg2.startX);
this.ballY = (this.goalY = _arg2.startY);
_local3 = 0;
while (_local3 < fCount) {
_local4 = ((((Math.PI * 2) + rot) / fCount) * _local3);
_local5 = Math.cos(_local4);
_local6 = Math.sin(_local4);
_local7 = new Array();
_local8 = 1;
while (_local8 <= joints) {
_local9 = {x:(((_local5 * _local8) * jLength) + ballX), y:(((_local6 * _local8) * jLength) + ballY), i:0, j:0};
_local7.push(_local9);
_local8++;
};
furs.push(_local7);
_local3++;
};
this.particle = _arg2.texture;
play(1000);
}
override public function play(_arg1:Number):void{
var _local2:Number;
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Object;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
counter = (counter + (_arg1 / 10));
goalX = (((((Math.cos((counter / 23)) * 200) + 400) + (Math.cos((counter / 32)) * 100)) + (Math.cos((counter / 49)) * 50)) + 200);
goalY = (((Math.cos((counter / 17)) * 150) + (Math.cos((counter / 64)) * 75)) + 200);
ballX = (ballX + ((goalX - ballX) / 12));
ballY = (ballY + ((goalY - ballY) / 12));
_local2 = 0;
while (_local2 < fCount) {
_local3 = furs[_local2];
_local4 = ballX;
_local5 = ballY;
_local6 = ((((Math.PI * 2) / fCount) * _local2) + rot);
_local7 = 0;
while (_local7 < _local3.length) {
_local8 = _local3[_local7];
_local9 = _local8.x;
_local10 = _local8.y;
_local11 = (_local4 - _local9);
_local12 = (_local5 - _local10);
_local13 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12)));
_local14 = Math.atan2(_local12, _local11);
if (_local13 > jLength){
force = ((0.5 * (_local13 - jLength)) * stiff);
_local8.i = (_local8.i + (Math.cos(_local14) * force));
_local8.j = (_local8.j + (Math.sin(_local14) * force));
};
_local15 = (ballX + (Math.cos(_local6) * (jLength * _local7)));
_local16 = (ballY + (Math.sin(_local6) * (jLength * _local7)));
_local13 = Math.sqrt((((_local9 - _local15) * (_local9 - _local15)) + ((_local10 - _local16) * (_local10 - _local16))));
force = ((1 / _local13) * angStiff);
_local8.i = (_local8.i + (Math.cos(_local6) * force));
_local8.j = (_local8.j + (Math.sin(_local6) * force));
_local8.j = (_local8.j * 0.6);
_local8.i = (_local8.i * 0.6);
_local8.x = (_local8.x + _local8.i);
_local8.y = (_local8.y + _local8.j);
_local17 = 0;
while (_local17 < 5) {
mat.a = 0.2;
mat.d = 0.2;
mat.tx = (_local4 + (((_local8.x - _local4) / 5) * _local17));
mat.ty = (_local5 + (((_local8.y - _local5) / 5) * _local17));
_buffer.draw(particle, mat, null, "screen");
_local17++;
};
_local4 = _local8.x;
_local5 = _local8.y;
_local7++;
};
_local2++;
};
}
}
}//package effects.blinds
Section 82
//BParticlesEffect (effects.bparticles.BParticlesEffect)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
public class BParticlesEffect extends AbstractDemoEffect {
private var cameraDummy1:ObjectContainer3D;
public var scale:Number;// = 0.7
private var cameraDummy2:ObjectContainer3D;
public var amount:int;// = 150
private var lastTime:int;// = 0
public var dofEngine:DofEngine;
public var lookatPosition:Number3D;
private var view:View3D;
public var animateCamera:Boolean;// = false
private var cnt:int;// = 0
private var particles:Array;
public var emitter:Number3D;
private var mesh:ObjectContainer3D;
private var lines:Number;// = 4
public function BParticlesEffect(){
amount = 150;
scale = 0.7;
emitter = new Number3D(0, 0, 0);
cnt = 0;
lastTime = 0;
lines = 4;
animateCamera = false;
lookatPosition = new Number3D(0, 0, (-(amount) * 0.5));
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
super.init(_arg1, _arg2);
if (_arg2.amount){
amount = _arg2.amount;
};
_local3 = 0;
particles = new Array();
view = new View3D();
dofEngine = DofEngine.getDofEngine((_arg2.texture.getPixel32(64, 64).toString() + "bp"), 16, _arg2.texture, 20, 80);
dofEngine.focus = 100;
cameraDummy1 = new ObjectContainer3D();
view.scene.addChild(cameraDummy1);
cameraDummy1.addChild(view.camera);
view.renderer = new ParticleRenderer(_arg1);
view.camera.position = new Number3D(0, 0, 20);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
view.x = 400;
view.y = 200;
play(0);
}
public function reset(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{
var _local4:int;
lines = _arg1;
_local4 = 0;
while (_local4 < particles.length) {
view.scene.removeChild(particles[_local4]);
particles.splice(_local4, 1);
};
if (_arg2){
view.camera.position = new Number3D(0, 0, 0);
};
this.animateCamera = _arg3;
}
override public function play(_arg1:Number):void{
var _local2:DofParticle;
var _local3:int;
var _local4:ObjectContainer3D;
var _local5:Number;
var _local6:Number;
var _local7:int;
lastTime = (lastTime + _arg1);
cnt++;
_local3 = 0;
if (lastTime > 20){
while (lastTime > 0) {
_local4 = new ObjectContainer3D();
_local3 = 0;
while (_local3 < lines) {
_local2 = new DofParticle(dofEngine, ((Math.sin((cnt * 0.08)) * 0.08) + 0.16));
_local2.blendMode = BlendMode.NORMAL;
_local5 = Math.sin((_local3 * ((Math.PI * 2) / lines)));
_local6 = Math.cos((_local3 * ((Math.PI * 2) / lines)));
_local2.position = new Number3D((_local5 * 100), (_local6 * 100), 0);
_local4.addChild(_local2);
_local3++;
};
_local4.rotationZ = (cnt * 6);
_local4.position = new Number3D(0, 0, -(amount));
view.scene.addChild(_local4);
particles.unshift(_local4);
lastTime = (lastTime - _arg1);
};
};
while (_local3 < particles.length) {
_local4 = particles[_local3];
particles[_local3].z = (_local4.z + 5);
_local7 = 0;
while (_local7 < lines) {
_local4.children[_local7].scaling = ((Math.sin(((cnt * 0.18) + (_local4.z * 0.2))) * 0.08) + 0.25);
_local7++;
};
if (_local4.z > 20){
view.scene.removeChild(_local4);
particles.splice(_local3, 1);
} else {
_local3++;
};
};
view.camera.rotationZ = (view.camera.rotationZ + 2);
if (animateCamera){
view.camera.x = ((Math.sin((cnt * 0.23)) * amount) * scale);
view.camera.y = ((Math.cos((cnt * 0.13)) * amount) * scale);
};
view.camera.lookAt(lookatPosition);
view.render();
}
}
}//package effects.bparticles
Section 83
//CircleParticles (effects.bparticles.CircleParticles)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
import away3d.core.geom.*;
import flash.geom.*;
public class CircleParticles extends AbstractDemoEffect {
private var theta:Number;
private var lastTime:int;// = 0
private var scale:Number;// = 1
private var speed:Number;// = 0.04
private var amount:int;// = 200
private var texture:BitmapData;
private var dofEngine:DofEngine;
private var circles:Array;
private var view:View3D;
private var height:Number;
private var cnt:int;// = 0
private var scaleMatrix:Matrix;
private var particles:Array;
private var phi:Number;// = 0
private var nextVertex:Vertex3D;
public function CircleParticles(){
amount = 200;
cnt = 0;
lastTime = 0;
phi = 0;
speed = 0.04;
scale = 1;
circles = new Array(8);
theta = (-(Math.PI) * 2);
nextVertex = new Vertex3D();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:ParticleRenderer;
var _local4:int;
var _local5:ParticleMesh;
super.init(_arg1, _arg2);
if (_arg2.amount){
amount = _arg2.amount;
};
texture = _arg2.texture;
particles = new Array();
view = new View3D();
dofEngine = DofEngine.getDofEngine(texture.getPixel32(64, 64).toString(), 16, texture, 20, 80);
dofEngine.focus = 50;
_local3 = new ParticleRenderer(_buffer);
view.renderer = _local3;
view.camera.position = new Number3D(0, 0, 20);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
view.x = 400;
view.y = 200;
_local4 = 0;
while (_local4 < circles.length) {
trace("Create");
_local5 = new ParticleMesh(null, {dofEngine:dofEngine, scaling:0.005});
_local5.ppe = 3;
view.scene.addChild(_local5);
circles[_local4] = _local5;
_local4++;
};
}
public function reset(_arg1:int, _arg2:int, _arg3:Number):void{
var _local4:int;
var _local5:ParticleMesh;
var _local6:Number;
var _local7:Number;
var _local8:int;
_local4 = 0;
while (_local4 < circles.length) {
_local5 = circles[_local4];
_local5.clearSegments();
phi = 0;
_local6 = (Math.cos(0) * (3 * (_local4 + 1)));
_local7 = (Math.sin(0) * (3 * (_local4 + 1)));
_local5.lastVertex = new Vertex3D(_local6, _local7, 0);
trace(_local5.lastVertex);
_local8 = 0;
while (_local8 < 32) {
phi = (((_local8 * 2) * Math.PI) / 32);
nextVertex.x = (Math.cos(phi) * (3 * (_local4 + 1)));
nextVertex.y = (Math.sin(phi) * (3 * (_local4 + 1)));
nextVertex.z = 0;
_local5.appendSegment(nextVertex, 5, BlendMode.NORMAL);
_local8++;
};
_local4++;
};
}
override public function play(_arg1:Number):void{
var _local2:ParticleMesh;
var _local3:int;
lastTime = (lastTime + _arg1);
cnt++;
phi = (phi + speed);
view.render();
_local2 = circles[0];
_local3 = 1;
while (_local3 < circles.length) {
_local2 = circles[_local3];
_local2.rotationX = (_local2.rotationX - ((_local2.rotationX - circles[(_local3 - 1)].rotationX) / 3));
_local2.rotationY = (_local2.rotationY - ((_local2.rotationY - circles[(_local3 - 1)].rotationY) / 3));
_local2.rotationZ = (_local2.rotationZ - ((_local2.rotationZ - circles[(_local3 - 1)].rotationZ) / 3));
_local3++;
};
_local2 = circles[0];
_local2.rotationX = (_local2.rotationX + ((_arg1 * 0.05) * (Math.cos((_arg1 * 0.025)) + 1)));
_local2.rotationZ = (_local2.rotationZ + ((_arg1 * 0.08) * (Math.cos((_arg1 * 0.025)) + 1)));
_local2.rotationY = (_local2.rotationY - ((_arg1 * 0.07) * (Math.cos((_arg1 * 0.025)) + 1)));
}
}
}//package effects.bparticles
Section 84
//DofParticle (effects.bparticles.DofParticle)
package effects.bparticles {
import away3d.core.proto.*;
import away3d.dof.*;
import away3d.core.geom.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import flash.geom.*;
public class DofParticle extends Object3D implements IPrimitiveProvider {
public var scaling:Number;
public var age:int;
private var drawPrimitive:BitmapScaledBitmap;
public var blendMode:String;
private var dofEngine:DofEngine;
private var center:Vertex3D;
public var ct:ColorTransform;
public function DofParticle(_arg1:DofEngine, _arg2:Number=1, _arg3:Object=null){
center = new Vertex3D();
ct = new ColorTransform();
super(_arg3);
drawPrimitive = new BitmapScaledBitmap(null);
drawPrimitive.ct = ct;
this.scaling = _arg2;
this.dofEngine = _arg1;
}
public function primitives(_arg1:Projection, _arg2:IPrimitiveConsumer):void{
var _local3:Vertex2D;
var _local4:Number;
_local3 = center.project(_arg1);
_local4 = (_arg1.zoom / (1 + (_local3.z / _arg1.focus)));
drawPrimitive.bitmap = dofEngine.getBitmap(_local3.z);
drawPrimitive.rotation = this.rotationZ;
drawPrimitive.update(_local3, (_local4 * scaling));
drawPrimitive.blendMode = blendMode;
_arg2.primitive(drawPrimitive);
}
}
}//package effects.bparticles
Section 85
//ParticleRenderer (effects.bparticles.ParticleRenderer)
package effects.bparticles {
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.draw.*;
import away3d.core.render.*;
import flash.utils.*;
public class ParticleRenderer implements IRenderer, IBitmapRenderer {
private var bmpWidth:int;
private var bmpOut:BitmapData;
private var filters:Array;
private var bmpHeight:int;
private var clip:Clipping;
public var info:String;
private var bmpCX:int;
private var bmpCY:int;
public function ParticleRenderer(_arg1:BitmapData, ... _args){
bmpOut = _arg1;
bmpWidth = _arg1.width;
bmpHeight = _arg1.height;
bmpCX = (bmpWidth / 2);
bmpCY = (bmpHeight / 2);
this.clip = new RectangleClipping(-(bmpCX), -(bmpCY), bmpCX, bmpCY);
this.filters = _args;
this.filters.push(new ZSortFilter());
}
public function desc():String{
return ((("ParticleBitmapRenderer [" + filters.join("+")) + "]"));
}
public function render(_arg1:View3D):void{
var _local2:Scene3D;
var _local3:Camera3D;
var _local4:Sprite;
var _local5:int;
var _local6:PrimitiveArray;
var _local7:PrimitiveTraverser;
var _local8:Array;
var _local9:IPrimitiveFilter;
var _local10:IBitmapPrimitive;
_local2 = _arg1.scene;
_local3 = _arg1.camera;
_local4 = _arg1.canvas;
_local5 = getTimer();
info = "";
_local6 = new PrimitiveArray(clip, null);
_local7 = new PrimitiveTraverser(_local6, null, _arg1);
_local2.traverse(_local7);
_local8 = _local6.list();
info = (info + ((getTimer() - _local5) + "ms "));
_local5 = getTimer();
for each (_local9 in filters) {
_local8 = _local9.filter(_local8, _local2, _local3, _local4, clip);
};
info = (info + ((getTimer() - _local5) + "ms "));
_local5 = getTimer();
for each (_local10 in _local8) {
_local10.renderBitmap(bmpOut, bmpCX, bmpCY);
};
info = (info + ((getTimer() - _local5) + "ms "));
_local5 = getTimer();
info = (info + _local8.length);
}
public function stats():String{
return ("");
}
}
}//package effects.bparticles
Section 86
//ParticleTunnelEffect (effects.bparticles.ParticleTunnelEffect)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
public class ParticleTunnelEffect extends AbstractDemoEffect {
private var params:Object;
private var activeParts:Array;
private var scene:Scene3D;
private var texture:BitmapData;
public var coloring:Boolean;// = true
public var offsetX:Number;
public var offsetY:Number;
private var lastPart:int;// = 0
private var view:View3D;
private var camera:Camera3D;
public var cameraOffsetX:Number;
public var cameraOffsetY:Number;
private var rings:Array;
private var hairEngine:DofEngine;
public var speed:Number;
public var scaleX:Number;
public var scaleY:Number;
public var cameraScaleX:Number;
public var cameraScaleY:Number;
private var amount:int;
private var dofEngine:DofEngine;
private var cnt:Number;// = 0
public var speedX:Number;
public var speedY:Number;
private var part:BitmapData;
private var phi:Number;// = 0
private var rho:Number;// = 0
public function ParticleTunnelEffect(){
coloring = true;
cnt = 0;
phi = 0;
rho = 0;
lastPart = 0;
activeParts = new Array();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:DofParticle;
super.init(_arg1, _arg2);
this.params = _arg2;
amount = setParam("amount", 60);
texture = setParam("texture", null);
part = setParam("part", null);
speed = setParam("speed", 0.6);
offsetX = setParam("offsetX", 0);
offsetY = setParam("offsetY", 1);
speedX = setParam("speedX", 0.0025);
speedY = setParam("speedY", 0.0035);
scaleX = setParam("scaleX", 30);
scaleY = setParam("scaleY", 30);
cameraOffsetX = setParam("cameraOffsetX", (-4.6 / speed));
cameraOffsetY = setParam("cameraOffsetY", (0.95 / speed));
cameraScaleX = setParam("cameraScaleX", 0.8);
cameraScaleY = setParam("cameraScaleY", 0.8);
view = new View3D();
dofEngine = DofEngine.getDofEngine((texture.getPixel32(64, 64).toString() + "pt"), 16, texture, 150, 80);
dofEngine.focus = 200;
hairEngine = DofEngine.getDofEngine((part.getPixel32(64, 64).toString() + "pt"), 32, part, 20, 80);
hairEngine.focus = 200;
rings = new Array(amount);
_local3 = 0;
while (_local3 < amount) {
_local4 = new DofParticle(dofEngine, (0.9 * (_buffer.width / 200)));
_local4.position = new Number3D(0, 0, (200 - (_local3 * 10)));
_local4.rotationZ = randRange(0, 360);
_local4.blendMode = BlendMode.NORMAL;
rings[_local3] = _local4;
view.scene.addChild(_local4);
trace(("Adding particle to:" + _local4.position));
_local3++;
};
view.renderer = new ParticleRenderer(_buffer);
view.camera.position = new Number3D(0, 0, 20);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
camera = view.camera;
play(1000);
}
private function randRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg2 - _arg1) + 1)) + _arg1);
return (_local3);
}
override public function play(_arg1:Number):void{
var _local2:DofParticle;
var _local3:int;
cnt = (cnt + _arg1);
phi = (phi + (_arg1 * speedX));
rho = (rho + (_arg1 * speedY));
lastPart = (lastPart + _arg1);
if ((lastPart - (Math.random() * 10)) > 100){
lastPart = 0;
_local2 = new DofParticle(hairEngine, 0.2);
_local2.z = (_local2.z - (amount * 10));
_local2.x = (((Math.sin((phi + offsetX)) * scaleX) + (Math.random() * 40)) - 20);
_local2.y = (((Math.sin((rho + offsetY)) * scaleY) + (Math.random() * 40)) - 20);
_local2.rotationZ = randRange(0, 360);
_local2.blendMode = BlendMode.SCREEN;
view.scene.addChild(_local2);
activeParts.push(_local2);
};
_local3 = 0;
while (_local3 < activeParts.length) {
_local2 = activeParts[_local3];
_local2.z = (_local2.z + (speed * _arg1));
if (_local2.z > 0){
view.scene.removeChild(_local2);
activeParts.splice(_local3, 1);
} else {
_local3++;
};
};
_local3 = 0;
while (_local3 < amount) {
_local2 = rings[_local3];
_local2.z = (_local2.z + (speed * _arg1));
if (_local2.z > 0){
_local2.z = (_local2.z - (amount * 10));
_local2.x = (Math.sin((phi + offsetX)) * scaleX);
_local2.y = (Math.sin((rho + offsetY)) * scaleY);
_local2.scaling = ((Math.sin((cnt * 0.005)) * 0.2) + 0.8);
_local2.rotationZ = (phi * 20);
if (coloring){
_local2.ct.blueOffset = ((Math.sin((cnt * 0.002)) * 128) + 128);
_local2.ct.redOffset = Math.max(((Math.sin((cnt * 0.003)) * Math.sin((cnt * 0.003))) * 128), 0);
};
};
_local3++;
};
rings.sortOn("z", (Array.NUMERIC | Array.DESCENDING));
camera.x = (((((rings[0].x * cameraScaleX) + (rings[1].x * cameraScaleX)) + (rings[2].x * cameraScaleX)) + (rings[3].x * cameraScaleX)) / 4);
camera.y = (((((rings[0].y * cameraScaleY) + (rings[1].y * cameraScaleY)) + (rings[2].y * cameraScaleY)) + (rings[3].y * cameraScaleY)) / 4);
camera.lookAt(new Number3D(0, 0, -200));
camera.rotationZ = (camera.rotationZ + phi);
view.render();
}
private function setParam(_arg1:String, _arg2){
if (params[_arg1] != null){
return (params[_arg1]);
};
return (_arg2);
}
}
}//package effects.bparticles
Section 87
//SuperMesh (effects.bparticles.SuperMesh)
package effects.bparticles {
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.geom.*;
import away3d.core.material.*;
import away3d.core.*;
import flash.utils.*;
public class SuperMesh extends Mesh3D {
public var phi:Number;
public var radius:Number;// = 100
public var segmentsH:int;// = 1
public var shape1:SuperShape;
public var segmentsW:int;// = 1
public var shape2:SuperShape;
public var theta:Number;
public var points:Array;
public function SuperMesh(_arg1:IMaterial=null, _arg2:Object=null){
var _local3:SuperShape;
var _local4:SuperShape;
radius = 100;
segmentsW = 1;
segmentsH = 1;
shape1 = new SuperShape(6, 1, 1, 1);
shape2 = new SuperShape(3, 1, 1, 1);
super(_arg1, _arg2);
_arg2 = Init.parse(_arg2);
radius = _arg2.getNumber("radius", 10, {min:0});
segmentsW = _arg2.getInt("segmentsW", 8, {min:3});
segmentsH = _arg2.getInt("segmentsH", 8, {min:2});
_local3 = ((_arg2 as Init).getObject("shape1") as SuperShape);
_local4 = ((_arg2 as Init).getObject("shape2") as SuperShape);
if (_local3 != null){
this.shape1 = _local3;
};
if (_local4 != null){
this.shape2 = _local4;
};
buildSphere(radius);
}
public function recalcVertices():void{
var _local1:int;
var _local2:int;
var _local3:Array;
var _local4:uint;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Vertex3D;
_local3 = [];
_local4 = getTimer();
_local5 = 0;
_local2 = 0;
while (_local2 <= segmentsH) {
_local6 = ((_local2 / segmentsH) * Math.PI);
_local7 = (radius * Math.sin(_local6));
_local1 = 0;
while (_local1 < segmentsW) {
_local8 = ((((2 * Math.PI) * _local1) / segmentsW) - Math.PI);
if ((((((0 < _local2)) && ((_local2 < segmentsH)))) || ((_local1 == 0)))){
_local9 = vertices[_local5];
calc(_local9, shape1, shape2, _local8, (_local6 - (Math.PI / 2)));
_local5++;
};
_local1++;
};
_local2++;
};
}
private function calc(_arg1:Vertex3D, _arg2:SuperShape, _arg3:SuperShape, _arg4:Number, _arg5:Number):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
_local8 = (Math.cos(((_arg2.m * _arg4) / 4)) / _arg2.a);
if (_local8 < 0){
_local8 = -(_local8);
};
_local8 = Math.pow(_local8, _arg2.n2);
_local9 = (Math.sin(((_arg2.m * _arg4) / 4)) / _arg2.b);
if (_local9 < 0){
_local9 = -(_local9);
};
_local9 = Math.pow(_local9, _arg2.n3);
_local6 = Math.pow((_local8 + _local9), (1 / _arg2.n1));
_local6 = (1 / _local6);
_local8 = (Math.cos(((_arg3.m * _arg5) / 4)) / _arg3.a);
if (_local8 < 0){
_local8 = -(_local8);
};
_local8 = Math.pow(_local8, _arg3.n2);
_local9 = (Math.sin(((_arg3.m * _arg5) / 4)) / _arg3.b);
if (_local9 < 0){
_local9 = -(_local9);
};
_local9 = Math.pow(_local9, _arg3.n3);
_local7 = Math.pow((_local8 + _local9), (1 / _arg3.n1));
_local7 = (1 / _local7);
_local10 = ((((_local6 * Math.cos(_arg4)) * _local7) * Math.cos(_arg5)) * radius);
_local11 = ((((_local6 * Math.sin(_arg4)) * _local7) * Math.cos(_arg5)) * radius);
_local12 = ((_local7 * Math.sin(_arg5)) * radius);
_arg1.x = _local10;
_arg1.y = _local11;
_arg1.z = _local12;
}
private function buildSphere(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:Array;
var _local5:uint;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local9:Vertex3D;
var _local10:Number;
var _local11:Vertex3D;
var _local12:Vertex3D;
var _local13:Vertex3D;
var _local14:Vertex3D;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:NumberUV;
var _local20:NumberUV;
var _local21:NumberUV;
var _local22:NumberUV;
_local4 = [];
_local5 = getTimer();
_local3 = 0;
while (_local3 <= segmentsH) {
_local6 = ((_local3 / segmentsH) * Math.PI);
_local7 = (_arg1 * Math.sin(_local6));
_local8 = [];
_local2 = 0;
while (_local2 < segmentsW) {
_local10 = ((((2 * Math.PI) * _local2) / segmentsW) - Math.PI);
if ((((((0 < _local3)) && ((_local3 < segmentsH)))) || ((_local2 == 0)))){
_local9 = new Vertex3D();
calc(_local9, shape1, shape2, _local10, (_local6 - (Math.PI / 2)));
addVertex3D(_local9);
};
_local8.push(_local9);
_local2++;
};
_local4.push(_local8);
_local3++;
};
_local3 = 1;
while (_local3 <= segmentsH) {
_local2 = 0;
while (_local2 < segmentsW) {
_local11 = _local4[_local3][_local2];
_local12 = _local4[_local3][(((_local2 - 1) + segmentsW) % segmentsW)];
_local13 = _local4[(_local3 - 1)][(((_local2 - 1) + segmentsW) % segmentsW)];
_local14 = _local4[(_local3 - 1)][_local2];
_local15 = (_local3 / (segmentsH + 1));
_local16 = ((_local3 - 1) / (segmentsH + 1));
_local17 = ((_local2 + 1) / segmentsW);
_local18 = (_local2 / segmentsW);
_local19 = new NumberUV(_local17, _local15);
_local20 = new NumberUV(_local18, _local15);
_local21 = new NumberUV(_local18, _local16);
_local22 = new NumberUV(_local17, _local16);
if (_local3 < segmentsH){
addFace3D(new Face3D(_local11, _local12, _local13, null, _local19, _local20, _local21));
};
if (_local3 > 1){
addFace3D(new Face3D(_local11, _local13, _local14, null, _local19, _local21, _local22));
};
_local2++;
};
_local3++;
};
}
}
}//package effects.bparticles
Section 88
//SuperShape (effects.bparticles.SuperShape)
package effects.bparticles {
public class SuperShape {
public var a:Number;
public var n1:Number;
public var n2:Number;
public var n3:Number;
public var b:Number;
public var m:Number;
public function SuperShape(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1, _arg6:Number=1){
this.m = _arg1;
this.n1 = _arg2;
this.n2 = _arg3;
this.n3 = _arg4;
this.a = _arg5;
this.b = _arg6;
}
}
}//package effects.bparticles
Section 89
//SuperShapeEffect (effects.bparticles.SuperShapeEffect)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
import away3d.core.geom.*;
import away3d.core.render.*;
import away3d.core.material.*;
import flash.geom.*;
public class SuperShapeEffect extends AbstractDemoEffect {
private var lastTime:int;// = 0
public var ratio:Number;// = 0
private var texture:BitmapData;
private var view:View3D;
private var particles:Array;
private var height:Number;
public var shape1a:SuperShape;
public var shape1b:SuperShape;
public var shape1:SuperShape;
public var shape2:SuperShape;
public var speed:Number;// = 0.04
private var P:Number;// = 5
private var Q:Number;// = 8
public var shape2a:SuperShape;
private var amount:int;// = 200
public var light1:Light3D;
private var dofEngine:DofEngine;
public var light2:Light3D;
public var mat:Matrix;
public var light3:Light3D;
private var mesh:SuperMesh;
public var emitter:Number3D;
private var cnt:int;// = 0
public var shape2b:SuperShape;
private var nextVertex:Vertex3D;
private var phi:Number;// = 0
public function SuperShapeEffect(){
amount = 200;
emitter = new Number3D(0, 0, 0);
cnt = 0;
lastTime = 0;
phi = 0;
P = 5;
Q = 8;
speed = 0.04;
shape1 = new SuperShape(1, 1, 1, 1);
shape2 = new SuperShape(1, 1, 1, 1);
shape1a = new SuperShape(4, 100, 100, 100);
shape2a = new SuperShape(4, 100, 100, 100);
shape1b = new SuperShape(0, 1, 1, 1);
shape2b = new SuperShape(0, 1, 1, 1);
ratio = 0;
nextVertex = new Vertex3D();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:Number;
super.init(_arg1, _arg2);
if (_arg2.amount){
amount = _arg2.amount;
};
_local3 = 0;
particles = new Array();
view = new View3D();
view.renderer = Renderer.BASIC;
view.camera.position = new Number3D(0, 0, 100);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
light1 = new Light3D(10535167, 0.5, 0.7, 1);
light2 = new Light3D(16756896, 0.5, 0.7, 1);
light3 = new Light3D(7405504, 0.5, 0.7, 1);
light1.position = new Number3D(500, 500, 500);
light2.position = new Number3D(-500, 500, 500);
light3.position = new Number3D(300, -500, 500);
view.scene.addChild(light1);
view.scene.addChild(light2);
view.scene.addChild(light3);
mat = new Matrix();
mat.tx = (_buffer.width / 2);
mat.ty = (_buffer.height / 2);
_local4 = 20;
_local5 = 20;
_local6 = 20;
if (_arg2.segmentsW != null){
_local4 = _arg2.segmentsW;
};
if (_arg2.segmentsH != null){
_local5 = _arg2.segmentsH;
};
if (_arg2.radius != null){
_local6 = _arg2.radius;
};
mesh = new SuperMesh(new ShadingColorMaterial(), {shape1:shape1, shape2:shape2, radius:_local6, segmentsW:_local4, segmentsH:_local5});
mesh.inverseFaces();
view.scene.addChild(mesh);
}
override public function play(_arg1:Number):void{
lastTime = (lastTime + _arg1);
cnt++;
view.render();
ratio = (ratio + speed);
if (ratio >= 1){
ratio = 1;
speed = -(speed);
};
if (ratio <= 0){
ratio = 0;
speed = -(speed);
};
setShapes(ratio);
mesh.recalcVertices();
mesh.rotationX = (mesh.rotationX + (_arg1 * 0.043));
mesh.rotationZ = (mesh.rotationZ + (_arg1 * 0.0376));
_buffer.draw(view, mat);
}
private function calc(_arg1:SuperShape, _arg2:SuperShape, _arg3:Number, _arg4:Number):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local7 = (Math.cos(((_arg1.m * _arg3) / 4)) / _arg1.a);
if (_local7 < 0){
_local7 = -(_local7);
};
_local7 = Math.pow(_local7, _arg1.n2);
_local8 = (Math.sin(((_arg1.m * _arg3) / 4)) / _arg1.b);
if (_local8 < 0){
_local8 = -(_local8);
};
_local8 = Math.pow(_local8, _arg1.n3);
_local5 = Math.pow((_local7 + _local8), (1 / _arg1.n1));
_local5 = (1 / _local5);
_local7 = (Math.cos(((_arg2.m * _arg4) / 4)) / _arg2.a);
if (_local7 < 0){
_local7 = -(_local7);
};
_local7 = Math.pow(_local7, _arg2.n2);
_local8 = (Math.sin(((_arg2.m * _arg4) / 4)) / _arg2.b);
if (_local8 < 0){
_local8 = -(_local8);
};
_local8 = Math.pow(_local8, _arg2.n3);
_local6 = Math.pow((_local7 + _local8), (1 / _arg2.n1));
_local6 = (1 / _local6);
_local9 = ((((_local5 * Math.cos(_arg3)) * _local6) * Math.cos(_arg4)) * 10);
_local10 = ((((_local5 * Math.sin(_arg3)) * _local6) * Math.cos(_arg4)) * 10);
_local11 = ((_local6 * Math.sin(_arg4)) * 10);
nextVertex.x = _local9;
nextVertex.y = _local10;
nextVertex.z = _local11;
}
public function setShapes(_arg1:Number):void{
shape1.m = ((shape1a.m * (1 - _arg1)) + (shape1b.m * _arg1));
shape1.n1 = ((shape1a.n1 * (1 - _arg1)) + (shape1b.n1 * _arg1));
shape1.n2 = ((shape1a.n2 * (1 - _arg1)) + (shape1b.n2 * _arg1));
shape1.n3 = ((shape1a.n3 * (1 - _arg1)) + (shape1b.n3 * _arg1));
shape1.a = ((shape1a.a * (1 - _arg1)) + (shape1b.a * _arg1));
shape1.b = ((shape1a.b * (1 - _arg1)) + (shape1b.b * _arg1));
shape2.m = ((shape2a.m * (1 - _arg1)) + (shape2b.m * _arg1));
shape2.n1 = ((shape2a.n1 * (1 - _arg1)) + (shape2b.n1 * _arg1));
shape2.n2 = ((shape2a.n2 * (1 - _arg1)) + (shape2b.n2 * _arg1));
shape2.n3 = ((shape2a.n3 * (1 - _arg1)) + (shape2b.n3 * _arg1));
shape2.a = ((shape2a.a * (1 - _arg1)) + (shape2b.a * _arg1));
shape2.b = ((shape2a.b * (1 - _arg1)) + (shape2b.b * _arg1));
}
}
}//package effects.bparticles
Section 90
//TorusKnotEffect (effects.bparticles.TorusKnotEffect)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
import away3d.core.geom.*;
import flash.geom.*;
public class TorusKnotEffect extends AbstractDemoEffect {
private var theta:Number;
private var lastTime:int;// = 0
private var Q:Number;// = 8
public var grow:Boolean;// = false
private var speed:Number;// = 0.04
private var amount:int;// = 200
private var scale:Number;// = 1
private var texture:BitmapData;
private var dofEngine:DofEngine;
private var view:View3D;
private var height:Number;
private var P:Number;// = 5
private var cnt:int;// = 0
private var scaleMatrix:Matrix;
private var mesh:ParticleMesh;
private var phi:Number;// = 0
private var nextVertex:Vertex3D;
private var particles:Array;
public function TorusKnotEffect(){
amount = 200;
cnt = 0;
lastTime = 0;
phi = 0;
P = 5;
Q = 8;
speed = 0.04;
grow = false;
scale = 1;
theta = (-(Math.PI) * 2);
nextVertex = new Vertex3D();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:ParticleRenderer;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
super.init(_arg1, _arg2);
if (_arg2.amount){
amount = _arg2.amount;
};
texture = _arg2.texture;
_local3 = 0;
particles = new Array();
view = new View3D();
dofEngine = DofEngine.getDofEngine(texture.getPixel32(64, 64).toString(), 16, texture, 20, 80);
dofEngine.focus = 50;
_local4 = new ParticleRenderer(_buffer);
view.renderer = _local4;
view.camera.position = new Number3D(0, 0, 20);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
view.x = 400;
view.y = 200;
mesh = new ParticleMesh(null, {dofEngine:dofEngine, scaling:0.005});
mesh.ppe = 4;
_local5 = (0.5 * (2 + Math.sin((Q * 0))));
_local6 = ((_local5 * Math.cos((P * 0))) * 10);
_local7 = ((_local5 * Math.cos((Q * 0))) * 10);
_local8 = ((_local5 * Math.sin((P * 0))) * 10);
mesh.lastVertex = new Vertex3D(_local6, _local7, _local8);
view.scene.addChild(mesh);
}
public function reset(_arg1:int, _arg2:int, _arg3:Number):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:int;
this.P = _arg1;
this.Q = _arg2;
mesh.clearSegments();
phi = 0;
_local4 = (0.5 * (2 + Math.sin((_arg2 * 0))));
_local5 = ((_local4 * Math.cos((_arg1 * 0))) * 10);
_local6 = ((_local4 * Math.cos((_arg2 * 0))) * 10);
_local7 = ((_local4 * Math.sin((_arg1 * 0))) * 10);
mesh.lastVertex = new Vertex3D(_local5, _local6, _local7);
if (grow){
phi = 0;
return;
};
_local8 = 0;
while (_local8 <= 127) {
phi = (((_local8 * 2) * Math.PI) / 127);
_local4 = (0.5 * (2 + Math.sin((_arg2 * phi))));
nextVertex.x = ((_local4 * Math.cos((_arg1 * phi))) * 10);
nextVertex.y = ((_local4 * Math.cos((_arg2 * phi))) * 10);
nextVertex.z = ((_local4 * Math.sin((_arg1 * phi))) * 10);
mesh.appendSegment(nextVertex, ((Math.sin((phi * 16)) * 3) + 9), BlendMode.NORMAL);
_local8++;
};
mesh.rotationX = (Math.random() * 360);
mesh.rotationY = (Math.random() * 360);
mesh.rotationZ = (Math.random() * 360);
}
override public function play(_arg1:Number):void{
var _local2:Number;
lastTime = (lastTime + _arg1);
cnt++;
phi = (phi + speed);
mesh.r = (mesh.r + (_arg1 * 0.003));
if ((((phi < (Math.PI * 2))) && (grow))){
_local2 = (0.5 * (2 + Math.sin((Q * phi))));
nextVertex.x = ((_local2 * Math.cos((P * phi))) * 10);
nextVertex.y = ((_local2 * Math.cos((Q * phi))) * 10);
nextVertex.z = ((_local2 * Math.sin((P * phi))) * 10);
if ((cnt % 8) > 3){
mesh.appendSegment(nextVertex, (Math.sin((phi * 10)) + 2), BlendMode.MULTIPLY);
} else {
mesh.appendSegment(nextVertex, ((Math.sin((phi * 10)) * 1.5) + 3), BlendMode.NORMAL);
};
};
view.render();
mesh.rotationX = (mesh.rotationX + (_arg1 * 0.05));
mesh.rotationZ = (mesh.rotationZ + (_arg1 * 0.08));
mesh.rotationY = (mesh.rotationY - (_arg1 * 0.07));
}
}
}//package effects.bparticles
Section 91
//WireParticlesEffect (effects.bparticles.WireParticlesEffect)
package effects.bparticles {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.dof.*;
public class WireParticlesEffect extends AbstractDemoEffect {
private var lastTime:int;// = 0
private var amount:int;// = 200
private var dofEngine:DofEngine;
private var view:View3D;
private var cnt:int;// = 0
private var mesh:ObjectContainer3D;
public var emitter:Number3D;
private var particles:Array;
public function WireParticlesEffect(){
amount = 200;
emitter = new Number3D(0, 0, 0);
cnt = 0;
lastTime = 0;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
super.init(_arg1, _arg2);
if (_arg2.amount){
amount = _arg2.amount;
};
_local3 = 0;
particles = new Array();
view = new View3D();
dofEngine = DofEngine.getDofEngine((_arg2.texture.bitmapData.getPixel(64, 64).toString() + "wp"), 32, _arg2.texture.bitmapData, 10, 80);
dofEngine.focus = 50;
mesh = new WireParticleBall(dofEngine, 0.02);
view.scene.addChild(mesh);
mesh.position = new Number3D(0, 0, 0);
view.renderer = new ParticleRenderer(_buffer);
view.camera.position = new Number3D(0, 0, 20);
view.camera.lookAt(new Number3D(0, 0, 0));
view.camera.focus = 20;
view.camera.zoom = 10;
view.x = 400;
view.y = 200;
}
override public function play(_arg1:Number):void{
lastTime = (lastTime + _arg1);
mesh.rotationZ = (mesh.rotationZ + 2);
mesh.rotationY = (mesh.rotationY + 2);
view.render();
}
}
}//package effects.bparticles
import away3d.core.proto.*;
import away3d.dof.*;
import away3d.core.geom.*;
import away3d.loaders.*;
class models {
public static var GeoballModel:Class = models_GeoballModel;
private function models(){
}
}
class WireParticleBall extends ObjectContainer3D {
private var mesh:ParticleMesh;
private function WireParticleBall(_arg1:DofEngine, _arg2:Number){
mesh = (Obj.parse(new models.GeoballModel(), null, {particleMesh:true, dofEngine:_arg1, scaling:_arg2}, 20) as ParticleMesh);
mesh.ppe = 4;
mesh.setupSegments();
addChild(mesh);
}
}
Section 92
//ParticleCube (effects.cubes.ParticleCube)
package effects.cubes {
import synch.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class ParticleCube extends AbstractDemoEffect {
private var ct:ColorTransform;
private var width:int;
private var trPoints:Array;
private var cameraPers:Number;// = 35
private var scale:Number;// = 15
private var theta:Number;// = -0.7
private var points:Array;
private var height:int;
private var particle:BitmapData;
private var cameraDist:Number;// = 45
private var cubeRadius:Number;
private var mat:Matrix;
private var phi:Number;// = 0.7
private var rhocnt:Number;// = 0
private var faces:Array;
public var ppr:int;// = 16
private var rho:Number;// = -0.7
public function ParticleCube(){
theta = -0.7;
phi = 0.7;
rho = -0.7;
cameraDist = 45;
cameraPers = 35;
scale = 15;
ppr = 16;
rhocnt = 0;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
super.init(_arg1, _arg2);
width = _arg1.width;
height = _arg1.height;
cubeRadius = _arg2.cubeRadius;
particle = _arg2.particle;
points = new Array(8);
points[0] = new Vertex(cubeRadius, cubeRadius, cubeRadius);
points[1] = new Vertex(-(cubeRadius), cubeRadius, cubeRadius);
points[2] = new Vertex(-(cubeRadius), -(cubeRadius), cubeRadius);
points[3] = new Vertex(cubeRadius, -(cubeRadius), cubeRadius);
points[4] = new Vertex(cubeRadius, -(cubeRadius), -(cubeRadius));
points[5] = new Vertex(-(cubeRadius), -(cubeRadius), -(cubeRadius));
points[6] = new Vertex(-(cubeRadius), cubeRadius, -(cubeRadius));
points[7] = new Vertex(cubeRadius, cubeRadius, -(cubeRadius));
faces = new Array(6);
faces[0] = [0, 1, 2, 3, 0];
faces[1] = [4, 5, 6, 7, 0];
faces[2] = [0, 3, 4, 7, 0];
faces[3] = [1, 6, 5, 2, 0];
faces[4] = [3, 2, 5, 4, 0];
faces[5] = [6, 1, 0, 7, 0];
ct = new ColorTransform();
mat = new Matrix();
}
private function project():void{
var _local1:Number;
var _local2:int;
var _local3:Vertex;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local9:Object;
var _local10:Object;
var _local11:Object;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
_local2 = 0;
while (_local2 < 8) {
_local3 = trPoints[_local2];
_local4 = _local3.x;
_local5 = _local3.y;
_local6 = _local3.z;
_local6 = (_local6 + cameraDist);
_local7 = 0;
if (_local6 == 0){
_local1 = 1;
} else {
_local1 = (cameraPers / (cameraPers - _local6));
};
_local4 = (((_local4 * _local1) * scale) + (width / 2));
_local5 = (((_local5 * _local1) * scale) + (height / 2));
_local3.x = _local4;
_local3.y = _local5;
_local3.z = _local6;
_local2++;
};
_local2 = 0;
while (_local2 < faces.length) {
_local8 = faces[_local2];
_local9 = trPoints[_local8[0]];
_local10 = trPoints[_local8[1]];
_local11 = trPoints[_local8[2]];
_local12 = _local9.x;
_local13 = _local9.y;
_local14 = _local9.z;
_local15 = _local10.x;
_local16 = _local10.y;
_local17 = _local10.z;
_local18 = _local11.x;
_local19 = _local11.y;
_local20 = _local11.z;
_local21 = (_local18 - _local12);
_local22 = (_local19 - _local13);
_local23 = (_local20 - _local14);
_local24 = (_local15 - _local12);
_local25 = (_local16 - _local13);
_local26 = (_local17 - _local14);
_local27 = ((_local21 * _local25) - (_local22 * _local24));
_local8["d"] = (_local27 > -1000);
_local2++;
};
}
public function rotate(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
_local4 = Math.cos(_arg1);
_local5 = Math.sin(_arg1);
_local6 = Math.cos(_arg2);
_local7 = Math.sin(_arg2);
_local8 = Math.cos(_arg3);
_local9 = Math.sin(_arg3);
_local10 = 0;
while (_local10 < 8) {
_local11 = Vertex(points[_local10]).x;
_local12 = Vertex(points[_local10]).y;
_local13 = Vertex(points[_local10]).z;
_local15 = ((_local12 * _local4) - (_local13 * _local5));
_local16 = ((_local12 * _local5) + (_local13 * _local4));
_local12 = _local15;
_local13 = _local16;
_local16 = ((_local13 * _local6) - (_local11 * _local7));
_local14 = ((_local13 * _local7) + (_local11 * _local6));
_local11 = _local14;
_local14 = ((_local11 * _local8) - (_local12 * _local9));
_local15 = ((_local11 * _local9) + (_local12 * _local8));
trPoints.push(new Vertex(_local14, _local15, _local16));
_local10++;
};
}
private function render():void{
var _local1:int;
var _local2:int;
var _local3:Array;
var _local4:Vertex;
var _local5:Vertex;
var _local6:Vertex;
var _local7:Vertex;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
_local1 = faces.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = faces[_local2];
_local4 = trPoints[_local3[0]];
_local5 = trPoints[_local3[1]];
_local6 = trPoints[_local3[2]];
_local7 = trPoints[_local3[3]];
faces[_local2]["z"] = (((_local4.z + _local5.z) + _local6.z) + (_local7.z / 4));
_local2++;
};
faces.sortOn("z", Array.NUMERIC);
_local2 = 0;
while (_local2 < _local1) {
_local3 = faces[_local2];
if (!_local3["d"]){
} else {
_local4 = trPoints[_local3[0]];
_local5 = trPoints[_local3[1]];
_local6 = trPoints[_local3[2]];
_local7 = trPoints[_local3[3]];
_local8 = ((_local7.y - _local4.y) * (1 / ppr));
_local9 = ((_local6.y - _local5.y) * (1 / ppr));
_local10 = ((_local7.x - _local4.x) * (1 / ppr));
_local11 = ((_local6.x - _local5.x) * (1 / ppr));
_local12 = ((_local7.z - _local4.z) * (1 / ppr));
_local13 = ((_local6.z - _local5.z) * (1 / ppr));
_local14 = 0;
while (_local14 < (ppr + 1)) {
_local15 = ((_local8 * _local14) + _local4.y);
_local16 = ((_local9 * _local14) + _local5.y);
_local17 = ((_local10 * _local14) + _local4.x);
_local18 = ((_local11 * _local14) + _local5.x);
_local19 = ((_local12 * _local14) + _local4.z);
_local20 = ((_local13 * _local14) + _local5.z);
_local21 = ((_local18 - _local17) * (1 / ppr));
_local22 = ((_local16 - _local15) * (1 / ppr));
_local23 = ((_local20 - _local19) * (1 / ppr));
_local24 = 0;
while (_local24 < (ppr + 1)) {
mat.tx = (mat.ty = (-(particle.width) / 2));
_local25 = ((_local23 * _local24) + _local19);
_local26 = (((cubeRadius + _local25) - cameraDist) * 0.1);
mat.tx = (int((((_local21 * _local24) + _local17) / 10)) * 10);
mat.ty = (int((((_local22 * _local24) + _local15) / 10)) * 10);
mat.a = (mat.d = ((((((_local21 * _local24) + _local17) % 10) + (((_local22 * _local24) + _local15) % 10)) / 2) * 0.08));
mat.tx = (mat.tx + (7.5 - (7.5 * mat.a)));
mat.ty = (mat.ty + (7.5 - (7.5 * mat.a)));
ct.redMultiplier = (mat.ty / 200);
ct.blueMultiplier = (mat.tx / 400);
ct.greenMultiplier = 0.9;
_buffer.draw(particle, mat, ct, "add");
_local24++;
};
_local14++;
};
};
_local2++;
};
}
override public function play(_arg1:Number):void{
trPoints = new Array();
theta = (theta + (0.0015 * _arg1));
phi = (phi + (0.0008 * _arg1));
rhocnt = (rhocnt + (0.0007 * _arg1));
rho = Math.cos(rhocnt);
rotate(theta, phi, rho);
project();
render();
}
}
}//package effects.cubes
Section 93
//Vertex (effects.cubes.Vertex)
package effects.cubes {
public class Vertex {
public var u:Number;
public var v:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function Vertex(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
}
}//package effects.cubes
Section 94
//DiscoTilesEffect (effects.discotiles.DiscoTilesEffect)
package effects.discotiles {
import synch.*;
import flash.display.*;
import flash.geom.*;
public class DiscoTilesEffect extends AbstractDemoEffect {
private var tw:Number;// = 8
private var tileProps:Array;
private var base:Matrix;
private var th:Number;// = 6
private var point:Point;
private var base2:Matrix;
private var tileSize:int;// = 128
private var rect:Rectangle;
private var lightMap:BitmapData;
public var fadeSpeed:Number;// = 10
private var tmat:Matrix;
private var ct:ColorTransform;
private var colorMap:BitmapData;
private var tileMask:BitmapData;
private var counter:Number;// = 0
private var tct:ColorTransform;
public function DiscoTilesEffect(){
rect = new Rectangle(0, 0, 128, 128);
point = new Point(0, 0);
tw = 8;
th = 6;
fadeSpeed = 10;
counter = 0;
tileSize = 128;
ct = new ColorTransform(1, 1, 1, 0, 0, 0, 0, 0);
tmat = new Matrix();
base = new Matrix();
base2 = new Matrix();
tct = new ColorTransform();
tileProps = new Array();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:uint;
var _local5:uint;
var _local6:Object;
super.init(_arg1, _arg2);
tw = _arg2.tilew;
th = _arg2.tileh;
tileSize = _arg2.tileSize;
tileMask = _arg2.tilemask;
lightMap = _arg2.colormap;
_local3 = 0;
_local4 = 0;
while (_local4 < th) {
_local5 = 0;
while (_local5 < tw) {
_local6 = new Object();
_local6.x = (((_local5 * tileSize) / (0x0100 / tileSize)) + _arg2.xoffset);
if ((_local4 % 2) == 0){
_local6.x = (_local6.x + (tileSize / (0x0100 / tileSize)));
};
_local6.y = (((_local4 * tileSize) / (128 / tileSize)) + _arg2.yoffset);
_local6.scaleX = (tileSize / tileMask.width);
_local6.fadeDir = int((Math.random() * 1));
_local6.fadePos = int((Math.random() * 0xFF));
tileProps.push(_local6);
_local5++;
};
_local4++;
};
base.identity();
base.scale((tileSize / tileMask.width), (tileSize / tileMask.height));
base2.identity();
base2.scale((tileSize / tileMask.width), (tileSize / tileMask.height));
base2.translate(-((tileSize >> 1)), -((tileSize >> 1)));
base2.rotate(Math.PI);
base2.translate((tileSize / 2), (tileSize / 2));
}
override public function play(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Matrix;
var _local5:uint;
var _local6:uint;
var _local7:Object;
var _local8:Number;
var _local9:int;
counter++;
_local2 = (64 + (32 * Math.sin((counter * 0.025))));
_local3 = (64 + (32 * Math.cos(((counter * 0.025) + 0.543))));
_local5 = 0;
while (_local5 < th) {
_local6 = 0;
while (_local6 < tw) {
tmat.identity();
_local4 = base;
_local7 = tileProps[(_local6 + (_local5 * tw))];
_local8 = (_local7.fadePos / 0x0100);
ct.alphaMultiplier = _local8;
if ((_local6 % 2) == 0){
_local4 = base2;
};
_local9 = lightMap.getPixel((_local2 + _local6), (_local3 + _local5));
ct.redMultiplier = (((_local9 >> 16) & 0xFF) / 0xFF);
ct.greenMultiplier = (((_local9 >> 8) & 0xFF) / 0xFF);
ct.blueMultiplier = ((_local9 & 0xFF) / 0xFF);
if (_local7.fadeDir == 0){
_local7.fadePos = (_local7.fadePos - fadeSpeed);
if (_local7.fadePos <= 90){
_local7.fadeDir = 1;
};
} else {
if (_local7.fadeDir == 1){
_local7.fadePos = (_local7.fadePos + fadeSpeed);
if (_local7.fadePos >= 0xFF){
_local7.fadeDir = 0;
};
};
};
tmat.concat(_local4);
tmat.scale(_local7.scaleX, _local7.scaleX);
tmat.translate(_local7.x, _local7.y);
_buffer.draw(tileMask, tmat, ct, "add");
_local6++;
};
_local5++;
};
}
}
}//package effects.discotiles
Section 95
//DistortEffect (effects.fire.DistortEffect)
package effects.fire {
import synch.*;
import flash.display.*;
import flash.media.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
public class DistortEffect extends AbstractPostProcessor {
private var width:Number;
public var scaleX:Number;// = 0
private var blendMode:String;
public var rotate:Number;// = 0
private var mat:Matrix;
private var bytes:ByteArray;
private var height:Number;
private var displMap:BitmapData;
private var filter:DisplacementMapFilter;
private var point:Point;
public function DistortEffect(){
mat = new Matrix();
point = new Point(0, 0);
scaleX = 0;
rotate = 0;
bytes = new ByteArray();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
if (_arg2.short){
_input = _arg1;
};
if (_arg2.transparent){
_input = new BitmapData(_arg1.width, _arg1.height, true, 0);
};
if (_arg2.blendMode){
blendMode = _arg2.blendMode;
trace(("Setting blendmode:" + blendMode));
};
super.init(_arg1, _arg2);
width = _input.width;
height = _input.height;
displMap = new BitmapData(width, height, false, 0);
filter = new DisplacementMapFilter(displMap, point, BitmapDataChannel.BLUE, 0, scaleX, 0, DisplacementMapFilterMode.WRAP, 0, 0);
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:Number;
var _local4:Rectangle;
var _local5:Number;
var _local6:Number;
if (scaleX != filter.scaleX){
filter.scaleX = scaleX;
};
if (_input != buffer){
trace("Clearing, this is not the buffer");
_input.lock();
_input.fillRect(_input.rect, 0);
super.play(_arg1);
_input.unlock();
};
SoundMixer.computeSpectrum(bytes, false, 2);
_local2 = 0;
_local4 = new Rectangle(0, 0, width, (height / 128));
_local5 = 0;
while (_local2 < 128) {
_local6 = bytes.readFloat();
if (_local2 == 0){
_local3 = _local6;
} else {
_local3 = (_local3 + ((_local6 - _local3) / 8));
};
_local6 = ((_local3 * 240) - 128);
_local2++;
_local4.y = _local5;
displMap.fillRect(_local4, _local6);
_local5 = (_local5 + (height / 128));
};
_input.applyFilter(_input, _input.rect, point, filter);
if (_input == buffer){
return;
};
buffer.lock();
buffer.draw(_input);
buffer.unlock();
}
}
}//package effects.fire
Section 96
//GreetingsPlayer (effects.greets.GreetingsPlayer)
package effects.greets {
import synch.*;
import flash.display.*;
import flash.text.*;
import effects.*;
public class GreetingsPlayer extends AbstractDemoEffect {
private var baseCnt:Sprite;
private var greets:Array;
private var fmt:TextFormat;
private var cnt:int;
public function GreetingsPlayer(){
fmt = new TextFormat("D3Curve", 160, 4210709, true);
greets = ["Bombsquad", "MFX", "Kewlers", "Lume", "Fairlight", "Matt Current", "Traction", "Aspekt", "Farbrausch", "Minority", "Jumalauta", "Accession", "Pyrotech", "tAAt", "Hedelmae", "#flash.fi"];
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
trace("Greeings player init");
super.init(_arg1, _arg2);
baseCnt = new Sprite();
}
public function next():void{
var _local1:TextRender;
var _local2:Tweener;
if (cnt >= greets.length){
return;
};
trace(("next:" + greets[cnt]));
_local1 = new TextRender((greets[cnt] as String).toUpperCase(), fmt, 2);
_local1.blendMode = BlendMode.NORMAL;
_local2 = new Tweener(_local1, int((400 - (_local1.width / 2))), 70, int((400 - (_local1.width / 2))), 500, false, true, 4000);
_local1.alpha = 1;
cnt++;
baseCnt.addChild(_local1);
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:DisplayObject;
_buffer.draw(baseCnt);
_local2 = 0;
while (_local2 < baseCnt.numChildren) {
_local3 = baseCnt.getChildAt(_local2);
_local3.alpha = (_local3.alpha - (_local3.alpha / 48));
_local2++;
};
}
}
}//package effects.greets
Section 97
//FakeMetaCircles (effects.metaball.FakeMetaCircles)
package effects.metaball {
import synch.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class FakeMetaCircles extends AbstractDemoEffect {
private var pt:Point;
private var angle:Number;// = 45
private var balls:Array;
private var numSlices:int;// = 40
private var base:Sprite;
private var tdata:BitmapData;
private var mat:Matrix;
private var slices:Array;
private var sz:Number;// = 128
private var _cnt:Number;// = 0
private var outBmp:BitmapData;
private var ct:ColorTransform;
private var ballMaps:Dictionary;
private var bitmapData:BitmapData;
public function FakeMetaCircles(){
sz = 128;
numSlices = 40;
angle = 45;
mat = new Matrix();
pt = new Point();
ct = new ColorTransform();
balls = new Array();
_cnt = 0;
ballMaps = new Dictionary();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
super.init(_arg1, _arg2);
outBmp = _buffer;
slices = new Array();
_local3 = 0;
while (_local3 < numSlices) {
bitmapData = new BitmapData(sz, sz, false, 0);
slices.push(bitmapData);
_local3++;
};
balls.push([128, 128, 128]);
balls.push([160, 66, 98]);
balls.push([56, 167, 43]);
tdata = new BitmapData(sz, sz, false, 0);
play(0);
}
private function renderBalls(_arg1:Number, _arg2:BitmapData):void{
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:Number;
var _local5:int;
var _local6:Number;
var _local7:BitmapData;
var _local8:Number;
var _local9:Boolean;
var _local10:int;
var _local11:BitmapData;
var _local12:Number;
_local2 = (sz / 2);
_local3 = (sz / 4);
_cnt++;
_local4 = (sz / numSlices);
_local5 = balls.length;
_local6 = 0;
while (_local6 < numSlices) {
_local7 = slices[_local6];
_local8 = (_local6 * _local4);
_local7.lock();
_local7.fillRect(_local7.rect, 8421408);
tdata.fillRect(tdata.rect, 0);
_local9 = false;
_local10 = 0;
_local10 = 0;
while (_local10 < _local5) {
_local12 = int((_local8 - balls[_local10][2]));
if (ballMaps[_local12] != null){
_local11 = ballMaps[_local12];
} else {
_local11 = (ballMaps[_local12] = new MetaParticle(128, _local12));
};
mat.identity();
mat.translate((-(_local11.width) / 2), (-(_local11.height) / 2));
mat.scale(0.5, 1);
mat.translate(balls[_local10][0], balls[_local10][1]);
tdata.draw(_local11, mat);
_local10++;
};
_local7.threshold(tdata, tdata.rect, pt, ">", 0x850000, 2155888640, 0xFF0000, false);
_local7.threshold(tdata, tdata.rect, pt, "<", 0x720000, 4278190080, 0xFF0000, false);
_local7.unlock();
mat.identity();
mat.translate(-(_local2), -(_local2));
mat.rotate((_cnt * 0.08));
mat.translate(0, ((-(_local6) * sz) / 12.8));
mat.scale(2, 0.8);
mat.translate(200, (200 + 160));
outBmp.draw(_local7, mat, ct, "add");
_local6++;
};
balls[0][0] = ((Math.sin((_cnt * 0.18)) * _local3) + _local2);
balls[0][1] = ((Math.cos(((_cnt * 0.13) + 0.5)) * _local3) + _local2);
balls[0][2] = ((Math.sin(((_cnt * 0.19) + 1.3)) * _local3) + _local2);
balls[1][0] = ((Math.sin(((_cnt * 0.18) + 2)) * _local3) + _local2);
balls[1][2] = ((Math.sin(((_cnt * 0.11) + 2.3)) * _local3) + _local2);
balls[1][1] = ((Math.sin(((_cnt * 0.14) + 2.6)) * _local3) + _local2);
balls[2][0] = ((Math.cos(((_cnt * 0.18) + 4.8)) * _local3) + _local2);
balls[2][1] = ((Math.cos(((_cnt * 0.13) + 4.5)) * _local3) + _local2);
balls[2][2] = ((Math.cos(((_cnt * 0.13) + 8.5)) * _local3) + _local2);
}
}
}//package effects.metaball
Section 98
//MetaParticle (effects.metaball.MetaParticle)
package effects.metaball {
import flash.display.*;
import flash.geom.*;
public class MetaParticle extends BitmapData {
private static var mat:Matrix = new Matrix();
private static var ct:ColorTransform = new ColorTransform();
private static var spr:Sprite = new Sprite();
private static var colors:Array = [0xFFFFFF, 0xFFFFFF];
public function MetaParticle(_arg1:int, _arg2:int){
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = (_arg2 * _arg2);
_local4 = (_arg1 / 2);
_local3 = (_local3 / (_local4 * _local4));
if (_local3 > 0.5){
_local4 = 1;
} else {
_local4 = (_local4 * (((0.25 - _local3) + (_local3 * _local3)) * 4));
if (_local4 < 1){
_local4 = 1;
};
};
super((_local4 * 2), (_local4 * 2), true, 0);
spr.graphics.clear();
mat.identity();
mat.createGradientBox((_local4 * 2), (_local4 * 2), 0, 0, 0);
_local5 = (((0.25 - _local3) + (_local3 * _local3)) * 4);
spr.graphics.moveTo(_local4, _local4);
spr.graphics.beginGradientFill(GradientType.RADIAL, colors, [_local5, 0], [0, 0xFF], mat, SpreadMethod.PAD, InterpolationMethod.LINEAR_RGB, 0);
spr.graphics.drawCircle(_local4, _local4, (_local4 - 1));
spr.graphics.endFill();
mat.identity();
this.draw(spr, mat);
}
}
}//package effects.metaball
Section 99
//BasicParticle (effects.particles.BasicParticle)
package effects.particles {
import flash.display.*;
import flash.geom.*;
public class BasicParticle extends BitmapData {
public function BasicParticle(_arg1:int){
var _local2:Sprite;
var _local3:Matrix;
super(_arg1, _arg1, true, 0);
_local2 = new Sprite();
_local3 = new Matrix();
_local3.createGradientBox(_arg1, _arg1, 0, 0, 0);
_local2.graphics.beginGradientFill(GradientType.RADIAL, [0xFFFFFF, 0xFFFFFF], [1, 0], [0, 0xFF], _local3, SpreadMethod.PAD, InterpolationMethod.RGB, 0);
_local2.graphics.drawCircle((_arg1 / 2), (_arg1 / 2), ((_arg1 / 2) - 1));
_local2.graphics.endFill();
this.draw(_local2, new Matrix(), new ColorTransform(), BlendMode.NORMAL);
}
}
}//package effects.particles
Section 100
//Egg (effects.particles.Egg)
package effects.particles {
import mx.core.*;
public class Egg extends BitmapAsset {
}
}//package effects.particles
Section 101
//MetaParticlesEffect (effects.particles.MetaParticlesEffect)
package effects.particles {
import mx.core.*;
import synch.*;
import flash.display.*;
import flash.geom.*;
import math.*;
public class MetaParticlesEffect extends AbstractDemoEffect {
private var charges:Array;
private var scale:Matrix;
private var cnt:int;// = 0
private var bmp:BitmapData;
public var randomScale:Number;
private var cameraZ:Number;// = 1
public var movespeed:Number;// = 0.0005
private var amount:Number;
public var radius:Number;// = 200
private var texture:BitmapData;
private var cBmp:BitmapAsset;
private var chargeCalc:ChargeCalculator;
private var j:int;
private var colorTransform:ColorTransform;
private var particles:Array;
private var cx:Number;
private var i:int;
private var cy:Number;
public function MetaParticlesEffect(){
radius = 200;
scale = new Matrix();
colorTransform = new ColorTransform();
cBmp = new Egg();
charges = new Array();
movespeed = 0.0005;
cameraZ = 1;
cnt = 0;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:Array;
super.init(_arg1, _arg2);
bmp = _buffer;
amount = _arg2.amount;
texture = _arg2.texture;
cx = (bmp.width / 2);
cy = (bmp.height / 2);
chargeCalc = new ChargeCalculator();
charges.push({x:70, y:0, z:0, parts:new Array(amount), mag:(radius * 1.5)});
charges.push({x:-70, y:0, z:0, parts:new Array(amount), mag:(radius * 1.5)});
charges.push({x:-20, y:34, z:0, parts:new Array(amount), mag:(radius * 1.5)});
chargeCalc.addCharge(charges[0]);
chargeCalc.addCharge(charges[1]);
chargeCalc.addCharge(charges[2]);
j = 0;
while (j < charges.length) {
_local3 = charges[j].parts;
i = 0;
while (i < amount) {
_local3[i] = {phi:0, rho:0, mag:1};
_local3[i].phi = randRange(-(Math.PI), Math.PI);
_local3[i].rho = randRange(-(Math.PI), Math.PI);
i++;
};
j++;
};
}
private function randRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = ((Math.random() * ((_arg2 - _arg1) + 1)) + _arg1);
return (_local3);
}
override public function play(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Object;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
cnt++;
charges[0].x = (Math.sin(((cnt * 0.05) + 0.23)) * 150);
charges[1].x = (Math.cos(((cnt * 0.06) + 1)) * 150);
charges[2].x = (Math.sin((cnt * 0.08)) * 150);
charges[0].y = (Math.cos(((cnt * 0.08) + 2.1)) * 100);
charges[1].y = (Math.sin(((cnt * 0.07) + 1.3)) * 100);
charges[2].y = (Math.cos((cnt * 0.06)) * 100);
i = 0;
j = 0;
_local6 = {x:0, y:0, z:0, mag:1, own:null};
while (j < charges.length) {
_local5 = charges[j].parts;
i = 0;
while (i < amount) {
_local6.mag = 1;
_local7 = _local5[i].phi;
_local8 = _local5[i].rho;
_local5[i].phi = (_local5[i].phi + (_arg1 * movespeed));
_local5[i].rho = (_local5[i].rho - (_arg1 * movespeed));
_local9 = Math.sin(_local7);
_local10 = Math.cos(_local7);
_local11 = Math.sin(_local8);
_local12 = Math.cos(_local8);
_local6.x = (((radius * _local9) * _local12) + charges[j].x);
_local6.y = (((radius * _local9) * _local11) + charges[j].y);
_local6.own = charges[j];
chargeCalc.movePoint(_local6);
if (_local6.mag != 1){
colorTransform.blueMultiplier = ((_local6.mag * 0.5) + (1 / (_local6.mag * 10)));
colorTransform.redMultiplier = (_local6.mag + (1 / (_local6.mag * 10)));
colorTransform.greenMultiplier = ((_local6.mag * 0.25) + (1 / (_local6.mag * 10)));
_local2 = ((_local6.mag * 2) + 0.5);
if (colorTransform.redMultiplier > 0.95){
colorTransform.blueMultiplier = 1;
colorTransform.redMultiplier = (colorTransform.redMultiplier - 0.4);
colorTransform.greenMultiplier = (colorTransform.greenMultiplier - 0.2);
_local2 = (_local2 * 2);
};
} else {
colorTransform.blueMultiplier = 0.2;
colorTransform.redMultiplier = 0.2;
colorTransform.greenMultiplier = 0.2;
_local2 = 2;
i++;
continue;
};
_local6.x = ((((radius * _local9) * _local12) * _local6.mag) + charges[j].x);
_local6.y = ((((radius * _local9) * _local11) * _local6.mag) + charges[j].y);
scale.identity();
scale.scale(_local2, _local2);
scale.rotate((cnt * 0.02));
scale.translate((cx + _local6.x), (cy + _local6.y));
bmp.draw(texture, scale, colorTransform, BlendMode.ADD);
i++;
};
j++;
};
}
}
}//package effects.particles
Section 102
//DowngradeEffect (effects.post.DowngradeEffect)
package effects.post {
import synch.*;
import flash.display.*;
import flash.geom.*;
public class DowngradeEffect extends AbstractPostProcessor {
private var scale:Number;// = 1
private var blendMode:String;
private var scaleMatrix:Matrix;
private var smooth:Boolean;// = false
public function DowngradeEffect(){
scale = 1;
smooth = false;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:Boolean;
var _local4:Number;
if (_arg2.scale){
scale = _arg2.scale;
scaleMatrix = new Matrix();
_local3 = _arg1.transparent;
_local4 = scale;
if (_arg2.smooth){
smooth = _arg2.smooth;
};
if (_arg2.scaley){
_local4 = _arg2.scaley;
};
if (_arg2.forceTransparent != null){
_local3 = true;
};
scaleMatrix.scale(scale, _local4);
_input = new BitmapData((_arg1.width / scale), (_arg1.height / _local4), _local3, 0);
};
if (_arg2.blendMode){
blendMode = _arg2.blendMode;
};
super.init(_arg1, _arg2);
}
override public function play(_arg1:Number):void{
_input.lock();
_input.fillRect(_input.rect, 0);
super.play(_arg1);
_input.unlock();
buffer.lock();
buffer.draw(_input, scaleMatrix, null, blendMode, null, smooth);
buffer.unlock();
}
}
}//package effects.post
Section 103
//RadialBlurEffect (effects.post.RadialBlurEffect)
package effects.post {
import synch.*;
import flash.display.*;
import flash.geom.*;
public class RadialBlurEffect extends AbstractPostProcessor {
public var zoom:Number;// = 0
private var outMode:String;
private var layers:int;// = 10
private var resetBlur:Boolean;// = false
private var scaleMatrix:Matrix;
private var scale:Number;// = 1
private var ct:ColorTransform;
private var blendMode:String;// = null
private var clipMatrix:Matrix;
public var alphaFade:Number;// = 0
public var blurOffsetX:Number;// = 0
public var blurOffsetY:Number;// = 0
public function RadialBlurEffect(){
layers = 10;
zoom = 0;
alphaFade = 0;
ct = new ColorTransform();
blurOffsetX = 0;
blurOffsetY = 0;
scale = 1;
blendMode = null;
resetBlur = false;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
if (_arg2.transparent){
_input = new BitmapData(_arg1.width, _arg1.height, true, 0);
};
if (_arg2.outMode){
outMode = _arg2.outMode;
};
if (_arg2.blendMode){
blendMode = _arg2.blendMode;
trace(("Setting blendmode:" + blendMode));
};
super.init(_arg1, _arg2);
scaleMatrix = new Matrix();
if (_arg2.layers){
layers = _arg2.layers;
};
if (_arg2.zoom){
zoom = _arg2.zoom;
};
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:Number;
_input.lock();
_input.fillRect(_input.rect, 0);
super.play(_arg1);
if (alphaFade < 0.01){
_input.unlock();
buffer.lock();
buffer.draw(_input, null, null, blendMode);
buffer.unlock();
return;
};
_input.draw(_input, clipMatrix, null, blendMode);
ct.alphaMultiplier = alphaFade;
_local2 = 0;
while (_local2 < layers) {
_local3 = (zoom * _local2);
scaleMatrix.a = (1 + _local3);
scaleMatrix.d = (1 + _local3);
scaleMatrix.tx = -((((_input.width + blurOffsetX) * _local3) * 0.5));
scaleMatrix.ty = -((((_input.height + blurOffsetY) * _local3) * 0.5));
_input.draw(_input, scaleMatrix, ct, BlendMode.ADD, _input.rect, false);
_local2++;
};
_input.unlock();
buffer.lock();
buffer.draw(_input, null, null, outMode);
buffer.unlock();
}
}
}//package effects.post
Section 104
//SuperShapeTunnelEffect (effects.tunnel.SuperShapeTunnelEffect)
package effects.tunnel {
import synch.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class SuperShapeTunnelEffect extends AbstractDemoEffect {
private var intermap:BitmapData;
private var bmp:BitmapData;
private var radius:Number;
public var texture:BitmapData;
private var posy:Number;
private var height:uint;
private var posx:Number;
public var angle1:Number;
public var angle2:Number;
private var width:uint;
public var speed2:Number;// = 1
public var speed3:Number;// = -1
public var fov:Number;
private var base:BitmapData;
private var matte:BitmapData;
private var mat:Matrix;
private var ox:Number;// = 0
private var oy:Number;// = 0
private var oz:Number;// = 0
public var speed1:Number;// = 1
private var colors:BitmapData;
private var ct:ColorTransform;
public var normal:Boolean;// = false
public var texture2:BitmapData;
private var cnt:Bitmap;
public function SuperShapeTunnelEffect(){
ox = 0;
oy = 0;
oz = 0;
speed1 = 1;
speed2 = 1;
speed3 = -1;
normal = false;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
super.init(_arg1, _arg2);
width = (_buffer.width / 2);
height = _buffer.height;
texture = _arg2.texture;
texture2 = _arg2.texture2;
bmp = _arg1;
base = new BitmapData(width, height, false, 0);
matte = new BitmapData(width, height, false, 0);
cnt = new Bitmap(bmp, "auto", true);
cnt.width = (10 * width);
cnt.height = (5 * height);
fov = 120;
radius = 0x0100;
posx = 0;
posy = 1;
angle1 = 0;
angle2 = 0;
mat = new Matrix();
ct = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0);
}
override public function play(_arg1:Number):void{
var _local2:uint;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:int;
var _local32:uint;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
_local2 = getTimer();
posx = (posx + ((_arg1 * 0.005) * speed1));
posy = (posy + ((_arg1 * 0.009) * speed2));
angle1 = (Math.sin((0.25 * posx)) * 0.4);
angle2 = (Math.cos(((0.2 * posy) + 0.7)) * 0.4);
if (!normal){
ox = ((0x0400 * Math.sin((0.1 * posx))) + 0x0400);
oy = ((0x0400 * Math.sin(((0.1 * posy) + 0.132))) + 0x0400);
} else {
ox = (32 * Math.sin(posx));
oy = (32 * Math.sin((posy + 0.132)));
};
oz = (oz + (_arg1 * speed3));
_local3 = Math.cos(angle1);
_local4 = Math.sin(angle1);
_local5 = Math.cos(angle2);
_local6 = Math.sin(angle2);
_local7 = getTimer();
_local8 = (width / 2);
_local9 = (height / 2);
_local13 = ((Math.sin((posx * 0.1)) * 100) + 200);
_local14 = ((Math.sin((posy * 0.1)) * 8) + 10);
_local15 = 0;
while (_local15 < height) {
_local16 = 0;
while (_local16 < width) {
_local17 = ((_local16 - _local8) / fov);
_local18 = ((_local15 - _local9) / fov);
_local19 = 1;
_local20 = ((_local17 * _local3) - (_local18 * _local4));
_local21 = ((_local17 * _local4) + (_local18 * _local3));
_local18 = ((_local21 * _local5) - (_local19 * _local6));
_local19 = ((_local21 * _local6) + (_local19 * _local5));
_local17 = _local20;
_local29 = Math.sqrt((((_local17 * _local17) + (_local18 * _local18)) + (_local19 * _local19)));
_local17 = (_local17 / _local29);
_local18 = (_local18 / _local29);
_local19 = (_local19 / _local29);
_local22 = ((_local17 * _local17) + (_local18 * _local18));
if (!normal){
_local23 = 0;
} else {
_local23 = (2 * ((ox * _local17) + (oy * _local18)));
};
if (!normal){
_local34 = (_local13 * Math.sin((_local22 * _local14)));
_local24 = (-(_local34) * _local34);
} else {
_local24 = (((ox * ox) + (oy * oy)) - (64 * 64));
};
if (!normal){
_local25 = Math.sqrt(((-4 * _local22) * _local24));
} else {
_local25 = Math.sqrt(((_local23 * _local23) - ((4 * _local22) * _local24)));
};
if (_local22 == 0){
} else {
if (!normal){
_local26 = (_local25 / (2 * _local22));
_local27 = (-(_local25) / (2 * _local22));
} else {
_local26 = ((-(_local23) + _local25) / (2 * _local22));
_local27 = ((-(_local23) - _local25) / (2 * _local22));
};
if (_local26 > 0){
_local28 = _local26;
} else {
_local28 = _local27;
};
if (!normal){
_local35 = (_local17 * _local28);
_local36 = (_local18 * _local28);
} else {
_local35 = (ox + (_local17 * _local28));
_local36 = (oy + (_local18 * _local28));
};
_local30 = (oz + (_local19 * _local28));
_local28 = (20000 / _local28);
if (_local28 > 63){
_local12 = 63;
} else {
_local12 = int(_local28);
};
if (_local30 < 0){
_local30 = -(_local30);
};
_local31 = (int(((Math.atan2(_local36, _local35) * 0x0400) / Math.PI)) + ox);
if (_local31 < 0){
_local31 = (0x0100 + (_local31 % 0x0100));
};
_local10 = (int((_local30 * 1.2)) % 0x0100);
_local11 = (int(_local31) % 0x0100);
_local32 = texture.getPixel(_local10, _local11);
_local33 = (_local12 / 63);
_local32 = ((((((_local32 >> 16) & 0xFF) * _local33) << 16) + ((((_local32 >> 8) & 0xFF) * _local33) << 8)) + ((_local32 & 0xFF) * _local33));
base.setPixel(_local16, _local15, _local32);
};
_local16++;
};
_local15++;
};
base.unlock();
bmp.lock();
bmp.fillRect(bmp.rect, 0);
ct.redMultiplier = 1.7;
ct.greenMultiplier = 1.7;
ct.blueMultiplier = 1;
mat.identity();
if (normal){
mat.scale(2, 1);
};
bmp.draw(base, mat, ct, "normal");
mat.scale(-1, 1);
mat.translate((width * 2), 0);
if (!normal){
bmp.draw(base, mat, ct, "normal");
};
bmp.unlock();
}
public function getContainer():DisplayObject{
return (cnt);
}
}
}//package effects.tunnel
Section 105
//SuperShapeTwisterEffect (effects.twister.SuperShapeTwisterEffect)
package effects.twister {
import synch.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class SuperShapeTwisterEffect extends AbstractDemoEffect {
private var tt:Number;// = 0
private var demobmp:Bitmap;
private var blurmt:Matrix;
private var NP:int;// = 0x0100
private var lasttime:int;// = 0
private var rect:Rectangle;
private var colortrans:ColorTransform;
private var point:Point;
private var cnt:int;
private var drawmt:Matrix;
private var mt:Matrix;
private var CNTX:int;// = 0xFF
private var CNTY:int;// = 100
private var scalemt:Matrix;
private var xyvalues:Array;
private var fullrect:Rectangle;
private var spr:Sprite;
private var twistbmp:BitmapData;
public function SuperShapeTwisterEffect(){
NP = 0x0100;
cnt = (Math.random() * 4294967295);
colortrans = new ColorTransform(0.9, 0.93, 0.96);
spr = new Sprite();
CNTY = 100;
CNTX = 0xFF;
blurmt = new Matrix();
point = new Point();
lasttime = 0;
tt = 0;
mt = new Matrix();
xyvalues = new Array();
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
super.init(_arg1, _arg2);
_local3 = 0;
while (_local3 <= CNTX) {
xyvalues.push(new Point());
_local3++;
};
twistbmp = new BitmapData(_buffer.width, _buffer.height, true, 0);
scalemt = new Matrix();
drawmt = new Matrix();
rect = new Rectangle(0, 0, 0, 1);
fullrect = new Rectangle(0, 0, _buffer.width, _buffer.height);
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:int;
var _local10:int;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:int;
var _local15:Number;
var _local16:Point;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Boolean;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:int;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:int;
var _local37:int;
cnt = (cnt + _arg1);
_local2 = (192 + (48 * Math.sin((cnt * 0.0012))));
_local3 = (192 + (48 * Math.sin((cnt * 0.0013))));
_local4 = 0xFF;
_local5 = 2;
_local6 = (Math.sin((cnt * 0.000821)) * 3);
_local7 = -0.3;
_local8 = 8;
twistbmp.fillRect(fullrect, 0);
tt = (tt + (_arg1 * -0.0005));
tt = (tt % (Math.PI / CNTY));
_local14 = getTimer();
_local9 = 0;
while (_local9 <= CNTX) {
_local12 = ((((_local9 * 2) * Math.PI) / CNTX) - Math.PI);
_local19 = Math.cos(((_local8 * _local12) / 4));
if (_local19 < 0){
_local19 = -(_local19);
};
_local19 = Math.pow(_local19, _local6);
_local20 = Math.sin(((_local8 * _local12) / 4));
if (_local20 < 0){
_local20 = -(_local20);
};
_local20 = Math.pow(_local20, _local7);
_local15 = Math.pow((_local19 + _local20), (1 / _local5));
_local15 = (1 / _local15);
_local16 = xyvalues[_local9];
_local16.x = (_local15 * Math.cos(_local12));
_local16.y = (-(_local15) * Math.sin(_local12));
if (_local9 >= 1){
};
_local9++;
};
_local17 = Math.sin((cnt * 0.00064));
_local18 = Math.sin((cnt * 0.0004));
_local9 = 0;
while (_local9 <= CNTY) {
_local21 = true;
_local26 = 0;
_local27 = 0;
_local28 = -9000;
_local29 = 9000;
_local21 = true;
_local30 = (((cnt * -0.001) + ((_local9 * -0.01) * _local17)) + ((_local9 * 0.01) * _local18));
_local30 = (_local30 % (Math.PI * 2));
mt.identity();
mt.rotate(_local30);
_local10 = 0;
while (_local10 <= CNTX) {
_local31 = _local10;
_local31 = (_local31 - int(((_local30 * (CNTX + 1)) / (Math.PI * 2))));
_local31 = (_local31 - (CNTX / 4));
_local16 = xyvalues[(_local31 & CNTX)];
_local22 = _local16.x;
_local23 = _local16.y;
_local24 = ((_local22 * mt.a) + (_local23 * mt.b));
_local25 = ((_local22 * mt.c) + (_local23 * mt.d));
_local25++;
_local22 = (_local24 * ((_buffer.width / 4) + (25 * Math.sin(((_local9 * 0.07) + (cnt * 0.006))))));
_local23 = ((_local25 * _buffer.height) / 4);
_local32 = _local22;
if ((((_local22 > 0)) && ((_local22 < _local28)))){
_local22 = _local28;
};
if ((((_local22 > 0)) && ((_local22 > _local28)))){
_local28 = _local22;
};
_local28 = _local22;
_local33 = (_local22 - _local26);
_local34 = (_local23 - _local27);
if (_local33 > 0){
rect.x = int(((_local22 + (_buffer.width / 2)) - _local33));
rect.y = _local9;
rect.width = int((_local33 + 1));
_local35 = _local34;
if (_local35 < 0){
_local35 = -(_local35);
};
_local36 = ((1 / _local35) * 0xFF);
_local35 = _local33;
if (_local35 < 0){
_local35 = -(_local35);
};
_local37 = ((1 / _local35) * 0xFF);
_local2 = ((51 + _local36) - _local37);
_local3 = ((51 + _local36) - _local37);
_local4 = ((85 + _local36) - _local37);
if (_local2 > 0xFF){
_local2 = 0xFF;
};
if (_local2 < 0){
_local2 = 0;
};
if (_local3 > 0xFF){
_local3 = 0xFF;
};
if (_local3 < 0){
_local3 = 0;
};
if (_local4 > 0xFF){
_local4 = 0xFF;
};
if (_local4 < 0){
_local4 = 0;
};
if (!_local21){
twistbmp.fillRect(rect, (((4278190080 | (_local2 << 16)) | (_local3 << 8)) | _local4));
};
};
_local26 = _local22;
_local27 = _local23;
_local21 = false;
_local10++;
};
_local9++;
};
mt.identity();
mt.scale(1, (_buffer.height / CNTY));
mt.translate((-(_buffer.width) / 2), (-(_buffer.height) / 2));
mt.rotate((Math.PI / 2));
mt.translate(((_buffer.width / 2) + (_buffer.width / 4)), (_buffer.height / 2));
_buffer.draw(twistbmp, mt);
mt.translate((-(_buffer.width) / 2), 0);
_buffer.draw(twistbmp, mt);
mt.identity();
mt.scale(1, (_buffer.height / CNTY));
_buffer.draw(twistbmp, mt);
}
}
}//package effects.twister
Section 106
//FlashEffect (effects.FlashEffect)
package effects {
import synch.*;
import flash.display.*;
import flash.geom.*;
public class FlashEffect extends AbstractDemoEffect {
private var width:Number;
public var speed:Number;// = 1
public var done:Boolean;// = true
private var flashMap:BitmapData;
private var graph:Graphics;
private var colorTransform:ColorTransform;
public var color:uint;// = 4294967295
private var height:Number;
public function FlashEffect(){
speed = 1;
color = 4294967295;
done = true;
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
super.init(_arg1, _arg2);
width = _arg1.width;
height = _arg1.height;
flashMap = new BitmapData(width, height, true, 0);
colorTransform = new ColorTransform(1, 1, 1, 0);
}
public function resetColor(_arg1:Number, _arg2:Number, _arg3:Number):void{
color = (((int((_arg1 * 0xFF)) << 16) | (int((_arg2 * 0xFF)) << 8)) | int((_arg3 * 0xFF)));
}
public function reset():void{
colorTransform.alphaMultiplier = 1;
done = false;
}
override public function play(_arg1:Number):void{
if (done){
return;
};
colorTransform.alphaMultiplier = (colorTransform.alphaMultiplier - (_arg1 / (1000 * speed)));
if (colorTransform.alphaMultiplier < 0){
colorTransform.alphaMultiplier = 0;
done = true;
};
flashMap.fillRect(flashMap.rect, color);
flashMap.colorTransform(flashMap.rect, colorTransform);
_buffer.draw(flashMap);
}
}
}//package effects
Section 107
//HalfballEffect (effects.HalfballEffect)
package effects {
import synch.*;
import flash.display.*;
import away3d.core.proto.*;
import away3d.core.math.*;
import away3d.core.render.*;
import away3d.core.material.*;
import away3d.loaders.*;
import flash.geom.*;
public class HalfballEffect extends AbstractDemoEffect {
private var drawmatrix:Matrix;
private var scene:Scene3D;
private var bmp2:BitmapData;
private var destPoint:Point;
private var target:ObjectContainer3D;
private var bmp1:BitmapData;
private var colorTrans:ColorTransform;
private var screenMultColor:ColorTransform;
private var meshes:Array;
private var mcnt:int;
private var view:View3D;
private var point:Point;
private var cnt:int;
private var backdrawmatrix:Matrix;
private var divver:Number;// = 0.1
private var textures:Array;
public function HalfballEffect(){
meshes = new Array();
cnt = (Math.random() * 4294967295);
mcnt = (Math.random() * 4294967295);
divver = 0.1;
destPoint = new Point();
colorTrans = new ColorTransform(0.6, 0.8, 0.9);
screenMultColor = new ColorTransform(2, 2, 3, 2);
point = new Point();
textures = new Array();
super();
}
public function random():void{
var _local1:ColorMaterial;
for each (_local1 in this.textures) {
_local1.fillAlpha = (0.25 + (Math.random() * 0.75));
};
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:ColorMaterial;
var _local5:ObjectContainer3D;
super.init(_arg1, _arg2);
bmp1 = new BitmapData(_buffer.width, _buffer.height, true, 0);
bmp2 = new BitmapData(_buffer.width, _buffer.height, true, 0);
drawmatrix = new Matrix();
drawmatrix.translate((_buffer.width / 2), (_buffer.height / 2));
backdrawmatrix = new Matrix();
backdrawmatrix.translate((-(_buffer.width) / 2), (-(_buffer.height) / 2));
backdrawmatrix.scale(1.02, 1.05);
backdrawmatrix.translate((_buffer.width / 2), (_buffer.height / 2));
view = new View3D(scene);
_local3 = 0;
while (_local3 < 16) {
if ((_local3 & 1)){
_local4 = new ColorMaterial(0xFFFFFF, 0.25);
} else {
_local4 = new ColorMaterial(11513855, 0.25);
};
_local5 = new ObjectContainer3D(Obj.parse(Cast.string(models.HalfBallModel1), _local4, null, 70));
view.scene.addChild(_local5);
meshes.push(_local5);
textures.push(_local4);
_local3++;
};
target = new ObjectContainer3D();
view.scene.addChild(target);
view.x = 400;
view.y = 200;
view.renderer = Renderer.BASIC;
}
public function flash():void{
var _local1:ColorMaterial;
for each (_local1 in this.textures) {
_local1.fillAlpha = 1;
};
}
override public function play(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:BitmapData;
var _local8:ObjectContainer3D;
var _local9:Number;
var _local10:Number;
var _local11:ColorMaterial;
divver = (divver / 1.08);
if (divver < 0.4){
divver = 2;
};
divver = 0.8;
cnt = (cnt + _arg1);
mcnt = (mcnt + (_arg1 * divver));
_local2 = (uint((cnt * 0.05)) % 16);
trace(_local2);
_local3 = 0;
while (_local3 < 16) {
_local8 = meshes[_local3];
_local9 = ((_local3 * Math.PI) / 8);
_local10 = ((_local3 * 360) / 16);
_local8.x = (Math.cos(_local9) * 70);
_local8.y = (Math.sin(_local9) * 70);
_local8.rotationX = (Math.sin((mcnt * 0.00028)) * 360);
_local8.rotationY = (Math.cos((mcnt * 0.00024)) * 360);
_local8.rotationZ = (_local10 + (Math.sin((mcnt * 0.00014)) * 360));
_local11 = textures[_local3];
textures[_local3].fillAlpha = (_local11.fillAlpha + ((0.25 - _local11.fillAlpha) / 5));
_local3++;
};
view.camera.x = 0;
view.camera.y = -250;
view.camera.z = -250;
view.camera.lookAt(target, new Number3D(0, 1, 0));
_local4 = 128;
_local5 = (160 + (Math.cos((cnt * 0.00022)) * 32));
_local6 = (192 + (Math.sin((cnt * 0.00024)) * 64));
view.render();
bmp2.lock();
bmp2.draw(bmp1, backdrawmatrix, colorTrans);
bmp2.draw(view, drawmatrix);
bmp2.unlock();
_buffer.draw(bmp2);
_local7 = bmp2;
bmp2 = bmp1;
bmp1 = _local7;
}
}
}//package effects
class models {
public static var HalfBallModel1:Class = models_HalfBallModel1;
private function models(){
}
}
Section 108
//LonkeroEffect (effects.LonkeroEffect)
package effects {
import synch.*;
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
public class LonkeroEffect extends AbstractDemoEffect {
private var blurfilt2:BlurFilter;
private var bmp:Bitmap;
private var maxmt:Matrix;
private var bmps:Array;
private var blurfilt:BlurFilter;
private var clearbmp:Bitmap;
private var halfmt:Matrix;
private var alphaMap:Array;
private var blacktrans:ColorTransform;
private var redMap:Array;
private var colortrans:ColorTransform;
private var startmulti:Number;// = 0
private var point:Point;
private var blueMap:Array;
private var cnts:Array;
private var blurbuf:BitmapData;
private var bmpdata:BitmapData;
private var rotcnt:int;// = 0
private var shp:Shape;
private var screentrans:ColorTransform;
private var clearspr:Sprite;
private var maxmttr:Matrix;
private var blackbuff:BitmapData;
private var qrect:Rectangle;
private var greenMap:Array;
private var mat:Matrix;
private var rect:Rectangle;
private var minmt:Matrix;
private var lonkerolen:int;// = 0
public function LonkeroEffect(){
shp = new Shape();
clearspr = new Sprite();
cnts = new Array();
rotcnt = 0;
rect = new Rectangle(0, 0, 800, 280);
qrect = new Rectangle(0, 0, 400, 140);
bmps = new Array();
blurfilt = new BlurFilter(4, 4);
blurfilt2 = new BlurFilter(6, 6);
point = new Point();
colortrans = new ColorTransform(1, 1, 1, 0);
blacktrans = new ColorTransform(0, 0, 0, 2.5);
screentrans = new ColorTransform(1.8, 1.9, 1.5, 1);
blackbuff = new BitmapData(800, 400, true, 4294967295);
redMap = new Array();
greenMap = new Array();
blueMap = new Array();
alphaMap = new Array();
startmulti = 0;
lonkerolen = 0;
mat = new Matrix(1, 0, 0, 1, 0, 60);
super();
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
var _local3:int;
var _local4:int;
super.init(_arg1, _arg2);
minmt = new Matrix();
maxmt = new Matrix();
maxmttr = new Matrix();
halfmt = new Matrix();
minmt.scale(0.5, 0.5);
maxmt.scale(2, 2);
halfmt.scale(0.5, 0.5);
maxmttr.scale(2, 2);
maxmttr.translate(0, 4);
blurbuf = new BitmapData(400, 140, true, 0);
_local3 = 0;
while (_local3 <= 0x0100) {
alphaMap[_local3] = (Math.floor((_local3 * 0.9)) << 24);
redMap[_local3] = (Math.floor((_local3 * 0.8)) << 16);
greenMap[_local3] = (Math.floor((_local3 * 0.9)) << 8);
blueMap[_local3] = Math.floor((_local3 * 0.4));
_local3++;
};
_local3 = 0;
while (_local3 < 32) {
bmpdata = new BitmapData(800, 280, true, 0);
bmps.push(bmpdata);
_local3++;
};
bmpdata = bmps.pop();
_local3 = 0;
while (_local3 < 32) {
cnts.push((Math.random() * 4294967295));
_local3++;
};
}
override public function play(_arg1:Number):void{
var _local2:Graphics;
var _local3:int;
var _local4:Number;
var _local5:Number;
var _local6:int;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:int;
_local2 = shp.graphics;
rotcnt = (rotcnt + (33 * 0.2));
if (lonkerolen < 100){
lonkerolen++;
};
_local2.clear();
_local3 = 0;
while (_local3 < 10) {
_local5 = ((_local3 * Math.PI) / 4);
_local6 = (cnts[_local3] + 18);
cnts[_local3] = _local6;
if ((_local3 & 1)){
_local7 = ((redMap[0xFF] | greenMap[0xFF]) | blueMap[0xFF]);
} else {
_local12 = (208 + (Math.sin((_local6 * 0.0023)) * 32));
_local13 = 0xFF;
_local14 = (208 + (Math.sin((_local6 * 0.0023)) * 32));
_local7 = ((redMap[_local12] | greenMap[_local13]) | blueMap[_local14]);
};
_local2.lineStyle(6, _local7, 1);
_local2.moveTo(950, 200);
_local8 = 0;
_local9 = 0;
_local10 = rotcnt;
_local11 = 0;
while (_local11 < lonkerolen) {
_local6 = (_local6 - 46);
_local10 = (_local10 - 4);
_local8 = ((((Math.sin((_local6 * 0.003)) * 30) + (Math.sin((_local6 * 0.004)) * 30)) + (Math.sin((_local6 * 0.0021)) * 30)) + (Math.sin((_local6 * 0.0033)) * 30));
_local9 = ((((Math.sin((_local6 * 0.0031)) * 40) + (Math.sin((_local6 * -0.0045)) * 40)) + (Math.sin((_local6 * -0.002)) * 30)) + (Math.sin((_local6 * 0.0044)) * 30));
_local9 = (_local9 * Math.sin(((_local10 * 0.004) + _local5)));
_local9 = (_local9 * startmulti);
_local8 = (_local8 * (Math.sin(((rotcnt * 0.004) + _local5)) * Math.sin(((rotcnt * 0.005) + _local5))));
_local2.lineTo(((950 + _local8) - (11 * _local11)), (140 + _local9));
_local11++;
};
_local3++;
};
bmps.push(bmpdata);
bmpdata = bmps.shift();
blurbuf.lock();
blurbuf.fillRect(qrect, 0);
blurbuf.draw(shp, minmt);
blurbuf.applyFilter(blurbuf, qrect, point, blurfilt2);
blurbuf.unlock();
bmpdata.lock();
bmpdata.paletteMap(bmpdata, rect, point, redMap, greenMap, blueMap, alphaMap);
bmpdata.draw(blurbuf, maxmttr, blacktrans);
bmpdata.draw(shp);
bmpdata.draw(blurbuf, maxmt, null, BlendMode.SCREEN);
bmpdata.unlock();
_buffer.lock();
_buffer.draw(bmpdata, mat);
_buffer.unlock();
_local4 = colortrans.alphaMultiplier;
colortrans.alphaMultiplier = (colortrans.alphaMultiplier + 0.005);
if (colortrans.alphaMultiplier > 1){
colortrans.alphaMultiplier = 1;
};
startmulti = (startmulti + 0.0075);
if (startmulti > 1){
startmulti = 1;
};
}
}
}//package effects
Section 109
//MultiEffect (effects.MultiEffect)
package effects {
import synch.*;
import flash.display.*;
public class MultiEffect extends AbstractDemoEffect {
public var activeEffect:IDemoEffect;
private var effectArray:Array;
public function MultiEffect(){
effectArray = new Array();
super();
}
public function nextEffect():void{
effectArray.push(activeEffect);
activeEffect = effectArray.shift();
}
public function selectEffect(_arg1:IDemoEffect):void{
while (activeEffect != _arg1) {
nextEffect();
};
}
override public function init(_arg1:BitmapData, _arg2:Object=null):void{
super.init(_arg1, _arg2);
}
override public function play(_arg1:Number):void{
activeEffect.play(_arg1);
}
public function addEffect(_arg1:IDemoEffect):void{
if (activeEffect != null){
effectArray.push(activeEffect);
};
activeEffect = _arg1;
}
}
}//package effects
Section 110
//TextRender (effects.TextRender)
package effects {
import flash.display.*;
import flash.text.*;
import flash.geom.*;
import flash.filters.*;
public class TextRender extends Bitmap {
public static var mat:Matrix = new Matrix();
public static var blur:BlurFilter = new BlurFilter(4, 4, 1);
public function TextRender(_arg1:String, _arg2:TextFormat, _arg3:Number=1){
var _local4:TextField;
var _local5:BitmapData;
var _local6:BitmapData;
_local4 = new TextField();
_local4.embedFonts = true;
_local4.defaultTextFormat = _arg2;
_local4.text = _arg1;
_local4.width = _local4.textWidth;
_local4.height = _local4.textHeight;
_local4.autoSize = TextFieldAutoSize.LEFT;
_local5 = new BitmapData(_local4.width, _local4.height, true, 0);
_local5.draw(_local4);
_local5.applyFilter(_local5, _local5.rect, new Point(0, 0), TextRender.blur);
TextRender.mat.identity();
TextRender.mat.scale((0.25 * _arg3), 0.25);
_local6 = new BitmapData((_local5.width / 2), (_local5.height / 4), true, 0);
_local6.draw(_local5, TextRender.mat, new ColorTransform(), "normal", null, true);
super(_local6);
}
}
}//package effects
Section 111
//Tweener (effects.Tweener)
package effects {
import flash.display.*;
import mx.effects.*;
import mx.effects.easing.*;
public class Tweener extends Sprite {
private var _tsx:Number;
private var _tsy:Number;
private var _tdx:Number;
private var _alpha:Boolean;
private var _tdy:Number;
private var cnt:int;// = 1
private var _target:DisplayObject;
private var _remove:Boolean;
private var _duration:Number;
public function Tweener(_arg1:DisplayObject, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:Boolean, _arg8:Number){
cnt = 1;
super();
_target = _arg1;
_tdx = _arg4;
_tdy = _arg5;
_tsx = _arg2;
_tsy = _arg3;
_alpha = _arg6;
_remove = _arg7;
_duration = _arg8;
tweenMe();
}
private function updateTween(_arg1:Array):void{
_target.x = _arg1[0];
_target.y = _arg1[1];
if (_alpha){
_target.alpha = _arg1[2];
};
}
private function endTween(_arg1:Array):void{
trace(("removing:" + cnt));
if (_remove){
_target.parent.removeChild(_target);
};
}
private function tweenMe():void{
var _local1:Array;
var _local2:Array;
var _local3:Tween;
_local1 = [_tsx, _tsy];
_local2 = [_tdx, _tdy];
if (_alpha){
_local1[2] = 0;
_local2[2] = 1;
};
_target.x = _tsx;
_target.y = _tsy;
_target.alpha = 0;
_local3 = new Tween(_target, _local1, _local2, _duration, 31);
_local3.easingFunction = Sine.easeIn;
_local3.setTweenHandlers(updateTween, endTween);
}
}
}//package effects
Section 112
//IntroBG (intro.IntroBG)
package intro {
import flash.display.*;
public dynamic class IntroBG extends BitmapData {
public function IntroBG(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package intro
Section 113
//IntroLettersAsset (intro.IntroLettersAsset)
package intro {
import flash.display.*;
public dynamic class IntroLettersAsset extends MovieClip {
}
}//package intro
Section 114
//IntroTvzAsset (intro.IntroTvzAsset)
package intro {
import flash.display.*;
public dynamic class IntroTvzAsset extends MovieClip {
}
}//package intro
Section 115
//ChargeCalculator (math.ChargeCalculator)
package math {
public class ChargeCalculator {
private var chargePos:Array;
private var qs:Array;
private var normals:Array;
private var crossOver:int;// = 128
public function ChargeCalculator(){
chargePos = new Array();
crossOver = 128;
qs = new Array();
normals = new Array();
super();
}
public function addCharge(_arg1:Object):void{
chargePos.push(_arg1);
qs.push(0);
normals.push({x:0, y:0, z:0, l2:0});
}
public function moveCharges():void{
}
public function movePoint(_arg1:Object):void{
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local2 = 0;
_local9 = 0;
while (_local2 < chargePos.length) {
_local3 = (_arg1.x - chargePos[_local2].x);
_local4 = (_arg1.y - chargePos[_local2].y);
_local8 = ((_local3 * _local3) + (_local4 * _local4));
_local8 = (_local8 / (chargePos[_local2].mag * chargePos[_local2].mag));
if (((!((_arg1.own == chargePos[_local2]))) && ((_local8 < 0.5)))){
_local10 = ((0.25 + _local8) + (_local8 * _local8));
_local9 = (_local9 + _local10);
};
_local2++;
};
if (_local9 < 0.2){
return;
};
if (_local9 != 0){
_arg1.mag = (_arg1.mag - _local9);
};
}
}
}//package math
Section 116
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "2.0.1.0";
public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
}
}//package mx.core
Section 117
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "2.0.1.0";
}
}//package mx.core
Section 118
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "2.0.1.0";
public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
var bitmapData = _arg1;
var pixelSnapping = _arg2;
var smoothing = _arg3;
super(bitmapData, pixelSnapping, smoothing);
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 119
//FontAsset (mx.core.FontAsset)
package mx.core {
import flash.text.*;
public class FontAsset extends Font implements IFlexAsset {
mx_internal static const VERSION:String = "2.0.1.0";
}
}//package mx.core
Section 120
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 121
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function set height(_arg1:Number):void;
function get scaleY():Number;
function move(_arg1:Number, _arg2:Number):void;
function get scaleX():Number;
function set mask(_arg1:DisplayObject):void;
function set scaleX(_arg1:Number):void;
function set name(_arg1:String):void;
function set scaleY(_arg1:Number):void;
function get visible():Boolean;
function get measuredWidth():Number;
function set visible(_arg1:Boolean):void;
function get alpha():Number;
function get height():Number;
function get width():Number;
function get parent():DisplayObjectContainer;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set y(_arg1:Number):void;
function get x():Number;
function get y():Number;
function set alpha(_arg1:Number):void;
}
}//package mx.core
Section 122
//IFlexModuleFactory (mx.core.IFlexModuleFactory)
package mx.core {
public interface IFlexModuleFactory {
function create(... _args):Object;
function info():Object;
}
}//package mx.core
Section 123
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function get repeaters():Array;
function get instanceIndices():Array;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 124
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 125
//UIComponentGlobals (mx.core.UIComponentGlobals)
package mx.core {
import flash.display.*;
import flash.geom.*;
import mx.managers.*;
public class UIComponentGlobals {
mx_internal static var callLaterSuspendCount:int = 0;
mx_internal static var layoutManager:ILayoutManager;
mx_internal static var nextFocusObject:InteractiveObject;
mx_internal static var designTime:Boolean = false;
mx_internal static var tempMatrix:Matrix = new Matrix();
mx_internal static var callLaterDispatcherCount:int = 0;
}
}//package mx.core
Section 126
//Sine (mx.effects.easing.Sine)
package mx.effects.easing {
import mx.core.*;
public class Sine {
mx_internal static const VERSION:String = "2.0.1.0";
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2));
}
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2));
}
}
}//package mx.effects.easing
Section 127
//Tween (mx.effects.Tween)
package mx.effects {
import flash.events.*;
import mx.core.*;
import flash.utils.*;
import mx.events.*;
public class Tween extends EventDispatcher {
private var started:Boolean;// = false
public var duration:Number;// = 3000
private var id:int;
private var arrayMode:Boolean;
private var _isPlaying:Boolean;// = true
private var startValue:Object;
public var listener:Object;
private var userEquation:Function;
private var previousUpdateTime:Number;
mx_internal var needToLayout:Boolean;// = false
private var updateFunction:Function;
private var _doSeek:Boolean;// = false
mx_internal var startTime:Number;
private var endFunction:Function;
private var endValue:Object;
private var _doReverse:Boolean;// = false
private var _playheadTime:Number;// = 0
private var _invertValues:Boolean;// = false
private var maxDelay:Number;// = 87.5
mx_internal static const VERSION:String = "2.0.1.0";
private static var timer:Timer = null;
private static var interval:Number = 10;
private static var activeTweens:Array = [];
mx_internal static var intervalTime:Number = NAN;
public function Tween(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Number=-1, _arg5:Number=-1){
needToLayout = false;
maxDelay = 87.5;
_doSeek = false;
_isPlaying = true;
_doReverse = false;
userEquation = defaultEasingFunction;
started = false;
duration = 3000;
_playheadTime = 0;
_invertValues = false;
super();
if (!_arg1){
return;
};
if ((_arg2 is Array)){
arrayMode = true;
};
this.listener = _arg1;
this.startValue = _arg2;
this.endValue = _arg3;
if (((!(isNaN(_arg4))) && (!((_arg4 == -1))))){
this.duration = _arg4;
};
if (((!(isNaN(_arg5))) && (!((_arg5 == -1))))){
maxDelay = (1000 / _arg5);
};
if (_arg4 == 0){
endTween();
} else {
Tween.addTween(this);
};
}
public function pause():void{
_isPlaying = false;
}
mx_internal function get playheadTime():Number{
return (_playheadTime);
}
mx_internal function get playReversed():Boolean{
return (_invertValues);
}
public function resume():void{
_isPlaying = true;
startTime = (intervalTime - _playheadTime);
if (_doReverse){
reverse();
_doReverse = false;
};
}
public function setTweenHandlers(_arg1:Function, _arg2:Function):void{
this.updateFunction = _arg1;
this.endFunction = _arg2;
}
mx_internal function set playReversed(_arg1:Boolean):void{
_invertValues = _arg1;
}
public function set easingFunction(_arg1:Function):void{
userEquation = _arg1;
}
private function defaultEasingFunction(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 / 2) * (Math.sin((Math.PI * ((_arg1 / _arg4) - 0.5))) + 1)) + _arg2));
}
public function endTween():void{
var _local1:TweenEvent;
var _local2:Object;
_local1 = new TweenEvent(TweenEvent.TWEEN_END);
_local2 = getCurrentValue(duration);
_local1.value = _local2;
dispatchEvent(_local1);
if (endFunction != null){
endFunction(_local2);
} else {
listener.onTweenEnd(_local2);
};
Tween.removeTweenAt(id);
}
public function reverse():void{
if (_isPlaying){
_doReverse = false;
seek((duration - _playheadTime));
_invertValues = !(_invertValues);
} else {
_doReverse = !(_doReverse);
};
}
mx_internal function doInterval():Boolean{
var _local1:Boolean;
var _local2:Number;
var _local3:Object;
var _local4:TweenEvent;
var _local5:TweenEvent;
_local1 = false;
previousUpdateTime = intervalTime;
if (((_isPlaying) || (_doSeek))){
_local2 = (intervalTime - startTime);
_playheadTime = _local2;
_local3 = getCurrentValue(_local2);
if ((((_local2 >= duration)) && (!(_doSeek)))){
endTween();
_local1 = true;
} else {
if (!started){
_local5 = new TweenEvent(TweenEvent.TWEEN_START);
dispatchEvent(_local5);
started = true;
};
_local4 = new TweenEvent(TweenEvent.TWEEN_UPDATE);
_local4.value = _local3;
dispatchEvent(_local4);
if (updateFunction != null){
updateFunction(_local3);
} else {
listener.onTweenUpdate(_local3);
};
};
_doSeek = false;
};
return (_local1);
}
public function seek(_arg1:Number):void{
var _local2:Number;
_local2 = intervalTime;
previousUpdateTime = _local2;
startTime = (_local2 - _arg1);
_doSeek = true;
}
mx_internal function getCurrentValue(_arg1:Number):Object{
var _local2:Array;
var _local3:int;
var _local4:int;
if (duration == 0){
return (endValue);
};
if (_invertValues){
_arg1 = (duration - _arg1);
};
if (arrayMode){
_local2 = [];
_local3 = startValue.length;
_local4 = 0;
while (_local4 < _local3) {
_local2[_local4] = userEquation(_arg1, startValue[_local4], (endValue[_local4] - startValue[_local4]), duration);
_local4++;
};
return (_local2);
//unresolved jump
};
return (userEquation(_arg1, startValue, (Number(endValue) - Number(startValue)), duration));
}
mx_internal static function removeTween(_arg1:Tween):void{
removeTweenAt(_arg1.id);
}
private static function addTween(_arg1:Tween):void{
_arg1.id = activeTweens.length;
activeTweens.push(_arg1);
if (!timer){
timer = new Timer(interval);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
} else {
timer.start();
};
if (isNaN(intervalTime)){
intervalTime = getTimer();
};
_arg1.startTime = (_arg1.previousUpdateTime = intervalTime);
}
private static function timerHandler(_arg1:TimerEvent):void{
var _local2:Boolean;
var _local3:Number;
var _local4:int;
var _local5:int;
var _local6:Tween;
_local2 = false;
_local3 = intervalTime;
intervalTime = getTimer();
_local4 = activeTweens.length;
_local5 = _local4;
while (_local5 >= 0) {
_local6 = Tween(activeTweens[_local5]);
if (_local6){
_local6.needToLayout = false;
_local6.doInterval();
if (_local6.needToLayout){
_local2 = true;
};
};
_local5--;
};
if (_local2){
UIComponentGlobals.layoutManager.validateNow();
};
_arg1.updateAfterEvent();
}
private static function removeTweenAt(_arg1:int):void{
var _local2:int;
var _local3:int;
var _local4:Tween;
if ((((_arg1 >= activeTweens.length)) || ((_arg1 < 0)))){
return;
};
activeTweens.splice(_arg1, 1);
_local2 = activeTweens.length;
_local3 = _arg1;
while (_local3 < _local2) {
_local4 = Tween(activeTweens[_local3]);
_local4.id--;
_local3++;
};
if (_local2 == 0){
intervalTime = NaN;
timer.reset();
};
}
}
}//package mx.effects
Section 128
//TweenEvent (mx.events.TweenEvent)
package mx.events {
import flash.events.*;
import mx.core.*;
public class TweenEvent extends Event {
public var value:Object;
public static const TWEEN_END:String = "tweenEnd";
mx_internal static const VERSION:String = "2.0.1.0";
public static const TWEEN_UPDATE:String = "tweenUpdate";
public static const TWEEN_START:String = "tweenStart";
public function TweenEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
super(_arg1, _arg2, _arg3);
this.value = _arg4;
}
override public function clone():Event{
return (new TweenEvent(type, bubbles, cancelable, value));
}
}
}//package mx.events
Section 129
//ILayoutManager (mx.managers.ILayoutManager)
package mx.managers {
import flash.events.*;
public interface ILayoutManager extends IEventDispatcher {
function invalidateDisplayList(_arg1:ILayoutManagerClient):void;
function validateClient(_arg1:ILayoutManagerClient, _arg2:Boolean=false):void;
function invalidateProperties(_arg1:ILayoutManagerClient):void;
function isInvalid():Boolean;
function validateNow():void;
function set usePhasedInstantiation(_arg1:Boolean):void;
function invalidateSize(_arg1:ILayoutManagerClient):void;
function get usePhasedInstantiation():Boolean;
}
}//package mx.managers
Section 130
//ILayoutManagerClient (mx.managers.ILayoutManagerClient)
package mx.managers {
import flash.events.*;
public interface ILayoutManagerClient extends IEventDispatcher {
function set updateCompletePendingFlag(_arg1:Boolean):void;
function set initialized(_arg1:Boolean):void;
function validateProperties():void;
function get nestLevel():int;
function get updateCompletePendingFlag():Boolean;
function validateDisplayList():void;
function set processedDescriptors(_arg1:Boolean):void;
function get processedDescriptors():Boolean;
function validateSize(_arg1:Boolean=false):void;
function set nestLevel(_arg1:int):void;
function get initialized():Boolean;
}
}//package mx.managers
Section 131
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import mx.core.*;
import flash.display.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "2.0.1.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local3:DisplayObject;
var _local4:String;
var _local5:Array;
_local3 = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
var _local2:String;
var _local3:int;
var _local4:int;
if (!_arg1){
return (null);
};
_local2 = getQualifiedClassName(_arg1);
_local3 = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
_local4 = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 132
//CirclePart (newpart.CirclePart)
package newpart {
import synch.*;
import flash.display.*;
import effects.bparticles.*;
import effects.fire.*;
import effects.post.*;
public class CirclePart implements IDemoPart {
private var engine:DemoEngine;
private var scaleX:Number;// = 0
private var audio:DistortEffect;
private var zoom:Number;// = 0
private var overlays:Array;
private var cnt:int;// = 0
private var downscale:DowngradeEffect;
private var overlay:BitmapData;
private var superCurve:CircleParticles;
public function CirclePart(){
cnt = 0;
overlays = new Array(6);
zoom = 0;
scaleX = 0;
super();
}
public function preInit(_arg1:DemoEngine):void{
downscale = new DowngradeEffect();
downscale.init(_arg1.buffer, {scale:2});
audio = new DistortEffect();
audio.init(downscale.input, {});
superCurve = new CircleParticles();
superCurve.init(audio.input, {transparent:true, texture:new textures.GlowParticle().bitmapData});
superCurve.reset(5, 3, 0.04);
}
public function on_phase(_arg1:uint):void{
trace("Phase");
engine.music.phase.removeListener(on_phase);
engine.music.snare.removeListener(on_snare);
engine.music.bassDrum.removeListener(on_bd);
engine.music.clap.removeListener(on_clap);
engine.removeEffect(downscale);
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
_arg1.addEffect(downscale);
downscale.addEffect(audio);
audio.addEffect(superCurve);
_arg1.music.bassDrum.addListener(on_bd);
_arg1.music.phase.addListener(on_phase);
_arg1.music.snare.addListener(on_snare);
_arg1.partName = "CIRCLES";
overlay = (overlays[5] = new textures.Overlay().bitmapData);
overlays[0] = new textures.OverlayA().bitmapData;
overlays[1] = new textures.Overlay2().bitmapData;
overlays[2] = new textures.Overlay2A().bitmapData;
overlays[3] = new textures.Overlay3().bitmapData;
overlays[4] = new textures.Overlay3A().bitmapData;
_arg1.music.clap.addListener(on_clap);
}
public function on_bd(_arg1:uint):void{
scaleX = 127;
}
public function on_clap(_arg1:uint):void{
trace("CLAP!");
overlay = overlays.shift();
overlays.push(overlay);
}
public function on_snare(_arg1:int):void{
var _local2:int;
var _local3:int;
zoom = 0.1;
_local2 = ((Math.random() * 2) + 3);
_local3 = _local2;
do {
_local3 = ((Math.random() * 4) + 3);
} while (_local3 == _local2);
superCurve.reset(_local3, _local2, 0.04);
trace(_local3, _local2);
}
public function postPlay(_arg1:Number):void{
engine.buffer.draw(overlay);
}
public function prePlay(_arg1:Number):void{
zoom = (zoom - (zoom / 10));
scaleX = (scaleX - (scaleX / 5));
cnt = (cnt + _arg1);
audio.scaleX = scaleX;
}
}
}//package newpart
class textures {
public static var Overlay3:Class = textures_Overlay3;
public static var Overlay3A:Class = textures_Overlay3A;
public static var HairParticle:Class = textures_HairParticle;
public static var Overlay:Class = textures_Overlay;
public static var OverlayA:Class = textures_OverlayA;
public static var GlowParticle:Class = textures_GlowParticle;
public static var CubeTexture:Class = textures_CubeTexture;
public static var Kukka:Class = textures_Kukka;
public static var Overlay2:Class = textures_Overlay2;
public static var Overlay2A:Class = textures_Overlay2A;
private function textures(){
}
}
Section 133
//CreditsPart (newpart.CreditsPart)
package newpart {
import synch.*;
import flash.display.*;
import effects.blinds.*;
public class CreditsPart implements IDemoPart {
private var engine:DemoEngine;
private var fire:FireMedusaEffect;
private var credits:BitmapData;
public function on_phase(_arg1:uint):void{
engine.music.phase.removeListener(on_phase);
engine.removeEffect(fire);
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
credits = new textures_credits.CreditsFG().bitmapData;
_arg1.partName = "CREDITS";
_arg1.addEffect(fire);
_arg1.music.phase.addListener(on_phase);
}
public function preInit(_arg1:DemoEngine):void{
fire = new FireMedusaEffect();
fire.init(_arg1.buffer, {startX:500, startY:150, tentacleAmount:8, texture:new textures_credits.Fire().bitmapData});
}
public function postPlay(_arg1:Number):void{
engine.buffer.draw(credits);
}
public function prePlay(_arg1:Number):void{
}
}
}//package newpart
class textures_credits {
public static var CreditsFG:Class = textures_credits_CreditsFG;
public static var Fire:Class = textures_credits_Fire;
private function textures_credits(){
}
}
Section 134
//EfxPack1 (newpart.EfxPack1)
package newpart {
import synch.*;
import flash.display.*;
import effects.bparticles.*;
import effects.*;
import effects.post.*;
import effects.particles.*;
import effects.metaball.*;
public class EfxPack1 implements IDemoPart {
public var showBG:Boolean;// = true
private var meta:MetaParticlesEffect;
private var efxCounter:int;// = 0
private var down_circle:DowngradeEffect;
private var bpartC:Array;
private var radius:Number;// = 0
private var bpartS:Array;
private var resetCnt:int;// = 0
private var overlays:Array;
private var bpartIdx:int;// = 0
private var jump:Number;
private var multi:MultiEffect;
private var engine:DemoEngine;
private var bg:BitmapData;
private var circle:FakeMetaCircles;
private var bpart:BParticlesEffect;
private var overlay:BitmapData;
private var efxTime:int;// = 8
private var cnt:int;// = 0
private var moveSpeed:Number;// = 0
private var overlayCnt:int;// = 0
public function EfxPack1(_arg1:Number=0){
cnt = 0;
overlays = new Array(6);
moveSpeed = 0;
radius = 0;
overlayCnt = 0;
resetCnt = 0;
efxCounter = 0;
efxTime = 8;
bpartC = [2, 4, 5, 3];
bpartS = [0.5, 1, 1.2, 1.3];
bpartIdx = 0;
showBG = true;
super();
this.jump = _arg1;
}
public function onBd(_arg1:uint):void{
if ((efxCounter % efxTime) == 0){
multi.nextEffect();
switch (multi.activeEffect){
case bpart:
engine.partName = "3D PARTICLES";
break;
case meta:
engine.partName = "ID PARTICLES";
break;
case down_circle:
engine.partName = "METABALLS";
break;
};
};
if (multi.activeEffect == bpart){
showBG = false;
efxTime = 8;
if ((resetCnt % 4) == 0){
bpart.reset(bpartC[bpartIdx], false, true);
bpart.scale = bpartS[bpartIdx];
bpartIdx++;
resetCnt = 0;
};
resetCnt++;
} else {
showBG = true;
efxTime = 8;
};
if (multi.activeEffect == meta){
moveSpeed = 0.005;
};
efxCounter++;
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
down_circle.addEffect(circle);
multi.addEffect(bpart);
multi.addEffect(meta);
multi.addEffect(down_circle);
while (jump > 0) {
multi.nextEffect();
jump--;
};
_arg1.addEffect(multi);
bg = new textures_efxpack1.Background().bitmapData;
overlay = (overlays[5] = new textures_efxpack1.Overlay().bitmapData);
overlays[0] = new textures_efxpack1.OverlayA().bitmapData;
overlays[1] = new textures_efxpack1.Overlay2().bitmapData;
overlays[2] = new textures_efxpack1.Overlay2A().bitmapData;
overlays[3] = new textures_efxpack1.Overlay3().bitmapData;
overlays[4] = new textures_efxpack1.Overlay3A().bitmapData;
_arg1.music.bassDrum.addListener(onBd);
_arg1.music.phase.addListener(on_phase);
_arg1.music.clap.addListener(on_clap);
switch (multi.activeEffect){
case bpart:
_arg1.partName = "3D PARTICLES";
break;
case meta:
_arg1.partName = "ID PARTICLES";
break;
case down_circle:
_arg1.partName = "METABALLS";
break;
};
}
public function on_phase(_arg1:uint):void{
trace("Phase");
engine.music.bassDrum.removeListener(onBd);
engine.music.phase.removeListener(on_phase);
engine.music.clap.removeListener(on_clap);
engine.removeEffect(multi);
}
public function on_clap(_arg1:uint):void{
trace("CLAP!");
overlay = overlays.shift();
overlays.push(overlay);
}
public function preInit(_arg1:DemoEngine):void{
multi = new MultiEffect();
multi.init(_arg1.buffer);
meta = new MetaParticlesEffect();
meta.init(_arg1.buffer, {amount:200, texture:new BasicParticle(12)});
down_circle = new DowngradeEffect();
down_circle.init(_arg1.buffer, {scale:2, scaley:1, blendMode:BlendMode.ADD});
circle = new FakeMetaCircles();
circle.init(down_circle.input);
bpart = new BParticlesEffect();
bpart.init(_arg1.buffer, {texture:new Egg().bitmapData});
}
public function postPlay(_arg1:Number):void{
engine.buffer.draw(overlay);
}
public function prePlay(_arg1:Number):void{
moveSpeed = (moveSpeed - (moveSpeed / 20));
if (multi.activeEffect == meta){
meta.movespeed = (moveSpeed + 0.0005);
};
if (showBG){
engine.buffer.draw(bg);
};
}
}
}//package newpart
class textures_efxpack1 {
public static var Overlay3:Class = textures_efxpack1_Overlay3;
public static var Overlay3A:Class = textures_efxpack1_Overlay3A;
public static var HairParticle:Class = textures_efxpack1_HairParticle;
public static var Background:Class = textures_efxpack1_Background;
public static var Overlay:Class = textures_efxpack1_Overlay;
public static var OverlayA:Class = textures_efxpack1_OverlayA;
public static var GlowParticle:Class = textures_efxpack1_GlowParticle;
public static var Overlay2:Class = textures_efxpack1_Overlay2;
public static var Overlay2A:Class = textures_efxpack1_Overlay2A;
private function textures_efxpack1(){
}
}
Section 135
//EfxPack2 (newpart.EfxPack2)
package newpart {
import synch.*;
import flash.display.*;
import effects.bparticles.*;
import effects.*;
import effects.post.*;
import effects.cubes.*;
import effects.particles.*;
public class EfxPack2 implements IDemoPart {
private var engine:DemoEngine;
private var wire:WireParticlesEffect;
private var showBackground:Boolean;// = false
private var pCube:ParticleCube;
private var bg:BitmapData;
private var overlay:BitmapData;
private var efxCounter:int;// = 0
private var resetCnt:int;// = 0
private var showOverlay:Boolean;// = true
private var overlays:Array;
private var downscale:DowngradeEffect;
private var cnt:int;// = 0
private var jump:Number;
private var superCurve:TorusKnotEffect;
private var multi:MultiEffect;
public function EfxPack2(_arg1:Number=0){
cnt = 0;
overlays = new Array(6);
showOverlay = true;
showBackground = false;
resetCnt = 0;
efxCounter = 0;
super();
this.jump = _arg1;
}
public function onBd(_arg1:uint):void{
if ((efxCounter % 4) == 0){
multi.nextEffect();
showBackground = (multi.activeEffect == downscale);
switch (multi.activeEffect){
case pCube:
engine.partName = "PARTCUBE";
break;
case wire:
engine.partName = "DOF_MESH";
break;
case downscale:
engine.partName = "ANIM_KNOT";
break;
};
};
efxCounter++;
}
public function onEffect(_arg1:uint):void{
if (multi.activeEffect == downscale){
showBackground = false;
};
engine.music.effect.removeListener(onEffect);
engine.music.bassDrum.removeListener(onBd);
engine.removeEffect(multi);
engine.addEffect(downscale);
showBackground = true;
multi.activeEffect = downscale;
superCurve.reset(5, 4, 0.02);
engine.partName = "ANIM_KNOT";
}
public function preInit(_arg1:DemoEngine):void{
trace("EfxPack2 preInit");
multi = new MultiEffect();
wire = new WireParticlesEffect();
wire.init(_arg1.buffer, {texture:new Egg()});
downscale = new DowngradeEffect();
downscale.init(_arg1.buffer, {scale:2, forceTransparent:true});
superCurve = new TorusKnotEffect();
superCurve.init(downscale.input, {texture:new textures_efxpack2.Kukka().bitmapData});
superCurve.grow = true;
superCurve.reset(6, 5, 0.02);
downscale.addEffect(superCurve);
pCube = new ParticleCube();
pCube.init(_arg1.buffer, {cubeRadius:2, particle:new BasicParticle(32)});
bg = new textures_efxpack2.Background().bitmapData;
}
public function on_phase(_arg1:uint):void{
trace("Phase");
engine.music.bassDrum.removeListener(onBd);
engine.music.effect.removeListener(onEffect);
engine.music.phase.removeListener(on_phase);
engine.music.clap.removeListener(on_clap);
if (multi.activeEffect != null){
engine.removeEffect(multi);
};
engine.removeEffect(downscale);
multi.activeEffect = null;
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
multi.init(_arg1.buffer);
multi.addEffect(pCube);
multi.addEffect(downscale);
multi.addEffect(wire);
while (jump > 0) {
multi.nextEffect();
jump--;
};
_arg1.addEffect(multi);
showOverlay = true;
if (multi.activeEffect == downscale){
showBackground = true;
};
overlay = (overlays[5] = new textures_efxpack2.Overlay().bitmapData);
overlays[0] = new textures_efxpack2.OverlayA().bitmapData;
overlays[1] = new textures_efxpack2.Overlay2().bitmapData;
overlays[2] = new textures_efxpack2.Overlay2A().bitmapData;
overlays[3] = new textures_efxpack2.Overlay3().bitmapData;
overlays[4] = new textures_efxpack2.Overlay3A().bitmapData;
_arg1.music.phase.addListener(on_phase);
_arg1.music.effect.addListener(onEffect);
_arg1.music.bassDrum.addListener(onBd);
_arg1.music.clap.addListener(on_clap);
switch (multi.activeEffect){
case pCube:
_arg1.partName = "PARTCUBE";
break;
case wire:
_arg1.partName = "DOF_MESH";
break;
case downscale:
_arg1.partName = "ANIM_KNOT";
break;
};
}
public function prePlay(_arg1:Number):void{
if (showBackground){
engine.buffer.draw(bg);
};
}
public function on_clap(_arg1:uint):void{
trace("CLAP!");
overlay = overlays.shift();
overlays.push(overlay);
}
public function postPlay(_arg1:Number):void{
if (showOverlay){
engine.buffer.draw(overlay);
};
}
}
}//package newpart
class textures_efxpack2 {
public static var Overlay3:Class = textures_efxpack2_Overlay3;
public static var Overlay3A:Class = textures_efxpack2_Overlay3A;
public static var Overlay:Class = textures_efxpack2_Overlay;
public static var OverlayA:Class = textures_efxpack2_OverlayA;
public static var Background:Class = textures_efxpack2_Background;
public static var Kukka:Class = textures_efxpack2_Kukka;
public static var Overlay2:Class = textures_efxpack2_Overlay2;
public static var Overlay2A:Class = textures_efxpack2_Overlay2A;
private function textures_efxpack2(){
}
}
Section 136
//FinalePart (newpart.FinalePart)
package newpart {
import flash.events.*;
import synch.*;
import flash.display.*;
import flash.net.*;
import flash.ui.*;
public class FinalePart implements IDemoPart {
private var endBg:BitmapData;
private var engine:DemoEngine;
private function onClick(_arg1:Event):void{
navigateToURL(new URLRequest("http://evo.bombsquad.org"));
}
public function init(_arg1:DemoEngine):void{
Mouse.show();
this.engine = _arg1;
endBg = new texturesF.EndGfx().bitmapData;
_arg1.partName = "THE_END";
DemoFactory.demo.useHandCursor = true;
DemoFactory.demo.buttonMode = true;
DemoFactory.demo.addEventListener(MouseEvent.CLICK, onClick);
}
public function preInit(_arg1:DemoEngine):void{
}
public function prePlay(_arg1:Number):void{
engine.buffer.draw(endBg);
}
public function postPlay(_arg1:Number):void{
}
}
}//package newpart
class texturesF {
public static var EndGfx:Class = texturesF_EndGfx;
private function texturesF(){
}
}
Section 137
//GreetingsPart (newpart.GreetingsPart)
package newpart {
import synch.*;
import flash.display.*;
import effects.*;
import effects.post.*;
import effects.greets.*;
public class GreetingsPart implements IDemoPart {
private var engine:DemoEngine;
private var bloom:RadialBlurEffect;
private var bg:BitmapData;
private var dorandom:Boolean;// = false
private var greetPlayer:GreetingsPlayer;
private var halfBall:HalfballEffect;
private var dist:Number;// = 0
public function GreetingsPart(){
dorandom = false;
dist = 0;
super();
}
public function init(_arg1:DemoEngine):void{
bg = new textures_greetings.Background().bitmapData;
this.engine = _arg1;
bloom = new RadialBlurEffect();
bloom.init(_arg1.buffer, {transparent:true, blendMode:BlendMode.ADD, layers:10, outMode:BlendMode.NORMAL});
bloom.zoom = -0.03;
bloom.alphaFade = 0.2;
bloom.blurOffsetY = 0;
halfBall = new HalfballEffect();
halfBall.init(_arg1.buffer);
greetPlayer = new GreetingsPlayer();
greetPlayer.init(bloom.input, {});
_arg1.addEffect(halfBall);
_arg1.addEffect(bloom);
bloom.addEffect(greetPlayer);
_arg1.music.phase.addListener(on_phase);
_arg1.music.snare.addListener(on_snare);
_arg1.music.effect.addListener(on_effect);
_arg1.partName = "GREETINGS";
}
public function preInit(_arg1:DemoEngine):void{
}
private function on_phase(_arg1:uint):void{
engine.music.phase.removeListener(on_phase);
engine.music.snare.removeListener(on_snare);
engine.music.effect.removeListener(on_effect);
engine.removeEffect(halfBall);
engine.removeEffect(bloom);
}
private function on_effect(_arg1:uint):void{
dorandom = true;
}
public function postPlay(_arg1:Number):void{
}
public function prePlay(_arg1:Number):void{
if (dorandom){
dist = (dist + (_arg1 * 0.05));
halfBall.random();
engine.distortAmt = int(dist);
};
}
private function on_snare(_arg1:uint):void{
greetPlayer.next();
halfBall.flash();
}
}
}//package newpart
class textures_greetings {
public static var Background:Class = textures_greetings_Background;
private function textures_greetings(){
}
}
Section 138
//HairyTorusPart (newpart.HairyTorusPart)
package newpart {
import synch.*;
import effects.bparticles.*;
import effects.post.*;
public class HairyTorusPart implements IDemoPart {
private var engine:DemoEngine;
private var bloom:RadialBlurEffect;
private var zoom:Number;// = 0
private var downscale:DowngradeEffect;
private var cnt:int;// = 0
private var superCurve:TorusKnotEffect;
public function HairyTorusPart(){
cnt = 0;
zoom = 0;
super();
}
public function postPlay(_arg1:Number):void{
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
_arg1.addEffect(downscale);
downscale.addEffect(bloom);
bloom.addEffect(superCurve);
_arg1.music.bassDrum.addListener(on_bd);
_arg1.music.phase.addListener(on_phase);
_arg1.music.snare.addListener(on_snare);
_arg1.partName = "DOF TORUSKNOT";
}
public function preInit(_arg1:DemoEngine):void{
downscale = new DowngradeEffect();
downscale.init(_arg1.buffer, {scale:2});
bloom = new RadialBlurEffect();
bloom.init(downscale.input, {});
bloom.zoom = 0;
bloom.alphaFade = 0;
superCurve = new TorusKnotEffect();
superCurve.init(bloom.input, {transparent:true, texture:new textures.HairParticle().bitmapData});
superCurve.reset(5, 3, 0.04);
}
public function on_phase(_arg1:uint):void{
trace("Phase");
engine.music.phase.removeListener(on_phase);
engine.music.snare.removeListener(on_snare);
engine.music.bassDrum.removeListener(on_bd);
engine.removeEffect(downscale);
}
public function on_bd(_arg1:uint):void{
}
public function on_snare(_arg1:int):void{
var _local2:int;
var _local3:int;
zoom = 0.1;
_local2 = ((Math.random() * 2) + 3);
_local3 = _local2;
do {
_local3 = ((Math.random() * 4) + 3);
} while (_local3 == _local2);
superCurve.reset(_local3, _local2, 0.04);
trace(_local3, _local2);
}
public function prePlay(_arg1:Number):void{
zoom = (zoom - (zoom / 10));
cnt = (cnt + _arg1);
bloom.alphaFade = (zoom * 2);
bloom.zoom = zoom;
bloom.blurOffsetX = (Math.sin((cnt * (0.003 + (zoom * 0.01)))) * 200);
bloom.blurOffsetY = (Math.sin((cnt * (0.003 + (zoom * 0.01)))) * 100);
}
}
}//package newpart
class textures {
public static var GlowParticle:Class = textures_GlowParticle;
public static var Kukka:Class = textures_Kukka;
public static var HairParticle:Class = textures_HairParticle;
public static var CubeTexture:Class = textures_CubeTexture;
private function textures(){
}
}
Section 139
//IntroPart (newpart.IntroPart)
package newpart {
import synch.*;
import flash.display.*;
import flash.geom.*;
import effects.*;
import flash.filters.*;
public class IntroPart implements IDemoPart {
private var PresentsLogo:Class;
private var stage:Stage;
private var EvoLogo:Class;
private var lefx:LonkeroEffect;
private var demologo:DemoLogo;
private var presbufs:Array;
private var presblur:Number;// = 64
private var prespt:Point;
private var showPresents:Boolean;// = false
private var presfilt:BlurFilter;
private var demobmp:BitmapData;
private var showADHDTV:Boolean;// = false
private var _engine:DemoEngine;
private var evobmp:BitmapData;
private var cnt:int;// = 0
private var showEvoLogo:Boolean;// = false
private var presentsbmp:BitmapData;
public function IntroPart(){
EvoLogo = IntroPart_EvoLogo;
PresentsLogo = IntroPart_PresentsLogo;
presbufs = new Array();
showEvoLogo = false;
showPresents = false;
showADHDTV = false;
prespt = new Point();
presfilt = new BlurFilter(4, 1);
presblur = 64;
cnt = 0;
super();
}
public function init(_arg1:DemoEngine):void{
var _local2:int;
var _local3:BitmapData;
_engine = _arg1;
stage = _arg1.stage;
evobmp = new EvoLogo().bitmapData;
presentsbmp = new PresentsLogo().bitmapData;
showEvoLogo = true;
demologo = new DemoLogo();
_arg1.music.effect.addListener(onEffect);
_arg1.music.phase.addListener(onPhase);
_arg1.music.reso.addListener(onReso);
_arg1.music.clap.addListener(onClap);
_local2 = 0;
while (_local2 <= 64) {
_local3 = new BitmapData(800, 400, true, 0);
presfilt.blurX = _local2;
_local3.applyFilter(presentsbmp, _local3.rect, prespt, presfilt);
presbufs[_local2] = _local3;
_local2++;
};
_arg1.partName = "INTRO";
}
private function onEffect(_arg1:int):void{
_engine.music.effect.removeListener(onEffect);
_engine.music.effect.addListener(onEffect1);
_engine.addEffect(lefx);
_engine.partName = "INTRO";
}
public function preInit(_arg1:DemoEngine):void{
_engine = _arg1;
lefx = new LonkeroEffect();
lefx.init(_engine.buffer, {});
}
private function onReso(_arg1:int):void{
demologo.reso();
_engine.partName = ">ADHDTV";
}
private function onClap(_arg1:int):void{
}
private function onPhase(_arg1:int):void{
showEvoLogo = false;
showPresents = false;
showADHDTV = false;
_engine.removeEffect(lefx);
_engine.music.reso.removeListener(onReso);
_engine.music.clap.removeListener(onClap);
}
private function onEffect1(_arg1:int):void{
_engine.music.effect.removeListener(onEffect1);
_engine.music.effect.addListener(onEffect2);
showPresents = true;
trace("presents");
_engine.partName = "INTRO";
}
private function onEffect2(_arg1:int):void{
_engine.music.effect.removeListener(onEffect2);
showADHDTV = true;
_engine.partName = ">ADHDTV";
}
public function postPlay(_arg1:Number):void{
if (showPresents){
_engine.buffer.draw(presbufs[int(presblur)]);
presblur = (presblur - (presblur / 32));
};
if (showADHDTV){
demologo.play(_arg1);
_engine.buffer.draw(demologo);
};
}
public function prePlay(_arg1:Number):void{
cnt = (cnt + _arg1);
if (showEvoLogo){
if (demologo.bgdone){
showEvoLogo = (showPresents = false);
_engine.removeEffect(lefx);
} else {
_engine.buffer.draw(evobmp);
};
};
}
}
}//package newpart
import flash.events.*;
import flash.display.*;
import intro.*;
import flash.utils.*;
import flash.filters.*;
class IntroTvz extends IntroTvzAsset {
private var letters:IntroLettersAsset;
private var cnts:Array;
private var origY:Dictionary;
private var movingtvz:Array;
private var blurfilt:BlurFilter;
private var gcnt:int;// = 0
private var shp:Shape;
private var tittleShowed:Boolean;// = false
private function IntroTvz():void{
var _local1:int;
shp = new Shape();
cnts = new Array();
gcnt = 0;
movingtvz = new Array();
origY = new Dictionary();
tittleShowed = false;
letters = new IntroLettersAsset();
blurfilt = new BlurFilter(32, 1, 1);
super();
this.stop();
trace(this.numChildren);
addChildAt(shp, 0);
_local1 = 0;
while (_local1 < 32) {
cnts.push((Math.random() * 4294967295));
_local1++;
};
}
override public function nextFrame():void{
this.addEventListener(Event.ADDED, onAdded);
super.nextFrame();
}
private function onAdded(_arg1:Event):void{
var _local2:DisplayObject;
if (_arg1.target.parent != this){
return;
};
_local2 = DisplayObject(_arg1.target);
movingtvz.push(_local2);
origY[_local2] = _local2.y;
_local2.y = (_local2.y - 400);
movingtvz.sortOn("y");
}
public function reso():void{
blurfilt.blurX = 32;
}
public function lonkeros(_arg1:int):void{
var _local2:Graphics;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:Number;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
var _local12:DisplayObject;
var _local13:Number;
_local2 = shp.graphics;
gcnt = (gcnt + _arg1);
_local2.clear();
_local2.lineStyle(1, 0);
_local4 = 0;
_local4 = ((gcnt - 1000) * 0.05);
if (_local4 < 0){
_local4 = 0;
};
if (_local4 > 50){
_local4 = 50;
};
_local3 = 0;
while (_local3 < 32) {
_local6 = ((_local3 * Math.PI) / 4);
_local7 = (cnts[_local3] + (_arg1 * 0.25));
cnts[_local3] = _local7;
_local2.moveTo(400, 200);
_local8 = 0;
_local9 = 0;
_local10 = _local7;
_local11 = 0;
while (_local11 < _local4) {
_local7 = (_local7 - 34);
_local10 = (_local10 - 4);
_local8 = ((((Math.sin((_local7 * 0.003)) * 30) + (Math.sin((_local7 * 0.004)) * 30)) + (Math.sin((_local7 * 0.0021)) * 30)) + (Math.sin((_local7 * 0.0033)) * 30));
_local9 = ((((Math.sin((_local7 * 0.0031)) * 40) + (Math.sin((_local7 * -0.0045)) * 40)) + (Math.sin((_local7 * -0.002)) * 40)) + (Math.sin((_local7 * 0.0044)) * 40));
_local9 = (_local9 * Math.sin(((_local10 * 0.004) + _local6)));
_local8 = (_local8 * (Math.sin(((_local7 * 0.004) + _local6)) * Math.sin(((_local7 * 0.005) + _local6))));
if ((_local3 & 1)){
_local2.lineTo(((400 + _local8) - (11 * _local11)), (200 + _local9));
} else {
_local2.lineTo(((400 + _local8) + (11 * _local11)), (200 + _local9));
};
_local11++;
};
_local3++;
};
_local5 = 0;
_local3 = 0;
while (_local3 < movingtvz.length) {
_local12 = movingtvz[_local3];
trace(_local12);
if (_local12 == null){
} else {
_local12.y = (_local12.y + ((33 / _arg1) * ((_local3 + 5) * 2)));
if (_local12.y > origY[_local12]){
_local12.y = origY[_local12];
movingtvz[_local3] = null;
} else {
_local5++;
};
};
_local3++;
};
if (tittleShowed){
_local13 = blurfilt.blurX;
_local13 = (blurfilt.blurX - (_local13 / 10));
blurfilt.blurX = int(_local13);
letters.filters = [blurfilt];
};
if ((((_local5 == 0)) && (!(tittleShowed)))){
tittleShowed = true;
this.removeEventListener(Event.ADDED, onAdded);
addChild(letters);
letters.filters = [blurfilt];
};
}
}
class DemoLogo extends Sprite {
private var tvz:IntroTvz;
private var tvzcache:Bitmap;
private var cnt:int;// = 0
private var shp:Shape;
private function DemoLogo():void{
var _local1:Bitmap;
shp = new Shape();
tvz = new IntroTvz();
cnt = 0;
super();
tvz.stop();
_local1 = new Bitmap(new IntroBG(800, 400));
tvzcache = new Bitmap(new BitmapData(800, 400, true, 0));
addChild(_local1);
addChild(tvzcache);
tvzcache.bitmapData.draw(tvz);
tvz.nextFrame();
this.mask = shp;
}
public function play(_arg1:int):void{
var _local2:Graphics;
cnt = (cnt + _arg1);
if (!bgdone){
_local2 = shp.graphics;
_local2.beginFill(0);
_local2.drawCircle(400, 200, (cnt * 0.5));
_local2.endFill();
this.mask = shp;
} else {
if (this.mask != null){
removeChild(tvzcache);
addChild(tvz);
};
this.mask = null;
};
if (this.mask == null){
tvz.lonkeros(_arg1);
};
}
public function get bgdone():Boolean{
return (((cnt * 0.5) > 500));
}
public function reso():void{
tvz.reso();
}
}
Section 140
//IntroPart_EvoLogo (newpart.IntroPart_EvoLogo)
package newpart {
import mx.core.*;
public class IntroPart_EvoLogo extends BitmapAsset {
}
}//package newpart
Section 141
//IntroPart_PresentsLogo (newpart.IntroPart_PresentsLogo)
package newpart {
import mx.core.*;
public class IntroPart_PresentsLogo extends BitmapAsset {
}
}//package newpart
Section 142
//RaytracePart (newpart.RaytracePart)
package newpart {
import synch.*;
import flash.display.*;
import effects.post.*;
import effects.tunnel.*;
public class RaytracePart implements IDemoPart {
private var engine:DemoEngine;
private var superShape:SuperShapeTunnelEffect;
private var downscale:DowngradeEffect;
private var cnt:int;// = 0
private var overlay:BitmapData;
public function RaytracePart(){
cnt = 0;
super();
}
public function on_effect(_arg1:uint):void{
superShape.speed1 = -(superShape.speed1);
superShape.speed2 = -(superShape.speed2);
superShape.speed3 = -(superShape.speed3);
superShape.texture = new texturesRP.Texture2().bitmapData;
superShape.normal = true;
engine.partName = "RT RAYTRACE";
}
public function preInit(_arg1:DemoEngine):void{
}
public function postPlay(_arg1:Number):void{
engine.buffer.draw(overlay);
}
public function on_phase(_arg1:uint):void{
engine.music.phase.removeListener(on_phase);
engine.music.effect.removeListener(on_effect);
engine.removeEffect(downscale);
}
public function prePlay(_arg1:Number):void{
}
public function init(_arg1:DemoEngine):void{
this.engine = _arg1;
downscale = new DowngradeEffect();
downscale.init(_arg1.buffer, {scale:5, smooth:true});
superShape = new SuperShapeTunnelEffect();
superShape.init(downscale.input, {texture:new texturesRP.Texture().bitmapData, texture2:new texturesRP.Texture2().bitmapData});
overlay = new texturesRP.Overlay().bitmapData;
downscale.addEffect(superShape);
_arg1.addEffect(downscale);
_arg1.music.phase.addListener(on_phase);
_arg1.music.effect.addListener(on_effect);
_arg1.partName = "RT RAYTRACE";
}
}
}//package newpart
class texturesRP {
public static var Overlay:Class = texturesRP_Overlay;
public static var Texture2:Class = texturesRP_Texture2;
public static var Texture:Class = texturesRP_Texture;
private function texturesRP(){
}
}
Section 143
//SuperShapePart (newpart.SuperShapePart)
package newpart {
import synch.*;
import effects.bparticles.*;
import effects.discotiles.*;
public class SuperShapePart implements IDemoPart {
private var engine:DemoEngine;
private var superShape:SuperShapeEffect;
private var disco:DiscoTilesEffect;
public function on_bd(_arg1:uint):void{
engine.partName = "SUPERSHAPES";
}
public function on_phase(_arg1:uint):void{
engine.music.phase.removeListener(on_phase);
engine.music.effect.removeListener(on_effect);
engine.music.bassDrum.removeListener(on_bd);
engine.removeEffect(superShape);
engine.removeEffect(disco);
}
public function init(_arg1:DemoEngine):void{
_arg1.addEffect(disco);
_arg1.addEffect(superShape);
_arg1.music.phase.addListener(on_phase);
_arg1.music.effect.addListener(on_effect);
_arg1.partName = "SUPERSHAPES";
}
public function on_effect(_arg1:uint):void{
superShape.ratio = 0;
superShape.shape1a.m = 6;
superShape.shape1a.n1 = 60;
superShape.shape1a.n2 = 55;
superShape.shape1a.n3 = 1000;
superShape.shape1b.m = 6;
superShape.shape1a.n1 = 250;
superShape.shape1a.n2 = 100;
superShape.shape1a.n3 = 100;
superShape.shape2a.m = 5.7;
superShape.shape1a.n1 = 0.5;
superShape.shape1a.n2 = 1;
superShape.shape1a.n3 = 2.5;
superShape.shape2b.m = 10;
superShape.shape1a.n1 = 3;
superShape.shape1a.n2 = 0.2;
superShape.shape1a.n3 = 1;
superShape.speed = 0.05;
engine.music.bassDrum.addListener(on_bd);
}
public function preInit(_arg1:DemoEngine):void{
this.engine = _arg1;
superShape = new SuperShapeEffect();
superShape.init(_arg1.buffer, {segmentsW:15, segmentsH:30, radius:100, speed:0});
superShape.ratio = 0;
superShape.shape1a.m = 6;
superShape.shape1a.n1 = 60;
superShape.shape1a.n2 = 55;
superShape.shape1a.n3 = 1000;
superShape.shape2a.m = 6;
superShape.shape2a.n1 = 250;
superShape.shape2a.n2 = 100;
superShape.shape2a.n3 = 100;
superShape.shape1a.m = 5;
superShape.shape1a.n1 = 0.1;
superShape.shape1a.n2 = 1.7;
superShape.shape1a.n3 = 1.7;
superShape.shape2a.m = 1;
superShape.shape2a.n1 = 0.3;
superShape.shape2a.n2 = 0.5;
superShape.shape2a.n3 = 0.5;
superShape.speed = 0.05;
disco = new DiscoTilesEffect();
disco.init(_arg1.buffer, {xoffset:-64, yoffset:-20, tilew:24, tileh:6, tileSize:96, tilemask:new textures5.Discomask().bitmapData, colormap:new textures5.Discomap().bitmapData});
}
public function postPlay(_arg1:Number):void{
}
public function prePlay(_arg1:Number):void{
}
}
}//package newpart
class textures5 {
public static var Discomap:Class = textures5_Discomap;
public static var Discomask:Class = textures5_Discomask;
private function textures5(){
}
}
Section 144
//TunnelPart (newpart.TunnelPart)
package newpart {
import synch.*;
import flash.display.*;
import effects.bparticles.*;
import effects.post.*;
public class TunnelPart implements IDemoPart {
private var engine:DemoEngine;
private var down_tunnel:DowngradeEffect;
private var overlay:BitmapData;
private var ptunnel:ParticleTunnelEffect;
public function preInit(_arg1:DemoEngine):void{
down_tunnel = new DowngradeEffect();
down_tunnel.init(_arg1.buffer, {scale:2});
ptunnel = new ParticleTunnelEffect();
ptunnel.init(down_tunnel.input, {amount:60, part:new textures_tunnel.Hair().bitmapData, texture:new textures_tunnel.Kukka().bitmapData});
down_tunnel.addEffect(ptunnel);
}
public function postPlay(_arg1:Number):void{
engine.buffer.draw(overlay);
}
public function on_phase(_arg1:uint):void{
trace("Phase");
engine.music.phase.removeListener(on_phase);
engine.removeEffect(down_tunnel);
}
public function prePlay(_arg1:Number):void{
}
public function init(_arg1:DemoEngine):void{
overlay = new textures_tunnel.Overlay().bitmapData;
this.engine = _arg1;
_arg1.addEffect(down_tunnel);
_arg1.music.phase.addListener(on_phase);
_arg1.partName = "TUNNEL";
}
}
}//package newpart
class textures_tunnel {
public static var Hair:Class = textures_tunnel_Hair;
public static var Kukka:Class = textures_tunnel_Kukka;
public static var Tunnel:Class = textures_tunnel_Tunnel;
public static var Overlay:Class = textures_tunnel_Overlay;
private function textures_tunnel(){
}
}
Section 145
//TwisterPart (newpart.TwisterPart)
package newpart {
import synch.*;
import effects.post.*;
import effects.twister.*;
public class TwisterPart implements IDemoPart {
private var downscale:DowngradeEffect;
private var engine:DemoEngine;
private var twister:SuperShapeTwisterEffect;
private function on_phase(_arg1:uint):void{
engine.music.phase.removeListener(on_phase);
engine.removeEffect(twister);
}
public function preInit(_arg1:DemoEngine):void{
this.engine = _arg1;
}
public function postPlay(_arg1:Number):void{
}
public function prePlay(_arg1:Number):void{
}
public function init(_arg1:DemoEngine):void{
twister = new SuperShapeTwisterEffect();
twister.init(_arg1.buffer, {});
_arg1.addEffect(twister);
_arg1.music.phase.addListener(on_phase);
_arg1.partName = "SS TWISTER";
}
}
}//package newpart
Section 146
//PlayAsset (play.PlayAsset)
package play {
import flash.display.*;
public dynamic class PlayAsset extends MovieClip {
public var adhdtv:MovieClip;
public var windowed:MovieClip;
public var fullscreen:MovieClip;
}
}//package play
Section 147
//AbstractDemoEffect (synch.AbstractDemoEffect)
package synch {
import flash.display.*;
public class AbstractDemoEffect implements IDemoEffect {
protected var _buffer:BitmapData;
public function set output(_arg1:BitmapData):void{
_buffer = _arg1;
}
public function init(_arg1:BitmapData, _arg2:Object=null):void{
_buffer = _arg1;
}
public function play(_arg1:Number):void{
}
}
}//package synch
Section 148
//AbstractPostProcessor (synch.AbstractPostProcessor)
package synch {
import flash.display.*;
import flash.geom.*;
public class AbstractPostProcessor implements IPostProcessor {
protected var buffer:BitmapData;
private var childEffects:Array;
protected var scaler:Matrix;
protected var _input:BitmapData;
public function AbstractPostProcessor(){
childEffects = new Array();
}
public function set output(_arg1:BitmapData):void{
this.buffer = _arg1;
}
protected function copyInput():void{
buffer.lock();
buffer.fillRect(buffer.rect, 0);
buffer.draw(input, scaler);
buffer.unlock();
}
public function get input():BitmapData{
return (_input);
}
public function addEffect(_arg1:IDemoEffect):void{
childEffects.push(_arg1);
}
public function play(_arg1:Number):void{
var _local2:IDemoEffect;
for each (_local2 in childEffects) {
_local2.play(_arg1);
};
}
public function removeEffect(_arg1:IDemoEffect):void{
var tmp:Function;
var efx = _arg1;
tmp = function (_arg1, _arg2:int, _arg3:Array):Boolean{
return (!((_arg1 == efx)));
};
childEffects = childEffects.filter(tmp);
}
public function init(_arg1:BitmapData, _arg2:Object=null):void{
if (_input == null){
_input = new BitmapData(_arg1.width, _arg1.height, false, 0);
};
buffer = _arg1;
}
}
}//package synch
Section 149
//DemoEngine (synch.DemoEngine)
package synch {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.geom.*;
import effects.*;
import flash.utils.*;
import effects.fire.*;
import flash.ui.*;
public class DemoEngine extends Bitmap {
private var curPhase:uint;// = 0
private var textRender:BitmapData;
public var music:Music;
public var distortAmt:Number;// = 0
private var currentEffects:Array;
private var frameListeners:Array;
public var buffer:BitmapData;
private var curPart:IDemoPart;
private var currentEffect:IDemoEffect;
private var _partName:String;// = ""
private var lastTime:uint;
private var cshown:int;// = 5000
private var distort:DistortEffect;
private var fmt:TextFormat;
private var curTrigId:uint;
private var parts:Array;
private var postProcessors:Dictionary;
private var textMat:Matrix;
public function DemoEngine(_arg1:int, _arg2:int){
curPhase = 0;
textMat = new Matrix();
distortAmt = 0;
cshown = 5000;
_partName = "";
fmt = new TextFormat("DDPetit08", 80, 0xFF00, true);
buffer = new BitmapData(_arg1, _arg2, false, 0);
super(buffer);
parts = new Array();
currentEffects = new Array();
frameListeners = new Array();
distort = new DistortEffect();
distort.init(buffer, {short:true});
}
public function addPart(_arg1:IDemoPart):void{
parts.push(_arg1);
_arg1.preInit(this);
}
public function removeEffect(_arg1:IDemoEffect):void{
var tmp:Function;
var efx = _arg1;
tmp = function (_arg1, _arg2:int, _arg3:Array):Boolean{
return (!((_arg1 == efx)));
};
currentEffects = currentEffects.filter(tmp);
}
public function set partName(_arg1:String):void{
var _local2:TextRender;
if (_arg1 != _partName){
cshown = 0;
};
_partName = _arg1;
_local2 = new TextRender(_partName.toUpperCase(), fmt);
_local2.blendMode = BlendMode.NORMAL;
textRender = _local2.bitmapData;
textMat.identity();
textMat.tx = ((buffer.width - (textRender.width / 2)) - 10);
textMat.ty = 10;
distortAmt = 128;
}
public function startDemo():void{
Mouse.hide();
music.play((0 * 1000));
lastTime = getTimer();
addEventListener("enterFrame", onFrame);
curPart = parts[curPhase];
curPart.init(this);
}
public function addEffect(_arg1:IDemoEffect):void{
currentEffects.push(_arg1);
}
private function onFrame(_arg1:Event):void{
var _local2:uint;
var _local3:uint;
var _local4:IDemoEffect;
buffer.lock();
buffer.fillRect(buffer.rect, 0);
music.tick();
if (curPart == null){
buffer.unlock();
return;
};
_local2 = getTimer();
_local3 = (_local2 - lastTime);
curPart.prePlay(_local3);
for each (_local4 in currentEffects) {
_local4.play(_local3);
};
curPart.postPlay(_local3);
lastTime = _local2;
cshown = (cshown + _local3);
if (cshown < 2000){
buffer.draw(textRender, textMat);
};
buffer.unlock();
if (distortAmt > 4){
distort.scaleX = distortAmt;
distort.play(0);
distortAmt = (distortAmt - (distortAmt / 3));
};
}
private function onPhase(_arg1:uint):void{
trace("Engine phase!", curPhase);
curPhase = (curPhase + 1);
curPart = parts[curPhase];
if (curPart == null){
return;
};
curPart.init(this);
}
public function setMusic(_arg1:Music):void{
this.music = _arg1;
_arg1.phase.addListener(onPhase);
}
}
}//package synch
Section 150
//IDemoEffect (synch.IDemoEffect)
package synch {
import flash.display.*;
public interface IDemoEffect {
function init(_arg1:BitmapData, _arg2:Object=null):void;
function set output(_arg1:BitmapData):void;
function play(_arg1:Number):void;
}
}//package synch
Section 151
//IDemoPart (synch.IDemoPart)
package synch {
public interface IDemoPart {
function init(_arg1:DemoEngine):void;
function preInit(_arg1:DemoEngine):void;
function postPlay(_arg1:Number):void;
function prePlay(_arg1:Number):void;
}
}//package synch
Section 152
//IPostProcessor (synch.IPostProcessor)
package synch {
import flash.display.*;
public interface IPostProcessor extends IDemoEffect {
function removeEffect(_arg1:IDemoEffect):void;
function addEffect(_arg1:IDemoEffect):void;
function get input():BitmapData;
}
}//package synch
Section 153
//Music (synch.Music)
package synch {
public class Music extends Sequencer {
public var quickSwitch:Tick;
public var greet:Tick;
public var phase:Tick;
public var snare:Tick;
public var bassDrum:Tick;
public var effect:Tick;
public var reso:Tick;
public var zoom:Tick;
public var clap:Tick;
public var flash:Tick;
public var longflash:Tick;
public function Music(){
phase = new Tick();
zoom = new Tick();
greet = new Tick();
snare = new Tick();
bassDrum = new Tick();
effect = new Tick();
quickSwitch = new Tick();
flash = new Tick();
longflash = new Tick();
reso = new Tick();
clap = new Tick();
super();
setBPM(130);
setOffset(-120);
makeTriggers();
}
public function makeTriggers():void{
var _local1:TickPattern;
var _local2:TickPattern;
var _local3:TickPattern;
var _local4:TickPattern;
var _local5:TickPattern;
var _local6:TickPattern;
var _local7:TickPattern;
var _local8:TickPattern;
var _local9:TickPattern;
var _local10:TickPattern;
var _local11:TickPattern;
var _local12:TickPattern;
var _local13:TickPattern;
var _local14:TickPattern;
var _local15:TickPattern;
var _local16:TickPattern;
var _local17:TickPattern;
var _local18:TickPattern;
var _local19:TickPattern;
var _local20:TickPattern;
var _local21:TickPattern;
var _local22:int;
var _local23:int;
_local1 = new TickPattern(phase, 0);
_local2 = new TickPattern(phase, 0, 2);
_local3 = new TickPattern(phase, 1);
_local4 = new TickPattern(phase, 0, 1, 2, 3);
_local5 = new TickPattern(effect, 0);
_local6 = new TickPattern(effect, 2);
_local7 = new TickPattern(effect, 3);
_local8 = new TickPattern(reso, 0.5, 1.5);
_local9 = new TickPattern(clap, 0, 1.5, 2, 3);
_local10 = new TickPattern(clap, 1, 1.25, 2.5, 2.75, 3, 3.25);
_local11 = new TickPattern(quickSwitch, 3.75);
_local12 = new TickPattern(quickSwitch, 0);
_local13 = new TickPattern(bassDrum, 0, 1, 2, 3);
_local14 = new TickPattern(bassDrum, 0, 2);
_local15 = new TickPattern(bassDrum, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5);
_local16 = new TickPattern(snare, 1, 3);
_local17 = new TickPattern(snare, 3);
_local18 = new TickPattern(flash, 0, 1, 2, 3);
_local19 = new TickPattern(flash, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5);
_local20 = new TickPattern(flash, 0);
_local21 = new TickPattern(longflash, 0);
addTickers();
addTickers();
addTickers();
addTickers(_local6);
addTickers(_local9);
addTickers(_local5, _local9);
addTickers(_local9);
addTickers(_local9);
addTickers(_local9);
addTickers(_local5, _local9);
addTickers();
addTickers();
addTickers(_local8);
addTickers(_local8);
addTickers(_local8);
addTickers(_local8);
addTickers(_local1, _local13, _local20, _local9);
addTickers(_local13, _local9);
addTickers(_local13, _local9);
addTickers(_local13, _local9);
addTickers(_local13, _local5, _local20);
addTickers(_local13, _local9);
addTickers(_local13, _local9);
addTickers(_local13, _local9);
addTickers(_local1, _local13, _local20, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10, _local20);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local1, _local14, _local10);
addTickers(_local14, _local10);
addTickers(_local14, _local10);
addTickers(_local14, _local10);
addTickers(_local1, _local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local1, _local13, _local20, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local13, _local5, _local17);
addTickers(_local1);
addTickers();
addTickers();
addTickers();
addTickers();
addTickers();
addTickers();
addTickers();
addTickers(_local1, _local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local16);
addTickers(_local5, _local16);
addTickers();
addTickers();
addTickers();
addTickers(_local1, _local13, _local10, _local20);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local13, _local10);
addTickers(_local5, _local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local1, _local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local1, _local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local5, _local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local13);
addTickers(_local2, _local13, _local20);
addTickers(_local2, _local13, _local20);
addTickers(_local2, _local13, _local20);
addTickers(_local2, _local13, _local20);
addTickers(_local4, _local13, _local18);
addTickers(_local4, _local13, _local18);
addTickers(_local4, _local13, _local18);
addTickers(_local4, _local13, _local18);
addTickers(_local1, _local21);
}
}
}//package synch
Section 154
//Sequencer (synch.Sequencer)
package synch {
import flash.media.*;
import flash.utils.*;
public class Sequencer extends Sound {
private var lastRealTickTime:Number;// = 0
private var tickTime:Number;
private var tickOffset:Number;// = 0
private var offset:Number;// = 0
private var tickListeners:Array;
private var lastTickTime:Number;// = 0
private var tickers:Array;
private var tickListenerList:Array;
private var startTime:Number;// = 0
private var sndChannel:SoundChannel;
private var bpm:Number;// = 125
private var truePlay:Boolean;// = true
private var missTime:Number;
private var tickAddPos:Number;// = 0
private var tickListenerId:uint;// = 0
private var tickPos:Number;// = 0
private var intervalId:Number;
private var isPlay:Boolean;// = false
public function Sequencer(){
bpm = 125;
isPlay = false;
offset = 0;
tickListeners = new Array();
tickListenerList = new Array();
tickListenerId = 0;
tickers = new Array();
tickAddPos = 0;
tickPos = 0;
startTime = 0;
truePlay = true;
tickOffset = 0;
lastTickTime = 0;
lastRealTickTime = 0;
super();
}
public function stop():void{
isPlay = false;
this.stop();
clearInterval(intervalId);
}
public function setOffset(_arg1:Number):void{
this.offset = _arg1;
}
public function setBPM(_arg1:Number):void{
this.bpm = _arg1;
this.tickTime = (60000 / (_arg1 * 4));
missTime = tickTime;
}
public function tick():void{
var _local1:Number;
var _local2:Number;
if (!isPlay){
return;
};
if (truePlay){
_local1 = ((sndChannel.position - offset) - lastTickTime);
lastTickTime = (sndChannel.position - offset);
} else {
_local2 = (getTimer() - startTime);
_local1 = ((_local2 - offset) - lastTickTime);
lastTickTime = (_local2 - offset);
};
missTime = (missTime - _local1);
while (missTime < -(tickOffset)) {
tickOffset = (missTime + tickOffset);
missTime = tickTime;
fireTick();
};
}
override public function play(_arg1:Number=0, _arg2:int=0, _arg3:SoundTransform=null):SoundChannel{
isPlay = true;
if (truePlay){
sndChannel = super.play(_arg1, _arg2, _arg3);
} else {
_arg1 = getTimer();
};
return (sndChannel);
}
public function addTickers(... _args):void{
var _local2:TickPattern;
var _local3:int;
var _local4:Array;
for each (_local2 in _args) {
_local3 = 0;
while (_local3 < _local2.ticks.length) {
_local4 = tickers[(_local2.ticks[_local3] + tickAddPos)];
if (_local4 == null){
_local4 = new Array();
};
_local4.push(_local2.ticker);
tickers[(_local2.ticks[_local3] + tickAddPos)] = _local4;
_local3++;
};
};
tickAddPos = (tickAddPos + (4 * 4));
}
public function set isTruePlay(_arg1:Boolean):void{
this.truePlay = _arg1;
}
public function fireTick():void{
var _local1:Tick;
if (tickers[tickPos] != undefined){
for each (_local1 in tickers[tickPos]) {
_local1.run(tickPos);
};
};
tickPos = (tickPos + 1);
}
}
}//package synch
Section 155
//Tick (synch.Tick)
package synch {
public class Tick {
private var listeners:Array;
public function Tick(){
listeners = new Array();
super();
}
public function addListener(_arg1:Function):void{
listeners.push(_arg1);
}
public function removeListener(_arg1:Function):void{
var tmp:Function;
var func = _arg1;
tmp = function (_arg1, _arg2:int, _arg3:Array):Boolean{
return (!((_arg1 == func)));
};
listeners = listeners.filter(tmp);
}
public function run(_arg1:uint):void{
var _local2:int;
_local2 = listeners.length;
while (_local2 > 0) {
_local2--;
var _local3 = listeners;
_local3[_local2](_arg1);
};
}
}
}//package synch
Section 156
//TickPattern (synch.TickPattern)
package synch {
public class TickPattern {
public var ticks:Array;
public var ticker:Tick;
public function TickPattern(_arg1:Tick, ... _args){
var _local3:int;
ticks = new Array();
super();
this.ticker = _arg1;
_local3 = 0;
while (_local3 < _args.length) {
this.ticks.push(int(Math.floor((_args[_local3] * 4))));
_local3++;
};
}
}
}//package synch
Section 157
//_FontFaceRules (_FontFaceRules)
package {
import mx.core.*;
import flash.display.*;
public class _FontFaceRules extends Sprite {
private static var _embed__font_D3Curve_medium_normal_1443359732:Class = _FontFaceRules__embed__font_D3Curve_medium_normal_1443359732;
private static var _embed__font_DDPetit08_medium_normal_1771948071:Class = _FontFaceRules__embed__font_DDPetit08_medium_normal_1771948071;
public static function init(_arg1:IFlexModuleFactory):void{
}
}
}//package
Section 158
//_FontFaceRules__embed__font_D3Curve_medium_normal_1443359732 (_FontFaceRules__embed__font_D3Curve_medium_normal_1443359732)
package {
import mx.core.*;
public class _FontFaceRules__embed__font_D3Curve_medium_normal_1443359732 extends FontAsset {
}
}//package
Section 159
//_FontFaceRules__embed__font_DDPetit08_medium_normal_1771948071 (_FontFaceRules__embed__font_DDPetit08_medium_normal_1771948071)
package {
import mx.core.*;
public class _FontFaceRules__embed__font_DDPetit08_medium_normal_1771948071 extends FontAsset {
}
}//package
Section 160
//DemoFactory (DemoFactory)
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class DemoFactory extends MovieClip {
public static var demo:DemoFactory;
public function DemoFactory(){
stop();
stage.scaleMode = StageScaleMode.NO_SCALE;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.quality = "medium";
stage.frameRate = 31;
demo = this;
}
private function init():void{
var _local1:Class;
var _local2:Object;
_local1 = Class(getDefinitionByName("DemoMain"));
if (_local1){
_local2 = new (_local1);
addChild((_local2 as DisplayObject));
};
}
public function onEnterFrame(_arg1:Event):void{
var _local2:Number;
graphics.clear();
if (framesLoaded == totalFrames){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
init();
} else {
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
graphics.beginFill(0xFFFFFF);
graphics.drawRect(0, ((400 / 2) - 10), (800 * _local2), 20);
graphics.endFill();
};
}
}
}//package
Section 161
//DemoMain (DemoMain)
package {
import flash.events.*;
import synch.*;
import flash.display.*;
import flash.text.*;
import effects.*;
import flash.utils.*;
import newpart.*;
import flash.net.*;
public class DemoMain extends Sprite {
private var music:Music;
private var engine:DemoEngine;
private var lastTime:int;
private var started:Boolean;// = false
private var flashEffect:FlashEffect;
private var _lasttime:int;// = 0
private var playbuttons:PlayDemo;
private var fps:TextField;
public function DemoMain(){
fps = new TextField();
_lasttime = 0;
started = false;
playbuttons = new PlayDemo();
super();
generateParts();
music = new Music();
music.addEventListener("complete", songLoaded);
music.addEventListener(ProgressEvent.PROGRESS, progress);
music.addEventListener("ioError", songLoaded);
music.load(new URLRequest("tekk4.mp3"));
playbuttons.addEventListener("startDemo", startDemo);
}
public function progress(_arg1:ProgressEvent):void{
var _local2:Number;
this.graphics.clear();
if ((((_arg1.bytesLoaded == _arg1.bytesTotal)) && (!(started)))){
started = true;
engine.setMusic(music);
engine.music.flash.addListener(onFlash);
engine.music.longflash.addListener(onLongFlash);
showPlayButtons();
return;
};
_local2 = (_arg1.bytesLoaded / _arg1.bytesTotal);
graphics.beginFill(0xFFFFFF);
graphics.drawRect((800 * _local2), ((400 / 2) - 10), (800 * (1 - _local2)), 20);
graphics.endFill();
}
public function onFlash(_arg1:int):void{
if (flashEffect.done){
engine.addEffect(flashEffect);
engine.addEventListener(Event.ENTER_FRAME, onFlashFrame);
};
flashEffect.speed = 1;
flashEffect.reset();
}
public function generateParts():void{
engine = new DemoEngine(800, 400);
engine.buffer.lock();
flashEffect = new FlashEffect();
flashEffect.init(engine.buffer);
engine.addPart(new IntroPart());
engine.addPart(new RaytracePart());
engine.addPart(new EfxPack1(0));
engine.addPart(new CirclePart());
engine.addPart(new CreditsPart());
engine.addPart(new HairyTorusPart());
engine.addPart(new TwisterPart());
engine.addPart(new GreetingsPart());
engine.addPart(new EfxPack2(0));
engine.addPart(new TunnelPart());
engine.addPart(new SuperShapePart());
engine.addPart(new TunnelPart());
engine.addPart(new EfxPack2(2));
engine.addPart(new EfxPack2(1));
engine.addPart(new EfxPack2(0));
engine.addPart(new GreetingsPart());
engine.addPart(new TwisterPart());
engine.addPart(new HairyTorusPart());
engine.addPart(new CirclePart());
engine.addPart(new EfxPack1(2));
engine.addPart(new EfxPack1(1));
engine.addPart(new EfxPack1(0));
engine.addPart(new RaytracePart());
engine.addPart(new TunnelPart());
engine.addPart(new EfxPack2(2));
engine.addPart(new EfxPack2(1));
engine.addPart(new EfxPack2(0));
engine.addPart(new GreetingsPart());
engine.addPart(new TwisterPart());
engine.addPart(new HairyTorusPart());
engine.addPart(new CreditsPart());
engine.addPart(new EfxPack1(2));
engine.addPart(new EfxPack1(1));
engine.addPart(new EfxPack1(0));
engine.addPart(new RaytracePart());
engine.addPart(new FinalePart());
engine.buffer.fillRect(engine.buffer.rect, 0);
engine.buffer.unlock();
}
private function showPlayButtons():void{
addChild(playbuttons);
}
private function startDemo(_arg1:Event):void{
started = true;
removeChild(playbuttons);
addChild(engine);
engine.startDemo();
}
public function songLoaded(_arg1:Event):void{
if (_arg1.type == "ioError"){
engine.setMusic(music);
music.isTruePlay = false;
showPlayButtons();
};
engine.music.flash.addListener(onFlash);
engine.music.longflash.addListener(onLongFlash);
trace("demo started");
}
public function onLongFlash(_arg1:int):void{
if (flashEffect.done){
engine.addEffect(flashEffect);
engine.addEventListener(Event.ENTER_FRAME, onFlashFrame);
};
flashEffect.speed = 4;
flashEffect.reset();
}
public function onEnterFrame(_arg1:Event):void{
var _local2:uint;
_local2 = getTimer();
fps.text = int((1000 / (_local2 - _lasttime))).toString();
_lasttime = _local2;
}
private function onFlashFrame(_arg1:Event):void{
if (flashEffect == null){
engine.removeEventListener(Event.ENTER_FRAME, onFlashFrame);
};
if (flashEffect.done){
trace("Removink");
engine.removeEffect(flashEffect);
engine.removeEventListener(Event.ENTER_FRAME, onFlashFrame);
};
}
}
}//package
Section 162
//models_GeoballModel (models_GeoballModel)
package {
import mx.core.*;
public class models_GeoballModel extends ByteArrayAsset {
}
}//package
Section 163
//models_HalfBallModel1 (models_HalfBallModel1)
package {
import mx.core.*;
public class models_HalfBallModel1 extends ByteArrayAsset {
}
}//package
Section 164
//PlayDemo (PlayDemo)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import play.*;
public class PlayDemo extends PlayAsset {
private var fullover:Boolean;// = false
private var fullScreenTimer:Timer;
private var cnt:int;// = 0
private var winfilt:GlowFilter;
private var fullfilt:GlowFilter;
private var winover:Boolean;// = false
private var timerField:TextField;
public function PlayDemo():void{
winfilt = new GlowFilter(0xFFFFFF, 1, 0, 0, 2, 1);
fullfilt = new GlowFilter(0xFFFFFF, 1, 0, 0, 2, 1);
fullover = false;
winover = false;
cnt = 0;
super();
windowed.buttonMode = true;
windowed.useHandCursor = true;
windowed.addEventListener(MouseEvent.CLICK, onWindowed);
windowed.addEventListener(MouseEvent.MOUSE_OVER, onWindowedOver);
windowed.addEventListener(MouseEvent.MOUSE_OUT, onWindowedOut);
fullscreen.buttonMode = true;
fullscreen.useHandCursor = true;
fullscreen.addEventListener(MouseEvent.CLICK, onFullscreen);
fullscreen.addEventListener(MouseEvent.MOUSE_OVER, onFullscreenOver);
fullscreen.addEventListener(MouseEvent.MOUSE_OUT, onFullscreenOut);
addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onFullscreen(_arg1:Event):void{
var _local2:TextFormat;
removeEventListener(Event.ENTER_FRAME, onFrame);
DemoFactory.demo.stage["fullScreenSourceRect"] = new Rectangle(0, 0, 800, 400);
DemoFactory.demo.stage.scaleMode = StageScaleMode.SHOW_ALL;
DemoFactory.demo.stage.displayState = StageDisplayState.FULL_SCREEN;
fullScreenTimer = new Timer(1000, 5);
fullScreenTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onFullScreenReady);
fullScreenTimer.addEventListener(TimerEvent.TIMER, timerTick);
fullScreenTimer.start();
windowed.visible = false;
fullscreen.visible = false;
timerField = new TextField();
_local2 = new TextFormat("Arial", 32, 0xF0F0F0, true);
timerField.autoSize = TextFieldAutoSize.LEFT;
timerField.defaultTextFormat = _local2;
timerField.text = "Starting in 5 seconds";
addChild(timerField);
timerField.x = 200;
timerField.y = 200;
}
private function onFullscreenOut(_arg1:Event):void{
fullover = false;
}
private function onWindowedOver(_arg1:Event):void{
winover = true;
}
private function onWindowed(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, onFrame);
dispatchEvent(new Event("startDemo"));
}
private function onFullScreenReady(_arg1:TimerEvent):void{
fullScreenTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, onFullScreenReady);
fullScreenTimer.stop();
fullScreenTimer = null;
dispatchEvent(new Event("startDemo"));
}
private function timerTick(_arg1:TimerEvent):void{
cnt++;
timerField.text = (("Starting in " + (5 - cnt)) + " seconds");
if (cnt == 3){
timerField.text = "";
fullScreenTimer.removeEventListener(TimerEvent.TIMER, timerTick);
};
}
private function onFrame(_arg1:Event):void{
var _local2:Number;
var _local3:Number;
_local2 = winfilt.blurX;
if (winover){
_local3 = 8;
} else {
_local3 = 0;
};
_local2 = (_local2 + ((_local3 - _local2) / 10));
winfilt.blurX = (winfilt.blurY = _local2);
_local2 = fullfilt.blurX;
if (fullover){
_local3 = 8;
} else {
_local3 = 0;
};
_local2 = (_local2 + ((_local3 - _local2) / 10));
fullfilt.blurX = (fullfilt.blurY = _local2);
windowed.filters = [winfilt];
fullscreen.filters = [fullfilt];
}
private function onWindowedOut(_arg1:Event):void{
winover = false;
}
private function onFullscreenOver(_arg1:Event):void{
fullover = true;
}
}
}//package
Section 165
//textures_credits_CreditsFG (textures_credits_CreditsFG)
package {
import mx.core.*;
public class textures_credits_CreditsFG extends BitmapAsset {
}
}//package
Section 166
//textures_credits_Fire (textures_credits_Fire)
package {
import mx.core.*;
public class textures_credits_Fire extends BitmapAsset {
}
}//package
Section 167
//textures_CubeTexture (textures_CubeTexture)
package {
import mx.core.*;
public class textures_CubeTexture extends BitmapAsset {
}
}//package
Section 168
//textures_efxpack1_Background (textures_efxpack1_Background)
package {
import mx.core.*;
public class textures_efxpack1_Background extends BitmapAsset {
}
}//package
Section 169
//textures_efxpack1_GlowParticle (textures_efxpack1_GlowParticle)
package {
import mx.core.*;
public class textures_efxpack1_GlowParticle extends BitmapAsset {
}
}//package
Section 170
//textures_efxpack1_HairParticle (textures_efxpack1_HairParticle)
package {
import mx.core.*;
public class textures_efxpack1_HairParticle extends BitmapAsset {
}
}//package
Section 171
//textures_efxpack1_Overlay (textures_efxpack1_Overlay)
package {
import mx.core.*;
public class textures_efxpack1_Overlay extends BitmapAsset {
}
}//package
Section 172
//textures_efxpack1_Overlay2 (textures_efxpack1_Overlay2)
package {
import mx.core.*;
public class textures_efxpack1_Overlay2 extends BitmapAsset {
}
}//package
Section 173
//textures_efxpack1_Overlay2A (textures_efxpack1_Overlay2A)
package {
import mx.core.*;
public class textures_efxpack1_Overlay2A extends BitmapAsset {
}
}//package
Section 174
//textures_efxpack1_Overlay3 (textures_efxpack1_Overlay3)
package {
import mx.core.*;
public class textures_efxpack1_Overlay3 extends BitmapAsset {
}
}//package
Section 175
//textures_efxpack1_Overlay3A (textures_efxpack1_Overlay3A)
package {
import mx.core.*;
public class textures_efxpack1_Overlay3A extends BitmapAsset {
}
}//package
Section 176
//textures_efxpack1_OverlayA (textures_efxpack1_OverlayA)
package {
import mx.core.*;
public class textures_efxpack1_OverlayA extends BitmapAsset {
}
}//package
Section 177
//textures_efxpack2_Background (textures_efxpack2_Background)
package {
import mx.core.*;
public class textures_efxpack2_Background extends BitmapAsset {
}
}//package
Section 178
//textures_efxpack2_Kukka (textures_efxpack2_Kukka)
package {
import mx.core.*;
public class textures_efxpack2_Kukka extends BitmapAsset {
}
}//package
Section 179
//textures_efxpack2_Overlay (textures_efxpack2_Overlay)
package {
import mx.core.*;
public class textures_efxpack2_Overlay extends BitmapAsset {
}
}//package
Section 180
//textures_efxpack2_Overlay2 (textures_efxpack2_Overlay2)
package {
import mx.core.*;
public class textures_efxpack2_Overlay2 extends BitmapAsset {
}
}//package
Section 181
//textures_efxpack2_Overlay2A (textures_efxpack2_Overlay2A)
package {
import mx.core.*;
public class textures_efxpack2_Overlay2A extends BitmapAsset {
}
}//package
Section 182
//textures_efxpack2_Overlay3 (textures_efxpack2_Overlay3)
package {
import mx.core.*;
public class textures_efxpack2_Overlay3 extends BitmapAsset {
}
}//package
Section 183
//textures_efxpack2_Overlay3A (textures_efxpack2_Overlay3A)
package {
import mx.core.*;
public class textures_efxpack2_Overlay3A extends BitmapAsset {
}
}//package
Section 184
//textures_efxpack2_OverlayA (textures_efxpack2_OverlayA)
package {
import mx.core.*;
public class textures_efxpack2_OverlayA extends BitmapAsset {
}
}//package
Section 185
//textures_GlowParticle (textures_GlowParticle)
package {
import mx.core.*;
public class textures_GlowParticle extends BitmapAsset {
}
}//package
Section 186
//textures_greetings_Background (textures_greetings_Background)
package {
import mx.core.*;
public class textures_greetings_Background extends BitmapAsset {
}
}//package
Section 187
//textures_HairParticle (textures_HairParticle)
package {
import mx.core.*;
public class textures_HairParticle extends BitmapAsset {
}
}//package
Section 188
//textures_Kukka (textures_Kukka)
package {
import mx.core.*;
public class textures_Kukka extends BitmapAsset {
}
}//package
Section 189
//textures_Overlay (textures_Overlay)
package {
import mx.core.*;
public class textures_Overlay extends BitmapAsset {
}
}//package
Section 190
//textures_Overlay2 (textures_Overlay2)
package {
import mx.core.*;
public class textures_Overlay2 extends BitmapAsset {
}
}//package
Section 191
//textures_Overlay2A (textures_Overlay2A)
package {
import mx.core.*;
public class textures_Overlay2A extends BitmapAsset {
}
}//package
Section 192
//textures_Overlay3 (textures_Overlay3)
package {
import mx.core.*;
public class textures_Overlay3 extends BitmapAsset {
}
}//package
Section 193
//textures_Overlay3A (textures_Overlay3A)
package {
import mx.core.*;
public class textures_Overlay3A extends BitmapAsset {
}
}//package
Section 194
//textures_OverlayA (textures_OverlayA)
package {
import mx.core.*;
public class textures_OverlayA extends BitmapAsset {
}
}//package
Section 195
//textures_tunnel_Hair (textures_tunnel_Hair)
package {
import mx.core.*;
public class textures_tunnel_Hair extends BitmapAsset {
}
}//package
Section 196
//textures_tunnel_Kukka (textures_tunnel_Kukka)
package {
import mx.core.*;
public class textures_tunnel_Kukka extends BitmapAsset {
}
}//package
Section 197
//textures_tunnel_Overlay (textures_tunnel_Overlay)
package {
import mx.core.*;
public class textures_tunnel_Overlay extends BitmapAsset {
}
}//package
Section 198
//textures_tunnel_Tunnel (textures_tunnel_Tunnel)
package {
import mx.core.*;
public class textures_tunnel_Tunnel extends BitmapAsset {
}
}//package
Section 199
//textures5_Discomap (textures5_Discomap)
package {
import mx.core.*;
public class textures5_Discomap extends BitmapAsset {
}
}//package
Section 200
//textures5_Discomask (textures5_Discomask)
package {
import mx.core.*;
public class textures5_Discomask extends BitmapAsset {
}
}//package
Section 201
//texturesF_EndGfx (texturesF_EndGfx)
package {
import mx.core.*;
public class texturesF_EndGfx extends BitmapAsset {
}
}//package
Section 202
//texturesRP_Overlay (texturesRP_Overlay)
package {
import mx.core.*;
public class texturesRP_Overlay extends BitmapAsset {
}
}//package
Section 203
//texturesRP_Texture (texturesRP_Texture)
package {
import mx.core.*;
public class texturesRP_Texture extends BitmapAsset {
}
}//package
Section 204
//texturesRP_Texture2 (texturesRP_Texture2)
package {
import mx.core.*;
public class texturesRP_Texture2 extends BitmapAsset {
}
}//package