STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228123
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/24765233?noj=FRM24765233-11DC" width="1" height="1"></div>

ghoul-racers.swf

This is the info page for
Flash #108032

(Click the ID number above for more basic data on this flash file.)


Text
<p align="center"></p>

<p align="left"></p>

<p align="left"><font face="Arial" size="11" color="#000000" letterSpacing="0.000000" kerning="1">* ERROR: No Username!</font></p>

<p align="left"><font face="Arial" size="12" color="#ffffff" letterSpacing="0.000000" kerning="1">NPC name</font></p>

0

SUBMIT LAP TIME

MORE GAMES

De-Bugger.

EDIT

OUTPUT

Ghoul Racers v 1.0
Just creating super spooky 3D models please wait....

Instructions

Credits

Graphics quality

HIGH

low

Back

Use the cursor keys to steer your coffin.
hit all the red checkpoints on a track.
Space bar to use Power Ups.

BatBombs
highly explosive and filled with Bats.

Power Stars
No Slow Down OFF TRACK.

THUNDER CLOUDS
SLOW DOWN ALL OTHER RACERS.

LEad coder                       CHRis terror
ui and tiles                     Johnny whooooooo
characters                      count blinco
sound & music                 ed dead & Were-varrick
licensed by Sikids.com
a kill5 games production.
www.kill5games.com

Enter your name here...

Level 1

<p align="right"><font face="Zombie" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Zombie" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">1 / 3</font></p>

<p align="right"><font face="Zombie" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Zombie" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Zombie" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Zombie" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Zombie" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

:

Skip

QUIT

RANK

Race again

Next track

Back to Menu

ActionScript [AS3]

Section 1
//b2BoxDef (Box2D.Collision.Shapes.b2BoxDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2BoxDef extends b2ShapeDef { public var extents:b2Vec2; public function b2BoxDef(){ type = b2Shape.e_boxShape; extents = new b2Vec2(1, 1); } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { public class b2CircleDef extends b2ShapeDef { public var radius:Number; public function b2CircleDef(){ type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 3
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef, _arg2:b2Body, _arg3:b2Vec2){ var _local4:b2CircleDef; var _local5:Number; var _local6:Number; var _local7:b2AABB; var _local8:b2BroadPhase; m_localPosition = new b2Vec2(); super(_arg1, _arg2); _local4 = (_arg1 as b2CircleDef); m_localPosition.Set((_arg1.localPosition.x - _arg3.x), (_arg1.localPosition.y - _arg3.y)); m_type = b2Shape.e_circleShape; m_radius = _local4.radius; m_R.SetM(m_body.m_R); _local5 = ((m_R.col1.x * m_localPosition.x) + (m_R.col2.x * m_localPosition.y)); _local6 = ((m_R.col1.y * m_localPosition.x) + (m_R.col2.y * m_localPosition.y)); m_position.x = (m_body.m_position.x + _local5); m_position.y = (m_body.m_position.y + _local6); m_maxRadius = (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))) + m_radius); _local7 = new b2AABB(); _local7.minVertex.Set((m_position.x - m_radius), (m_position.y - m_radius)); _local7.maxVertex.Set((m_position.x + m_radius), (m_position.y + m_radius)); _local8 = m_body.m_world.m_broadPhase; if (_local8.InRange(_local7)){ m_proxyId = _local8.CreateProxy(_local7, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; if (m_proxyId == b2Pair.b2_nullProxy){ m_body.Freeze(); }; } override public function ResetProxy(_arg1:b2BroadPhase):void{ var _local2:b2Proxy; var _local3:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _local2 = _arg1.GetProxy(m_proxyId); _arg1.DestroyProxy(m_proxyId); _local2 = null; _local3 = new b2AABB(); _local3.minVertex.Set((m_position.x - m_radius), (m_position.y - m_radius)); _local3.maxVertex.Set((m_position.x + m_radius), (m_position.y + m_radius)); if (_arg1.InRange(_local3)){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; if (m_proxyId == b2Pair.b2_nullProxy){ m_body.Freeze(); }; } override public function QuickSync(_arg1:b2Vec2, _arg2:b2Mat22):void{ m_R.SetM(_arg2); m_position.x = (((_arg2.col1.x * m_localPosition.x) + (_arg2.col2.x * m_localPosition.y)) + _arg1.x); m_position.y = (((_arg2.col1.y * m_localPosition.x) + (_arg2.col2.y * m_localPosition.y)) + _arg1.y); } override public function Support(_arg1:Number, _arg2:Number, _arg3:b2Vec2):void{ var _local4:Number; _local4 = Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2))); _arg1 = (_arg1 / _local4); _arg2 = (_arg2 / _local4); _arg3.Set((m_position.x + (m_radius * _arg1)), (m_position.y + (m_radius * _arg2))); } override public function Synchronize(_arg1:b2Vec2, _arg2:b2Mat22, _arg3:b2Vec2, _arg4:b2Mat22):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2AABB; var _local12:b2BroadPhase; m_R.SetM(_arg4); m_position.x = (((_arg4.col1.x * m_localPosition.x) + (_arg4.col2.x * m_localPosition.y)) + _arg3.x); m_position.y = (((_arg4.col1.y * m_localPosition.x) + (_arg4.col2.y * m_localPosition.y)) + _arg3.y); if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _local5 = (_arg1.x + ((_arg2.col1.x * m_localPosition.x) + (_arg2.col2.x * m_localPosition.y))); _local6 = (_arg1.y + ((_arg2.col1.y * m_localPosition.x) + (_arg2.col2.y * m_localPosition.y))); _local7 = Math.min(_local5, m_position.x); _local8 = Math.min(_local6, m_position.y); _local9 = Math.max(_local5, m_position.x); _local10 = Math.max(_local6, m_position.y); _local11 = new b2AABB(); _local11.minVertex.Set((_local7 - m_radius), (_local8 - m_radius)); _local11.maxVertex.Set((_local9 + m_radius), (_local10 + m_radius)); _local12 = m_body.m_world.m_broadPhase; if (_local12.InRange(_local11)){ _local12.MoveProxy(m_proxyId, _local11); } else { m_body.Freeze(); }; } override public function TestPoint(_arg1:b2Vec2):Boolean{ var _local2:b2Vec2; _local2 = new b2Vec2(); _local2.SetV(_arg1); _local2.Subtract(m_position); return ((b2Math.b2Dot(_local2, _local2) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolyDef (Box2D.Collision.Shapes.b2PolyDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolyDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; public function b2PolyDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolyVertices); super(); type = b2Shape.e_polyShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolyVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } } }//package Box2D.Collision.Shapes
Section 6
//b2PolyShape (Box2D.Collision.Shapes.b2PolyShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolyShape extends b2Shape { public var m_vertices:Array; public var m_localOBB:b2OBB; public var m_normals:Array; public var m_vertexCount:int; private var syncMat:b2Mat22; public var m_coreVertices:Array; public var m_localCentroid:b2Vec2; private var syncAABB:b2AABB; private static var tempVec:b2Vec2 = new b2Vec2(); private static var tAbsR:b2Mat22 = new b2Mat22(); public function b2PolyShape(_arg1:b2ShapeDef, _arg2:b2Body, _arg3:b2Vec2){ var _local4:int; var _local5:Number; var _local6:Number; var _local7:b2Vec2; var _local8:b2AABB; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:int; var _local16:Number; var _local17:Number; var _local18:b2BroadPhase; var _local19:b2BoxDef; var _local20:Number; var _local21:Number; var _local22:b2PolyDef; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:b2Vec2; syncAABB = new b2AABB(); syncMat = new b2Mat22(); m_localCentroid = new b2Vec2(); m_localOBB = new b2OBB(); super(_arg1, _arg2); _local8 = new b2AABB(); m_vertices = new Array(b2Settings.b2_maxPolyVertices); m_coreVertices = new Array(b2Settings.b2_maxPolyVertices); m_normals = new Array(b2Settings.b2_maxPolyVertices); m_type = b2Shape.e_polyShape; _local9 = new b2Mat22(_arg1.localRotation); if (_arg1.type == b2Shape.e_boxShape){ m_localCentroid.x = (_arg1.localPosition.x - _arg3.x); m_localCentroid.y = (_arg1.localPosition.y - _arg3.y); _local19 = (_arg1 as b2BoxDef); m_vertexCount = 4; _local5 = _local19.extents.x; _local6 = _local19.extents.y; _local20 = Math.max(0, (_local5 - (2 * b2Settings.b2_linearSlop))); _local21 = Math.max(0, (_local6 - (2 * b2Settings.b2_linearSlop))); _local7 = (m_vertices[0] = new b2Vec2()); _local7.x = ((_local9.col1.x * _local5) + (_local9.col2.x * _local6)); _local7.y = ((_local9.col1.y * _local5) + (_local9.col2.y * _local6)); _local7 = (m_vertices[1] = new b2Vec2()); _local7.x = ((_local9.col1.x * -(_local5)) + (_local9.col2.x * _local6)); _local7.y = ((_local9.col1.y * -(_local5)) + (_local9.col2.y * _local6)); _local7 = (m_vertices[2] = new b2Vec2()); _local7.x = ((_local9.col1.x * -(_local5)) + (_local9.col2.x * -(_local6))); _local7.y = ((_local9.col1.y * -(_local5)) + (_local9.col2.y * -(_local6))); _local7 = (m_vertices[3] = new b2Vec2()); _local7.x = ((_local9.col1.x * _local5) + (_local9.col2.x * -(_local6))); _local7.y = ((_local9.col1.y * _local5) + (_local9.col2.y * -(_local6))); _local7 = (m_coreVertices[0] = new b2Vec2()); _local7.x = ((_local9.col1.x * _local20) + (_local9.col2.x * _local21)); _local7.y = ((_local9.col1.y * _local20) + (_local9.col2.y * _local21)); _local7 = (m_coreVertices[1] = new b2Vec2()); _local7.x = ((_local9.col1.x * -(_local20)) + (_local9.col2.x * _local21)); _local7.y = ((_local9.col1.y * -(_local20)) + (_local9.col2.y * _local21)); _local7 = (m_coreVertices[2] = new b2Vec2()); _local7.x = ((_local9.col1.x * -(_local20)) + (_local9.col2.x * -(_local21))); _local7.y = ((_local9.col1.y * -(_local20)) + (_local9.col2.y * -(_local21))); _local7 = (m_coreVertices[3] = new b2Vec2()); _local7.x = ((_local9.col1.x * _local20) + (_local9.col2.x * -(_local21))); _local7.y = ((_local9.col1.y * _local20) + (_local9.col2.y * -(_local21))); } else { _local22 = (_arg1 as b2PolyDef); m_vertexCount = _local22.vertexCount; PolyCentroid(_local22.vertices, _local22.vertexCount, tempVec); _local23 = tempVec.x; _local24 = tempVec.y; m_localCentroid.x = ((_arg1.localPosition.x + ((_local9.col1.x * _local23) + (_local9.col2.x * _local24))) - _arg3.x); m_localCentroid.y = ((_arg1.localPosition.y + ((_local9.col1.y * _local23) + (_local9.col2.y * _local24))) - _arg3.y); _local4 = 0; while (_local4 < m_vertexCount) { m_vertices[_local4] = new b2Vec2(); m_coreVertices[_local4] = new b2Vec2(); _local5 = (_local22.vertices[_local4].x - _local23); _local6 = (_local22.vertices[_local4].y - _local24); m_vertices[_local4].x = ((_local9.col1.x * _local5) + (_local9.col2.x * _local6)); m_vertices[_local4].y = ((_local9.col1.y * _local5) + (_local9.col2.y * _local6)); _local25 = m_vertices[_local4].x; _local26 = m_vertices[_local4].y; _local27 = Math.sqrt(((_local25 * _local25) + (_local26 * _local26))); if (_local27 > Number.MIN_VALUE){ _local25 = (_local25 * (1 / _local27)); _local26 = (_local26 * (1 / _local27)); }; m_coreVertices[_local4].x = (m_vertices[_local4].x - ((2 * b2Settings.b2_linearSlop) * _local25)); m_coreVertices[_local4].y = (m_vertices[_local4].y - ((2 * b2Settings.b2_linearSlop) * _local26)); _local4++; }; }; _local10 = Number.MAX_VALUE; _local11 = Number.MAX_VALUE; _local12 = -(Number.MAX_VALUE); _local13 = -(Number.MAX_VALUE); m_maxRadius = 0; _local4 = 0; while (_local4 < m_vertexCount) { _local28 = m_vertices[_local4]; _local10 = Math.min(_local10, _local28.x); _local11 = Math.min(_local11, _local28.y); _local12 = Math.max(_local12, _local28.x); _local13 = Math.max(_local13, _local28.y); m_maxRadius = Math.max(m_maxRadius, _local28.Length()); _local4++; }; m_localOBB.R.SetIdentity(); m_localOBB.center.Set(((_local10 + _local12) * 0.5), ((_local11 + _local13) * 0.5)); m_localOBB.extents.Set(((_local12 - _local10) * 0.5), ((_local13 - _local11) * 0.5)); _local4 = 0; while (_local4 < m_vertexCount) { m_normals[_local4] = new b2Vec2(); _local14 = _local4; _local15 = (((_local4 + 1) < m_vertexCount)) ? (_local4 + 1) : 0; m_normals[_local4].x = (m_vertices[_local15].y - m_vertices[_local14].y); m_normals[_local4].y = -((m_vertices[_local15].x - m_vertices[_local14].x)); m_normals[_local4].Normalize(); _local4++; }; _local4 = 0; while (_local4 < m_vertexCount) { _local14 = _local4; _local15 = (((_local4 + 1) < m_vertexCount)) ? (_local4 + 1) : 0; _local4++; }; m_R.SetM(m_body.m_R); m_position.x = (m_body.m_position.x + ((m_R.col1.x * m_localCentroid.x) + (m_R.col2.x * m_localCentroid.y))); m_position.y = (m_body.m_position.y + ((m_R.col1.y * m_localCentroid.x) + (m_R.col2.y * m_localCentroid.y))); tAbsR.col1.x = ((m_R.col1.x * m_localOBB.R.col1.x) + (m_R.col2.x * m_localOBB.R.col1.y)); tAbsR.col1.y = ((m_R.col1.y * m_localOBB.R.col1.x) + (m_R.col2.y * m_localOBB.R.col1.y)); tAbsR.col2.x = ((m_R.col1.x * m_localOBB.R.col2.x) + (m_R.col2.x * m_localOBB.R.col2.y)); tAbsR.col2.y = ((m_R.col1.y * m_localOBB.R.col2.x) + (m_R.col2.y * m_localOBB.R.col2.y)); tAbsR.Abs(); _local5 = ((tAbsR.col1.x * m_localOBB.extents.x) + (tAbsR.col2.x * m_localOBB.extents.y)); _local6 = ((tAbsR.col1.y * m_localOBB.extents.x) + (tAbsR.col2.y * m_localOBB.extents.y)); _local16 = (m_position.x + ((m_R.col1.x * m_localOBB.center.x) + (m_R.col2.x * m_localOBB.center.y))); _local17 = (m_position.y + ((m_R.col1.y * m_localOBB.center.x) + (m_R.col2.y * m_localOBB.center.y))); _local8.minVertex.x = (_local16 - _local5); _local8.minVertex.y = (_local17 - _local6); _local8.maxVertex.x = (_local16 + _local5); _local8.maxVertex.y = (_local17 + _local6); _local18 = m_body.m_world.m_broadPhase; if (_local18.InRange(_local8)){ m_proxyId = _local18.CreateProxy(_local8, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; if (m_proxyId == b2Pair.b2_nullProxy){ m_body.Freeze(); }; } override public function QuickSync(_arg1:b2Vec2, _arg2:b2Mat22):void{ m_R.SetM(_arg2); m_position.x = (_arg1.x + ((_arg2.col1.x * m_localCentroid.x) + (_arg2.col2.x * m_localCentroid.y))); m_position.y = (_arg1.y + ((_arg2.col1.y * m_localCentroid.x) + (_arg2.col2.y * m_localCentroid.y))); } override public function Support(_arg1:Number, _arg2:Number, _arg3:b2Vec2):void{ var _local4:Number; var _local5:Number; var _local6:int; var _local7:Number; var _local8:int; var _local9:Number; _local4 = ((_arg1 * m_R.col1.x) + (_arg2 * m_R.col1.y)); _local5 = ((_arg1 * m_R.col2.x) + (_arg2 * m_R.col2.y)); _local6 = 0; _local7 = ((m_coreVertices[0].x * _local4) + (m_coreVertices[0].y * _local5)); _local8 = 1; while (_local8 < m_vertexCount) { _local9 = ((m_coreVertices[_local8].x * _local4) + (m_coreVertices[_local8].y * _local5)); if (_local9 > _local7){ _local6 = _local8; _local7 = _local9; }; _local8++; }; _arg3.Set((m_position.x + ((m_R.col1.x * m_coreVertices[_local6].x) + (m_R.col2.x * m_coreVertices[_local6].y))), (m_position.y + ((m_R.col1.y * m_coreVertices[_local6].x) + (m_R.col2.y * m_coreVertices[_local6].y)))); } override public function Synchronize(_arg1:b2Vec2, _arg2:b2Mat22, _arg3:b2Vec2, _arg4:b2Mat22):void{ var _local5:Number; var _local6:Number; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:b2BroadPhase; m_R.SetM(_arg4); m_position.x = (m_body.m_position.x + ((_arg4.col1.x * m_localCentroid.x) + (_arg4.col2.x * m_localCentroid.y))); m_position.y = (m_body.m_position.y + ((_arg4.col1.y * m_localCentroid.x) + (_arg4.col2.y * m_localCentroid.y))); if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _local7 = _arg2.col1; _local8 = _arg2.col2; _local9 = m_localOBB.R.col1; _local10 = m_localOBB.R.col2; syncMat.col1.x = ((_local7.x * _local9.x) + (_local8.x * _local9.y)); syncMat.col1.y = ((_local7.y * _local9.x) + (_local8.y * _local9.y)); syncMat.col2.x = ((_local7.x * _local10.x) + (_local8.x * _local10.y)); syncMat.col2.y = ((_local7.y * _local10.x) + (_local8.y * _local10.y)); syncMat.Abs(); _local5 = (m_localCentroid.x + m_localOBB.center.x); _local6 = (m_localCentroid.y + m_localOBB.center.y); _local11 = (_arg1.x + ((_arg2.col1.x * _local5) + (_arg2.col2.x * _local6))); _local12 = (_arg1.y + ((_arg2.col1.y * _local5) + (_arg2.col2.y * _local6))); _local5 = ((syncMat.col1.x * m_localOBB.extents.x) + (syncMat.col2.x * m_localOBB.extents.y)); _local6 = ((syncMat.col1.y * m_localOBB.extents.x) + (syncMat.col2.y * m_localOBB.extents.y)); syncAABB.minVertex.x = (_local11 - _local5); syncAABB.minVertex.y = (_local12 - _local6); syncAABB.maxVertex.x = (_local11 + _local5); syncAABB.maxVertex.y = (_local12 + _local6); _local7 = _arg4.col1; _local8 = _arg4.col2; _local9 = m_localOBB.R.col1; _local10 = m_localOBB.R.col2; syncMat.col1.x = ((_local7.x * _local9.x) + (_local8.x * _local9.y)); syncMat.col1.y = ((_local7.y * _local9.x) + (_local8.y * _local9.y)); syncMat.col2.x = ((_local7.x * _local10.x) + (_local8.x * _local10.y)); syncMat.col2.y = ((_local7.y * _local10.x) + (_local8.y * _local10.y)); syncMat.Abs(); _local5 = (m_localCentroid.x + m_localOBB.center.x); _local6 = (m_localCentroid.y + m_localOBB.center.y); _local11 = (_arg3.x + ((_arg4.col1.x * _local5) + (_arg4.col2.x * _local6))); _local12 = (_arg3.y + ((_arg4.col1.y * _local5) + (_arg4.col2.y * _local6))); _local5 = ((syncMat.col1.x * m_localOBB.extents.x) + (syncMat.col2.x * m_localOBB.extents.y)); _local6 = ((syncMat.col1.y * m_localOBB.extents.x) + (syncMat.col2.y * m_localOBB.extents.y)); syncAABB.minVertex.x = Math.min(syncAABB.minVertex.x, (_local11 - _local5)); syncAABB.minVertex.y = Math.min(syncAABB.minVertex.y, (_local12 - _local6)); syncAABB.maxVertex.x = Math.max(syncAABB.maxVertex.x, (_local11 + _local5)); syncAABB.maxVertex.y = Math.max(syncAABB.maxVertex.y, (_local12 + _local6)); _local13 = m_body.m_world.m_broadPhase; if (_local13.InRange(syncAABB)){ _local13.MoveProxy(m_proxyId, syncAABB); } else { m_body.Freeze(); }; } override public function TestPoint(_arg1:b2Vec2):Boolean{ var _local2:b2Vec2; var _local3:int; var _local4:b2Vec2; var _local5:Number; _local2 = new b2Vec2(); _local2.SetV(_arg1); _local2.Subtract(m_position); _local2.MulTM(m_R); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = new b2Vec2(); _local4.SetV(_local2); _local4.Subtract(m_vertices[_local3]); _local5 = b2Math.b2Dot(m_normals[_local3], _local4); if (_local5 > 0){ return (false); }; _local3++; }; return (true); } override public function ResetProxy(_arg1:b2BroadPhase):void{ var _local2:b2Proxy; var _local3:b2Mat22; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _local2 = _arg1.GetProxy(m_proxyId); _arg1.DestroyProxy(m_proxyId); _local2 = null; _local3 = b2Math.b2MulMM(m_R, m_localOBB.R); _local4 = b2Math.b2AbsM(_local3); _local5 = b2Math.b2MulMV(_local4, m_localOBB.extents); _local6 = b2Math.b2MulMV(m_R, m_localOBB.center); _local6.Add(m_position); _local7 = new b2AABB(); _local7.minVertex.SetV(_local6); _local7.minVertex.Subtract(_local5); _local7.maxVertex.SetV(_local6); _local7.maxVertex.Add(_local5); if (_arg1.InRange(_local7)){ m_proxyId = _arg1.CreateProxy(_local7, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; if (m_proxyId == b2Pair.b2_nullProxy){ m_body.Freeze(); }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Shape { public var m_body:b2Body; public var m_maxRadius:Number; public var m_next:b2Shape; public var m_R:b2Mat22; public var m_type:int; public var m_friction:Number; public var m_proxyId:uint; public var m_maskBits:uint; public var m_groupIndex:int; public var m_userData;// = null public var m_restitution:Number; public var m_position:b2Vec2; public var m_categoryBits:uint; public static const e_boxShape:int = 1; public static const e_unknownShape:int = -1; public static const e_shapeTypeCount:int = 4; public static const e_circleShape:int = 0; public static const e_meshShape:int = 3; public static const e_polyShape:int = 2; public function b2Shape(_arg1:b2ShapeDef, _arg2:b2Body){ m_R = new b2Mat22(); m_position = new b2Vec2(); m_userData = null; super(); m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_body = _arg2; m_proxyId = b2Pair.b2_nullProxy; m_maxRadius = 0; m_categoryBits = _arg1.categoryBits; m_maskBits = _arg1.maskBits; m_groupIndex = _arg1.groupIndex; } public function GetMaxRadius():Number{ return (m_maxRadius); } public function GetPosition():b2Vec2{ return (m_position); } public function QuickSync(_arg1:b2Vec2, _arg2:b2Mat22):void{ } public function GetNext():b2Shape{ return (m_next); } public function GetType():int{ return (m_type); } public function GetUserData(){ return (m_userData); } public function Support(_arg1:Number, _arg2:Number, _arg3:b2Vec2):void{ } public function Synchronize(_arg1:b2Vec2, _arg2:b2Mat22, _arg3:b2Vec2, _arg4:b2Mat22):void{ } public function DestroyProxy():void{ if (m_proxyId != b2Pair.b2_nullProxy){ m_body.m_world.m_broadPhase.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function GetRotationMatrix():b2Mat22{ return (m_R); } public function GetBody():b2Body{ return (m_body); } public function TestPoint(_arg1:b2Vec2):Boolean{ return (false); } public function ResetProxy(_arg1:b2BroadPhase):void{ } public static function Destroy(_arg1:b2Shape):void{ if (_arg1.m_proxyId != b2Pair.b2_nullProxy){ _arg1.m_body.m_world.m_broadPhase.DestroyProxy(_arg1.m_proxyId); }; } public static function PolyMass(_arg1:b2MassData, _arg2:Array, _arg3:int, _arg4:Number):void{ var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; var _local10:int; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:b2Vec2; var _local16:Number; var _local17:Number; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local5 = new b2Vec2(); _local5.SetZero(); _local6 = 0; _local7 = 0; _local8 = new b2Vec2(0, 0); _local9 = (1 / 3); _local10 = 0; while (_local10 < _arg3) { _local11 = _local8; _local12 = _arg2[_local10]; _local13 = (((_local10 + 1) < _arg3)) ? _arg2[(_local10 + 1)] : _arg2[0]; _local14 = b2Math.SubtractVV(_local12, _local11); _local15 = b2Math.SubtractVV(_local13, _local11); _local16 = b2Math.b2CrossVV(_local14, _local15); _local17 = (0.5 * _local16); _local6 = (_local6 + _local17); _local18 = new b2Vec2(); _local18.SetV(_local11); _local18.Add(_local12); _local18.Add(_local13); _local18.Multiply((_local9 * _local17)); _local5.Add(_local18); _local19 = _local11.x; _local20 = _local11.y; _local21 = _local14.x; _local22 = _local14.y; _local23 = _local15.x; _local24 = _local15.y; _local25 = ((_local9 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local26 = ((_local9 * ((0.25 * (((_local22 * _local22) + (_local24 * _local22)) + (_local24 * _local24))) + ((_local20 * _local22) + (_local20 * _local24)))) + ((0.5 * _local20) * _local20)); _local7 = (_local7 + (_local16 * (_local25 + _local26))); _local10++; }; _arg1.mass = (_arg4 * _local6); _local5.Multiply((1 / _local6)); _arg1.center = _local5; _local7 = (_arg4 * (_local7 - (_local6 * b2Math.b2Dot(_local5, _local5)))); _arg1.I = _local7; } public static function PolyCentroid(_arg1:Array, _arg2:int, _arg3:b2Vec2):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; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = 0; _local9 = (1 / 3); _local10 = 0; while (_local10 < _arg2) { _local11 = _local7; _local12 = _local8; _local13 = _arg1[_local10].x; _local14 = _arg1[_local10].y; _local15 = (((_local10 + 1) < _arg2)) ? _arg1[(_local10 + 1)].x : _arg1[0].x; _local16 = (((_local10 + 1) < _arg2)) ? _arg1[(_local10 + 1)].y : _arg1[0].y; _local17 = (_local13 - _local11); _local18 = (_local14 - _local12); _local19 = (_local15 - _local11); _local20 = (_local16 - _local12); _local21 = ((_local17 * _local20) - (_local18 * _local19)); _local22 = (0.5 * _local21); _local6 = (_local6 + _local22); _local4 = (_local4 + ((_local22 * _local9) * ((_local11 + _local13) + _local15))); _local5 = (_local5 + ((_local22 * _local9) * ((_local12 + _local14) + _local16))); _local10++; }; _local4 = (_local4 * (1 / _local6)); _local5 = (_local5 * (1 / _local6)); _arg3.Set(_local4, _local5); } public static function Create(_arg1:b2ShapeDef, _arg2:b2Body, _arg3:b2Vec2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1, _arg2, _arg3)); case e_boxShape: case e_polyShape: return (new b2PolyShape(_arg1, _arg2, _arg3)); }; return (null); } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2ShapeDef { public var groupIndex:int; public var categoryBits:int; public var localRotation:Number; public var restitution:Number; public var userData;// = null public var density:Number; public var maskBits:int; public var type:int; public var localPosition:b2Vec2; public var friction:Number; public function b2ShapeDef(){ userData = null; super(); type = b2Shape.e_unknownShape; userData = null; localPosition = new b2Vec2(0, 0); localRotation = 0; friction = 0.2; restitution = 0; density = 0; categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; } public function ComputeMass(_arg1:b2MassData):void{ var _local2:b2CircleDef; var _local3:b2BoxDef; var _local4:b2PolyDef; _arg1.center = new b2Vec2(0, 0); if (density == 0){ _arg1.mass = 0; _arg1.center.Set(0, 0); _arg1.I = 0; }; switch (type){ case b2Shape.e_circleShape: _local2 = (this as b2CircleDef); _arg1.mass = (((density * b2Settings.b2_pi) * _local2.radius) * _local2.radius); _arg1.center.Set(0, 0); _arg1.I = (((0.5 * _arg1.mass) * _local2.radius) * _local2.radius); break; case b2Shape.e_boxShape: _local3 = (this as b2BoxDef); _arg1.mass = (((4 * density) * _local3.extents.x) * _local3.extents.y); _arg1.center.Set(0, 0); _arg1.I = ((_arg1.mass / 3) * b2Math.b2Dot(_local3.extents, _local3.extents)); break; case b2Shape.e_polyShape: _local4 = (this as b2PolyDef); b2Shape.PolyMass(_arg1, _local4.vertices, _local4.vertexCount, density); break; default: _arg1.mass = 0; _arg1.center.Set(0, 0); _arg1.I = 0; break; }; } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var minVertex:b2Vec2; public var maxVertex:b2Vec2; public function b2AABB(){ minVertex = new b2Vec2(); maxVertex = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = maxVertex.x; _local2 = maxVertex.y; _local1 = maxVertex.x; _local2 = maxVertex.y; _local1 = (_local1 - minVertex.x); _local2 = (_local2 - minVertex.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (minVertex.IsValid()))) && (maxVertex.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = _arg1.maxVertex.x; _local5 = _arg1.maxVertex.y; _local4 = (_local4 - _arg1.minVertex.x); _local5 = (_local5 - _arg1.minVertex.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[(b2Settings.b2_maxProxies - 1)] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ if ((((_arg1 == b2Pair.b2_nullProxy)) || ((m_proxyPool[_arg1].IsValid() == false)))){ return (null); }; return (m_proxyPool[_arg1]); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { m_proxyPool[_local1].timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:uint; var _local11:int; var _local12:int; var _local13:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local10 = _local8; while (_local10 < _local9) { if (_arg5[_local10].IsLower()){ IncrementOverlapCount(_arg5[_local10].proxyId); }; _local10++; }; if (_local8 > 0){ _local11 = (_local8 - 1); _local12 = _arg5[_local11].stabbingCount; while (_local12) { if (_arg5[_local11].IsLower()){ _local13 = m_proxyPool[_arg5[_local11].proxyId]; if (_local8 <= _local13.upperBounds[_arg7]){ IncrementOverlapCount(_arg5[_local11].proxyId); _local12--; }; }; _local11--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; if (_local4[_arg1.lowerBounds[_local3]].value > _local4[_arg2.upperBounds[_local3]].value){ return (false); }; if (_local4[_arg1.upperBounds[_local3]].value < _local4[_arg2.lowerBounds[_local3]].value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.minVertex.x; _local5 = _arg3.minVertex.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.maxVertex.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.maxVertex.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.minVertex.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.minVertex.y); _local6 = _arg3.maxVertex.x; _local7 = _arg3.maxVertex.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.maxVertex.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.maxVertex.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.minVertex.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.minVertex.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.minVertex.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.minVertex.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.minVertex.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.minVertex.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:int; var _local22:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[(_local13 + _local17)]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local21 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[(_local21 + _local17)]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[(_local12 + _local17)]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local21 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[(_local21 + _local17)]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local11[_local12].value = _local7[_local9]; _local11[_local12].proxyId = _local5; _local11[_local13].value = _local8[_local9]; _local11[_local13].proxyId = _local5; _local11[_local12].stabbingCount = ((_local12 == 0)) ? 0 : _local11[(_local12 - 1)].stabbingCount; _local11[_local13].stabbingCount = _local11[(_local13 - 1)].stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local11[_local3].stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local22 = m_proxyPool[_local11[_local3].proxyId]; if (_local11[_local3].IsLower()){ _local22.lowerBounds[_local9] = _local3; } else { _local22.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Proxy; var _local3:int; var _local4:int; var _local5:int; var _local6:Array; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:Array; var _local12:int; var _local13:int; var _local14:b2Bound; var _local15:b2Bound; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local2 = m_proxyPool[_arg1]; _local3 = (2 * m_proxyCount); _local4 = 0; while (_local4 < 2) { _local6 = m_bounds[_local4]; _local7 = _local2.lowerBounds[_local4]; _local8 = _local2.upperBounds[_local4]; _local9 = _local6[_local7].value; _local10 = _local6[_local8].value; _local11 = new Array(); _local13 = ((_local8 - _local7) - 1); _local12 = 0; while (_local12 < _local13) { _local11[_local12] = new b2Bound(); _local14 = _local11[_local12]; _local15 = _local6[((_local7 + 1) + _local12)]; _local14.value = _local15.value; _local14.proxyId = _local15.proxyId; _local14.stabbingCount = _local15.stabbingCount; _local12++; }; _local13 = _local11.length; _local16 = _local7; _local12 = 0; while (_local12 < _local13) { _local15 = _local11[_local12]; _local14 = _local6[(_local16 + _local12)]; _local14.value = _local15.value; _local14.proxyId = _local15.proxyId; _local14.stabbingCount = _local15.stabbingCount; _local12++; }; _local11 = new Array(); _local13 = ((_local3 - _local8) - 1); _local12 = 0; while (_local12 < _local13) { _local11[_local12] = new b2Bound(); _local14 = _local11[_local12]; _local15 = _local6[((_local8 + 1) + _local12)]; _local14.value = _local15.value; _local14.proxyId = _local15.proxyId; _local14.stabbingCount = _local15.stabbingCount; _local12++; }; _local13 = _local11.length; _local16 = (_local8 - 1); _local12 = 0; while (_local12 < _local13) { _local15 = _local11[_local12]; _local14 = _local6[(_local16 + _local12)]; _local14.value = _local15.value; _local14.proxyId = _local15.proxyId; _local14.stabbingCount = _local15.stabbingCount; _local12++; }; _local13 = (_local3 - 2); _local17 = _local7; while (_local17 < _local13) { _local19 = m_proxyPool[_local6[_local17].proxyId]; if (_local6[_local17].IsLower()){ _local19.lowerBounds[_local4] = _local17; } else { _local19.upperBounds[_local4] = _local17; }; _local17++; }; _local13 = (_local8 - 1); _local18 = _local7; while (_local18 < _local13) { _local6[_local18].stabbingCount--; _local18++; }; Query([0], [0], _local9, _local10, _local6, (_local3 - 2), _local4); _local4++; }; _local5 = 0; while (_local5 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local5]); _local5++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local2.userData = null; _local2.overlapCount = b2_invalid; _local2.lowerBounds[0] = b2_invalid; _local2.lowerBounds[1] = b2_invalid; _local2.upperBounds[0] = b2_invalid; _local2.upperBounds[1] = b2_invalid; _local2.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; if (_arg1.lowerValues[_local3] > _local4[_arg2.upperBounds[_local3]].value){ return (false); }; if (_arg1.upperValues[_local3] < _local4[_arg2.lowerBounds[_local3]].value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.minVertex.x; _local3 = _arg1.minVertex.y; _local2 = (_local2 - m_worldAABB.maxVertex.x); _local3 = (_local3 - m_worldAABB.maxVertex.y); _local4 = m_worldAABB.minVertex.x; _local5 = m_worldAABB.minVertex.y; _local4 = (_local4 - _arg1.maxVertex.x); _local5 = (_local5 - _arg1.maxVertex.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:uint; var _local4:uint; var _local5:b2Bound; var _local6:b2Bound; var _local7:b2Bound; var _local8:uint; var _local9:b2Proxy; var _local10:uint; var _local11:b2Proxy; var _local12:b2BoundValues; var _local13:b2BoundValues; var _local14:Array; var _local15:uint; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:int; var _local20:int; var _local21:uint; var _local22:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local10 = (2 * m_proxyCount); _local11 = m_proxyPool[_arg1]; _local12 = new b2BoundValues(); ComputeBounds(_local12.lowerValues, _local12.upperValues, _arg2); _local13 = new b2BoundValues(); _local3 = 0; while (_local3 < 2) { _local13.lowerValues[_local3] = m_bounds[_local3][_local11.lowerBounds[_local3]].value; _local13.upperValues[_local3] = m_bounds[_local3][_local11.upperBounds[_local3]].value; _local3++; }; _local3 = 0; while (_local3 < 2) { _local14 = m_bounds[_local3]; _local15 = _local11.lowerBounds[_local3]; _local16 = _local11.upperBounds[_local3]; _local17 = _local12.lowerValues[_local3]; _local18 = _local12.upperValues[_local3]; _local19 = (_local17 - _local14[_local15].value); _local20 = (_local18 - _local14[_local16].value); _local14[_local15].value = _local17; _local14[_local16].value = _local18; if (_local19 < 0){ _local4 = _local15; while ((((_local4 > 0)) && ((_local17 < _local14[(_local4 - 1)].value)))) { _local5 = _local14[_local4]; _local6 = _local14[(_local4 - 1)]; _local21 = _local6.proxyId; _local22 = m_proxyPool[_local6.proxyId]; _local6.stabbingCount++; if (_local6.IsUpper() == true){ if (TestOverlap(_local12, _local22)){ m_pairManager.AddBufferedPair(_arg1, _local21); }; var _local23 = _local22.upperBounds; var _local24 = _local3; var _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.stabbingCount++; } else { _local23 = _local22.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.stabbingCount--; }; _local23 = _local11.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.Swap(_local6); _local4--; }; }; if (_local20 > 0){ _local4 = _local16; while ((((_local4 < (_local10 - 1))) && ((_local14[(_local4 + 1)].value <= _local18)))) { _local5 = _local14[_local4]; _local7 = _local14[(_local4 + 1)]; _local8 = _local7.proxyId; _local9 = m_proxyPool[_local8]; _local7.stabbingCount++; if (_local7.IsLower() == true){ if (TestOverlap(_local12, _local9)){ m_pairManager.AddBufferedPair(_arg1, _local8); }; _local23 = _local9.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.stabbingCount++; } else { _local23 = _local9.upperBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.stabbingCount--; }; _local23 = _local11.upperBounds; _local24 = _local3; _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.Swap(_local7); _local4++; }; }; if (_local19 > 0){ _local4 = _local15; while ((((_local4 < (_local10 - 1))) && ((_local14[(_local4 + 1)].value <= _local17)))) { _local5 = _local14[_local4]; _local7 = _local14[(_local4 + 1)]; _local8 = _local7.proxyId; _local9 = m_proxyPool[_local8]; _local7.stabbingCount--; if (_local7.IsUpper()){ if (TestOverlap(_local13, _local9)){ m_pairManager.RemoveBufferedPair(_arg1, _local8); }; _local23 = _local9.upperBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.stabbingCount--; } else { _local23 = _local9.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.stabbingCount++; }; _local23 = _local11.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.Swap(_local7); _local4++; }; }; if (_local20 < 0){ _local4 = _local16; while ((((_local4 > 0)) && ((_local18 < _local14[(_local4 - 1)].value)))) { _local5 = _local14[_local4]; _local6 = _local14[(_local4 - 1)]; _local21 = _local6.proxyId; _local22 = m_proxyPool[_local21]; _local6.stabbingCount--; if (_local6.IsLower() == true){ if (TestOverlap(_local13, _local22)){ m_pairManager.RemoveBufferedPair(_arg1, _local21); }; _local23 = _local22.lowerBounds; _local24 = _local3; _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.stabbingCount--; } else { _local23 = _local22.upperBounds; _local24 = _local3; _local25 = (_local23[_local24] + 1); _local23[_local24] = _local25; _local5.stabbingCount++; }; _local23 = _local11.upperBounds; _local24 = _local3; _local25 = (_local23[_local24] - 1); _local23[_local24] = _local25; _local5.Swap(_local6); _local4--; }; }; _local3++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); if (_arg1[_local6].value > _arg3){ _local5 = (_local6 - 1); } else { if (_arg1[_local6].value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolyShape, _arg2:int, _arg3:b2PolyShape):Number{ var _local4:Array; var _local5:int; var _local6:Array; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:int; var _local14:Number; var _local15:int; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:b2Vec2; var _local22:Number; _local4 = _arg1.m_vertices; _local5 = _arg3.m_vertexCount; _local6 = _arg3.m_vertices; _local7 = _arg1.m_normals[_arg2].x; _local8 = _arg1.m_normals[_arg2].y; _local9 = _local7; _local10 = _arg1.m_R; _local7 = ((_local10.col1.x * _local9) + (_local10.col2.x * _local8)); _local8 = ((_local10.col1.y * _local9) + (_local10.col2.y * _local8)); _local11 = _local7; _local12 = _local8; _local10 = _arg3.m_R; _local9 = ((_local11 * _local10.col1.x) + (_local12 * _local10.col1.y)); _local12 = ((_local11 * _local10.col2.x) + (_local12 * _local10.col2.y)); _local11 = _local9; _local13 = 0; _local14 = Number.MAX_VALUE; _local15 = 0; while (_local15 < _local5) { _local21 = _local6[_local15]; _local22 = ((_local21.x * _local11) + (_local21.y * _local12)); if (_local22 < _local14){ _local14 = _local22; _local13 = _local15; }; _local15++; }; _local10 = _arg1.m_R; _local16 = (_arg1.m_position.x + ((_local10.col1.x * _local4[_arg2].x) + (_local10.col2.x * _local4[_arg2].y))); _local17 = (_arg1.m_position.y + ((_local10.col1.y * _local4[_arg2].x) + (_local10.col2.y * _local4[_arg2].y))); _local10 = _arg3.m_R; _local18 = (_arg3.m_position.x + ((_local10.col1.x * _local6[_local13].x) + (_local10.col2.x * _local6[_local13].y))); _local19 = (_arg3.m_position.y + ((_local10.col1.y * _local6[_local13].x) + (_local10.col2.y * _local6[_local13].y))); _local18 = (_local18 - _local16); _local19 = (_local19 - _local17); _local20 = ((_local18 * _local7) + (_local19 * _local8)); return (_local20); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.minVertex; _local4 = _arg1.maxVertex; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.minVertex; _local4 = _arg2.maxVertex; _local7 = (_local3.x - _local4.x); _local8 = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolyShape, _arg3:int, _arg4:b2PolyShape):void{ var _local5:int; var _local6:Array; var _local7:int; var _local8:Array; var _local9:int; var _local10:int; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:b2Mat22; var _local19:Number; var _local20:Number; var _local21:int; var _local22:int; var _local23:Number; var _local24:int; var _local25:ClipVertex; var _local26:int; var _local27:int; var _local28:Number; var _local29:Number; var _local30:Number; _local5 = _arg2.m_vertexCount; _local6 = _arg2.m_vertices; _local7 = _arg4.m_vertexCount; _local8 = _arg4.m_vertices; _local9 = _arg3; _local10 = (((_arg3 + 1) == _local5)) ? 0 : (_arg3 + 1); _local11 = _local6[_local10]; _local12 = _local11.x; _local13 = _local11.y; _local11 = _local6[_local9]; _local12 = (_local12 - _local11.x); _local13 = (_local13 - _local11.y); _local14 = _local12; _local12 = _local13; _local13 = -(_local14); _local15 = (1 / Math.sqrt(((_local12 * _local12) + (_local13 * _local13)))); _local12 = (_local12 * _local15); _local13 = (_local13 * _local15); _local16 = _local12; _local17 = _local13; _local14 = _local16; _local18 = _arg2.m_R; _local16 = ((_local18.col1.x * _local14) + (_local18.col2.x * _local17)); _local17 = ((_local18.col1.y * _local14) + (_local18.col2.y * _local17)); _local19 = _local16; _local20 = _local17; _local18 = _arg4.m_R; _local14 = ((_local19 * _local18.col1.x) + (_local20 * _local18.col1.y)); _local20 = ((_local19 * _local18.col2.x) + (_local20 * _local18.col2.y)); _local19 = _local14; _local23 = Number.MAX_VALUE; _local24 = 0; while (_local24 < _local7) { _local26 = _local24; _local27 = (((_local24 + 1) < _local7)) ? (_local24 + 1) : 0; _local11 = _local8[_local27]; _local28 = _local11.x; _local29 = _local11.y; _local11 = _local8[_local26]; _local28 = (_local28 - _local11.x); _local29 = (_local29 - _local11.y); _local14 = _local28; _local28 = _local29; _local29 = -(_local14); _local15 = (1 / Math.sqrt(((_local28 * _local28) + (_local29 * _local29)))); _local28 = (_local28 * _local15); _local29 = (_local29 * _local15); _local30 = ((_local28 * _local19) + (_local29 * _local20)); if (_local30 < _local23){ _local23 = _local30; _local21 = _local26; _local22 = _local27; }; _local24++; }; _local25 = _arg1[0]; _local11 = _local25.v; _local11.SetV(_local8[_local21]); _local11.MulM(_arg4.m_R); _local11.Add(_arg4.m_position); _local25.id.features.referenceFace = _arg3; _local25.id.features.incidentEdge = _local21; _local25.id.features.incidentVertex = _local21; _local25 = _arg1[1]; _local11 = _local25.v; _local11.SetV(_local8[_local22]); _local11.MulM(_arg4.m_R); _local11.Add(_arg4.m_position); _local25.id.features.referenceFace = _arg3; _local25.id.features.incidentEdge = _local21; _local25.id.features.incidentVertex = _local22; } public static function b2CollidePolyAndCircle(_arg1:b2Manifold, _arg2:b2PolyShape, _arg3:b2CircleShape, _arg4:Boolean):void{ var _local5:b2ContactPoint; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:int; var _local14:Number; var _local15:Number; var _local16:int; var _local17:int; var _local18:int; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2Vec2; _arg1.pointCount = 0; _local8 = (_arg3.m_position.x - _arg2.m_position.x); _local9 = (_arg3.m_position.y - _arg2.m_position.y); _local10 = _arg2.m_R; _local11 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local9 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = _local11; _local13 = 0; _local14 = -(Number.MAX_VALUE); _local15 = _arg3.m_radius; _local16 = 0; while (_local16 < _arg2.m_vertexCount) { _local25 = ((_arg2.m_normals[_local16].x * (_local8 - _arg2.m_vertices[_local16].x)) + (_arg2.m_normals[_local16].y * (_local9 - _arg2.m_vertices[_local16].y))); if (_local25 > _local15){ return; }; if (_local25 > _local14){ _local14 = _local25; _local13 = _local16; }; _local16++; }; if (_local14 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local26 = _arg2.m_normals[_local13]; _arg1.normal.x = ((_local10.col1.x * _local26.x) + (_local10.col2.x * _local26.y)); _arg1.normal.y = ((_local10.col1.y * _local26.x) + (_local10.col2.y * _local26.y)); _local5 = _arg1.points[0]; _local5.id.features.incidentEdge = _local13; _local5.id.features.incidentVertex = b2_nullFeature; _local5.id.features.referenceFace = b2_nullFeature; _local5.id.features.flip = 0; _local5.position.x = (_arg3.m_position.x - (_local15 * _arg1.normal.x)); _local5.position.y = (_arg3.m_position.y - (_local15 * _arg1.normal.y)); _local5.separation = (_local14 - _local15); return; }; _local17 = _local13; _local18 = (((_local17 + 1) < _arg2.m_vertexCount)) ? (_local17 + 1) : 0; _local19 = (_arg2.m_vertices[_local18].x - _arg2.m_vertices[_local17].x); _local20 = (_arg2.m_vertices[_local18].y - _arg2.m_vertices[_local17].y); _local21 = Math.sqrt(((_local19 * _local19) + (_local20 * _local20))); _local19 = (_local19 / _local21); _local20 = (_local20 / _local21); if (_local21 < Number.MIN_VALUE){ _local6 = (_local8 - _arg2.m_vertices[_local17].x); _local7 = (_local9 - _arg2.m_vertices[_local17].y); _local12 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); _local6 = (_local6 / _local12); _local7 = (_local7 / _local12); if (_local12 > _local15){ return; }; _arg1.pointCount = 1; _arg1.normal.Set(((_local10.col1.x * _local6) + (_local10.col2.x * _local7)), ((_local10.col1.y * _local6) + (_local10.col2.y * _local7))); _local5 = _arg1.points[0]; _local5.id.features.incidentEdge = b2_nullFeature; _local5.id.features.incidentVertex = _local17; _local5.id.features.referenceFace = b2_nullFeature; _local5.id.features.flip = 0; _local5.position.x = (_arg3.m_position.x - (_local15 * _arg1.normal.x)); _local5.position.y = (_arg3.m_position.y - (_local15 * _arg1.normal.y)); _local5.separation = (_local12 - _local15); return; }; _local22 = (((_local8 - _arg2.m_vertices[_local17].x) * _local19) + ((_local9 - _arg2.m_vertices[_local17].y) * _local20)); _local5 = _arg1.points[0]; _local5.id.features.incidentEdge = b2_nullFeature; _local5.id.features.incidentVertex = b2_nullFeature; _local5.id.features.referenceFace = b2_nullFeature; _local5.id.features.flip = 0; if (_local22 <= 0){ _local23 = _arg2.m_vertices[_local17].x; _local24 = _arg2.m_vertices[_local17].y; _local5.id.features.incidentVertex = _local17; } else { if (_local22 >= _local21){ _local23 = _arg2.m_vertices[_local18].x; _local24 = _arg2.m_vertices[_local18].y; _local5.id.features.incidentVertex = _local18; } else { _local23 = ((_local19 * _local22) + _arg2.m_vertices[_local17].x); _local24 = ((_local20 * _local22) + _arg2.m_vertices[_local17].y); _local5.id.features.incidentEdge = _local17; }; }; _local6 = (_local8 - _local23); _local7 = (_local9 - _local24); _local12 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); _local6 = (_local6 / _local12); _local7 = (_local7 / _local12); if (_local12 > _local15){ return; }; _arg1.pointCount = 1; _arg1.normal.Set(((_local10.col1.x * _local6) + (_local10.col2.x * _local7)), ((_local10.col1.y * _local6) + (_local10.col2.y * _local7))); _local5.position.x = (_arg3.m_position.x - (_local15 * _arg1.normal.x)); _local5.position.y = (_arg3.m_position.y - (_local15 * _arg1.normal.y)); _local5.separation = (_local12 - _local15); } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolyShape, _arg3:b2PolyShape, _arg4:Boolean):Number{ var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:int; var _local11:Number; var _local12:int; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; _local5 = _arg2.m_vertexCount; _local6 = (_arg3.m_position.x - _arg2.m_position.x); _local7 = (_arg3.m_position.y - _arg2.m_position.y); _local8 = ((_local6 * _arg2.m_R.col1.x) + (_local7 * _arg2.m_R.col1.y)); _local9 = ((_local6 * _arg2.m_R.col2.x) + (_local7 * _arg2.m_R.col2.y)); _local10 = 0; _local11 = -(Number.MAX_VALUE); _local12 = 0; while (_local12 < _local5) { _local21 = ((_arg2.m_normals[_local12].x * _local8) + (_arg2.m_normals[_local12].y * _local9)); if (_local21 > _local11){ _local11 = _local21; _local10 = _local12; }; _local12++; }; _local13 = EdgeSeparation(_arg2, _local10, _arg3); if ((((_local13 > 0)) && ((_arg4 == false)))){ return (_local13); }; _local14 = (((_local10 - 1) >= 0)) ? (_local10 - 1) : (_local5 - 1); _local15 = EdgeSeparation(_arg2, _local14, _arg3); if ((((_local15 > 0)) && ((_arg4 == false)))){ return (_local15); }; _local16 = (((_local10 + 1) < _local5)) ? (_local10 + 1) : 0; _local17 = EdgeSeparation(_arg2, _local16, _arg3); if ((((_local17 > 0)) && ((_arg4 == false)))){ return (_local17); }; if ((((_local15 > _local13)) && ((_local15 > _local17)))){ _local20 = -1; _local18 = _local14; _local19 = _local15; } else { if (_local17 > _local13){ _local20 = 1; _local18 = _local16; _local19 = _local17; } else { _arg1[0] = _local10; return (_local13); }; }; while (true) { if (_local20 == -1){ _local10 = (((_local18 - 1) >= 0)) ? (_local18 - 1) : (_local5 - 1); } else { _local10 = (((_local18 + 1) < _local5)) ? (_local18 + 1) : 0; }; _local13 = EdgeSeparation(_arg2, _local10, _arg3); if ((((_local13 > 0)) && ((_arg4 == false)))){ return (_local13); }; if (_local13 > _local19){ _local18 = _local10; _local19 = _local13; } else { break; }; }; _arg1[0] = _local18; return (_local19); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:int; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; _local5 = 0; _local6 = _arg2[0].v; _local7 = _arg2[1].v; _local8 = (b2Math.b2Dot(_arg3, _arg2[0].v) - _arg4); _local9 = (b2Math.b2Dot(_arg3, _arg2[1].v) - _arg4); if (_local8 <= 0){ var _temp1 = _local5; _local5 = (_local5 + 1); var _local12 = _temp1; _arg1[_local12] = _arg2[0]; }; if (_local9 <= 0){ var _temp2 = _local5; _local5 = (_local5 + 1); _local12 = _temp2; _arg1[_local12] = _arg2[1]; }; if ((_local8 * _local9) < 0){ _local10 = (_local8 / (_local8 - _local9)); _local11 = _arg1[_local5].v; _local11.x = (_local6.x + (_local10 * (_local7.x - _local6.x))); _local11.y = (_local6.y + (_local10 * (_local7.y - _local6.y))); if (_local8 > 0){ _arg1[_local5].id = _arg2[0].id; } else { _arg1[_local5].id = _arg2[1].id; }; _local5++; }; return (_local5); } public static function b2CollidePoly(_arg1:b2Manifold, _arg2:b2PolyShape, _arg3:b2PolyShape, _arg4:Boolean):void{ var _local5:int; var _local6:Array; var _local7:Number; var _local8:int; var _local9:Array; var _local10:Number; var _local11:b2PolyShape; var _local12:b2PolyShape; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:Array; var _local18:int; var _local19:Array; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:b2Mat22; 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:Array; var _local39:Array; var _local40:int; var _local41:int; var _local42:int; var _local43:b2Vec2; var _local44:Number; var _local45:b2ContactPoint; _arg1.pointCount = 0; _local5 = 0; _local6 = [_local5]; _local7 = FindMaxSeparation(_local6, _arg2, _arg3, _arg4); _local5 = _local6[0]; if ((((_local7 > 0)) && ((_arg4 == false)))){ return; }; _local8 = 0; _local9 = [_local8]; _local10 = FindMaxSeparation(_local9, _arg3, _arg2, _arg4); _local8 = _local9[0]; if ((((_local10 > 0)) && ((_arg4 == false)))){ return; }; _local15 = 0.98; _local16 = 0.001; if (_local10 > ((_local15 * _local7) + _local16)){ _local11 = _arg3; _local12 = _arg2; _local13 = _local8; _local14 = 1; } else { _local11 = _arg2; _local12 = _arg3; _local13 = _local5; _local14 = 0; }; _local17 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local17, _local11, _local13, _local12); _local18 = _local11.m_vertexCount; _local19 = _local11.m_vertices; _local20 = _local19[_local13]; _local21 = (((_local13 + 1) < _local18)) ? _local19[(_local13 + 1)] : _local19[0]; _local22 = (_local21.x - _local20.x); _local23 = (_local21.y - _local20.y); _local24 = (_local21.x - _local20.x); _local25 = (_local21.y - _local20.y); _local26 = _local24; _local27 = _local11.m_R; _local24 = ((_local27.col1.x * _local26) + (_local27.col2.x * _local25)); _local25 = ((_local27.col1.y * _local26) + (_local27.col2.y * _local25)); _local28 = (1 / Math.sqrt(((_local24 * _local24) + (_local25 * _local25)))); _local24 = (_local24 * _local28); _local25 = (_local25 * _local28); _local29 = _local24; _local30 = _local25; _local26 = _local29; _local29 = _local30; _local30 = -(_local26); _local31 = _local20.x; _local32 = _local20.y; _local26 = _local31; _local27 = _local11.m_R; _local31 = ((_local27.col1.x * _local26) + (_local27.col2.x * _local32)); _local32 = ((_local27.col1.y * _local26) + (_local27.col2.y * _local32)); _local31 = (_local31 + _local11.m_position.x); _local32 = (_local32 + _local11.m_position.y); _local33 = _local21.x; _local34 = _local21.y; _local26 = _local33; _local27 = _local11.m_R; _local33 = ((_local27.col1.x * _local26) + (_local27.col2.x * _local34)); _local34 = ((_local27.col1.y * _local26) + (_local27.col2.y * _local34)); _local33 = (_local33 + _local11.m_position.x); _local34 = (_local34 + _local11.m_position.y); _local35 = ((_local29 * _local31) + (_local30 * _local32)); _local36 = -(((_local24 * _local31) + (_local25 * _local32))); _local37 = ((_local24 * _local33) + (_local25 * _local34)); _local38 = [new ClipVertex(), new ClipVertex()]; _local39 = [new ClipVertex(), new ClipVertex()]; b2CollidePolyTempVec.Set(-(_local24), -(_local25)); _local40 = ClipSegmentToLine(_local38, _local17, b2CollidePolyTempVec, _local36); if (_local40 < 2){ return; }; b2CollidePolyTempVec.Set(_local24, _local25); _local40 = ClipSegmentToLine(_local39, _local38, b2CollidePolyTempVec, _local37); if (_local40 < 2){ return; }; if (_local14){ _arg1.normal.Set(-(_local29), -(_local30)); } else { _arg1.normal.Set(_local29, _local30); }; _local41 = 0; _local42 = 0; while (_local42 < b2Settings.b2_maxManifoldPoints) { _local43 = _local39[_local42].v; _local44 = (((_local29 * _local43.x) + (_local30 * _local43.y)) - _local35); if ((((_local44 <= 0)) || ((_arg4 == true)))){ _local45 = _arg1.points[_local41]; _local45.separation = _local44; _local45.position.SetV(_local39[_local42].v); _local45.id.Set(_local39[_local42].id); _local45.id.features.flip = _local14; _local41++; }; _local42++; }; _arg1.pointCount = _local41; } public static function b2CollideCircle(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2CircleShape, _arg4:Boolean):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2ContactPoint; var _local11:Number; var _local12:Number; _arg1.pointCount = 0; _local5 = (_arg3.m_position.x - _arg2.m_position.x); _local6 = (_arg3.m_position.y - _arg2.m_position.y); _local7 = ((_local5 * _local5) + (_local6 * _local6)); _local8 = (_arg2.m_radius + _arg3.m_radius); if ((((_local7 > (_local8 * _local8))) && ((_arg4 == false)))){ return; }; if (_local7 < Number.MIN_VALUE){ _local9 = -(_local8); _arg1.normal.Set(0, 1); } else { _local11 = Math.sqrt(_local7); _local9 = (_local11 - _local8); _local12 = (1 / _local11); _arg1.normal.x = (_local12 * _local5); _arg1.normal.y = (_local12 * _local6); }; _arg1.pointCount = 1; _local10 = _arg1.points[0]; _local10.id.key = 0; _local10.separation = _local9; _local10.position.x = (_arg3.m_position.x - (_arg3.m_radius * _arg1.normal.x)); _local10.position.y = (_arg3.m_position.y - (_arg3.m_radius * _arg1.normal.y)); } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceFace = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ContactPoint { public var separation:Number; public var position:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactPoint(){ position = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var points:Array; public var pointCount:int; public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactPoint(); _local1++; }; normal = new b2Vec2(); } } }//package Box2D.Collision
Section 18
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 19
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = 0xFFFF; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = 0xFFFF; public static var b2_tableCapacity:int = 8192; public function b2Pair(){ userData = null; super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 20
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 21
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[(b2Settings.b2_maxPairs - 1)].next = b2Pair.b2_nullPair; m_pairCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:uint; _local4 = m_hashTable[_arg3]; while (((!((_local4 == b2Pair.b2_nullPair))) && ((Equals(m_pairs[_local4], _arg1, _arg2) == false)))) { _local4 = m_pairs[_local4].next; }; if (_local4 == b2Pair.b2_nullPair){ return (null); }; return (m_pairs[_local4]); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:int; var _local2:int; var _local3:Array; var _local4:b2Pair; var _local5:b2Proxy; var _local6:b2Proxy; _local2 = 0; _local3 = m_broadPhase.m_proxyPool; _local1 = 0; while (_local1 < m_pairBufferCount) { _local4 = Find(m_pairBuffer[_local1].proxyId1, m_pairBuffer[_local1].proxyId2); _local4.ClearBuffered(); _local5 = _local3[_local4.proxyId1]; _local6 = _local3[_local4.proxyId2]; if (_local4.IsRemoved()){ if (_local4.IsFinal() == true){ m_callback.PairRemoved(_local5.userData, _local6.userData, _local4.userData); }; m_pairBuffer[_local2].proxyId1 = _local4.proxyId1; m_pairBuffer[_local2].proxyId2 = _local4.proxyId2; _local2++; } else { if (_local4.IsFinal() == false){ _local4.userData = m_callback.PairAdded(_local5.userData, _local6.userData); _local4.SetFinal(); }; }; _local1++; }; _local1 = 0; while (_local1 < _local2) { RemovePair(m_pairBuffer[_local1].proxyId1, m_pairBuffer[_local1].proxyId2); _local1++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2Pair; _local3 = Find(_arg1, _arg2); if (_local3 == null){ return; }; if (_local3.IsBuffered() == false){ _local3.SetBuffered(); m_pairBuffer[m_pairBufferCount].proxyId1 = _local3.proxyId1; m_pairBuffer[m_pairBufferCount].proxyId2 = _local3.proxyId2; m_pairBufferCount++; }; _local3.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:uint; var _local4:uint; var _local5:b2Pair; var _local6:uint; var _local7:uint; var _local8:b2Pair; var _local9:*; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = m_hashTable[_local3]; _local5 = null; while (_local4 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local4], _arg1, _arg2)){ _local7 = _local4; if (_local5){ _local5.next = m_pairs[_local4].next; } else { m_hashTable[_local3] = m_pairs[_local4].next; }; _local8 = m_pairs[_local7]; _local9 = _local8.userData; _local8.next = m_freePair; _local8.proxyId1 = b2Pair.b2_nullProxy; _local8.proxyId2 = b2Pair.b2_nullProxy; _local8.userData = null; _local8.status = 0; m_freePair = _local7; m_pairCount--; return (_local9); } else { _local5 = m_pairs[_local4]; _local4 = _local5.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2Pair; _local3 = AddPair(_arg1, _arg2); if (_local3.IsBuffered() == false){ _local3.SetBuffered(); m_pairBuffer[m_pairBufferCount].proxyId1 = _local3.proxyId1; m_pairBuffer[m_pairBufferCount].proxyId2 = _local3.proxyId2; m_pairBufferCount++; }; _local3.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint; _local3 = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 22
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 23
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var v:b2Vec2; public var id:b2ContactID; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 24
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceFace:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceFace():int{ return (_referenceFace); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceFace(_arg1:int):void{ _referenceFace = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceFace & 0xFF)); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 25
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 26
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 27
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function SetZero():void{ x = 0; y = 0; } public function CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function Abs():void{ x = Math.abs(x); y = Math.abs(y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Length(); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 28
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_lengthUnitsPerMeter:Number = 30; public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.3; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.15; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxShapesPerBody:int = 64; public static const b2_maxProxies:int = 0x0400; public static const b2_velocityThreshold:Number = 30; public static const b2_timeToSleep:Number = 0.5; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 8192; public static const b2_maxManifoldPoints:int = 2; public static const b2_massUnitsPerKilogram:Number = 1; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearCorrection:Number = 6; public static const b2_maxPolyVertices:int = 8; public static const b2_timeUnitsPerSecond:Number = 1; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 29
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { public var m_manifold:Array; public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifold = [new b2Manifold()]; super(_arg1, _arg2); m_manifold[0].pointCount = 0; m_manifold[0].points[0].normalImpulse = 0; m_manifold[0].points[0].tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifold); } override public function Evaluate():void{ b2Collision.b2CollideCircle(m_manifold[0], (m_shape1 as b2CircleShape), (m_shape2 as b2CircleShape), false); if (m_manifold[0].pointCount > 0){ m_manifoldCount = 1; } else { m_manifoldCount = 0; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 30
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactNode; public var m_node2:b2ContactNode; public var m_restitution:Number; public var m_flags:uint; public static var s_registers:Array; public static var s_initialized:Boolean = false; public static var e_islandFlag:uint = 1; public static var e_destroyFlag:uint = 2; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactNode(); m_node2 = new b2ContactNode(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function GetShape1():b2Shape{ return (m_shape1); } public function GetNext():b2Contact{ return (m_next); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Evaluate():void{ } public static function InitializeRegisters():void{ var _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polyShape, b2Shape.e_circleShape); AddType(b2PolyContact.Create, b2PolyContact.Destroy, b2Shape.e_polyShape, b2Shape.e_polyShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:*; if (_arg1.GetManifoldCount() > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4].destroyFcn; _local5(_arg1, _arg2); } public static function AddType(_arg1, _arg2, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local4:int; var _local5:int; var _local6:*; var _local7:b2Contact; var _local8:int; var _local9:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5].createFcn; if (_local6){ if (s_registers[_local4][_local5].primary){ return (_local6(_arg1, _arg2, _arg3)); }; _local7 = _local6(_arg2, _arg1, _arg3); _local8 = 0; while (_local8 < _local7.GetManifoldCount()) { _local9 = _local7.GetManifolds()[_local8]; _local7.GetManifolds()[_local8].normal = _local9.normal.Negative(); _local8++; }; return (_local7); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 31
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 32
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var tangentMass:Number; public var normalMass:Number; public var velocityBias:Number; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 33
//b2ContactNode (Box2D.Dynamics.Contacts.b2ContactNode) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactNode { public var next:b2ContactNode; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactNode; } }//package Box2D.Dynamics.Contacts
Section 34
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn; public var destroyFcn; } }//package Box2D.Dynamics.Contacts
Section 35
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public function b2ContactSolver(_arg1:Array, _arg2:int, _arg3){ var _local4:int; var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; var _local8:b2Contact; var _local9:b2Body; var _local10:b2Body; var _local11:int; var _local12:Array; 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:int; var _local22:b2Manifold; var _local23:Number; var _local24:Number; var _local25:b2ContactConstraint; var _local26:uint; var _local27:b2ContactPoint; var _local28:b2ContactConstraintPoint; 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; m_constraints = new Array(); super(); m_allocator = _arg3; m_constraintCount = 0; _local4 = 0; while (_local4 < _arg2) { m_constraintCount = (m_constraintCount + _arg1[_local4].GetManifoldCount()); _local4++; }; _local4 = 0; while (_local4 < m_constraintCount) { m_constraints[_local4] = new b2ContactConstraint(); _local4++; }; _local7 = 0; _local4 = 0; while (_local4 < _arg2) { _local8 = _arg1[_local4]; _local9 = _local8.m_shape1.m_body; _local10 = _local8.m_shape2.m_body; _local11 = _local8.GetManifoldCount(); _local12 = _local8.GetManifolds(); _local13 = _local8.m_friction; _local14 = _local8.m_restitution; _local15 = _local9.m_linearVelocity.x; _local16 = _local9.m_linearVelocity.y; _local17 = _local10.m_linearVelocity.x; _local18 = _local10.m_linearVelocity.y; _local19 = _local9.m_angularVelocity; _local20 = _local10.m_angularVelocity; _local21 = 0; while (_local21 < _local11) { _local22 = _local12[_local21]; _local23 = _local22.normal.x; _local24 = _local22.normal.y; _local25 = m_constraints[_local7]; _local25.body1 = _local9; _local25.body2 = _local10; _local25.manifold = _local22; _local25.normal.x = _local23; _local25.normal.y = _local24; _local25.pointCount = _local22.pointCount; _local25.friction = _local13; _local25.restitution = _local14; _local26 = 0; while (_local26 < _local25.pointCount) { _local27 = _local22.points[_local26]; _local28 = _local25.points[_local26]; _local28.normalImpulse = _local27.normalImpulse; _local28.tangentImpulse = _local27.tangentImpulse; _local28.separation = _local27.separation; _local29 = (_local27.position.x - _local9.m_position.x); _local30 = (_local27.position.y - _local9.m_position.y); _local31 = (_local27.position.x - _local10.m_position.x); _local32 = (_local27.position.y - _local10.m_position.y); _local5 = _local28.localAnchor1; _local6 = _local9.m_R; _local5.x = ((_local29 * _local6.col1.x) + (_local30 * _local6.col1.y)); _local5.y = ((_local29 * _local6.col2.x) + (_local30 * _local6.col2.y)); _local5 = _local28.localAnchor2; _local6 = _local10.m_R; _local5.x = ((_local31 * _local6.col1.x) + (_local32 * _local6.col1.y)); _local5.y = ((_local31 * _local6.col2.x) + (_local32 * _local6.col2.y)); _local33 = ((_local29 * _local29) + (_local30 * _local30)); _local34 = ((_local31 * _local31) + (_local32 * _local32)); _local35 = ((_local29 * _local23) + (_local30 * _local24)); _local36 = ((_local31 * _local23) + (_local32 * _local24)); _local37 = (_local9.m_invMass + _local10.m_invMass); _local37 = (_local37 + ((_local9.m_invI * (_local33 - (_local35 * _local35))) + (_local10.m_invI * (_local34 - (_local36 * _local36))))); _local28.normalMass = (1 / _local37); _local38 = _local24; _local39 = -(_local23); _local40 = ((_local29 * _local38) + (_local30 * _local39)); _local41 = ((_local31 * _local38) + (_local32 * _local39)); _local42 = (_local9.m_invMass + _local10.m_invMass); _local42 = (_local42 + ((_local9.m_invI * (_local33 - (_local40 * _local40))) + (_local10.m_invI * (_local34 - (_local41 * _local41))))); _local28.tangentMass = (1 / _local42); _local28.velocityBias = 0; if (_local28.separation > 0){ _local28.velocityBias = (-60 * _local28.separation); }; _local43 = (((_local17 + (-(_local20) * _local32)) - _local15) - (-(_local19) * _local30)); _local44 = (((_local18 + (_local20 * _local31)) - _local16) - (_local19 * _local29)); _local45 = ((_local25.normal.x * _local43) + (_local25.normal.y * _local44)); if (_local45 < -(b2Settings.b2_velocityThreshold)){ _local28.velocityBias = (_local28.velocityBias + (-(_local25.restitution) * _local45)); }; _local26++; }; _local7++; _local21++; }; _local4++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; 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:int; var _local22:int; var _local23:b2ContactConstraintPoint; 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; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_position; _local10 = _local7.m_rotation; _local11 = _local8.m_position; _local12 = _local8.m_rotation; _local13 = _local7.m_invMass; _local14 = _local7.m_invI; _local15 = _local8.m_invMass; _local16 = _local8.m_invI; _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local18; _local20 = -(_local17); _local21 = _local6.pointCount; _local22 = 0; while (_local22 < _local21) { _local23 = _local6.points[_local22]; _local3 = _local7.m_R; _local4 = _local23.localAnchor1; _local24 = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local25 = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local3 = _local8.m_R; _local4 = _local23.localAnchor2; _local26 = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local27 = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local28 = (_local9.x + _local24); _local29 = (_local9.y + _local25); _local30 = (_local11.x + _local26); _local31 = (_local11.y + _local27); _local32 = (_local30 - _local28); _local33 = (_local31 - _local29); _local34 = (((_local32 * _local17) + (_local33 * _local18)) + _local23.separation); _local2 = b2Math.b2Min(_local2, _local34); _local35 = (_arg1 * b2Math.b2Clamp((_local34 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local36 = (-(_local23.normalMass) * _local35); _local37 = _local23.positionImpulse; _local23.positionImpulse = b2Math.b2Max((_local37 + _local36), 0); _local36 = (_local23.positionImpulse - _local37); _local38 = (_local36 * _local17); _local39 = (_local36 * _local18); _local9.x = (_local9.x - (_local13 * _local38)); _local9.y = (_local9.y - (_local13 * _local39)); _local10 = (_local10 - (_local14 * ((_local24 * _local39) - (_local25 * _local38)))); _local7.m_R.Set(_local10); _local11.x = (_local11.x + (_local15 * _local38)); _local11.y = (_local11.y + (_local15 * _local39)); _local12 = (_local12 + (_local16 * ((_local26 * _local39) - (_local27 * _local38)))); _local8.m_R.Set(_local12); _local22++; }; _local7.m_rotation = _local10; _local8.m_rotation = _local12; _local5++; }; return ((_local2 >= -(b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; 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:b2Mat22; var _local14:b2Vec2; var _local15:int; var _local16:b2ContactConstraint; var _local17:b2Body; var _local18:b2Body; var _local19:Number; var _local20:b2Vec2; var _local21:Number; var _local22:b2Vec2; 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; _local15 = 0; while (_local15 < m_constraintCount) { _local16 = m_constraints[_local15]; _local17 = _local16.body1; _local18 = _local16.body2; _local19 = _local17.m_angularVelocity; _local20 = _local17.m_linearVelocity; _local21 = _local18.m_angularVelocity; _local22 = _local18.m_linearVelocity; _local23 = _local17.m_invMass; _local24 = _local17.m_invI; _local25 = _local18.m_invMass; _local26 = _local18.m_invI; _local27 = _local16.normal.x; _local28 = _local16.normal.y; _local29 = _local28; _local30 = -(_local27); _local31 = _local16.pointCount; _local1 = 0; while (_local1 < _local31) { _local2 = _local16.points[_local1]; _local13 = _local17.m_R; _local14 = _local2.localAnchor1; _local3 = ((_local13.col1.x * _local14.x) + (_local13.col2.x * _local14.y)); _local4 = ((_local13.col1.y * _local14.x) + (_local13.col2.y * _local14.y)); _local13 = _local18.m_R; _local14 = _local2.localAnchor2; _local5 = ((_local13.col1.x * _local14.x) + (_local13.col2.x * _local14.y)); _local6 = ((_local13.col1.y * _local14.x) + (_local13.col2.y * _local14.y)); _local7 = (((_local22.x + (-(_local21) * _local6)) - _local20.x) - (-(_local19) * _local4)); _local8 = (((_local22.y + (_local21 * _local5)) - _local20.y) - (_local19 * _local3)); _local32 = ((_local7 * _local27) + (_local8 * _local28)); _local9 = (-(_local2.normalMass) * (_local32 - _local2.velocityBias)); _local10 = b2Math.b2Max((_local2.normalImpulse + _local9), 0); _local9 = (_local10 - _local2.normalImpulse); _local11 = (_local9 * _local27); _local12 = (_local9 * _local28); _local20.x = (_local20.x - (_local23 * _local11)); _local20.y = (_local20.y - (_local23 * _local12)); _local19 = (_local19 - (_local24 * ((_local3 * _local12) - (_local4 * _local11)))); _local22.x = (_local22.x + (_local25 * _local11)); _local22.y = (_local22.y + (_local25 * _local12)); _local21 = (_local21 + (_local26 * ((_local5 * _local12) - (_local6 * _local11)))); _local2.normalImpulse = _local10; _local7 = (((_local22.x + (-(_local21) * _local6)) - _local20.x) - (-(_local19) * _local4)); _local8 = (((_local22.y + (_local21 * _local5)) - _local20.y) - (_local19 * _local3)); _local33 = ((_local7 * _local29) + (_local8 * _local30)); _local9 = (_local2.tangentMass * -(_local33)); _local34 = (_local16.friction * _local2.normalImpulse); _local10 = b2Math.b2Clamp((_local2.tangentImpulse + _local9), -(_local34), _local34); _local9 = (_local10 - _local2.tangentImpulse); _local11 = (_local9 * _local29); _local12 = (_local9 * _local30); _local20.x = (_local20.x - (_local23 * _local11)); _local20.y = (_local20.y - (_local23 * _local12)); _local19 = (_local19 - (_local24 * ((_local3 * _local12) - (_local4 * _local11)))); _local22.x = (_local22.x + (_local25 * _local11)); _local22.y = (_local22.y + (_local25 * _local12)); _local21 = (_local21 + (_local26 * ((_local5 * _local12) - (_local6 * _local11)))); _local2.tangentImpulse = _local10; _local1++; }; _local17.m_angularVelocity = _local19; _local18.m_angularVelocity = _local21; _local15++; }; } public function PreSolve():void{ var _local1:b2Vec2; var _local2:b2Vec2; var _local3:b2Mat22; var _local4:int; var _local5:b2ContactConstraint; var _local6:b2Body; var _local7:b2Body; 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:int; var _local17:int; var _local18:b2ContactConstraintPoint; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2ContactConstraintPoint; _local4 = 0; while (_local4 < m_constraintCount) { _local5 = m_constraints[_local4]; _local6 = _local5.body1; _local7 = _local5.body2; _local8 = _local6.m_invMass; _local9 = _local6.m_invI; _local10 = _local7.m_invMass; _local11 = _local7.m_invI; _local12 = _local5.normal.x; _local13 = _local5.normal.y; _local14 = _local13; _local15 = -(_local12); if (b2World.s_enableWarmStarting){ _local17 = _local5.pointCount; _local16 = 0; while (_local16 < _local17) { _local18 = _local5.points[_local16]; _local19 = ((_local18.normalImpulse * _local12) + (_local18.tangentImpulse * _local14)); _local20 = ((_local18.normalImpulse * _local13) + (_local18.tangentImpulse * _local15)); _local3 = _local6.m_R; _local1 = _local18.localAnchor1; _local21 = ((_local3.col1.x * _local1.x) + (_local3.col2.x * _local1.y)); _local22 = ((_local3.col1.y * _local1.x) + (_local3.col2.y * _local1.y)); _local3 = _local7.m_R; _local1 = _local18.localAnchor2; _local23 = ((_local3.col1.x * _local1.x) + (_local3.col2.x * _local1.y)); _local24 = ((_local3.col1.y * _local1.x) + (_local3.col2.y * _local1.y)); _local6.m_angularVelocity = (_local6.m_angularVelocity - (_local9 * ((_local21 * _local20) - (_local22 * _local19)))); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x - (_local8 * _local19)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y - (_local8 * _local20)); _local7.m_angularVelocity = (_local7.m_angularVelocity + (_local11 * ((_local23 * _local20) - (_local24 * _local19)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x + (_local10 * _local19)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y + (_local10 * _local20)); _local18.positionImpulse = 0; _local16++; }; } else { _local17 = _local5.pointCount; _local16 = 0; while (_local16 < _local17) { _local25 = _local5.points[_local16]; _local25.normalImpulse = 0; _local25.tangentImpulse = 0; _local25.positionImpulse = 0; _local16++; }; }; _local4++; }; } public function PostSolve():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ContactPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 36
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { public class b2NullContact extends b2Contact { public function b2NullContact():void{ } override public function GetManifolds():Array{ return (null); } override public function Evaluate():void{ } } }//package Box2D.Dynamics.Contacts
Section 37
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { public var m_manifold:Array; public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifold = [new b2Manifold()]; super(_arg1, _arg2); b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polyShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold[0].pointCount = 0; m_manifold[0].points[0].normalImpulse = 0; m_manifold[0].points[0].tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifold); } override public function Evaluate():void{ b2Collision.b2CollidePolyAndCircle(m_manifold[0], (m_shape1 as b2PolyShape), (m_shape2 as b2CircleShape), false); if (m_manifold[0].pointCount > 0){ m_manifoldCount = 1; } else { m_manifoldCount = 0; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2PolyContact (Box2D.Dynamics.Contacts.b2PolyContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolyContact extends b2Contact { public var m_manifold:Array; private var m0:b2Manifold; public function b2PolyContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifold = [new b2Manifold()]; super(_arg1, _arg2); m_manifold[0].pointCount = 0; } override public function GetManifolds():Array{ return (m_manifold); } override public function Evaluate():void{ var _local1:b2Manifold; var _local2:Array; var _local3:int; var _local4:b2ContactPoint; var _local5:b2ContactPoint; var _local6:Array; var _local7:int; var _local8:b2ContactPoint; var _local9:uint; var _local10:int; var _local11:b2ContactPoint; var _local12:b2ContactID; _local1 = m_manifold[0]; _local2 = m0.points; _local3 = 0; while (_local3 < _local1.pointCount) { _local4 = _local2[_local3]; _local5 = _local1.points[_local3]; _local4.normalImpulse = _local5.normalImpulse; _local4.tangentImpulse = _local5.tangentImpulse; _local4.id = _local5.id.Copy(); _local3++; }; m0.pointCount = _local1.pointCount; b2Collision.b2CollidePoly(_local1, (m_shape1 as b2PolyShape), (m_shape2 as b2PolyShape), false); if (_local1.pointCount > 0){ _local6 = [false, false]; _local7 = 0; while (_local7 < _local1.pointCount) { _local8 = _local1.points[_local7]; _local8.normalImpulse = 0; _local8.tangentImpulse = 0; _local9 = _local8.id.key; _local10 = 0; while (_local10 < m0.pointCount) { if (_local6[_local10] == true){ } else { _local11 = m0.points[_local10]; _local12 = _local11.id; if (_local12.key == _local9){ _local6[_local10] = true; _local8.normalImpulse = _local11.normalImpulse; _local8.tangentImpulse = _local11.tangentImpulse; break; }; }; _local10++; }; _local7++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor2:b2Vec2; public var m_mass:Number; public var m_localAnchor1:b2Vec2; public var m_u:b2Vec2; public var m_impulse:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); _local2 = m_body1.m_R; _local3 = (_arg1.anchorPoint1.x - m_body1.m_position.x); _local4 = (_arg1.anchorPoint1.y - m_body1.m_position.y); m_localAnchor1.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor1.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); _local2 = m_body2.m_R; _local3 = (_arg1.anchorPoint2.x - m_body2.m_position.x); _local4 = (_arg1.anchorPoint2.y - m_body2.m_position.y); m_localAnchor2.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor2.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); _local3 = (_arg1.anchorPoint2.x - _arg1.anchorPoint1.x); _local4 = (_arg1.anchorPoint2.y - _arg1.anchorPoint1.y); m_length = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); m_impulse = 0; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; 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; _local2 = m_body1.m_R; _local3 = ((_local2.col1.x * m_localAnchor1.x) + (_local2.col2.x * m_localAnchor1.y)); _local4 = ((_local2.col1.y * m_localAnchor1.x) + (_local2.col2.y * m_localAnchor1.y)); _local2 = m_body2.m_R; _local5 = ((_local2.col1.x * m_localAnchor2.x) + (_local2.col2.x * m_localAnchor2.y)); _local6 = ((_local2.col1.y * m_localAnchor2.x) + (_local2.col2.y * m_localAnchor2.y)); _local7 = (m_body1.m_linearVelocity.x + (-(m_body1.m_angularVelocity) * _local4)); _local8 = (m_body1.m_linearVelocity.y + (m_body1.m_angularVelocity * _local3)); _local9 = (m_body2.m_linearVelocity.x + (-(m_body2.m_angularVelocity) * _local6)); _local10 = (m_body2.m_linearVelocity.y + (m_body2.m_angularVelocity * _local5)); _local11 = ((m_u.x * (_local9 - _local7)) + (m_u.y * (_local10 - _local8))); _local12 = (-(m_mass) * _local11); m_impulse = (m_impulse + _local12); _local13 = (_local12 * m_u.x); _local14 = (_local12 * m_u.y); m_body1.m_linearVelocity.x = (m_body1.m_linearVelocity.x - (m_body1.m_invMass * _local13)); m_body1.m_linearVelocity.y = (m_body1.m_linearVelocity.y - (m_body1.m_invMass * _local14)); m_body1.m_angularVelocity = (m_body1.m_angularVelocity - (m_body1.m_invI * ((_local3 * _local14) - (_local4 * _local13)))); m_body2.m_linearVelocity.x = (m_body2.m_linearVelocity.x + (m_body2.m_invMass * _local13)); m_body2.m_linearVelocity.y = (m_body2.m_linearVelocity.y + (m_body2.m_invMass * _local14)); m_body2.m_angularVelocity = (m_body2.m_angularVelocity + (m_body2.m_invI * ((_local5 * _local14) - (_local6 * _local13)))); } override public function GetAnchor1():b2Vec2{ return (b2Math.AddVV(m_body1.m_position, b2Math.b2MulMV(m_body1.m_R, m_localAnchor1))); } override public function GetAnchor2():b2Vec2{ return (b2Math.AddVV(m_body2.m_position, b2Math.b2MulMV(m_body2.m_R, m_localAnchor2))); } override public function PrepareVelocitySolver():void{ var _local1:b2Mat22; 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; _local1 = m_body1.m_R; _local2 = ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y)); _local3 = ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y)); _local1 = m_body2.m_R; _local4 = ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y)); _local5 = ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y)); m_u.x = (((m_body2.m_position.x + _local4) - m_body1.m_position.x) - _local2); m_u.y = (((m_body2.m_position.y + _local5) - m_body1.m_position.y) - _local3); _local6 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local6 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local6)); } else { m_u.SetZero(); }; _local7 = ((_local2 * m_u.y) - (_local3 * m_u.x)); _local8 = ((_local4 * m_u.y) - (_local5 * m_u.x)); m_mass = (((m_body1.m_invMass + ((m_body1.m_invI * _local7) * _local7)) + m_body2.m_invMass) + ((m_body2.m_invI * _local8) * _local8)); m_mass = (1 / m_mass); if (b2World.s_enableWarmStarting){ _local9 = (m_impulse * m_u.x); _local10 = (m_impulse * m_u.y); m_body1.m_linearVelocity.x = (m_body1.m_linearVelocity.x - (m_body1.m_invMass * _local9)); m_body1.m_linearVelocity.y = (m_body1.m_linearVelocity.y - (m_body1.m_invMass * _local10)); m_body1.m_angularVelocity = (m_body1.m_angularVelocity - (m_body1.m_invI * ((_local2 * _local10) - (_local3 * _local9)))); m_body2.m_linearVelocity.x = (m_body2.m_linearVelocity.x + (m_body2.m_invMass * _local9)); m_body2.m_linearVelocity.y = (m_body2.m_linearVelocity.y + (m_body2.m_invMass * _local10)); m_body2.m_angularVelocity = (m_body2.m_angularVelocity + (m_body2.m_invI * ((_local4 * _local10) - (_local5 * _local9)))); } else { m_impulse = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(); _local2.SetV(m_u); _local2.Multiply((m_impulse * _arg1)); return (_local2); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; 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; _local1 = m_body1.m_R; _local2 = ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y)); _local3 = ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y)); _local1 = m_body2.m_R; _local4 = ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y)); _local5 = ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y)); _local6 = (((m_body2.m_position.x + _local4) - m_body1.m_position.x) - _local2); _local7 = (((m_body2.m_position.y + _local5) - m_body1.m_position.y) - _local3); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); _local6 = (_local6 / _local8); _local7 = (_local7 / _local8); _local9 = (_local8 - m_length); _local9 = b2Math.b2Clamp(_local9, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local10 = (-(m_mass) * _local9); m_u.Set(_local6, _local7); _local11 = (_local10 * m_u.x); _local12 = (_local10 * m_u.y); m_body1.m_position.x = (m_body1.m_position.x - (m_body1.m_invMass * _local11)); m_body1.m_position.y = (m_body1.m_position.y - (m_body1.m_invMass * _local12)); m_body1.m_rotation = (m_body1.m_rotation - (m_body1.m_invI * ((_local2 * _local12) - (_local3 * _local11)))); m_body2.m_position.x = (m_body2.m_position.x + (m_body2.m_invMass * _local11)); m_body2.m_position.y = (m_body2.m_position.y + (m_body2.m_invMass * _local12)); m_body2.m_rotation = (m_body2.m_rotation + (m_body2.m_invI * ((_local4 * _local12) - (_local5 * _local11)))); m_body1.m_R.Set(m_body1.m_rotation); m_body2.m_R.Set(m_body2.m_rotation); return ((b2Math.b2Abs(_local9) < b2Settings.b2_linearSlop)); } } }//package Box2D.Dynamics.Joints
Section 40
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2DistanceJointDef extends b2JointDef { public var anchorPoint2:b2Vec2; public var anchorPoint1:b2Vec2; public function b2DistanceJointDef(){ anchorPoint1 = new b2Vec2(); anchorPoint2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; } } }//package Box2D.Dynamics.Joints
Section 41
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_impulse:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:Number; var _local3:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_arg1.joint1.m_type == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local2 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local2 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_arg1.joint2.m_type == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local3 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local3 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local2 + (m_ratio * _local3)); m_impulse = 0; } override public function GetAnchor1():b2Vec2{ var _local1:b2Mat22; _local1 = m_body1.m_R; return (new b2Vec2((m_body1.m_position.x + ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y))), (m_body1.m_position.y + ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y))))); } override public function GetAnchor2():b2Vec2{ var _local1:b2Mat22; _local1 = m_body2.m_R; return (new b2Vec2((m_body2.m_position.x + ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y))), (m_body2.m_position.y + ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y))))); } override public function PrepareVelocitySolver():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; var _local10:b2Vec2; var _local11:Number; var _local12:Number; _local1 = m_ground1; _local2 = m_ground2; _local3 = m_body1; _local4 = m_body2; _local12 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local12 = (_local12 + _local3.m_invI); } else { _local9 = _local1.m_R; _local10 = m_prismatic1.m_localXAxis1; _local5 = ((_local9.col1.x * _local10.x) + (_local9.col2.x * _local10.y)); _local6 = ((_local9.col1.y * _local10.x) + (_local9.col2.y * _local10.y)); _local9 = _local3.m_R; _local7 = ((_local9.col1.x * m_localAnchor1.x) + (_local9.col2.x * m_localAnchor1.y)); _local8 = ((_local9.col1.y * m_localAnchor1.x) + (_local9.col2.y * m_localAnchor1.y)); _local11 = ((_local7 * _local6) - (_local8 * _local5)); m_J.linear1.Set(-(_local5), -(_local6)); m_J.angular1 = -(_local11); _local12 = (_local12 + (_local3.m_invMass + ((_local3.m_invI * _local11) * _local11))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local12 = (_local12 + ((m_ratio * m_ratio) * _local4.m_invI)); } else { _local9 = _local2.m_R; _local10 = m_prismatic2.m_localXAxis1; _local5 = ((_local9.col1.x * _local10.x) + (_local9.col2.x * _local10.y)); _local6 = ((_local9.col1.y * _local10.x) + (_local9.col2.y * _local10.y)); _local9 = _local4.m_R; _local7 = ((_local9.col1.x * m_localAnchor2.x) + (_local9.col2.x * m_localAnchor2.y)); _local8 = ((_local9.col1.y * m_localAnchor2.x) + (_local9.col2.y * m_localAnchor2.y)); _local11 = ((_local7 * _local6) - (_local8 * _local5)); m_J.linear2.Set((-(m_ratio) * _local5), (-(m_ratio) * _local6)); m_J.angular2 = (-(m_ratio) * _local11); _local12 = (_local12 + ((m_ratio * m_ratio) * (_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)))); }; m_mass = (1 / _local12); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * m_impulse) * m_J.linear1.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * m_impulse) * m_J.linear1.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * m_impulse) * m_J.angular1)); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * m_impulse) * m_J.linear2.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * m_impulse) * m_J.linear2.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * m_impulse) * m_J.angular2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2()); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(m_mass) * _local6); _local2.m_position.x = (_local2.m_position.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_position.y = (_local2.m_position.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_rotation = (_local2.m_rotation + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_position.x = (_local3.m_position.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_position.y = (_local3.m_position.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_rotation = (_local3.m_rotation + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.m_R.Set(_local2.m_rotation); _local3.m_R.Set(_local3.m_rotation); return ((_local1 < b2Settings.b2_linearSlop)); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = (-(m_mass) * _local4); m_impulse = (m_impulse + _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local5) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local5) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local5) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local5) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local5) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local5) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 42
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint2:b2Joint; public var joint1:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 43
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular2:Number; public var angular1:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 44
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_collideConnected:Boolean; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_node1:b2JointNode; public var m_node2:b2JointNode; public var m_userData; public var m_body1:b2Body; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointNode(); m_node2 = new b2JointNode(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function PrepareVelocitySolver():void{ } public function PreparePositionSolver():void{ } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; _local3 = null; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 45
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 46
//b2JointNode (Box2D.Dynamics.Joints.b2JointNode) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointNode { public var joint:b2Joint; public var other:b2Body; public var next:b2JointNode; public var prev:b2JointNode; } }//package Box2D.Dynamics.Joints
Section 47
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_ptpMass:b2Mat22; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_ptpMass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_position.x); _local3 = (m_target.y - m_body2.m_position.y); m_localAnchor.x = ((_local2 * m_body2.m_R.col1.x) + (_local3 * m_body2.m_R.col1.y)); m_localAnchor.y = ((_local2 * m_body2.m_R.col2.x) + (_local3 * m_body2.m_R.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local4 = m_body2.m_mass; _local5 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local6 = (((2 * _local4) * _arg1.dampingRatio) * _local5); _local7 = ((_local4 * _local5) * _local5); m_gamma = (1 / (_local6 + (_arg1.timeStep * _local7))); m_beta = ((_arg1.timeStep * _local7) / (_local6 + (_arg1.timeStep * _local7))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = b2Math.b2MulMV(m_body2.m_R, m_localAnchor); _local1.Add(m_body2.m_position); return (_local1); } override public function PrepareVelocitySolver():void{ var _local1:b2Body; var _local2:b2Mat22; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = m_body2; _local2 = _local1.m_R; _local3 = ((_local2.col1.x * m_localAnchor.x) + (_local2.col2.x * m_localAnchor.y)); _local4 = ((_local2.col1.y * m_localAnchor.x) + (_local2.col2.y * m_localAnchor.y)); _local5 = _local1.m_invMass; _local6 = _local1.m_invI; K1.col1.x = _local5; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local5; K2.col1.x = ((_local6 * _local4) * _local4); K2.col2.x = ((-(_local6) * _local3) * _local4); K2.col1.y = ((-(_local6) * _local3) * _local4); K2.col2.y = ((_local6 * _local3) * _local3); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_ptpMass); m_C.x = ((_local1.m_position.x + _local3) - m_target.x); m_C.y = ((_local1.m_position.y + _local4) - m_target.y); _local1.m_angularVelocity = (_local1.m_angularVelocity * 0.98); _local7 = m_impulse.x; _local8 = m_impulse.y; _local1.m_linearVelocity.x = (_local1.m_linearVelocity.x + (_local5 * _local7)); _local1.m_linearVelocity.y = (_local1.m_linearVelocity.y + (_local5 * _local8)); _local1.m_angularVelocity = (_local1.m_angularVelocity + (_local6 * ((_local3 * _local8) - (_local4 * _local7)))); } override public function GetReactionForce(_arg1:Number):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(); _local2.SetV(m_impulse); _local2.Multiply(_arg1); return (_local2); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ m_body2.WakeUp(); m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; 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; _local2 = m_body2; _local3 = _local2.m_R; _local4 = ((_local3.col1.x * m_localAnchor.x) + (_local3.col2.x * m_localAnchor.y)); _local5 = ((_local3.col1.y * m_localAnchor.x) + (_local3.col2.y * m_localAnchor.y)); _local6 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local5)); _local7 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local4)); _local3 = m_ptpMass; _local8 = ((_local6 + ((m_beta * _arg1.inv_dt) * m_C.x)) + (m_gamma * m_impulse.x)); _local9 = ((_local7 + ((m_beta * _arg1.inv_dt) * m_C.y)) + (m_gamma * m_impulse.y)); _local10 = -(((_local3.col1.x * _local8) + (_local3.col2.x * _local9))); _local11 = -(((_local3.col1.y * _local8) + (_local3.col2.y * _local9))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > (_arg1.dt * m_maxForce)){ m_impulse.Multiply(((_arg1.dt * m_maxForce) / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local10)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local11)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local4 * _local11) - (_local5 * _local10)))); } } }//package Box2D.Dynamics.Joints
Section 48
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 49
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_initialAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_enableLimit:Boolean; public var m_maxMotorForce:Number; public var m_angularMass:Number; public var m_localYAxis1:b2Vec2; public var m_linearImpulse:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_motorMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_angularImpulse:Number; public var m_motorImpulse:Number; public var m_motorJacobian:b2Jacobian; public var m_limitImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); _local2 = m_body1.m_R; _local3 = (_arg1.anchorPoint.x - m_body1.m_position.x); _local4 = (_arg1.anchorPoint.y - m_body1.m_position.y); m_localAnchor1.Set(((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)), ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y))); _local2 = m_body2.m_R; _local3 = (_arg1.anchorPoint.x - m_body2.m_position.x); _local4 = (_arg1.anchorPoint.y - m_body2.m_position.y); m_localAnchor2.Set(((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)), ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y))); _local2 = m_body1.m_R; _local3 = _arg1.axis.x; _local4 = _arg1.axis.y; m_localXAxis1.Set(((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)), ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y))); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_initialAngle = (m_body2.m_rotation - m_body1.m_rotation); m_linearJacobian.SetZero(); m_linearMass = 0; m_linearImpulse = 0; m_angularMass = 0; m_angularImpulse = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorImpulse = 0; m_limitImpulse = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.motorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ var _local1:b2Body; var _local2:b2Vec2; _local1 = m_body1; _local2 = new b2Vec2(); _local2.SetV(m_localAnchor1); _local2.MulM(_local1.m_R); _local2.Add(_local1.m_position); return (_local2); } override public function GetAnchor2():b2Vec2{ var _local1:b2Body; var _local2:b2Vec2; _local1 = m_body2; _local2 = new b2Vec2(); _local2.SetV(m_localAnchor2); _local2.MulM(_local1.m_R); _local2.Add(_local1.m_position); return (_local2); } override public function PrepareVelocitySolver():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_R; _local4 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local5 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local6 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local7 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local8 = _local1.m_invMass; _local9 = _local2.m_invMass; _local10 = _local1.m_invI; _local11 = _local2.m_invI; _local3 = _local1.m_R; _local12 = ((_local3.col1.x * m_localYAxis1.x) + (_local3.col2.x * m_localYAxis1.y)); _local13 = ((_local3.col1.y * m_localYAxis1.x) + (_local3.col2.y * m_localYAxis1.y)); _local14 = ((_local2.m_position.x + _local6) - _local1.m_position.x); _local15 = ((_local2.m_position.y + _local7) - _local1.m_position.y); m_linearJacobian.linear1.x = -(_local12); m_linearJacobian.linear1.y = -(_local13); m_linearJacobian.linear2.x = _local12; m_linearJacobian.linear2.y = _local13; m_linearJacobian.angular1 = -(((_local14 * _local13) - (_local15 * _local12))); m_linearJacobian.angular2 = ((_local6 * _local13) - (_local7 * _local12)); m_linearMass = (((_local8 + ((_local10 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local9) + ((_local11 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (1 / (_local10 + _local11)); if (((m_enableLimit) || (m_enableMotor))){ _local3 = _local1.m_R; _local16 = ((_local3.col1.x * m_localXAxis1.x) + (_local3.col2.x * m_localXAxis1.y)); _local17 = ((_local3.col1.y * m_localXAxis1.x) + (_local3.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local16); m_motorJacobian.linear1.y = -(_local17); m_motorJacobian.linear2.x = _local16; m_motorJacobian.linear2.y = _local17; m_motorJacobian.angular1 = -(((_local14 * _local17) - (_local15 * _local16))); m_motorJacobian.angular2 = ((_local6 * _local17) - (_local7 * _local16)); m_motorMass = (((_local8 + ((_local10 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local9) + ((_local11 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local18 = (_local14 - _local4); _local19 = (_local15 - _local5); _local20 = ((_local16 * _local18) + (_local17 * _local19)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local20 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitImpulse = 0; }; m_limitState = e_atLowerLimit; } else { if (_local20 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitImpulse = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitImpulse = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (m_enableLimit == false){ m_limitImpulse = 0; }; if (b2World.s_enableWarmStarting){ _local21 = ((m_linearImpulse * m_linearJacobian.linear1.x) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.linear1.x)); _local22 = ((m_linearImpulse * m_linearJacobian.linear1.y) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.linear1.y)); _local23 = ((m_linearImpulse * m_linearJacobian.linear2.x) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.linear2.x)); _local24 = ((m_linearImpulse * m_linearJacobian.linear2.y) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.linear2.y)); _local25 = (((m_linearImpulse * m_linearJacobian.angular1) - m_angularImpulse) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.angular1)); _local26 = (((m_linearImpulse * m_linearJacobian.angular2) + m_angularImpulse) + ((m_motorImpulse + m_limitImpulse) * m_motorJacobian.angular2)); _local1.m_linearVelocity.x = (_local1.m_linearVelocity.x + (_local8 * _local21)); _local1.m_linearVelocity.y = (_local1.m_linearVelocity.y + (_local8 * _local22)); _local1.m_angularVelocity = (_local1.m_angularVelocity + (_local10 * _local25)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local9 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local9 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local11 * _local26)); } else { m_linearImpulse = 0; m_angularImpulse = 0; m_limitImpulse = 0; m_motorImpulse = 0; }; m_limitPositionImpulse = 0; } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_R; _local4 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local5 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local6 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local7 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local8 = (_local1.m_position.x + _local4); _local9 = (_local1.m_position.y + _local5); _local10 = (_local2.m_position.x + _local6); _local11 = (_local2.m_position.y + _local7); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local3 = _local1.m_R; _local14 = ((_local3.col1.x * m_localXAxis1.x) + (_local3.col2.x * m_localXAxis1.y)); _local15 = ((_local3.col1.y * m_localXAxis1.x) + (_local3.col2.y * m_localXAxis1.y)); _local16 = ((_local14 * _local12) + (_local15 * _local13)); return (_local16); } override public function GetReactionForce(_arg1:Number):b2Vec2{ var _local2:Number; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local2 = (_arg1 * m_limitImpulse); _local3 = m_body1.m_R; _local4 = (_local2 * ((_local3.col1.x * m_localXAxis1.x) + (_local3.col2.x * m_localXAxis1.y))); _local5 = (_local2 * ((_local3.col1.y * m_localXAxis1.x) + (_local3.col2.y * m_localXAxis1.y))); _local6 = (_local2 * ((_local3.col1.x * m_localYAxis1.x) + (_local3.col2.x * m_localYAxis1.y))); _local7 = (_local2 * ((_local3.col1.y * m_localYAxis1.x) + (_local3.col2.y * m_localYAxis1.y))); return (new b2Vec2((_local4 + _local6), (_local5 + _local7))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; 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; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _local9 = _local3.m_R; _local10 = ((_local9.col1.x * m_localAnchor1.x) + (_local9.col2.x * m_localAnchor1.y)); _local11 = ((_local9.col1.y * m_localAnchor1.x) + (_local9.col2.y * m_localAnchor1.y)); _local9 = _local4.m_R; _local12 = ((_local9.col1.x * m_localAnchor2.x) + (_local9.col2.x * m_localAnchor2.y)); _local13 = ((_local9.col1.y * m_localAnchor2.x) + (_local9.col2.y * m_localAnchor2.y)); _local14 = (_local3.m_position.x + _local10); _local15 = (_local3.m_position.y + _local11); _local16 = (_local4.m_position.x + _local12); _local17 = (_local4.m_position.y + _local13); _local18 = (_local16 - _local14); _local19 = (_local17 - _local15); _local9 = _local3.m_R; _local20 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local21 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local22 = ((_local20 * _local18) + (_local21 * _local19)); _local22 = b2Math.b2Clamp(_local22, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local23 = (-(m_linearMass) * _local22); _local3.m_position.x = (_local3.m_position.x + ((_local5 * _local23) * m_linearJacobian.linear1.x)); _local3.m_position.y = (_local3.m_position.y + ((_local5 * _local23) * m_linearJacobian.linear1.y)); _local3.m_rotation = (_local3.m_rotation + ((_local7 * _local23) * m_linearJacobian.angular1)); _local4.m_position.x = (_local4.m_position.x + ((_local6 * _local23) * m_linearJacobian.linear2.x)); _local4.m_position.y = (_local4.m_position.y + ((_local6 * _local23) * m_linearJacobian.linear2.y)); _local4.m_rotation = (_local4.m_rotation + ((_local8 * _local23) * m_linearJacobian.angular2)); _local24 = b2Math.b2Abs(_local22); _local25 = ((_local4.m_rotation - _local3.m_rotation) - m_initialAngle); _local25 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_angularMass) * _local25); _local3.m_rotation = (_local3.m_rotation - (_local3.m_invI * _local26)); _local3.m_R.Set(_local3.m_rotation); _local4.m_rotation = (_local4.m_rotation + (_local4.m_invI * _local26)); _local4.m_R.Set(_local4.m_rotation); _local27 = b2Math.b2Abs(_local25); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_R; _local10 = ((_local9.col1.x * m_localAnchor1.x) + (_local9.col2.x * m_localAnchor1.y)); _local11 = ((_local9.col1.y * m_localAnchor1.x) + (_local9.col2.y * m_localAnchor1.y)); _local9 = _local4.m_R; _local12 = ((_local9.col1.x * m_localAnchor2.x) + (_local9.col2.x * m_localAnchor2.y)); _local13 = ((_local9.col1.y * m_localAnchor2.x) + (_local9.col2.y * m_localAnchor2.y)); _local14 = (_local3.m_position.x + _local10); _local15 = (_local3.m_position.y + _local11); _local16 = (_local4.m_position.x + _local12); _local17 = (_local4.m_position.y + _local13); _local18 = (_local16 - _local14); _local19 = (_local17 - _local15); _local9 = _local3.m_R; _local28 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local29 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local30 = ((_local28 * _local18) + (_local29 * _local19)); _local31 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local30, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local31 = (-(m_motorMass) * _local1); _local24 = b2Math.b2Max(_local24, b2Math.b2Abs(_local25)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local30 - m_lowerTranslation); _local24 = b2Math.b2Max(_local24, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local31 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local31), 0); _local31 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local30 - m_upperTranslation); _local24 = b2Math.b2Max(_local24, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local31 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local31), 0); _local31 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_position.x = (_local3.m_position.x + ((_local5 * _local31) * m_motorJacobian.linear1.x)); _local3.m_position.y = (_local3.m_position.y + ((_local5 * _local31) * m_motorJacobian.linear1.y)); _local3.m_rotation = (_local3.m_rotation + ((_local7 * _local31) * m_motorJacobian.angular1)); _local3.m_R.Set(_local3.m_rotation); _local4.m_position.x = (_local4.m_position.x + ((_local6 * _local31) * m_motorJacobian.linear2.x)); _local4.m_position.y = (_local4.m_position.y + ((_local6 * _local31) * m_motorJacobian.linear2.y)); _local4.m_rotation = (_local4.m_rotation + ((_local8 * _local31) * m_motorJacobian.angular2)); _local4.m_R.Set(_local4.m_rotation); }; return ((((_local24 <= b2Settings.b2_linearSlop)) && ((_local27 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_R; _local4 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local5 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local6 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local7 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local8 = (_local1.m_position.x + _local4); _local9 = (_local1.m_position.y + _local5); _local10 = (_local2.m_position.x + _local6); _local11 = (_local2.m_position.y + _local7); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local3 = _local1.m_R; _local14 = ((_local3.col1.x * m_localXAxis1.x) + (_local3.col2.x * m_localXAxis1.y)); _local15 = ((_local3.col1.y * m_localXAxis1.x) + (_local3.col2.y * m_localXAxis1.y)); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local12 * (-(_local18) * _local15)) + (_local13 * (_local18 * _local14))) + ((_local14 * (((_local17.x + (-(_local19) * _local7)) - _local16.x) - (-(_local18) * _local5))) + (_local15 * (((_local17.y + (_local19 * _local6)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetMotorForce(_arg1:Number):Number{ return ((_arg1 * m_motorImpulse)); } public function SetMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_angularImpulse)); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; 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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = (-(m_linearMass) * _local9); m_linearImpulse = (m_linearImpulse + _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local10) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local10) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local10) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local10) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local10) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local10) * m_linearJacobian.angular2)); _local11 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local12 = (-(m_angularMass) * _local11); m_angularImpulse = (m_angularImpulse + _local12); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local12)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local12)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local13 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local14 = (-(m_motorMass) * _local13); _local15 = m_motorImpulse; m_motorImpulse = b2Math.b2Clamp((m_motorImpulse + _local14), (-(_arg1.dt) * m_maxMotorForce), (_arg1.dt * m_maxMotorForce)); _local14 = (m_motorImpulse - _local15); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local14) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local14) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local14) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local14) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local14) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local14) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local16 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local17 = (-(m_motorMass) * _local16); if (m_limitState == e_equalLimits){ m_limitImpulse = (m_limitImpulse + _local17); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitImpulse; m_limitImpulse = b2Math.b2Max((m_limitImpulse + _local17), 0); _local17 = (m_limitImpulse - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitImpulse; m_limitImpulse = b2Math.b2Min((m_limitImpulse + _local17), 0); _local17 = (m_limitImpulse - _local8); }; }; }; _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local17) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local17) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local17) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local17) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local17) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local17) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 50
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var anchorPoint:b2Vec2; public var axis:b2Vec2; public var upperTranslation:Number; public var lowerTranslation:Number; public var enableMotor:Boolean; public var motorForce:Number; public var enableLimit:Boolean; public function b2PrismaticJointDef(){ type = b2Joint.e_prismaticJoint; anchorPoint = new b2Vec2(0, 0); axis = new b2Vec2(0, 0); lowerTranslation = 0; upperTranslation = 0; motorForce = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } } }//package Box2D.Dynamics.Joints
Section 51
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_ground:b2Body; public var m_maxLength2:Number; public var m_limitState1:int; public var m_maxLength1:Number; public var m_pulleyImpulse:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_limitPositionImpulse2:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState2:int; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_limitImpulse2:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitImpulse1:Number; public var m_pulleyMass:Number; public static var b2_minPulleyLength:Number = 30; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundPoint1.x - m_ground.m_position.x); m_groundAnchor1.y = (_arg1.groundPoint1.y - m_ground.m_position.y); m_groundAnchor2.x = (_arg1.groundPoint2.x - m_ground.m_position.x); m_groundAnchor2.y = (_arg1.groundPoint2.y - m_ground.m_position.y); _local2 = m_body1.m_R; _local3 = (_arg1.anchorPoint1.x - m_body1.m_position.x); _local4 = (_arg1.anchorPoint1.y - m_body1.m_position.y); m_localAnchor1.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor1.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); _local2 = m_body2.m_R; _local3 = (_arg1.anchorPoint2.x - m_body2.m_position.x); _local4 = (_arg1.anchorPoint2.y - m_body2.m_position.y); m_localAnchor2.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor2.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); m_ratio = _arg1.ratio; _local3 = (_arg1.groundPoint1.x - _arg1.anchorPoint1.x); _local4 = (_arg1.groundPoint1.y - _arg1.anchorPoint1.y); _local5 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); _local3 = (_arg1.groundPoint2.x - _arg1.anchorPoint2.x); _local4 = (_arg1.groundPoint2.y - _arg1.anchorPoint2.y); _local6 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); _local7 = b2Math.b2Max((0.5 * b2_minPulleyLength), _local5); _local8 = b2Math.b2Max((0.5 * b2_minPulleyLength), _local6); m_constant = (_local7 + (m_ratio * _local8)); m_maxLength1 = b2Math.b2Clamp(_arg1.maxLength1, _local7, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Clamp(_arg1.maxLength2, _local8, ((m_constant - b2_minPulleyLength) / m_ratio)); m_pulleyImpulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; } public function GetLength1():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_R; _local2 = (m_body1.m_position.x + ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y))); _local3 = (m_body1.m_position.y + ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y))); _local4 = (_local2 - (m_ground.m_position.x + m_groundAnchor1.x)); _local5 = (_local3 - (m_ground.m_position.y + m_groundAnchor1.y)); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function GetAnchor1():b2Vec2{ var _local1:b2Mat22; _local1 = m_body1.m_R; return (new b2Vec2((m_body1.m_position.x + ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y))), (m_body1.m_position.y + ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y))))); } override public function GetAnchor2():b2Vec2{ var _local1:b2Mat22; _local1 = m_body2.m_R; return (new b2Vec2((m_body2.m_position.x + ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y))), (m_body2.m_position.y + ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y))))); } override public function PrepareVelocitySolver():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_R; _local4 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local5 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local6 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local7 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local8 = (_local1.m_position.x + _local4); _local9 = (_local1.m_position.y + _local5); _local10 = (_local2.m_position.x + _local6); _local11 = (_local2.m_position.y + _local7); _local12 = (m_ground.m_position.x + m_groundAnchor1.x); _local13 = (m_ground.m_position.y + m_groundAnchor1.y); _local14 = (m_ground.m_position.x + m_groundAnchor2.x); _local15 = (m_ground.m_position.y + m_groundAnchor2.y); m_u1.Set((_local8 - _local12), (_local9 - _local13)); m_u2.Set((_local10 - _local14), (_local11 - _local15)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; if (_local16 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitImpulse1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local17 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitImpulse2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local18 = ((_local4 * m_u1.y) - (_local5 * m_u1.x)); _local19 = ((_local6 * m_u2.y) - (_local7 * m_u2.x)); m_limitMass1 = (_local1.m_invMass + ((_local1.m_invI * _local18) * _local18)); m_limitMass2 = (_local2.m_invMass + ((_local2.m_invI * _local19) * _local19)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); _local20 = ((-(m_pulleyImpulse) - m_limitImpulse1) * m_u1.x); _local21 = ((-(m_pulleyImpulse) - m_limitImpulse1) * m_u1.y); _local22 = (((-(m_ratio) * m_pulleyImpulse) - m_limitImpulse2) * m_u2.x); _local23 = (((-(m_ratio) * m_pulleyImpulse) - m_limitImpulse2) * m_u2.y); _local1.m_linearVelocity.x = (_local1.m_linearVelocity.x + (_local1.m_invMass * _local20)); _local1.m_linearVelocity.y = (_local1.m_linearVelocity.y + (_local1.m_invMass * _local21)); _local1.m_angularVelocity = (_local1.m_angularVelocity + (_local1.m_invI * ((_local4 * _local21) - (_local5 * _local20)))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local22)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local23)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local23) - (_local7 * _local22)))); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2()); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_position.x + m_groundAnchor1.x); _local5 = (m_ground.m_position.y + m_groundAnchor1.y); _local6 = (m_ground.m_position.x + m_groundAnchor2.x); _local7 = (m_ground.m_position.y + m_groundAnchor2.y); _local21 = 0; _local3 = _local1.m_R; _local8 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local9 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local10 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local11 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local12 = (_local1.m_position.x + _local8); _local13 = (_local1.m_position.y + _local9); _local14 = (_local2.m_position.x + _local10); _local15 = (_local2.m_position.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local21 = b2Math.b2Max(_local21, Math.abs(_local18)); _local18 = b2Math.b2Clamp(_local18, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local19 = (-(m_pulleyMass) * _local18); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_position.x = (_local1.m_position.x + (_local1.m_invMass * _local12)); _local1.m_position.y = (_local1.m_position.y + (_local1.m_invMass * _local13)); _local1.m_rotation = (_local1.m_rotation + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_position.x = (_local2.m_position.x + (_local2.m_invMass * _local14)); _local2.m_position.y = (_local2.m_position.y + (_local2.m_invMass * _local15)); _local2.m_rotation = (_local2.m_rotation + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.m_R.Set(_local1.m_rotation); _local2.m_R.Set(_local2.m_rotation); if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_R; _local8 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local9 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local12 = (_local1.m_position.x + _local8); _local13 = (_local1.m_position.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local21 = b2Math.b2Max(_local21, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local20 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_position.x = (_local1.m_position.x + (_local1.m_invMass * _local12)); _local1.m_position.y = (_local1.m_position.y + (_local1.m_invMass * _local13)); _local1.m_rotation = (_local1.m_rotation + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.m_R.Set(_local1.m_rotation); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_R; _local10 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local11 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local14 = (_local2.m_position.x + _local10); _local15 = (_local2.m_position.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local21 = b2Math.b2Max(_local21, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local20 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local20); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_position.x = (_local2.m_position.x + (_local2.m_invMass * _local14)); _local2.m_position.y = (_local2.m_position.y + (_local2.m_invMass * _local15)); _local2.m_rotation = (_local2.m_rotation + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.m_R.Set(_local2.m_rotation); }; return ((_local21 < b2Settings.b2_linearSlop)); } public function GetGroundPoint1():b2Vec2{ return (new b2Vec2((m_ground.m_position.x + m_groundAnchor1.x), (m_ground.m_position.y + m_groundAnchor1.y))); } public function GetGroundPoint2():b2Vec2{ return (new b2Vec2((m_ground.m_position.x + m_groundAnchor2.x), (m_ground.m_position.y + m_groundAnchor2.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.m_R; _local2 = (m_body2.m_position.x + ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y))); _local3 = (m_body2.m_position.y + ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y))); _local4 = (_local2 - (m_ground.m_position.x + m_groundAnchor2.x)); _local5 = (_local3 - (m_ground.m_position.y + m_groundAnchor2.y)); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_R; _local5 = ((_local4.col1.x * m_localAnchor1.x) + (_local4.col2.x * m_localAnchor1.y)); _local6 = ((_local4.col1.y * m_localAnchor1.x) + (_local4.col2.y * m_localAnchor1.y)); _local4 = _local3.m_R; _local7 = ((_local4.col1.x * m_localAnchor2.x) + (_local4.col2.x * m_localAnchor2.y)); _local8 = ((_local4.col1.y * m_localAnchor2.x) + (_local4.col2.y * m_localAnchor2.y)); _local9 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local10 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local11 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local8)); _local12 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local7)); _local17 = (-(((m_u1.x * _local9) + (m_u1.y * _local10))) - (m_ratio * ((m_u2.x * _local11) + (m_u2.y * _local12)))); _local18 = (-(m_pulleyMass) * _local17); m_pulleyImpulse = (m_pulleyImpulse + _local18); _local13 = (-(_local18) * m_u1.x); _local14 = (-(_local18) * m_u1.y); _local15 = ((-(m_ratio) * _local18) * m_u2.x); _local16 = ((-(m_ratio) * _local18) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local13)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local14)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local14) - (_local6 * _local13)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local7 * _local16) - (_local8 * _local15)))); if (m_limitState1 == e_atUpperLimit){ _local9 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local10 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local17 = -(((m_u1.x * _local9) + (m_u1.y * _local10))); _local18 = (-(m_limitMass1) * _local17); _local19 = m_limitImpulse1; m_limitImpulse1 = b2Math.b2Max(0, (m_limitImpulse1 + _local18)); _local18 = (m_limitImpulse1 - _local19); _local13 = (-(_local18) * m_u1.x); _local14 = (-(_local18) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local13)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local14)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local14) - (_local6 * _local13)))); }; if (m_limitState2 == e_atUpperLimit){ _local11 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local8)); _local12 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local7)); _local17 = -(((m_u2.x * _local11) + (m_u2.y * _local12))); _local18 = (-(m_limitMass2) * _local17); _local19 = m_limitImpulse2; m_limitImpulse2 = b2Math.b2Max(0, (m_limitImpulse2 + _local18)); _local18 = (m_limitImpulse2 - _local19); _local15 = (-(_local18) * m_u2.x); _local16 = (-(_local18) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local7 * _local16) - (_local8 * _local15)))); }; } } }//package Box2D.Dynamics.Joints
Section 52
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2PulleyJointDef extends b2JointDef { public var groundPoint1:b2Vec2; public var groundPoint2:b2Vec2; public var ratio:Number; public var maxLength1:Number; public var maxLength2:Number; public var anchorPoint1:b2Vec2; public var anchorPoint2:b2Vec2; public function b2PulleyJointDef(){ groundPoint1 = new b2Vec2(); groundPoint2 = new b2Vec2(); anchorPoint1 = new b2Vec2(); anchorPoint2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundPoint1.Set(-1, 1); groundPoint2.Set(1, 1); anchorPoint1.Set(-1, 0); anchorPoint2.Set(1, 0); maxLength1 = (0.5 * b2PulleyJoint.b2_minPulleyLength); maxLength2 = (0.5 * b2PulleyJoint.b2_minPulleyLength); ratio = 1; collideConnected = true; } } }//package Box2D.Dynamics.Joints
Section 53
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_intialAngle:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_ptpMass:b2Mat22; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_limitImpulse:Number; public var m_motorImpulse:Number; public var m_enableMotor:Boolean; public var m_lowerAngle:Number; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_upperAngle:Number; public var m_motorSpeed:Number; public var m_ptpImpulse:b2Vec2; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_ptpImpulse = new b2Vec2(); m_ptpMass = new b2Mat22(); super(_arg1); _local2 = m_body1.m_R; _local3 = (_arg1.anchorPoint.x - m_body1.m_position.x); _local4 = (_arg1.anchorPoint.y - m_body1.m_position.y); m_localAnchor1.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor1.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); _local2 = m_body2.m_R; _local3 = (_arg1.anchorPoint.x - m_body2.m_position.x); _local4 = (_arg1.anchorPoint.y - m_body2.m_position.y); m_localAnchor2.x = ((_local3 * _local2.col1.x) + (_local4 * _local2.col1.y)); m_localAnchor2.y = ((_local3 * _local2.col2.x) + (_local4 * _local2.col2.y)); m_intialAngle = (m_body2.m_rotation - m_body1.m_rotation); m_ptpImpulse.Set(0, 0); m_motorImpulse = 0; m_limitImpulse = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.motorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ var _local1:b2Mat22; _local1 = m_body1.m_R; return (new b2Vec2((m_body1.m_position.x + ((_local1.col1.x * m_localAnchor1.x) + (_local1.col2.x * m_localAnchor1.y))), (m_body1.m_position.y + ((_local1.col1.y * m_localAnchor1.x) + (_local1.col2.y * m_localAnchor1.y))))); } override public function GetAnchor2():b2Vec2{ var _local1:b2Mat22; _local1 = m_body2.m_R; return (new b2Vec2((m_body2.m_position.x + ((_local1.col1.x * m_localAnchor2.x) + (_local1.col2.x * m_localAnchor2.y))), (m_body2.m_position.y + ((_local1.col1.y * m_localAnchor2.x) + (_local1.col2.y * m_localAnchor2.y))))); } override public function PrepareVelocitySolver():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_R; _local4 = ((_local3.col1.x * m_localAnchor1.x) + (_local3.col2.x * m_localAnchor1.y)); _local5 = ((_local3.col1.y * m_localAnchor1.x) + (_local3.col2.y * m_localAnchor1.y)); _local3 = _local2.m_R; _local6 = ((_local3.col1.x * m_localAnchor2.x) + (_local3.col2.x * m_localAnchor2.y)); _local7 = ((_local3.col1.y * m_localAnchor2.x) + (_local3.col2.y * m_localAnchor2.y)); _local8 = _local1.m_invMass; _local9 = _local2.m_invMass; _local10 = _local1.m_invI; _local11 = _local2.m_invI; K1.col1.x = (_local8 + _local9); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local8 + _local9); K2.col1.x = ((_local10 * _local5) * _local5); K2.col2.x = ((-(_local10) * _local4) * _local5); K2.col1.y = ((-(_local10) * _local4) * _local5); K2.col2.y = ((_local10 * _local4) * _local4); K3.col1.x = ((_local11 * _local7) * _local7); K3.col2.x = ((-(_local11) * _local6) * _local7); K3.col1.y = ((-(_local11) * _local6) * _local7); K3.col2.y = ((_local11 * _local6) * _local6); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_ptpMass); m_motorMass = (1 / (_local10 + _local11)); if (m_enableMotor == false){ m_motorImpulse = 0; }; if (m_enableLimit){ _local12 = ((_local2.m_rotation - _local1.m_rotation) - m_intialAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local12 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitImpulse = 0; }; m_limitState = e_atLowerLimit; } else { if (_local12 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitImpulse = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitImpulse = 0; }; }; }; } else { m_limitImpulse = 0; }; if (b2World.s_enableWarmStarting){ _local1.m_linearVelocity.x = (_local1.m_linearVelocity.x - (_local8 * m_ptpImpulse.x)); _local1.m_linearVelocity.y = (_local1.m_linearVelocity.y - (_local8 * m_ptpImpulse.y)); _local1.m_angularVelocity = (_local1.m_angularVelocity - (_local10 * ((((_local4 * m_ptpImpulse.y) - (_local5 * m_ptpImpulse.x)) + m_motorImpulse) + m_limitImpulse))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local9 * m_ptpImpulse.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local9 * m_ptpImpulse.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local11 * ((((_local6 * m_ptpImpulse.y) - (_local7 * m_ptpImpulse.x)) + m_motorImpulse) + m_limitImpulse))); } else { m_ptpImpulse.SetZero(); m_motorImpulse = 0; m_limitImpulse = 0; }; m_limitPositionImpulse = 0; } override public function GetReactionForce(_arg1:Number):b2Vec2{ var _local2:b2Vec2; _local2 = m_ptpImpulse.Copy(); _local2.Multiply(_arg1); return (_local2); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; 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; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_R; _local7 = ((_local6.col1.x * m_localAnchor1.x) + (_local6.col2.x * m_localAnchor1.y)); _local8 = ((_local6.col1.y * m_localAnchor1.x) + (_local6.col2.y * m_localAnchor1.y)); _local6 = _local4.m_R; _local9 = ((_local6.col1.x * m_localAnchor2.x) + (_local6.col2.x * m_localAnchor2.y)); _local10 = ((_local6.col1.y * m_localAnchor2.x) + (_local6.col2.y * m_localAnchor2.y)); _local11 = (_local3.m_position.x + _local7); _local12 = (_local3.m_position.y + _local8); _local13 = (_local4.m_position.x + _local9); _local14 = (_local4.m_position.y + _local10); _local15 = (_local13 - _local11); _local16 = (_local14 - _local12); _local5 = Math.sqrt(((_local15 * _local15) + (_local16 * _local16))); _local17 = _local3.m_invMass; _local18 = _local4.m_invMass; _local19 = _local3.m_invI; _local20 = _local4.m_invI; K1.col1.x = (_local17 + _local18); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local17 + _local18); K2.col1.x = ((_local19 * _local8) * _local8); K2.col2.x = ((-(_local19) * _local7) * _local8); K2.col1.y = ((-(_local19) * _local7) * _local8); K2.col2.y = ((_local19 * _local7) * _local7); K3.col1.x = ((_local20 * _local10) * _local10); K3.col2.x = ((-(_local20) * _local9) * _local10); K3.col1.y = ((-(_local20) * _local9) * _local10); K3.col2.y = ((_local20 * _local9) * _local9); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local15), -(_local16)); _local21 = tImpulse.x; _local22 = tImpulse.y; _local3.m_position.x = (_local3.m_position.x - (_local3.m_invMass * _local21)); _local3.m_position.y = (_local3.m_position.y - (_local3.m_invMass * _local22)); _local3.m_rotation = (_local3.m_rotation - (_local3.m_invI * ((_local7 * _local22) - (_local8 * _local21)))); _local3.m_R.Set(_local3.m_rotation); _local4.m_position.x = (_local4.m_position.x + (_local4.m_invMass * _local21)); _local4.m_position.y = (_local4.m_position.y + (_local4.m_invMass * _local22)); _local4.m_rotation = (_local4.m_rotation + (_local4.m_invI * ((_local9 * _local22) - (_local10 * _local21)))); _local4.m_R.Set(_local4.m_rotation); _local23 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local24 = ((_local4.m_rotation - _local3.m_rotation) - m_intialAngle); _local25 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local24, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local25 = (-(m_motorMass) * _local2); _local23 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local24 - m_lowerAngle); _local23 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local25 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local25), 0); _local25 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local24 - m_upperAngle); _local23 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local25 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local25), 0); _local25 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_rotation = (_local3.m_rotation - (_local3.m_invI * _local25)); _local3.m_R.Set(_local3.m_rotation); _local4.m_rotation = (_local4.m_rotation + (_local4.m_invI * _local25)); _local4.m_R.Set(_local4.m_rotation); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local23 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function SetMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return ((m_body2.m_rotation - m_body1.m_rotation)); } public function GetMotorTorque(_arg1:Number):Number{ return ((_arg1 * m_motorImpulse)); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_limitImpulse)); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_R; _local5 = ((_local4.col1.x * m_localAnchor1.x) + (_local4.col2.x * m_localAnchor1.y)); _local6 = ((_local4.col1.y * m_localAnchor1.x) + (_local4.col2.y * m_localAnchor1.y)); _local4 = _local3.m_R; _local7 = ((_local4.col1.x * m_localAnchor2.x) + (_local4.col2.x * m_localAnchor2.y)); _local8 = ((_local4.col1.y * m_localAnchor2.x) + (_local4.col2.y * m_localAnchor2.y)); _local10 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local8)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local6)); _local11 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local7)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local5)); _local12 = -(((m_ptpMass.col1.x * _local10) + (m_ptpMass.col2.x * _local11))); _local13 = -(((m_ptpMass.col1.y * _local10) + (m_ptpMass.col2.y * _local11))); m_ptpImpulse.x = (m_ptpImpulse.x + _local12); m_ptpImpulse.y = (m_ptpImpulse.y + _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local12)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local13)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local5 * _local13) - (_local6 * _local12)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local12)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local13)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local7 * _local13) - (_local8 * _local12)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local14 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local15 = (-(m_motorMass) * _local14); _local16 = m_motorImpulse; m_motorImpulse = b2Math.b2Clamp((m_motorImpulse + _local15), (-(_arg1.dt) * m_maxMotorTorque), (_arg1.dt * m_maxMotorTorque)); _local15 = (m_motorImpulse - _local16); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * _local15)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * _local15)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local17 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local18 = (-(m_motorMass) * _local17); if (m_limitState == e_equalLimits){ m_limitImpulse = (m_limitImpulse + _local18); } else { if (m_limitState == e_atLowerLimit){ _local9 = m_limitImpulse; m_limitImpulse = b2Math.b2Max((m_limitImpulse + _local18), 0); _local18 = (m_limitImpulse - _local9); } else { if (m_limitState == e_atUpperLimit){ _local9 = m_limitImpulse; m_limitImpulse = b2Math.b2Min((m_limitImpulse + _local18), 0); _local18 = (m_limitImpulse - _local9); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * _local18)); }; } } }//package Box2D.Dynamics.Joints
Section 54
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var anchorPoint:b2Vec2; public var motorTorque:Number; public var enableMotor:Boolean; public var enableLimit:Boolean; public function b2RevoluteJointDef(){ type = b2Joint.e_revoluteJoint; anchorPoint = new b2Vec2(0, 0); lowerAngle = 0; upperAngle = 0; motorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Body { public var m_next:b2Body; public var m_mass:Number; public var m_contactList:b2ContactNode; public var m_angularVelocity:Number; public var m_rotation:Number; public var m_shapeList:b2Shape; public var m_R:b2Mat22; public var m_force:b2Vec2; public var m_torque:Number; public var m_rotation0:Number; public var m_userData; public var m_linearVelocity:b2Vec2; public var m_invMass:Number; public var m_position:b2Vec2; public var m_flags:uint; public var m_invI:Number; public var m_linearDamping:Number; public var m_prev:b2Body; public var m_world:b2World; public var m_angularDamping:Number; public var m_position0:b2Vec2; private var sMat0:b2Mat22; public var m_center:b2Vec2; public var m_sleepTime:Number; public var m_shapeCount:int; public var m_I:Number; public var m_jointList:b2JointNode; public static var e_frozenFlag:uint = 2; public static var e_sleepFlag:uint = 8; public static var e_islandFlag:uint = 4; public static var e_destroyFlag:uint = 32; public static var e_allowSleepFlag:uint = 16; public static var e_staticFlag:uint = 1; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:int; var _local4:b2ShapeDef; var _local5:b2MassData; var _local6:Array; var _local7:b2Vec2; var _local8:b2Shape; sMat0 = new b2Mat22(); m_position = new b2Vec2(); m_R = new b2Mat22(0); m_position0 = new b2Vec2(); super(); m_flags = 0; m_position.SetV(_arg1.position); m_rotation = _arg1.rotation; m_R.Set(m_rotation); m_position0.SetV(m_position); m_rotation0 = m_rotation; m_world = _arg2; m_linearDamping = b2Math.b2Clamp((1 - _arg1.linearDamping), 0, 1); m_angularDamping = b2Math.b2Clamp((1 - _arg1.angularDamping), 0, 1); m_force = new b2Vec2(0, 0); m_torque = 0; m_mass = 0; _local6 = new Array(b2Settings.b2_maxShapesPerBody); _local3 = 0; while (_local3 < b2Settings.b2_maxShapesPerBody) { _local6[_local3] = new b2MassData(); _local3++; }; m_shapeCount = 0; m_center = new b2Vec2(0, 0); _local3 = 0; while (_local3 < b2Settings.b2_maxShapesPerBody) { _local4 = _arg1.shapes[_local3]; if (_local4 == null){ break; }; _local5 = _local6[_local3]; _local4.ComputeMass(_local5); m_mass = (m_mass + _local5.mass); m_center.x = (m_center.x + (_local5.mass * (_local4.localPosition.x + _local5.center.x))); m_center.y = (m_center.y + (_local5.mass * (_local4.localPosition.y + _local5.center.y))); m_shapeCount++; _local3++; }; if (m_mass > 0){ m_center.Multiply((1 / m_mass)); m_position.Add(b2Math.b2MulMV(m_R, m_center)); } else { m_flags = (m_flags | e_staticFlag); }; m_I = 0; _local3 = 0; while (_local3 < m_shapeCount) { _local4 = _arg1.shapes[_local3]; _local5 = _local6[_local3]; m_I = (m_I + _local5.I); _local7 = b2Math.SubtractVV(b2Math.AddVV(_local4.localPosition, _local5.center), m_center); m_I = (m_I + (_local5.mass * b2Math.b2Dot(_local7, _local7))); _local3++; }; if (m_mass > 0){ m_invMass = (1 / m_mass); } else { m_invMass = 0; }; if ((((m_I > 0)) && ((_arg1.preventRotation == false)))){ m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_linearVelocity = b2Math.AddVV(_arg1.linearVelocity, b2Math.b2CrossFV(_arg1.angularVelocity, m_center)); m_angularVelocity = _arg1.angularVelocity; m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_shapeList = null; _local3 = 0; while (_local3 < m_shapeCount) { _local4 = _arg1.shapes[_local3]; _local8 = b2Shape.Create(_local4, this, m_center); _local8.m_next = m_shapeList; m_shapeList = _local8; _local3++; }; m_sleepTime = 0; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; if ((((m_flags & e_sleepFlag)) || ((m_invMass == 0)))){ m_linearVelocity.Set(0, 0); m_angularVelocity = 0; }; m_userData = _arg1.userData; } public function SetCenterPosition(_arg1:b2Vec2, _arg2:Number):void{ var _local3:b2Shape; if (IsFrozen()){ return; }; m_rotation = _arg2; m_R.Set(m_rotation); m_position.SetV(_arg1); m_position0.SetV(m_position); m_rotation0 = m_rotation; _local3 = m_shapeList; while (_local3 != null) { _local3.Synchronize(m_position, m_R, m_position, m_R); _local3 = _local3.m_next; }; m_world.m_broadPhase.Commit(); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.AddVV(m_position, b2Math.b2MulMV(m_R, _arg1))); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function QuickSyncShapes():void{ var _local1:b2Shape; _local1 = m_shapeList; while (_local1 != null) { _local1.QuickSync(m_position, m_R); _local1 = _local1.m_next; }; } public function GetInertia():Number{ return (m_I); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_R, _arg1)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function GetJointList():b2JointNode{ return (m_jointList); } public function GetRotationMatrix():b2Mat22{ return (m_R); } public function Freeze():void{ var _local1:b2Shape; m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local1 = m_shapeList; while (_local1 != null) { _local1.DestroyProxy(); _local1 = _local1.m_next; }; } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SynchronizeShapes():void{ var _local1:b2Shape; sMat0.Set(m_rotation0); _local1 = m_shapeList; while (_local1 != null) { _local1.Synchronize(m_position0, sMat0, m_position, m_R); _local1 = _local1.m_next; }; } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping() == false){ m_force.Add(_arg1); m_torque = (m_torque + b2Math.b2CrossVV(b2Math.SubtractVV(_arg2, m_position), _arg1)); }; } public function GetOriginPosition():b2Vec2{ return (b2Math.SubtractVV(m_position, b2Math.b2MulMV(m_R, m_center))); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping() == false){ m_linearVelocity.Add(b2Math.MulFV(m_invMass, _arg1)); m_angularVelocity = (m_angularVelocity + (m_invI * b2Math.b2CrossVV(b2Math.SubtractVV(_arg2, m_position), _arg1))); }; } public function GetContactList():b2ContactNode{ return (m_contactList); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function GetMass():Number{ return (m_mass); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function SetOriginPosition(_arg1:b2Vec2, _arg2:Number):void{ var _local3:b2Shape; if (IsFrozen()){ return; }; m_rotation = _arg2; m_R.Set(m_rotation); m_position = b2Math.AddVV(_arg1, b2Math.b2MulMV(m_R, m_center)); m_position0.SetV(m_position); m_rotation0 = m_rotation; _local3 = m_shapeList; while (_local3 != null) { _local3.Synchronize(m_position, m_R, m_position, m_R); _local3 = _local3.m_next; }; m_world.m_broadPhase.Commit(); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_R, b2Math.SubtractVV(_arg1, m_position))); } public function GetRotation():Number{ return (m_rotation); } public function IsStatic():Boolean{ return (((m_flags & e_staticFlag) == e_staticFlag)); } public function Destroy():void{ var _local1:b2Shape; var _local2:b2Shape; _local1 = m_shapeList; while (_local1) { _local2 = _local1; _local1 = _local1.m_next; b2Shape.Destroy(_local2); }; } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_R, _arg1)); } public function GetNext():b2Body{ return (m_next); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointNode; _local2 = m_jointList; while (_local2 != null) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function GetUserData(){ return (m_userData); } public function GetCenterPosition():b2Vec2{ return (m_position); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping() == false){ m_torque = (m_torque + _arg1); }; } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } } }//package Box2D.Dynamics
Section 56
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BodyDef { public var angularDamping:Number; public var rotation:Number; public var allowSleep:Boolean; public var userData; public var linearDamping:Number; public var angularVelocity:Number; public var linearVelocity:b2Vec2; public var position:b2Vec2; public var shapes:Array; public var isSleeping:Boolean; public var preventRotation:Boolean; public function b2BodyDef(){ var _local1:int; shapes = new Array(); super(); userData = null; _local1 = 0; while (_local1 < b2Settings.b2_maxShapesPerBody) { shapes[_local1] = null; _local1++; }; position = new b2Vec2(0, 0); rotation = 0; linearVelocity = new b2Vec2(0, 0); angularVelocity = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; preventRotation = false; } public function AddShape(_arg1:b2ShapeDef):void{ var _local2:int; _local2 = 0; while (_local2 < b2Settings.b2_maxShapesPerBody) { if (shapes[_local2] == null){ shapes[_local2] = _arg1; break; }; _local2++; }; } } }//package Box2D.Dynamics
Section 57
//b2CollisionFilter (Box2D.Dynamics.b2CollisionFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2CollisionFilter { public static var b2_defaultFilter:b2CollisionFilter = new (b2CollisionFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:Boolean; if ((((_arg1.m_groupIndex == _arg2.m_groupIndex)) && (!((_arg1.m_groupIndex == 0))))){ return ((_arg1.m_groupIndex > 0)); }; _local3 = ((!(((_arg1.m_maskBits & _arg2.m_categoryBits) == 0))) && (!(((_arg1.m_categoryBits & _arg2.m_maskBits) == 0)))); return (_local3); } } }//package Box2D.Dynamics
Section 58
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } public function Collide():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2ContactNode; var _local4:b2ContactNode; var _local5:b2Contact; var _local6:int; var _local7:int; _local5 = m_world.m_contactList; while (_local5 != null) { if (((_local5.m_shape1.m_body.IsSleeping()) && (_local5.m_shape2.m_body.IsSleeping()))){ } else { _local6 = _local5.GetManifoldCount(); _local5.Evaluate(); _local7 = _local5.GetManifoldCount(); if ((((_local6 == 0)) && ((_local7 > 0)))){ _local1 = _local5.m_shape1.m_body; _local2 = _local5.m_shape2.m_body; _local3 = _local5.m_node1; _local4 = _local5.m_node2; _local3.contact = _local5; _local3.other = _local2; _local3.prev = null; _local3.next = _local1.m_contactList; if (_local3.next != null){ _local3.next.prev = _local5.m_node1; }; _local1.m_contactList = _local5.m_node1; _local4.contact = _local5; _local4.other = _local1; _local4.prev = null; _local4.next = _local2.m_contactList; if (_local4.next != null){ _local4.next.prev = _local4; }; _local2.m_contactList = _local4; } else { if ((((_local6 > 0)) && ((_local7 == 0)))){ _local1 = _local5.m_shape1.m_body; _local2 = _local5.m_shape2.m_body; _local3 = _local5.m_node1; _local4 = _local5.m_node2; if (_local3.prev){ _local3.prev.next = _local3.next; }; if (_local3.next){ _local3.next.prev = _local3.prev; }; if (_local3 == _local1.m_contactList){ _local1.m_contactList = _local3.next; }; _local3.prev = null; _local3.next = null; if (_local4.prev){ _local4.prev.next = _local4.next; }; if (_local4.next){ _local4.next.prev = _local4.prev; }; if (_local4 == _local2.m_contactList){ _local2.m_contactList = _local4.next; }; _local4.prev = null; _local4.next = null; }; }; }; _local5 = _local5.m_next; }; } public function DestroyContact(_arg1:b2Contact):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2ContactNode; var _local5:b2ContactNode; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; if (_arg1.GetManifoldCount() > 0){ _local2 = _arg1.m_shape1.m_body; _local3 = _arg1.m_shape2.m_body; _local4 = _arg1.m_node1; _local5 = _arg1.m_node2; _local2.WakeUp(); _local3.WakeUp(); if (_local4.prev){ _local4.prev.next = _local4.next; }; if (_local4.next){ _local4.next.prev = _local4.prev; }; if (_local4 == _local2.m_contactList){ _local2.m_contactList = _local4.next; }; _local4.prev = null; _local4.next = null; if (_local5.prev){ _local5.prev.next = _local5.next; }; if (_local5.next){ _local5.next.prev = _local5.prev; }; if (_local5 == _local3.m_contactList){ _local3.m_contactList = _local5.next; }; _local5.prev = null; _local5.next = null; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; var _local8:b2Shape; var _local9:b2Body; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_filter == null))) && ((m_world.m_filter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; if (_local6.m_invMass == 0){ _local8 = _local3; _local3 = _local4; _local4 = _local8; _local9 = _local5; _local5 = _local6; _local6 = _local9; }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; m_world.m_contactCount++; return (_local7); } public function CleanContactList():void{ var _local1:b2Contact; var _local2:b2Contact; _local1 = m_world.m_contactList; while (_local1 != null) { _local2 = _local1; _local1 = _local1.m_next; if ((_local2.m_flags & b2Contact.e_destroyFlag)){ DestroyContact(_local2); _local2 = null; }; }; } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 != m_nullContact){ if (m_destroyImmediate == true){ DestroyContact(_local4); _local4 = null; } else { _local4.m_flags = (_local4.m_flags | b2Contact.e_destroyFlag); }; }; } } }//package Box2D.Dynamics
Section 59
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Island { public var m_positionError:Number; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; public static var m_positionIterationCount:uint; public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4):void{ var _local5:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_bodies = new Array(_arg1); _local5 = 0; while (_local5 < _arg1) { m_bodies[_local5] = null; _local5++; }; m_contacts = new Array(_arg2); _local5 = 0; while (_local5 < _arg2) { m_contacts[_local5] = null; _local5++; }; m_joints = new Array(_arg3); _local5 = 0; while (_local5 < _arg3) { m_joints[_local5] = null; _local5++; }; m_allocator = _arg4; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2):void{ var _local3:int; var _local4:b2Body; var _local5:b2ContactSolver; var _local6:int; var _local7:Boolean; var _local8:Boolean; var _local9:Boolean; _local3 = 0; while (_local3 < m_bodyCount) { _local4 = m_bodies[_local3]; if (_local4.m_invMass == 0){ } else { _local4.m_linearVelocity.Add(b2Math.MulFV(_arg1.dt, b2Math.AddVV(_arg2, b2Math.MulFV(_local4.m_invMass, _local4.m_force)))); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_arg1.dt * _local4.m_invI) * _local4.m_torque)); _local4.m_linearVelocity.Multiply(_local4.m_linearDamping); _local4.m_angularVelocity = (_local4.m_angularVelocity * _local4.m_angularDamping); _local4.m_position0.SetV(_local4.m_position); _local4.m_rotation0 = _local4.m_rotation; }; _local3++; }; _local5 = new b2ContactSolver(m_contacts, m_contactCount, m_allocator); _local5.PreSolve(); _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].PrepareVelocitySolver(); _local3++; }; _local3 = 0; while (_local3 < _arg1.iterations) { _local5.SolveVelocityConstraints(); _local6 = 0; while (_local6 < m_jointCount) { m_joints[_local6].SolveVelocityConstraints(_arg1); _local6++; }; _local3++; }; _local3 = 0; while (_local3 < m_bodyCount) { _local4 = m_bodies[_local3]; if (_local4.m_invMass == 0){ } else { _local4.m_position.x = (_local4.m_position.x + (_arg1.dt * _local4.m_linearVelocity.x)); _local4.m_position.y = (_local4.m_position.y + (_arg1.dt * _local4.m_linearVelocity.y)); _local4.m_rotation = (_local4.m_rotation + (_arg1.dt * _local4.m_angularVelocity)); _local4.m_R.Set(_local4.m_rotation); }; _local3++; }; _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].PreparePositionSolver(); _local3++; }; if (b2World.s_enablePositionCorrection){ m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.iterations) { _local7 = _local5.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local8 = true; _local3 = 0; while (_local3 < m_jointCount) { _local9 = m_joints[_local3].SolvePositionConstraints(); _local8 = ((_local8) && (_local9)); _local3++; }; if (((_local7) && (_local8))){ break; }; m_positionIterationCount++; }; }; _local5.PostSolve(); _local3 = 0; while (_local3 < m_bodyCount) { _local4 = m_bodies[_local3]; if (_local4.m_invMass == 0){ } else { _local4.m_R.Set(_local4.m_rotation); _local4.SynchronizeShapes(); _local4.m_force.Set(0, 0); _local4.m_torque = 0; }; _local3++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function UpdateSleep(_arg1:Number):void{ var _local2:int; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local4 = Number.MAX_VALUE; _local5 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local6 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local2 = 0; while (_local2 < m_bodyCount) { _local3 = m_bodies[_local2]; if (_local3.m_invMass == 0){ } else { if ((_local3.m_flags & b2Body.e_allowSleepFlag) == 0){ _local3.m_sleepTime = 0; _local4 = 0; }; if (((((((_local3.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local3.m_angularVelocity * _local3.m_angularVelocity) > _local6)))) || ((b2Math.b2Dot(_local3.m_linearVelocity, _local3.m_linearVelocity) > _local5)))){ _local3.m_sleepTime = 0; _local4 = 0; } else { _local3.m_sleepTime = (_local3.m_sleepTime + _arg1); _local4 = b2Math.b2Min(_local4, _local3.m_sleepTime); }; }; _local2++; }; if (_local4 >= b2Settings.b2_timeToSleep){ _local2 = 0; while (_local2 < m_bodyCount) { _local3 = m_bodies[_local2]; _local3.m_flags = (_local3.m_flags | b2Body.e_sleepFlag); _local2++; }; }; } } }//package Box2D.Dynamics
Section 60
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var dt:Number; public var iterations:int; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 61
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_filter:b2CollisionFilter; public var m_blockAllocator; public var m_contactList:b2Contact; public var m_broadPhase:b2BroadPhase; public var m_allowSleep:Boolean; public var m_jointCount:int; public var m_bodyCount:int; public var m_listener:b2WorldListener; private var step:b2TimeStep; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_bodyDestroyList:b2Body; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_gravity:b2Vec2; public var m_jointList:b2Joint; public var m_contactManager:b2ContactManager; public static var s_enableWarmStarting:int = 1; public static var s_enablePositionCorrection:int = 1; public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; step = new b2TimeStep(); m_contactManager = new b2ContactManager(); super(); m_listener = null; m_filter = b2CollisionFilter.b2_defaultFilter; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_bodyDestroyList = null; m_allowSleep = _arg3; m_gravity = _arg2; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function SetListener(_arg1:b2WorldListener):void{ m_listener = _arg1; } public function DestroyBody(_arg1:b2Body):void{ if ((_arg1.m_flags & b2Body.e_destroyFlag)){ return; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; _arg1.m_flags = (_arg1.m_flags | b2Body.e_destroyFlag); m_bodyCount--; _arg1.m_prev = null; _arg1.m_next = m_bodyDestroyList; m_bodyDestroyList = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = (_local4[_local6] as b2Shape); _local6++; }; return (_local5); } public function CleanBodyList():void{ var _local1:b2Body; var _local2:b2Body; var _local3:b2JointNode; var _local4:b2JointNode; m_contactManager.m_destroyImmediate = true; _local1 = m_bodyDestroyList; while (_local1) { _local2 = _local1; _local1 = _local1.m_next; _local3 = _local2.m_jointList; while (_local3) { _local4 = _local3; _local3 = _local3.next; if (m_listener){ m_listener.NotifyJointDestroyed(_local4.joint); }; DestroyJoint(_local4.joint); }; _local2.Destroy(); }; m_bodyDestroyList = null; m_contactManager.m_destroyImmediate = false; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetContactList():b2Contact{ return (m_contactList); } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.ResetProxy(m_broadPhase); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; _local3 = _arg1.m_body1; _local4 = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.ResetProxy(m_broadPhase); _local6 = _local6.m_next; }; }; } public function SetFilter(_arg1:b2CollisionFilter):void{ m_filter = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; _local2 = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2Body; var _local4:b2Body; var _local5:b2Island; var _local6:b2Contact; var _local7:b2Joint; var _local8:int; var _local9:Array; var _local10:int; var _local11:b2Body; var _local12:int; var _local13:int; var _local14:b2ContactNode; var _local15:b2JointNode; var _local16:uint; step.dt = _arg1; step.iterations = _arg2; if (_arg1 > 0){ step.inv_dt = (1 / _arg1); } else { step.inv_dt = 0; }; m_positionIterationCount = 0; m_contactManager.CleanContactList(); CleanBodyList(); m_contactManager.Collide(); _local5 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator); _local3 = m_bodyList; while (_local3 != null) { _local3.m_flags = (_local3.m_flags & ~(b2Body.e_islandFlag)); _local3 = _local3.m_next; }; _local6 = m_contactList; while (_local6 != null) { _local6.m_flags = (_local6.m_flags & ~(b2Contact.e_islandFlag)); _local6 = _local6.m_next; }; _local7 = m_jointList; while (_local7 != null) { _local7.m_islandFlag = false; _local7 = _local7.m_next; }; _local8 = m_bodyCount; _local9 = new Array(m_bodyCount); _local10 = 0; while (_local10 < m_bodyCount) { _local9[_local10] = null; _local10++; }; _local11 = m_bodyList; while (_local11 != null) { if ((_local11.m_flags & (((b2Body.e_staticFlag | b2Body.e_islandFlag) | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { _local5.Clear(); _local12 = 0; var _temp1 = _local12; _local12 = (_local12 + 1); var _local17 = _temp1; _local9[_local17] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); while (_local12 > 0) { --_local12; _local3 = _local9[_local12]; _local5.AddBody(_local3); _local3.m_flags = (_local3.m_flags & ~(b2Body.e_sleepFlag)); if ((_local3.m_flags & b2Body.e_staticFlag)){ } else { _local14 = _local3.m_contactList; while (_local14 != null) { if ((_local14.contact.m_flags & b2Contact.e_islandFlag)){ } else { _local5.AddContact(_local14.contact); _local14.contact.m_flags = (_local14.contact.m_flags | b2Contact.e_islandFlag); _local4 = _local14.other; if ((_local4.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local12; _local12 = (_local12 + 1); var _local18 = _temp2; _local9[_local18] = _local4; _local4.m_flags = (_local4.m_flags | b2Body.e_islandFlag); }; }; _local14 = _local14.next; }; _local15 = _local3.m_jointList; while (_local15 != null) { if (_local15.joint.m_islandFlag == true){ } else { _local5.AddJoint(_local15.joint); _local15.joint.m_islandFlag = true; _local4 = _local15.other; if ((_local4.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local12; _local12 = (_local12 + 1); _local18 = _temp3; _local9[_local18] = _local4; _local4.m_flags = (_local4.m_flags | b2Body.e_islandFlag); }; }; _local15 = _local15.next; }; }; }; _local5.Solve(step, m_gravity); m_positionIterationCount = b2Math.b2Max(m_positionIterationCount, b2Island.m_positionIterationCount); if (m_allowSleep){ _local5.UpdateSleep(_arg1); }; _local13 = 0; while (_local13 < _local5.m_bodyCount) { _local3 = _local5.m_bodies[_local13]; if ((_local3.m_flags & b2Body.e_staticFlag)){ _local3.m_flags = (_local3.m_flags & ~(b2Body.e_islandFlag)); }; if (((_local3.IsFrozen()) && (m_listener))){ _local16 = m_listener.NotifyBoundaryViolated(_local3); if (_local16 == b2WorldListener.b2_destroyBody){ DestroyBody(_local3); _local3 = null; _local5.m_bodies[_local13] = null; }; }; _local13++; }; }; _local11 = _local11.m_next; }; m_broadPhase.Commit(); } } }//package Box2D.Dynamics
Section 62
//b2WorldListener (Box2D.Dynamics.b2WorldListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; public class b2WorldListener { public static var b2_freezeBody:uint = 0; public static var b2_destroyBody:uint = 1; public function NotifyBoundaryViolated(_arg1:b2Body):uint{ return (b2_freezeBody); } public function NotifyJointDestroyed(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 63
//CampaignInfo (com.google.analytics.campaign.CampaignInfo) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignInfo { private var _new:Boolean; private var _empty:Boolean; public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){ _empty = _arg1; _new = _arg2; } public function isEmpty():Boolean{ return (_empty); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((!(isEmpty())) && (isNew()))){ _local1.utmcn = utmcn; }; if (((!(isEmpty())) && (!(isNew())))){ _local1.utmcr = utmcr; }; return (_local1); } public function isNew():Boolean{ return (_new); } public function get utmcn():String{ return ("1"); } public function get utmcr():String{ return ("1"); } } }//package com.google.analytics.campaign
Section 64
//CampaignKey (com.google.analytics.campaign.CampaignKey) package com.google.analytics.campaign { public class CampaignKey { public var UCMD:String;// = "utm_medium" public var UCID:String;// = "utm_id" public var UCTR:String;// = "utm_term" public var UCSR:String;// = "utm_source" public var UCNO:String;// = "utm_nooverride" public var UCCN:String;// = "utm_campaign" public var UGCLID:String;// = "gclid" public var UCCT:String;// = "utm_content" public function CampaignKey(){ UCCN = "utm_campaign"; UCCT = "utm_content"; UCID = "utm_id"; UCMD = "utm_medium"; UCNO = "utm_nooverride"; UCSR = "utm_source"; UCTR = "utm_term"; UGCLID = "gclid"; super(); } } }//package com.google.analytics.campaign
Section 65
//CampaignManager (com.google.analytics.campaign.CampaignManager) package com.google.analytics.campaign { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; public class CampaignManager { private var _config:Configuration; private var _domainHash:Number; private var _debug:DebugConfiguration; private var _timeStamp:Number; private var _referrer:String; private var _buffer:Buffer; public static const trackingDelimiter:String = "|"; public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _domainHash = _arg4; _referrer = _arg5; _timeStamp = _arg6; } public function hasNoOverride(_arg1:String):Boolean{ var _local2:CampaignKey; var _local3:Variables; var _local4:String; _local2 = _config.campaignKey; if (_arg1 == ""){ return (false); }; _local3 = new Variables(_arg1); _local4 = ""; if (_local3.hasOwnProperty(_local2.UCNO)){ _local4 = _local3[_local2.UCNO]; switch (_local4){ case "1": return (true); case "": case "0": default: return (false); }; }; return (false); } public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{ var _local3:CampaignInfo; var _local4:CampaignTracker; var _local5:Boolean; var _local6:Boolean; var _local7:int; var _local8:CampaignTracker; var _local9:int; _local3 = new CampaignInfo(); _local5 = false; _local6 = false; _local7 = 0; if (((_config.allowLinker) && (_buffer.isGenuine()))){ if (!_buffer.hasUTMZ()){ return (_local3); }; }; _local4 = getTrackerFromSearchString(_arg1); if (isValid(_local4)){ _local6 = hasNoOverride(_arg1); if (((_local6) && (!(_buffer.hasUTMZ())))){ return (_local3); }; }; if (!isValid(_local4)){ _local4 = getOrganicCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){ return (_local3); }; }; if (((!(isValid(_local4))) && (_arg2))){ _local4 = getReferrerCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){ return (_local3); }; }; if (!isValid(_local4)){ if (((!(_buffer.hasUTMZ())) && (_arg2))){ _local4 = getDirectCampaign(); }; }; if (!isValid(_local4)){ return (_local3); }; if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){ _local8 = new CampaignTracker(); _local8.fromTrackerString(_buffer.utmz.campaignTracking); _local5 = (_local8.toTrackerString() == _local4.toTrackerString()); _local7 = _buffer.utmz.responseCount; }; if (((!(_local5)) || (_arg2))){ _local9 = _buffer.utma.sessionCount; _local7++; if (_local9 == 0){ _local9 = 1; }; _buffer.utmz.domainHash = _domainHash; _buffer.utmz.campaignCreation = _timeStamp; _buffer.utmz.campaignSessions = _local9; _buffer.utmz.responseCount = _local7; _buffer.utmz.campaignTracking = _local4.toTrackerString(); _debug.info(_buffer.utmz.toString(), VisualDebugMode.geek); _local3 = new CampaignInfo(false, true); } else { _local3 = new CampaignInfo(false, false); }; return (_local3); } public function isValid(_arg1:CampaignTracker):Boolean{ if (((_arg1) && (_arg1.isValid()))){ return (true); }; return (false); } public function getTrackerFromSearchString(_arg1:String):CampaignTracker{ var _local2:CampaignTracker; var _local3:CampaignTracker; var _local4:CampaignKey; var _local5:Variables; _local2 = getOrganicCampaign(); _local3 = new CampaignTracker(); _local4 = _config.campaignKey; if (_arg1 == ""){ return (_local3); }; _local5 = new Variables(_arg1); if (_local5.hasOwnProperty(_local4.UCID)){ _local3.id = _local5[_local4.UCID]; }; if (_local5.hasOwnProperty(_local4.UCSR)){ _local3.source = _local5[_local4.UCSR]; }; if (_local5.hasOwnProperty(_local4.UGCLID)){ _local3.clickId = _local5[_local4.UGCLID]; }; if (_local5.hasOwnProperty(_local4.UCCN)){ _local3.name = _local5[_local4.UCCN]; } else { _local3.name = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCMD)){ _local3.medium = _local5[_local4.UCMD]; } else { _local3.medium = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCTR)){ _local3.term = _local5[_local4.UCTR]; } else { if (((_local2) && (!((_local2.term == ""))))){ _local3.term = _local2.term; }; }; if (_local5.hasOwnProperty(_local4.UCCT)){ _local3.content = _local5[_local4.UCCT]; }; return (_local3); } public function getOrganicCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:Array; var _local5:OrganicReferrer; var _local6:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = ""; if (_local2.hostName != ""){ if (_local2.hostName.indexOf(".") > -1){ _local4 = _local2.hostName.split("."); switch (_local4.length){ case 2: _local3 = _local4[0]; break; case 3: _local3 = _local4[1]; break; }; }; }; if (_config.organic.match(_local3)){ _local5 = _config.organic.getReferrerByName(_local3); _local6 = _config.organic.getKeywordValue(_local5, _local2.search); _local1 = new CampaignTracker(); _local1.source = _local5.engine; _local1.name = "(organic)"; _local1.medium = "organic"; _local1.term = _local6; }; return (_local1); } public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "referral")))){ return (_config.organic.isIgnoredReferral(_arg1.source)); }; return (false); } public function getDirectCampaign():CampaignTracker{ var _local1:CampaignTracker; _local1 = new CampaignTracker(); _local1.source = "(direct)"; _local1.name = "(direct)"; _local1.medium = "(none)"; return (_local1); } public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "organic")))){ return (_config.organic.isIgnoredKeyword(_arg1.term)); }; return (false); } public function getReferrerCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = _local2.hostName; _local4 = _local2.path; if (_local3.indexOf("www.") == 0){ _local3 = _local3.substr(4); }; _local1 = new CampaignTracker(); _local1.source = _local3; _local1.name = "(referral)"; _local1.medium = "referral"; _local1.content = _local4; return (_local1); } public static function isInvalidReferrer(_arg1:String):Boolean{ var _local2:URL; if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){ return (true); }; if (_arg1.indexOf("://") > -1){ _local2 = new URL(_arg1); if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){ return (true); }; }; return (false); } public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{ var _local3:URL; _local3 = new URL(_arg1); if (_local3.hostName.indexOf(_arg2.google) > -1){ if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){ if (_local3.path == ("/" + _arg2.googleCsePath)){ return (true); }; }; }; return (false); } } }//package com.google.analytics.campaign
Section 66
//CampaignTracker (com.google.analytics.campaign.CampaignTracker) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignTracker { public var content:String; public var id:String; public var clickId:String; public var name:String; public var term:String; public var medium:String; public var source:String; public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){ this.id = _arg1; this.source = _arg2; this.clickId = _arg3; this.name = _arg4; this.medium = _arg5; this.term = _arg6; this.content = _arg7; } public function toTrackerString():String{ var _local1:Array; _local1 = []; _addIfNotEmpty(_local1, "utmcsr=", source); _addIfNotEmpty(_local1, "utmccn=", name); _addIfNotEmpty(_local1, "utmcmd=", medium); _addIfNotEmpty(_local1, "utmctr=", term); _addIfNotEmpty(_local1, "utmcct=", content); _addIfNotEmpty(_local1, "utmcid=", id); _addIfNotEmpty(_local1, "utmgclid=", clickId); return (_local1.join(CampaignManager.trackingDelimiter)); } public function isValid():Boolean{ if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){ return (true); }; return (false); } private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{ if (_arg3 != ""){ _arg3 = _arg3.split("+").join("%20"); _arg3 = _arg3.split(" ").join("%20"); _arg1.push((_arg2 + _arg3)); }; } public function fromTrackerString(_arg1:String):void{ var _local2:String; var _local3:Variables; _local2 = _arg1.split(CampaignManager.trackingDelimiter).join("&"); _local3 = new Variables(_local2); if (_local3.hasOwnProperty("utmcid")){ this.id = _local3["utmcid"]; }; if (_local3.hasOwnProperty("utmcsr")){ this.source = _local3["utmcsr"]; }; if (_local3.hasOwnProperty("utmccn")){ this.name = _local3["utmccn"]; }; if (_local3.hasOwnProperty("utmcmd")){ this.medium = _local3["utmcmd"]; }; if (_local3.hasOwnProperty("utmctr")){ this.term = _local3["utmctr"]; }; if (_local3.hasOwnProperty("utmcct")){ this.content = _local3["utmcct"]; }; if (_local3.hasOwnProperty("utmgclid")){ this.clickId = _local3["utmgclid"]; }; } } }//package com.google.analytics.campaign
Section 67
//FlashTracker (com.google.analytics.components.FlashTracker) package com.google.analytics.components { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; import flash.display.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; import com.google.analytics.*; import flash.utils.*; import com.google.analytics.events.*; public class FlashTracker extends Sprite implements AnalyticsTracker { private var _adSense:AdSenseGlobals; private var _env:Environment; protected var _height:Number;// = 18 private var _idleTimer:IdleTimer; private var _config:Configuration; private var _mode:String;// = "AS3" private var _dom:HTMLDOM; private var _ready:Boolean;// = false protected var _width:Number;// = 18 private var _account:String;// = "" protected var _componentInspectorSetting:Boolean; private var _visualDebug:Boolean;// = false public var boundingBox_mc:DisplayObject; private var _debug:DebugConfiguration; private var _buffer:Buffer; private var _display:DisplayObject; protected var livePreviewHeight:Number; private var _jsproxy:JavascriptProxy; protected var isLivePreview:Boolean; protected var preview:MovieClip; private var _gifRequest:GIFRequest; protected var livePreviewWidth:Number; private var _tracker:GoogleAnalyticsAPI; public static var version:Version = API.version; public function FlashTracker(){ _ready = false; _account = ""; _mode = TrackerMode.AS3; _visualDebug = false; _width = 18; _height = 18; super(); _tracker = new TrackerCache(); isLivePreview = _checkLivePreview(); _componentInspectorSetting = false; if (boundingBox_mc){ boundingBox_mc.visible = false; removeChild(boundingBox_mc); boundingBox_mc = null; }; if (isLivePreview){ _createLivePreview(); }; addEventListener(Event.ENTER_FRAME, _factory); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4)); } public function trackTrans():void{ _tracker.trackTrans(); } private function _createLivePreview():void{ var _local1:Graphics; var _local2:Class; preview = new MovieClip(); _local1 = preview.graphics; _local1.beginFill(0xFFFFFF); _local1.moveTo(0, 0); _local1.lineTo(0, _width); _local1.lineTo(_width, _height); _local1.lineTo(_height, 0); _local1.lineTo(0, 0); _local1.endFill(); _local2 = (getDefinitionByName("com.google.analytics.components::Icon") as Class); preview.icon_mc = new (_local2); preview.icon_mc.name = "icon_mc"; preview.addChild(preview.icon_mc); addChild(preview); } public function trackPageview(_arg1:String=""):void{ _tracker.trackPageview(_arg1); } public function get account():String{ return (_account); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _tracker.linkByPost(_arg1, _arg2); } public function getDetectTitle():Boolean{ return (_tracker.getDetectTitle()); } public function setCampNameKey(_arg1:String):void{ _tracker.setCampNameKey(_arg1); } public function resetSession():void{ _tracker.resetSession(); } public function set account(_arg1:String):void{ _account = _arg1; } public function get debug():DebugConfiguration{ if (!_debug){ _createDebugAndConfig(); }; return (_debug); } public function createEventTracker(_arg1:String):EventTracker{ return (_tracker.createEventTracker(_arg1)); } public function set config(_arg1:Configuration):void{ _config = _arg1; } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8)); } public function setLocalServerMode():void{ _tracker.setLocalServerMode(); } public function getLocalGifPath():String{ return (_tracker.getLocalGifPath()); } public function clearIgnoredRef():void{ _tracker.clearIgnoredRef(); } public function isReady():Boolean{ return (_ready); } public function set debug(_arg1:DebugConfiguration):void{ _debug = _arg1; } public function getVersion():String{ return (_tracker.getVersion()); } public function setLocalRemoteServerMode():void{ _tracker.setLocalRemoteServerMode(); } public function setCampNOKey(_arg1:String):void{ _tracker.setCampNOKey(_arg1); } public function addIgnoredOrganic(_arg1:String):void{ _tracker.addIgnoredOrganic(_arg1); } public function setCookiePath(_arg1:String):void{ _tracker.setCookiePath(_arg1); } public function setCampTermKey(_arg1:String):void{ _tracker.setCampTermKey(_arg1); } private function _trackerFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account)); _adSense = new AdSenseGlobals(debug); _dom = new HTMLDOM(debug); _dom.cacheProperties(); _env = new Environment("", "", "", debug, _dom); _buffer = new Buffer(config, debug, false); _gifRequest = new GIFRequest(config, debug, _buffer, _env); _idleTimer = new IdleTimer(config, debug, _display, _buffer); _env.url = _display.stage.loaderInfo.url; return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense)); } public function setCampaignTrack(_arg1:Boolean):void{ _tracker.setCampaignTrack(_arg1); } public function getServiceMode():ServerOperationMode{ return (_tracker.getServiceMode()); } public function set componentInspectorSetting(_arg1:Boolean):void{ _componentInspectorSetting = _arg1; } public function setSessionTimeout(_arg1:int):void{ _tracker.setSessionTimeout(_arg1); } public function setRemoteServerMode():void{ _tracker.setRemoteServerMode(); } public function get visualDebug():Boolean{ return (_visualDebug); } public function addOrganic(_arg1:String, _arg2:String):void{ _tracker.addOrganic(_arg1, _arg2); } public function setCookieTimeout(_arg1:int):void{ _tracker.setCookieTimeout(_arg1); } public function getClientInfo():Boolean{ return (_tracker.getClientInfo()); } public function setAllowLinker(_arg1:Boolean):void{ _tracker.setAllowLinker(_arg1); } public function setClientInfo(_arg1:Boolean):void{ _tracker.setClientInfo(_arg1); } private function _bridgeFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account)); return (new Bridge(account, _debug, _jsproxy)); } public function get config():Configuration{ if (!_config){ _createDebugAndConfig(); }; return (_config); } public function set mode(_arg1:String):void{ _mode = _arg1; } public function setDetectFlash(_arg1:Boolean):void{ _tracker.setDetectFlash(_arg1); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function setVar(_arg1:String):void{ _tracker.setVar(_arg1); } public function clearIgnoredOrganic():void{ _tracker.clearIgnoredOrganic(); } public function setDomainName(_arg1:String):void{ _tracker.setDomainName(_arg1); } private function _checkLivePreview():Boolean{ if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return (true); }; return (false); } public function setCampSourceKey(_arg1:String):void{ _tracker.setCampSourceKey(_arg1); } public function setCampContentKey(_arg1:String):void{ _tracker.setCampContentKey(_arg1); } public function setSize(_arg1:Number, _arg2:Number):void{ } public function setAllowAnchor(_arg1:Boolean):void{ _tracker.setAllowAnchor(_arg1); } public function setLocalGifPath(_arg1:String):void{ _tracker.setLocalGifPath(_arg1); } public function get mode():String{ return (_mode); } public function setSampleRate(_arg1:Number):void{ _tracker.setSampleRate(_arg1); } public function setAllowHash(_arg1:Boolean):void{ _tracker.setAllowHash(_arg1); } public function setDetectTitle(_arg1:Boolean):void{ _tracker.setDetectTitle(_arg1); } public function cookiePathCopy(_arg1:String):void{ _tracker.cookiePathCopy(_arg1); } private function _factory(_arg1:Event):void{ var _local2:GoogleAnalyticsAPI; var _local3:TrackerCache; removeEventListener(Event.ENTER_FRAME, _factory); if (isLivePreview){ return; }; _display = this; _createDebugAndConfig(); if (visualDebug){ debug.layout = new Layout(debug, _display); debug.active = visualDebug; }; _jsproxy = new JavascriptProxy(debug); _local3 = (_tracker as TrackerCache); switch (mode){ case TrackerMode.BRIDGE: _local2 = _bridgeFactory(); break; case TrackerMode.AS3: default: _local2 = _trackerFactory(); }; if (!_local3.isEmpty()){ _local3.tracker = _local2; _local3.flush(); }; _tracker = _local2; _ready = true; dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this)); } public function getDetectFlash():Boolean{ return (_tracker.getDetectFlash()); } public function clearOrganic():void{ _tracker.clearOrganic(); } private function _createDebugAndConfig():void{ if (!_debug){ this.debug = new DebugConfiguration(); }; if (!_config){ this.config = new Configuration(debug); }; } public function addIgnoredRef(_arg1:String):void{ _tracker.addIgnoredRef(_arg1); } public function set visualDebug(_arg1:Boolean):void{ _visualDebug = _arg1; } public function setCampMediumKey(_arg1:String):void{ _tracker.setCampMediumKey(_arg1); } public function getAccount():String{ return (_tracker.getAccount()); } public function link(_arg1:String, _arg2:Boolean=false):void{ _tracker.link(_arg1, _arg2); } } var _local1:* = ServerOperationMode; return (_local1); }//package com.google.analytics.components
Section 68
//Icon (com.google.analytics.components.Icon) package com.google.analytics.components { import flash.display.*; public dynamic class Icon extends MovieClip { } }//package com.google.analytics.components
Section 69
//BrowserInfo (com.google.analytics.core.BrowserInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; public class BrowserInfo { private var _config:Configuration; private var _info:Environment; public function BrowserInfo(_arg1:Configuration, _arg2:Environment){ _config = _arg1; _info = _arg2; } public function get utmul():String{ return (_info.language.toLowerCase()); } public function get utmje():String{ return ("0"); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmsr():String{ return (((_info.screenWidth + "x") + _info.screenHeight)); } public function get utmcs():String{ return (_info.languageEncoding); } public function get utmfl():String{ var _local1:Version; if (_config.detectFlash){ _local1 = _info.flashVersion; return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build)); }; return ("-"); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; _local1.utmcs = utmcs; _local1.utmsr = utmsr; _local1.utmsc = utmsc; _local1.utmul = utmul; _local1.utmje = utmje; _local1.utmfl = utmfl; return (_local1); } public function get utmsc():String{ return ((_info.screenColorDepth + "-bit")); } } }//package com.google.analytics.core
Section 70
//Buffer (com.google.analytics.core.Buffer) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.net.*; import flash.events.*; import com.google.analytics.data.*; public dynamic class Buffer { private var _SO:SharedObject; private var _OBJ:Object; private var _utma:UTMA; private var _utmb:UTMB; private var _utmc:UTMC; private var _debug:DebugConfiguration; private var _utmk:UTMK; private var _config:Configuration; private var _utmv:UTMV; private var _utmz:UTMZ; private var _volatile:Boolean; public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){ var _local5:Boolean; var _local6:String; super(); _config = _arg1; _debug = _arg2; UTMB.defaultTimespan = _config.sessionTimeout; UTMZ.defaultTimespan = _config.conversionTimeout; if (!_arg3){ _SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath); _local5 = false; if (_SO.data.utma){ if (!hasUTMA()){ _createUMTA(); }; _utma.fromSharedObject(_SO.data.utma); if (_debug.verbose){ _debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek); }; if (_utma.isExpired()){ if (_debug.verbose){ _debug.warning("UTMA has expired", VisualDebugMode.advanced); }; _clearUTMA(); _local5 = true; }; }; if (_SO.data.utmb){ if (!hasUTMB()){ _createUMTB(); }; _utmb.fromSharedObject(_SO.data.utmb); if (_debug.verbose){ _debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek); }; if (_utmb.isExpired()){ if (_debug.verbose){ _debug.warning("UTMB has expired", VisualDebugMode.advanced); }; _clearUTMB(); _local5 = true; }; }; if (_SO.data.utmc){ delete _SO.data.utmc; _local5 = true; }; if (_SO.data.utmk){ if (!hasUTMK()){ _createUMTK(); }; _utmk.fromSharedObject(_SO.data.utmk); if (_debug.verbose){ _debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek); }; }; if (_SO.data.utmv){ if (!hasUTMV()){ _createUMTV(); }; _utmv.fromSharedObject(_SO.data.utmv); if (_debug.verbose){ _debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek); }; if (_utmv.isExpired()){ if (_debug.verbose){ _debug.warning("UTMV has expired", VisualDebugMode.advanced); }; _clearUTMV(); _local5 = true; }; }; if (_SO.data.utmz){ if (!hasUTMZ()){ _createUMTZ(); }; _utmz.fromSharedObject(_SO.data.utmz); if (_debug.verbose){ _debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek); }; if (_utmz.isExpired()){ if (_debug.verbose){ _debug.warning("UTMZ has expired", VisualDebugMode.advanced); }; _clearUTMZ(); _local5 = true; }; }; if (_local5){ save(); }; } else { _OBJ = new Object(); if (_arg4){ for (_local6 in _arg4) { _OBJ[_local6] = _arg4[_local6]; }; }; }; _volatile = _arg3; } public function save():void{ var flushStatus:String; if (!isVolatile()){ flushStatus = null; try { flushStatus = _SO.flush(); } catch(e:Error) { _debug.warning("Error...Could not write SharedObject to disk"); }; switch (flushStatus){ case SharedObjectFlushStatus.PENDING: _debug.info("Requesting permission to save object..."); _SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: _debug.info("Value flushed to disk."); break; }; }; } public function get utmv():UTMV{ if (!hasUTMV()){ _createUMTV(); }; return (_utmv); } public function clearCookies():void{ utma.reset(); utmb.reset(); utmc.reset(); utmz.reset(); utmv.reset(); utmk.reset(); } public function get utmz():UTMZ{ if (!hasUTMZ()){ _createUMTZ(); }; return (_utmz); } public function hasUTMA():Boolean{ if (_utma){ return (true); }; return (false); } public function hasUTMB():Boolean{ if (_utmb){ return (true); }; return (false); } public function isGenuine():Boolean{ if (!hasUTMK()){ return (true); }; return ((utmk.hash == generateCookiesHash())); } public function resetCurrentSession():void{ _clearUTMB(); _clearUTMC(); save(); } public function hasUTMC():Boolean{ if (_utmc){ return (true); }; return (false); } public function hasUTMK():Boolean{ if (_utmk){ return (true); }; return (false); } public function generateCookiesHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + utma.valueOf()); _local1 = (_local1 + utmb.valueOf()); _local1 = (_local1 + utmc.valueOf()); _local1 = (_local1 + utmz.valueOf()); _local1 = (_local1 + utmv.valueOf()); return (Utils.generateHash(_local1)); } private function _createUMTA():void{ _utma = new UTMA(); _utma.proxy = this; } private function _createUMTB():void{ _utmb = new UTMB(); _utmb.proxy = this; } private function _createUMTC():void{ _utmc = new UTMC(); } public function hasUTMV():Boolean{ if (_utmv){ return (true); }; return (false); } private function _createUMTK():void{ _utmk = new UTMK(); _utmk.proxy = this; } public function hasUTMZ():Boolean{ if (_utmz){ return (true); }; return (false); } private function _createUMTV():void{ _utmv = new UTMV(); _utmv.proxy = this; } private function _createUMTZ():void{ _utmz = new UTMZ(); _utmz.proxy = this; } public function updateUTMA(_arg1:Number):void{ if (_debug.verbose){ _debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced); }; if (!utma.isEmpty()){ if (isNaN(utma.sessionCount)){ utma.sessionCount = 1; } else { utma.sessionCount = (utma.sessionCount + 1); }; utma.lastTime = utma.currentTime; utma.currentTime = _arg1; }; } private function _onFlushStatus(_arg1:NetStatusEvent):void{ _debug.info("User closed permission dialog..."); switch (_arg1.info.code){ case "SharedObject.Flush.Success": _debug.info("User granted permission -- value saved."); break; case "SharedObject.Flush.Failed": _debug.info("User denied permission -- value not saved."); break; }; _SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); } private function _clearUTMA():void{ _utma = null; if (!isVolatile()){ _SO.data.utma = null; delete _SO.data.utma; }; } private function _clearUTMC():void{ _utmc = null; } private function _clearUTMB():void{ _utmb = null; if (!isVolatile()){ _SO.data.utmb = null; delete _SO.data.utmb; }; } public function update(_arg1:String, _arg2):void{ if (isVolatile()){ _OBJ[_arg1] = _arg2; } else { _SO.data[_arg1] = _arg2; }; } private function _clearUTMZ():void{ _utmz = null; if (!isVolatile()){ _SO.data.utmz = null; delete _SO.data.utmz; }; } private function _clearUTMV():void{ _utmv = null; if (!isVolatile()){ _SO.data.utmv = null; delete _SO.data.utmv; }; } public function isVolatile():Boolean{ return (_volatile); } public function get utma():UTMA{ if (!hasUTMA()){ _createUMTA(); }; return (_utma); } public function get utmb():UTMB{ if (!hasUTMB()){ _createUMTB(); }; return (_utmb); } public function get utmc():UTMC{ if (!hasUTMC()){ _createUMTC(); }; return (_utmc); } public function get utmk():UTMK{ if (!hasUTMK()){ _createUMTK(); }; return (_utmk); } } }//package com.google.analytics.core
Section 71
//DocumentInfo (com.google.analytics.core.DocumentInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; public class DocumentInfo { private var _config:Configuration; private var _utmr:String; private var _adSense:AdSenseGlobals; private var _info:Environment; private var _pageURL:String; public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){ _config = _arg1; _info = _arg2; _utmr = _arg3; _pageURL = _arg4; _adSense = _arg5; } public function get utmr():String{ if (!_utmr){ return ("-"); }; return (_utmr); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } private function _renderPageURL(_arg1:String=""):String{ var _local2:String; var _local3:String; _local2 = _info.locationPath; _local3 = _info.locationSearch; if (((!(_arg1)) || ((_arg1 == "")))){ _arg1 = (_local2 + unescape(_local3)); }; return (_arg1); } public function get utmp():String{ return (_renderPageURL(_pageURL)); } private function _generateHitId():Number{ var _local1:Number; if (((_adSense.hid) && (!((_adSense.hid == ""))))){ _local1 = Number(_adSense.hid); } else { _local1 = Math.round((Math.random() * 2147483647)); _adSense.hid = String(_local1); }; return (_local1); } public function get utmhid():String{ return (String(_generateHitId())); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((_config.detectTitle) && (!((utmdt == ""))))){ _local1.utmdt = utmdt; }; _local1.utmhid = utmhid; _local1.utmr = utmr; _local1.utmp = utmp; return (_local1); } public function get utmdt():String{ return (_info.documentTitle); } } }//package com.google.analytics.core
Section 72
//Domain (com.google.analytics.core.Domain) package com.google.analytics.core { import com.google.analytics.debug.*; public class Domain { private var _mode:DomainNameMode; private var _name:String; private var _debug:DebugConfiguration; public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){ _debug = _arg3; if (_arg1 == null){ _arg1 = DomainNameMode.auto; }; _mode = _arg1; if (_arg1 == DomainNameMode.custom){ this.name = _arg2; } else { _name = _arg2; }; } public function get mode():DomainNameMode{ return (_mode); } public function set mode(_arg1:DomainNameMode):void{ _mode = _arg1; if (_mode == DomainNameMode.none){ _name = ""; }; } public function get name():String{ return (_name); } public function set name(_arg1:String):void{ if (((!((_arg1.charAt(0) == "."))) && (_debug))){ _debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek); }; _name = _arg1; } } }//package com.google.analytics.core
Section 73
//DomainNameMode (com.google.analytics.core.DomainNameMode) package com.google.analytics.core { public class DomainNameMode { private var _value:int; private var _name:String; public static const custom:DomainNameMode = new DomainNameMode(2, "custom"); ; public static const none:DomainNameMode = new DomainNameMode(0, "none"); ; public static const auto:DomainNameMode = new DomainNameMode(1, "auto"); ; public function DomainNameMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 74
//EventInfo (com.google.analytics.core.EventInfo) package com.google.analytics.core { import com.google.analytics.data.*; import com.google.analytics.utils.*; public class EventInfo { private var _isEventHit:Boolean; private var _ext10:X10; private var _x10:X10; public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){ _isEventHit = _arg1; _x10 = _arg2; _ext10 = _arg3; } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmt():String{ return ("event"); } public function get utme():String{ return (_x10.renderMergedUrlString(_ext10)); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (_isEventHit){ _local1.utmt = utmt; }; _local1.utme = utme; return (_local1); } } }//package com.google.analytics.core
Section 75
//EventTracker (com.google.analytics.core.EventTracker) package com.google.analytics.core { import com.google.analytics.v4.*; public class EventTracker { private var _parent:GoogleAnalyticsAPI; public var name:String; public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){ this.name = _arg1; _parent = _arg2; } public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{ return (_parent.trackEvent(name, _arg1, _arg2, _arg3)); } } }//package com.google.analytics.core
Section 76
//ga_internal (com.google.analytics.core.ga_internal) package com.google.analytics.core { public namespace ga_internal; }//package com.google.analytics.core
Section 77
//GIFRequest (com.google.analytics.core.GIFRequest) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.net.*; import flash.events.*; import flash.display.*; import com.google.analytics.utils.*; import flash.system.*; public class GIFRequest { private var _info:Environment; private var _count:int; private var _utmac:String; private var _alertcount:int; private var _debug:DebugConfiguration; private var _lastRequest:URLRequest; private var _buffer:Buffer; private var _config:Configuration; private var _requests:Array; public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _info = _arg4; _count = 0; _alertcount = 0; _requests = []; } public function get utmn():String{ return ((Utils.generate32bitRandom() as String)); } public function onIOError(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _lastRequest.url; _local3 = String((_requests.length - 1)); _local4 = (("Gif Request #" + _local3) + " failed"); if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local2.indexOf("?") > -1){ _local2 = _local2.split("?")[0]; }; _local2 = _shortenURL(_local2); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable")); }; _debug.failure(_local4); } else { _debug.warning(_local4); }; _removeListeners(_arg1.target); } public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{ var _local5:String; var _local6:URLRequest; var _local7:URLRequest; _utmac = _arg1; if (!_arg2){ _arg2 = new Variables(); }; _arg2.URIencode = false; _arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"]; _arg2.post = ["utmcc"]; if (_debug.verbose){ _debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek); }; if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){ if (_arg4){ updateToken(); }; if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){ if (((!(_arg3)) && (_arg4))){ _buffer.utmb.token = (_buffer.utmb.token - 1); }; _buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1); if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; _arg2.utmwv = utmwv; _arg2.utmn = Utils.generate32bitRandom(); if (_info.domainName != ""){ _arg2.utmhn = _info.domainName; }; if (_config.sampleRate < 1){ _arg2.utmsp = (_config.sampleRate * 100); }; if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){ _local5 = _info.locationSWFPath; if (_local5.lastIndexOf("/") > 0){ _local5 = _local5.substring(0, _local5.lastIndexOf("/")); }; _local6 = new URLRequest(); if (_config.localGIFpath.indexOf("http") == 0){ _local6.url = _config.localGIFpath; } else { _local6.url = (_local5 + _config.localGIFpath); }; _local6.url = (_local6.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local6); } else { sendRequest(_local6); }; }; if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){ _local7 = new URLRequest(); if (_info.protocol == Protocols.HTTPS){ _local7.url = _config.secureRemoteGIFpath; } else { if (_info.protocol == Protocols.HTTP){ _local7.url = _config.remoteGIFpath; } else { _local7.url = _config.remoteGIFpath; }; }; _arg2.utmac = utmac; _arg2.utmcc = encodeURIComponent(utmcc); _local7.url = (_local7.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local7); } else { sendRequest(_local7); }; }; }; }; } public function onSecurityError(_arg1:SecurityErrorEvent):void{ if (_debug.GIFRequests){ _debug.failure(_arg1.text); }; } public function get utmsp():String{ return (((_config.sampleRate * 100) as String)); } public function get utmcc():String{ var _local1:Array; _local1 = []; if (_buffer.hasUTMA()){ _local1.push((_buffer.utma.toURLString() + ";")); }; if (_buffer.hasUTMZ()){ _local1.push((_buffer.utmz.toURLString() + ";")); }; if (_buffer.hasUTMV()){ _local1.push((_buffer.utmv.toURLString() + ";")); }; return (_local1.join("+")); } public function get utmac():String{ return (_utmac); } public function get utmwv():String{ return (_config.version); } public function sendRequest(_arg1:URLRequest):void{ var loader:Loader; var context:LoaderContext; var request = _arg1; loader = new Loader(); loader.name = String(_count++); context = new LoaderContext(false); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); _lastRequest = request; _requests[loader.name] = new RequestObject(request); try { loader.load(request, context); } catch(e:Error) { _debug.failure("\"Loader.load()\" could not instanciate Gif Request"); }; } private function _removeListeners(_arg1:Object):void{ _arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); _arg1.removeEventListener(Event.COMPLETE, onComplete); } public function updateToken():void{ var _local1:Number; var _local2:Number; _local1 = new Date().getTime(); _local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000)); if (_debug.verbose){ _debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek); }; if (_local2 >= 1){ _buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity); _buffer.utmb.lastTime = _local1; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; }; } private function _shortenURL(_arg1:String):String{ var _local2:Array; if (_arg1.length > 60){ _local2 = _arg1.split("/"); while (_arg1.length > 60) { _local2.shift(); _arg1 = ("../" + _local2.join("/")); }; }; return (_arg1); } public function get utmhn():String{ return (_info.domainName); } private function _debugSend(_arg1:URLRequest):void{ var _local2:String; var _local3:String; _local2 = ""; switch (_debug.mode){ case VisualDebugMode.geek: _local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url); break; case VisualDebugMode.advanced: _local3 = _arg1.url; if (_local3.indexOf("?") > -1){ _local3 = _local3.split("?")[0]; }; _local3 = _shortenURL(_local3); _local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?"); break; case VisualDebugMode.basic: default: _local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?"); }; _debug.alertGifRequest(_local2, _arg1, this); _alertcount++; } public function onComplete(_arg1:Event):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _arg1.target.loader.name; _requests[_local2].complete(); _local3 = (("Gif Request #" + _local2) + " sent"); _local4 = _requests[_local2].request.url; if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local4.indexOf("?") > -1){ _local4 = _local4.split("?")[0]; }; _local4 = _shortenURL(_local4); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local3 = (_local3 + ((" to \"" + _local4) + "\"")); }; _debug.success(_local3); } else { _debug.info(_local3); }; _removeListeners(_arg1.target); } } }//package com.google.analytics.core
Section 78
//IdleTimer (com.google.analytics.core.IdleTimer) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; import flash.display.*; import flash.utils.*; public class IdleTimer { private var _loop:Timer; private var _stage:Stage; private var _lastMove:int; private var _debug:DebugConfiguration; private var _session:Timer; private var _inactivity:Number; private var _buffer:Buffer; public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){ var _local5:Number; var _local6:Number; var _local7:Number; super(); _local5 = _arg1.idleLoop; _local6 = _arg1.idleTimeout; _local7 = _arg1.sessionTimeout; _loop = new Timer((_local5 * 1000)); _session = new Timer((_local7 * 1000), 1); _debug = _arg2; _stage = _arg3.stage; _buffer = _arg4; _lastMove = getTimer(); _inactivity = (_local6 * 1000); _loop.addEventListener(TimerEvent.TIMER, checkForIdle); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); _stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); _debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek); _loop.start(); } private function onMouseMove(_arg1:MouseEvent):void{ _lastMove = getTimer(); if (_session.running){ _debug.info("session timer reset", VisualDebugMode.geek); _session.reset(); }; } public function endSession(_arg1:TimerEvent):void{ _session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession); _debug.info("session timer end session", VisualDebugMode.geek); _session.reset(); _buffer.resetCurrentSession(); _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); _debug.info(_buffer.utmc.toString(), VisualDebugMode.geek); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); } public function checkForIdle(_arg1:TimerEvent):void{ var _local2:int; _local2 = getTimer(); if ((_local2 - _lastMove) >= _inactivity){ if (!_session.running){ _debug.info("session timer start", VisualDebugMode.geek); _session.start(); }; }; } } }//package com.google.analytics.core
Section 79
//Organic (com.google.analytics.core.Organic) package com.google.analytics.core { import com.google.analytics.utils.*; public class Organic { private var _sourcesCache:Array; private var _sourcesEngine:Array; private var _ignoredKeywords:Array; private var _ignoredReferralsCache:Object; private var _ignoredReferrals:Array; private var _ignoredKeywordsCache:Object; private var _sources:Array; public static var throwErrors:Boolean = false; public function Organic(){ _sources = []; _sourcesCache = []; _sourcesEngine = []; _ignoredReferrals = []; _ignoredReferralsCache = {}; _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{ var _local3:String; _local3 = _arg1.keyword; return (getKeywordValueFromPath(_local3, _arg2)); } public function isIgnoredKeyword(_arg1:String):Boolean{ if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function isIgnoredReferral(_arg1:String):Boolean{ if (_ignoredReferralsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function clear():void{ clearEngines(); clearIgnoredReferrals(); clearIgnoredKeywords(); } public function get ignoredKeywordsCount():int{ return (_ignoredKeywords.length); } public function match(_arg1:String):Boolean{ if (_arg1 == ""){ return (false); }; _arg1 = _arg1.toLowerCase(); if (_sourcesEngine[_arg1] != undefined){ return (true); }; return (false); } public function get count():int{ return (_sources.length); } public function addSource(_arg1:String, _arg2:String):void{ var _local3:OrganicReferrer; _local3 = new OrganicReferrer(_arg1, _arg2); if (_sourcesCache[_local3.toString()] == undefined){ _sources.push(_local3); _sourcesCache[_local3.toString()] = (_sources.length - 1); if (_sourcesEngine[_local3.engine] == undefined){ _sourcesEngine[_local3.engine] = [(_sources.length - 1)]; } else { _sourcesEngine[_local3.engine].push((_sources.length - 1)); }; } else { if (throwErrors){ throw (new Error((_local3.toString() + " already exists, we don't add it."))); }; }; } public function clearIgnoredKeywords():void{ _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function clearEngines():void{ _sources = []; _sourcesCache = []; _sourcesEngine = []; } public function get ignoredReferralsCount():int{ return (_ignoredReferrals.length); } public function addIgnoredReferral(_arg1:String):void{ if (_ignoredReferralsCache[_arg1] == undefined){ _ignoredReferrals.push(_arg1); _ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function clearIgnoredReferrals():void{ _ignoredReferrals = []; _ignoredReferralsCache = {}; } public function getReferrerByName(_arg1:String):OrganicReferrer{ var _local2:int; if (match(_arg1)){ _local2 = _sourcesEngine[_arg1][0]; return (_sources[_local2]); }; return (null); } public function addIgnoredKeyword(_arg1:String):void{ if (_ignoredKeywordsCache[_arg1] == undefined){ _ignoredKeywords.push(_arg1); _ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function get sources():Array{ return (_sources); } public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{ var _local3:String; var _local4:Variables; if (_arg2.indexOf((_arg1 + "=")) > -1){ if (_arg2.charAt(0) == "?"){ _arg2 = _arg2.substr(1); }; _arg2 = _arg2.split("+").join("%20"); _local4 = new Variables(_arg2); _local3 = _local4[_arg1]; }; return (_local3); } } }//package com.google.analytics.core
Section 80
//OrganicReferrer (com.google.analytics.core.OrganicReferrer) package com.google.analytics.core { public class OrganicReferrer { private var _engine:String; private var _keyword:String; public function OrganicReferrer(_arg1:String, _arg2:String){ this.engine = _arg1; this.keyword = _arg2; } public function set engine(_arg1:String):void{ _engine = _arg1.toLowerCase(); } public function get keyword():String{ return (_keyword); } public function toString():String{ return (((engine + "?") + keyword)); } public function get engine():String{ return (_engine); } public function set keyword(_arg1:String):void{ _keyword = _arg1.toLowerCase(); } } }//package com.google.analytics.core
Section 81
//RequestObject (com.google.analytics.core.RequestObject) package com.google.analytics.core { import flash.net.*; import flash.utils.*; public class RequestObject { public var start:int; public var request:URLRequest; public var end:int; public function RequestObject(_arg1:URLRequest){ start = getTimer(); this.request = _arg1; } public function toString():String{ var _local1:Array; _local1 = []; _local1.push((("duration: " + duration) + "ms")); _local1.push(("url: " + request.url)); return ((("{ " + _local1.join(", ")) + " }")); } public function get duration():int{ if (!hasCompleted()){ return (0); }; return ((end - start)); } public function hasCompleted():Boolean{ return ((end > 0)); } public function complete():void{ end = getTimer(); } } }//package com.google.analytics.core
Section 82
//ServerOperationMode (com.google.analytics.core.ServerOperationMode) package com.google.analytics.core { public class ServerOperationMode { private var _value:int; private var _name:String; public static const both:ServerOperationMode = new ServerOperationMode(2, "both"); ; public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote"); ; public static const local:ServerOperationMode = new ServerOperationMode(0, "local"); ; public function ServerOperationMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 83
//TrackerCache (com.google.analytics.core.TrackerCache) package com.google.analytics.core { import com.google.analytics.v4.*; import flash.errors.*; public class TrackerCache implements GoogleAnalyticsAPI { public var tracker:GoogleAnalyticsAPI; private var _ar:Array; public static var CACHE_THROW_ERROR:Boolean; public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){ this.tracker = _arg1; _ar = []; } public function size():uint{ return (_ar.length); } public function flush():void{ var _local1:Object; var _local2:String; var _local3:Array; var _local4:int; var _local5:int; if (tracker == null){ return; }; if (size() > 0){ _local4 = _ar.length; while (_local5 < _local4) { _local1 = _ar.shift(); _local2 = (_local1.name as String); _local3 = (_local1.args as Array); if (((!((_local2 == null))) && ((_local2 in tracker)))){ (tracker[_local2] as Function).apply(tracker, _local3); }; _local5++; }; }; } public function enqueue(_arg1:String, ... _args):Boolean{ if (_arg1 == null){ return (false); }; _ar.push({name:_arg1, args:_args}); return (true); } public function link(_arg1:String, _arg2:Boolean=false):void{ enqueue("link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ enqueue("addOrganic", _arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ enqueue("setAllowLinker", _arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4); return (true); } public function trackTrans():void{ enqueue("trackTrans"); } public function trackPageview(_arg1:String=""):void{ enqueue("trackPageview", _arg1); } public function setClientInfo(_arg1:Boolean):void{ enqueue("setClientInfo", _arg1); } public function getClientInfo():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment.")); }; return (false); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ enqueue("linkByPost", _arg1, _arg2); } public function setCookieTimeout(_arg1:int):void{ enqueue("setCookieTimeout", _arg1); } public function isEmpty():Boolean{ return ((_ar.length == 0)); } public function resetSession():void{ enqueue("resetSession"); } public function setDetectFlash(_arg1:Boolean):void{ enqueue("setDetectFlash", _arg1); } public function clear():void{ _ar = []; } public function getDetectTitle():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment.")); }; return (false); } public function setCampNameKey(_arg1:String):void{ enqueue("setCampNameKey", _arg1); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function createEventTracker(_arg1:String):EventTracker{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment.")); }; return (null); } public function setVar(_arg1:String):void{ enqueue("setVar", _arg1); } public function clearIgnoredOrganic():void{ enqueue("clearIgnoredOrganic"); } public function setDomainName(_arg1:String):void{ enqueue("setDomainName", _arg1); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment.")); }; return (null); } public function setCampSourceKey(_arg1:String):void{ enqueue("setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ enqueue("setCampContentKey", _arg1); } public function clearIgnoredRef():void{ enqueue("clearIgnoredRef"); } public function setLocalServerMode():void{ enqueue("setLocalServerMode"); } public function getLocalGifPath():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment.")); }; return (""); } public function setAllowAnchor(_arg1:Boolean):void{ enqueue("setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ enqueue("setLocalGifPath", _arg1); } public function getVersion():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment.")); }; return (""); } public function setCookiePath(_arg1:String):void{ enqueue("setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ enqueue("setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ enqueue("setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ enqueue("addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ enqueue("setCampNOKey", _arg1); } public function getServiceMode():ServerOperationMode{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment.")); }; return (null); } public function setLocalRemoteServerMode():void{ enqueue("setLocalRemoteServerMode"); } public function cookiePathCopy(_arg1:String):void{ enqueue("cookiePathCopy", _arg1); } public function setDetectTitle(_arg1:Boolean):void{ enqueue("setDetectTitle", _arg1); } public function getDetectFlash():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment.")); }; return (false); } public function setCampaignTrack(_arg1:Boolean):void{ enqueue("setCampaignTrack", _arg1); } public function clearOrganic():void{ enqueue("clearOrganic"); } public function setCampTermKey(_arg1:String):void{ enqueue("setCampTermKey", _arg1); } public function addIgnoredRef(_arg1:String):void{ enqueue("addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ enqueue("setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ enqueue("setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ enqueue("setRemoteServerMode"); } public function element(){ return (_ar[0]); } public function getAccount():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment.")); }; return (""); } } }//package com.google.analytics.core
Section 84
//TrackerMode (com.google.analytics.core.TrackerMode) package com.google.analytics.core { public class TrackerMode { public static const BRIDGE:String = "Bridge"; public static const AS3:String = "AS3"; } }//package com.google.analytics.core
Section 85
//Utils (com.google.analytics.core.Utils) package com.google.analytics.core { public class Utils { public static function trim(_arg1:String, _arg2:Boolean=false):String{ var _local3:Array; var _local4:String; var _local5:int; var _local6:int; var _local7:int; if (_arg1 == ""){ return (""); }; _local3 = [" ", "\n", "\r", "\t"]; _local4 = _arg1; if (_arg2){ _local5 = 0; while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) { _local4 = _local4.split(_local3[_local5]).join(""); _local5++; }; } else { _local6 = 0; while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) { _local6++; }; _local4 = _local4.substr(_local6); _local7 = (_local4.length - 1); while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) { _local7--; }; _local4 = _local4.substring(0, (_local7 + 1)); }; return (_local4); } public static function generateHash(_arg1:String):int{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; _local2 = 1; _local3 = 0; if (((!((_arg1 == null))) && (!((_arg1 == ""))))){ _local2 = 0; _local4 = (_arg1.length - 1); while (_local4 >= 0) { _local5 = _arg1.charCodeAt(_local4); _local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14)); _local3 = (_local2 & 266338304); if (_local3 != 0){ _local2 = (_local2 ^ (_local3 >> 21)); }; _local4--; }; }; return (_local2); } public static function generate32bitRandom():int{ return (Math.round((Math.random() * 2147483647))); } public static function validateAccount(_arg1:String):Boolean{ var _local2:RegExp; _local2 = /^UA-[0-9]*-[0-9]*$/; return (_local2.test(_arg1)); } } }//package com.google.analytics.core
Section 86
//Cookie (com.google.analytics.data.Cookie) package com.google.analytics.data { public interface Cookie { function toURLString():String; function toSharedObject():Object; function set creation(_arg1:Date):void; function fromSharedObject(_arg1:Object):void; function get expiration():Date; function isExpired():Boolean; function set expiration(_arg1:Date):void; function get creation():Date; } }//package com.google.analytics.data
Section 87
//UTMA (com.google.analytics.data.UTMA) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMA extends UTMCookie { private var _domainHash:Number; private var _firstTime:Number; private var _currentTime:Number; private var _sessionId:Number; private var _lastTime:Number; private var _sessionCount:Number; public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){ super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.sessionId = _arg2; this.firstTime = _arg3; this.lastTime = _arg4; this.currentTime = _arg5; this.sessionCount = _arg6; } public function get lastTime():Number{ return (_lastTime); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get sessionCount():Number{ return (_sessionCount); } public function get firstTime():Number{ return (_firstTime); } public function set sessionId(_arg1:Number):void{ _sessionId = _arg1; update(); } public function set sessionCount(_arg1:Number):void{ _sessionCount = _arg1; update(); } public function set firstTime(_arg1:Number):void{ _firstTime = _arg1; update(); } public function set currentTime(_arg1:Number):void{ _currentTime = _arg1; update(); } public function get sessionId():Number{ return (_sessionId); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get currentTime():Number{ return (_currentTime); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 88
//UTMB (com.google.analytics.data.UTMB) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMB extends UTMCookie { private var _lastTime:Number; private var _domainHash:Number; private var _trackCount:Number; private var _token:Number; public static var defaultTimespan:Number = Timespan.thirtyminutes; public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){ super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.trackCount = _arg2; this.token = _arg3; this.lastTime = _arg4; } public function get token():Number{ return (_token); } public function set trackCount(_arg1:Number):void{ _trackCount = _arg1; update(); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get lastTime():Number{ return (_lastTime); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } public function set token(_arg1:Number):void{ _token = _arg1; update(); } public function get trackCount():Number{ return (_trackCount); } } }//package com.google.analytics.data
Section 89
//UTMC (com.google.analytics.data.UTMC) package com.google.analytics.data { public class UTMC extends UTMCookie { private var _domainHash:Number; public function UTMC(_arg1:Number=NaN){ super("utmc", "__utmc", ["domainHash"]); this.domainHash = _arg1; } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 90
//UTMCookie (com.google.analytics.data.UTMCookie) package com.google.analytics.data { import com.google.analytics.core.*; public class UTMCookie implements Cookie { protected var inURL:String; protected var name:String; private var _creation:Date; private var _expiration:Date; public var proxy:Buffer; private var _timespan:Number; protected var fields:Array; public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){ this.name = _arg1; this.inURL = _arg2; this.fields = _arg3; _timestamp(_arg4); } public function isEmpty():Boolean{ var _local1:int; var _local2:String; var _local3:int; _local1 = 0; _local3 = 0; while (_local3 < fields.length) { _local2 = fields[_local3]; if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){ _local1++; } else { if ((((this[_local2] is String)) && ((this[_local2] == "")))){ _local1++; }; }; _local3++; }; if (_local1 == fields.length){ return (true); }; return (false); } protected function update():void{ resetTimestamp(); if (proxy){ proxy.update(name, toSharedObject()); }; } public function fromSharedObject(_arg1:Object):void{ var _local2:String; var _local3:int; var _local4:int; _local3 = fields.length; _local4 = 0; while (_local4 < _local3) { _local2 = fields[_local4]; if (_arg1[_local2]){ this[_local2] = _arg1[_local2]; }; _local4++; }; if (_arg1.creation){ this.creation = _arg1.creation; }; if (_arg1.expiration){ this.expiration = _arg1.expiration; }; } private function _timestamp(_arg1:Number):void{ creation = new Date(); _timespan = _arg1; if (_arg1 > 0){ expiration = new Date((creation.valueOf() + _arg1)); }; } public function isExpired():Boolean{ var _local1:Date; var _local2:Number; _local1 = new Date(); _local2 = (expiration.valueOf() - _local1.valueOf()); if (_local2 <= 0){ return (true); }; return (false); } public function set expiration(_arg1:Date):void{ _expiration = _arg1; } public function get creation():Date{ return (_creation); } public function reset():void{ var _local1:String; var _local2:int; _local2 = 0; while (_local2 < fields.length) { _local1 = fields[_local2]; if ((this[_local1] is Number)){ this[_local1] = NaN; } else { if ((this[_local1] is String)){ this[_local1] = ""; }; }; _local2++; }; resetTimestamp(); update(); } public function valueOf():String{ var _local1:Array; var _local2:String; var _local3:*; var _local4:int; _local1 = []; _local4 = 0; while (_local4 < fields.length) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ if (_local3 == ""){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; } else { if ((_local3 is Number)){ if (_local3 == 0){ _local1.push(_local3); } else { if (isNaN(_local3)){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; }; }; }; _local4++; }; return (("" + _local1.join("."))); } public function resetTimestamp(_arg1:Number=NaN):void{ if (!isNaN(_arg1)){ _timespan = _arg1; }; _creation = null; _expiration = null; _timestamp(_timespan); } public function get expiration():Date{ if (_expiration){ return (_expiration); }; return (new Date((new Date().valueOf() + 1000))); } public function toURLString():String{ return (((inURL + "=") + valueOf())); } public function toSharedObject():Object{ var _local1:Object; var _local2:String; var _local3:*; var _local4:int; _local1 = {}; _local4 = 0; for (;_local4 < fields.length;_local4++) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ _local1[_local2] = _local3; } else { if (_local3 == 0){ _local1[_local2] = _local3; } else { if (isNaN(_local3)){ continue; } else { _local1[_local2] = _local3; }; }; }; }; _local1.creation = creation; _local1.expiration = expiration; return (_local1); } public function toString(_arg1:Boolean=false):String{ var _local2:Array; var _local3:String; var _local4:*; var _local5:int; var _local6:int; var _local7:String; _local2 = []; _local5 = fields.length; _local6 = 0; for (;_local6 < _local5;_local6++) { _local3 = fields[_local6]; _local4 = this[_local3]; if ((_local4 is String)){ _local2.push((((_local3 + ": \"") + _local4) + "\"")); } else { if (_local4 == 0){ _local2.push(((_local3 + ": ") + _local4)); } else { if (isNaN(_local4)){ continue; } else { _local2.push(((_local3 + ": ") + _local4)); }; }; }; }; _local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}"); if (_arg1){ _local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration)); }; return (_local7); } public function set creation(_arg1:Date):void{ _creation = _arg1; } } }//package com.google.analytics.data
Section 91
//UTMK (com.google.analytics.data.UTMK) package com.google.analytics.data { public class UTMK extends UTMCookie { private var _hash:Number; public function UTMK(_arg1:Number=NaN){ super("utmk", "__utmk", ["hash"]); this.hash = _arg1; } public function get hash():Number{ return (_hash); } public function set hash(_arg1:Number):void{ _hash = _arg1; update(); } } }//package com.google.analytics.data
Section 92
//UTMV (com.google.analytics.data.UTMV) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMV extends UTMCookie { private var _domainHash:Number; private var _value:String; public function UTMV(_arg1:Number=NaN, _arg2:String=""){ super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.value = _arg2; } public function get value():String{ return (_value); } public function set value(_arg1:String):void{ _value = _arg1; update(); } override public function toURLString():String{ return (((inURL + "=") + encodeURI(valueOf()))); } public function get domainHash():Number{ return (_domainHash); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } } }//package com.google.analytics.data
Section 93
//UTMZ (com.google.analytics.data.UTMZ) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMZ extends UTMCookie { private var _domainHash:Number; private var _campaignSessions:Number; private var _campaignTracking:String; private var _responseCount:Number; private var _campaignCreation:Number; public static var defaultTimespan:Number = Timespan.sixmonths; public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){ super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.campaignCreation = _arg2; this.campaignSessions = _arg3; this.responseCount = _arg4; this.campaignTracking = _arg5; } public function get campaignCreation():Number{ return (_campaignCreation); } public function set campaignSessions(_arg1:Number):void{ _campaignSessions = _arg1; update(); } public function set responseCount(_arg1:Number):void{ _responseCount = _arg1; update(); } public function set campaignCreation(_arg1:Number):void{ _campaignCreation = _arg1; update(); } public function get campaignSessions():Number{ return (_campaignSessions); } public function get responseCount():Number{ return (_responseCount); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get campaignTracking():String{ return (_campaignTracking); } public function set campaignTracking(_arg1:String):void{ _campaignTracking = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 94
//X10 (com.google.analytics.data.X10) package com.google.analytics.data { public class X10 { private var _delimEnd:String;// = ")" private var _delimSet:String;// = "*" private var _escapeChar:String;// = "'" private var _delimBegin:String;// = "(" private var _delimNumValue:String;// = "!" private var _key:String;// = "k" private var _set:Array; private var _projectData:Object; private var _hasData:int; private var _escapeCharMap:Object; private var _minimum:int; private var _value:String;// = "v" public function X10(){ _key = "k"; _value = "v"; _set = [_key, _value]; _delimBegin = "("; _delimEnd = ")"; _delimSet = "*"; _delimNumValue = "!"; _escapeChar = "'"; super(); _projectData = {}; _escapeCharMap = {}; _escapeCharMap[_escapeChar] = "'0"; _escapeCharMap[_delimEnd] = "'1"; _escapeCharMap[_delimSet] = "'2"; _escapeCharMap[_delimNumValue] = "'3"; _minimum = 1; } private function _clearInternal(_arg1:Number, _arg2:String):void{ var _local3:Boolean; var _local4:int; var _local5:int; if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ _projectData[_arg1][_arg2] = undefined; _local3 = true; _local5 = _set.length; _local4 = 0; while (_local4 < _local5) { if (_projectData[_arg1][_set[_local4]] != undefined){ _local3 = false; break; }; _local4++; }; if (_local3){ _projectData[_arg1] = undefined; _hasData = (_hasData - 1); }; }; } public function hasData():Boolean{ return ((_hasData > 0)); } private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{ if (!hasProject(_arg1)){ _projectData[_arg1] = {}; }; if (_projectData[_arg1][_arg2] == undefined){ _projectData[_arg1][_arg2] = []; }; _projectData[_arg1][_arg2][_arg3] = _arg4; _hasData = (_hasData + 1); } public function hasProject(_arg1:Number):Boolean{ return (_projectData[_arg1]); } public function clearKey(_arg1:Number):void{ _clearInternal(_arg1, _key); } private function _renderDataType(_arg1:Array):String{ var _local2:Array; var _local3:String; var _local4:int; _local2 = []; _local4 = 0; while (_local4 < _arg1.length) { if (_arg1[_local4] != undefined){ _local3 = ""; if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){ _local3 = (_local3 + _local4.toString()); _local3 = (_local3 + _delimNumValue); }; _local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4])); _local2.push(_local3); }; _local4++; }; return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd)); } public function getKey(_arg1:Number, _arg2:Number):String{ return ((_getInternal(_arg1, _key, _arg2) as String)); } public function clearValue(_arg1:Number):void{ _clearInternal(_arg1, _value); } public function renderMergedUrlString(_arg1:X10=null):String{ var _local2:Array; var _local3:String; if (!_arg1){ return (renderUrlString()); }; _local2 = [_arg1.renderUrlString()]; for (_local3 in _projectData) { if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){ _local2.push((_local3 + _renderProject(_projectData[_local3]))); }; }; return (_local2.join("")); } public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){ return (false); }; _setInternal(_arg1, _value, _arg2, _arg3.toString()); return (true); } public function renderUrlString():String{ var _local1:Array; var _local2:String; _local1 = []; for (_local2 in _projectData) { if (hasProject(Number(_local2))){ _local1.push((_local2 + _renderProject(_projectData[_local2]))); }; }; return (_local1.join("")); } private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{ if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ return (_projectData[_arg1][_arg2][_arg3]); }; return (undefined); } public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{ _setInternal(_arg1, _key, _arg2, _arg3); return (true); } public function getValue(_arg1:Number, _arg2:Number){ var _local3:*; _local3 = _getInternal(_arg1, _value, _arg2); if (_local3 == null){ return (null); }; return (Number(_local3)); } private function _renderProject(_arg1:Object):String{ var _local2:String; var _local3:Boolean; var _local4:int; var _local5:Array; var _local6:int; _local2 = ""; _local3 = false; _local6 = _set.length; _local4 = 0; while (_local4 < _local6) { _local5 = _arg1[_set[_local4]]; if (_local5){ if (_local3){ _local2 = (_local2 + _set[_local4]); }; _local2 = (_local2 + _renderDataType(_local5)); _local3 = false; } else { _local3 = true; }; _local4++; }; return (_local2); } private function _escapeExtensibleValue(_arg1:String):String{ var _local2:String; var _local3:int; var _local4:String; var _local5:String; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _arg1.charAt(_local3); _local5 = _escapeCharMap[_local4]; if (_local5){ _local2 = (_local2 + _local5); } else { _local2 = (_local2 + _local4); }; _local3++; }; return (_local2); } } }//package com.google.analytics.data
Section 95
//_Style (com.google.analytics.debug._Style) package com.google.analytics.debug { import flash.net.*; import flash.text.*; public class _Style { public var borderColor:uint; public var backgroundColor:uint; private var _sheet:StyleSheet; public var roundedCorner:uint; public var alertColor:uint; public var infoColor:uint; public var successColor:uint; private var _loader:URLLoader; public var failureColor:uint; private var _defaultSheet:String; public var warningColor:uint; public function _Style(){ _sheet = new StyleSheet(); _loader = new URLLoader(); _init(); } private function _parseSheet(_arg1:String):void{ _sheet.parseCSS(_arg1); } public function get sheet():StyleSheet{ return (_sheet); } private function _init():void{ _defaultSheet = ""; _defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n"); _defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n"); _defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + "\n"); roundedCorner = 6; backgroundColor = 0xCCCCCC; borderColor = 0x555555; infoColor = 16777113; alertColor = 0xFFCC00; warningColor = 0xCC0000; successColor = 0xFF00; failureColor = 0xFF0000; _parseSheet(_defaultSheet); } } }//package com.google.analytics.debug
Section 96
//Alert (com.google.analytics.debug.Alert) package com.google.analytics.debug { import flash.events.*; public class Alert extends Label { public var actionOnNextLine:Boolean;// = true public var autoClose:Boolean;// = true private var _actions:Array; public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){ var _local8:int; autoClose = true; actionOnNextLine = true; if (_arg4 == 0){ _arg4 = Style.alertColor; }; if (_arg5 == null){ _arg5 = Align.center; }; super(_arg1, _arg3, _arg4, _arg5, _arg6); this.selectable = true; super.mouseChildren = true; this.buttonMode = true; this.mouseEnabled = true; this.useHandCursor = true; this.actionOnNextLine = _arg7; _actions = []; _local8 = 0; while (_local8 < _arg2.length) { _arg2[_local8].container = this; _actions.push(_arg2[_local8]); _local8++; }; } protected function getAction(_arg1:String):AlertAction{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (_actions[_local2]); }; _local2++; }; return (null); } override protected function layout():void{ super.layout(); _defineActions(); } protected function spaces(_arg1:int):String{ var _local2:String; var _local3:String; var _local4:int; _local2 = ""; _local3 = " "; _local4 = 0; while (_local4 < (_arg1 + 1)) { _local2 = (_local2 + _local3); _local4++; }; return (_local2); } override public function onLink(_arg1:TextEvent):void{ var _local2:AlertAction; if (isValidAction(_arg1.text)){ _local2 = getAction(_arg1.text); if (_local2){ _local2.execute(); }; }; if (autoClose){ close(); }; } protected function isValidAction(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (true); }; _local2++; }; return (false); } private function _defineActions():void{ var _local1:String; var _local2:Array; var _local3:AlertAction; var _local4:int; _local1 = ""; if (actionOnNextLine){ _local1 = (_local1 + "\n"); } else { _local1 = (_local1 + " |"); }; _local1 = (_local1 + " "); _local2 = []; _local4 = 0; while (_local4 < _actions.length) { _local3 = _actions[_local4]; _local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>")); _local4++; }; _local1 = (_local1 + _local2.join(" | ")); appendText(_local1, "uiAlertAction"); } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 97
//AlertAction (com.google.analytics.debug.AlertAction) package com.google.analytics.debug { public class AlertAction { public var container:Alert; private var _callback; public var name:String; public var activator:String; public function AlertAction(_arg1:String, _arg2:String, _arg3){ this.name = _arg1; this.activator = _arg2; _callback = _arg3; } public function execute():void{ if (_callback){ if ((_callback is Function)){ (_callback as Function)(); } else { if ((_callback is String)){ var _local1 = container; _local1[_callback](); }; }; }; } } }//package com.google.analytics.debug
Section 98
//Align (com.google.analytics.debug.Align) package com.google.analytics.debug { public class Align { private var _value:int; private var _name:String; public static const bottomRight:Align = new Align(18, "bottomRight"); ; public static const right:Align = new Align(16, "right"); ; public static const left:Align = new Align(32, "left"); ; public static const topRight:Align = new Align(17, "topRight"); ; public static const bottom:Align = new Align(2, "bottom"); ; public static const bottomLeft:Align = new Align(34, "bottomLeft"); ; public static const topLeft:Align = new Align(33, "topLeft"); ; public static const center:Align = new Align(0x0100, "center"); ; public static const none:Align = new Align(0, "none"); ; public static const top:Align = new Align(1, "top"); ; public function Align(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 99
//Background (com.google.analytics.debug.Background) package com.google.analytics.debug { import flash.display.*; public class Background { public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{ var _local5:uint; var _local6:uint; var _local7:uint; _local7 = Style.roundedCorner; if ((((_arg3 > 0)) && ((_arg4 > 0)))){ _local5 = _arg3; _local6 = _arg4; } else { _local5 = _arg1.width; _local6 = _arg1.height; }; if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){ switch (_arg1.alignement){ case Align.top: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7); break; case Align.topLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7); break; case Align.topRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0); break; case Align.bottom: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0); break; case Align.bottomLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0); break; case Align.bottomRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0); break; case Align.left: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7); break; case Align.right: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0); break; case Align.center: _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); break; }; } else { _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); }; } } }//package com.google.analytics.debug
Section 100
//Debug (com.google.analytics.debug.Debug) package com.google.analytics.debug { import flash.events.*; import flash.ui.*; public class Debug extends Label { private var _lines:Array; private var _preferredForcedWidth:uint;// = 540 public var maxLines:uint;// = 16 private var _linediff:int;// = 0 public static var count:uint = 0; public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){ _linediff = 0; _preferredForcedWidth = 540; maxLines = 16; if (_arg2 == null){ _arg2 = Align.bottom; }; super("", "uiLabel", _arg1, _arg2, _arg3); this.name = ("Debug" + count++); _lines = []; selectable = true; addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function close():void{ dispose(); } public function writeBold(_arg1:String):void{ write(_arg1, true); } override protected function dispose():void{ removeEventListener(KeyboardEvent.KEY_DOWN, onKey); super.dispose(); } override public function get forcedWidth():uint{ if (this.parent){ if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){ return (_preferredForcedWidth); }; return (UISprite(this.parent).forcedWidth); } else { }; return (!NULL!); } private function onKey(_arg1:KeyboardEvent=null):void{ var _local2:Array; switch (_arg1.keyCode){ case Keyboard.DOWN: _local2 = _getLinesToDisplay(1); break; case Keyboard.UP: _local2 = _getLinesToDisplay(-1); break; default: _local2 = null; }; if (_local2 == null){ return; }; text = _local2.join("\n"); } public function write(_arg1:String, _arg2:Boolean=false):void{ var _local3:Array; var _local4:String; var _local5:String; var _local6:int; var _local7:Array; if (_arg1.indexOf("") > -1){ _local3 = _arg1.split("\n"); } else { _local3 = [_arg1]; }; _local4 = ""; _local5 = ""; if (_arg2){ _local4 = "<b>"; _local5 = "</b>"; }; _local6 = 0; while (_local6 < _local3.length) { _lines.push(((_local4 + _local3[_local6]) + _local5)); _local6++; }; _local7 = _getLinesToDisplay(); text = _local7.join("\n"); } private function _getLinesToDisplay(_arg1:int=0):Array{ var _local2:Array; var _local3:uint; var _local4:uint; if ((_lines.length - 1) > maxLines){ if ((_linediff <= 0)){ _linediff = (_linediff + _arg1); } else { if ((((_linediff > 0)) && ((_arg1 < 0)))){ _linediff = (_linediff + _arg1); }; }; _local3 = ((_lines.length - maxLines) + _linediff); _local4 = (_local3 + maxLines); _local2 = _lines.slice(_local3, _local4); } else { _local2 = _lines; }; return (_local2); } } }//package com.google.analytics.debug
Section 101
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.utils.*; import flash.ui.*; public class DebugConfiguration { public var showHideKey:Number; private var _mode:VisualDebugMode; private var _verbose:Boolean;// = false public var destroyKey:Number; public var GIFRequests:Boolean;// = false public var infoTimeout:Number;// = 1000 public var showInfos:Boolean;// = true public var minimizedOnStart:Boolean;// = false private var _active:Boolean;// = false public var traceOutput:Boolean;// = false public var layout:ILayout; public var warningTimeout:Number;// = 1500 public var javascript:Boolean;// = false public var showWarnings:Boolean;// = true private var _visualInitialized:Boolean;// = false public function DebugConfiguration(){ _active = false; _verbose = false; _visualInitialized = false; _mode = VisualDebugMode.basic; traceOutput = false; javascript = false; GIFRequests = false; showInfos = true; infoTimeout = 1000; showWarnings = true; warningTimeout = 1500; minimizedOnStart = false; showHideKey = Keyboard.SPACE; destroyKey = Keyboard.BACKSPACE; super(); } public function get verbose():Boolean{ return (_verbose); } public function set verbose(_arg1:Boolean):void{ _verbose = _arg1; } public function set mode(_arg1):void{ if ((_arg1 is String)){ switch (_arg1){ case "geek": _arg1 = VisualDebugMode.geek; break; case "advanced": _arg1 = VisualDebugMode.advanced; break; case "basic": default: _arg1 = VisualDebugMode.basic; }; }; _mode = _arg1; } public function success(_arg1:String):void{ if (layout){ layout.createSuccessAlert(_arg1); }; if (traceOutput){ trace((("[+] " + _arg1) + " !!")); }; } public function get active():Boolean{ return (_active); } private function _initializeVisual():void{ if (layout){ layout.init(); _visualInitialized = true; }; } private function _destroyVisual():void{ if (((layout) && (_visualInitialized))){ layout.destroy(); }; } public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showWarnings))){ layout.createWarning(_arg1); }; if (traceOutput){ trace((("## " + _arg1) + " ##")); }; } private function _filter(_arg1:VisualDebugMode=null):Boolean{ return (((_arg1) && ((int(_arg1) >= int(this.mode))))); } public function failure(_arg1:String):void{ if (layout){ layout.createFailureAlert(_arg1); }; if (traceOutput){ trace((("[-] " + _arg1) + " !!")); }; } public function get mode(){ return (_mode); } public function set active(_arg1:Boolean):void{ _active = _arg1; if (_active){ _initializeVisual(); } else { _destroyVisual(); }; } protected function trace(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:Array; var _local8:int; _local2 = []; _local3 = ""; _local4 = ""; if (this.mode == VisualDebugMode.geek){ _local3 = (getTimer() + " - "); _local4 = (new Array(_local3.length).join(" ") + " "); }; if (_arg1.indexOf("\n") > -1){ _local7 = _arg1.split("\n"); _local8 = 0; while (_local8 < _local7.length) { if (_local7[_local8] == ""){ } else { if (_local8 == 0){ _local2.push((_local3 + _local7[_local8])); } else { _local2.push((_local4 + _local7[_local8])); }; }; _local8++; }; } else { _local2.push((_local3 + _arg1)); }; _local5 = _local2.length; _local6 = 0; while (_local6 < _local5) { trace(_local2[_local6]); _local6++; }; } public function alert(_arg1:String):void{ if (layout){ layout.createAlert(_arg1); }; if (traceOutput){ trace((("!! " + _arg1) + " !!")); }; } public function info(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showInfos))){ layout.createInfo(_arg1); }; if (traceOutput){ trace(_arg1); }; } public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ if (layout){ layout.createGIFRequestAlert(_arg1, _arg2, _arg3); }; if (traceOutput){ trace(((">> " + _arg1) + " <<")); }; } } }//package com.google.analytics.debug
Section 102
//FailureAlert (com.google.analytics.debug.FailureAlert) package com.google.analytics.debug { public class FailureAlert extends Alert { public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 103
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert) package com.google.analytics.debug { public class GIFRequestAlert extends Alert { public function GIFRequestAlert(_arg1:String, _arg2:Array){ super(_arg1, _arg2); } } }//package com.google.analytics.debug
Section 104
//ILayout (com.google.analytics.debug.ILayout) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.display.*; public interface ILayout { function createWarning(_arg1:String):void; function addToStage(_arg1:DisplayObject):void; function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void; function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void; function createInfo(_arg1:String):void; function createFailureAlert(_arg1:String):void; function addToPanel(_arg1:String, _arg2:DisplayObject):void; function init():void; function createSuccessAlert(_arg1:String):void; function createVisualDebug():void; function createAlert(_arg1:String):void; function destroy():void; function bringToFront(_arg1:DisplayObject):void; function isAvailable():Boolean; } }//package com.google.analytics.debug
Section 105
//Info (com.google.analytics.debug.Info) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Info extends Label { private var _timer:Timer; public function Info(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiInfo", Style.infoColor, Align.top, true); if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 106
//Label (com.google.analytics.debug.Label) package com.google.analytics.debug { import flash.events.*; import flash.display.*; import flash.text.*; public class Label extends UISprite { private var _text:String; private var _textField:TextField; private var _color:uint; protected var selectable:Boolean; public var stickToEdge:Boolean; private var _background:Shape; private var _tag:String; public static var count:uint = 0; public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){ this.name = ("Label" + count++); selectable = false; _background = new Shape(); _textField = new TextField(); _text = _arg1; _tag = _arg2; if (_arg4 == null){ _arg4 = Align.none; }; this.alignement = _arg4; this.stickToEdge = _arg5; if (_arg3 == 0){ _arg3 = Style.backgroundColor; }; _color = _arg3; _textField.addEventListener(TextEvent.LINK, onLink); } override protected function dispose():void{ _textField.removeEventListener(TextEvent.LINK, onLink); super.dispose(); } private function _draw():void{ var _local1:Graphics; var _local2:uint; var _local3:uint; _local1 = _background.graphics; _local1.clear(); _local1.beginFill(_color); _local2 = _textField.width; _local3 = _textField.height; if (forcedWidth > 0){ _local2 = forcedWidth; }; Background.drawRounded(this, _local1, _local2, _local3); _local1.endFill(); } override protected function layout():void{ _textField.type = TextFieldType.DYNAMIC; _textField.autoSize = TextFieldAutoSize.LEFT; _textField.background = false; _textField.selectable = selectable; _textField.multiline = true; _textField.styleSheet = Style.sheet; this.text = _text; addChild(_background); addChild(_textField); } public function get text():String{ return (_textField.text); } public function set tag(_arg1:String):void{ _tag = _arg1; text = ""; } public function set text(_arg1:String):void{ if (_arg1 == ""){ _arg1 = _text; }; _textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>"); _text = _arg1; _draw(); resize(); } public function appendText(_arg1:String, _arg2:String=""):void{ if (_arg1 == ""){ return; }; if (_arg2 == ""){ _arg2 = tag; }; _textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>")); _text = (_text + _arg1); _draw(); resize(); } public function onLink(_arg1:TextEvent):void{ } public function get tag():String{ return (_tag); } } }//package com.google.analytics.debug
Section 107
//Layout (com.google.analytics.debug.Layout) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.events.*; import flash.display.*; import com.google.analytics.*; public class Layout implements ILayout { private var _display:DisplayObject; private var _infoQueue:Array; private var _maxCharPerLine:int;// = 85 private var _hasInfo:Boolean; private var _warningQueue:Array; private var _hasDebug:Boolean; private var _hasWarning:Boolean; private var _mainPanel:Panel; private var _GRAlertQueue:Array; private var _debug:DebugConfiguration; public var visualDebug:Debug; private var _hasGRAlert:Boolean; public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){ _maxCharPerLine = 85; super(); _display = _arg2; _debug = _arg1; _hasWarning = false; _hasInfo = false; _hasDebug = false; _hasGRAlert = false; _warningQueue = []; _infoQueue = []; _GRAlertQueue = []; } private function onKey(_arg1:KeyboardEvent=null):void{ switch (_arg1.keyCode){ case _debug.showHideKey: _mainPanel.visible = !(_mainPanel.visible); break; case _debug.destroyKey: destroy(); break; }; } public function bringToFront(_arg1:DisplayObject):void{ _display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1)); } public function createFailureAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new FailureAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function init():void{ var _local1:int; var _local2:uint; var _local3:uint; var _local4:Panel; _local1 = 10; _local2 = (_display.stage.stageWidth - (_local1 * 2)); _local3 = (_display.stage.stageHeight - (_local1 * 2)); _local4 = new Panel("analytics", _local2, _local3); _local4.alignement = Align.top; _local4.stickToEdge = false; _local4.title = ("Google Analytics v" + GATracker.version); _mainPanel = _local4; addToStage(_local4); bringToFront(_local4); if (_debug.minimizedOnStart){ _mainPanel.onToggle(); }; createVisualDebug(); _display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true); } public function addToPanel(_arg1:String, _arg2:DisplayObject):void{ var _local3:DisplayObject; var _local4:Panel; _local3 = _display.stage.getChildByName(_arg1); if (_local3){ _local4 = (_local3 as Panel); _local4.addData(_arg2); } else { trace((("panel \"" + _arg1) + "\" not found")); }; } private function _clearInfo(_arg1:Event):void{ _hasInfo = false; if (_infoQueue.length > 0){ createInfo(_infoQueue.shift()); }; } private function _filterMaxChars(_arg1:String, _arg2:int=0):String{ var _local3:String; var _local4:Array; var _local5:Array; var _local6:String; var _local7:int; _local3 = "\n"; _local4 = []; _local5 = _arg1.split(_local3); if (_arg2 == 0){ _arg2 = _maxCharPerLine; }; _local7 = 0; while (_local7 < _local5.length) { _local6 = _local5[_local7]; while (_local6.length > _arg2) { _local4.push(_local6.substr(0, _arg2)); _local6 = _local6.substring(_arg2); }; _local4.push(_local6); _local7++; }; return (_local4.join(_local3)); } public function createWarning(_arg1:String):void{ var _local2:Warning; if (((_hasWarning) || (!(isAvailable())))){ _warningQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasWarning = true; _local2 = new Warning(_arg1, _debug.warningTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } private function _clearGRAlert(_arg1:Event):void{ _hasGRAlert = false; if (_GRAlertQueue.length > 0){ createGIFRequestAlert.apply(this, _GRAlertQueue.shift()); }; } public function createSuccessAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new SuccessAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function isAvailable():Boolean{ return (!((_display.stage == null))); } public function createAlert(_arg1:String):void{ var _local2:Alert; _arg1 = _filterMaxChars(_arg1); _local2 = new Alert(_arg1, [new AlertAction("Close", "close", "close")]); addToPanel("analytics", _local2); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } public function createInfo(_arg1:String):void{ var _local2:Info; if (((_hasInfo) || (!(isAvailable())))){ _infoQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasInfo = true; _local2 = new Info(_arg1, _debug.infoTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true); if (_hasDebug){ visualDebug.write(_arg1); }; } public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ var f:Function; var gra:GIFRequestAlert; var message = _arg1; var request = _arg2; var ref = _arg3; if (_hasGRAlert){ _GRAlertQueue.push([message, request, ref]); return; }; _hasGRAlert = true; f = function ():void{ ref.sendRequest(request); }; message = _filterMaxChars(message); gra = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]); addToPanel("analytics", gra); gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true); if (_hasDebug){ if (_debug.verbose){ message = message.split("\n").join(""); message = _filterMaxChars(message, 66); }; visualDebug.write(message); }; } public function createVisualDebug():void{ if (!visualDebug){ visualDebug = new Debug(); visualDebug.alignement = Align.bottom; visualDebug.stickToEdge = true; addToPanel("analytics", visualDebug); _hasDebug = true; }; } public function addToStage(_arg1:DisplayObject):void{ _display.stage.addChild(_arg1); } private function _clearWarning(_arg1:Event):void{ _hasWarning = false; if (_warningQueue.length > 0){ createWarning(_warningQueue.shift()); }; } public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{ var _local4:Panel; _local4 = new Panel(_arg1, _arg2, _arg3); _local4.alignement = Align.center; _local4.stickToEdge = false; addToStage(_local4); bringToFront(_local4); } public function destroy():void{ _mainPanel.close(); _debug.layout = null; } } }//package com.google.analytics.debug
Section 108
//Margin (com.google.analytics.debug.Margin) package com.google.analytics.debug { public class Margin { public var bottom:int; public var top:int; public var right:int; public var left:int; public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){ this.top = _arg1; this.bottom = _arg2; this.left = _arg3; this.right = _arg4; } } }//package com.google.analytics.debug
Section 109
//Panel (com.google.analytics.debug.Panel) package com.google.analytics.debug { import flash.events.*; import flash.display.*; public class Panel extends UISprite { protected var baseAlpha:Number; private var _border:Shape; private var _name:String; private var _title:Label; private var _data:UISprite; private var _backgroundColor:uint; private var _colapsed:Boolean; private var _stickToEdge:Boolean; private var _background:Shape; private var _savedW:uint; private var _mask:Sprite; private var _savedH:uint; private var _borderColor:uint; public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){ _name = _arg1; this.name = _arg1; this.mouseEnabled = false; _colapsed = false; forcedWidth = _arg2; forcedHeight = _arg3; this.baseAlpha = _arg6; _background = new Shape(); _data = new UISprite(); _data.forcedWidth = _arg2; _data.forcedHeight = _arg3; _data.mouseEnabled = false; _title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8); _title.buttonMode = true; _title.margin.top = 0.6; _title.margin.left = 0.6; _title.addEventListener(MouseEvent.CLICK, onToggle); _title.mouseChildren = false; _border = new Shape(); _mask = new Sprite(); _mask.useHandCursor = false; _mask.mouseEnabled = false; _mask.mouseChildren = false; if (_arg7 == null){ _arg7 = Align.none; }; this.alignement = _arg7; this.stickToEdge = _arg8; if (_arg4 == 0){ _arg4 = Style.backgroundColor; }; _backgroundColor = _arg4; if (_arg5 == 0){ _arg5 = Style.borderColor; }; _borderColor = _arg5; } public function set stickToEdge(_arg1:Boolean):void{ _stickToEdge = _arg1; _title.stickToEdge = _arg1; } public function onToggle(_arg1:MouseEvent=null):void{ if (_colapsed){ _data.visible = true; } else { _data.visible = false; }; _colapsed = !(_colapsed); _update(); resize(); } override protected function dispose():void{ _title.removeEventListener(MouseEvent.CLICK, onToggle); super.dispose(); } private function _draw():void{ var _local1:uint; var _local2:uint; var _local3:Graphics; var _local4:Graphics; var _local5:Graphics; var _local6:Graphics; if (((_savedW) && (_savedH))){ forcedWidth = _savedW; forcedHeight = _savedH; }; if (!_colapsed){ _local1 = forcedWidth; _local2 = forcedHeight; } else { _local1 = _title.width; _local2 = _title.height; _savedW = forcedWidth; _savedH = forcedHeight; forcedWidth = _local1; forcedHeight = _local2; }; _local3 = _background.graphics; _local3.clear(); _local3.beginFill(_backgroundColor); Background.drawRounded(this, _local3, _local1, _local2); _local3.endFill(); _local4 = _data.graphics; _local4.clear(); _local4.beginFill(_backgroundColor, 0); Background.drawRounded(this, _local4, _local1, _local2); _local4.endFill(); _local5 = _border.graphics; _local5.clear(); _local5.lineStyle(0.1, _borderColor); Background.drawRounded(this, _local5, _local1, _local2); _local5.endFill(); _local6 = _mask.graphics; _local6.clear(); _local6.beginFill(_backgroundColor); Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1)); _local6.endFill(); } override protected function layout():void{ _update(); addChild(_background); addChild(_data); addChild(_title); addChild(_border); addChild(_mask); mask = _mask; } public function get title():String{ return (_title.text); } public function get stickToEdge():Boolean{ return (_stickToEdge); } public function set title(_arg1:String):void{ _title.text = _arg1; } private function _update():void{ _draw(); if (baseAlpha < 1){ _background.alpha = baseAlpha; _border.alpha = baseAlpha; }; } public function addData(_arg1:DisplayObject):void{ _data.addChild(_arg1); } public function close():void{ dispose(); if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 110
//Style (com.google.analytics.debug.Style) package com.google.analytics.debug { public const Style:_Style = new _Style(); }//package com.google.analytics.debug
Section 111
//SuccessAlert (com.google.analytics.debug.SuccessAlert) package com.google.analytics.debug { public class SuccessAlert extends Alert { public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 112
//UISprite (com.google.analytics.debug.UISprite) package com.google.analytics.debug { import flash.events.*; import flash.display.*; public class UISprite extends Sprite { private var _forcedHeight:uint; protected var listenResize:Boolean; public var alignement:Align; private var _forcedWidth:uint; public var margin:Margin; protected var alignTarget:DisplayObject; public function UISprite(_arg1:DisplayObject=null){ listenResize = false; alignement = Align.none; this.alignTarget = _arg1; margin = new Margin(); addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); } protected function dispose():void{ var _local1:DisplayObject; var _local2:int; _local2 = 0; while (_local2 < numChildren) { _local1 = getChildAt(_local2); if (_local1){ removeChild(_local1); }; _local2++; }; } protected function layout():void{ } public function get forcedHeight():uint{ if (_forcedHeight){ return (_forcedHeight); }; return (height); } public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:UISprite; if (_arg2 == null){ if ((parent is Stage)){ _arg2 = this.stage; } else { _arg2 = parent; }; }; if (_arg2 == this.stage){ if (this.stage == null){ return; }; _local3 = this.stage.stageHeight; _local4 = this.stage.stageWidth; _local5 = 0; _local6 = 0; } else { _local7 = (_arg2 as UISprite); if (_local7.forcedHeight){ _local3 = _local7.forcedHeight; } else { _local3 = _local7.height; }; if (_local7.forcedWidth){ _local4 = _local7.forcedWidth; } else { _local4 = _local7.width; }; _local5 = 0; _local6 = 0; }; switch (_arg1){ case Align.top: x = ((_local4 / 2) - (forcedWidth / 2)); y = (_local6 + margin.top); break; case Align.bottom: x = ((_local4 / 2) - (forcedWidth / 2)); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.left: x = (_local5 + margin.left); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.right: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.center: x = ((_local4 / 2) - (forcedWidth / 2)); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.topLeft: x = (_local5 + margin.left); y = (_local6 + margin.top); break; case Align.topRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (_local6 + margin.top); break; case Align.bottomLeft: x = (_local5 + margin.left); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.bottomRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; }; if (((!(listenResize)) && (!((_arg1 == Align.none))))){ _arg2.addEventListener(Event.RESIZE, onResize, false, 0, true); listenResize = true; }; this.alignement = _arg1; this.alignTarget = _arg2; } public function get forcedWidth():uint{ if (_forcedWidth){ return (_forcedWidth); }; return (width); } protected function onResize(_arg1:Event):void{ resize(); } private function _onRemovedFromStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); dispose(); } public function resize():void{ if (alignement != Align.none){ alignTo(alignement, alignTarget); }; } private function _onAddedToStage(_arg1:Event):void{ layout(); resize(); } public function set forcedHeight(_arg1:uint):void{ _forcedHeight = _arg1; } public function set forcedWidth(_arg1:uint):void{ _forcedWidth = _arg1; } } }//package com.google.analytics.debug
Section 113
//Warning (com.google.analytics.debug.Warning) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Warning extends Label { private var _timer:Timer; public function Warning(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiWarning", Style.warningColor, Align.top, false); margin.top = 32; if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 114
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode) package com.google.analytics.debug { public class VisualDebugMode { private var _value:int; private var _name:String; public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced"); ; public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek"); ; public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic"); ; public function VisualDebugMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 115
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent) package com.google.analytics.events { import flash.events.*; import com.google.analytics.*; public class AnalyticsEvent extends Event { public var tracker:AnalyticsTracker; public static const READY:String = "ready"; public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){ super(_arg1, _arg3, _arg4); this.tracker = _arg2; } override public function clone():Event{ return (new AnalyticsEvent(type, tracker, bubbles, cancelable)); } } }//package com.google.analytics.events
Section 116
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals) package com.google.analytics.external { import com.google.analytics.debug.*; public class AdSenseGlobals extends JavascriptProxy { private var _gaGlobalVerified:Boolean;// = false public static var gaGlobal_js:XML = <script> <![CDATA[ function() { try { gaGlobal } catch(e) { gaGlobal = {} ; } } ]]> </script> ; public function AdSenseGlobals(_arg1:DebugConfiguration){ _gaGlobalVerified = false; super(_arg1); } public function set vid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.vid", _arg1); } public function get hid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.hid")); } public function get dh():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.dh")); } public function get gaGlobal():Object{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal")); } public function set hid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.hid", _arg1); } public function get sid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.sid")); } private function _verify():void{ if (!_gaGlobalVerified){ executeBlock(gaGlobal_js); _gaGlobalVerified = true; }; } public function get vid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.vid")); } public function set sid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.sid", _arg1); } } }//package com.google.analytics.external
Section 117
//HTMLDOM (com.google.analytics.external.HTMLDOM) package com.google.analytics.external { import com.google.analytics.debug.*; public class HTMLDOM extends JavascriptProxy { private var _referrer:String; private var _protocol:String; private var _host:String; private var _location:String; private var _pathname:String; private var _title:String; private var _characterSet:String; private var _search:String; private var _language:String; private var _colorDepth:String; public static var cache_properties_js:XML = <script> <![CDATA[ function() { var obj = {}; obj.host = document.location.host; obj.language = navigator.language ? navigator.language : navigator.browserLanguage; obj.characterSet = document.characterSet ? document.characterSet : document.charset; obj.colorDepth = window.screen.colorDepth; obj.location = document.location.toString(); obj.pathname = document.location.pathname; obj.protocol = document.location.protocol; obj.search = document.location.search; obj.referrer = document.referrer; obj.title = document.title; return obj; } ]]> </script> ; public function HTMLDOM(_arg1:DebugConfiguration){ super(_arg1); } public function get search():String{ if (_search){ return (_search); }; if (!isAvailable()){ return (null); }; _search = getProperty("document.location.search"); return (_search); } public function get location():String{ if (_location){ return (_location); }; if (!isAvailable()){ return (null); }; _location = getPropertyString("document.location"); return (_location); } public function get pathname():String{ if (_pathname){ return (_pathname); }; if (!isAvailable()){ return (null); }; _pathname = getProperty("document.location.pathname"); return (_pathname); } public function get referrer():String{ if (_referrer){ return (_referrer); }; if (!isAvailable()){ return (null); }; _referrer = getProperty("document.referrer"); return (_referrer); } public function get protocol():String{ if (_protocol){ return (_protocol); }; if (!isAvailable()){ return (null); }; _protocol = getProperty("document.location.protocol"); return (_protocol); } public function cacheProperties():void{ var _local1:Object; if (!isAvailable()){ return; }; _local1 = call(cache_properties_js); if (_local1){ _host = _local1.host; _language = _local1.language; _characterSet = _local1.characterSet; _colorDepth = _local1.colorDepth; _location = _local1.location; _pathname = _local1.pathname; _protocol = _local1.protocol; _search = _local1.search; _referrer = _local1.referrer; _title = _local1.title; }; } public function get colorDepth():String{ if (_colorDepth){ return (_colorDepth); }; if (!isAvailable()){ return (null); }; _colorDepth = getProperty("window.screen.colorDepth"); return (_colorDepth); } public function get title():String{ if (_title){ return (_title); }; if (!isAvailable()){ return (null); }; _title = getProperty("document.title"); return (_title); } public function get host():String{ if (_host){ return (_host); }; if (!isAvailable()){ return (null); }; _host = getProperty("document.location.host"); return (_host); } public function get characterSet():String{ var _local1:String; if (_characterSet){ return (_characterSet); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("document.characterSet"); if (_local1 == null){ _local1 = getProperty("document.charset"); }; _characterSet = _local1; return (_characterSet); } public function get language():String{ var _local1:String; if (_language){ return (_language); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("navigator.language"); if (_local1 == null){ _local1 = getProperty("navigator.browserLanguage"); }; _language = _local1; return (_language); } } }//package com.google.analytics.external
Section 118
//JavascriptProxy (com.google.analytics.external.JavascriptProxy) package com.google.analytics.external { import com.google.analytics.debug.*; import flash.external.*; import flash.system.*; public class JavascriptProxy { private var _notAvailableWarning:Boolean;// = true private var _debug:DebugConfiguration; public static var setProperty_js:XML = <script> <![CDATA[ function( path , value ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } target[ prop ] = value ; } ]]> </script> ; public static var hasProperty_js:XML = <script> <![CDATA[ function( path ) { var paths; if( path.indexOf(".") > 0 ) { paths = path.split("."); } else { paths = [path]; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } if( target ) { return true; } else { return false; } } ]]> </script> ; public static var setPropertyRef_js:XML = <script> <![CDATA[ function( path , target ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } alert( "paths:"+paths.length+", prop:"+prop ); var targets; var name; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } alert( "targets:"+targets.length+", name:"+name ); var root = window; var len = paths.length; for( var i = 0 ; i < len ; i++ ) { root = root[ paths[i] ] ; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } root[ prop ] = ref[name] ; } ]]> </script> ; public function JavascriptProxy(_arg1:DebugConfiguration){ _notAvailableWarning = true; super(); _debug = _arg1; } public function getProperty(_arg1:String){ return (call((_arg1 + ".valueOf"))); } public function hasProperty(_arg1:String):Boolean{ return (call(hasProperty_js, _arg1)); } public function setProperty(_arg1:String, _arg2):void{ call(setProperty_js, _arg1, _arg2); } public function executeBlock(_arg1:String):void{ var data = _arg1; if (isAvailable()){ try { ExternalInterface.call(data); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; } public function getPropertyString(_arg1:String):String{ return (call((_arg1 + ".toString"))); } public function setPropertyByReference(_arg1:String, _arg2:String):void{ call(setPropertyRef_js, _arg1, _arg2); } public function call(_arg1:String, ... _args){ var output:String; var functionName = _arg1; var args = _args; if (isAvailable()){ try { if (((_debug.javascript) && (_debug.verbose))){ output = ""; output = ("Flash->JS: " + functionName); output = (output + "( "); if (args.length > 0){ output = (output + args.join(",")); }; output = (output + " )"); _debug.info(output); }; args.unshift(functionName); return (ExternalInterface.call.apply(ExternalInterface, args)); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; return (null); } public function isAvailable():Boolean{ var _local1:Boolean; _local1 = ExternalInterface.available; if (((_local1) && ((Capabilities.playerType == "External")))){ _local1 = false; }; if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){ _debug.warning("ExternalInterface is not available."); _notAvailableWarning = false; }; return (_local1); } } }//package com.google.analytics.external
Section 119
//Environment (com.google.analytics.utils.Environment) package com.google.analytics.utils { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; import flash.system.*; public class Environment { private var _dom:HTMLDOM; private var _appName:String; private var _debug:DebugConfiguration; private var _appVersion:Version; private var _url:String; private var _protocol:Protocols; private var _userAgent:UserAgent; public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){ var _local6:Version; super(); if (_arg2 == ""){ if (isAIR()){ _arg2 = "AIR"; } else { _arg2 = "Flash"; }; }; if (_arg3 == ""){ _local6 = flashVersion; } else { _local6 = Version.fromString(_arg3); }; _url = _arg1; _appName = _arg2; _appVersion = _local6; _debug = _arg4; _dom = _arg5; } public function isAIR():Boolean{ return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application")))); } public function get playerType():String{ return (Capabilities.playerType); } public function get locationSearch():String{ var _local1:String; _local1 = _dom.search; if (_local1){ return (_local1); }; return (""); } public function get protocol():Protocols{ if (!_protocol){ _findProtocol(); }; return (_protocol); } public function get flashVersion():Version{ var _local1:Version; _local1 = Version.fromString(Capabilities.version.split(" ")[1], ","); return (_local1); } public function get screenWidth():Number{ return (Capabilities.screenResolutionX); } public function get languageEncoding():String{ var _local1:String; if (System.useCodePage){ _local1 = _dom.characterSet; if (_local1){ return (_local1); }; return ("-"); }; return ("UTF-8"); } public function get appName():String{ return (_appName); } public function get screenColorDepth():String{ var _local1:String; var _local2:String; switch (Capabilities.screenColor){ case "bw": _local1 = "1"; break; case "gray": _local1 = "2"; break; case "color": default: _local1 = "24"; }; _local2 = _dom.colorDepth; if (_local2){ _local1 = _local2; }; return (_local1); } private function _findProtocol():void{ var _local1:Protocols; var _local2:String; var _local3:String; var _local4:String; var _local5:String; _local1 = Protocols.none; if (_url != ""){ _local4 = _url.toLowerCase(); _local5 = _local4.substr(0, 5); switch (_local5){ case "file:": _local1 = Protocols.file; break; case "http:": _local1 = Protocols.HTTP; break; case "https": if (_local4.charAt(5) == ":"){ _local1 = Protocols.HTTPS; }; break; default: _protocol = Protocols.none; }; }; _local2 = _dom.protocol; _local3 = (_local1.toString() + ":").toLowerCase(); if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){ _debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2)); }; _protocol = _local1; } public function get locationSWFPath():String{ return (_url); } public function get platform():String{ var _local1:String; _local1 = Capabilities.manufacturer; return (_local1.split("Adobe ")[1]); } public function get operatingSystem():String{ return (Capabilities.os); } public function set appName(_arg1:String):void{ _appName = _arg1; userAgent.applicationProduct = _arg1; } public function get userAgent():UserAgent{ if (!_userAgent){ _userAgent = new UserAgent(this, appName, appVersion.toString(4)); }; return (_userAgent); } ga_internal function set url(_arg1:String):void{ _url = _arg1; } public function get referrer():String{ var _local1:String; _local1 = _dom.referrer; if (_local1){ return (_local1); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function isInHTML():Boolean{ return ((Capabilities.playerType == "PlugIn")); } public function get language():String{ var _local1:String; var _local2:String; _local1 = _dom.language; _local2 = Capabilities.language; if (_local1){ if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){ _local2 = _local1; }; }; return (_local2); } public function get domainName():String{ var _local1:String; var _local2:String; var _local3:int; if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){ _local1 = _url.toLowerCase(); if (protocol == Protocols.HTTP){ _local2 = _local1.split("http://").join(""); } else { if (protocol == Protocols.HTTPS){ _local2 = _local1.split("https://").join(""); }; }; _local3 = _local2.indexOf("/"); if (_local3 > -1){ _local2 = _local2.substring(0, _local3); }; return (_local2); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function set userAgent(_arg1:UserAgent):void{ _userAgent = _arg1; } public function set appVersion(_arg1:Version):void{ _appVersion = _arg1; userAgent.applicationVersion = _arg1.toString(4); } public function get screenHeight():Number{ return (Capabilities.screenResolutionY); } public function get locationPath():String{ var _local1:String; _local1 = _dom.pathname; if (_local1){ return (_local1); }; return (""); } public function get documentTitle():String{ var _local1:String; _local1 = _dom.title; if (_local1){ return (_local1); }; return (""); } public function get appVersion():Version{ return (_appVersion); } } }//package com.google.analytics.utils
Section 120
//Protocols (com.google.analytics.utils.Protocols) package com.google.analytics.utils { public class Protocols { private var _value:int; private var _name:String; public static const none:Protocols = new Protocols(0, "none"); ; public static const HTTPS:Protocols = new Protocols(3, "HTTPS"); ; public static const file:Protocols = new Protocols(1, "file"); ; public static const HTTP:Protocols = new Protocols(2, "HTTP"); ; public function Protocols(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.utils
Section 121
//Timespan (com.google.analytics.utils.Timespan) package com.google.analytics.utils { public class Timespan { public static var sixmonths:Number = 15768000; public static var twoyears:Number = 63072000; public static var thirtyminutes:Number = 1800; } }//package com.google.analytics.utils
Section 122
//URL (com.google.analytics.utils.URL) package com.google.analytics.utils { public class URL { private var _url:String; public function URL(_arg1:String=""){ _url = _arg1.toLowerCase(); } public function get domain():String{ var _local1:Array; if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){ _local1 = hostName.split("."); switch (_local1.length){ case 2: return (hostName); case 3: if (_local1[1] == "co"){ return (hostName); }; _local1.shift(); return (_local1.join(".")); case 4: _local1.shift(); return (_local1.join(".")); }; }; return (""); } public function get path():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if (_local1.charAt(0) != "/"){ _local1 = ("/" + _local1); }; return (_local1); } public function get search():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[1]; } else { _local1 = ""; }; return (_local1); } public function get subDomain():String{ if (((!((domain == ""))) && (!((domain == hostName))))){ return (hostName.split(("." + domain)).join("")); }; return (""); } public function get protocol():Protocols{ var _local1:String; _local1 = _url.split("://")[0]; switch (_local1){ case "file": return (Protocols.file); case "http": return (Protocols.HTTP); case "https": return (Protocols.HTTPS); default: return (Protocols.none); }; } public function get hostName():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf("/") > -1){ _local1 = _local1.split("/")[0]; }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){ return (""); }; return (_local1); } } }//package com.google.analytics.utils
Section 123
//UserAgent (com.google.analytics.utils.UserAgent) package com.google.analytics.utils { import com.google.analytics.core.*; import flash.system.*; public class UserAgent { private var _version:Version; private var _localInfo:Environment; private var _applicationProduct:String; public static var minimal:Boolean = false; public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){ _localInfo = _arg1; applicationProduct = _arg2; _version = Version.fromString(_arg3); } public function get tamarinProductToken():String{ if (UserAgent.minimal){ return (""); }; if (System.vmVersion){ return (("Tamarin/" + Utils.trim(System.vmVersion, true))); }; return (""); } public function set applicationProduct(_arg1:String):void{ _applicationProduct = _arg1; } public function get applicationVersion():String{ return (_version.toString(2)); } public function get applicationProductToken():String{ var _local1:String; _local1 = applicationProduct; if (applicationVersion != ""){ _local1 = (_local1 + ("/" + applicationVersion)); }; return (_local1); } public function get vendorProductToken():String{ var _local1:String; _local1 = ""; if (_localInfo.isAIR()){ _local1 = (_local1 + "AIR"); } else { _local1 = (_local1 + "FlashPlayer"); }; _local1 = (_local1 + "/"); _local1 = (_local1 + _version.toString(3)); return (_local1); } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + applicationProductToken); if (applicationComment != ""){ _local1 = (_local1 + (" " + applicationComment)); }; if (tamarinProductToken != ""){ _local1 = (_local1 + (" " + tamarinProductToken)); }; if (vendorProductToken != ""){ _local1 = (_local1 + (" " + vendorProductToken)); }; return (_local1); } public function get applicationComment():String{ var _local1:Array; _local1 = []; _local1.push(_localInfo.platform); _local1.push(_localInfo.playerType); if (!UserAgent.minimal){ _local1.push(_localInfo.operatingSystem); _local1.push(_localInfo.language); }; if (Capabilities.isDebugger){ _local1.push("DEBUG"); }; if (_local1.length > 0){ return ((("(" + _local1.join("; ")) + ")")); }; return (""); } public function set applicationVersion(_arg1:String):void{ _version = Version.fromString(_arg1); } public function get applicationProduct():String{ return (_applicationProduct); } } }//package com.google.analytics.utils
Section 124
//Variables (com.google.analytics.utils.Variables) package com.google.analytics.utils { import flash.net.*; public dynamic class Variables { public var post:Array; public var URIencode:Boolean; public var pre:Array; public var sort:Boolean;// = true public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){ pre = []; post = []; sort = true; super(); if (_arg1){ decode(_arg1); }; if (_arg2){ this.pre = _arg2; }; if (_arg3){ this.post = _arg3; }; } private function _join(_arg1:Variables):void{ var _local2:String; if (!_arg1){ return; }; for (_local2 in _arg1) { this[_local2] = _arg1[_local2]; }; } public function join(... _args):void{ var _local2:int; var _local3:int; _local2 = _args.length; _local3 = 0; while (_local3 < _local2) { if (!(_args[_local3] is Variables)){ } else { _join(_args[_local3]); }; _local3++; }; } public function toString():String{ var _local1:Array; var _local2:String; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:String; var _local8:String; _local1 = []; for (_local3 in this) { _local2 = this[_local3]; if (URIencode){ _local2 = encodeURI(_local2); }; _local1.push(((_local3 + "=") + _local2)); }; if (sort){ _local1.sort(); }; if (pre.length > 0){ pre.reverse(); _local5 = 0; while (_local5 < pre.length) { _local7 = pre[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local7) == 0){ _local1.unshift(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; pre.reverse(); }; if (post.length > 0){ _local5 = 0; while (_local5 < post.length) { _local8 = post[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local8) == 0){ _local1.push(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; }; return (_local1.join("&")); } public function decode(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:String; var _local6:Array; var _local7:int; if (_arg1 == ""){ return; }; if (_arg1.indexOf("&") > -1){ _local2 = _arg1.split("&"); } else { _local2 = [_arg1]; }; _local7 = 0; while (_local7 < _local2.length) { _local3 = _local2[_local7]; if (_local3.indexOf("=") > -1){ _local6 = _local3.split("="); _local4 = _local6[0]; _local5 = decodeURI(_local6[1]); this[_local4] = _local5; }; _local7++; }; } public function toURLVariables():URLVariables{ var _local1:URLVariables; var _local2:String; _local1 = new URLVariables(); for (_local2 in this) { _local1[_local2] = this[_local2]; }; return (_local1); } } }//package com.google.analytics.utils
Section 125
//Version (com.google.analytics.utils.Version) package com.google.analytics.utils { public class Version { private var _maxBuild:uint;// = 0xFF private var _maxMinor:uint;// = 15 private var _maxMajor:uint;// = 15 private var _revision:uint; private var _separator:String;// = "." private var _maxRevision:uint;// = 0xFFFF private var _build:uint; private var _minor:uint; private var _major:uint; public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){ var _local5:Version; _maxMajor = 15; _maxMinor = 15; _maxBuild = 0xFF; _maxRevision = 0xFFFF; _separator = "."; super(); if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){ _local5 = Version.fromNumber(_arg1); _arg1 = _local5.major; _arg2 = _local5.minor; _arg3 = _local5.build; _arg4 = _local5.revision; }; this.major = _arg1; this.minor = _arg2; this.build = _arg3; this.revision = _arg4; } public function toString(_arg1:int=0):String{ var _local2:Array; if ((((_arg1 <= 0)) || ((_arg1 > 4)))){ _arg1 = getFields(); }; switch (_arg1){ case 1: _local2 = [major]; break; case 2: _local2 = [major, minor]; break; case 3: _local2 = [major, minor, build]; break; case 4: default: _local2 = [major, minor, build, revision]; }; return (_local2.join(_separator)); } public function get revision():uint{ return (_revision); } public function set build(_arg1:uint):void{ _build = Math.min(_arg1, _maxBuild); } public function set minor(_arg1:uint):void{ _minor = Math.min(_arg1, _maxMinor); } public function get build():uint{ return (_build); } public function set major(_arg1:uint):void{ _major = Math.min(_arg1, _maxMajor); } public function get minor():uint{ return (_minor); } public function valueOf():uint{ return (((((major << 28) | (minor << 24)) | (build << 16)) | revision)); } public function get major():uint{ return (_major); } public function set revision(_arg1:uint):void{ _revision = Math.min(_arg1, _maxRevision); } private function getFields():int{ var _local1:int; _local1 = 4; if (revision == 0){ _local1--; }; if ((((_local1 == 3)) && ((build == 0)))){ _local1--; }; if ((((_local1 == 2)) && ((minor == 0)))){ _local1--; }; return (_local1); } public function equals(_arg1):Boolean{ if (!(_arg1 is Version)){ return (false); }; if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){ return (true); }; return (false); } public static function fromString(_arg1:String="", _arg2:String="."):Version{ var _local3:Version; var _local4:Array; _local3 = new (Version); if ((((_arg1 == "")) || ((_arg1 == null)))){ return (_local3); }; if (_arg1.indexOf(_arg2) > -1){ _local4 = _arg1.split(_arg2); _local3.major = parseInt(_local4[0]); _local3.minor = parseInt(_local4[1]); _local3.build = parseInt(_local4[2]); _local3.revision = parseInt(_local4[3]); } else { _local3.major = parseInt(_arg1); }; return (_local3); } public static function fromNumber(_arg1:Number=0):Version{ var _local2:Version; _local2 = new (Version); if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){ return (_local2); }; _local2.major = (_arg1 >>> 28); _local2.minor = ((_arg1 & 251658240) >>> 24); _local2.build = ((_arg1 & 0xFF0000) >>> 16); _local2.revision = (_arg1 & 0xFFFF); return (_local2); } } }//package com.google.analytics.utils
Section 126
//Bridge (com.google.analytics.v4.Bridge) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; public class Bridge implements GoogleAnalyticsAPI { private var _debug:DebugConfiguration; private var _proxy:JavascriptProxy; private var _jsContainer:String;// = "_GATracker" private var _hasGATracker:Boolean;// = false private var _account:String; private static var _linkTrackingObject_js:XML = <script> <![CDATA[ function( container , target ) { var targets ; var name ; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } window[container][target] = ref[name] ; } ]]> </script> ; private static var _createTrackingObject_js:XML = <script> <![CDATA[ function( acct ) { _GATracker[acct] = _gat._getTracker(acct); } ]]> </script> ; private static var _injectTrackingObject_js:XML = <script> <![CDATA[ function() { try { _GATracker } catch(e) { _GATracker = {}; } } ]]> </script> ; private static var _checkGAJS_js:XML = <script> <![CDATA[ function() { if( _gat && _gat._getTracker ) { return true; } return false; } ]]> </script> ; private static var _checkValidTrackingObject_js:XML = <script> <![CDATA[ function(acct) { if( _GATracker[acct] && (_GATracker[acct]._getAccount) ) { return true ; } else { return false; } } ]]> </script> ; public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){ var _local4:String; var _local5:String; var _local6:String; _hasGATracker = false; _jsContainer = "_GATracker"; super(); _account = _arg1; _debug = _arg2; _proxy = _arg3; if (!_checkGAJS()){ _local4 = ""; _local4 = (_local4 + "ga.js not found, be sure to check if\n"); _local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n"); _local4 = (_local4 + "is included in the HTML."); _debug.warning(_local4); throw (new Error(_local4)); }; if (!_hasGATracker){ if (((_debug.javascript) && (_debug.verbose))){ _local5 = ""; _local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n"); _local5 = (_local5 + "we create it"); _debug.info(_local5, VisualDebugMode.advanced); }; _injectTrackingObject(); }; if (Utils.validateAccount(_arg1)){ _createTrackingObject(_arg1); } else { if (_checkTrackingObject(_arg1)){ _linkTrackingObject(_arg1); } else { _local6 = ""; _local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n")); _local6 = (_local6 + "Bridge object not created."); _debug.warning(_local6); throw (new Error(_local6)); }; }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )")); _call("_link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _call("_addOrganic", _arg1); } public function setAllowLinker(_arg1:Boolean):void{ _debug.info((("setAllowLinker( " + _arg1) + " )")); _call("_setAllowLinker", _arg1); } private function _linkTrackingObject(_arg1:String):void{ _proxy.call(_linkTrackingObject_js, _jsContainer, _arg1); } public function setClientInfo(_arg1:Boolean):void{ _debug.info((("setClientInfo( " + _arg1) + " )")); _call("_setClientInfo", _arg1); } public function trackTrans():void{ _debug.info("trackTrans()"); _call("_trackTrans"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:int; _local5 = 2; if (((_arg3) && (!((_arg3 == ""))))){ _local5 = 3; }; if ((((_local5 == 3)) && (!(isNaN(_arg4))))){ _local5 = 4; }; switch (_local5){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4)); case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3)); case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2)); }; } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); _call("_trackPageview", _arg1); } public function setCookieTimeout(_arg1:int):void{ _debug.info((("setCookieTimeout( " + _arg1) + " )")); _call("_setCookieTimeout", _arg1); } private function _checkValidTrackingObject(_arg1:String):Boolean{ return (_proxy.call(_checkValidTrackingObject_js, _arg1)); } private function _checkGAJS():Boolean{ return (_proxy.call(_checkGAJS_js)); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_call("_getClientInfo")); } private function _call(_arg1:String, ... _args){ _args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1)); return (_proxy.call.apply(_proxy, _args)); } public function hasGAJS():Boolean{ return (_checkGAJS()); } private function _checkTrackingObject(_arg1:String):Boolean{ var _local2:Boolean; var _local3:Boolean; _local2 = _proxy.hasProperty(_arg1); _local3 = _proxy.hasProperty((_arg1 + "._getAccount")); return (((_local2) && (_local3))); } public function resetSession():void{ _debug.warning("resetSession() not implemented"); } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_call("_getDetectTitle")); } public function setDetectFlash(_arg1:Boolean):void{ _debug.info((("setDetectFlash( " + _arg1) + " )")); _call("_setDetectFlash", _arg1); } public function setCampNameKey(_arg1:String):void{ _debug.info((("setCampNameKey( " + _arg1) + " )")); _call("_setCampNameKey", _arg1); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )")); _call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _call("_clearIgnoreOrganic"); } public function setVar(_arg1:String):void{ _debug.info((("setVar( " + _arg1) + " )")); _call("_setVar", _arg1); } public function setDomainName(_arg1:String):void{ _debug.info((("setDomainName( " + _arg1) + " )")); _call("_setDomainName", _arg1); } public function hasTrackingAccount(_arg1:String):Boolean{ if (Utils.validateAccount(_arg1)){ return (_checkValidTrackingObject(_arg1)); }; return (_checkTrackingObject(_arg1)); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )")); _call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); return (null); } public function setCampSourceKey(_arg1:String):void{ _debug.info((("setCampSourceKey( " + _arg1) + " )")); _call("_setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ _debug.info((("setCampContentKey( " + _arg1) + " )")); _call("_setCampContentKey", _arg1); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _call("_clearIgnoreRef"); } public function setLocalServerMode():void{ _debug.info("setLocalServerMode()"); _call("_setLocalServerMode"); } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_call("_getLocalGifPath")); } public function setAllowAnchor(_arg1:Boolean):void{ _debug.info((("setAllowAnchor( " + _arg1) + " )")); _call("_setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ _debug.info((("setLocalGifPath( " + _arg1) + " )")); _call("_setLocalGifPath", _arg1); } public function getVersion():String{ _debug.info("getVersion()"); return (_call("_getVersion")); } private function _injectTrackingObject():void{ _proxy.executeBlock(_injectTrackingObject_js); _hasGATracker = true; } public function setCookiePath(_arg1:String):void{ _debug.info((("setCookiePath( " + _arg1) + " )")); _call("_setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ _debug.info((("setSampleRate( " + _arg1) + " )")); _call("_setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ _debug.info((("setAllowHash( " + _arg1) + " )")); _call("_setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _call("_addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ _debug.info((("setCampNOKey( " + _arg1) + " )")); _call("_setCampNOKey", _arg1); } public function cookiePathCopy(_arg1:String):void{ _debug.info((("cookiePathCopy( " + _arg1) + " )")); _call("_cookiePathCopy", _arg1); } public function setLocalRemoteServerMode():void{ _debug.info("setLocalRemoteServerMode()"); _call("_setLocalRemoteServerMode"); } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_call("_getServiceMode")); } public function setDetectTitle(_arg1:Boolean):void{ _debug.info((("setDetectTitle( " + _arg1) + " )")); _call("_setDetectTitle", _arg1); } public function setCampTermKey(_arg1:String):void{ _debug.info((("setCampTermKey( " + _arg1) + " )")); _call("_setCampTermKey", _arg1); } private function _createTrackingObject(_arg1:String):void{ _proxy.call(_createTrackingObject_js, _arg1); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_call("_getDetectFlash")); } public function setCampaignTrack(_arg1:Boolean):void{ _debug.info((("setCampaignTrack( " + _arg1) + " )")); _call("_setCampaignTrack", _arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _call("_clearOrganic"); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _call("_addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ _debug.info((("setCampMediumKey( " + _arg1) + " )")); _call("_setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ _debug.info((("setSessionTimeout( " + _arg1) + " )")); _call("_setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ _debug.info("setRemoteServerMode()"); _call("_setRemoteServerMode"); } public function getAccount():String{ _debug.info("getAccount()"); return (_call("_getAccount")); } } }//package com.google.analytics.v4
Section 127
//Configuration (com.google.analytics.v4.Configuration) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.campaign.*; public class Configuration { public var serverMode:ServerOperationMode; public var detectFlash:Boolean;// = true public var allowLocalTracking:Boolean;// = true public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif" public var hasSiteOverlay:Boolean;// = false private var _version:String;// = "4.3as" public var allowDomainHash:Boolean;// = true public var detectClientInfo:Boolean;// = true public var idleLoop:Number;// = 30 public var isTrackOutboundSubdomains:Boolean;// = false public var cookiePath:String;// = "/" public var transactionFieldDelim:String;// = "|" private var _organic:Organic; private var _cookieName:String;// = "analytics" public var campaignKey:CampaignKey; public var google:String;// = "google" public var googleCsePath:String;// = "cse" public var bucketCapacity:Number;// = 10 private var _sampleRate:Number;// = 1 public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif" public var googleSearchParam:String;// = "q" public var allowLinker:Boolean;// = false public var maxOutboundLinkExamined:Number;// = 1000 private var _debug:DebugConfiguration; private var _trackingLimitPerSession:int;// = 500 private var _domain:Domain; public var allowAnchor:Boolean;// = false public var tokenCliff:int;// = 10 public var sessionTimeout:Number; public var idleTimeout:Number;// = 60 public var campaignTracking:Boolean;// = true public var domainName:String;// = "" public var detectTitle:Boolean;// = true public var tokenRate:Number;// = 0.2 public var conversionTimeout:Number; public var localGIFpath:String;// = "/__utm.gif" public function Configuration(_arg1:DebugConfiguration=null){ _version = "4.3as"; _sampleRate = 1; _trackingLimitPerSession = 500; _organic = new Organic(); googleCsePath = "cse"; googleSearchParam = "q"; google = "google"; _cookieName = "analytics"; allowDomainHash = true; allowAnchor = false; allowLinker = false; hasSiteOverlay = false; tokenRate = 0.2; conversionTimeout = Timespan.sixmonths; sessionTimeout = Timespan.thirtyminutes; idleLoop = 30; idleTimeout = 60; maxOutboundLinkExamined = 1000; tokenCliff = 10; bucketCapacity = 10; detectClientInfo = true; detectFlash = true; detectTitle = true; campaignKey = new CampaignKey(); campaignTracking = true; isTrackOutboundSubdomains = false; serverMode = ServerOperationMode.remote; localGIFpath = "/__utm.gif"; remoteGIFpath = "http://www.google-analytics.com/__utm.gif"; secureRemoteGIFpath = "https://ssl.google-analytics.com/__utm.gif"; cookiePath = "/"; transactionFieldDelim = "|"; domainName = ""; allowLocalTracking = true; super(); _debug = _arg1; _domain = new Domain(DomainNameMode.auto, "", _debug); serverMode = ServerOperationMode.remote; _initOrganicSources(); } public function get organic():Organic{ return (_organic); } public function get trackingLimitPerSession():int{ return (_trackingLimitPerSession); } private function _initOrganicSources():void{ addOrganicSource(google, googleSearchParam); addOrganicSource("yahoo", "p"); addOrganicSource("msn", "q"); addOrganicSource("aol", "query"); addOrganicSource("aol", "encquery"); addOrganicSource("lycos", "query"); addOrganicSource("ask", "q"); addOrganicSource("altavista", "q"); addOrganicSource("netscape", "query"); addOrganicSource("cnn", "query"); addOrganicSource("looksmart", "qt"); addOrganicSource("about", "terms"); addOrganicSource("mamma", "query"); addOrganicSource("alltheweb", "q"); addOrganicSource("gigablast", "q"); addOrganicSource("voila", "rdata"); addOrganicSource("virgilio", "qs"); addOrganicSource("live", "q"); addOrganicSource("baidu", "wd"); addOrganicSource("alice", "qs"); addOrganicSource("yandex", "text"); addOrganicSource("najdi", "q"); addOrganicSource("aol", "q"); addOrganicSource("club-internet", "q"); addOrganicSource("mama", "query"); addOrganicSource("seznam", "q"); addOrganicSource("search", "q"); addOrganicSource("wp", "szukaj"); addOrganicSource("onet", "qt"); addOrganicSource("netsprint", "q"); addOrganicSource("google.interia", "q"); addOrganicSource("szukacz", "q"); addOrganicSource("yam", "k"); addOrganicSource("pchome", "q"); addOrganicSource("kvasir", "searchExpr"); addOrganicSource("sesam", "q"); addOrganicSource("ozu", "q"); addOrganicSource("terra", "query"); addOrganicSource("nostrum", "query"); addOrganicSource("mynet", "q"); addOrganicSource("ekolay", "q"); addOrganicSource("search.ilse", "search_for"); } public function get sampleRate():Number{ return (_sampleRate); } public function get cookieName():String{ return (_cookieName); } public function addOrganicSource(_arg1:String, _arg2:String):void{ var engine = _arg1; var keyword = _arg2; try { _organic.addSource(engine, keyword); } catch(e:Error) { if (((_debug) && (_debug.active))){ _debug.warning(e.message); }; }; } public function get domain():Domain{ return (_domain); } public function set sampleRate(_arg1:Number):void{ if (_arg1 <= 0){ _arg1 = 0.1; }; if (_arg1 > 1){ _arg1 = 1; }; _arg1 = Number(_arg1.toFixed(2)); _sampleRate = _arg1; } public function get version():String{ return (_version); } } }//package com.google.analytics.v4
Section 128
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI) package com.google.analytics.v4 { import com.google.analytics.core.*; public interface GoogleAnalyticsAPI { function getServiceMode():ServerOperationMode; function setLocalRemoteServerMode():void; function setCampSourceKey(_arg1:String):void; function setCampContentKey(_arg1:String):void; function addOrganic(_arg1:String, _arg2:String):void; function setDetectFlash(_arg1:Boolean):void; function resetSession():void; function setCampTermKey(_arg1:String):void; function setCampNameKey(_arg1:String):void; function addIgnoredOrganic(_arg1:String):void; function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void; function setAllowLinker(_arg1:Boolean):void; function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object; function getDetectFlash():Boolean; function setCampaignTrack(_arg1:Boolean):void; function createEventTracker(_arg1:String):EventTracker; function setCookieTimeout(_arg1:int):void; function setAllowAnchor(_arg1:Boolean):void; function trackTrans():void; function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean; function trackPageview(_arg1:String=""):void; function setLocalGifPath(_arg1:String):void; function getVersion():String; function getLocalGifPath():String; function setVar(_arg1:String):void; function clearIgnoredOrganic():void; function setCampMediumKey(_arg1:String):void; function addIgnoredRef(_arg1:String):void; function setClientInfo(_arg1:Boolean):void; function setCookiePath(_arg1:String):void; function setSampleRate(_arg1:Number):void; function setSessionTimeout(_arg1:int):void; function setRemoteServerMode():void; function clearIgnoredRef():void; function linkByPost(_arg1:Object, _arg2:Boolean=false):void; function setLocalServerMode():void; function setDetectTitle(_arg1:Boolean):void; function setAllowHash(_arg1:Boolean):void; function clearOrganic():void; function getAccount():String; function setDomainName(_arg1:String):void; function link(_arg1:String, _arg2:Boolean=false):void; function setCampNOKey(_arg1:String):void; function getClientInfo():Boolean; function cookiePathCopy(_arg1:String):void; function getDetectTitle():Boolean; } }//package com.google.analytics.v4
Section 129
//Tracker (com.google.analytics.v4.Tracker) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.data.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; import com.google.analytics.campaign.*; public class Tracker implements GoogleAnalyticsAPI { private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3; private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1; private const EVENT_TRACKER_PROJECT_ID:int = 5; private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1; private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2; private var _adSense:AdSenseGlobals; private var _eventTracker:X10; private var _noSessionInformation:Boolean;// = false private var _browserInfo:BrowserInfo; private var _debug:DebugConfiguration; private var _isNewVisitor:Boolean;// = false private var _buffer:Buffer; private var _config:Configuration; private var _x10Module:X10; private var _campaign:CampaignManager; private var _formatedReferrer:String; private var _timeStamp:Number; private var _info:Environment; private var _domainHash:Number; private var _campaignInfo:CampaignInfo; private var _gifRequest:GIFRequest; private var _hasInitData:Boolean;// = false private var _account:String; public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){ var _local8:String; _hasInitData = false; _isNewVisitor = false; _noSessionInformation = false; super(); _account = _arg1; _config = _arg2; _debug = _arg3; _info = _arg4; _buffer = _arg5; _gifRequest = _arg6; _adSense = _arg7; if (!Utils.validateAccount(_arg1)){ _local8 = (("Account \"" + _arg1) + "\" is not valid."); _debug.warning(_local8); throw (new Error(_local8)); }; _initData(); } private function _doTracking():Boolean{ if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){ return (true); }; if (_config.allowLocalTracking){ return (true); }; return (false); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _config.organic.addSource(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _config.allowLinker = _arg1; _debug.info((("setAllowLinker( " + _config.allowLinker) + " )")); } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); if (_doTracking()){ _initData(); _trackMetrics(_arg1); _noSessionInformation = false; } else { _debug.warning((("trackPageview( " + _arg1) + " ) failed")); }; } public function setCookieTimeout(_arg1:int):void{ _config.conversionTimeout = _arg1; _debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )")); } public function trackTrans():void{ _debug.warning("trackTrans() not implemented"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:Boolean; var _local6:int; _local5 = true; _local6 = 2; if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){ _eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID); _eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2); if (((_arg3) && (!((_arg3 == ""))))){ _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3); _local6 = 3; if (!isNaN(_arg4)){ _local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4); _local6 = 4; }; }; if (_local5){ _debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _sendXEvent(_eventTracker); }; } else { _debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _local5 = false; }; switch (_local6){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); break; case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); break; case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); }; return (_local5); } public function setClientInfo(_arg1:Boolean):void{ _config.detectClientInfo = _arg1; _debug.info((("setClientInfo( " + _config.detectClientInfo) + " )")); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } private function _initData():void{ var _local1:String; var _local2:String; if (!_hasInitData){ _updateDomainName(); _domainHash = _getDomainHash(); _timeStamp = Math.round((new Date().getTime() / 1000)); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "_initData 0"); _local1 = (_local1 + ("\ndomain name: " + _config.domainName)); _local1 = (_local1 + ("\ndomain hash: " + _domainHash)); _local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_doTracking()){ _handleCookie(); }; if (!_hasInitData){ if (_doTracking()){ _formatedReferrer = _formatReferrer(); _browserInfo = new BrowserInfo(_config, _info); _debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced); if (_config.campaignTracking){ _campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp); _campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation); _debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced); }; }; _x10Module = new X10(); _eventTracker = new X10(); _hasInitData = true; }; if (_config.hasSiteOverlay){ _debug.warning("Site Overlay is not supported"); }; if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "_initData (misc)"); _local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4))); _local2 = (_local2 + ("\nprotocol: " + _info.protocol)); _local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\"")); _local2 = (_local2 + ("\nlanguage: " + _info.language)); _local2 = (_local2 + ("\ndomain hash: " + _getDomainHash())); _local2 = (_local2 + ("\nuser-agent: " + _info.userAgent)); _debug.info(_local2, VisualDebugMode.geek); }; } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_config.detectTitle); } public function resetSession():void{ _debug.info("resetSession()"); _buffer.resetCurrentSession(); } private function _sendXEvent(_arg1:X10=null):void{ var _local2:Variables; var _local3:EventInfo; var _local4:Variables; var _local5:Variables; _initData(); if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; _local3 = new EventInfo(true, _x10Module, _arg1); _local4 = _local3.toVariables(); _local5 = _renderMetricsSearchVariables(); _local2.join(_local4, _local5); _gifRequest.send(_account, _local2, false, true); }; } public function setDetectFlash(_arg1:Boolean):void{ _config.detectFlash = _arg1; _debug.info((("setDetectFlash( " + _config.detectFlash) + " )")); } public function setCampNameKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCN = _arg1; _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCN]")); } else { _debug.info(_local2); }; } private function _formatReferrer():String{ var _local1:String; var _local2:String; var _local3:URL; var _local4:URL; _local1 = _info.referrer; if ((((_local1 == "")) || ((_local1 == "localhost")))){ _local1 = "-"; } else { _local2 = _info.domainName; _local3 = new URL(_local1); _local4 = new URL(("http://" + _local2)); if (_local3.hostName == _local2){ return ("-"); }; if (_local4.domain == _local3.domain){ if (_local4.subDomain != _local3.subDomain){ _local1 = "0"; }; }; if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){ _local1 = "-"; }; }; _debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced); return (_local1); } private function _visitCode():Number{ if (_debug.verbose){ _debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek); }; return (_buffer.utma.sessionId); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented")); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _config.organic.clearIgnoredKeywords(); } public function setVar(_arg1:String):void{ var _local2:Variables; if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){ _initData(); _buffer.utmv.domainHash = _domainHash; _buffer.utmv.value = _arg1; if (_debug.verbose){ _debug.info(_buffer.utmv.toString(), VisualDebugMode.geek); }; _debug.info((("setVar( " + _arg1) + " )")); if (_takeSample()){ _local2 = new Variables(); _local2.utmt = "var"; _gifRequest.send(_account, _local2); }; } else { _debug.warning((("setVar \"" + _arg1) + "\" is ignored")); }; } public function setDomainName(_arg1:String):void{ if (_arg1 == "auto"){ _config.domain.mode = DomainNameMode.auto; } else { if (_arg1 == "none"){ _config.domain.mode = DomainNameMode.none; } else { _config.domain.mode = DomainNameMode.custom; _config.domain.name = _arg1; }; }; _updateDomainName(); _debug.info((("setDomainName( " + _config.domainName) + " )")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_config.detectClientInfo); } private function _updateDomainName():void{ var _local1:String; if (_config.domain.mode == DomainNameMode.auto){ _local1 = _info.domainName; if (_local1.substring(0, 4) == "www."){ _local1 = _local1.substring(4); }; _config.domain.name = _local1; }; _config.domainName = _config.domain.name.toLowerCase(); _debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented")); return (null); } public function setCampContentKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCT = _arg1; _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCT]")); } else { _debug.info(_local2); }; } private function _handleCookie():void{ var _local1:String; var _local2:String; var _local3:Array; var _local4:String; if (_config.allowLinker){ }; if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){ if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){ _buffer.updateUTMA(_timeStamp); _noSessionInformation = true; }; if (_debug.verbose){ _debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek); }; } else { _debug.info("create a new utma", VisualDebugMode.advanced); _buffer.utma.domainHash = _domainHash; _buffer.utma.sessionId = _getUniqueSessionId(); _buffer.utma.firstTime = _timeStamp; _buffer.utma.lastTime = _timeStamp; _buffer.utma.currentTime = _timeStamp; _buffer.utma.sessionCount = 1; if (_debug.verbose){ _debug.info(_buffer.utma.toString(), VisualDebugMode.geek); }; _noSessionInformation = true; _isNewVisitor = true; }; if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){ if (_adSense.sid){ _buffer.utma.currentTime = Number(_adSense.sid); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "AdSense sid found\n"); _local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_isNewVisitor){ if (_adSense.sid){ _buffer.utma.lastTime = Number(_adSense.sid); if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "AdSense sid found (new visitor)\n"); _local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local2, VisualDebugMode.geek); }; }; if (_adSense.vid){ _local3 = _adSense.vid.split("."); _buffer.utma.sessionId = Number(_local3[0]); _buffer.utma.firstTime = Number(_local3[1]); if (_debug.verbose){ _local4 = ""; _local4 = (_local4 + "AdSense vid found (new visitor)\n"); _local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n")); _local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")")); _debug.info(_local4, VisualDebugMode.geek); }; }; if (_debug.verbose){ _debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek); }; }; }; _buffer.utmb.domainHash = _domainHash; if (isNaN(_buffer.utmb.trackCount)){ _buffer.utmb.trackCount = 0; }; if (isNaN(_buffer.utmb.token)){ _buffer.utmb.token = _config.tokenCliff; }; if (isNaN(_buffer.utmb.lastTime)){ _buffer.utmb.lastTime = _buffer.utma.currentTime; }; _buffer.utmc.domainHash = _domainHash; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced); _debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced); }; } public function setLocalServerMode():void{ _config.serverMode = ServerOperationMode.local; _debug.info("setLocalServerMode()"); } private function _renderMetricsSearchVariables(_arg1:String=""):Variables{ var _local2:Variables; var _local3:DocumentInfo; var _local4:Variables; var _local5:Variables; _local2 = new Variables(); _local2.URIencode = true; _local3 = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense); _debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek); if (_config.campaignTracking){ _local4 = _campaignInfo.toVariables(); }; _local5 = _browserInfo.toVariables(); _local2.join(_local3.toVariables(), _local5, _local4); return (_local2); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _config.organic.clearIgnoredReferrals(); } public function setCampSourceKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCSR = _arg1; _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCSR]")); } else { _debug.info(_local2); }; } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_config.localGIFpath); } public function setLocalGifPath(_arg1:String):void{ _config.localGIFpath = _arg1; _debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )")); } public function getVersion():String{ _debug.info("getVersion()"); return (_config.version); } public function setAllowAnchor(_arg1:Boolean):void{ _config.allowAnchor = _arg1; _debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )")); } private function _isNotGoogleSearch():Boolean{ var _local1:String; var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; _local1 = _config.domainName; _local2 = (_local1.indexOf("www.google.") < 0); _local3 = (_local1.indexOf(".google.") < 0); _local4 = (_local1.indexOf("google.") < 0); _local5 = (_local1.indexOf("google.org") > -1); return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5))); } public function setSampleRate(_arg1:Number):void{ if (_arg1 < 0){ _debug.warning("sample rate can not be negative, ignoring value."); } else { _config.sampleRate = _arg1; }; _debug.info((("setSampleRate( " + _config.sampleRate) + " )")); } private function _takeSample():Boolean{ if (_debug.verbose){ _debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek); }; return (((_visitCode() % 10000) < (_config.sampleRate * 10000))); } public function setCookiePath(_arg1:String):void{ _config.cookiePath = _arg1; _debug.info((("setCookiePath( " + _config.cookiePath) + " )")); } public function setAllowHash(_arg1:Boolean):void{ _config.allowDomainHash = _arg1; _debug.info((("setAllowHash( " + _config.allowDomainHash) + " )")); } private function _generateUserDataHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + _info.appName); _local1 = (_local1 + _info.appVersion); _local1 = (_local1 + _info.language); _local1 = (_local1 + _info.platform); _local1 = (_local1 + _info.userAgent.toString()); _local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth)); _local1 = (_local1 + _info.referrer); return (Utils.generateHash(_local1)); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _config.organic.addIgnoredKeyword(_arg1); } public function setLocalRemoteServerMode():void{ _config.serverMode = ServerOperationMode.both; _debug.info("setLocalRemoteServerMode()"); } public function cookiePathCopy(_arg1:String):void{ _debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented")); } public function setDetectTitle(_arg1:Boolean):void{ _config.detectTitle = _arg1; _debug.info((("setDetectTitle( " + _config.detectTitle) + " )")); } public function setCampTermKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCTR = _arg1; _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCTR]")); } else { _debug.info(_local2); }; } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_config.serverMode); } public function setCampNOKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCNO = _arg1; _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCNO]")); } else { _debug.info(_local2); }; } private function _trackMetrics(_arg1:String=""):void{ var _local2:Variables; var _local3:Variables; var _local4:Variables; var _local5:EventInfo; if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; if (((_x10Module) && (_x10Module.hasData()))){ _local5 = new EventInfo(false, _x10Module); _local3 = _local5.toVariables(); }; _local4 = _renderMetricsSearchVariables(_arg1); _local2.join(_local3, _local4); _gifRequest.send(_account, _local2); }; } public function setCampaignTrack(_arg1:Boolean):void{ _config.campaignTracking = _arg1; _debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )")); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _config.organic.addIgnoredReferral(_arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _config.organic.clearEngines(); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_config.detectFlash); } public function setCampMediumKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCMD = _arg1; _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCMD]")); } else { _debug.info(_local2); }; } private function _getUniqueSessionId():Number{ var _local1:Number; _local1 = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647); _debug.info(("Session ID: " + _local1), VisualDebugMode.geek); return (_local1); } private function _getDomainHash():Number{ if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){ _config.domainName = ""; return (1); }; _updateDomainName(); if (_config.allowDomainHash){ return (Utils.generateHash(_config.domainName)); }; return (1); } public function setSessionTimeout(_arg1:int):void{ _config.sessionTimeout = _arg1; _debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )")); } public function getAccount():String{ _debug.info("getAccount()"); return (_account); } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } public function setRemoteServerMode():void{ _config.serverMode = ServerOperationMode.remote; _debug.info("setRemoteServerMode()"); } } }//package com.google.analytics.v4
Section 130
//AnalyticsTracker (com.google.analytics.AnalyticsTracker) package com.google.analytics { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher { function set config(_arg1:Configuration):void; function isReady():Boolean; function get mode():String; function set debug(_arg1:DebugConfiguration):void; function get account():String; function set mode(_arg1:String):void; function get config():Configuration; function get debug():DebugConfiguration; function set account(_arg1:String):void; function get visualDebug():Boolean; function set visualDebug(_arg1:Boolean):void; } }//package com.google.analytics
Section 131
//API (com.google.analytics.API) package com.google.analytics { import com.google.analytics.utils.*; public class API { public static var version:Version = new Version(); version.major = 1; version.minor = 0; version.build = 1; version.revision = "$Rev: 234 $ ".split(" ")[1]; } }//package com.google.analytics
Section 132
//GATracker (com.google.analytics.GATracker) package com.google.analytics { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; import flash.display.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; import com.google.analytics.events.*; public class GATracker implements AnalyticsTracker { private var _adSense:AdSenseGlobals; private var _env:Environment; private var _visualDebug:Boolean; private var _idleTimer:IdleTimer; private var _debug:DebugConfiguration; private var _buffer:Buffer; private var _config:Configuration; private var _mode:String; private var _display:DisplayObject; private var _jsproxy:JavascriptProxy; private var _dom:HTMLDOM; private var _eventDispatcher:EventDispatcher; private var _ready:Boolean;// = false private var _gifRequest:GIFRequest; private var _account:String; private var _tracker:GoogleAnalyticsAPI; public static var version:Version = API.version; public static var autobuild:Boolean = true; public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){ _ready = false; super(); _display = _arg1; _eventDispatcher = new EventDispatcher(this); _tracker = new TrackerCache(); this.account = _arg2; this.mode = _arg3; this.visualDebug = _arg4; if (!_arg6){ this.debug = new DebugConfiguration(); }; if (!_arg5){ this.config = new Configuration(_arg6); }; if (autobuild){ _factory(); }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _tracker.link(_arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _tracker.addOrganic(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _tracker.setAllowLinker(_arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4)); } public function setCookieTimeout(_arg1:int):void{ _tracker.setCookieTimeout(_arg1); } public function trackTrans():void{ _tracker.trackTrans(); } public function trackPageview(_arg1:String=""):void{ _tracker.trackPageview(_arg1); } public function getClientInfo():Boolean{ return (_tracker.getClientInfo()); } public function setClientInfo(_arg1:Boolean):void{ _tracker.setClientInfo(_arg1); } public function get account():String{ return (_account); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _tracker.linkByPost(_arg1, _arg2); } public function getDetectTitle():Boolean{ return (_tracker.getDetectTitle()); } public function dispatchEvent(_arg1:Event):Boolean{ return (_eventDispatcher.dispatchEvent(_arg1)); } public function get config():Configuration{ return (_config); } public function set mode(_arg1:String):void{ _mode = _arg1; } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventDispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function setDetectFlash(_arg1:Boolean):void{ _tracker.setDetectFlash(_arg1); } public function resetSession():void{ _tracker.resetSession(); } public function setCampNameKey(_arg1:String):void{ _tracker.setCampNameKey(_arg1); } public function get debug():DebugConfiguration{ return (_debug); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } private function _bridgeFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account)); return (new Bridge(account, _debug, _jsproxy)); } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function clearIgnoredOrganic():void{ _tracker.clearIgnoredOrganic(); } public function set account(_arg1:String):void{ _account = _arg1; } public function setVar(_arg1:String):void{ _tracker.setVar(_arg1); } public function build():void{ if (!isReady()){ _factory(); }; } public function setDomainName(_arg1:String):void{ _tracker.setDomainName(_arg1); } public function createEventTracker(_arg1:String):EventTracker{ return (_tracker.createEventTracker(_arg1)); } public function set config(_arg1:Configuration):void{ _config = _arg1; } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8)); } public function setCampSourceKey(_arg1:String):void{ _tracker.setCampSourceKey(_arg1); } public function setCampContentKey(_arg1:String):void{ _tracker.setCampContentKey(_arg1); } public function willTrigger(_arg1:String):Boolean{ return (_eventDispatcher.willTrigger(_arg1)); } public function setLocalServerMode():void{ _tracker.setLocalServerMode(); } public function isReady():Boolean{ return (_ready); } public function getLocalGifPath():String{ return (_tracker.getLocalGifPath()); } public function setAllowAnchor(_arg1:Boolean):void{ _tracker.setAllowAnchor(_arg1); } public function clearIgnoredRef():void{ _tracker.clearIgnoredRef(); } public function get mode():String{ return (_mode); } public function set debug(_arg1:DebugConfiguration):void{ _debug = _arg1; } public function setLocalGifPath(_arg1:String):void{ _tracker.setLocalGifPath(_arg1); } public function getVersion():String{ return (_tracker.getVersion()); } public function setSampleRate(_arg1:Number):void{ _tracker.setSampleRate(_arg1); } public function setCookiePath(_arg1:String):void{ _tracker.setCookiePath(_arg1); } public function setAllowHash(_arg1:Boolean):void{ _tracker.setAllowHash(_arg1); } public function setCampNOKey(_arg1:String):void{ _tracker.setCampNOKey(_arg1); } public function addIgnoredOrganic(_arg1:String):void{ _tracker.addIgnoredOrganic(_arg1); } public function setLocalRemoteServerMode():void{ _tracker.setLocalRemoteServerMode(); } public function cookiePathCopy(_arg1:String):void{ _tracker.cookiePathCopy(_arg1); } private function _factory():void{ var _local1:GoogleAnalyticsAPI; var _local2:TrackerCache; _jsproxy = new JavascriptProxy(debug); if (visualDebug){ debug.layout = new Layout(debug, _display); debug.active = visualDebug; }; _local2 = (_tracker as TrackerCache); switch (mode){ case TrackerMode.BRIDGE: _local1 = _bridgeFactory(); break; case TrackerMode.AS3: default: _local1 = _trackerFactory(); }; if (!_local2.isEmpty()){ _local2.tracker = _local1; _local2.flush(); }; _tracker = _local1; _ready = true; dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this)); } public function setCampTermKey(_arg1:String):void{ _tracker.setCampTermKey(_arg1); } private function _trackerFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account)); _adSense = new AdSenseGlobals(debug); _dom = new HTMLDOM(debug); _dom.cacheProperties(); _env = new Environment("", "", "", debug, _dom); _buffer = new Buffer(config, debug, false); _gifRequest = new GIFRequest(config, debug, _buffer, _env); _idleTimer = new IdleTimer(config, debug, _display, _buffer); _env.url = _display.stage.loaderInfo.url; return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense)); } public function setDetectTitle(_arg1:Boolean):void{ _tracker.setDetectTitle(_arg1); } public function getServiceMode():ServerOperationMode{ return (_tracker.getServiceMode()); } public function clearOrganic():void{ _tracker.clearOrganic(); } public function setCampaignTrack(_arg1:Boolean):void{ _tracker.setCampaignTrack(_arg1); } public function addIgnoredRef(_arg1:String):void{ _tracker.addIgnoredRef(_arg1); } public function set visualDebug(_arg1:Boolean):void{ _visualDebug = _arg1; } public function setCampMediumKey(_arg1:String):void{ _tracker.setCampMediumKey(_arg1); } public function setSessionTimeout(_arg1:int):void{ _tracker.setSessionTimeout(_arg1); } public function getDetectFlash():Boolean{ return (_tracker.getDetectFlash()); } public function get visualDebug():Boolean{ return (_visualDebug); } public function getAccount():String{ return (_tracker.getAccount()); } public function hasEventListener(_arg1:String):Boolean{ return (_eventDispatcher.hasEventListener(_arg1)); } public function setRemoteServerMode():void{ _tracker.setRemoteServerMode(); } } var _local1:* = ServerOperationMode; return (_local1); }//package com.google.analytics
Section 133
//HighscoreButton (com.sikids.syndicatedGameApiAs3.HighscoreButton) package com.sikids.syndicatedGameApiAs3 { import flash.events.*; import flash.display.*; public class HighscoreButton extends SimpleButton { public function HighscoreButton(){ addEventListener(MouseEvent.CLICK, onClick); } private function onScoreSubmitted(_arg1:Event):void{ visible = false; } public function onClick(_arg1:MouseEvent){ if (stage){ HighscoreDialogBox.show(stage); }; HighscoreDialogBox.getInstance().addEventListener("scoreSubmitted", onScoreSubmitted); } } }//package com.sikids.syndicatedGameApiAs3
Section 134
//HighscoreDialogBox (com.sikids.syndicatedGameApiAs3.HighscoreDialogBox) package com.sikids.syndicatedGameApiAs3 { import flash.net.*; import flash.events.*; import flash.display.*; import flash.text.*; public class HighscoreDialogBox extends MovieClip { public var usernameText:TextField; public var okButton:SimpleButton; public var cancelButton:SimpleButton; public var submitButton:SimpleButton; public var scoreText:TextField; public static const CENTER = true; public static const YPOS = 10; public static const XPOS = 10; public static var instance:HighscoreDialogBox = null; public static var BLOCKER_ALPHA = 0.3; public static var BLOCKER = false; public static var BLOCKER_COLOR = 51; public function HighscoreDialogBox(_arg1:Stage){ addFrameScript(0, frame1, 10, frame11, 11, frame12, 22, frame23, 85, frame86); usernameText.restrict = "A-Za-z0-9"; if (SiKidsApi.USER_UNKNOWN){ usernameEditable(true, _arg1); } else { usernameEditable(SiKidsApi.USER_EDITABLE, _arg1); }; if (SiKidsApi.SCORE){ this["scoreText"].text = SiKidsApi.SCORE.toString(); }; if (SiKidsApi.USER_NAME){ this["usernameText"].text = SiKidsApi.USER_NAME.toString(); }; } private function validateUsername(){ return (this["usernameText"].text.match(/\w+/)); } function frame86(){ stop(); finished(); } private function submit(_arg1:MouseEvent){ if (!validateUsername()){ gotoAndStop("USERNAME_ERROR"); } else { sendData(); gotoAndPlay("SENDING"); }; } private function okButtonClicked(_arg1:MouseEvent){ finished(); } function frame12(){ stop(); } private function usernameEditable(_arg1:Boolean, _arg2:Stage){ this["usernameText"].type = (_arg1) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; this["usernameText"].selectable = _arg1; if (_arg1){ _arg2.focus = this["usernameText"]; }; } function frame1(){ this["submitButton"].addEventListener(MouseEvent.CLICK, submit); this["cancelButton"].addEventListener(MouseEvent.CLICK, cancel); } function frame23(){ initSent(); stop(); } private function finished(){ hide(); } function frame11(){ stop(); } private function sendData(){ var _local1:*; var _local2:*; var _local3:*; _local1 = this["usernameText"].text; _local2 = SiKidsApi.SCORE.toString(); _local3 = SiKidsApi.getInstance(); _local3.submit(_local1, _local2); } private function cancel(_arg1:MouseEvent){ hide(); } public function initSent(){ okButton.addEventListener(MouseEvent.CLICK, okButtonClicked); dispatchEvent(new Event("scoreSubmitted")); } public static function hide(){ var _local1:Stage; if (instance){ _local1 = instance.stage; if (_local1){ _local1.removeChild(instance); instance = null; }; }; } public static function getInstance():HighscoreDialogBox{ return (instance); } public static function show(_arg1:Stage){ if (((_arg1) && (!(instance)))){ instance = new HighscoreDialogBox(_arg1); _arg1.addChild(instance); if (SiKidsApi.USER_FLASHVAR){ SiKidsApi.USER_NAME = _arg1.loaderInfo.parameters[SiKidsApi.USER_FLASHVAR]; }; }; } } }//package com.sikids.syndicatedGameApiAs3
Section 135
//MoreGamesButton (com.sikids.syndicatedGameApiAs3.MoreGamesButton) package com.sikids.syndicatedGameApiAs3 { import flash.events.*; import flash.display.*; public class MoreGamesButton extends SimpleButton { public function MoreGamesButton(){ addEventListener(MouseEvent.CLICK, click); } public function click(_arg1:MouseEvent){ SiKidsApi.getInstance().gotoMoreGames(); } } }//package com.sikids.syndicatedGameApiAs3
Section 136
//Preroll (com.sikids.syndicatedGameApiAs3.Preroll) package com.sikids.syndicatedGameApiAs3 { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; public class Preroll extends MovieClip { public var btn_Cover:SimpleButton; private var siKidsApi:SiKidsApi; private var timer:Timer; public var debugSkipPrerollBtn:SimpleButton; public var btnCover:SimpleButton; public function Preroll(){ addFrameScript(149, frame150); btnCover.addEventListener(MouseEvent.CLICK, syndicationPrerollClick); buttonMode = true; timer = new Timer((6 * 1000), 1); timer.addEventListener(TimerEvent.TIMER, onTimer); timer.start(); if (debugSkipPrerollBtn != null){ debugSkipPrerollBtn.addEventListener(MouseEvent.CLICK, onSkipButtonClicked); }; } private function onSkipButtonClicked(_arg1:Event):void{ finish(); } private function syndicationPrerollClick(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest(SiKidsApi.getInstance().sik_games_link("pre")); navigateToURL(_local2, "_blank"); } private function finish(){ timer.stop(); if (parent != null){ (parent as MovieClip).play(); }; } private function onTimer(_arg1:Event){ finish(); } function frame150(){ stop(); } } }//package com.sikids.syndicatedGameApiAs3
Section 137
//SiKidsApi (com.sikids.syndicatedGameApiAs3.SiKidsApi) package com.sikids.syndicatedGameApiAs3 { import flash.net.*; public class SiKidsApi { public var SIKGamesURL:String; public var hostSite:String; public var other:String; public var gamenid:String; public var url:String; public var hashKey:String; public var cypherID:String; public var submitURL:String; public var gamename:String; static const defaultSubmitURL = "http://www.sikids.com/sikscores/offsite"; static const defaultSIKGamesURL = "http://www.sikids.com/games"; static const defaultOther:String = ""; static const defaultCypherID:String = "0"; public static var SUBMIT_URL = "http://www.sikids.com/sikscores/offsite"; public static var USER_FLASHVAR:String = null; public static var SCORE:Number; public static var instance:SiKidsApi = null; public static var USER_UNKNOWN:Boolean = true; public static var USER_EDITABLE:Boolean = true; public static var USER_NAME:String = ""; public function getHostSite(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; _local2 = url; _local3 = _local2.split("/"); if (_local3.length < 3){ _local1 = "unknown"; } else { _local4 = _local3[2].split("."); if (_local4.length == 0){ _local1 = "unknown"; } else { if (_local4.length == 1){ _local1 = _local4[0]; } else { _local1 = _local4[(_local4.length - 2)]; }; }; }; if (_local1.length == 0){ _local1 = "unknown"; }; return (_local1); } public function gotoMoreGames(){ var _local1:URLRequest; _local1 = new URLRequest(sik_games_link("more")); navigateToURL(_local1, "_blank"); } function enc_utf8(_arg1){ var _local2:*; var _local3:*; var _local4:*; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _arg1.charCodeAt(_local3); if (_local4 < 128){ _local2 = (_local2 + String.fromCharCode(_local4)); } else { if ((((_local4 > 127)) && ((_local4 < 0x0800)))){ _local2 = (_local2 + String.fromCharCode(((_local4 >> 6) | 192))); _local2 = (_local2 + String.fromCharCode(((_local4 & 63) | 128))); } else { _local2 = (_local2 + String.fromCharCode(((_local4 >> 12) | 224))); _local2 = (_local2 + String.fromCharCode((((_local4 >> 6) & 63) | 128))); _local2 = (_local2 + String.fromCharCode(((_local4 & 63) | 128))); }; }; _local3++; }; return (_local2); } public function submit(_arg1:String, _arg2){ var _local3:String; var _local4:String; var _local5:*; var _local6:URLVariables; var _local7:URLRequest; _local3 = MD5(((((((hashKey + ";") + gamenid) + ";") + _arg1) + ";") + _arg2.toString())); _local4 = sik_xid("post"); _local5 = Math.floor((Math.random() * 1000000000)); _local6 = new URLVariables(); _local6.nid = gamenid; _local6.n = _arg1; _local6.s = _arg2; _local6.c = _local3; _local6.r = _local5; _local6.cid = cypherID; _local6.m = other; _local6.xid = _local4; _local7 = new URLRequest(submitURL); _local7.data = _local6; _local7.method = URLRequestMethod.POST; navigateToURL(_local7, "_blank"); } public function init(_arg1:String, _arg2:String, _arg3, _arg4:String, _arg5:String="0", _arg6:String="", _arg7:String="http://www.sikids.com/sikscores/offsite", _arg8:String="http://www.sikids.com/games"){ url = _arg1; gamename = _arg2; gamenid = _arg3.toString(); hashKey = _arg4; cypherID = _arg5; other = _arg6; submitURL = _arg7; SIKGamesURL = _arg8; hostSite = getHostSite(); } public function sik_games_link(_arg1){ return (((SIKGamesURL + "?xid=") + sik_xid(_arg1))); } public function sik_xid(_arg1){ var _local2:*; var _local3:*; _local2 = hostSite; _local3 = (((100 - 2) + gamenid.length) + _arg1.length); if (hostSite.length > _local3){ _local2 = hostSite.substr(0, _local3); }; return (((((_local2 + "|") + gamenid) + "|") + _arg1)); } function MD5(_arg1){ var RotateLeft:Function; var AddUnsigned:Function; var F:Function; var G:Function; var H:Function; var I:Function; var FF:Function; var GG:Function; var HH:Function; var II:Function; var ConvertToWordArray:Function; var WordToHex:Function; var x:*; var k:*; var AA:*; var BB:*; var CC:*; var DD:*; var a:*; var b:*; var c:*; var d:*; var S11:*; var S12:*; var S13:*; var S14:*; var S21:*; var S22:*; var S23:*; var S24:*; var S31:*; var S32:*; var S33:*; var S34:*; var S41:*; var S42:*; var S43:*; var S44:*; var temp:*; var instring = _arg1; RotateLeft = function (_arg1, _arg2){ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); }; AddUnsigned = function (_arg1, _arg2){ var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; _local5 = (_arg1 & 2147483648); _local6 = (_arg2 & 2147483648); _local3 = (_arg1 & 1073741824); _local4 = (_arg2 & 1073741824); _local7 = ((_arg1 & 1073741823) + (_arg2 & 1073741823)); if ((_local3 & _local4)){ return ((((_local7 ^ 2147483648) ^ _local5) ^ _local6)); }; if ((_local3 | _local4)){ if ((_local7 & 1073741824)){ return ((((_local7 ^ 3221225472) ^ _local5) ^ _local6)); }; return ((((_local7 ^ 1073741824) ^ _local5) ^ _local6)); //unresolved jump }; return (((_local7 ^ _local5) ^ _local6)); }; F = function (_arg1, _arg2, _arg3){ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); }; G = function (_arg1, _arg2, _arg3){ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); }; H = function (_arg1, _arg2, _arg3){ return (((_arg1 ^ _arg2) ^ _arg3)); }; I = function (_arg1, _arg2, _arg3){ return ((_arg2 ^ (_arg1 | ~(_arg3)))); }; FF = function (_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){ _arg1 = AddUnsigned(_arg1, AddUnsigned(AddUnsigned(F(_arg2, _arg3, _arg4), _arg5), _arg7)); return (AddUnsigned(RotateLeft(_arg1, _arg6), _arg2)); }; GG = function (_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){ _arg1 = AddUnsigned(_arg1, AddUnsigned(AddUnsigned(G(_arg2, _arg3, _arg4), _arg5), _arg7)); return (AddUnsigned(RotateLeft(_arg1, _arg6), _arg2)); }; HH = function (_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){ _arg1 = AddUnsigned(_arg1, AddUnsigned(AddUnsigned(H(_arg2, _arg3, _arg4), _arg5), _arg7)); return (AddUnsigned(RotateLeft(_arg1, _arg6), _arg2)); }; II = function (_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){ _arg1 = AddUnsigned(_arg1, AddUnsigned(AddUnsigned(I(_arg2, _arg3, _arg4), _arg5), _arg7)); return (AddUnsigned(RotateLeft(_arg1, _arg6), _arg2)); }; ConvertToWordArray = function (_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; _local3 = _arg1.length; _local4 = (_local3 + 8); _local5 = (((_local3 + 8) - (_local4 % 64)) / 64); _local6 = ((_local5 + 1) * 16); _local7 = new Array((_local6 - 1)); _local8 = 0; _local9 = 0; while (_local9 < _local3) { _local2 = ((_local9 - (_local9 % 4)) / 4); _local8 = ((_local9 % 4) * 8); _local7[_local2] = (_local7[_local2] | (_arg1.charCodeAt(_local9) << _local8)); _local9++; }; _local2 = ((_local9 - (_local9 % 4)) / 4); _local8 = ((_local9 % 4) * 8); _local7[_local2] = (_local7[_local2] | (128 << _local8)); _local7[(_local6 - 2)] = (_local3 << 3); _local7[(_local6 - 1)] = (_local3 >>> 29); return (_local7); }; WordToHex = function (_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local2 = ""; _local3 = ""; _local5 = 0; while (_local5 <= 3) { _local4 = ((_arg1 >>> (_local5 * 8)) & 0xFF); _local3 = ("0" + _local4.toString(16)); _local2 = (_local2 + _local3.substr((_local3.length - 2), 2)); _local5++; }; return (_local2); }; x = new Array(); S11 = 7; S12 = 12; S13 = 17; S14 = 22; S21 = 5; S22 = 9; S23 = 14; S24 = 20; S31 = 4; S32 = 11; S33 = 16; S34 = 23; S41 = 6; S42 = 10; S43 = 15; S44 = 21; instring = enc_utf8(instring); x = ConvertToWordArray(instring); a = 1732584193; b = 4023233417; c = 2562383102; d = 271733878; k = 0; while (k < x.length) { AA = a; BB = b; CC = c; DD = d; a = FF(a, b, c, d, x[(k + 0)], S11, 3614090360); d = FF(d, a, b, c, x[(k + 1)], S12, 3905402710); c = FF(c, d, a, b, x[(k + 2)], S13, 606105819); b = FF(b, c, d, a, x[(k + 3)], S14, 3250441966); a = FF(a, b, c, d, x[(k + 4)], S11, 4118548399); d = FF(d, a, b, c, x[(k + 5)], S12, 1200080426); c = FF(c, d, a, b, x[(k + 6)], S13, 2821735955); b = FF(b, c, d, a, x[(k + 7)], S14, 4249261313); a = FF(a, b, c, d, x[(k + 8)], S11, 1770035416); d = FF(d, a, b, c, x[(k + 9)], S12, 2336552879); c = FF(c, d, a, b, x[(k + 10)], S13, 4294925233); b = FF(b, c, d, a, x[(k + 11)], S14, 2304563134); a = FF(a, b, c, d, x[(k + 12)], S11, 1804603682); d = FF(d, a, b, c, x[(k + 13)], S12, 4254626195); c = FF(c, d, a, b, x[(k + 14)], S13, 2792965006); b = FF(b, c, d, a, x[(k + 15)], S14, 1236535329); a = GG(a, b, c, d, x[(k + 1)], S21, 4129170786); d = GG(d, a, b, c, x[(k + 6)], S22, 3225465664); c = GG(c, d, a, b, x[(k + 11)], S23, 643717713); b = GG(b, c, d, a, x[(k + 0)], S24, 3921069994); a = GG(a, b, c, d, x[(k + 5)], S21, 3593408605); d = GG(d, a, b, c, x[(k + 10)], S22, 38016083); c = GG(c, d, a, b, x[(k + 15)], S23, 3634488961); b = GG(b, c, d, a, x[(k + 4)], S24, 3889429448); a = GG(a, b, c, d, x[(k + 9)], S21, 568446438); d = GG(d, a, b, c, x[(k + 14)], S22, 3275163606); c = GG(c, d, a, b, x[(k + 3)], S23, 4107603335); b = GG(b, c, d, a, x[(k + 8)], S24, 1163531501); a = GG(a, b, c, d, x[(k + 13)], S21, 2850285829); d = GG(d, a, b, c, x[(k + 2)], S22, 4243563512); c = GG(c, d, a, b, x[(k + 7)], S23, 1735328473); b = GG(b, c, d, a, x[(k + 12)], S24, 2368359562); a = HH(a, b, c, d, x[(k + 5)], S31, 4294588738); d = HH(d, a, b, c, x[(k + 8)], S32, 2272392833); c = HH(c, d, a, b, x[(k + 11)], S33, 1839030562); b = HH(b, c, d, a, x[(k + 14)], S34, 4259657740); a = HH(a, b, c, d, x[(k + 1)], S31, 2763975236); d = HH(d, a, b, c, x[(k + 4)], S32, 1272893353); c = HH(c, d, a, b, x[(k + 7)], S33, 4139469664); b = HH(b, c, d, a, x[(k + 10)], S34, 3200236656); a = HH(a, b, c, d, x[(k + 13)], S31, 681279174); d = HH(d, a, b, c, x[(k + 0)], S32, 3936430074); c = HH(c, d, a, b, x[(k + 3)], S33, 3572445317); b = HH(b, c, d, a, x[(k + 6)], S34, 76029189); a = HH(a, b, c, d, x[(k + 9)], S31, 3654602809); d = HH(d, a, b, c, x[(k + 12)], S32, 3873151461); c = HH(c, d, a, b, x[(k + 15)], S33, 530742520); b = HH(b, c, d, a, x[(k + 2)], S34, 3299628645); a = II(a, b, c, d, x[(k + 0)], S41, 4096336452); d = II(d, a, b, c, x[(k + 7)], S42, 1126891415); c = II(c, d, a, b, x[(k + 14)], S43, 2878612391); b = II(b, c, d, a, x[(k + 5)], S44, 4237533241); a = II(a, b, c, d, x[(k + 12)], S41, 1700485571); d = II(d, a, b, c, x[(k + 3)], S42, 2399980690); c = II(c, d, a, b, x[(k + 10)], S43, 4293915773); b = II(b, c, d, a, x[(k + 1)], S44, 2240044497); a = II(a, b, c, d, x[(k + 8)], S41, 1873313359); d = II(d, a, b, c, x[(k + 15)], S42, 4264355552); c = II(c, d, a, b, x[(k + 6)], S43, 2734768916); b = II(b, c, d, a, x[(k + 13)], S44, 1309151649); a = II(a, b, c, d, x[(k + 4)], S41, 4149444226); d = II(d, a, b, c, x[(k + 11)], S42, 3174756917); c = II(c, d, a, b, x[(k + 2)], S43, 718787259); b = II(b, c, d, a, x[(k + 9)], S44, 3951481745); a = AddUnsigned(a, AA); b = AddUnsigned(b, BB); c = AddUnsigned(c, CC); d = AddUnsigned(d, DD); k = (k + 16); }; temp = (((WordToHex(a) + WordToHex(b)) + WordToHex(c)) + WordToHex(d)); return (temp.toLowerCase()); } public static function getInstance():SiKidsApi{ if (instance == null){ instance = new (SiKidsApi); }; return (instance); } } }//package com.sikids.syndicatedGameApiAs3
Section 138
//Backbtn_26 (grMain_m_fla.Backbtn_26) package grMain_m_fla { import flash.display.*; public dynamic class Backbtn_26 extends MovieClip { public function Backbtn_26(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 139
//BgBlock_1 (grMain_m_fla.BgBlock_1) package grMain_m_fla { import flash.display.*; public dynamic class BgBlock_1 extends MovieClip { public function BgBlock_1(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 140
//CreditsBtn_16 (grMain_m_fla.CreditsBtn_16) package grMain_m_fla { import flash.display.*; public dynamic class CreditsBtn_16 extends MovieClip { public function CreditsBtn_16(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 141
//inGameUi_40 (grMain_m_fla.inGameUi_40) package grMain_m_fla { import flash.display.*; import flash.text.*; public dynamic class inGameUi_40 extends MovieClip { public var timer6Tx:TextField; public var timer1Tx:TextField; public var timer0Tx:TextField; public var lapTx:TextField; public var timer4Tx:TextField; public var powerUpSelector:MovieClip; public var timer3Tx:TextField; public var timer7Tx:TextField; } }//package grMain_m_fla
Section 142
//innerBtntx_38 (grMain_m_fla.innerBtntx_38) package grMain_m_fla { import flash.display.*; import flash.text.*; public dynamic class innerBtntx_38 extends MovieClip { public var tx:TextField; } }//package grMain_m_fla
Section 143
//InstructionsBtn_14 (grMain_m_fla.InstructionsBtn_14) package grMain_m_fla { import flash.display.*; public dynamic class InstructionsBtn_14 extends MovieClip { public function InstructionsBtn_14(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 144
//Kill5btn_20 (grMain_m_fla.Kill5btn_20) package grMain_m_fla { import flash.display.*; public dynamic class Kill5btn_20 extends MovieClip { public function Kill5btn_20(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 145
//LevelSelect1Btn_37 (grMain_m_fla.LevelSelect1Btn_37) package grMain_m_fla { import flash.display.*; public dynamic class LevelSelect1Btn_37 extends MovieClip { public var inner:MovieClip; public function LevelSelect1Btn_37(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 146
//MainTimeline (grMain_m_fla.MainTimeline) package grMain_m_fla { import flash.net.*; import flash.events.*; import flash.display.*; import com.sikids.syndicatedGameApiAs3.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import org.papervision3d.core.math.*; import gs.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.view.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.materials.shaders.*; import flash.text.*; import org.papervision3d.view.layer.*; import org.papervision3d.objects.special.*; import flash.utils.*; import flash.filters.*; import org.papervision3d.materials.special.*; import org.papervision3d.events.*; import mochi.as3.*; import Box2D.Common.*; import flash.media.*; import org.papervision3d.core.utils.*; import org.papervision3d.render.*; import org.papervision3d.objects.parsers.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.scenes.*; import org.papervision3d.cameras.*; import org.papervision3d.lights.*; import com.google.analytics.components.*; import flash.ui.*; import flash.external.*; import flash.system.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.printing.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public var powerUpStack; public var tileSetStack; public var kill5LogoBtn:MovieClip; public var gameUrl:String; public var cloudsMaterial; public var world2Level1; public var charTextures; public var world2Level2; public var world2Level3; public var gameHolder:MovieClip; public var smallStarMaterial; public var CUBE; public var thrust:Number; public var batMaterial; public var skipBtn:MovieClip; public var roadEmptyMaterial3; public var m_iterations:int; public var mouseD:Boolean; public var roadEmptyMaterial2; public var editModeBtn:MovieClip; public var roadEmptyMaterial1; public var mummyMaterial; public var tileStack; public var finished:Boolean; public var scene:Scene3D; public var roadEndMaterial1; public var roadEndMaterial2; public var roadEndMaterial3; public var sfxTransform; public var graniteTMaterial; public var hulkMaterial; public var world2LevelStack; public var viewport:Viewport3D; public var newWp; public var world2SelectBtn:MovieClip; public var renderer:BasicRenderEngine; public var gameId:int; public var speedUpSnd; public var treesMaterial; public var redList; public var characterStack; public var hitSnd; public var world1Level1; public var world1Level2; public var nextPowerUpTimeoutId; public var replayBtn:MovieClip; public var output:TextField; public var world1Level3; public var GAME_OVER; public var circleDef:b2CircleDef; public var roadTMaterial2; public var roadTMaterial3; public var roadTMaterial1; public var cpBeepSnd; public var currentCharTex; public var soundFxChan:SoundChannel; public var ALL_MODELS_LOADED; public var PRACTICE; public var drag:Boolean; public var box2dCanvas:Sprite; public var m_world:b2World; public var speedUpTex2; public var lightningBlast:MovieClip; public var gameMusic; public var btnMoreGames:MoreGamesButton; public var WAIT; public var modelTile; public var thrustDamping:Number; public var starMaterial; public var outputBtn:MovieClip; public var materialStack; public var hiBtn:MovieClip; public var world1LevelStack; public var powerUp3; public var gameName; public var powerUp2; public var mode; public var powerUp1; public var roadCornerMaterial1; public var roadCornerMaterial3; public var bodyWallDef:b2BodyDef; public var roadCornerMaterial2; public var world3SelectBtn:MovieClip; public var GAME_QUALITY; public var bombMaterial; public var level1Btn:MovieClip; public var musicBtn:MovieClip; public var screenNameTx:TextField; public var EDIT; public var kart; public var explosionSnd; public var worldStack; public var bgColor:MovieClip; public var playerSettings; public var returnToMenuBtn:MovieClip; public var modelHolder; public var PLANE; public var lightningSnd; public var startTime; public var kartDae:XML; public var boxDef:b2BoxDef; public var level2Btn:MovieClip; public var charSelectModel; public var COLLADASCALE; public var lastName; public var charMesh; public var lowBtn:MovieClip; public var nextBtn:MovieClip; public var tileTypes; public var hashKey:String; public var instructionsBtn:MovieClip; public var RACECAR1MODEL; public var dracMaterial; public var docMaterial; public var graniteMaterial; public var startBtn:MovieClip; public var level3Btn:MovieClip; public var redColorMat; public var leftArrowBtn:MovieClip; public var starPowerUpSnd; public var blockList1; public var blockList2; public var powerUpSnd; public var m_timeStep:Number; public var IN_GAME:int; public var soundBtn:MovieClip; public var musicTransform; public var blockList3; public var btnSubmitHighScore:HighscoreButton; public var trackMaterial3; public var editMode:int; public var trackMaterial1; public var coinMaterial; public var player; public var trackMaterial2; public var maxThrust:Number; public var onTop:MovieClip; public var masterCharMesh; public var loaderBar:MovieClip; public var bodyDef:b2BodyDef; public var flatGame:Object; public var waypointStack; public var musicChan:SoundChannel; public var RACECAR2MODEL; public var charId; public var practiceBtn:MovieClip; public var materialListStack; public var camera:SpringCamera3D; public var MAP_EDIT:int; public var marker1; public var tracker:FlashTracker; public var marker3; public var marker4; public var marker2; public var wpStack; public var world3LevelStack; public var roadVMaterial1; public var roadVMaterial2; public var spaceLock; public var roadVMaterial3; public var numberCount; public var kartMaterial; public var creditsBtn:MovieClip; public var explosionMaterial; public var outputTx:TextField; public var rotationSpeed:Number; public var TIME_TO_SUBMIT; public var PLAY; public var world3Level1; public var world3Level2; public var world3Level3; public var backWorldBtn:MovieClip; public var hitSndWait; public var PLACE_ROAD:int; public var endBtn:MovieClip; public var speedUpTex; public var badCloudsMaterial; public var MODELS_LOADED; public var masterKart; public var redAlphaMaterial; public var characterDae:XML; public var descriptionTx:TextField; public var world1SelectBtn:MovieClip; public var roadHMaterial1; public var roadHMaterial2; public var roadHMaterial3; public var timeExpired; public var inGameUi:MovieClip; public var trackId; public var rightArrowBtn:MovieClip; public var particleStack; public var QUIT_GAME; public var game:Object; public var backBtn:MovieClip; public var results:MovieClip; public function MainTimeline(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 6, frame7, 7, frame8, 12, frame13, 16, frame17, 30, frame31, 36, frame37, 53, frame54, 59, frame60, 71, frame72, 81, frame82, 99, frame100, 108, frame109, 116, frame117); __setProp_tracker_Scene1_GAFORFLASH_1(); } public function startTimer(){ var _local1:*; var _local2:*; _local1 = new Date(); _local2 = _local1.getTime(); startTime = _local2; timeExpired = false; } public function sampleGameSiKidsAPI(){ var _local1:*; var _local2:int; var _local3:String; var _local4:String; _local1 = "ghoulracers"; _local2 = 13108; _local3 = "7cf8b5fbe65ed78da52a2c071e9488cc"; _local4 = loaderInfo.loaderURL; SiKidsApi.getInstance().init(_local4, _local1, _local2, _local3); SiKidsApi.USER_NAME = ""; } public function backBtnClickedCharSelect(_arg1:MouseEvent){ removeEventListener(Event.ENTER_FRAME, characterSelectLoop); clearPv(); gotoMenu(); } public function gotoGame(){ gotoAndStop("game"); } public function loader(_arg1:Event){ var _local2:*; var _local3:*; var _local4:*; _local2 = stage.loaderInfo.bytesTotal; _local3 = stage.loaderInfo.bytesLoaded; _local4 = Math.round(((_local3 * 100) / _local2)); loaderBar.scaleX = (_local4 / 100); if ((((((_local3 >= _local2)) && ((_local3 > 4)))) && ((finished == false)))){ setTimeout(endPreload, 2000); finished = true; }; } public function giveNpcRandomPowerUp(_arg1){ var _local2:*; var _local3:*; if (!game.raceOver){ _local2 = int((Math.random() * 3)); _local3 = (500 + int((Math.random() * 500))); _arg1.params.powerUp = powerUpStack[_local2]; debug(("npc got " + _arg1.params.powerUp.name)); addTimeout(setTimeout(_arg1.params.powerUp.onUse, _local3, _arg1)); }; } public function makeBombFullyArmed(_arg1){ if (!game.raceOver){ _arg1.params.fullyArmed = true; }; } public function getGhostData(_arg1){ var _local2:URLRequest; var _local3:URLVariables; var _local4:URLLoader; trace("GETTING GHOST DATA"); _local2 = new URLRequest("http://kill5.com/games/ghoulRacers/getGhoulTrack.php"); _local2.method = URLRequestMethod.POST; _local3 = new URLVariables(); _local3.trackId = _arg1; _local2.data = _local3; _local4 = new URLLoader(_local2); _local4.addEventListener(Event.COMPLETE, onCompleteGetTrack); _local4.dataFormat = URLLoaderDataFormat.TEXT; _local4.load(_local2); _local4.addEventListener(IOErrorEvent.IO_ERROR, onGetGhostDataError); } public function createFlatGame(){ flatGame = new Object(); flatGame.sprite = new Sprite(); addChild(flatGame.sprite); } public function sendGhostData(_arg1){ var _local2:URLRequest; var _local3:URLVariables; var _local4:URLLoader; trace("SENDING GHOST DATA"); _local2 = new URLRequest("http://kill5.com/games/ghoulRacers/sendGhoulHiScore.php"); _local2.method = URLRequestMethod.POST; _local3 = new URLVariables(); _local3.trackId = playerSettings.levelId; _local3.name = playerSettings.screenName; _local3.trackTime = game.timeInMs; _local3.trackData = _arg1.ghostDataStr; _local3.playerCharId = int(playerSettings.playerCharId); trace(("screenName " + playerSettings.screenName)); trace(("time " + _local3.trackTime)); trace(("character " + playerSettings.playerCharId)); _local2.data = _local3; _local4 = new URLLoader(_local2); _local4.addEventListener(Event.COMPLETE, onComplete); _local4.dataFormat = URLLoaderDataFormat.TEXT; _local4.load(_local2); } public function setGameLoop(){ addEventListener(Event.ENTER_FRAME, gameLoop); } public function updateGameObjects(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = game.gameObjectStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.gameObjectStack[_local1]; _local3.behaviour.apply(null, [_local3]); if (_local3.init == null){ _local3.init = true; }; _local1++; }; } public function gotoLevelSelect(){ gotoAndStop("levelSelect"); } public function onComplete(_arg1:Event):void{ trace("SEND COMPLETE"); trace(_arg1.target.data); } public function setLevel(_arg1){ levelReady(_arg1); } public function updateTiles(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local2 = 0; _local3 = game.tileStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.tileStack[_local2]; _local5 = distance(_arg1.model, _local4.model); if (_local5 > 600){ _local4.model.visible = false; } else { _local4.model.visible = true; }; _local2++; }; if (_local4.box != null){ _local4.box.WakeUp(); }; } public function startBtnClicked(_arg1){ mode = PLAY; gotoCharacterSelect(); } public function masterKartLoaded(_arg1){ masterKart.replaceMaterialByName(kartMaterial, "SurfaceMaterial00"); masterCharMesh = new DAE(); masterCharMesh.load(characterDae, null); masterCharMesh.addEventListener(FileLoadEvent.LOAD_COMPLETE, masterCharMeshLoaded); } public function charMeshLoaded(_arg1){ } public function killObject(_arg1){ if (!game.raceOver){ _arg1.model.visible = false; _arg1.killMe = true; }; } public function newParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10){ var _local11:*; _local11 = new Object(); _local11.model = new BillBoard(_arg9, _arg4, _arg5, 2, 2); _local11.model.x = _arg1; _local11.model.y = _arg2; _local11.model.z = _arg3; _local11.xSpeed = _arg6; _local11.ySpeed = _arg7; _local11.zSpeed = _arg8; _local11.lifeSpan = _arg10; _local11.active = true; scene.addChild(_local11.model); particleStack.push(_local11); } public function addGameObjectToLoadStack(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, _arg17, _arg18){ var _local19:*; _local19 = {label:_arg1, behaviour:_arg2, modelToUse:_arg3, width:_arg4, height:_arg5, startX:_arg6, startY:_arg7, startZ:_arg8, speedX:_arg9, speedY:_arg10, params:_arg12, colour:_arg13, moveable:_arg14, startAngle:_arg15, xOffset:_arg16, yOffset:_arg17, zOffset:_arg18}; game.gameObjectLoadStack.push(_local19); } public function checkForEndOfRace(){ if ((((game.playersFinished.length >= 3)) && ((game.complete == false)))){ game.complete = true; game.raceOver = true; showResults(); }; } function frame3(){ createMaterials(); createMasterModels(); } public function keyDownHandler(_arg1:KeyboardEvent){ var _local2:Number; _local2 = _arg1.keyCode; if (_local2 == 37){ game.keys.left = true; }; if (_local2 == 39){ game.keys.right = true; }; if (_local2 == 90){ game.keys.buttonA = true; }; if (_local2 == 88){ game.keys.buttonB = true; }; if (_local2 == 67){ game.keys.buttonC = true; }; if (_local2 == 38){ game.keys.up = true; }; if (_local2 == 40){ game.keys.down = true; }; if (_local2 == 32){ trace("A"); game.keys.a = true; }; } public function setMapData(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:*; var _local14:*; var _local15:*; var _local16:*; var _local17:*; var _local18:*; var _local19:*; var _local20:*; var _local21:*; var _local22:*; var _local23:*; var _local24:*; var _local25:*; var _local26:*; var _local27:*; var _local28:*; var _local29:*; var _local30:*; var _local31:*; var _local32:*; var _local33:*; var _local34:*; var _local35:*; var _local36:*; var _local37:*; var _local38:*; var _local39:*; var _local40:*; var _local41:*; var _local42:*; var _local43:*; var _local44:*; var _local45:*; var _local46:*; var _local47:*; var _local48:*; var _local49:*; var _local50:*; var _local51:*; var _local52:*; _local44 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 5, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 15, 15, 5, 0, 0, 0, 6, 15, 15, 8, 14, 0, 0, 0, 0]; _local4 = [0, 0, 16, 14, 0, 7, 13, 13, 15, 15, 15, 8, 13, 13, 8, 14, 0, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 7, 13, 13, 4, 0, 0, 16, 14, 0, 0, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0]; _local7 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0, 0, 0]; _local8 = [0, 0, 16, 8, 15, 15, 15, 15, 15, 15, 15, 15, 2, 15, 8, 14, 0, 0, 0, 0]; _local9 = [0, 0, 7, 13, 13, 13, 13, 13, 13, 13, 13, 4, 0, 7, 13, 4, 0, 0, 0, 0]; _local10 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local44.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:12, y:50, z:7, width:100, depth:100, start:false, flip:true}; _local19 = {x:8, y:50, z:3, width:100, depth:100, start:false, flip:true}; _local44.checkPointsToAdd = [_local17, _local18, _local19]; _local44.xStart = 3; _local44.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:7, y:20, z:8, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:8, y:20, z:8, onCollide:onPickUpCoin}; _local44.items = [_local25, _local26]; _local33 = {material:speedUpTex, xTile:5, zTile:7, flip:false}; _local34 = {material:speedUpTex, xTile:11, zTile:3, flip:false}; _local44.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (300000 + int((Math.random() * 50000))); _local41.thinkReset = (10 + int((Math.random() * 20))); _local41.ranOffset = (10 + int((Math.random() * 20))); _local42.maxThrust = (300000 + int((Math.random() * 50000))); _local42.thinkReset = (10 + int((Math.random() * 30))); _local42.ranOffset = (10 + int((Math.random() * 20))); _local43.maxThrust = (300000 + int((Math.random() * 50000))); _local43.thinkReset = (10 + int((Math.random() * 20))); _local43.ranOffset = (10 + int((Math.random() * 20))); _local44.npcSettings = [_local41, _local42, _local43]; _local45 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 2, 5, 0, 0, 0, 0, 0, 0, 6, 15, 15, 5, 0, 0, 0]; _local4 = [0, 0, 16, 14, 0, 1, 7, 2, 2, 5, 0, 0, 6, 13, 8, 13, 14, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 7, 2, 2, 4, 0, 16, 1, 14, 0, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 15, 14, 0, 0, 0]; _local7 = [0, 0, 16, 8, 15, 15, 15, 2, 15, 1, 15, 15, 2, 15, 8, 8, 4, 0, 0, 0]; _local8 = [0, 0, 7, 13, 13, 13, 4, 1, 7, 13, 13, 4, 1, 7, 13, 4, 0, 0, 0, 0]; _local9 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local10 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local45.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10]; _local17 = {x:3, y:50, z:4, width:200, depth:100, start:true, flip:false}; _local18 = {x:12, y:50, z:6, width:100, depth:100, start:false, flip:true}; _local19 = {x:8, y:50, z:3, width:100, depth:100, start:false, flip:true}; _local45.checkPointsToAdd = [_local17, _local18, _local19]; _local45.xStart = 3; _local45.yStart = 3; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:11, y:20, z:6, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:13, y:20, z:12, onCollide:onPickUpCoin}; _local45.items = [_local25, _local26]; _local33 = {material:speedUpTex, xTile:5, zTile:6, flip:false}; _local34 = {material:speedUpTex2, xTile:11, zTile:4, flip:false}; _local45.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (200000 + int((Math.random() * 50000))); _local41.thinkReset = 5; _local41.ranOffset = 0; _local42.maxThrust = (200000 + int((Math.random() * 50000))); _local42.thinkReset = (10 + int((Math.random() * 30))); _local42.ranOffset = (10 + int((Math.random() * 20))); _local43.maxThrust = (200000 + int((Math.random() * 50000))); _local43.thinkReset = (10 + int((Math.random() * 20))); _local43.ranOffset = (10 + int((Math.random() * 20))); _local45.npcSettings = [_local41, _local42, _local43]; _local46 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 2, 2, 5, 0, 0]; _local4 = [0, 0, 6, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0, 0, 3, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 14, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 0, 0]; _local7 = [0, 0, 7, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 8, 14, 0, 0]; _local8 = [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 13, 4, 0, 0]; _local9 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local10 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local46.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:12, y:50, z:6, width:100, depth:100, start:false, flip:true}; _local19 = {x:8, y:50, z:3, width:100, depth:100, start:false, flip:true}; _local46.checkPointsToAdd = [_local17, _local18, _local19]; _local46.xStart = 3; _local46.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:16, y:20, z:5, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:16, y:20, z:4, onCollide:onPickUpCoin}; _local46.items = [_local25, _local26]; _local33 = {material:speedUpTex, xTile:5, zTile:6, flip:false}; _local34 = {material:speedUpTex, xTile:14, zTile:6, flip:false}; _local46.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (200000 + int((Math.random() * 50000))); _local41.thinkReset = (5 + int((Math.random() * 5))); _local41.ranOffset = (0 + int((Math.random() * 10))); _local42.maxThrust = (200000 + int((Math.random() * 50000))); _local42.thinkReset = (5 + int((Math.random() * 5))); _local42.ranOffset = (0 + int((Math.random() * 10))); _local43.maxThrust = (200000 + int((Math.random() * 50000))); _local43.thinkReset = (5 + int((Math.random() * 5))); _local43.ranOffset = (0 + int((Math.random() * 10))); _local46.npcSettings = [_local41, _local42, _local43]; _local47 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local4 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5, 0, 1, 1, 1, 1, 6, 5, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 6, 15, 15, 15, 15, 5, 0, 0, 7, 13, 2, 2, 2, 2, 2, 8, 14, 0, 0]; _local7 = [0, 0, 7, 14, 0, 0, 0, 0, 16, 8, 13, 13, 8, 14, 0, 0, 0, 0, 0, 1, 1, 1, 1, 16, 14, 0, 0]; _local8 = [0, 0, 1, 3, 0, 0, 0, 0, 16, 14, 0, 0, 16, 14, 0, 0, 0, 0, 0, 6, 15, 5, 1, 16, 14, 0, 0]; _local9 = [0, 0, 6, 14, 0, 0, 0, 0, 16, 14, 0, 0, 16, 14, 0, 0, 0, 0, 0, 16, 13, 13, 2, 13, 4, 0, 0]; _local10 = [0, 0, 16, 8, 15, 15, 15, 15, 8, 14, 0, 0, 16, 8, 15, 15, 5, 0, 6, 14, 0, 0, 0, 0, 0, 0, 0]; _local11 = [0, 0, 7, 13, 13, 13, 13, 13, 13, 4, 0, 0, 7, 13, 13, 13, 13, 2, 13, 4, 0, 0, 0, 0, 0, 0, 0]; _local12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local13 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local47.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:13, y:50, z:7, width:200, depth:100, start:false, flip:false}; _local19 = {x:22, y:50, z:8, width:100, depth:100, start:false, flip:true}; _local20 = {x:8, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local47.checkPointsToAdd = [_local17, _local18, _local19, _local20]; _local47.xStart = 3; _local47.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:5, y:20, z:9, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:5, y:20, z:10, onCollide:onPickUpCoin}; _local27 = {label:"coin", material:coinMaterial, width:32, height:32, x:9, y:20, z:6, onCollide:onPickUpCoin}; _local28 = {label:"coin", material:coinMaterial, width:32, height:32, x:23, y:20, z:7, onCollide:onPickUpCoin}; _local47.items = [_local25, _local26, _local27, _local28]; _local33 = {material:speedUpTex, xTile:8, zTile:8, flip:true}; _local34 = {material:speedUpTex, xTile:14, zTile:9, flip:true}; _local47.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (280000 + int((Math.random() * 50000))); _local41.thinkReset = (10 + int((Math.random() * 10))); _local41.ranOffset = int((Math.random() * 10)); _local42.maxThrust = (280000 + int((Math.random() * 50000))); _local42.thinkReset = (10 + int((Math.random() * 10))); _local42.ranOffset = int((Math.random() * 10)); _local43.maxThrust = (300000 + int((Math.random() * 50000))); _local43.thinkReset = (10 + int((Math.random() * 10))); _local43.ranOffset = int((Math.random() * 20)); _local47.npcSettings = [_local41, _local42, _local43]; _local48 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 1, 6, 2, 5, 1, 6, 2, 5, 0, 0, 6, 2, 2, 2, 2, 15, 15, 15, 12, 0, 0, 0, 0, 0, 0]; _local4 = [0, 0, 6, 14, 1, 7, 2, 4, 1, 7, 2, 2, 4, 0, 0, 0, 1, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 15, 15, 15, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0]; _local6 = [0, 0, 16, 8, 15, 15, 15, 5, 0, 6, 15, 15, 15, 13, 13, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local7 = [0, 0, 7, 13, 13, 13, 8, 8, 15, 8, 8, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local8 = [0, 0, 0, 0, 0, 0, 7, 13, 13, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local9 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local10 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local48.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:13, y:50, z:5, width:100, depth:100, start:false, flip:true}; _local19 = {x:16, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local20 = {x:8, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local48.checkPointsToAdd = [_local17, _local18, _local19, _local20]; _local48.xStart = 3; _local48.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:15, y:20, z:2, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:14, y:20, z:2, onCollide:onPickUpCoin}; _local48.items = [_local25, _local26]; _local33 = {material:speedUpTex, xTile:8, zTile:6, flip:false}; _local34 = {material:speedUpTex2, xTile:14, zTile:5, flip:true}; _local35 = {material:speedUpTex2, xTile:11, zTile:3, flip:true}; _local48.speedUps = [_local33, _local34, _local35]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (280000 + int((Math.random() * 50000))); _local41.thinkReset = (10 + int((Math.random() * 10))); _local41.ranOffset = int((Math.random() * 10)); _local42.maxThrust = (280000 + int((Math.random() * 50000))); _local42.thinkReset = (10 + int((Math.random() * 10))); _local42.ranOffset = int((Math.random() * 10)); _local43.maxThrust = (300000 + int((Math.random() * 50000))); _local43.thinkReset = (10 + int((Math.random() * 10))); _local43.ranOffset = int((Math.random() * 20)); _local48.npcSettings = [_local41, _local42, _local43]; _local49 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 2, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local4 = [0, 0, 16, 14, 0, 0, 1, 7, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 6, 2, 2, 5, 0, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 6, 2, 2, 2, 5, 0, 3, 0, 0, 3, 0, 0, 3, 0, 0, 0]; _local7 = [0, 0, 7, 14, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 7, 2, 2, 4, 0, 0, 3, 0, 0, 0]; _local8 = [0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 7, 5, 0, 0]; _local9 = [0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 2, 2, 2, 2, 2, 5, 0, 0, 3, 0, 0]; _local10 = [0, 0, 3, 1, 0, 0, 6, 2, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 15, 14, 0, 0]; _local11 = [0, 0, 7, 2, 2, 2, 4, 0, 7, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 4, 0, 0]; _local12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local13 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local49.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:7, y:50, z:9, width:100, depth:100, start:false, flip:true}; _local19 = {x:12, y:50, z:5, width:100, depth:100, start:false, flip:true}; _local20 = {x:8, y:50, z:3, width:100, depth:100, start:false, flip:true}; _local49.checkPointsToAdd = [_local17, _local18, _local19, _local20]; _local49.xStart = 3; _local49.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:23, y:20, z:10, onCollide:onPickUpCoin}; _local49.items = [_local25]; _local33 = {material:speedUpTex, xTile:5, zTile:7, flip:false}; _local34 = {material:speedUpTex, xTile:11, zTile:3, flip:false}; _local49.speedUps = []; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (300000 + int((Math.random() * 50000))); _local41.thinkReset = 0; _local41.ranOffset = 0; _local42.maxThrust = (300000 + int((Math.random() * 50000))); _local42.thinkReset = (10 + int((Math.random() * 10))); _local42.ranOffset = int((Math.random() * 10)); _local43.maxThrust = (300000 + int((Math.random() * 50000))); _local43.thinkReset = (10 + int((Math.random() * 10))); _local43.ranOffset = int((Math.random() * 20)); _local49.npcSettings = [_local41, _local42, _local43]; _local50 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 2, 13, 13, 13, 2, 5, 0, 6, 15, 15, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local4 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 3, 0, 16, 13, 13, 13, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 6, 2, 4, 0, 3, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local7 = [0, 0, 16, 4, 0, 0, 0, 0, 7, 2, 2, 2, 4, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local8 = [0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local9 = [0, 0, 7, 2, 2, 5, 0, 6, 2, 5, 0, 6, 2, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local10 = [0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local11 = [0, 0, 0, 0, 0, 7, 2, 4, 0, 7, 2, 4, 0, 7, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local13 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local50.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:10, y:50, z:10, width:100, depth:100, start:false, flip:true}; _local19 = {x:15, y:50, z:7, width:100, depth:100, start:false, flip:true}; _local20 = {x:12, y:50, z:4, width:100, depth:100, start:false, flip:true}; _local21 = {x:8, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local50.checkPointsToAdd = [_local17, _local18, _local19, _local20, _local21]; _local50.xStart = 3; _local50.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:6, y:20, z:10, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:15, y:20, z:5, onCollide:onPickUpCoin}; _local27 = {label:"coin", material:coinMaterial, width:32, height:32, x:12, y:20, z:2, onCollide:onPickUpCoin}; _local50.items = [_local25, _local26, _local27]; _local33 = {material:speedUpTex, xTile:14, zTile:3, flip:false}; _local34 = {material:speedUpTex, xTile:12, zTile:4, flip:false}; _local50.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (300000 + int((Math.random() * 1000))); _local41.thinkReset = 0; _local41.ranOffset = 0; _local42.maxThrust = (300000 + int((Math.random() * 1000))); _local42.thinkReset = int((Math.random() * 5)); _local42.ranOffset = int((Math.random() * 5)); _local43.maxThrust = (300000 + int((Math.random() * 1000))); _local43.thinkReset = int((Math.random() * 5)); _local43.ranOffset = int((Math.random() * 5)); _local50.npcSettings = [_local41, _local42, _local43]; _local51 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 0]; _local4 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local5 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local7 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local8 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local9 = [0, 0, 16, 8, 15, 15, 15, 15, 15, 15, 2, 15, 15, 15, 5, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0]; _local10 = [0, 0, 7, 13, 13, 13, 13, 13, 13, 4, 1, 7, 13, 1, 13, 2, 2, 2, 2, 2, 2, 2, 2, 4, 0, 0]; _local11 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local51.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:10, y:50, z:8, width:100, depth:100, start:false, flip:true}; _local19 = {x:23, y:50, z:6, width:100, depth:100, start:false, flip:true}; _local20 = {x:13, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local51.checkPointsToAdd = [_local17, _local18, _local19, _local20]; _local51.xStart = 3; _local51.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:8, y:20, z:8, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:9, y:20, z:9, onCollide:onPickUpCoin}; _local27 = {label:"coin", material:coinMaterial, width:32, height:32, x:11, y:20, z:9, onCollide:onPickUpCoin}; _local51.items = [_local25, _local26, _local27]; _local33 = {material:speedUpTex, xTile:4, zTile:8, flip:false}; _local34 = {material:speedUpTex2, xTile:6, zTile:9, flip:true}; _local51.speedUps = [_local33, _local34]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (300000 + int((Math.random() * 1000))); _local41.thinkReset = 0; _local41.ranOffset = 0; _local42.maxThrust = (300000 + int((Math.random() * 1000))); _local42.thinkReset = int((Math.random() * 5)); _local42.ranOffset = int((Math.random() * 5)); _local43.maxThrust = (300000 + int((Math.random() * 1000))); _local43.thinkReset = int((Math.random() * 5)); _local43.ranOffset = int((Math.random() * 5)); _local51.npcSettings = [_local41, _local42, _local43]; _local52 = new Object(); _local1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local2 = [0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local3 = [0, 0, 6, 15, 2, 8, 15, 2, 2, 15, 15, 15, 2, 5, 0, 0, 1, 6, 2, 2, 2, 2, 2, 5, 0, 0]; _local4 = [0, 0, 16, 14, 0, 7, 4, 0, 1, 7, 13, 4, 1, 3, 0, 0, 0, 3, 1, 1, 1, 1, 1, 3, 0, 0]; _local5 = [0, 0, 16, 14, 1, 1, 1, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 3, 0, 0, 0, 0, 6, 4, 0, 0]; _local6 = [0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 5, 1, 3, 0, 0, 0, 0, 3, 0, 0, 0]; _local7 = [0, 0, 7, 13, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 3, 0, 0, 0, 0, 3, 0, 0, 0]; _local8 = [0, 0, 0, 0, 16, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 4, 0, 0, 0, 0, 3, 0, 0, 0]; _local9 = [0, 0, 0, 0, 16, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5, 0, 0]; _local10 = [0, 0, 0, 0, 16, 14, 0, 6, 2, 5, 0, 6, 2, 5, 0, 6, 2, 2, 2, 2, 5, 1, 16, 14, 0, 0]; _local11 = [0, 0, 0, 0, 7, 13, 2, 4, 0, 7, 2, 4, 0, 7, 2, 4, 0, 0, 0, 0, 7, 2, 13, 4, 0, 0]; _local12 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local13 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; _local52.map = [_local1, _local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13]; _local17 = {x:3, y:50, z:5, width:200, depth:100, start:true, flip:false}; _local18 = {x:6, y:50, z:10, width:100, depth:100, start:false, flip:true}; _local19 = {x:22, y:50, z:7, width:100, depth:100, start:false, flip:true}; _local20 = {x:14, y:50, z:5, width:100, depth:100, start:false, flip:true}; _local21 = {x:8, y:50, z:2, width:100, depth:100, start:false, flip:true}; _local52.checkPointsToAdd = [_local17, _local18, _local19, _local20, _local21]; _local52.xStart = 3; _local52.yStart = 4; _local25 = {label:"coin", material:coinMaterial, width:32, height:32, x:5, y:20, z:3, onCollide:onPickUpCoin}; _local26 = {label:"coin", material:coinMaterial, width:32, height:32, x:23, y:20, z:9, onCollide:onPickUpCoin}; _local27 = {label:"coin", material:coinMaterial, width:32, height:32, x:23, y:20, z:8, onCollide:onPickUpCoin}; _local52.items = [_local25, _local26, _local27]; _local33 = {material:speedUpTex2, xTile:4, zTile:9, flip:true}; _local34 = {material:speedUpTex, xTile:16, zTile:9, flip:false}; _local35 = {material:speedUpTex, xTile:22, zTile:9, flip:false}; _local36 = {material:speedUpTex2, xTile:22, zTile:2, flip:true}; _local37 = {material:speedUpTex, xTile:17, zTile:3, flip:false}; _local52.speedUps = [_local33, _local34, _local35, _local36, _local37]; _local41 = new Object(); _local42 = new Object(); _local43 = new Object(); _local41.maxThrust = (300000 + int((Math.random() * 1000))); _local41.thinkReset = 0; _local41.ranOffset = 0; _local42.maxThrust = (300000 + int((Math.random() * 1000))); _local42.thinkReset = int((Math.random() * 5)); _local42.ranOffset = int((Math.random() * 5)); _local43.maxThrust = (300000 + int((Math.random() * 1000))); _local43.thinkReset = int((Math.random() * 80)); _local43.ranOffset = int((Math.random() * 8)); _local52.npcSettings = [_local41, _local42, _local43]; game.levels = [_local44, _local45, _local46, _local47, _local48, _local49, _local50, _local51, _local52]; debug(game.levels[5]); } public function showSkipButton(){ skipBtn.alpha = 1; skipBtn.mouseEnabled = true; prepButton(skipBtn, rollOver, rollOut, onMouseUpSkipBtn); endBtn.mouseEnabled = false; endBtn.visible = false; } public function onMouseUpMusicBtn(_arg1:MouseEvent){ var _local2:*; _local2 = _arg1.target; if (_local2.state == 1){ setMusicVolume(0); _local2.state = 0; _local2.gotoAndStop("off"); } else { trace("ON!"); setMusicVolume(1); _local2.state = 1; _local2.gotoAndStop("on"); }; } public function selectCharMeshLoaded(_arg1){ _arg1.target.replaceMaterialByName(charTextures[charId], "SurfaceMaterial00"); } function frame17(){ stage.addEventListener(Event.ENTER_FRAME, checkForModels); stop(); } public function radToDeg(_arg1):Number{ return ((_arg1 * (180 / Math.PI))); } function frame2(){ characterDae = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <authoring_tool>Swift 3D 1.0 for Papervision3D</authoring_tool> </contributor> <created>2009-05-26T15:22:45Z</created> <modified>2009-05-26T15:22:45Z</modified> <up_axis>Z_UP</up_axis> </asset> <library_images> <image id="dracula-Image" name="dracula-Image"> <init_from>dracula.png</init_from> </image> <image id="kart-Image" name="kart-Image"> <init_from>"kart.jpg"</init_from> </image> <image id="shadow-Image" name="shadow-Image"> <init_from>shadow.png</init_from> </image> <image id="set-Image" name="set-Image"> <init_from>set.jpg</init_from> </image> <image id="ball-Image" name="ball-Image"> <init_from>ball.jpg</init_from> </image> <image id="ballshadow-Image" name="ballshadow-Image"> <init_from>ballshadow.png</init_from> </image> <image id="title-Image" name="title-Image"> <init_from>title.jpg</init_from> </image> </library_images> <library_effects> <effect id="dracula-fx"> <profile_COMMON> <newparam sid="dracula-Surface"> <surface type="2D"> <init_from>dracula-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="dracula-Sampler"> <sampler2D> <source>dracula-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="dracula-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="kart-fx"> <profile_COMMON> <newparam sid="kart-Surface"> <surface type="2D"> <init_from>kart-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="kart-Sampler"> <sampler2D> <source>kart-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="kart-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="shadow-fx"> <profile_COMMON> <newparam sid="shadow-Surface"> <surface type="2D"> <init_from>shadow-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="shadow-Sampler"> <sampler2D> <source>shadow-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="shadow-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>128</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="set-fx"> <profile_COMMON> <newparam sid="set-Surface"> <surface type="2D"> <init_from>set-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="set-Sampler"> <sampler2D> <source>set-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="set-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="ball-fx"> <profile_COMMON> <newparam sid="ball-Surface"> <surface type="2D"> <init_from>ball-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="ball-Sampler"> <sampler2D> <source>ball-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="ball-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="ballshadow-fx"> <profile_COMMON> <newparam sid="ballshadow-Surface"> <surface type="2D"> <init_from>ballshadow-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="ballshadow-Sampler"> <sampler2D> <source>ballshadow-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="ballshadow-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>128</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="title-fx"> <profile_COMMON> <newparam sid="title-Surface"> <surface type="2D"> <init_from>title-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="title-Sampler"> <sampler2D> <source>title-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="title-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> </library_effects> <library_materials> <material id="dracula" name="dracula"> <instance_effect url="#dracula-fx"/> </material> <material id="kart" name="kart"> <instance_effect url="#kart-fx"/> </material> <material id="shadow" name="shadow"> <instance_effect url="#shadow-fx"/> </material> <material id="set" name="set"> <instance_effect url="#set-fx"/> </material> <material id="ball" name="ball"> <instance_effect url="#ball-fx"/> </material> <material id="ballshadow" name="ballshadow"> <instance_effect url="#ballshadow-fx"/> </material> <material id="title" name="title"> <instance_effect url="#title-fx"/> </material> </library_materials> <library_geometries> <geometry id="character-Geometry" name="character"> <mesh> <source id="character-Positions" name="character-Positions"> <float_array id="character-Positions-Array" count="324"> -0.613073 -1.26581 0.206828 0.589065 -1.26581 0.206828 0.589001 -0.195612 0.087807 -0.613137 -0.195612 0.087807 0.588936 -1.10454 -0.805913 -0.613201 -1.10454 -0.805913 -0.312538 -0.623689 -1.32938 0.350191 -0.743903 -1.04634 -0.374199 -0.743903 -1.04634 0.28853 -0.623689 -1.32938 0.738375 -0.762851 -0.982726 0.772778 -1.6262 -0.195127 0.641755 -1.17321 -0.963391 -0.858974 -0.860469 0.0647162 -0.634059 -1.17321 -0.953295 -0.757247 -1.6262 -0.205991 0.874964 -0.860469 0.0744185 -0.723291 -0.762851 -0.975287 0.307099 -0.782804 -1.03584 0.203894 -1.0828 -1.0263 -0.194109 -1.0828 -1.02252 -0.294103 -0.782804 -1.03216 -0.613137 -0.743903 -0.926127 0.589 -0.743903 -0.926127 0.589 -0.263048 -0.926127 0.350191 -0.263048 -1.04634 -0.3742 -0.263048 -1.04634 -0.613137 -0.263048 -0.926127 -0.312539 -0.263048 -1.32938 0.28853 -0.263048 -1.32938 0.365497 -1.28398 -1.33392 0.00876425 -1.3734 -1.724 0.365706 -1.28398 -1.7238 0.182985 -1.28398 -1.16232 -0.349875 -1.28398 -1.33966 -0.346092 -1.28398 -1.72419 -0.172916 -1.28398 -1.15894 0.408268 -1.0828 -1.72378 0.492367 -1.0828 -1.21815 -0.476481 -1.0828 -1.22467 -0.387732 -1.0828 -1.72421 0.575611 -1.0828 -1.72369 0.575475 -1.0828 -1.4709 -0.55722 -1.0828 -1.4745 -0.554816 -1.0828 -1.7243 -0.476476 -0.782804 -1.23426 -0.627218 -0.782804 -1.4769 0.492372 -0.782804 -1.22774 0.645477 -0.782804 -1.47479 0.745611 -0.382804 -1.72369 0.534417 -0.382804 -1.7238 0.434417 -0.782804 -1.7238 0.434286 -0.782804 -1.4788 0.534285 -0.382804 -1.4788 0.745479 -0.382804 -1.47869 -0.514765 -0.382804 -1.47918 -0.414765 -0.782804 -1.47918 -0.415825 -0.782804 -1.72419 -0.514633 -0.382804 -1.72418 -0.727085 -0.382804 -1.7243 -0.727217 -0.382804 -1.4793 0.660443 -0.170966 -1.13795 0.660971 -0.272641 -1.73204 -0.669028 -0.272641 -1.73258 -0.669556 -0.170966 -1.13848 -0.610023 -0.308998 -1.54037 -0.610029 -0.411998 -1.59136 -0.609925 -0.401998 -1.72237 -0.610075 -0.339998 -1.44237 -0.509925 -0.218998 -1.72242 -0.510008 -0.176998 -1.56742 -0.510026 -0.230998 -1.53442 -0.509925 -0.280998 -1.72242 -0.610069 -0.291998 -1.45337 -0.600026 -0.230998 -1.53437 -0.599925 -0.280998 -1.72242 -0.689925 -0.401998 -1.72231 -0.690029 -0.411998 -1.59131 -0.690023 -0.308998 -1.54031 -0.690075 -0.339998 -1.44231 -0.690026 -0.230998 -1.53431 -0.690008 -0.176998 -1.56731 -0.689925 -0.218998 -1.72231 -0.690069 -0.291998 -1.45331 0.113627 -0.263048 -0.927478 -0.0170066 -0.263048 -0.757142 -0.137763 -0.263048 -0.927478 -0.012068 -0.263048 -0.927478 -0.012068 -0.150971 -0.927478 0.609925 -0.401998 -1.72233 0.610029 -0.411998 -1.59132 0.610023 -0.308998 -1.54033 0.610075 -0.339998 -1.44233 0.510026 -0.230998 -1.53439 0.510008 -0.176998 -1.56739 0.509925 -0.218998 -1.72239 0.509925 -0.280998 -1.72239 0.610069 -0.291998 -1.45333 0.599925 -0.280998 -1.72238 0.600026 -0.230998 -1.53433 0.690022 -0.308998 -1.54028 0.690029 -0.411998 -1.59128 0.689925 -0.401998 -1.72228 0.690075 -0.339998 -1.44228 0.689925 -0.218998 -1.72228 0.690008 -0.176998 -1.56728 0.690026 -0.230998 -1.53428 0.690069 -0.291998 -1.45328 </float_array> <technique_common> <accessor source="#character-Positions-Array" count="108" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="character-UVs" name="character-UVs"> <float_array id="character-UVs-Array" count="978"> 0.702378 0.890212 0.702378 0.579652 0.978851 0.579669 0.978851 0.579669 0.978851 0.890228 0.702378 0.890212 0.0113277 0.985589 0.366648 0.686217 0.366686 0.985589 0.0113277 0.985589 0.0112898 0.686217 0.366648 0.686217 0.100167 0.531479 0.296074 0.615145 0.08194 0.615145 0.366648 0.686217 0.08194 0.615145 0.296074 0.615145 0.08194 0.615145 0.366648 0.686217 0.0112898 0.686217 0.277847 0.531479 0.296074 0.615145 0.100167 0.531479 0.973973 0.0341504 0.978202 0.130973 0.962095 0.0365272 0.777604 0.162916 0.805254 0.0377684 0.79011 0.129637 0.973973 0.0341504 0.990764 0.164109 0.978202 0.130973 0.777604 0.162916 0.794285 0.0350649 0.805254 0.0377684 0.978202 0.130973 0.805254 0.0377684 0.962095 0.0365272 0.978202 0.130973 0.79011 0.129637 0.805254 0.0377684 0.920954 0.0276214 0.973973 0.0341504 0.962095 0.0365272 0.962095 0.0365272 0.908267 0.0287934 0.920954 0.0276214 0.859339 0.0292588 0.805254 0.0377684 0.794285 0.0350649 0.794285 0.0350649 0.847046 0.0280735 0.859339 0.0292588 0.908267 0.0287934 0.962095 0.0365272 0.805254 0.0377684 0.805254 0.0377684 0.859339 0.0292588 0.908267 0.0287934 0.5312 0.613893 0.424122 0.685278 0.5312 0.649585 0.5312 0.649585 0.424122 0.685278 0.5312 0.613893 0.376241 0.985974 0.693995 0.950635 0.424122 0.685278 0.673972 0.649585 0.376241 0.985974 0.5312 0.649585 0.673972 0.613893 0.673972 0.649585 0.5312 0.649585 0.673972 0.613893 0.5312 0.613893 0.673972 0.649585 0.673972 0.613893 0.673972 0.529856 0.566893 0.529856 0.673972 0.529856 0.673972 0.613893 0.5312 0.613893 0.693995 0.950635 0.673972 0.649585 0.5312 0.649585 0.5312 0.649585 0.673972 0.649585 0.5312 0.613893 0.5312 0.649585 0.424122 0.685278 0.693995 0.950635 0.5312 0.613893 0.673972 0.613893 0.566893 0.529856 0.376241 0.985974 0.673972 0.649585 0.693995 0.950635 0.5312 0.613893 0.673972 0.613893 0.5312 0.649585 0.566893 0.529856 0.673972 0.529856 0.5312 0.613893 0.376241 0.985974 0.424122 0.685278 0.5312 0.649585 0.711797 0.109631 0.622035 0.0114784 0.71185 0.0115266 0.711797 0.109631 0.665873 0.152808 0.622035 0.0114784 0.531793 0.108185 0.532745 0.0114306 0.622035 0.0114784 0.622035 0.0114784 0.665873 0.152808 0.57632 0.15366 0.531793 0.108185 0.622035 0.0114784 0.57632 0.15366 0.722559 0.0115324 0.74372 0.138762 0.71185 0.0115266 0.74372 0.138762 0.671134 0.187034 0.711797 0.109631 0.671134 0.187034 0.570987 0.187987 0.665873 0.152808 0.570987 0.187987 0.499936 0.137121 0.57632 0.15366 0.671134 0.187034 0.665873 0.152808 0.711797 0.109631 0.74372 0.138762 0.711797 0.109631 0.71185 0.0115266 0.499936 0.137121 0.531793 0.108185 0.57632 0.15366 0.570987 0.187987 0.57632 0.15366 0.665873 0.152808 0.499936 0.137121 0.532745 0.0114306 0.531793 0.108185 0.499936 0.137121 0.522267 0.011425 0.532745 0.0114306 0.722559 0.0115324 0.764666 0.011555 0.764632 0.0751638 0.764632 0.0751638 0.74372 0.138762 0.722559 0.0115324 0.499936 0.137121 0.47962 0.0742562 0.480225 0.0114024 0.480225 0.0114024 0.522267 0.011425 0.499936 0.137121 0.01292 0.187834 0.01292 0.139155 0.0890422 0.185415 0.01292 0.1375 0.01292 0.188794 0.0890422 0.135067 0.01292 0.0107233 0.01292 0.0741062 0.0890422 0.073498 0.01292 0.139155 0.0890422 0.136722 0.0890422 0.185415 0.01292 0.188794 0.0890422 0.186348 0.0890422 0.135067 0.0890422 0.0740325 0.01292 0.0108772 0.190539 0.0108773 0.190539 0.0108485 0.0890422 0.0108485 0.0890422 0.073015 0.0890422 0.073015 0.190539 0.073015 0.190539 0.0108485 0.0890422 0.0740325 0.190539 0.0108773 0.190539 0.0730437 0.190539 0.0729185 0.0890422 0.0729187 0.0890422 0.0107519 0.0890422 0.0107519 0.190539 0.0107519 0.190539 0.0729185 0.0890422 0.073498 0.190539 0.0107231 0.01292 0.0107233 0.01292 0.139155 0.01292 0.0750215 0.0890422 0.0740325 0.0890422 0.0740325 0.0890422 0.136722 0.01292 0.139155 0.01292 0.0741062 0.01292 0.1375 0.0890422 0.135067 0.0890422 0.0740325 0.01292 0.0750215 0.01292 0.0108772 0.0890422 0.073498 0.190539 0.0728896 0.190539 0.0107231 0.0890422 0.073498 0.01292 0.0741062 0.0890422 0.135067 0.214644 0.241356 0.360311 0.241356 0.178046 0.351155 0.360311 0.241356 0.398083 0.351155 0.178046 0.351155 0.0972851 0.497553 0.0561277 0.351155 0.133885 0.351155 0.521928 0.351155 0.481233 0.497553 0.444633 0.351155 0.0195286 0.497553 0.0561277 0.351155 0.0972851 0.497553 0.521928 0.351155 0.558529 0.497553 0.481233 0.497553 0.437303 0.493807 0.437421 0.361718 0.141714 0.361599 0.141714 0.361599 0.141597 0.493688 0.437303 0.493807 0.399947 0.623515 0.336511 0.592112 0.342669 0.511423 0.399947 0.623515 0.380854 0.683871 0.336511 0.592112 0.455377 0.51139 0.481244 0.606853 0.447986 0.627177 0.447986 0.627177 0.417192 0.51139 0.455377 0.51139 0.399947 0.623515 0.410417 0.677097 0.380854 0.683871 0.447986 0.62721 0.417192 0.511393 0.417192 0.51139 0.342669 0.511457 0.336511 0.592138 0.399947 0.623548 0.336511 0.592138 0.380854 0.683905 0.399947 0.623548 0.447986 0.627244 0.481244 0.606919 0.455377 0.511457 0.455377 0.511457 0.399947 0.623548 0.447986 0.627244 0.380854 0.683905 0.410417 0.67713 0.399947 0.623548 0.342669 0.511457 0.399947 0.623548 0.455377 0.511457 0.336511 0.592138 0.336511 0.592112 0.380854 0.683871 0.380854 0.683871 0.380854 0.683905 0.336511 0.592138 0.380854 0.683905 0.380854 0.683871 0.410417 0.677097 0.410417 0.677097 0.410417 0.67713 0.380854 0.683905 0.410417 0.67713 0.410417 0.677097 0.399947 0.623515 0.399947 0.623515 0.399947 0.623548 0.410417 0.67713 0.399947 0.623548 0.399947 0.623515 0.447986 0.62721 0.447986 0.62721 0.447986 0.627244 0.399947 0.623548 0.447986 0.62721 0.447986 0.627177 0.481244 0.606853 0.481244 0.606853 0.481244 0.606919 0.447986 0.62721 0.481244 0.606919 0.481244 0.606853 0.455377 0.51139 0.455377 0.51139 0.455377 0.511457 0.481244 0.606919 0.399947 0.623515 0.342669 0.511423 0.447986 0.62721 0.417192 0.51139 0.447986 0.627177 0.447986 0.62721 0.481244 0.606919 0.447986 0.627244 0.447986 0.62721 0.447986 0.62721 0.342669 0.511423 0.417192 0.511393 0.657061 0.262939 0.692198 0.332869 0.992322 0.192346 0.74255 0.371485 0.692198 0.407181 0.992322 0.547705 0.657061 0.477073 0.692597 0.547705 0.992322 0.547705 0.692198 0.370025 0.573395 0.281166 0.573395 0.458846 0.573395 0.458846 0.657061 0.477073 0.692198 0.407181 0.992322 0.192346 0.692597 0.192346 0.657061 0.262939 0.74255 0.371485 0.992322 0.547705 0.992322 0.192346 0.74255 0.371485 0.992322 0.192346 0.692198 0.332869 0.692198 0.370025 0.692198 0.332869 0.573395 0.281166 0.692198 0.332869 0.657061 0.262939 0.573395 0.281166 0.692198 0.407181 0.692198 0.370025 0.573395 0.458846 0.692198 0.407181 0.657061 0.477073 0.992322 0.547705 0.692198 0.370025 0.692198 0.370025 0.692198 0.407181 0.692198 0.370025 0.692198 0.407181 0.74255 0.371485 0.692198 0.370025 0.692198 0.332869 0.692198 0.370025 0.692198 0.332869 0.692198 0.370025 0.74255 0.371485 0.47108 0.0889853 0.41794 0.0879762 0.432555 0.151151 0.41794 0.0879762 0.385936 0.199437 0.432555 0.151151 0.204299 0.0878806 0.385936 0.199437 0.41794 0.0879762 0.204299 0.0878806 0.41794 0.0879762 0.204032 0.0262328 0.23466 0.200363 0.385936 0.199437 0.204299 0.0878806 0.23466 0.200363 0.204299 0.0878806 0.188771 0.14951 0.204032 0.0262328 0.41794 0.0879762 0.417973 0.0263286 0.188771 0.14951 0.204299 0.0878806 0.150841 0.0884551 0.342669 0.511444 0.336511 0.592133 0.399947 0.623536 0.336511 0.592133 0.380854 0.683892 0.399947 0.623536 0.447986 0.627198 0.481244 0.606874 0.455377 0.511411 0.455377 0.511411 0.417192 0.511411 0.447986 0.627198 0.380854 0.683892 0.410417 0.677118 0.399947 0.623536 0.417192 0.511411 0.417192 0.511415 0.447986 0.627231 0.399947 0.623569 0.336511 0.592159 0.342669 0.511478 0.399947 0.623569 0.380854 0.683926 0.336511 0.592159 0.455377 0.511478 0.481244 0.60694 0.447986 0.627265 0.447986 0.627265 0.399947 0.623569 0.455377 0.511478 0.399947 0.623569 0.410417 0.677151 0.380854 0.683926 0.455377 0.511478 0.399947 0.623569 0.342669 0.511478 0.380854 0.683892 0.336511 0.592133 0.336511 0.592159 0.336511 0.592159 0.380854 0.683926 0.380854 0.683892 0.410417 0.677118 0.380854 0.683892 0.380854 0.683926 0.380854 0.683926 0.410417 0.677151 0.410417 0.677118 0.399947 0.623536 0.410417 0.677118 0.410417 0.677151 0.410417 0.677151 0.399947 0.623569 0.399947 0.623536 0.447986 0.627231 0.399947 0.623536 0.399947 0.623569 0.399947 0.623569 0.447986 0.627265 0.447986 0.627231 0.481244 0.606874 0.447986 0.627198 0.447986 0.627231 0.447986 0.627231 0.481244 0.60694 0.481244 0.606874 0.455377 0.511411 0.481244 0.606874 0.481244 0.60694 0.481244 0.60694 0.455377 0.511478 0.455377 0.511411 0.447986 0.627231 0.342669 0.511444 0.399947 0.623536 0.447986 0.627231 0.447986 0.627198 0.417192 0.511411 0.447986 0.627231 0.447986 0.627265 0.481244 0.60694 0.417192 0.511415 0.342669 0.511444 0.447986 0.627231 0.404525 0.307909 0.563825 0.307909 0.563825 0.212329 0.404525 0.212329 0.404525 0.307909 0.563825 0.212329 </float_array> <technique_common> <accessor source="#character-UVs-Array" count="489" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="character-Vertices"> <input semantic="POSITION" source="#character-Positions"/> </vertices> <triangles material="SurfaceMaterial00" count="163"> <!-- dracula --> <input semantic="VERTEX" source="#character-Vertices" offset="0"/> <input semantic="TEXCOORD" source="#character-UVs" offset="1" set="0"/> <p>0 0 1 1 2 2 2 3 3 4 0 5 0 6 4 7 1 8 0 9 5 10 4 11 6 12 7 13 8 14 4 15 8 16 7 17 8 18 4 19 5 20 9 21 7 22 6 23 10 24 11 25 12 26 13 27 14 28 15 29 10 30 16 31 11 32 13 33 17 34 14 35 11 36 14 37 12 38 11 39 15 40 14 41 18 42 10 43 12 44 12 45 19 46 18 47 20 48 14 49 17 50 17 51 21 52 20 53 19 54 12 55 14 56 14 57 20 58 19 59 8 60 5 61 22 62 23 63 4 64 7 65 0 66 3 67 5 68 24 69 1 70 23 71 25 72 24 73 23 74 26 75 8 76 27 77 26 78 28 79 6 80 29 81 25 82 7 83 3 84 27 85 22 86 22 87 27 88 8 89 22 90 5 91 3 92 8 93 26 94 6 95 1 96 24 97 2 98 7 99 25 100 23 101 9 102 29 103 7 104 1 105 4 106 23 107 30 108 31 109 32 110 30 111 33 112 31 113 34 114 35 115 31 116 31 117 33 118 36 119 34 120 31 121 36 122 37 123 38 124 32 125 38 126 19 127 30 128 19 129 20 130 33 131 20 132 39 133 36 134 19 135 33 136 30 137 38 138 30 139 32 140 39 141 34 142 36 143 20 144 36 145 33 146 39 147 35 148 34 149 39 150 40 151 35 152 37 153 41 154 42 155 42 156 38 157 37 158 39 159 43 160 44 161 44 162 40 163 39 164 19 165 38 166 18 167 39 168 20 169 45 170 44 171 43 172 46 173 38 174 47 175 18 176 20 177 21 178 45 179 48 180 41 181 49 182 50 183 51 184 52 185 52 186 53 187 50 188 48 189 49 190 54 191 55 192 56 193 57 194 57 195 58 196 55 197 46 198 59 199 44 200 38 201 42 202 48 203 48 204 47 205 38 206 43 207 39 208 45 209 48 210 42 211 41 212 46 213 60 214 59 215 46 216 43 217 45 218 20 219 19 220 21 221 19 222 18 223 21 224 55 225 46 226 56 227 48 228 53 229 52 230 60 231 46 232 55 233 48 234 54 235 53 236 61 237 62 238 63 239 63 240 64 241 61 242 65 243 66 244 67 245 65 246 68 247 66 248 69 249 70 250 71 251 71 252 72 253 69 254 65 255 73 256 68 257 74 258 75 259 72 260 76 261 77 262 78 263 77 264 79 265 78 266 80 267 81 268 82 269 82 270 78 271 80 272 79 273 83 274 78 275 76 276 78 277 82 278 77 279 66 280 68 281 68 282 79 283 77 284 79 285 68 286 73 287 73 288 83 289 79 290 83 291 73 292 65 293 65 294 78 295 83 296 78 297 65 298 74 299 74 300 80 301 78 302 74 303 71 304 70 305 70 306 81 307 74 308 81 309 70 310 69 311 69 312 82 313 81 314 65 315 67 316 74 317 72 318 71 319 74 320 81 321 80 322 74 323 74 324 67 325 75 326 25 327 84 328 2 329 85 330 86 331 3 332 26 333 27 334 3 335 87 336 29 337 28 338 28 339 26 340 86 341 2 342 24 343 25 344 85 345 3 346 2 347 85 348 2 349 84 350 87 351 84 352 29 353 84 354 25 355 29 356 86 357 87 358 28 359 86 360 26 361 3 362 88 363 87 364 86 365 88 366 86 367 85 368 88 369 84 370 87 371 84 372 88 373 85 374 48 375 52 376 47 377 52 378 18 379 47 380 56 381 18 382 52 383 56 384 52 385 57 386 21 387 18 388 56 389 21 390 56 391 45 392 57 393 52 394 51 395 45 396 56 397 46 398 89 399 90 400 91 401 90 402 92 403 91 404 93 405 94 406 95 407 95 408 96 409 93 410 92 411 97 412 91 413 96 414 98 415 99 416 100 417 101 418 102 419 100 420 103 421 101 422 104 423 105 424 106 425 106 426 100 427 104 428 100 429 107 430 103 431 104 432 100 433 102 434 92 435 90 436 101 437 101 438 103 439 92 440 97 441 92 442 103 443 103 444 107 445 97 446 91 447 97 448 107 449 107 450 100 451 91 452 99 453 91 454 100 455 100 456 106 457 99 458 94 459 93 460 99 461 99 462 105 463 94 464 95 465 94 466 105 467 105 468 104 469 95 470 99 471 89 472 91 473 99 474 93 475 96 476 99 477 106 478 105 479 98 480 89 481 99 482 28 483 29 484 9 485 6 486 28 487 9 488 </p> </triangles> </mesh> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="Scene"> <node id="character" name="character" type="NODE"> <translate sid="Translation"> 0 -0.313451 -2.01517 </translate> <rotate sid="Rotation"> 0 2.22045e-016 1 0 </rotate> <scale sid="Scale"> 1 1 1 </scale> <translate sid="Pivot"> -0.00799531 0.888585 1.7 </translate> <instance_geometry url="#character-Geometry"> <bind_material> <technique_common> <instance_material symbol="SurfaceMaterial00" target="#dracula"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; } public function findTileByCoords(_arg1, _arg2){ var _local3:Number; var _local4:Number; var _local5:*; var _local6:*; _local3 = game.tileStack.length; _local4 = 0; _local5 = null; _local4 = 0; while (_local4 < _local3) { _local6 = game.tileStack[_local4]; if ((((_local6.tileX == _arg1)) && ((_local6.tileY == _arg2)))){ _local5 = _local6; }; _local4++; }; return (_local5); } public function levelReady(_arg1){ debug("Level Ready"); numberCount = 3; setWayPoints(playerSettings.levelId); setInputs(); setMapData(); createMap(); addCheckPoints(); addPlayer(_arg1); addItems(); addSpeedUps(); setUi(); if (_arg1){ addNpc(); game.npcsOn = true; } else { game.npcsOn = false; }; loadNextGameObject(); editModeBtn.addEventListener(MouseEvent.MOUSE_UP, onMouseUpEditBtn); outputBtn.addEventListener(MouseEvent.MOUSE_UP, onMouseUpOutputBtn); debug(("npc thrust - " + game.levels[playerSettings.levelId].npcSettings[0].maxThrust)); } public function getCorners(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:*; var _local14:*; var _local15:*; var _local16:*; var _local17:*; var _local18:*; var _local19:*; var _local20:*; var _local21:*; var _local22:*; var _local23:*; var _local24:*; var _local25:*; var _local26:*; _local2 = game.levels[playerSettings.levelId].map; _local3 = (0 - (_arg1.width / 2)); _local4 = (0 - (_arg1.height / 2)); _local5 = new Point(_local3, _local4); _local6 = (0 + (_arg1.width / 2)); _local7 = (0 - (_arg1.height / 2)); _local8 = new Point(_local6, _local7); _local9 = (0 - (_arg1.width / 2)); _local10 = (0 + (_arg1.height / 2)); _local11 = new Point(_local9, _local10); _local12 = (0 + (_arg1.width / 2)); _local13 = (0 + (_arg1.height / 2)); _local14 = new Point(_local12, _local13); _local15 = getPointInWorldSpace(_arg1, _local5); _local16 = getPointInWorldSpace(_arg1, _local8); _local17 = getPointInWorldSpace(_arg1, _local11); _local18 = getPointInWorldSpace(_arg1, _local14); _arg1.tl = _local15; _arg1.tr = _local16; _arg1.bl = _local17; _arg1.br = _local18; _local19 = getTile(_local15); _local20 = getTile(_local16); _local21 = getTile(_local17); _local22 = getTile(_local18); _arg1.hitBounds = false; if ((((((((_local19.x < 0)) || ((_local19.x >= _local2[0].length)))) || ((_local19.y < 0)))) || ((_local19.y >= _local2.length)))){ _arg1.hitBounds = true; }; if ((((((((_local20.x < 0)) || ((_local20.x >= _local2[0].length)))) || ((_local20.y < 0)))) || ((_local20.y >= _local2.length)))){ _arg1.hitBounds = true; }; if ((((((((_local21.x < 0)) || ((_local21.x >= _local2[0].length)))) || ((_local21.y < 0)))) || ((_local21.y >= _local2.length)))){ _arg1.hitBounds = true; }; if ((((((((_local22.x < 0)) || ((_local22.x >= _local2[0].length)))) || ((_local22.y < 0)))) || ((_local22.y >= _local2.length)))){ _arg1.hitBounds = true; }; if (_arg1.hitBounds == false){ _local23 = tileTypes[_local2[_local19.y][_local19.x]]; _local24 = tileTypes[_local2[_local20.y][_local20.x]]; _local25 = tileTypes[_local2[_local21.y][_local21.x]]; _local26 = tileTypes[_local2[_local22.y][_local22.x]]; _arg1.tlTileType = _local23; _arg1.trTileType = _local24; _arg1.blTileType = _local25; _arg1.brTileType = _local26; }; } function frame31(){ stage.quality = StageQuality.HIGH; setMenu(); stop(); } public function hideMouse(){ Mouse.hide(); } public function getPointInWorldSpace(_arg1, _arg2:Point):Point{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local3 = (((_arg1.rotation * -1) * Math.PI) / 180); _local4 = Math.cos(_local3); _local5 = Math.sin(_local3); _local6 = ((_local4 * _arg2.x) - (_local5 * _arg2.y)); _local7 = ((_local5 * _arg2.x) + (_local4 * _arg2.y)); _local6 = (_local6 + _arg1.newX); _local7 = (_local7 + _arg1.newZ); return (new Point(_local6, _local7)); } public function createCharacters(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; characterStack = new Array(); _local1 = {label:"count", name:"The Count", material:dracMaterial}; _local2 = {label:"franky", name:"Franky", material:hulkMaterial}; _local3 = {label:"professor", name:"Professor", material:docMaterial}; _local4 = {label:"mummy", name:"Mummy", material:mummyMaterial}; characterStack = [_local1, _local2, _local3, _local4]; } public function keyUpHandler(_arg1:KeyboardEvent){ var _local2:Number; _local2 = _arg1.keyCode; if (_local2 == 37){ game.keys.left = false; }; if (_local2 == 39){ game.keys.right = false; }; if (_local2 == 90){ game.keys.buttonA = false; }; if (_local2 == 88){ game.keys.buttonB = false; }; if (_local2 == 67){ game.keys.buttonC = false; }; if (_local2 == 38){ game.keys.up = false; }; if (_local2 == 40){ game.keys.down = false; }; if (_local2 == 32){ game.keys.a = false; }; } public function checkForModels(_arg1:Event){ if (ALL_MODELS_LOADED){ stage.removeEventListener(Event.ENTER_FRAME, checkForModels); gotoAndPlay("menu"); }; } public function outputMap(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; _local1 = game.levels[playerSettings.levelId].map; _local2 = ""; _local3 = 0; _local4 = 0; _local5 = _local1[0].length; _local6 = _local1.length; _local3 = 0; while (_local3 < _local6) { _local2 = (_local2 + (("\rrow" + _local3) + " =[")); _local4 = 0; while (_local4 < _local5) { _local2 = (_local2 + _local1[_local3][_local4]); if (_local4 < (_local5 - 1)){ _local2 = (_local2 + ","); }; _local4++; }; _local2 = (_local2 + "];"); _local3++; }; output.text = _local2; } function frame8(){ stage.showDefaultContextMenu = false; finished = false; stage.addEventListener(Event.ENTER_FRAME, loader); stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpKill5); stop(); } public function checkSpeedUps(_arg1){ var _local2:*; var _local3:*; var _local4:*; _local2 = 0; _local3 = game.speedUpStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.speedUpStack[_local2]; if (_arg1.params.lastSpeedUp != _local4){ if ((((_arg1.xTile == _local4.xTile)) && ((_arg1.yTile == _local4.yTile)))){ _arg1.params.isBoosting = true; _arg1.params.boostLength = 30; _arg1.params.lastSpeedUp = _local4; debug(((_local4.xTile + ",") + _local4.yTile)); soundFxChan = speedUpSnd.play(0, 0, sfxTransform); }; } else { _local4.count++; if (_local4.count >= _local4.resetCount){ _local4.count = 0; _local4.active = true; }; }; _local2++; }; } function frame37(){ setInstructions(); stop(); } public function endPreload():void{ stage.removeEventListener(Event.ENTER_FRAME, loader); stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUpKill5); gotoAndPlay("loaded"); } public function addCheckPoints(){ var _local1:*; var _local2:*; var _local3:*; game.checkpointStack = new Array(); _local1 = 0; _local2 = game.levels[playerSettings.levelId].checkPointsToAdd.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.levels[playerSettings.levelId].checkPointsToAdd[_local1]; addCheckPoint(_local3); _local1++; }; } function frame13(){ spaceLock = 0; wpStack = new Array(); WAIT = 0; thrust = 0; maxThrust = 200000; thrustDamping = 300; rotationSpeed = 4.5; redColorMat = new ColorMaterial(0xFF0000, 100); redList = new MaterialsList({front:redColorMat, left:redColorMat, right:redColorMat, top:redColorMat, bottom:redColorMat, back:redColorMat}); numberCount = 0; MAP_EDIT = 0; PLACE_ROAD = 1; IN_GAME = 2; editMode = IN_GAME; currentCharTex = 0; charId = 0; lastName = null; worldStack = new Array(); world1Level1 = {id:0, name:"Track 1 . dead easy", tileSet:0, mapId:0}; world1Level2 = {id:1, name:"Track 2 . all aboard", tileSet:0, mapId:1}; world1Level3 = {id:2, name:"Track 3 . ride after death", tileSet:0, mapId:2}; world1LevelStack = [world1Level1, world1Level2, world1Level3]; world2Level1 = {id:3, name:"track 4. swamp thing", tileSet:2, mapId:3}; world2Level2 = {id:7, name:"track 5. full marsh ahead", tileSet:2, mapId:7}; world2Level3 = {id:5, name:"track 6. murky races", tileSet:2, mapId:5}; world3Level1 = {id:4, name:"Track 7. deadmans corner", tileSet:1, mapId:4}; world3Level2 = {id:6, name:"Track 8. Corpse on board", tileSet:1, mapId:6}; world3Level3 = {id:8, name:"Track 9. dust to dust", tileSet:1, mapId:8}; world2LevelStack = [world2Level1, world2Level2, world2Level3]; world3LevelStack = [world3Level1, world3Level2, world3Level3]; worldStack[0] = world1LevelStack; worldStack[1] = world2LevelStack; worldStack[2] = world3LevelStack; trackId = [13108, 13412, 13413, 13414, 13415, 13416, 13417, 13418, 13419]; QUIT_GAME = false; RACECAR1MODEL = kartDae; RACECAR2MODEL = kartDae; COLLADASCALE = 0.15; PLANE = 0; CUBE = 1; PLAY = 0; EDIT = 1; PRACTICE = 2; GAME_OVER = 3; soundFxChan = new SoundChannel(); musicChan = new SoundChannel(); sfxTransform = new SoundTransform(); musicTransform = new SoundTransform(); gameMusic = new GameMusic(); powerUpSnd = new PowerUpSnd(); lightningSnd = new LightningSnd(); explosionSnd = new ExplosionSnd(); starPowerUpSnd = new StarPowerUpSnd(); speedUpSnd = new SpeedUpSnd(); cpBeepSnd = new CpBeepSnd(); hitSnd = new HitSnd(); MODELS_LOADED = false; m_timeStep = (1 / 30); m_iterations = 10; mouseD = false; drag = false; hitSndWait = 0; powerUp1 = {id:0, name:"Star", onUse:onUseStarPowerUp}; powerUp2 = {id:1, name:"Lightning", onUse:onUseLightningPowerUp}; powerUp3 = {id:2, name:"Bomb", onUse:onUseBombPowerUp}; powerUpStack = [powerUp1, powerUp2, powerUp3]; particleStack = new Array(); GAME_QUALITY = StageQuality.MEDIUM; stage.quality = StageQuality.HIGH; sampleGameSiKidsAPI(); trackThis("GAME_LOADED"); init(); } public function outputPath(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = wpStack.length; _local3 = ""; _local1 = 0; while (_local1 < _local2) { _local3 = (_local3 + "newWp = new Object();\r"); _local3 = (_local3 + (("newWp.x = " + wpStack[_local1].x) + "\r")); _local3 = (_local3 + (("newWp.y = " + wpStack[_local1].y) + "\r")); _local3 = (_local3 + (("newWp.z = " + wpStack[_local1].z) + "\r")); _local3 = (_local3 + (("newWp.rotation = " + wpStack[_local1].rotation) + "\r")); _local3 = (_local3 + "waypointStack.push(newWp)\r"); _local1++; }; output.text = _local3; } public function onMouseUpReturnToMenuBtn(_arg1:MouseEvent){ returnToMenu(); } public function setCharacterSelect(){ var _local1:*; if (lastName != null){ screenNameTx.text = lastName; }; createCharacters(); playerSettings = new Object(); _local1 = new Sprite(); addChild(_local1); initPv(_local1); charSelectModel = new DisplayObject3D(); charSelectModel.scaleX = (charSelectModel.scaleY = (charSelectModel.scaleZ = 15)); scene.addChild(charSelectModel); kart = masterKart.clone(); kart.scaleY = -1; kart.rotationX = -90; charSelectModel.addChild(kart); masterCharMesh.replaceMaterialByName(characterStack[charId].material, "SurfaceMaterial00"); charMesh = masterCharMesh.clone(); charMesh.scaleY = -1; charMesh.rotationX = -90; charSelectModel.addChild(charMesh); camera.z = 400; camera.y = 400; camera.lookAt(charSelectModel); addEventListener(Event.ENTER_FRAME, characterSelectLoop); leftArrowBtn.inc = -1; rightArrowBtn.inc = 1; leftArrowBtn.mouseChildren = false; rightArrowBtn.mouseChildren = false; leftArrowBtn.buttonMode = true; rightArrowBtn.buttonMode = true; leftArrowBtn.addEventListener(MouseEvent.MOUSE_UP, clickCharTexButton); rightArrowBtn.addEventListener(MouseEvent.MOUSE_UP, clickCharTexButton); prepButton(startBtn, rollOver, rollOut, characterSelectStartBtnClicked); addEventListener(Event.ENTER_FRAME, characterSelectLoop); screenNameTx.addEventListener(FocusEvent.FOCUS_IN, focusInListener); screenNameTx.restrict = "a-z A-Z 0-9"; prepButton(backBtn, rollOver, rollOut, backBtnClickedCharSelect); } function frame54(){ setCredits(); stop(); } public function createTileTypes(){ var _local1:*; tileTypes = new Array(); _local1 = new Object(); _local1.materialId = 0; _local1.label = "EMPTY FLOOR"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 0; _local1.walkable = true; _local1.isRoad = false; _local1.friction = 0.2; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 6; _local1.label = "CRATE"; _local1.type = CUBE; _local1.height = 50; _local1.rotation = 0; _local1.walkable = false; _local1.breakable = false; _local1.isRoad = false; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 2; _local1.label = "ROAD H"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 180; _local1.walkable = false; _local1.isRoad = true; _local1.roadValue = 17; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 2; _local1.label = "ROAD V"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 270; _local1.isRoad = true; _local1.roadValue = 0x1100; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 7; _local1.label = "ROAD CORNER"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 0; _local1.isRoad = true; _local1.roadValue = 0x1010; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 7; _local1.label = "ROAD CORNER 2"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 270; _local1.isRoad = true; _local1.roadValue = 272; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 7; _local1.label = "ROAD CORNER 3"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 180; _local1.isRoad = true; _local1.roadValue = 0x0101; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 7; _local1.label = "ROAD CORNER 4"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 90; _local1.isRoad = true; _local1.roadValue = 4097; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 1; _local1.label = "ROAD EMPTY"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 0; _local1.isRoad = true; _local1.roadValue = 0x1111; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 5; _local1.label = "ROAD END 1"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 0; _local1.isRoad = true; _local1.roadValue = 0x0100; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 5; _local1.label = "ROAD END 2"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 270; _local1.isRoad = true; _local1.roadValue = 1; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 5; _local1.label = "ROAD END 3"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 180; _local1.isRoad = true; _local1.roadValue = 0x1000; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 5; _local1.label = "ROAD END 4"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 90; _local1.isRoad = true; _local1.roadValue = 16; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 4; _local1.label = "ROAD T 1"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 0; _local1.isRoad = true; _local1.roadValue = 4113; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 4; _local1.label = "ROAD T 2"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 270; _local1.isRoad = true; _local1.roadValue = 4368; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 4; _local1.label = "ROAD T 3"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 180; _local1.isRoad = true; _local1.roadValue = 273; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); _local1 = new Object(); _local1.materialId = 4; _local1.label = "ROAD T 4"; _local1.type = PLANE; _local1.height = 0; _local1.rotation = 90; _local1.isRoad = true; _local1.roadValue = 4353; _local1.walkable = true; _local1.friction = 1; tileTypes.push(_local1); } function frame1(){ ALL_MODELS_LOADED = false; kartDae = <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1"> <asset> <contributor> <authoring_tool>Swift 3D 1.0 for Papervision3D</authoring_tool> </contributor> <created>2009-05-26T15:22:16Z</created> <modified>2009-05-26T15:22:16Z</modified> <up_axis>Z_UP</up_axis> </asset> <library_images> <image id="dracula-Image" name="dracula-Image"> <init_from>"models/dracula.png"</init_from> </image> <image id="kart-Image" name="kart-Image"> <init_from>"kart.jpg"</init_from> </image> <image id="shadow-Image" name="shadow-Image"> <init_from>"shadow.png"</init_from> </image> <image id="set-Image" name="set-Image"> <init_from>"set.jpg"</init_from> </image> <image id="ball-Image" name="ball-Image"> <init_from>"ball.jpg"</init_from> </image> <image id="ballshadow-Image" name="ballshadow-Image"> <init_from>"ballshadow.png"</init_from> </image> <image id="title-Image" name="title-Image"> <init_from>title.jpg</init_from> </image> </library_images> <library_effects> <effect id="dracula-fx"> <profile_COMMON> <newparam sid="dracula-Surface"> <surface type="2D"> <init_from>dracula-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="dracula-Sampler"> <sampler2D> <source>dracula-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="dracula-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="kart-fx"> <profile_COMMON> <newparam sid="kart-Surface"> <surface type="2D"> <init_from>kart-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="kart-Sampler"> <sampler2D> <source>kart-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="kart-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="shadow-fx"> <profile_COMMON> <newparam sid="shadow-Surface"> <surface type="2D"> <init_from>shadow-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="shadow-Sampler"> <sampler2D> <source>shadow-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="shadow-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>128</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="set-fx"> <profile_COMMON> <newparam sid="set-Surface"> <surface type="2D"> <init_from>set-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="set-Sampler"> <sampler2D> <source>set-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="set-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="ball-fx"> <profile_COMMON> <newparam sid="ball-Surface"> <surface type="2D"> <init_from>ball-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="ball-Sampler"> <sampler2D> <source>ball-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="ball-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="ballshadow-fx"> <profile_COMMON> <newparam sid="ballshadow-Surface"> <surface type="2D"> <init_from>ballshadow-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="ballshadow-Sampler"> <sampler2D> <source>ballshadow-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="ballshadow-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>128</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> <effect id="title-fx"> <profile_COMMON> <newparam sid="title-Surface"> <surface type="2D"> <init_from>title-Image</init_from> <format>A8R8G8B8</format> </surface> </newparam> <newparam sid="title-Sampler"> <sampler2D> <source>title-Surface</source> <minfilter>LINEAR_MIPMAP_LINEAR</minfilter> <magfilter>LINEAR</magfilter> </sampler2D> </newparam> <technique sid="common"> <phong> <ambient> <color>1 1 1 1</color> </ambient> <diffuse> <texture texture="title-Sampler" texcoord="TEX0"/> </diffuse> <specular> <color>0 0 0 1</color> </specular> <shininess> <float>4.26667</float> </shininess> <reflective> <color>0 0 0 1</color> </reflective> <reflectivity> <float>1</float> </reflectivity> </phong> </technique> </profile_COMMON> </effect> </library_effects> <library_materials> <material id="dracula" name="dracula"> <instance_effect url="#dracula-fx"/> </material> <material id="kart" name="kart"> <instance_effect url="#kart-fx"/> </material> <material id="shadow" name="shadow"> <instance_effect url="#shadow-fx"/> </material> <material id="set" name="set"> <instance_effect url="#set-fx"/> </material> <material id="ball" name="ball"> <instance_effect url="#ball-fx"/> </material> <material id="ballshadow" name="ballshadow"> <instance_effect url="#ballshadow-fx"/> </material> <material id="title" name="title"> <instance_effect url="#title-fx"/> </material> </library_materials> <library_geometries> <geometry id="kart-Geometry" name="kart"> <mesh> <source id="kart-Positions" name="kart-Positions"> <float_array id="kart-Positions-Array" count="36"> 0.435458 -1.56661 -1.66778 1.11656 0.370619 -1.66778 -1.10539 0.370619 -1.66778 -0.55828 1.20804 -1.66778 0.569445 1.2192 -1.66778 -0.446624 -1.57219 -1.66778 -0.446624 -1.57219 -2.78434 -1.10539 0.370619 -2.78434 -0.55828 1.20804 -2.78434 0.569445 1.2192 -2.78434 1.11656 0.370619 -2.78434 0.435458 -1.56661 -2.78434 </float_array> <technique_common> <accessor source="#kart-Positions-Array" count="12" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="kart-UVs" name="kart-UVs"> <float_array id="kart-UVs-Array" count="96"> 0.749898 0.219565 0.938133 0.754955 0.324054 0.754955 0.47526 0.986392 0.938133 0.754955 0.786928 0.989478 0.749898 0.219565 0.324054 0.754955 0.506118 0.218022 0.324054 0.754955 0.938133 0.754955 0.47526 0.986392 0.31584 0.0191504 0.00791014 0.0191504 0.00791012 0.554948 0.00791012 0.554948 0.31584 0.554948 0.31584 0.0191504 0.31584 0.554948 0.00791012 0.554948 0.00791009 0.785895 0.00791009 0.785895 0.31584 0.785895 0.31584 0.554948 0.31584 0.788975 0.00791009 0.788975 0.00791012 0.554948 0.00791012 0.554948 0.31584 0.554948 0.31584 0.788975 0.31584 0.554948 0.00791012 0.554948 0.00791014 0.0206901 0.00791014 0.0206901 0.31584 0.0206901 0.31584 0.554948 0.776674 0.2322 0.988951 0.2322 0.988951 0.0178 0.988951 0.0178 0.776674 0.0178 0.776674 0.2322 0.495424 0.0120232 0.707701 0.0120232 0.707701 0.179722 0.707701 0.179722 0.495424 0.179722 0.495424 0.0120232 </float_array> <technique_common> <accessor source="#kart-UVs-Array" count="48" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="kart-Vertices"> <input semantic="POSITION" source="#kart-Positions"/> </vertices> <triangles material="SurfaceMaterial00" count="16"> <!-- kart --> <input semantic="VERTEX" source="#kart-Vertices" offset="0"/> <input semantic="TEXCOORD" source="#kart-UVs" offset="1" set="0"/> <p>0 0 1 1 2 2 3 3 1 4 4 5 0 6 2 7 5 8 2 9 1 10 3 11 6 12 5 13 2 14 2 15 7 16 6 17 7 18 2 19 3 20 3 21 8 22 7 23 9 24 4 25 1 26 1 27 10 28 9 29 10 30 1 31 0 32 0 33 11 34 10 35 8 36 3 37 4 38 4 39 9 40 8 41 11 42 0 43 5 44 5 45 6 46 11 47 </p> </triangles> </mesh> </geometry> <geometry id="shadow-Geometry" name="shadow"> <mesh> <source id="shadow-Positions" name="shadow-Positions"> <float_array id="shadow-Positions-Array" count="18"> -0.5264 1.2837 -2.26778 -1.36789 -1.10972 -2.26778 1.3773 -1.10972 -2.26778 0.701349 -2.14434 -2.26778 -0.69194 -2.15814 -2.26778 0.5634 1.2906 -2.26778 </float_array> <technique_common> <accessor source="#shadow-Positions-Array" count="6" stride="3"> <param name="X" type="float"/> <param name="Y" type="float"/> <param name="Z" type="float"/> </accessor> </technique_common> </source> <source id="shadow-UVs" name="shadow-UVs"> <float_array id="shadow-UVs-Array" count="24"> 0.749898 0.219565 0.938133 0.754955 0.324054 0.754955 0.47526 0.986392 0.938133 0.754955 0.786928 0.989478 0.749898 0.219565 0.324054 0.754955 0.506118 0.218022 0.324054 0.754955 0.938133 0.754955 0.47526 0.986392 </float_array> <technique_common> <accessor source="#shadow-UVs-Array" count="12" stride="2"> <param name="S" type="float"/> <param name="T" type="float"/> </accessor> </technique_common> </source> <vertices id="shadow-Vertices"> <input semantic="POSITION" source="#shadow-Positions"/> </vertices> <triangles material="SurfaceMaterial00" count="4"> <!-- shadow --> <input semantic="VERTEX" source="#shadow-Vertices" offset="0"/> <input semantic="TEXCOORD" source="#shadow-UVs" offset="1" set="0"/> <p>0 0 1 1 2 2 3 3 1 4 4 5 0 6 2 7 5 8 2 9 1 10 3 11 </p> </triangles> </mesh> </geometry> </library_geometries> <library_visual_scenes> <visual_scene id="VisualSceneNode" name="Scene"> <node id="kart" name="kart" type="NODE"> <translate sid="Translation"> 1.77657e-015 0.168047 -3.13 </translate> <rotate sid="Rotation"> 0 2.22045e-016 1 0 </rotate> <scale sid="Scale"> 1 1 1 </scale> <translate sid="Pivot"> -0.00558281 0.176495 2.7845 </translate> <instance_geometry url="#kart-Geometry"> <bind_material> <technique_common> <instance_material symbol="SurfaceMaterial00" target="#kart"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> <node id="shadow" name="shadow" type="NODE"> <translate sid="Translation"> 0.00558281 -0.314542 -2.7845 </translate> <rotate sid="Rotation"> -2.71051e-020 -2.22045e-016 -1 180 </rotate> <scale sid="Scale"> 1 1 1 </scale> <translate sid="Pivot"> -0.00470448 0.433768 2.26778 </translate> <instance_geometry url="#shadow-Geometry"> <bind_material> <technique_common> <instance_material symbol="SurfaceMaterial00" target="#shadow"> <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0"/> </instance_material> </technique_common> </bind_material> </instance_geometry> </node> </node> </visual_scene> </library_visual_scenes> <scene> <instance_visual_scene url="#VisualSceneNode"/> </scene> </COLLADA> ; } public function nextPowerUpItem(){ var _local1:*; if (!game.raceOver){ _local1 = inGameUi.powerUpSelector; _local1.currentItem++; if (_local1.currentItem >= powerUpStack.length){ _local1.currentItem = 0; }; _local1.icons.gotoAndStop((_local1.currentItem + 1)); nextPowerUpTimeoutId = setTimeout(nextPowerUpItem, 200); }; } public function addItemWorldPos(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9):Object{ var _local10:*; _local10 = new Object(); if (!game.raceOver){ _local10.label = _arg1; _local10.model = new BillBoard(_arg2, _arg3, _arg4, 2, 2); _local10.model.x = _arg5; _local10.model.y = _arg6; _local10.model.z = _arg7; _local10.active = true; _local10.onCollide = _arg8; _local10.params = _arg9; scene.addChild(_local10.model); game.itemStack.push(_local10); }; return (_local10); } public function setMenu(){ prepButton(startBtn, rollOver, rollOut, startBtnClicked); prepButton(instructionsBtn, rollOver, rollOut, instructionsBtnClicked); prepButton(creditsBtn, rollOver, rollOut, creditsBtnClicked); prepButton(practiceBtn, rollOver, rollOut, practiceBtnClicked); prepButton(kill5LogoBtn, rollOver, rollOut, onMouseUpKill5); soundFxChan = starPowerUpSnd.play(0, 0, sfxTransform); if (GAME_QUALITY == StageQuality.MEDIUM){ hiBtn.alpha = 1; lowBtn.alpha = 0.5; } else { hiBtn.alpha = 0.5; lowBtn.alpha = 1; }; prepButton(lowBtn, rollOver, rollOut, onMouseUpLowBtn); prepButton(hiBtn, rollOver, rollOut, onMouseUpHiBtn); } public function buildNodes(_arg1):Array{ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; _local2 = _arg1.split("*"); _local3 = 0; _local4 = _local2.length; _local5 = new Array(); _local3 = 0; while (_local3 < (_local4 - 1)) { _local6 = _local2[_local3]; _local7 = _local6.split("|"); _local5.push(_local7); _local3++; }; return (_local5); } public function objectCycle(_arg1){ var _local2:*; var _local3:Number; var _local4:Number; var _local5:*; _local2 = game.levels[playerSettings.levelId].map; _local3 = game.tileStack.length; _local4 = 0; trace(("tileTypes.length " + tileTypes.length)); _local4 = 0; while (_local4 < _local3) { _local5 = game.tileStack[_local4]; if (_local5.innerModel == _arg1){ _local2[_local5.tileY][_local5.tileX] = (_local2[_local5.tileY][_local5.tileX] + 1); if (_local2[_local5.tileY][_local5.tileX] > (tileTypes.length - 1)){ _local2[_local5.tileY][_local5.tileX] = 0; }; redrawTile(_local5, true); }; _local4++; }; outputMap(); } public function addMaterial(_arg1, _arg2, _arg3, _arg4){ var _local5:*; _local5 = new BitmapAssetMaterial(_arg1); _local5.interactive = _arg2; _local5.doubleSided = _arg3; materialStack.push(_local5); return (_local5); } public function addCheckPoint(_arg1){ var _local2:*; _local2 = new Object(); _local2.model = new Cube(materialListStack[0], _arg1.width, 100, _arg1.depth, 2, 2, 2); _local2.model.x = (_arg1.x * game.tileWidth); _local2.model.y = _arg1.y; _local2.model.z = (_arg1.z * game.tileWidth); _local2.activeModel = new Cube(materialListStack[1], _arg1.width, 100, _arg1.depth, 2, 2, 2); _local2.activeModel.x = (_arg1.x * game.tileWidth); _local2.activeModel.y = _arg1.y; _local2.activeModel.z = (_arg1.z * game.tileWidth); if (_arg1.width > 100){ _local2.model.z = (_local2.model.z - 50); _local2.activeModel.z = (_local2.activeModel.z - 50); } else { _local2.model.z = (_local2.model.z + 50); _local2.activeModel.z = (_local2.activeModel.z + 50); _local2.model.x = (_local2.model.x + 50); _local2.activeModel.x = (_local2.activeModel.x + 50); }; _local2.activeModel.visible = false; _local2.active = false; scene.addChild(_local2.model); scene.addChild(_local2.activeModel); game.checkpointStack.push(_local2); } public function fadeLightningOut(){ TweenLite.to(lightningBlast, 0.2, {alpha:0}); } public function setInputs(){ stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); } function frame60(){ setCharacterSelect(); stop(); } function frame7(){ MochiAd.showPreGameAd({clip:root, id:"fdfe6ec6335f0830", res:"550x400"}); } public function onMouseUpLowBtn(_arg1:MouseEvent){ GAME_QUALITY = StageQuality.LOW; hiBtn.alpha = 0.5; lowBtn.alpha = 1; } function frame72(){ SiKidsApi.USER_NAME = playerSettings.screenName; setWorldSelect(); stop(); } public function init(){ setSoundControl(); } public function gotoUrl(_arg1){ var _local2:String; var _local3:URLRequest; _local2 = _arg1; _local3 = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } public function msToDisplayTime(_arg1){ var _local2:*; var _local3:*; var _local4:*; _local2 = right(("0" + Math.floor(((_arg1 % 1000) / 10))), 2); _local3 = right(("0" + (Math.floor((_arg1 / 1000)) % 60)), 2); _local4 = Math.floor((_arg1 / 60000)); return (((((_local4 + ":") + _local3) + ":") + _local2)); } public function resetPowerUpSelector(){ var _local1:*; if (!game.raceOver){ _local1 = inGameUi.powerUpSelector; _local1.icons.alpha = 0; _local1.icons.gotoAndPlay(1); _local1.alpha = 0; }; } public function clearPv(){ trace("::::: CLEAR PAPERVISION"); camera.eye = null; camera.screen = null; camera.target = null; camera.transform = null; camera.view = null; camera.viewport = null; camera.world = null; viewport.parent.removeChild(viewport); viewport = null; scene = null; camera = null; renderer = null; } public function gameObjectLoaded(_arg1){ trace("Loaded game object"); game.gameObjectsLoaded++; if (game.gameObjectsLoaded >= game.gameObjectLoadStack.length){ allGameObjectsLoaded(); } else { loadNextGameObject(); }; } public function setResults(){ results.profile1.screenNameTx.text = game.playersFinished[0].name; results.profile1.timeTx.text = game.playersFinished[0].timeDisplay; results.profile1.portrait.gotoAndStop(game.playersFinished[0].portraitLabel); if (game.playersFinished[1]){ results.profile2.screenNameTx.text = game.playersFinished[1].name; results.profile2.timeTx.text = game.playersFinished[1].timeDisplay; results.profile2.portrait.gotoAndStop(game.playersFinished[1].portraitLabel); } else { results.profile2.visible = false; }; if (game.playersFinished[2]){ results.profile3.screenNameTx.text = game.playersFinished[2].name; results.profile3.timeTx.text = game.playersFinished[2].timeDisplay; results.profile3.portrait.gotoAndStop(game.playersFinished[2].portraitLabel); } else { results.profile3.visible = false; }; results.profile1.rankTx.text = "1st"; results.profile2.rankTx.text = "2nd"; results.profile3.rankTx.text = "3rd"; setTimeout(gotoRaceOverOptions, 4000); } public function onMouseUpSoundBtn(_arg1:MouseEvent){ var _local2:*; _local2 = _arg1.target; if (_local2.state == 1){ setSoundFxVolume(0); _local2.state = 0; _local2.gotoAndStop("off"); } else { setSoundFxVolume(1); _local2.state = 1; _local2.gotoAndStop("on"); }; } function frame82(){ setLevelSelect(); } public function redrawTile(_arg1, _arg2){ scene.removeChild(_arg1.model); drawTile(_arg1.tileX, _arg1.tileY, _arg1, _arg2); } public function onUseBombPowerUp(_arg1){ var _local2:*; var _local3:*; var _local4:*; if (!game.raceOver){ _local2 = _arg1.model; _local3 = new Object(); _local3.owner = _arg1; _local3.fullyArmed = false; _local3.active = true; _local4 = addItemWorldPos("bomb", bombMaterial, 32, 32, _local2.x, 20, _local2.z, bombCollide, _local3); addTimeout(setTimeout(makeBombFullyArmed, 1000, _local4)); _arg1.params.hasPowerUp = false; }; } public function addSpeedUp(_arg1, _arg2, _arg3, _arg4){ var _local5:*; var _local6:*; var _local7:*; _local5 = findTileByCoords(_arg2, _arg3); _local6 = new CompositeMaterial(); _local6.addMaterial(_local5.innerModel.material); _local6.addMaterial(_arg1); _local6.interactive = true; _local5.innerModel.material = _local6; _local7 = new Object(); _local7.xTile = _arg2; _local7.yTile = _arg3; _local7.active = true; _local7.count = 0; _local7.resetCount = 50; game.speedUpStack.push(_local7); } public function gotoMenu(){ gotoAndStop("menu"); } function frame100(){ stage.quality = GAME_QUALITY; trackThis("RACE_START"); setGame(); stop(); } public function endBtnClicked(_arg1:MouseEvent){ game.raceOver = true; removeGameLoop(); clearAllTimeouts(); gotoRaceOverOptions(); QUIT_GAME = true; } public function removeTileMouseEvents(){ var _local1:*; var _local2:*; var _local3:*; _local1 = game.tileStack.length; _local2 = 0; _local2 = 0; while (_local2 < _local1) { _local3 = game.tileStack[_local2]; _local3.innerModel.removeEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onPressMapObject); _local2++; }; } function frame109(){ stage.quality = StageQuality.HIGH; setResults(); stop(); } public function onMouseUpEditBtn(_arg1:MouseEvent){ if (editMode == IN_GAME){ trace(">> IN EDIT MODE [object cycle]"); addTileMouseEvents(); editMode = MAP_EDIT; } else { if (editMode == MAP_EDIT){ trace(">>IN EDIT MODE [create road]"); editMode = PLACE_ROAD; } else { if (editMode == PLACE_ROAD){ trace(">>RETURN TO PLAY MODE"); removeTileMouseEvents(); editMode = IN_GAME; }; }; }; } public function setWorldSelect(){ setWorldThumbs(); prepButton(backWorldBtn, rollOver, rollOut, worldBackBtnClicked); } public function clearItems(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = game.itemStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.itemStack[_local1]; scene.removeChild(_local3.model); _local3.model = null; _local3 = null; _local1++; }; game.itemStack = null; } public function addTimeout(_arg1){ game.timeoutStack.push(_arg1); } public function rollOut(_arg1){ _arg1.target.gotoAndStop("out"); } public function initGameObjects(){ game = new Object(); game.gameObjectStack = new Array(); game.gameObjectsLoaded = 0; game.gameObjectLoadStack = new Array(); game.ghostStack = new Array(); } public function render(){ renderer.renderScene(scene, camera, viewport); } public function setFlatGame(){ var _local1:*; _local1 = new Sprite(); game.flatGame = _local1; game.flatGame.visible = false; onTop.addChild(game.flatGame); } public function replayTrack(){ raceComplete(false); mode = PLAY; gotoGame(); } public function gotoCharacterSelect(){ gotoAndStop("characterSelect"); } public function newGame(){ QUIT_GAME = true; makeWorld(); initGameObjects(); resetGamevars(); setGameCanvas(); createTileTypes(); initPv(game.pvCanvas); } public function gameLoop(_arg1){ var _local2:*; var _local3:*; if (mode != GAME_OVER){ render(); if (game.raceStarted){ if (game.inGameScreen){ _local2 = getTime(); _local3 = _local2.length; if (_local3 < 6){ if (_local3 == 4){ _local2 = ("00" + _local2); } else { if (_local3 == 5){ _local2 = ("0" + _local2); }; }; }; inGameUi.timer0Tx.text = _local2.charAt(0); inGameUi.timer1Tx.text = _local2.charAt(1); inGameUi.timer3Tx.text = _local2.charAt(2); inGameUi.timer4Tx.text = _local2.charAt(3); inGameUi.timer6Tx.text = _local2.charAt(4); inGameUi.timer7Tx.text = _local2.charAt(5); }; updateGameObjects(); checkForEndOfRace(); updateParticles(); } else { camera.lookAt(game.gameObjectStack[0].model); camera.x = game.gameObjectStack[0].model.x; camera.z = (game.gameObjectStack[0].model.z - 200); }; }; updateBox2d(); } public function instructionsBtnClicked(_arg1){ gotoInstructions(); } public function startPowerUpSelector(_arg1){ var _local2:*; var _local3:*; if (!game.raceOver){ _local2 = inGameUi.powerUpSelector; _local2.alpha = 1; _local2.icons.alpha = 1; _local2.currentItem = -1; nextPowerUpItem(); _local3 = (500 + int((Math.random() * 500))); addTimeout(setTimeout(stopPowerUpSelector, _local3, _arg1)); }; } function frame117(){ setRaceOverOptions(); gameName = "ghoulracers"; gameId = trackId[playerSettings.levelId]; hashKey = "7cf8b5fbe65ed78da52a2c071e9488cc"; gameUrl = loaderInfo.loaderURL; SiKidsApi.getInstance().init(gameUrl, gameName, gameId, hashKey); SiKidsApi.SCORE = TIME_TO_SUBMIT; stop(); } public function setWorldThumbs(){ world1SelectBtn.worldId = 0; world2SelectBtn.worldId = 1; world3SelectBtn.worldId = 2; world1SelectBtn.description = "The Ghost Train\rCome one Come all"; prepButton(world1SelectBtn, rollOverWorldThumb, rollOutWorldThumb, onMouseUpWorldThumb); world2SelectBtn.description = "The Swamp\ran unholy place where evil lurks"; prepButton(world2SelectBtn, rollOverWorldThumb, rollOutWorldThumb, onMouseUpWorldThumb); world3SelectBtn.description = "The Graveyard\ra final resting place but there is no rest for you"; prepButton(world3SelectBtn, rollOverWorldThumb, rollOutWorldThumb, onMouseUpWorldThumb); } public function gotoCredits(){ gotoAndStop("credits"); } public function gotoWorldSelect(){ gotoAndStop("worldSelect"); } public function onMouseUpKill5(_arg1:MouseEvent){ gotoUrl("http://www.kill5.com/home.php?from=gr"); } public function practiceBtnClicked(_arg1){ mode = PRACTICE; gotoCharacterSelect(); } public function characterSelectLoop(_arg1:Event){ charSelectModel.yaw(0.5); render(); } public function checkCheckPoints(_arg1){ var _local2:*; var _local3:*; var _local4:*; _local2 = 0; _local3 = game.checkpointStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.checkpointStack[_local2]; if (((((_arg1.model.hitTestObject(_local4.model)) && ((_local4.active == false)))) && ((_local2 == _arg1.params.activeCheckMarker)))){ trace(("HIT CHECK POINT " + _local2)); _local4.model.visible = false; _local4.activeModel.visible = true; _local4.active = true; _arg1.params.activeCheckMarker++; _arg1.params.activeCheckCount++; soundFxChan = cpBeepSnd.play(0, 0, sfxTransform); } else { if (((((((_arg1.model.hitTestObject(_local4.model)) && ((_local4.active == true)))) && ((_local2 == 0)))) && ((_arg1.params.activeCheckMarker == game.checkpointStack.length)))){ lapComplete(_arg1); break; }; }; _local2++; }; } public function rollOutWorldThumb(_arg1:MouseEvent){ descriptionTx.text = ""; _arg1.target.gotoAndStop("out"); } public function onMouseUpSkipBtn(_arg1:MouseEvent){ game.complete = true; game.raceOver = true; showResults(); } public function setCredits(){ prepButton(startBtn, rollOver, rollOut, startBtnClicked); prepButton(backBtn, rollOver, rollOut, backBtnClicked); } public function showStartRaceSplash(){ setTimeout(splashDone, 100); } public function spawnBlock(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){ var _local7:*; trace("SPAWN BLOCK"); bodyDef = new b2BodyDef(); boxDef = new b2BoxDef(); boxDef.extents.Set(_arg4, _arg5); boxDef.friction = 20; bodyDef.userData = new Car2d(); boxDef.density = _arg6; boxDef.restitution = 0.5; bodyDef.position.Set(_arg2, _arg3); bodyDef.AddShape(boxDef); bodyDef.userData.label = _arg1; bodyDef.userData.width = ((boxDef.extents.x * 2) + 5); bodyDef.userData.height = ((boxDef.extents.y * 2) + 5); bodyDef.linearDamping = 0.11; bodyDef.angularDamping = 0.02; box2dCanvas.addChild(bodyDef.userData); _local7 = m_world.CreateBody(bodyDef); return (_local7); } public function setGameCanvas(){ game.bgCanvas = new Sprite(); game.pvCanvas = new Sprite(); game.spriteCanvas = new Sprite(); game.hudCanvas = new Sprite(); gameHolder.addChild(game.bgCanvas); gameHolder.addChild(game.pvCanvas); gameHolder.addChild(game.spriteCanvas); gameHolder.addChild(game.hudCanvas); } function __setProp_tracker_Scene1_GAFORFLASH_1(){ try { tracker["componentInspectorSetting"] = true; } catch(e:Error) { }; tracker.account = "UA-11130791-1"; tracker.mode = "AS3"; tracker.visualDebug = false; try { tracker["componentInspectorSetting"] = false; } catch(e:Error) { }; } public function drawTile(_arg1, _arg2, _arg3, _arg4){ var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; _local5 = (_arg1 * 100); _local6 = (_arg2 * 100); _local7 = game.levels[playerSettings.levelId].map; _local8 = tileTypes[_local7[_arg2][_arg1]]; modelHolder = new DisplayObject3D(); if (_local8.type == PLANE){ _local9 = tileSetStack[playerSettings.tileSet][_local8.materialId]; modelTile = new Plane(_local9, 100, 100, 2, 2); _arg3.box = null; if ((((((((_arg1 == 0)) || ((_arg1 == (_local7[0].length - 1))))) || ((_arg2 == 0)))) || ((_arg2 == (_local7.length - 1))))){ if (editMode == IN_GAME){ _arg3.box = spawnBlock("block", (_local5 + 50), (_local6 + 50), 50, 50, 0); }; }; } else { if (_local8.type == CUBE){ _local9 = tileSetStack[playerSettings.tileSet][_local8.materialId]; modelTile = new Cube(_local9, 100, 100, 100, 2, 2, 2); modelTile.rotationX = -90; if (editMode == IN_GAME){ _arg3.box = spawnBlock("block", (_local5 + 50), (_local6 + 50), 50, 50, 0); }; }; }; _arg3.type = _local8; modelTile.material.unregisterObject(modelTile); modelTile.x = 50; modelTile.y = 50; modelHolder.addChild(modelTile); _arg3.model = modelHolder; _arg3.innerModel = modelTile; _arg3.tileX = _arg1; _arg3.tileY = _arg2; _arg3.innerModel.rotationZ = _local8.rotation; _arg3.model.rotationX = 90; modelHolder.x = _local5; modelHolder.y = _local8.height; modelHolder.z = _local6; if (_arg4){ _arg3.innerModel.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onPressMapObject); }; scene.addChild(_arg3.model); } public function fisherYates(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local2 = _arg1.length; while (_local2--) { _local3 = Math.floor((Math.random() * (_local2 + 1))); _local4 = _arg1[_local2]; _local5 = _arg1[_local3]; _arg1[_local2] = _local5; _arg1[_local3] = _local4; }; } public function clearGameCanvas(){ game.bgCanvas.parent.removeChild(game.bgCanvas); game.pvCanvas.parent.removeChild(game.pvCanvas); game.spriteCanvas.parent.removeChild(game.spriteCanvas); game.hudCanvas.parent.removeChild(game.hudCanvas); } public function right(_arg1, _arg2){ return (_arg1.substr((_arg1.length - _arg2))); } public function getPointInWorldSpace2D(_arg1, _arg2:Point):Point{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local3 = ((_arg1.rotation * Math.PI) / 180); _local4 = Math.cos(_local3); _local5 = Math.sin(_local3); _local6 = ((_local4 * _arg2.x) - (_local5 * _arg2.y)); _local7 = ((_local5 * _arg2.x) + (_local4 * _arg2.y)); _local6 = (_local6 + _arg1.x); _local7 = (_local7 + _arg1.y); return (new Point(_local6, _local7)); } public function nextTrack(){ raceComplete(false); mode = PLAY; gotoLevelSelect(); } public function parseTrackData(_arg1){ var _local2:Array; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; _local2 = _arg1.split("^"); _local3 = 0; _local4 = _local2.length; trace(("num of ghosts " + _local2.length)); _local3 = 0; while (_local3 < _local4) { _local5 = _local2[_local3]; _local6 = _local5.split(","); _local7 = new Object(); _arg1 = _local6[2]; _local8 = buildNodes(_arg1); _local7.screenName = _local6[0]; _local7.trackTime = _local6[1]; _local7.nodes = _local8; _local7.charId = _local6[3]; game.ghostStack.push(_local7); _local3++; }; } public function countdown(){ var _local1:*; if (numberCount > 0){ _local1 = new CountdownNumber(); _local1.numberTx.text = numberCount; _local1.scaleX = (_local1.scaleY = 0); _local1.x = 275; _local1.y = 200; game.hudCanvas.addChild(_local1); TweenLite.to(_local1, 1, {scaleX:1, scaleY:1, onComplete:countdownComplete, onCompleteParams:[_local1]}); numberCount--; } else { countdownOver(); }; } public function updateBox2d():void{ var _local1:b2Body; m_world.Step(m_timeStep, m_iterations); _local1 = m_world.m_bodyList; while (_local1) { if ((_local1.m_userData is Sprite)){ _local1.m_userData.x = _local1.m_position.x; _local1.m_userData.y = _local1.m_position.y; _local1.m_userData.rotation = (_local1.m_rotation * (180 / Math.PI)); }; _local1 = _local1.m_next; }; CheckCollisions(); } public function makeWorld(){ var _local1:b2AABB; var _local2:b2Vec2; var _local3:Boolean; box2dCanvas = new Sprite(); box2dCanvas.visible = false; addChild(box2dCanvas); _local1 = new b2AABB(); _local1.minVertex.Set(-4000, -4000); _local1.maxVertex.Set(6000, 6000); _local2 = new b2Vec2(0, 0); _local3 = true; m_world = new b2World(_local1, _local2, _local3); } public function showResults(){ game.inGameScreen = false; gotoAndStop("results"); } public function debug(_arg1){ output.text = ((_arg1 + "\r") + output.text); } public function stopPowerUpSelector(_arg1){ var _local2:*; if (!game.raceOver){ clearTimeout(nextPowerUpTimeoutId); _local2 = inGameUi.powerUpSelector; _arg1.params.powerUp = powerUpStack[_local2.currentItem]; debug(("power-" + _arg1.params.powerUp.name)); }; } public function selectKartLoaded(_arg1){ trace("SELECT KART LOADED"); _arg1.target.replaceMaterialByName(kartMaterial, "SurfaceMaterial00"); charMesh = new DAE(); charMesh.load(characterDae, null); charMesh.scaleX = (charMesh.scaleY = (charMesh.scaleZ = 1)); _arg1.target.addChild(charMesh); charMesh.addEventListener(FileLoadEvent.LOAD_COMPLETE, selectCharMeshLoaded); } public function creditsBtnClicked(_arg1){ gotoCredits(); } public function backBtnClicked(_arg1){ gotoMenu(); } public function removeGameLoop(){ removeEventListener(Event.ENTER_FRAME, gameLoop); } public function addNpc(){ var _local1:*; var _local2:*; var _local3:*; _local1 = new Object(); _local1.npcId = 0; _local1.currentWp = 0; _local1.thinkWait = 0; _local1.thinkReset = game.levels[playerSettings.levelId].npcSettings[0].thinkReset; _local1.targetAngle = 0; _local1.ranOffset = game.levels[playerSettings.levelId].npcSettings[0].ranOffset; _local1.ghostId = 0; _local1.nodeMarker = 0; _local1.ghostTick = 0; _local1.laps = 0; _local1.finished = false; _local1.maxThrust = game.levels[playerSettings.levelId].npcSettings[0].maxThrust; _local1.lockedOn = false; _local1.skinMaterial = characterStack[0].material; _local1.portraitLabel = characterStack[0].label; _local1.isBoosting = false; _local1.boostLength = 0; _local1.lastSpeedUp = null; _local1.coins = 0; _local1.starCount = 0; _local1.slowCount = 0; _local1.spin = 0; _local1.hasPowerUp = false; _local1.lastNode = false; _local2 = game.levels[playerSettings.levelId].xStart; _local3 = game.levels[playerSettings.levelId].yStart; addGameObjectToLoadStack("npc", npc2Control, RACECAR1MODEL, 14, 25, _local2, 0, _local3, 0, 0, 0, _local1, 0xFF00, true, 180, 30, 0, 0); _local1 = new Object(); _local1.npcId = 1; _local1.currentWp = 0; _local1.thinkWait = 0; _local1.thinkReset = game.levels[playerSettings.levelId].npcSettings[1].thinkReset; _local1.targetAngle = 0; _local1.ranOffset = game.levels[playerSettings.levelId].npcSettings[1].ranOffset; _local1.ghostId = 0; _local1.nodeMarker = 0; _local1.ghostTick = 0; _local1.laps = 0; _local1.finished = false; _local1.maxThrust = game.levels[playerSettings.levelId].npcSettings[1].maxThrust; _local1.lockedOn = false; _local1.skinMaterial = characterStack[1].material; _local1.portraitLabel = characterStack[1].label; _local1.isBoosting = false; _local1.boostLength = 0; _local1.lastSpeedUp = null; _local1.coins = 0; _local1.starCount = 0; _local1.slowCount = 0; _local1.spin = 0; _local1.hasPowerUp = false; _local1.lastNode = false; _local2 = game.levels[playerSettings.levelId].xStart; _local3 = game.levels[playerSettings.levelId].yStart; addGameObjectToLoadStack("npc", npc2Control, RACECAR1MODEL, 14, 25, _local2, 0, _local3, 0, 0, 0, _local1, 0xFF00, true, 180, -80, 0, 0); _local1 = new Object(); _local1.npcId = 2; _local1.currentWp = 0; _local1.thinkWait = 0; _local1.thinkReset = game.levels[playerSettings.levelId].npcSettings[2].thinkReset; _local1.targetAngle = 0; _local1.ranOffset = 10; _local1.ghostId = 0; _local1.nodeMarker = 0; _local1.ghostTick = 0; _local1.laps = 0; _local1.finished = false; _local1.maxThrust = game.levels[playerSettings.levelId].npcSettings[2].maxThrust; _local1.lockedOn = false; _local1.skinMaterial = characterStack[2].material; _local1.portraitLabel = characterStack[2].label; _local1.isBoosting = false; _local1.boostLength = 0; _local1.lastSpeedUp = null; _local1.coins = 0; _local1.starCount = 0; _local1.slowCount = 0; _local1.spin = 0; _local1.hasPowerUp = false; _local1.lastNode = false; _local2 = game.levels[playerSettings.levelId].xStart; _local3 = game.levels[playerSettings.levelId].yStart; addGameObjectToLoadStack("npc", npc2Control, RACECAR1MODEL, 14, 25, _local2, 0, _local3, 0, 0, 0, _local1, 0xFF00, true, 180, -120, 0, 0); } public function onPressMapObject(_arg1:InteractiveScene3DEvent){ trace("CLICK TILE"); if (editMode == MAP_EDIT){ objectCycle(_arg1.target); } else { if (editMode == PLACE_ROAD){ trace("ADDING ROAD PIECE"); addRoad(_arg1.target); }; }; } public function countdownComplete(_arg1){ if (!game.raceOver){ _arg1.parent.removeChild(_arg1); _arg1 = null; countdown(); }; } public function onPickUpCoin(_arg1, _arg2){ var _local3:*; if (_arg2.params.hasPowerUp == false){ _local3 = new Object(); addTimeout(setTimeout(addItemWorldPos, 10000, "coin", coinMaterial, 32, 32, _arg1.model.x, _arg1.model.y, _arg1.model.z, onPickUpCoin, _local3)); _arg1.model.visible = false; _arg1.active = false; _arg1.killMe = true; _arg2.params.hasPowerUp = true; if (_arg2.label == "player"){ startPowerUpSelector(_arg2); } else { if (_arg2.label == "npc"){ npcCollectPowerUp(_arg2); }; }; soundFxChan = powerUpSnd.play(0, 0, sfxTransform); }; } public function createMasterModels(){ masterKart = new DAE(); masterKart.forceCoordSet = 0; masterKart.load(kartDae, null); masterKart.addEventListener(FileLoadEvent.LOAD_COMPLETE, masterKartLoaded); masterKart.dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE)); } public function setUi(){ inGameUi.powerUpSelector.icons.gotoAndStop(1); inGameUi.powerUpSelector.icons.alpha = 0; } public function createMaterials(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; materialStack = new Array(); materialListStack = new Array(); _local1 = addMaterial("fBlockTexture", true, false, "fBlock"); _local2 = addMaterial("BlockSide2", true, false, "fBlock"); _local3 = addMaterial("BlockTop2", true, false, "fBlock"); _local4 = addMaterial("BlockTop3", true, false, "fBlock"); _local5 = addMaterial("BlockSide3", true, false, "fBlock"); kartMaterial = addMaterial("KartTex", false, false, "woodenKart"); dracMaterial = addMaterial("DracTex", false, false, "DracTexture"); mummyMaterial = addMaterial("MummyTex", false, false, "woodenKart"); hulkMaterial = addMaterial("HulkTex", false, false, "DracTexture"); docMaterial = addMaterial("DocTex", false, false, "DracTexture"); trackMaterial1 = addMaterial("woodFloorTexture", true, false, "Track1Tex"); roadEmptyMaterial1 = addMaterial("RoadEmpty", true, false, "Track1Tex"); roadHMaterial1 = addMaterial("RoadHoriz", true, false, "Track1Tex"); roadVMaterial1 = addMaterial("RoadVert", true, false, "Track1Tex"); roadTMaterial1 = addMaterial("RoadT", true, false, "Track1Tex"); roadEndMaterial1 = addMaterial("RoadEnd", true, false, "Track1Tex"); blockList1 = new MaterialsList({front:_local1, left:_local1, right:_local1, top:_local1, bottom:_local1, back:_local1}); roadCornerMaterial1 = addMaterial("RoadCorner", true, false, "Track1Tex"); trackMaterial2 = addMaterial("GrassTex", true, false, "GrassTex"); roadEmptyMaterial2 = addMaterial("RoadEmpty2", true, false, "Track1Tex"); roadHMaterial2 = addMaterial("RoadHoriz2", true, false, "Track1Tex"); roadVMaterial2 = addMaterial("RoadVert2", true, false, "Track1Tex"); roadTMaterial2 = addMaterial("RoadT2", true, false, "Track1Tex"); roadEndMaterial2 = addMaterial("RoadEnd2", true, false, "Track1Tex"); blockList2 = new MaterialsList({front:_local2, left:_local2, right:_local2, top:_local3, bottom:_local2, back:_local2}); roadCornerMaterial2 = addMaterial("RoadCorner2", true, false, "Track1Tex"); trackMaterial3 = addMaterial("SwampSludgeTex", true, false, "GrassTex"); roadEmptyMaterial3 = addMaterial("RoadEmpty3", true, false, "Track1Tex"); roadHMaterial3 = addMaterial("RoadHoriz3", true, false, "Track1Tex"); roadVMaterial3 = addMaterial("RoadVert3", true, false, "Track1Tex"); roadTMaterial3 = addMaterial("RoadT3", true, false, "Track1Tex"); roadEndMaterial3 = addMaterial("RoadEnd3", true, false, "Track1Tex"); blockList3 = new MaterialsList({front:_local5, left:_local5, right:_local5, top:_local4, bottom:_local5, back:_local5}); roadCornerMaterial3 = addMaterial("RoadCorner3", true, false, "Track1Tex"); coinMaterial = addMaterial("CoinTex", true, false, "CoinTex"); speedUpTex = addMaterial("SpeedUpTex", true, false, "SpeedUpTex"); speedUpTex2 = addMaterial("SpeedUpTex2", true, false, "SpeedUpTex2"); starMaterial = addMaterial("StarTex", true, false, "StarTex"); badCloudsMaterial = addMaterial("LightningCloudsTex", true, false, "LightningCloudsTex"); bombMaterial = addMaterial("BatBombSprite", true, false, "BatBombSprite"); explosionMaterial = addMaterial("ExplosionTex", true, false, "ExplosionTex"); batMaterial = addMaterial("BatTex", true, false, "BatTex"); smallStarMaterial = addMaterial("SmallStarTex", true, false, "SmallStarTex"); redAlphaMaterial = new ColorMaterial(0xFF0000, 0.45); _local6 = new ColorMaterial(11939070, 0.45); _local7 = new MaterialsList({front:redAlphaMaterial, left:redAlphaMaterial, right:redAlphaMaterial, top:redAlphaMaterial, bottom:redAlphaMaterial, back:redAlphaMaterial}); _local8 = new MaterialsList({front:_local6, left:_local6, right:_local6, top:_local6, bottom:_local6, back:_local6}); materialListStack.push(_local7); materialListStack.push(_local8); _local9 = [trackMaterial1, roadEmptyMaterial1, roadHMaterial1, roadVMaterial1, roadTMaterial1, roadEndMaterial1, blockList1, roadCornerMaterial1]; _local10 = [trackMaterial2, roadEmptyMaterial2, roadHMaterial2, roadVMaterial2, roadTMaterial2, roadEndMaterial2, blockList2, roadCornerMaterial2]; _local11 = [trackMaterial3, roadEmptyMaterial3, roadHMaterial3, roadVMaterial3, roadTMaterial3, roadEndMaterial3, blockList3, roadCornerMaterial3]; tileSetStack = [_local9, _local10, _local11]; } public function splashDone(){ endSplash(); } public function convertTo2DCoords(_arg1:DisplayObject3D, _arg2:CameraObject3D, _arg3:Number=0, _arg4:Number=0):Point{ var _local5:Matrix3D; var _local6:Number; _local5 = _arg1.view; _local6 = ((_arg2.focus * _arg2.zoom) / (_arg2.focus + _local5.n34)); return (new Point(((_local5.n14 * _local6) + _arg3), ((_local5.n24 * _local6) + _arg4))); } public function checkGameObjects(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; _local2 = 0; _local3 = game.gameObjectStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.gameObjectStack[_local2]; if (((!((_arg1 == _local4))) && (!((_local4.init == null))))){ _local5 = getPointInWorldSpace2D(_arg1.hitBox, new Point(-((_arg1.height / 2)), -((_arg1.width / 2)))); _local6 = getPointInWorldSpace2D(_arg1.hitBox, new Point(-((_arg1.height / 2)), (_arg1.width / 2))); _local7 = getPointInWorldSpace2D(_arg1.hitBox, new Point((_arg1.height / 2), -((_arg1.width / 2)))); _local8 = getPointInWorldSpace2D(_arg1.hitBox, new Point((_arg1.height / 2), (_arg1.width / 2))); _arg1.marker.x = _local5.x; _arg1.marker.y = _local5.y; _arg1.marker2.x = _local6.x; _arg1.marker2.y = _local6.y; _arg1.marker3.x = _local7.x; _arg1.marker3.y = _local7.y; _arg1.marker4.x = _local8.x; _arg1.marker4.y = _local8.y; if ((((((_arg1.speed > 0)) && (_local4.hitBox.hitTestPoint(_local5.x, _local5.y, true)))) || (_local4.hitBox.hitTestPoint(_local6.x, _local6.y, true)))){ _arg1.collideFront = true; _local4.xSlide = (_arg1.xVel * 0.3); _local4.zSlide = (_arg1.zVel * 0.3); break; } else { if ((((((_arg1.speed < 0)) && (_local4.hitBox.hitTestPoint(_local7.x, _local7.y, true)))) || (_local4.hitBox.hitTestPoint(_local8.x, _local8.y, true)))){ _arg1.collideBack = true; _local4.xSlide = (_arg1.xVel * 0.3); _local4.zSlide = (_arg1.zVel * 0.3); break; } else { _arg1.collideFront = false; _arg1.collideBack = false; }; }; }; _local2++; }; } public function worldBackBtnClicked(_arg1){ gotoCharacterSelect(); } public function clearInputs(){ stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); } public function characterSelectDone(){ playerSettings.charId = charId; playerSettings.screenName = screenNameTx.text; if (playerSettings.screenName == "Enter your name here..."){ playerSettings.screenName = "Ghoul"; } else { lastName = playerSettings.screenName; }; playerSettings.charMeshTexture = characterStack[charId].material; playerSettings.playerCharId = charId; playerSettings.portraitLabel = characterStack[charId].label; removeEventListener(Event.ENTER_FRAME, characterSelectLoop); clearPv(); gotoWorldSelect(); characterStack.splice(playerSettings.charId, 1); fisherYates(characterStack); } public function trackThis(_arg1:String){ var _local2:*; _local2 = ("m_/" + _arg1); tracker.trackPageview(_local2); trace(("GA track vPage : " + _local2)); } public function gotoInstructions(){ gotoAndStop("instructions"); } public function npc2Control(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:*; var _local14:*; var _local15:*; var _local16:*; var _local17:*; var _local18:b2Vec2; var _local19:*; var _local20:*; var _local21:*; var _local22:*; var _local23:*; var _local24:*; var _local25:*; var _local26:*; _local6 = _arg1; _local7 = game.levels[playerSettings.levelId].map; _local8 = int((_arg1.model.x / game.tileWidth)); _local9 = int((_arg1.model.z / game.tileHeight)); _local6.xTile = _local8; _local6.yTile = _local9; _local10 = tileTypes[_local7[_local9][_local8]].friction; _local11 = waypointStack[_arg1.params.currentWp]; _local13 = false; if (_arg1.params.thinkWait == 0){ _local19 = int((Math.random() * 40)); if (_local19 < 10){ _local20 = game.itemStack.length; _local21 = 0; _local21 = 0; while (_local21 < _local20) { _local22 = game.itemStack[_local21]; if (((((_local22.active) && ((_arg1.params.hasPowerUp == false)))) && ((_local22.label == "coin")))){ _local23 = _local22.model.distanceTo(_arg1.model); if (_local23 < 200){ _local12 = getAngle(_arg1.model.z, _arg1.model.x, _local22.model.z, _local22.model.x); _local13 = true; }; }; _local21++; }; }; _local2 = int(((Math.random() * _arg1.params.ranOffset) / 2)); _local3 = int(((Math.random() * _arg1.params.ranOffset) / 2)); _local4 = int(((Math.random() * _arg1.params.ranOffset) / 2)); _local5 = int(((Math.random() * _arg1.params.ranOffset) / 2)); if (_local13 == false){ _local12 = getAngle(_arg1.model.z, _arg1.model.x, ((_local11.z + _local2) - _local3), ((_local11.x + _local4) - _local5)); }; _arg1.params.targetAngle = _local12; _arg1.params.thinkWait = _arg1.params.thinkReset; _arg1.params.thinkWait = _local2; } else { _arg1.params.thinkWait--; }; if ((((_arg1.params.lastNode == true)) && ((_arg1.params.finished == false)))){ _local24 = game.checkpointStack[0]; if (_arg1.model.hitTestObject(_local24.model)){ debug("npc-raceComplete"); _arg1.params.finished = true; _local25 = {name:_arg1.params.portraitLabel, portraitLabel:_arg1.params.portraitLabel, timeMs:game.timeInMs, timeDisplay:msToDisplayTime(game.timeInMs)}; debug((_local25.portraitLabel + "-finished")); game.playersFinished.push(_local25); }; }; if (_arg1.params.finished){ _local6.params.maxThrust = (_local6.params.maxThrust - 15000); _local6.params.maxThrust = Math.max(0, _local6.params.maxThrust); }; if (_arg1.params.isBoosting){ _arg1.params.maxThrust = (game.levels[playerSettings.levelId].npcSettings[0].maxThrust + 50000); if (_arg1.params.boostLength > 0){ _arg1.params.boostLength--; } else { _arg1.params.isBoosting = false; _arg1.params.lastSpeedUp = null; _arg1.params.maxThrust = game.levels[playerSettings.levelId].npcSettings[0].maxThrust; }; }; if (_arg1.params.slowCount > 0){ _local6.params.maxThrust = 150000; _arg1.params.slowCount--; if (_arg1.params.slowCount <= 0){ _arg1.params.maxThrust = game.levels[playerSettings.levelId].npcSettings[0].maxThrust; _arg1.badClouds.visible = false; }; }; _local6.thrust = _local6.params.maxThrust; if (_arg1.params.starCount > 0){ _arg1.thrust = (_arg1.thrust * 1); _arg1.params.starCount--; newParticle(((_arg1.model.x + int((Math.random() * 10))) - int((Math.random() * 10))), _arg1.model.y, ((_arg1.model.z + int((Math.random() * 10))) - int((Math.random() * 10))), 10, 10, 0, 3, 0, starMaterial, 30); } else { _arg1.thrust = (_arg1.thrust * _local10); }; _local14 = _arg1.params.targetAngle; _local15 = _arg1.rotation; _local15 = (_local15 % 360); if (_local15 < 0){ _local15 = (_local15 + 360); }; if (_local14 < 0){ _local14 = (_local14 + 360); }; _local16 = (_local14 - _local15); if ((((_local16 > -5)) && ((_local16 < 5)))){ } else { if (_local15 > _local14){ if (_local16 < -180){ _local15 = (_local15 + 10); } else { _local15 = (_local15 - 10); }; } else { if (_local15 < _local14){ if (_local16 > 180){ _local15 = (_local15 - 10); } else { _local15 = (_local15 + 10); }; }; }; }; _local6.rotation = _local15; if (_arg1.params.spin > 0){ _arg1.params.spin--; _local6.rotation = (_local6.rotation + _arg1.params.spin); }; _local17 = (_local6.rotation - 180); _local6.box.m_rotation = (Math.PI - ((_local17 * Math.PI) / 180)); _local18 = new b2Vec2((_local6.thrust * Math.sin(((_local17 * Math.PI) / 180))), (_local6.thrust * Math.cos(((_local17 * Math.PI) / 180)))); _local6.box.WakeUp(); _local6.box.ApplyImpulse(_local18, _local6.box.GetCenterPosition()); _local6.model.x = _local6.box.m_userData.x; _local6.model.z = _local6.box.m_userData.y; _local6.model.rotationY = (_local6.rotation + 180); if (_arg1.params.finished == false){ _local26 = distance(_arg1.model, _local11); if (_local26 < 120){ _arg1.params.currentWp++; _arg1.params.wpTimeCount = 0; if (_arg1.params.currentWp >= waypointStack.length){ _arg1.params.laps++; debug(">>>>>npc-lapComplete"); _local24 = game.checkpointStack[0]; if (_arg1.params.laps >= 3){ _arg1.params.lastNode = true; }; _arg1.params.currentWp = 0; }; _arg1.params.lockedOn = false; }; }; checkSpeedUps(_arg1); checkItems(_arg1); } public function countdownOver(){ if (!game.raceOver){ startTimer(); game.raceStarted = true; }; } public function CheckCollisions():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.GetContactList(); while (_local1) { if (!game.raceOver){ if (_local1.GetManifoldCount() > 0){ _local2 = _local1.GetShape1().GetBody(); _local3 = _local1.GetShape2().GetBody(); if ((((_local2.m_userData.label == "player")) || ((_local3.m_userData.label == "player")))){ if (hitSndWait == 0){ soundFxChan = hitSnd.play(0, 0, sfxTransform); hitSndWait = 10; }; }; }; }; _local1 = _local1.GetNext(); }; if (hitSndWait > 0){ hitSndWait--; }; } public function onMouseUpReplayBtn(_arg1:MouseEvent){ replayTrack(); } public function setSoundControl(){ musicBtn.state = 1; musicBtn.addEventListener(MouseEvent.MOUSE_UP, onMouseUpMusicBtn); musicBtn.buttonMode = true; musicBtn.mouseChildren = false; soundBtn.state = 1; soundBtn.addEventListener(MouseEvent.MOUSE_UP, onMouseUpSoundBtn); soundBtn.buttonMode = true; soundBtn.mouseChildren = false; } public function setWayPoints(_arg1){ waypointStack = new Array(); if (_arg1 == 0){ newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 515.7; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 517.4; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 519; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.741466136765; newWp.y = 0; newWp.z = 756.786636860732; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 673.818794458073; newWp.y = 0; newWp.z = 739.95441981908; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 692.846113191625; newWp.y = 0; newWp.z = 738.2897451326; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 711.773812455368; newWp.y = 0; newWp.z = 736.633786020394; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.72344055714; newWp.y = 0; newWp.z = 762.395646189764; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1441.49989769244; newWp.y = 0; newWp.z = 759.497868710896; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1442.25047292324; newWp.y = 0; newWp.z = 756.696683814658; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.40885445344; newWp.y = 0; newWp.z = 586.802353839216; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.26068969077; newWp.y = 0; newWp.z = 585.10882285246; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.12124050237; newWp.y = 0; newWp.z = 583.514911335514; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.07905080332; newWp.y = 0; newWp.z = 351.893311646652; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1436.63185080929; newWp.y = 0; newWp.z = 349.000767403063; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1433.26125525956; newWp.y = 0; newWp.z = 346.172501920442; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1324.13143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1316.23143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1308.43143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 979.929187573934; newWp.y = 0; newWp.z = 335.329928594138; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 963.193116645993; newWp.y = 0; newWp.z = 333.865712115977; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 946.556665187861; newWp.y = 0; newWp.z = 332.410211212091; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 639.03890070637; newWp.y = 0; newWp.z = 280.452138957308; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 624.93638364255; newWp.y = 0; newWp.z = 276.673380898811; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 610.930459161358; newWp.y = 0; newWp.z = 272.920504744825; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 597.021127262796; newWp.y = 0; newWp.z = 269.193510495349; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 337.936855795235; newWp.y = 0; newWp.z = 368.179319538317; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 331.986855795235; newWp.y = 0; newWp.z = 378.485021843352; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 326.086855795235; newWp.y = 0; newWp.z = 388.704121608009; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 320.236855795235; newWp.y = 0; newWp.z = 398.836618832286; newWp.rotation = 510; waypointStack.push(newWp); } else { if (_arg1 == 1){ newWp = new Object(); newWp.x = 283.05; newWp.y = 0; newWp.z = 349; newWp.rotation = 175.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 286.75; newWp.y = 0; newWp.z = 576.6; newWp.rotation = 225; waypointStack.push(newWp); newWp = new Object(); newWp.x = 325.3; newWp.y = 0; newWp.z = 657.85; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 634.65; newWp.y = 0; newWp.z = 653.7; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 733; newWp.y = 0; newWp.z = 661.35; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 842.1; newWp.y = 0; newWp.z = 693.4; newWp.rotation = 234; waypointStack.push(newWp); newWp = new Object(); newWp.x = 934.35; newWp.y = 0; newWp.z = 747.7; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1049.6; newWp.y = 0; newWp.z = 718; newWp.rotation = 319.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1135.05; newWp.y = 0; newWp.z = 666.7; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1233.5; newWp.y = 0; newWp.z = 657.45; newWp.rotation = 261; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1351.55; newWp.y = 0; newWp.z = 673.15; newWp.rotation = 261; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1456.55; newWp.y = 0; newWp.z = 670.15; newWp.rotation = 319.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1502.9; newWp.y = 0; newWp.z = 591.65; newWp.rotation = 400.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1462.9; newWp.y = 0; newWp.z = 505.75; newWp.rotation = 373.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1400.7; newWp.y = 0; newWp.z = 375.15; newWp.rotation = 427.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1279.4; newWp.y = 0; newWp.z = 376.95; newWp.rotation = 495; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1185.3; newWp.y = 0; newWp.z = 435.7; newWp.rotation = 459; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1076.05; newWp.y = 0; newWp.z = 437.85; newWp.rotation = 441; waypointStack.push(newWp); newWp = new Object(); newWp.x = 972.9; newWp.y = 0; newWp.z = 404.3; newWp.rotation = 400.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 852.4; newWp.y = 0; newWp.z = 343.65; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 700.9; newWp.y = 0; newWp.z = 328.95; newWp.rotation = 427.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 558.6; newWp.y = 0; newWp.z = 240.3; newWp.rotation = 441; waypointStack.push(newWp); newWp = new Object(); newWp.x = 460.9; newWp.y = 0; newWp.z = 236.95; newWp.rotation = 459; waypointStack.push(newWp); newWp = new Object(); newWp.x = 352.3; newWp.y = 0; newWp.z = 258.9; newWp.rotation = 477; waypointStack.push(newWp); } else { if (_arg1 == 2){ newWp = new Object(); newWp.x = 330; newWp.y = 0; newWp.z = 450; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 336.6; newWp.y = 0; newWp.z = 534.35; newWp.rotation = 198; waypointStack.push(newWp); newWp = new Object(); newWp.x = 396.6; newWp.y = 0; newWp.z = 628.9; newWp.rotation = 252; waypointStack.push(newWp); newWp = new Object(); newWp.x = 573.4; newWp.y = 0; newWp.z = 653.85; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 780.75; newWp.y = 0; newWp.z = 644.45; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 888.35; newWp.y = 0; newWp.z = 650.2; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1034.75; newWp.y = 0; newWp.z = 650.7; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1154.2; newWp.y = 0; newWp.z = 650.7; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1277.5; newWp.y = 0; newWp.z = 650.7; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1400.8; newWp.y = 0; newWp.z = 650.7; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1492.55; newWp.y = 0; newWp.z = 644.7; newWp.rotation = 283.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1595.75; newWp.y = 0; newWp.z = 607.45; newWp.rotation = 319.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1665.85; newWp.y = 0; newWp.z = 537.5; newWp.rotation = 319.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1740.5; newWp.y = 0; newWp.z = 435.6; newWp.rotation = 337.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1755.5; newWp.y = 0; newWp.z = 344.45; newWp.rotation = 400.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1699.05; newWp.y = 0; newWp.z = 269.45; newWp.rotation = 436.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1609.25; newWp.y = 0; newWp.z = 243.7; newWp.rotation = 454.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1505.95; newWp.y = 0; newWp.z = 247.3; newWp.rotation = 463.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1410.05; newWp.y = 0; newWp.z = 272.65; newWp.rotation = 477; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1320.15; newWp.y = 0; newWp.z = 316.35; newWp.rotation = 477; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1245.5; newWp.y = 0; newWp.z = 345.7; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1142.45; newWp.y = 0; newWp.z = 351.4; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 984.85; newWp.y = 0; newWp.z = 347.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 865.5; newWp.y = 0; newWp.z = 345.65; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 742.3; newWp.y = 0; newWp.z = 347.65; newWp.rotation = 454.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 653.95; newWp.y = 0; newWp.z = 350.3; newWp.rotation = 445.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 546.3; newWp.y = 0; newWp.z = 344.7; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 450.5; newWp.y = 0; newWp.z = 349.15; newWp.rotation = 468; waypointStack.push(newWp); newWp = new Object(); newWp.x = 374.05; newWp.y = 0; newWp.z = 373.05; newWp.rotation = 486; waypointStack.push(newWp); } else { if (_arg1 == 3){ newWp = new Object(); newWp.x = 308.9; newWp.y = 0; newWp.z = 354.7; newWp.rotation = 175.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 308.9; newWp.y = 0; newWp.z = 451.3; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 314.95; newWp.y = 0; newWp.z = 538.6; newWp.rotation = 193.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 337.7; newWp.y = 0; newWp.z = 639.9; newWp.rotation = 193.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 353.15; newWp.y = 0; newWp.z = 757.35; newWp.rotation = 171; waypointStack.push(newWp); newWp = new Object(); newWp.x = 353.7; newWp.y = 0; newWp.z = 882.45; newWp.rotation = 198; waypointStack.push(newWp); newWp = new Object(); newWp.x = 387; newWp.y = 0; newWp.z = 967.25; newWp.rotation = 234; waypointStack.push(newWp); newWp = new Object(); newWp.x = 474.7; newWp.y = 0; newWp.z = 1017.8; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 556.95; newWp.y = 0; newWp.z = 1008.45; newWp.rotation = 283.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 650.6; newWp.y = 0; newWp.z = 986.8; newWp.rotation = 283.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 728.1; newWp.y = 0; newWp.z = 964.35; newWp.rotation = 292.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 825.5; newWp.y = 0; newWp.z = 919.4; newWp.rotation = 306; waypointStack.push(newWp); newWp = new Object(); newWp.x = 897.35; newWp.y = 0; newWp.z = 844; newWp.rotation = 360; waypointStack.push(newWp); newWp = new Object(); newWp.x = 914.4; newWp.y = 0; newWp.z = 736.4; newWp.rotation = 333; waypointStack.push(newWp); newWp = new Object(); newWp.x = 955.45; newWp.y = 0; newWp.z = 660.25; newWp.rotation = 292.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1027.35; newWp.y = 0; newWp.z = 620.65; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1155.45; newWp.y = 0; newWp.z = 603.1; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1261.95; newWp.y = 0; newWp.z = 625.5; newWp.rotation = 211.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1307.7; newWp.y = 0; newWp.z = 687.45; newWp.rotation = 184.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1323.65; newWp.y = 0; newWp.z = 780.7; newWp.rotation = 184.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1341; newWp.y = 0; newWp.z = 897.65; newWp.rotation = 207; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1406.3; newWp.y = 0; newWp.z = 992.85; newWp.rotation = 256.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1480.5; newWp.y = 0; newWp.z = 1019.8; newWp.rotation = 256.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1613.6; newWp.y = 0; newWp.z = 1030.75; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1744.15; newWp.y = 0; newWp.z = 1038.9; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1863.6; newWp.y = 0; newWp.z = 1009.15; newWp.rotation = 315; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1929.4; newWp.y = 0; newWp.z = 941.2; newWp.rotation = 333; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1983.4; newWp.y = 0; newWp.z = 863.05; newWp.rotation = 306; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2072.4; newWp.y = 0; newWp.z = 821.55; newWp.rotation = 261; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2150.75; newWp.y = 0; newWp.z = 833.05; newWp.rotation = 252; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2225.3; newWp.y = 0; newWp.z = 850.2; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2334.25; newWp.y = 0; newWp.z = 843.75; newWp.rotation = 306; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2410.3; newWp.y = 0; newWp.z = 775.05; newWp.rotation = 346.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2426.45; newWp.y = 0; newWp.z = 660.65; newWp.rotation = 373.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2401; newWp.y = 0; newWp.z = 590.4; newWp.rotation = 423; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2315.85; newWp.y = 0; newWp.z = 555.1; newWp.rotation = 459; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2232.3; newWp.y = 0; newWp.z = 557.9; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2120.65; newWp.y = 0; newWp.z = 558.25; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2005.05; newWp.y = 0; newWp.z = 558.25; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1897.25; newWp.y = 0; newWp.z = 556.7; newWp.rotation = 436.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1819; newWp.y = 0; newWp.z = 539.15; newWp.rotation = 418.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1751.45; newWp.y = 0; newWp.z = 503.4; newWp.rotation = 409.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1688.85; newWp.y = 0; newWp.z = 438.85; newWp.rotation = 378; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1658; newWp.y = 0; newWp.z = 360.95; newWp.rotation = 391.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1618.6; newWp.y = 0; newWp.z = 295.85; newWp.rotation = 423; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1554.35; newWp.y = 0; newWp.z = 259.35; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1478.95; newWp.y = 0; newWp.z = 254.15; newWp.rotation = 454.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1336.9; newWp.y = 0; newWp.z = 256.6; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1225.2; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1063.4; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 955.5; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 747.45; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 589.5; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 431.55; newWp.y = 0; newWp.z = 256.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 356.05; newWp.y = 0; newWp.z = 265; newWp.rotation = 472.5; waypointStack.push(newWp); }; }; }; }; if (_arg1 == 4){ newWp = new Object(); newWp.x = 330; newWp.y = 0; newWp.z = 450; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 345.4; newWp.y = 0; newWp.z = 535.75; newWp.rotation = 207; waypointStack.push(newWp); newWp = new Object(); newWp.x = 443.1; newWp.y = 0; newWp.z = 609.1; newWp.rotation = 265.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 534.15; newWp.y = 0; newWp.z = 619.9; newWp.rotation = 261; waypointStack.push(newWp); newWp = new Object(); newWp.x = 628.25; newWp.y = 0; newWp.z = 638.65; newWp.rotation = 252; waypointStack.push(newWp); newWp = new Object(); newWp.x = 767.35; newWp.y = 0; newWp.z = 661.25; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 877.75; newWp.y = 0; newWp.z = 646.3; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 995.75; newWp.y = 0; newWp.z = 627.7; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1090.85; newWp.y = 0; newWp.z = 612.65; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1192.95; newWp.y = 0; newWp.z = 593.1; newWp.rotation = 283.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1286.7; newWp.y = 0; newWp.z = 570.9; newWp.rotation = 283.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1400.15; newWp.y = 0; newWp.z = 550.7; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1552.35; newWp.y = 0; newWp.z = 529.75; newWp.rotation = 292.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1625.95; newWp.y = 0; newWp.z = 498.45; newWp.rotation = 310.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1710.05; newWp.y = 0; newWp.z = 445.5; newWp.rotation = 297; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1776.15; newWp.y = 0; newWp.z = 395.65; newWp.rotation = 342; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1786.4; newWp.y = 0; newWp.z = 327.55; newWp.rotation = 396; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1725.4; newWp.y = 0; newWp.z = 257.05; newWp.rotation = 441; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1622.5; newWp.y = 0; newWp.z = 240.15; newWp.rotation = 459; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1546.2; newWp.y = 0; newWp.z = 247.45; newWp.rotation = 454.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1457.85; newWp.y = 0; newWp.z = 252.3; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1344.5; newWp.y = 0; newWp.z = 266.6; newWp.rotation = 472.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1272.9; newWp.y = 0; newWp.z = 294.25; newWp.rotation = 472.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1143.65; newWp.y = 0; newWp.z = 343.15; newWp.rotation = 454.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1044.55; newWp.y = 0; newWp.z = 350.1; newWp.rotation = 441; waypointStack.push(newWp); newWp = new Object(); newWp.x = 973.85; newWp.y = 0; newWp.z = 327.55; newWp.rotation = 409.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 871.55; newWp.y = 0; newWp.z = 255.25; newWp.rotation = 441; waypointStack.push(newWp); newWp = new Object(); newWp.x = 796.05; newWp.y = 0; newWp.z = 254.45; newWp.rotation = 486; waypointStack.push(newWp); newWp = new Object(); newWp.x = 718.05; newWp.y = 0; newWp.z = 316.75; newWp.rotation = 477; waypointStack.push(newWp); newWp = new Object(); newWp.x = 616.85; newWp.y = 0; newWp.z = 351.7; newWp.rotation = 418.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 554.1; newWp.y = 0; newWp.z = 316.4; newWp.rotation = 400.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 483.35; newWp.y = 0; newWp.z = 255.3; newWp.rotation = 436.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 407.45; newWp.y = 0; newWp.z = 240.8; newWp.rotation = 486; waypointStack.push(newWp); newWp = new Object(); newWp.x = 335.9; newWp.y = 0; newWp.z = 290.15; newWp.rotation = 508.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 292.8; newWp.y = 0; newWp.z = 413.1; newWp.rotation = 540; waypointStack.push(newWp); } else { if (_arg1 == 5){ newWp = new Object(); newWp.x = 319.25; newWp.y = 0; newWp.z = 360.95; newWp.rotation = 1260; waypointStack.push(newWp); newWp = new Object(); newWp.x = 319.25; newWp.y = 0; newWp.z = 416.85; newWp.rotation = 1260; waypointStack.push(newWp); newWp = new Object(); newWp.x = 326; newWp.y = 0; newWp.z = 548.55; newWp.rotation = 1273.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 342.3; newWp.y = 0; newWp.z = 647; newWp.rotation = 1264.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.55; newWp.y = 0; newWp.z = 735.35; newWp.rotation = 1255.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 332.35; newWp.y = 0; newWp.z = 812.5; newWp.rotation = 1206; waypointStack.push(newWp); newWp = new Object(); newWp.x = 282.85; newWp.y = 0; newWp.z = 867.65; newWp.rotation = 1237.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 247.6; newWp.y = 0; newWp.z = 950.9; newWp.rotation = 1264.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 271.1; newWp.y = 0; newWp.z = 1025.3; newWp.rotation = 1341; waypointStack.push(newWp); newWp = new Object(); newWp.x = 340.1; newWp.y = 0; newWp.z = 1046.55; newWp.rotation = 1350; waypointStack.push(newWp); newWp = new Object(); newWp.x = 420.05; newWp.y = 0; newWp.z = 1051.25; newWp.rotation = 1350; waypointStack.push(newWp); newWp = new Object(); newWp.x = 538.9; newWp.y = 0; newWp.z = 1045.35; newWp.rotation = 1359; waypointStack.push(newWp); newWp = new Object(); newWp.x = 610.9; newWp.y = 0; newWp.z = 1022.05; newWp.rotation = 1381.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 677.3; newWp.y = 0; newWp.z = 983.65; newWp.rotation = 1381.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 789; newWp.y = 0; newWp.z = 955.5; newWp.rotation = 1309.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 894.6; newWp.y = 0; newWp.z = 1045.5; newWp.rotation = 1318.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1000.55; newWp.y = 0; newWp.z = 1059.7; newWp.rotation = 1404; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1047.4; newWp.y = 0; newWp.z = 988.35; newWp.rotation = 1431; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1052.65; newWp.y = 0; newWp.z = 875.05; newWp.rotation = 1444.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1051.1; newWp.y = 0; newWp.z = 593.15; newWp.rotation = 1386; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1279.25; newWp.y = 0; newWp.z = 553.05; newWp.rotation = 1350; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1369.65; newWp.y = 0; newWp.z = 563.45; newWp.rotation = 1323; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1433.6; newWp.y = 0; newWp.z = 617.75; newWp.rotation = 1269; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.25; newWp.y = 0; newWp.z = 723.45; newWp.rotation = 1273.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1494.9; newWp.y = 0; newWp.z = 810.65; newWp.rotation = 1318.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1561.7; newWp.y = 0; newWp.z = 848.3; newWp.rotation = 1350; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1825.2; newWp.y = 0; newWp.z = 851.8; newWp.rotation = 1350; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1985.75; newWp.y = 0; newWp.z = 860.75; newWp.rotation = 1327.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2078.4; newWp.y = 0; newWp.z = 905.7; newWp.rotation = 1318.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2196.75; newWp.y = 0; newWp.z = 968.9; newWp.rotation = 1341; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2288.9; newWp.y = 0; newWp.z = 973.65; newWp.rotation = 1408.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2337.35; newWp.y = 0; newWp.z = 908.45; newWp.rotation = 1435.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2316.9; newWp.y = 0; newWp.z = 795.45; newWp.rotation = 1476; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2264.1; newWp.y = 0; newWp.z = 702.55; newWp.rotation = 1449; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2242.8; newWp.y = 0; newWp.z = 613.4; newWp.rotation = 1444.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2228.7; newWp.y = 0; newWp.z = 522.5; newWp.rotation = 1471.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2184.3; newWp.y = 0; newWp.z = 465.1; newWp.rotation = 1512; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2041.85; newWp.y = 0; newWp.z = 451.65; newWp.rotation = 1557; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1979; newWp.y = 0; newWp.z = 491.85; newWp.rotation = 1597.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1943; newWp.y = 0; newWp.z = 557.8; newWp.rotation = 1597.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1907.25; newWp.y = 0; newWp.z = 624.45; newWp.rotation = 1561.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1798.1; newWp.y = 0; newWp.z = 651.65; newWp.rotation = 1521; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1722.75; newWp.y = 0; newWp.z = 639.25; newWp.rotation = 1507.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1662.05; newWp.y = 0; newWp.z = 590.2; newWp.rotation = 1458; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1648.85; newWp.y = 0; newWp.z = 499.05; newWp.rotation = 1435.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1630.9; newWp.y = 0; newWp.z = 384.6; newWp.rotation = 1489.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1560.55; newWp.y = 0; newWp.z = 334.75; newWp.rotation = 1539; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1346.3; newWp.y = 0; newWp.z = 350.95; newWp.rotation = 1525.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1242.6; newWp.y = 0; newWp.z = 348.35; newWp.rotation = 1534.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1131.7; newWp.y = 0; newWp.z = 342.3; newWp.rotation = 1521; waypointStack.push(newWp); newWp = new Object(); newWp.x = 978.5; newWp.y = 0; newWp.z = 342.25; newWp.rotation = 1534.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 863.75; newWp.y = 0; newWp.z = 344.5; newWp.rotation = 1516.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 767.5; newWp.y = 0; newWp.z = 304.75; newWp.rotation = 1485; waypointStack.push(newWp); newWp = new Object(); newWp.x = 668.85; newWp.y = 0; newWp.z = 242.85; newWp.rotation = 1516.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 536.35; newWp.y = 0; newWp.z = 225.95; newWp.rotation = 1534.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 428.85; newWp.y = 0; newWp.z = 232.7; newWp.rotation = 1534.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 353.15; newWp.y = 0; newWp.z = 251.05; newWp.rotation = 1593; waypointStack.push(newWp); }; }; if (_arg1 == 6){ newWp = new Object(); newWp.x = 297.7; newWp.y = 0; newWp.z = 443.7; newWp.rotation = 900; waypointStack.push(newWp); newWp = new Object(); newWp.x = 279.55; newWp.y = 0; newWp.z = 576.8; newWp.rotation = 886.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 251.9; newWp.y = 0; newWp.z = 727.3; newWp.rotation = 904.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 276.55; newWp.y = 0; newWp.z = 815.75; newWp.rotation = 967.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 344.5; newWp.y = 0; newWp.z = 849.8; newWp.rotation = 994.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 435.25; newWp.y = 0; newWp.z = 850.85; newWp.rotation = 990; waypointStack.push(newWp); newWp = new Object(); newWp.x = 521.15; newWp.y = 0; newWp.z = 872.05; newWp.rotation = 922.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 559.15; newWp.y = 0; newWp.z = 968.2; newWp.rotation = 913.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 630.6; newWp.y = 0; newWp.z = 1059.2; newWp.rotation = 1008; waypointStack.push(newWp); newWp = new Object(); newWp.x = 713.8; newWp.y = 0; newWp.z = 1038.55; newWp.rotation = 1048.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 754.6; newWp.y = 0; newWp.z = 929.05; newWp.rotation = 1066.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 803.8; newWp.y = 0; newWp.z = 853.65; newWp.rotation = 990; waypointStack.push(newWp); newWp = new Object(); newWp.x = 879; newWp.y = 0; newWp.z = 847.85; newWp.rotation = 963; waypointStack.push(newWp); newWp = new Object(); newWp.x = 940.65; newWp.y = 0; newWp.z = 886.35; newWp.rotation = 909; waypointStack.push(newWp); newWp = new Object(); newWp.x = 962.8; newWp.y = 0; newWp.z = 981.9; newWp.rotation = 927; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1038.95; newWp.y = 0; newWp.z = 1044.35; newWp.rotation = 1003.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1107.75; newWp.y = 0; newWp.z = 1026.65; newWp.rotation = 1044; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1143.65; newWp.y = 0; newWp.z = 965.4; newWp.rotation = 1080; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1157.4; newWp.y = 0; newWp.z = 892.15; newWp.rotation = 1026; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1273.3; newWp.y = 0; newWp.z = 845.3; newWp.rotation = 963; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1335.35; newWp.y = 0; newWp.z = 887.25; newWp.rotation = 904.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1356.05; newWp.y = 0; newWp.z = 961.8; newWp.rotation = 918; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1405.35; newWp.y = 0; newWp.z = 1039.1; newWp.rotation = 981; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1476; newWp.y = 0; newWp.z = 1054.25; newWp.rotation = 1030.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1533.2; newWp.y = 0; newWp.z = 1013.4; newWp.rotation = 1075.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1550.3; newWp.y = 0; newWp.z = 938.6; newWp.rotation = 1084.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1552.25; newWp.y = 0; newWp.z = 808.5; newWp.rotation = 1080; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1552.7; newWp.y = 0; newWp.z = 712.2; newWp.rotation = 1080; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1557; newWp.y = 0; newWp.z = 624.5; newWp.rotation = 1035; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1599.2; newWp.y = 0; newWp.z = 563.75; newWp.rotation = 1053; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1639.7; newWp.y = 0; newWp.z = 479.5; newWp.rotation = 1080; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1609; newWp.y = 0; newWp.z = 374.25; newWp.rotation = 1125; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1541.3; newWp.y = 0; newWp.z = 330.05; newWp.rotation = 1183.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1410.35; newWp.y = 0; newWp.z = 345.15; newWp.rotation = 1183.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1315.7; newWp.y = 0; newWp.z = 374.75; newWp.rotation = 1201.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1251.55; newWp.y = 0; newWp.z = 472.8; newWp.rotation = 1264.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1237.65; newWp.y = 0; newWp.z = 597.9; newWp.rotation = 1206; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1177.35; newWp.y = 0; newWp.z = 644.9; newWp.rotation = 1170; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1088.25; newWp.y = 0; newWp.z = 649.55; newWp.rotation = 1170; waypointStack.push(newWp); newWp = new Object(); newWp.x = 969.45; newWp.y = 0; newWp.z = 645.65; newWp.rotation = 1156.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 895.9; newWp.y = 0; newWp.z = 626.2; newWp.rotation = 1129.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 847.3; newWp.y = 0; newWp.z = 573.35; newWp.rotation = 1066.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 854; newWp.y = 0; newWp.z = 502.2; newWp.rotation = 1026; waypointStack.push(newWp); newWp = new Object(); newWp.x = 951.9; newWp.y = 0; newWp.z = 446.4; newWp.rotation = 999; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1034; newWp.y = 0; newWp.z = 420; newWp.rotation = 1057.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1061.55; newWp.y = 0; newWp.z = 335.35; newWp.rotation = 1116; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1012.75; newWp.y = 0; newWp.z = 276.9; newWp.rotation = 1165.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 894.3; newWp.y = 0; newWp.z = 268.5; newWp.rotation = 1165.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 775.45; newWp.y = 0; newWp.z = 261.75; newWp.rotation = 1165.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 571.8; newWp.y = 0; newWp.z = 261.15; newWp.rotation = 1170; waypointStack.push(newWp); newWp = new Object(); newWp.x = 452.4; newWp.y = 0; newWp.z = 261.8; newWp.rotation = 1170; waypointStack.push(newWp); newWp = new Object(); newWp.x = 365.8; newWp.y = 0; newWp.z = 281.45; newWp.rotation = 1233; waypointStack.push(newWp); newWp = new Object(); newWp.x = 324.35; newWp.y = 0; newWp.z = 349.6; newWp.rotation = 1260; waypointStack.push(newWp); } else { if (_arg1 == 7){ newWp = new Object(); newWp.x = 330; newWp.y = 0; newWp.z = 450; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 330; newWp.y = 0; newWp.z = 505.95; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 332.45; newWp.y = 0; newWp.z = 611.35; newWp.rotation = 189; waypointStack.push(newWp); newWp = new Object(); newWp.x = 346.1; newWp.y = 0; newWp.z = 706.5; newWp.rotation = 198; waypointStack.push(newWp); newWp = new Object(); newWp.x = 381.25; newWp.y = 0; newWp.z = 797.85; newWp.rotation = 229.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 443.15; newWp.y = 0; newWp.z = 846.1; newWp.rotation = 247.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 544.95; newWp.y = 0; newWp.z = 890.8; newWp.rotation = 247.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 658.1; newWp.y = 0; newWp.z = 921.05; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 755.3; newWp.y = 0; newWp.z = 903.4; newWp.rotation = 288; waypointStack.push(newWp); newWp = new Object(); newWp.x = 836; newWp.y = 0; newWp.z = 877.9; newWp.rotation = 288; waypointStack.push(newWp); newWp = new Object(); newWp.x = 933.4; newWp.y = 0; newWp.z = 856.95; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1029.5; newWp.y = 0; newWp.z = 854.65; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1204.55; newWp.y = 0; newWp.z = 866.65; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1304.3; newWp.y = 0; newWp.z = 860.3; newWp.rotation = 274.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1384.8; newWp.y = 0; newWp.z = 859.4; newWp.rotation = 252; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1458.85; newWp.y = 0; newWp.z = 898.45; newWp.rotation = 207; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1562.7; newWp.y = 0; newWp.z = 960.65; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1646.35; newWp.y = 0; newWp.z = 960.4; newWp.rotation = 279; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1818.8; newWp.y = 0; newWp.z = 949.5; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1926.7; newWp.y = 0; newWp.z = 949.4; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2038.4; newWp.y = 0; newWp.z = 949.4; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2146.3; newWp.y = 0; newWp.z = 949.4; newWp.rotation = 270; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2257.45; newWp.y = 0; newWp.z = 944.1; newWp.rotation = 288; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2342.3; newWp.y = 0; newWp.z = 878.9; newWp.rotation = 355.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2351.05; newWp.y = 0; newWp.z = 790.35; newWp.rotation = 364.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2353.7; newWp.y = 0; newWp.z = 621.55; newWp.rotation = 355.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2358.55; newWp.y = 0; newWp.z = 490.95; newWp.rotation = 364.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2347.2; newWp.y = 0; newWp.z = 395.8; newWp.rotation = 378; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2305.35; newWp.y = 0; newWp.z = 289.65; newWp.rotation = 427.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2168.65; newWp.y = 0; newWp.z = 243.65; newWp.rotation = 459; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2088.55; newWp.y = 0; newWp.z = 250.2; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1872.9; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1684.1; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1437.5; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1298.8; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1025.25; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 647.7; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 493.55; newWp.y = 0; newWp.z = 251.1; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 383.85; newWp.y = 0; newWp.z = 262.4; newWp.rotation = 481.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 308.35; newWp.y = 0; newWp.z = 349.05; newWp.rotation = 531; waypointStack.push(newWp); }; }; if (_arg1 == 8){ newWp = new Object(); newWp.x = 311.15; newWp.y = 0; newWp.z = 353.35; newWp.rotation = 1620; waypointStack.push(newWp); newWp = new Object(); newWp.x = 311.15; newWp.y = 0; newWp.z = 416.35; newWp.rotation = 1620; waypointStack.push(newWp); newWp = new Object(); newWp.x = 316.45; newWp.y = 0; newWp.z = 495.15; newWp.rotation = 1638; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350.3; newWp.y = 0; newWp.z = 574.7; newWp.rotation = 1656; waypointStack.push(newWp); newWp = new Object(); newWp.x = 407.7; newWp.y = 0; newWp.z = 656.4; newWp.rotation = 1656; waypointStack.push(newWp); newWp = new Object(); newWp.x = 465.75; newWp.y = 0; newWp.z = 755.2; newWp.rotation = 1629; waypointStack.push(newWp); newWp = new Object(); newWp.x = 482.7; newWp.y = 0; newWp.z = 833.7; newWp.rotation = 1629; waypointStack.push(newWp); newWp = new Object(); newWp.x = 504.85; newWp.y = 0; newWp.z = 922.65; newWp.rotation = 1647; waypointStack.push(newWp); newWp = new Object(); newWp.x = 548.55; newWp.y = 0; newWp.z = 988.85; newWp.rotation = 1678.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 610.8; newWp.y = 0; newWp.z = 1032.35; newWp.rotation = 1705.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 730.4; newWp.y = 0; newWp.z = 1018.5; newWp.rotation = 1741.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 844.55; newWp.y = 0; newWp.z = 966.85; newWp.rotation = 1701; waypointStack.push(newWp); newWp = new Object(); newWp.x = 920.75; newWp.y = 0; newWp.z = 977.85; newWp.rotation = 1660.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 980.3; newWp.y = 0; newWp.z = 1023; newWp.rotation = 1687.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1062; newWp.y = 0; newWp.z = 1048.05; newWp.rotation = 1723.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1131.7; newWp.y = 0; newWp.z = 1025; newWp.rotation = 1759.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1190.05; newWp.y = 0; newWp.z = 977.7; newWp.rotation = 1723.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1261.95; newWp.y = 0; newWp.z = 961.05; newWp.rotation = 1687.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1391.05; newWp.y = 0; newWp.z = 1020.35; newWp.rotation = 1692; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1524.2; newWp.y = 0; newWp.z = 1027.2; newWp.rotation = 1755; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1599.15; newWp.y = 0; newWp.z = 976.8; newWp.rotation = 1728; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1722.15; newWp.y = 0; newWp.z = 956; newWp.rotation = 1701; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1817.85; newWp.y = 0; newWp.z = 962.3; newWp.rotation = 1710; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1925.55; newWp.y = 0; newWp.z = 966.15; newWp.rotation = 1696.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1999.95; newWp.y = 0; newWp.z = 983.25; newWp.rotation = 1678.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2121.15; newWp.y = 0; newWp.z = 1040.1; newWp.rotation = 1701; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2213.55; newWp.y = 0; newWp.z = 1044.05; newWp.rotation = 1764; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2251.15; newWp.y = 0; newWp.z = 988.25; newWp.rotation = 1795.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2257.25; newWp.y = 0; newWp.z = 906.05; newWp.rotation = 1809; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2247.7; newWp.y = 0; newWp.z = 830; newWp.rotation = 1800; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2244.2; newWp.y = 0; newWp.z = 753.25; newWp.rotation = 1800; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2243.85; newWp.y = 0; newWp.z = 676.2; newWp.rotation = 1800; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2246.5; newWp.y = 0; newWp.z = 599.5; newWp.rotation = 1782; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2283.75; newWp.y = 0; newWp.z = 499.95; newWp.rotation = 1768.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2321.65; newWp.y = 0; newWp.z = 433.2; newWp.rotation = 1786.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2339.8; newWp.y = 0; newWp.z = 330.05; newWp.rotation = 1822.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2302.15; newWp.y = 0; newWp.z = 269.45; newWp.rotation = 1867.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2146.3; newWp.y = 0; newWp.z = 251.9; newWp.rotation = 1890; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1915.3; newWp.y = 0; newWp.z = 253; newWp.rotation = 1890; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1822.95; newWp.y = 0; newWp.z = 254.65; newWp.rotation = 1903.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1734.35; newWp.y = 0; newWp.z = 349.9; newWp.rotation = 1989; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1740.1; newWp.y = 0; newWp.z = 425.2; newWp.rotation = 1989; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1755.75; newWp.y = 0; newWp.z = 527.85; newWp.rotation = 1989; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1761.6; newWp.y = 0; newWp.z = 604.35; newWp.rotation = 1975.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1753.1; newWp.y = 0; newWp.z = 680.25; newWp.rotation = 1948.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1694.8; newWp.y = 0; newWp.z = 753.5; newWp.rotation = 1890; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1584.7; newWp.y = 0; newWp.z = 741.25; newWp.rotation = 1831.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1526.9; newWp.y = 0; newWp.z = 620.9; newWp.rotation = 1827; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1459.45; newWp.y = 0; newWp.z = 550; newWp.rotation = 1867.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1387.9; newWp.y = 0; newWp.z = 514.35; newWp.rotation = 1845; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1345.2; newWp.y = 0; newWp.z = 456.05; newWp.rotation = 1800; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1336.75; newWp.y = 0; newWp.z = 304.65; newWp.rotation = 1827; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1297.75; newWp.y = 0; newWp.z = 245.5; newWp.rotation = 1894.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1178.2; newWp.y = 0; newWp.z = 259.95; newWp.rotation = 1921.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1105.15; newWp.y = 0; newWp.z = 301.85; newWp.rotation = 1908; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1033.75; newWp.y = 0; newWp.z = 312.6; newWp.rotation = 1872; waypointStack.push(newWp); newWp = new Object(); newWp.x = 965.3; newWp.y = 0; newWp.z = 283.05; newWp.rotation = 1849.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 887.7; newWp.y = 0; newWp.z = 245.25; newWp.rotation = 1885.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 792.75; newWp.y = 0; newWp.z = 234.95; newWp.rotation = 1894.5; waypointStack.push(newWp); newWp = new Object(); newWp.x = 689.05; newWp.y = 0; newWp.z = 238.1; newWp.rotation = 1890; waypointStack.push(newWp); newWp = new Object(); newWp.x = 612; newWp.y = 0; newWp.z = 238.45; newWp.rotation = 1890; waypointStack.push(newWp); newWp = new Object(); newWp.x = 461.95; newWp.y = 0; newWp.z = 241; newWp.rotation = 1899; waypointStack.push(newWp); newWp = new Object(); newWp.x = 355.6; newWp.y = 0; newWp.z = 269.45; newWp.rotation = 1944; waypointStack.push(newWp); } else { if (_arg1 == 9){ newWp = new Object(); newWp.x = 275.85; newWp.y = 0; newWp.z = 427.7; newWp.rotation = 204; waypointStack.push(newWp); newWp = new Object(); newWp.x = 354.6; newWp.y = 0; newWp.z = 625.25; newWp.rotation = 176; waypointStack.push(newWp); newWp = new Object(); newWp.x = 323.9; newWp.y = 0; newWp.z = 1063.8; newWp.rotation = 176; waypointStack.push(newWp); newWp = new Object(); newWp.x = 556.65; newWp.y = 0; newWp.z = 1143.65; newWp.rotation = 332; waypointStack.push(newWp); newWp = new Object(); newWp.x = 645.2; newWp.y = 0; newWp.z = 979.75; newWp.rotation = 332; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1032.8; newWp.y = 0; newWp.z = 962.25; newWp.rotation = 264; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1733.75; newWp.y = 0; newWp.z = 752.1; newWp.rotation = 272; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2053.05; newWp.y = 0; newWp.z = 716; newWp.rotation = 352; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2026.7; newWp.y = 0; newWp.z = 323.4; newWp.rotation = 416; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1414.9; newWp.y = 0; newWp.z = 246.35; newWp.rotation = 448; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1230.35; newWp.y = 0; newWp.z = 240.9; newWp.rotation = 448; waypointStack.push(newWp); newWp = new Object(); newWp.x = 753.35; newWp.y = 0; newWp.z = 263.95; newWp.rotation = 456; waypointStack.push(newWp); newWp = new Object(); newWp.x = 746.15; newWp.y = 0; newWp.z = 443.8; newWp.rotation = 76; waypointStack.push(newWp); newWp = new Object(); newWp.x = 446.6; newWp.y = 0; newWp.z = 369.1; newWp.rotation = 76; waypointStack.push(newWp); newWp = new Object(); newWp.x = 360.8; newWp.y = 0; newWp.z = 341.6; newWp.rotation = 172; waypointStack.push(newWp); newWp = new Object(); newWp.x = 352.9; newWp.y = 0; newWp.z = 434.9; newWp.rotation = 184; waypointStack.push(newWp); }; }; if (_arg1 == 10){ newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 515.7; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 517.4; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 519; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.741466136765; newWp.y = 0; newWp.z = 756.786636860732; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 673.818794458073; newWp.y = 0; newWp.z = 739.95441981908; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 692.846113191625; newWp.y = 0; newWp.z = 738.2897451326; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 711.773812455368; newWp.y = 0; newWp.z = 736.633786020394; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.72344055714; newWp.y = 0; newWp.z = 762.395646189764; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1441.49989769244; newWp.y = 0; newWp.z = 759.497868710896; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1442.25047292324; newWp.y = 0; newWp.z = 756.696683814658; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.40885445344; newWp.y = 0; newWp.z = 586.802353839216; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.26068969077; newWp.y = 0; newWp.z = 585.10882285246; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.12124050237; newWp.y = 0; newWp.z = 583.514911335514; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.07905080332; newWp.y = 0; newWp.z = 351.893311646652; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1436.63185080929; newWp.y = 0; newWp.z = 349.000767403063; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1433.26125525956; newWp.y = 0; newWp.z = 346.172501920442; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1324.13143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1316.23143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1308.43143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 979.929187573934; newWp.y = 0; newWp.z = 335.329928594138; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 963.193116645993; newWp.y = 0; newWp.z = 333.865712115977; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 946.556665187861; newWp.y = 0; newWp.z = 332.410211212091; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 639.03890070637; newWp.y = 0; newWp.z = 280.452138957308; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 624.93638364255; newWp.y = 0; newWp.z = 276.673380898811; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 610.930459161358; newWp.y = 0; newWp.z = 272.920504744825; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 597.021127262796; newWp.y = 0; newWp.z = 269.193510495349; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 337.936855795235; newWp.y = 0; newWp.z = 368.179319538317; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 331.986855795235; newWp.y = 0; newWp.z = 378.485021843352; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 326.086855795235; newWp.y = 0; newWp.z = 388.704121608009; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 320.236855795235; newWp.y = 0; newWp.z = 398.836618832286; newWp.rotation = 510; waypointStack.push(newWp); } else { if (_arg1 == 11){ newWp = new Object(); newWp.x = 275.85; newWp.y = 0; newWp.z = 427.7; newWp.rotation = 204; waypointStack.push(newWp); newWp = new Object(); newWp.x = 354.6; newWp.y = 0; newWp.z = 625.25; newWp.rotation = 176; waypointStack.push(newWp); newWp = new Object(); newWp.x = 323.9; newWp.y = 0; newWp.z = 1063.8; newWp.rotation = 176; waypointStack.push(newWp); newWp = new Object(); newWp.x = 556.65; newWp.y = 0; newWp.z = 1143.65; newWp.rotation = 332; waypointStack.push(newWp); newWp = new Object(); newWp.x = 645.2; newWp.y = 0; newWp.z = 979.75; newWp.rotation = 332; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1032.8; newWp.y = 0; newWp.z = 962.25; newWp.rotation = 264; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1733.75; newWp.y = 0; newWp.z = 752.1; newWp.rotation = 272; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2053.05; newWp.y = 0; newWp.z = 716; newWp.rotation = 352; waypointStack.push(newWp); newWp = new Object(); newWp.x = 2026.7; newWp.y = 0; newWp.z = 323.4; newWp.rotation = 416; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1414.9; newWp.y = 0; newWp.z = 246.35; newWp.rotation = 448; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1230.35; newWp.y = 0; newWp.z = 240.9; newWp.rotation = 448; waypointStack.push(newWp); newWp = new Object(); newWp.x = 753.35; newWp.y = 0; newWp.z = 263.95; newWp.rotation = 456; waypointStack.push(newWp); newWp = new Object(); newWp.x = 746.15; newWp.y = 0; newWp.z = 443.8; newWp.rotation = 76; waypointStack.push(newWp); newWp = new Object(); newWp.x = 446.6; newWp.y = 0; newWp.z = 369.1; newWp.rotation = 76; waypointStack.push(newWp); newWp = new Object(); newWp.x = 360.8; newWp.y = 0; newWp.z = 341.6; newWp.rotation = 172; waypointStack.push(newWp); newWp = new Object(); newWp.x = 352.9; newWp.y = 0; newWp.z = 434.9; newWp.rotation = 184; waypointStack.push(newWp); } else { if (_arg1 == 12){ newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 515.7; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 517.4; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 350; newWp.y = 0; newWp.z = 519; newWp.rotation = 180; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.805744897734; newWp.y = 0; newWp.z = 756.863241305043; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 347.741466136765; newWp.y = 0; newWp.z = 756.786636860732; newWp.rotation = 220; waypointStack.push(newWp); newWp = new Object(); newWp.x = 673.818794458073; newWp.y = 0; newWp.z = 739.95441981908; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 692.846113191625; newWp.y = 0; newWp.z = 738.2897451326; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 711.773812455368; newWp.y = 0; newWp.z = 736.633786020394; newWp.rotation = 275; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.72344055714; newWp.y = 0; newWp.z = 762.395646189764; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1441.49989769244; newWp.y = 0; newWp.z = 759.497868710896; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1442.25047292324; newWp.y = 0; newWp.z = 756.696683814658; newWp.rotation = 345; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.40885445344; newWp.y = 0; newWp.z = 586.802353839216; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.26068969077; newWp.y = 0; newWp.z = 585.10882285246; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1460.12124050237; newWp.y = 0; newWp.z = 583.514911335514; newWp.rotation = 365; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1440.07905080332; newWp.y = 0; newWp.z = 351.893311646652; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1436.63185080929; newWp.y = 0; newWp.z = 349.000767403063; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1433.26125525956; newWp.y = 0; newWp.z = 346.172501920442; newWp.rotation = 410; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1324.13143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1316.23143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 1308.43143153686; newWp.y = 0; newWp.z = 311.123094909851; newWp.rotation = 450; waypointStack.push(newWp); newWp = new Object(); newWp.x = 979.929187573934; newWp.y = 0; newWp.z = 335.329928594138; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 963.193116645993; newWp.y = 0; newWp.z = 333.865712115977; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 946.556665187861; newWp.y = 0; newWp.z = 332.410211212091; newWp.rotation = 445; waypointStack.push(newWp); newWp = new Object(); newWp.x = 639.03890070637; newWp.y = 0; newWp.z = 280.452138957308; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 624.93638364255; newWp.y = 0; newWp.z = 276.673380898811; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 610.930459161358; newWp.y = 0; newWp.z = 272.920504744825; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 597.021127262796; newWp.y = 0; newWp.z = 269.193510495349; newWp.rotation = 435; waypointStack.push(newWp); newWp = new Object(); newWp.x = 337.936855795235; newWp.y = 0; newWp.z = 368.179319538317; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 331.986855795235; newWp.y = 0; newWp.z = 378.485021843352; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 326.086855795235; newWp.y = 0; newWp.z = 388.704121608009; newWp.rotation = 510; waypointStack.push(newWp); newWp = new Object(); newWp.x = 320.236855795235; newWp.y = 0; newWp.z = 398.836618832286; newWp.rotation = 510; waypointStack.push(newWp); }; }; }; } public function setRaceOverOptions(){ prepButton(replayBtn, rollOver, rollOut, onMouseUpReplayBtn); prepButton(nextBtn, rollOver, rollOut, onMouseUpNextBtn); prepButton(returnToMenuBtn, rollOver, rollOut, onMouseUpReturnToMenuBtn); if (QUIT_GAME){ btnSubmitHighScore.visible = false; btnMoreGames.visible = true; } else { btnSubmitHighScore.visible = true; btnMoreGames.visible = false; }; } public function onMouseUpHiBtn(_arg1:MouseEvent){ GAME_QUALITY = StageQuality.MEDIUM; hiBtn.alpha = 1; lowBtn.alpha = 0.5; } public function clickCharTexButton(_arg1:MouseEvent){ trace("click change character"); charId = (charId + _arg1.target.inc); if (charId < 0){ charId = (characterStack.length - 1); } else { if (charId >= characterStack.length){ charId = 0; }; }; charSelectModel.removeChild(charMesh); charMesh = null; masterCharMesh.replaceMaterialByName(characterStack[charId].material, "SurfaceMaterial00"); charMesh = masterCharMesh.clone(); charMesh.scaleY = -1; charMesh.rotationX = -90; charSelectModel.addChild(charMesh); } public function addPlayer(_arg1){ var _local2:*; var _local3:*; var _local4:*; _local2 = new Object(); _local2.swing = 0; _local2.activeCheckCount = 0; _local2.activeCheckMarker = 0; _local2.laps = 0; _local2.ghostData = new Array(); _local2.ghostTick = 0; _local2.maxSpeed = 12; _local2.isBoosting = false; _local2.boostLength = 0; _local2.lastSpeedUp = null; _local2.maxThrust = 300000; _local2.cameraFollow = true; _local2.starCount = 0; _local2.slowCount = 0; _local2.spin = 0; _local2.coins = 0; _local2.hasPowerUp = false; _local2.powerUp = null; if (_arg1 == true){ _local2.practice = false; } else { _local2.practice = true; }; _local3 = game.levels[playerSettings.levelId].xStart; _local4 = game.levels[playerSettings.levelId].yStart; player = addGameObjectToLoadStack("player", playerControl, RACECAR2MODEL, 14, 25, _local3, 0, _local4, 0, 0, 0, _local2, 0xFF0000, true, 180, -20, 0, 0); } public function createMap(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; _local1 = game.levels[playerSettings.levelId].map; tileStack = new Array(); _local2 = 0; _local3 = -500; _local4 = 0; _local5 = 0; _local6 = _local1.length; _local7 = _local1[0].length; _local4 = 0; while (_local4 < _local6) { _local5 = 0; while (_local5 < _local7) { _local8 = new Object(); _local8.tileX = _local5; _local8.tileY = _local4; drawTile(_local5, _local4, _local8, false); game.tileStack.push(_local8); _local5++; }; _local4++; }; game.mapTileWidth = (_local1[0].length - 1); game.mapTileHeight = (_local1.length - 1); game.mapWidth = (_local1[0].length * game.tileWidth); game.mapHeight = ((_local1.length - 1) * game.tileHeight); } public function rollOver(_arg1){ _arg1.target.gotoAndStop("over"); soundFxChan = cpBeepSnd.play(0, 0, sfxTransform); } public function outputGhostData(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:String; _local2 = _arg1.params; _local3 = 0; _local4 = _local2.ghostData.length; _local5 = new String(); _local3 = 0; while (_local3 < _local4) { _local6 = _local2.ghostData[_local3]; _local7 = ((((((("n|" + _local6.x) + "|") + _local6.y) + "|") + _local6.z) + "|") + _local6.rotationY); _local5 = (_local5 + (_local7 + "*")); _local3++; }; _local5 = (_local5 + "?"); _arg1.ghostDataStr = _local5; } public function levelBackBtnClicked(_arg1){ gotoWorldSelect(); } public function endSplash(){ gameHolder.filters = []; countdown(); } public function getTile(_arg1){ var _local2:*; var _local3:*; _local2 = Math.floor((_arg1.x / game.tileWidth)); _local3 = Math.floor((_arg1.y / game.tileHeight)); return (new Point(_local2, _local3)); } public function setInstructions(){ prepButton(startBtn, rollOver, rollOut, startBtnClicked); prepButton(backBtn, rollOver, rollOut, backBtnClicked); } public function raceComplete(_arg1:Boolean){ mode = GAME_OVER; removeGameLoop(); clearGame(); if (_arg1){ gotoMenu(); }; } public function getAngle(_arg1, _arg2, _arg3, _arg4):Number{ var _local5:*; _local5 = Math.atan2((_arg2 - _arg4), (_arg1 - _arg3)); return (radToDeg(_local5)); } public function rollOverWorldThumb(_arg1:MouseEvent){ var _local2:*; _local2 = _arg1.target; descriptionTx.text = _local2.description; _arg1.target.gotoAndStop("over"); soundFxChan = cpBeepSnd.play(0, 0, sfxTransform); } public function degToRad(_arg1){ return ((_arg1 * (Math.PI / 180))); } public function resetCheckPoints(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = game.checkpointStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.checkpointStack[_local1]; _local3.model.visible = true; _local3.activeModel.visible = false; _local3.active = false; _local1++; }; } public function playerControl(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:b2Vec2; var _local12:*; _local2 = _arg1; _local3 = _local2.model; _local4 = game.keys; _local5 = game.levels[playerSettings.levelId].map; if (mode == PRACTICE){ _local2.params.maxThrust = 100000; }; if (!game.raceOver){ _local12 = (_local2.params.laps + 1); _local12 = Math.min(_local12, 3); inGameUi.lapTx.text = (("Lap " + String(_local12)) + " / 3"); camera.target = _local2.model; }; _local6 = int((_local3.x / game.tileWidth)); _local7 = int((_local3.z / game.tileHeight)); _local2.xTile = _local6; _local2.yTile = _local7; _local8 = tileTypes[_local5[_local7][_local6]].friction; if (game.raceOver){ _local2.params.maxThrust = (_local2.params.maxThrust - 30000); _local2.params.maxThrust = Math.max(0, _local2.params.maxThrust); }; if (_arg1.params.starCount){ _local9 = 20000; } else { _local9 = 0; }; if (_local4.left){ _local2.rotation = (_local2.rotation - 4.5); } else { if (_local4.right){ _local2.rotation = (_local2.rotation + 4.5); }; }; _local10 = (_local2.rotation - 180); _local2.box.m_rotation = (Math.PI - ((_local10 * Math.PI) / 180)); if (_local4.up){ _local2.thrust = (_local2.params.maxThrust + _local9); }; if (WAIT > 0){ WAIT--; }; if (_local4.a){ if (mode == PRACTICE){ if (WAIT == 0){ addWayPoint(_local2); }; }; if (((_arg1.params.hasPowerUp) && (!((_arg1.params.powerUp == null))))){ _arg1.params.powerUp.onUse.apply(null, [_arg1]); _arg1.params.hasPowerUp = false; _arg1.params.powerUp = null; resetPowerUpSelector(); }; }; if (_local4.z){ }; if (_arg1.params.isBoosting){ _local2.params.maxThrust = (400000 + _local9); if (_arg1.params.boostLength > 0){ _arg1.params.boostLength--; } else { _arg1.params.isBoosting = false; _arg1.params.lastSpeedUp = null; _local2.params.maxThrust = (300000 + _local9); }; } else { if (_local4.down == true){ _local2.thrust = (-(_local2.params.maxThrust) / 20); }; if (thrust > thrustDamping){ _local2.thrust = (_local2.thrust - _local2.thrustDamping); }; if (_local2.thrust < -(_local2.thrustDamping)){ _local2.thrust = (_local2.thrust + _local2.thrustDamping); }; if ((((_local2.thrust > -(_local2.thrustDamping))) && ((_local2.thrust < _local2.thrustDamping)))){ _local2.thrust = 0; }; }; if (_arg1.params.starCount > 0){ _local2.thrust = (_local2.thrust * 1); _arg1.params.starCount--; newParticle(((_arg1.model.x + int((Math.random() * 10))) - int((Math.random() * 10))), _arg1.model.y, ((_arg1.model.z + int((Math.random() * 10))) - int((Math.random() * 10))), 8, 8, 0, 3, 0, smallStarMaterial, 30); } else { _local2.thrust = (_local2.thrust * _local8); }; if (_arg1.params.slowCount > 0){ _arg1.params.maxThrust = 150000; _arg1.params.slowCount--; if (_arg1.params.slowCount <= 0){ _arg1.params.maxThrust = 300000; _arg1.badClouds.visible = false; }; }; _local11 = new b2Vec2((_local2.thrust * Math.sin(((_local10 * Math.PI) / 180))), (_local2.thrust * Math.cos(((_local10 * Math.PI) / 180)))); _arg1.box.WakeUp(); _arg1.box.ApplyImpulse(_local11, _local2.box.GetCenterPosition()); if (_arg1.params.spin > 0){ _arg1.params.spin--; _arg1.rotation = (_arg1.rotation + _arg1.params.spin); camera.target = null; }; _local2.model.x = _arg1.box.m_userData.x; _local2.model.z = _arg1.box.m_userData.y; _local2.model.rotationY = (_local2.rotation + 180); checkSpeedUps(_local2); checkItems(_local2); checkCheckPoints(_local2); updateTiles(_local2); } public function initPv(_arg1){ viewport = new Viewport3D(550, 400, false, true); _arg1.addChild(viewport); viewport.interactive = true; renderer = new BasicRenderEngine(); scene = new Scene3D(); camera = new SpringCamera3D(); camera.zoom = 8; camera.focus = 130; camera.x = 0; camera.y = 600; camera.z = -500; camera.mass = 10; camera.damping = 4; camera.stiffness = 1; camera.positionOffset = new Number3D(0, 550, -500); } public function npcControl(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; _local2 = _arg1.model; _local3 = _arg1.params.ghost; if (_arg1.params.nodeMarker < _local3.nodes.length){ _local2.x = _local3.nodes[_arg1.params.nodeMarker][1]; _local2.y = _local3.nodes[_arg1.params.nodeMarker][2]; _local2.z = _local3.nodes[_arg1.params.nodeMarker][3]; _local2.rotationY = _local3.nodes[_arg1.params.nodeMarker][4]; _arg1.rotation = (_local2.rotationY + 180); _arg1.params.nodeMarker++; _arg1.speed = 12; } else { _local5 = (Math.sin((_arg1.rotation * (Math.PI / 180))) * _arg1.speed); _local6 = (Math.cos((_arg1.rotation * (Math.PI / 180))) * _arg1.speed); _local2.x = (_local2.x - _local5); _local2.z = (_local2.z - _local6); if (_arg1.speed > 0){ _arg1.speed = (_arg1.speed - 0.5); }; }; _local4 = convertTo2DCoords(_local2, camera, 175, 175); _arg1.params.npcLabel.x = _local4.x; _arg1.params.npcLabel.y = _local4.y; } public function setToRoad(_arg1, _arg2){ var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:*; var _local14:*; var _local15:*; _local3 = null; _local4 = null; _local5 = null; _local6 = null; _local7 = game.levels[playerSettings.levelId].map; _local8 = 0; if ((_arg1.tileY - 1) >= 0){ _local9 = tileTypes[_local7[(_arg1.tileY - 1)][_arg1.tileX]]; if (_local9.isRoad == true){ _local8 = (_local8 + 0x1000); }; _local3 = findTileByCoords(_arg1.tileX, (_arg1.tileY - 1)); }; if ((_arg1.tileY + 1) <= (_local7.length - 1)){ _local10 = tileTypes[_local7[(_arg1.tileY + 1)][_arg1.tileX]]; if (_local10.isRoad == true){ _local8 = (_local8 + 0x0100); }; _local4 = findTileByCoords(_arg1.tileX, (_arg1.tileY + 1)); }; if ((_arg1.tileX - 1) >= 0){ _local11 = tileTypes[_local7[_arg1.tileY][(_arg1.tileX - 1)]]; if (_local11.isRoad == true){ _local8 = (_local8 + 16); }; _local5 = findTileByCoords((_arg1.tileX - 1), _arg1.tileY); }; if ((_arg1.tileX + 1) <= (_local7[0].length - 1)){ _local12 = tileTypes[_local7[_arg1.tileY][(_arg1.tileX + 1)]]; if (_local12.isRoad == true){ _local8 = (_local8 + 1); }; _local6 = findTileByCoords((_arg1.tileX + 1), _arg1.tileY); }; if (_local8 == 0){ trace("//DEFAULT NO CONNECTIONS"); _local7[_arg1.tileY][_arg1.tileX] = 9; redrawTile(_arg1, true); } else { trace("//FIND MY ROAD VALUE"); _local13 = 0; _local14 = tileTypes.length; _local13 = 0; while (_local13 < _local14) { _local15 = tileTypes[_local13]; if (_local15.isRoad){ if (_local15.roadValue == _local8){ trace("//FOUND ROAD TYPE"); trace(("label :" + _local15.label)); _local7[_arg1.tileY][_arg1.tileX] = _local13; break; }; }; _local13++; }; redrawTile(_arg1, true); }; if (_arg2 == true){ if (_local3 != null){ if (_local9.isRoad == true){ setToRoad(_local3, false); }; }; if (_local4 != null){ if (_local10.isRoad == true){ setToRoad(_local4, false); }; }; if (_local5 != null){ if (_local11.isRoad == true){ setToRoad(_local5, false); }; }; if (_local6 != null){ if (_local12.isRoad == true){ setToRoad(_local6, false); }; }; }; outputMap(); } public function npcCollectPowerUp(_arg1){ var _local2:*; if (!game.raceOver){ _local2 = (500 + int((Math.random() * 500))); addTimeout(setTimeout(giveNpcRandomPowerUp, _local2, _arg1)); }; } public function leaveGame(){ raceComplete(true); } public function loadGameObject(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, _arg17, _arg18){ var _local19:*; var _local20:*; var _local21:*; var _local22:*; var _local23:*; var _local24:*; var _local25:*; var _local26:*; var _local27:*; var _local28:*; var _local29:*; _local19 = new Object(); _local20 = new DisplayObject3D(); _local21 = new Marker(); _local22 = new Marker(); _local23 = new Marker(); _local24 = new Marker(); _local19.label = _arg1; _local19.marker = _local21; _local19.marker2 = _local22; _local19.marker3 = _local23; _local19.marker4 = _local24; _local25 = new DisplayObject3D(); masterKart.replaceMaterialByName(kartMaterial, "SurfaceMaterial00"); _local26 = masterKart.clone(); _local26.scaleY = -1; _local26.rotationX = -90; _local25.addChild(_local26); _local20.extra = new Object(); _local20.extra.owner = _local19; _local25.scaleX = (_local25.scaleY = (_local25.scaleZ = 15)); if (_arg1 == "player"){ masterCharMesh.replaceMaterialByName(playerSettings.charMeshTexture, "SurfaceMaterial00"); _local27 = masterCharMesh.clone(); _local29 = true; } else { masterCharMesh.replaceMaterialByName(_arg12.skinMaterial, "SurfaceMaterial00"); _local27 = masterCharMesh.clone(); _local29 = false; }; _local27.scaleY = -1; _local27.rotationX = -90; _local25.addChild(_local27); _local20.x = (((_arg6 * game.tileWidth) + 50) + _arg16); _local20.y = 60; _local20.z = (((_arg8 * game.tileWidth) + 50) + _arg18); _local19.width = _arg4; _local19.height = _arg5; _local19.model = _local20; _local19.xSpeed = _arg9; _local19.ySpeed = _arg10; _local19.zSpeed = _arg11; _local19.xSlide = 0; _local19.zSlide = 0; _local19.collideAlready = false; _local19.rotation = _arg15; _local19.speed = 0; _local19.label = _arg1; _local19.behaviour = _arg2; _local19.hitBounds = false; _local19.hit = false; _local19.collideFront = false; _local19.collideBack = false; _local19.params = _arg12; _local19.moveable = _arg14; _local19.collada = _local25; _local20.addChild(_local25); scene.addChild(_local19.model); _local19.cMesh = _local27; _local19.init = null; game.gameObjectStack.push(_local19); _local19.badClouds = new BillBoard(badCloudsMaterial, 32, 32, 2, 2); _local19.badClouds.y = 10; _local19.badClouds.visible = false; _local20.addChild(_local19.badClouds); _local19.box = spawnBlock(_arg1, _local20.x, _local20.z, _arg4, _arg5, 5); _local19.thrust = 0; _local19.maxThrust = 300000; _local19.thrustDamping = 300; _local19.rotationSpeed = 4.5; gameObjectLoaded(new Event("ready!")); return (_local19); } public function masterCharMeshLoaded(_arg1){ masterCharMesh.replaceMaterialByName(dracMaterial, "SurfaceMaterial00"); MODELS_LOADED = true; ALL_MODELS_LOADED = true; } public function onMouseUpOutputBtn(_arg1:MouseEvent){ outputMap(); } public function addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9):Object{ var _local10:*; _local10 = new Object(); if (!game.raceOver){ _local10.label = _arg1; _local10.model = new BillBoard(_arg2, _arg3, _arg4, 2, 2); _local10.model.x = ((_arg5 * game.tileWidth) + 50); _local10.model.y = _arg6; _local10.model.z = ((_arg7 * game.tileHeight) + 50); _local10.active = true; _local10.onCollide = _arg8; _local10.params = _arg9; scene.addChild(_local10.model); game.itemStack.push(_local10); }; return (_local10); } public function clearAllTimeouts(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = game.timeoutStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.timeoutStack[_local1]; clearTimeout(_local3); _local1++; }; game.timeoutStack = new Array(); } public function raceOver(_arg1){ var _local2:*; debug("player-raceOver"); game.raceOver = true; _local2 = {name:playerSettings.screenName, portraitLabel:playerSettings.portraitLabel, timeMs:game.timeInMs, timeDisplay:msToDisplayTime(game.timeInMs)}; game.playersFinished.push(_local2); if (game.playersFinished.length == 4){ QUIT_GAME = true; } else { QUIT_GAME = false; }; _arg1.params.cameraFollow = false; clearAllTimeouts(); showSkipButton(); showMouse(); trace("//////////////////////////////////////////////////////HI SCORE SUBMIT////////////////////////////"); trace(("track # : " + playerSettings.levelId)); trace(("player name :" + playerSettings.screenName)); trace(("player time : " + game.timeInMs)); TIME_TO_SUBMIT = game.timeInMs; TIME_TO_SUBMIT = int((TIME_TO_SUBMIT / 1000)); trace("///////////////////////////////////////////////////////////////////////////////////////////////////////////"); } public function addRoad(_arg1){ var _local2:Number; var _local3:Number; var _local4:*; _local2 = game.tileStack.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { _local4 = game.tileStack[_local3]; if (_local4.innerModel == _arg1){ setToRoad(_local4, true); }; _local3++; }; } public function addSpeedUps(){ var _local1:*; var _local2:*; var _local3:*; game.speedUpStack = new Array(); _local1 = 0; _local2 = game.levels[playerSettings.levelId].speedUps.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.levels[playerSettings.levelId].speedUps[_local1]; addSpeedUp(_local3.material, _local3.xTile, _local3.zTile, _local3.flip); _local1++; }; } public function stopAllGameSounds(){ musicChan.stop(); } public function setSoundFxVolume(_arg1){ var _local2:*; trace(("SET FX VOLUME " + _arg1)); sfxTransform.volume = _arg1; _local2 = new SoundTransform(_arg1, 0); soundFxChan.soundTransform = _local2; } public function setGame(){ if (mode == PLAY){ newGame(); setLevel(true); } else { if (mode == PRACTICE){ newGame(); setLevel(false); }; }; musicChan = gameMusic.play(0, 999, musicTransform); bgColor.gotoAndStop((playerSettings.worldId + 1)); lightningBlast.mouseEnabled = false; prepButton(endBtn, rollOver, rollOut, endBtnClicked); } public function getTime(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; _local1 = 60000; _local2 = new Date(); _local3 = _local2.getTime(); _local4 = (_local3 - startTime); _local5 = right(("0" + Math.floor(((_local4 % 1000) / 10))), 2); _local6 = right(("0" + (Math.floor((_local4 / 1000)) % 60)), 2); _local7 = Math.floor((_local4 / 60000)); game.timeInMs = _local4; return (((((_local7 + "") + _local6) + "") + _local5)); } public function bombCollide(_arg1, _arg2){ var _local3:*; var _local4:*; if (!game.raceOver){ if ((((_arg1.params.owner == _arg2)) && ((_arg1.params.fullyArmed == false)))){ } else { debug("explode Bomb"); _local3 = new Object(); _local4 = addItemWorldPos("explosion", explosionMaterial, 62.5, 40, _arg1.model.x, _arg1.model.y, _arg1.model.z, null, _local3); if (_arg2.label == "npc"){ _arg2.params.spin = 70; } else { if (_arg2.label == "player"){ _arg2.params.spin = 50; }; }; _arg1.active = false; _arg1.killMe = true; addTimeout(setTimeout(killObject, 1000, _local4)); soundFxChan = explosionSnd.play(0, 0, sfxTransform); newParticle(_arg1.model.x, _arg1.model.y, _arg1.model.z, 32, 32, 5, 10, 5, batMaterial, 30); newParticle(_arg1.model.x, _arg1.model.y, _arg1.model.z, 32, 32, -5, 10, -5, batMaterial, 30); newParticle(_arg1.model.x, _arg1.model.y, _arg1.model.z, 32, 32, 2, 10, 2, batMaterial, 30); }; }; } public function onGetGhostDataError(_arg1:IOErrorEvent){ trace("FIXX BUZZ CRACKLE....SOMEHTING'S NOT RIGHT...BACK TO MENU"); gotoMenu(); } public function updateRoad(_arg1){ _arg1.model.visible = false; } public function resetGamevars(){ game.timeoutStack = new Array(); game.keys = new Object(); game.keys.up = false; game.keys.down = false; game.keys.left = false; game.keys.right = false; game.keys.buttonA = false; game.keys.buttonB = false; game.keys.buttonC = false; game.keys.a = false; game.keys.z = false; game.tileWidth = 100; game.tileHeight = 100; game.tileStack = new Array(); game.level = 0; game.raceOver = false; game.raceStarted = false; game.playersFinished = new Array(); game.inGameScreen = true; game.complete = false; } public function onMouseUpWorldThumb(_arg1:MouseEvent){ var _local2:*; _local2 = _arg1.target; playerSettings.worldId = _local2.worldId; _local2.removeEventListener(MouseEvent.MOUSE_OUT, rollOutWorldThumb); gotoLevelSelect(); } public function onUseStarPowerUp(_arg1){ if (!game.raceOver){ _arg1.params.starCount = 100; _arg1.params.hasPowerUp = false; soundFxChan = starPowerUpSnd.play(0, 0, sfxTransform); }; } public function checkItems(_arg1){ var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local2 = 0; _local3 = game.itemStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.itemStack[_local2]; if (_local4.onCollide != null){ if (_local4.active){ _local5 = _local4.model.distanceTo(_arg1.model); if (_arg1.label == "player"){ if (_local5 < 50){ _local4.onCollide.apply(null, [_local4, _arg1]); }; } else { if (_local5 < 60){ _local4.onCollide.apply(null, [_local4, _arg1]); }; }; }; }; if (_local4.killMe){ scene.removeChild(_local4.model); _local4.model = null; _local4 = null; game.itemStack.splice(_local2, 1); _local2++; _local3--; }; _local2++; }; } public function addItems(){ var _local1:*; var _local2:*; var _local3:*; game.itemStack = new Array(); _local1 = 0; _local2 = game.levels[playerSettings.levelId].items.length; trace((">> " + game.levels[playerSettings.levelId].items.length)); _local1 = 0; while (_local1 < _local2) { _local3 = game.levels[playerSettings.levelId].items[_local1]; addItem(_local3.label, _local3.material, _local3.width, _local3.height, _local3.x, _local3.y, _local3.z, _local3.onCollide, _local3.params); _local1++; }; } public function showMouse(){ Mouse.show(); } public function addWayPoint(_arg1){ var _local2:*; trace(">>>>>>>>>>>>>Added way point"); _local2 = new Object(); _local2.x = _arg1.model.x; _local2.y = 0; _local2.z = _arg1.model.z; _local2.rotation = _arg1.rotation; wpStack.push(_local2); outputPath(); WAIT = 20; } public function onUseLightningPowerUp(_arg1){ var _local2:*; var _local3:*; var _local4:*; if (!game.raceOver){ _local2 = 0; _local3 = game.gameObjectStack.length; _local2 = 0; while (_local2 < _local3) { _local4 = game.gameObjectStack[_local2]; if (_arg1 != _local4){ _local4.params.slowCount = 100; _local4.badClouds.visible = true; _local4.params.starCount = 0; }; _local2++; }; _arg1.params.hasPowerUp = false; soundFxChan = lightningSnd.play(0, 0, sfxTransform); TweenLite.to(lightningBlast, 0.2, {alpha:1, onComplete:fadeLightningOut}); }; } public function addTileMouseEvents(){ var _local1:*; var _local2:*; var _local3:*; _local1 = game.tileStack.length; _local2 = 0; _local2 = 0; while (_local2 < _local1) { _local3 = game.tileStack[_local2]; _local3.innerModel.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onPressMapObject); _local2++; }; } public function loadNextGameObject(){ var _local1:*; _local1 = game.gameObjectLoadStack[game.gameObjectsLoaded]; loadGameObject(_local1.label, _local1.behaviour, _local1.modelToUse, _local1.width, _local1.height, _local1.startX, _local1.startY, _local1.startZ, _local1.speedX, _local1.speedY, _local1.speedZ, _local1.params, _local1.colour, _local1.moveable, _local1.startAngle, _local1.xOffset, _local1.yOffset, _local1.zOffset); } public function gotoRaceOverOptions(){ gotoAndStop("raceOverOptions"); } public function addGhostData(_arg1){ var _local2:*; var _local3:*; _local2 = _arg1.params; if (_local2.ghostTick == 0){ _local3 = new Object(); _local3.x = _arg1.model.x; _local3.y = _arg1.model.y; _local3.z = _arg1.model.z; _local3.rotationY = _arg1.model.rotationY; _local2.ghostData.push(_local3); } else { _local2.ghostTick--; }; } public function prepButton(_arg1, _arg2, _arg3, _arg4){ _arg1.addEventListener(MouseEvent.MOUSE_OVER, _arg2); _arg1.addEventListener(MouseEvent.MOUSE_OUT, _arg3); _arg1.addEventListener(MouseEvent.MOUSE_UP, _arg4); _arg1.buttonMode = true; _arg1.mouseChildren = false; } public function allGameObjectsLoaded(){ setGameLoop(); showStartRaceSplash(); } public function returnToMenu(){ raceComplete(true); } public function setMusicVolume(_arg1){ var _local2:*; musicTransform.volume = _arg1; _local2 = new SoundTransform(); _local2.volume = _arg1; musicChan.soundTransform = _local2; } public function clearGame(){ clearInputs(); clearGameCanvas(); clearItems(); clearGameObject(); clearPv(); stopAllGameSounds(); game = null; } public function setLevelSelect(){ var _local1:*; _local1 = worldStack[playerSettings.worldId]; level1Btn.inner.tx.text = _local1[0].name; level2Btn.inner.tx.text = _local1[1].name; level3Btn.inner.tx.text = _local1[2].name; level1Btn.levelId = _local1[0].id; level2Btn.levelId = _local1[1].id; level3Btn.levelId = _local1[2].id; level1Btn.tileSet = _local1[0].tileSet; level2Btn.tileSet = _local1[1].tileSet; level3Btn.tileSet = _local1[2].tileSet; prepButton(level1Btn, rollOver, rollOut, levelSelectBtnClicked); prepButton(level2Btn, rollOver, rollOut, levelSelectBtnClicked); prepButton(level3Btn, rollOver, rollOut, levelSelectBtnClicked); prepButton(backBtn, rollOver, rollOut, levelBackBtnClicked); } public function characterSelectStartBtnClicked(_arg1:MouseEvent){ characterSelectDone(); } public function levelSelectBtnClicked(_arg1:MouseEvent){ selectLevel(_arg1.target.levelId, _arg1.target.tileSet); } public function onCompleteGetTrack(_arg1:Event):void{ parseTrackData(_arg1.target.data); levelReady(true); } public function selectLevel(_arg1, _arg2){ debug(("level id " + _arg1)); playerSettings.levelId = _arg1; playerSettings.tileSet = _arg2; gotoGame(); } public function updateParticles(){ var _local1:*; var _local2:*; var _local3:*; _local1 = 0; _local2 = particleStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = particleStack[_local1]; _local3.model.x = (_local3.model.x + _local3.xSpeed); _local3.model.y = (_local3.model.y + _local3.ySpeed); _local3.model.z = (_local3.model.z + _local3.zSpeed); if (_local3.lifeSpan > 0){ _local3.lifeSpan--; } else { _local3.active = false; scene.removeChild(_local3.model); _local3.model = null; _local3 = null; particleStack.splice(_local1, 1); _local2--; _local1++; }; _local1++; }; } public function lapComplete(_arg1){ debug("player-lap"); resetCheckPoints(); _arg1.params.activeCheckMarker = 0; _arg1.params.activeCheckCount = 0; _arg1.params.laps++; if (_arg1.params.laps >= 3){ trace(">>>>>RACE OVER!!!!!"); QUIT_GAME = false; raceOver(_arg1); }; } public function distance(_arg1, _arg2){ var _local3:*; var _local4:*; var _local5:Number; _local4 = (_arg2.x - _arg1.x); _local5 = (_arg2.z - _arg1.z); _local3 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); return (_local3); } public function onMouseUpNextBtn(_arg1:MouseEvent){ nextTrack(); } public function focusInListener(_arg1:FocusEvent){ _arg1.currentTarget.text = ""; } public function clearGameObject(){ var _local1:*; var _local2:*; var _local3:*; game.ghostStack = null; _local1 = 0; _local2 = game.gameObjectStack.length; _local1 = 0; while (_local1 < _local2) { _local3 = game.gameObjectStack[_local1]; _local3 = null; _local1++; }; game.gameObjectStack = null; } } }//package grMain_m_fla
Section 147
//MenuBtn_56 (grMain_m_fla.MenuBtn_56) package grMain_m_fla { import flash.display.*; public dynamic class MenuBtn_56 extends MovieClip { public function MenuBtn_56(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 148
//MusicOnOff_Btn_8 (grMain_m_fla.MusicOnOff_Btn_8) package grMain_m_fla { import flash.display.*; public dynamic class MusicOnOff_Btn_8 extends MovieClip { public var inner:MovieClip; public function MusicOnOff_Btn_8(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 149
//NextTrackBtn_54 (grMain_m_fla.NextTrackBtn_54) package grMain_m_fla { import flash.display.*; public dynamic class NextTrackBtn_54 extends MovieClip { public function NextTrackBtn_54(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 150
//OkBtn_24 (grMain_m_fla.OkBtn_24) package grMain_m_fla { import flash.display.*; public dynamic class OkBtn_24 extends MovieClip { public function OkBtn_24(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 151
//Portraits_51 (grMain_m_fla.Portraits_51) package grMain_m_fla { import flash.display.*; public dynamic class Portraits_51 extends MovieClip { public function Portraits_51(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 152
//PowerUpSelector_41 (grMain_m_fla.PowerUpSelector_41) package grMain_m_fla { import flash.display.*; public dynamic class PowerUpSelector_41 extends MovieClip { public var icons:MovieClip; } }//package grMain_m_fla
Section 153
//PracticeBtn_12 (grMain_m_fla.PracticeBtn_12) package grMain_m_fla { import flash.display.*; public dynamic class PracticeBtn_12 extends MovieClip { public function PracticeBtn_12(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 154
//PreAnim_4 (grMain_m_fla.PreAnim_4) package grMain_m_fla { import flash.display.*; public dynamic class PreAnim_4 extends MovieClip { public function PreAnim_4(){ addFrameScript(49, frame50); } function frame50(){ stop(); } } }//package grMain_m_fla
Section 155
//Profiles_50 (grMain_m_fla.Profiles_50) package grMain_m_fla { import flash.display.*; import flash.text.*; public dynamic class Profiles_50 extends MovieClip { public var timeTx:TextField; public var screenNameTx:TextField; public var portrait:MovieClip; public var rankTx:TextField; public function Profiles_50(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 156
//Replaybtn_52 (grMain_m_fla.Replaybtn_52) package grMain_m_fla { import flash.display.*; public dynamic class Replaybtn_52 extends MovieClip { public function Replaybtn_52(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 157
//RestartBtn_46 (grMain_m_fla.RestartBtn_46) package grMain_m_fla { import flash.display.*; public dynamic class RestartBtn_46 extends MovieClip { public function RestartBtn_46(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 158
//Results_49 (grMain_m_fla.Results_49) package grMain_m_fla { import flash.display.*; public dynamic class Results_49 extends MovieClip { public var profile1:MovieClip; public var profile2:MovieClip; public var profile3:MovieClip; } }//package grMain_m_fla
Section 159
//SkipBtn_44 (grMain_m_fla.SkipBtn_44) package grMain_m_fla { import flash.display.*; public dynamic class SkipBtn_44 extends MovieClip { public function SkipBtn_44(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 160
//SoundOnOff_Btn_7 (grMain_m_fla.SoundOnOff_Btn_7) package grMain_m_fla { import flash.display.*; public dynamic class SoundOnOff_Btn_7 extends MovieClip { public function SoundOnOff_Btn_7(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 161
//StartGame_10 (grMain_m_fla.StartGame_10) package grMain_m_fla { import flash.display.*; public dynamic class StartGame_10 extends MovieClip { public function StartGame_10(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package grMain_m_fla
Section 162
//WorldSelectBtn1_31 (grMain_m_fla.WorldSelectBtn1_31) package grMain_m_fla { import flash.display.*; public dynamic class WorldSelectBtn1_31 extends MovieClip { public function WorldSelectBtn1_31(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 163
//WorldSelectBtn2_35 (grMain_m_fla.WorldSelectBtn2_35) package grMain_m_fla { import flash.display.*; public dynamic class WorldSelectBtn2_35 extends MovieClip { public function WorldSelectBtn2_35(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 164
//WorldSelectBtn3_33 (grMain_m_fla.WorldSelectBtn3_33) package grMain_m_fla { import flash.display.*; public dynamic class WorldSelectBtn3_33 extends MovieClip { public function WorldSelectBtn3_33(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package grMain_m_fla
Section 165
//AutoAlphaPlugin (gs.plugins.AutoAlphaPlugin) package gs.plugins { import flash.display.*; import gs.*; public class AutoAlphaPlugin extends TweenPlugin { protected var _tweenVisible:Boolean; protected var _tween:TweenLite; protected var _visible:Boolean; protected var _target:Object; public static const VERSION:Number = 1; public static const API:Number = 1; public function AutoAlphaPlugin(){ this.propName = "autoAlpha"; this.overwriteProps = ["alpha", "visible"]; this.onComplete = onCompleteTween; } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); if (((!((_target.visible == true))) && (_tweenVisible))){ _target.visible = true; }; } public function onCompleteTween():void{ if (((((_tweenVisible) && (!((_tween.vars.runBackwards == true))))) && ((_tween.ease == _tween.vars.ease)))){ _target.visible = _visible; }; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ _target = _arg1; _tween = _arg3; _visible = Boolean(!((_arg2 == 0))); _tweenVisible = true; addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha"); return (true); } override public function killProps(_arg1:Object):void{ super.killProps(_arg1); _tweenVisible = !(Boolean(("visible" in _arg1))); } } }//package gs.plugins
Section 166
//EndArrayPlugin (gs.plugins.EndArrayPlugin) package gs.plugins { import gs.*; import gs.utils.tween.*; public class EndArrayPlugin extends TweenPlugin { protected var _info:Array; protected var _a:Array; public static const VERSION:Number = 1.01; public static const API:Number = 1; public function EndArrayPlugin(){ _info = []; super(); this.propName = "endArray"; this.overwriteProps = ["endArray"]; } override public function set changeFactor(_arg1:Number):void{ var _local2:int; var _local3:ArrayTweenInfo; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4); _local2--; }; } else { _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _a[_local3.index] = (_local3.start + (_local3.change * _arg1)); _local2--; }; }; } public function init(_arg1:Array, _arg2:Array):void{ var _local3:int; _a = _arg1; _local3 = (_arg2.length - 1); while (_local3 > -1) { if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local3] == null))))){ _info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3], (_arg2[_local3] - _a[_local3])); }; _local3--; }; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){ return (false); }; init((_arg1 as Array), _arg2); return (true); } } }//package gs.plugins
Section 167
//FramePlugin (gs.plugins.FramePlugin) package gs.plugins { import flash.display.*; import gs.*; public class FramePlugin extends TweenPlugin { public var frame:int; protected var _target:MovieClip; public static const VERSION:Number = 1.01; public static const API:Number = 1; public function FramePlugin(){ this.propName = "frame"; this.overwriteProps = ["frame"]; this.round = true; } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.gotoAndStop(this.frame); } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){ return (false); }; _target = (_arg1 as MovieClip); this.frame = _target.currentFrame; addTween(this, "frame", this.frame, _arg2, "frame"); return (true); } } }//package gs.plugins
Section 168
//RemoveTintPlugin (gs.plugins.RemoveTintPlugin) package gs.plugins { public class RemoveTintPlugin extends TintPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1; public function RemoveTintPlugin(){ this.propName = "removeTint"; } } }//package gs.plugins
Section 169
//TintPlugin (gs.plugins.TintPlugin) package gs.plugins { import flash.display.*; import gs.*; import flash.geom.*; import gs.utils.tween.*; public class TintPlugin extends TweenPlugin { protected var _ct:ColorTransform; protected var _ignoreAlpha:Boolean; protected var _target:DisplayObject; public static const VERSION:Number = 1.1; public static const API:Number = 1; protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"]; public function TintPlugin(){ this.propName = "tint"; this.overwriteProps = ["tint"]; } override public function set changeFactor(_arg1:Number):void{ var _local2:ColorTransform; updateTweens(_arg1); if (_ignoreAlpha){ _local2 = _target.transform.colorTransform; _ct.alphaMultiplier = _local2.alphaMultiplier; _ct.alphaOffset = _local2.alphaOffset; }; _target.transform.colorTransform = _ct; } public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{ var _local3:int; var _local4:String; _target = _arg1; _ct = _target.transform.colorTransform; _local3 = (_props.length - 1); while (_local3 > -1) { _local4 = _props[_local3]; if (_ct[_local4] != _arg2[_local4]){ _tweens[_tweens.length] = new TweenInfo(_ct, _local4, _ct[_local4], (_arg2[_local4] - _ct[_local4]), "tint", false); }; _local3--; }; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ var _local4:ColorTransform; if (!(_arg1 is DisplayObject)){ return (false); }; _local4 = new ColorTransform(); if (((!((_arg2 == null))) && (!((_arg3.exposedVars.removeTint == true))))){ _local4.color = uint(_arg2); }; _ignoreAlpha = true; init((_arg1 as DisplayObject), _local4); return (true); } } }//package gs.plugins
Section 170
//TweenPlugin (gs.plugins.TweenPlugin) package gs.plugins { import gs.*; import gs.utils.tween.*; public class TweenPlugin { public var overwriteProps:Array; protected var _tweens:Array; public var round:Boolean; public var onComplete:Function; public var propName:String; protected var _changeFactor:Number;// = 0 public static const VERSION:Number = 1.03; public static const API:Number = 1; public function TweenPlugin(){ _tweens = []; _changeFactor = 0; super(); } protected function updateTweens(_arg1:Number):void{ var _local2:int; var _local3:TweenInfo; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _local3.target[_local3.property] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4); _local2--; }; } else { _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1)); _local2--; }; }; } public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _changeFactor = _arg1; } protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String=null):void{ var _local6:Number; if (_arg4 != null){ _local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4); if (_local6 != 0){ _tweens[_tweens.length] = new TweenInfo(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false); }; }; } public function killProps(_arg1:Object):void{ var _local2:int; _local2 = (this.overwriteProps.length - 1); while (_local2 > -1) { if ((this.overwriteProps[_local2] in _arg1)){ this.overwriteProps.splice(_local2, 1); }; _local2--; }; _local2 = (_tweens.length - 1); while (_local2 > -1) { if ((_tweens[_local2].name in _arg1)){ _tweens.splice(_local2, 1); }; _local2--; }; } public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.propName); return (true); } public function get changeFactor():Number{ return (_changeFactor); } public static function activate(_arg1:Array):Boolean{ var _local2:int; var _local3:Object; _local2 = (_arg1.length - 1); while (_local2 > -1) { _local3 = new (_arg1[_local2]); TweenLite.plugins[_local3.propName] = _arg1[_local2]; _local2--; }; return (true); } } }//package gs.plugins
Section 171
//VisiblePlugin (gs.plugins.VisiblePlugin) package gs.plugins { import flash.display.*; import gs.*; public class VisiblePlugin extends TweenPlugin { protected var _tween:TweenLite; protected var _visible:Boolean; protected var _target:Object; public static const VERSION:Number = 1; public static const API:Number = 1; public function VisiblePlugin(){ this.propName = "visible"; this.overwriteProps = ["visible"]; this.onComplete = onCompleteTween; } override public function set changeFactor(_arg1:Number):void{ if (_target.visible != true){ _target.visible = true; }; } public function onCompleteTween():void{ if (((!((_tween.vars.runBackwards == true))) && ((_tween.ease == _tween.vars.ease)))){ _target.visible = _visible; }; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ _target = _arg1; _tween = _arg3; _visible = Boolean(_arg2); return (true); } } }//package gs.plugins
Section 172
//VolumePlugin (gs.plugins.VolumePlugin) package gs.plugins { import flash.display.*; import gs.*; import flash.media.*; public class VolumePlugin extends TweenPlugin { protected var _st:SoundTransform; protected var _target:Object; public static const VERSION:Number = 1.01; public static const API:Number = 1; public function VolumePlugin(){ this.propName = "volume"; this.overwriteProps = ["volume"]; } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.soundTransform = _st; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))){ return (false); }; _target = _arg1; _st = _target.soundTransform; addTween(_st, "volume", _st.volume, _arg2, "volume"); return (true); } } }//package gs.plugins
Section 173
//ArrayTweenInfo (gs.utils.tween.ArrayTweenInfo) package gs.utils.tween { public class ArrayTweenInfo { public var change:Number; public var index:uint; public var start:Number; public function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){ this.index = _arg1; this.start = _arg2; this.change = _arg3; } } }//package gs.utils.tween
Section 174
//TweenInfo (gs.utils.tween.TweenInfo) package gs.utils.tween { public class TweenInfo { public var start:Number; public var name:String; public var change:Number; public var target:Object; public var property:String; public var isPlugin:Boolean; public function TweenInfo(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; } } }//package gs.utils.tween
Section 175
//TweenLite (gs.TweenLite) package gs { import flash.events.*; import flash.display.*; import flash.utils.*; import gs.utils.tween.*; import gs.plugins.*; public class TweenLite { public var delay:Number; protected var _hasUpdate:Boolean; protected var _hasPlugins:Boolean; public var started:Boolean; public var initted:Boolean; public var active:Boolean; public var startTime:Number; public var target:Object; public var duration:Number; public var gc:Boolean; public var vars:Object; public var ease:Function; public var tweens:Array; public var exposedVars:Object; public var combinedTimeScale:Number; public var initTime:Number; public static const version:Number = 10.092; private static var _timer:Timer = new Timer(2000); public static var defaultEase:Function = TweenLite.easeOut; public static var plugins:Object = {}; public static var currentTime:uint; public static var masterList:Dictionary = new Dictionary(false); protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, persist:1, renderOnStart:1, proxiedEase:1, easeParams:1, yoyo:1, loop:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1}; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; public static var timingSprite:Sprite = new Sprite(); public static var overwriteManager:Object; private static var _tlInitted:Boolean; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ var _local4:int; super(); if (_arg1 == null){ return; }; if (!_tlInitted){ TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin]); currentTime = getTimer(); timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; _timer.addEventListener("timer", killGarbage, false, 0, true); _timer.start(); _tlInitted = true; }; this.vars = _arg3; this.duration = ((_arg2) || (0.001)); this.delay = ((_arg3.delay) || (0)); this.combinedTimeScale = ((_arg3.timeScale) || (1)); this.active = Boolean((((_arg2 == 0)) && ((this.delay == 0)))); this.target = _arg1; if (typeof(this.vars.ease) != "function"){ this.vars.ease = defaultEase; }; if (this.vars.easeParams != null){ this.vars.proxiedEase = this.vars.ease; this.vars.ease = easeProxy; }; this.ease = this.vars.ease; this.exposedVars = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars; this.tweens = []; this.initTime = currentTime; this.startTime = (this.initTime + (this.delay * 1000)); _local4 = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); if (((!((_arg1 in masterList))) || ((_local4 == 1)))){ masterList[_arg1] = [this]; } else { masterList[_arg1].push(this); }; if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))) || (this.active))){ initTweenVals(); if (this.active){ render((this.startTime + 1)); } else { render(this.startTime); }; if (((((!((this.exposedVars.visible == null))) && ((this.vars.runBackwards == true)))) && ((this.target is DisplayObject)))){ this.target.visible = this.exposedVars.visible; }; }; } public function set enabled(_arg1:Boolean):void{ var _local2:Array; var _local3:Boolean; var _local4:int; if (_arg1){ if (!(this.target in masterList)){ masterList[this.target] = [this]; } else { _local2 = masterList[this.target]; _local4 = (_local2.length - 1); while (_local4 > -1) { if (_local2[_local4] == this){ _local3 = true; break; }; _local4--; }; if (!_local3){ _local2[_local2.length] = this; }; }; }; this.gc = (_arg1) ? false : true; if (this.gc){ this.active = false; } else { this.active = this.started; }; } public function clear():void{ this.tweens = []; this.vars = (this.exposedVars = {ease:this.vars.ease}); _hasUpdate = false; } public function render(_arg1:uint):void{ var _local2:Number; var _local3:Number; var _local4:TweenInfo; var _local5:int; _local2 = ((_arg1 - this.startTime) * 0.001); if (_local2 >= this.duration){ _local2 = this.duration; _local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0; } else { _local3 = this.ease(_local2, 0, 1, this.duration); }; _local5 = (this.tweens.length - 1); while (_local5 > -1) { _local4 = this.tweens[_local5]; _local4.target[_local4.property] = (_local4.start + (_local3 * _local4.change)); _local5--; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ complete(true); }; } public function activate():void{ this.started = (this.active = true); if (!this.initted){ initTweenVals(); }; if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; if (this.duration == 0.001){ this.startTime = (this.startTime - 1); }; } public function get enabled():Boolean{ return ((this.gc) ? false : true); } public function initTweenVals():void{ var _local1:String; var _local2:int; var _local3:*; var _local4:TweenInfo; if (((!((this.exposedVars.timeScale == undefined))) && (this.target.hasOwnProperty("timeScale")))){ this.tweens[this.tweens.length] = new TweenInfo(this.target, "timeScale", this.target.timeScale, (this.exposedVars.timeScale - this.target.timeScale), "timeScale", false); }; for (_local1 in this.exposedVars) { if ((_local1 in _reservedProps)){ } else { if ((_local1 in plugins)){ _local3 = new (plugins[_local1]); if (_local3.onInitTween(this.target, this.exposedVars[_local1], this) == false){ this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false); } else { this.tweens[this.tweens.length] = new TweenInfo(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true); _hasPlugins = true; }; } else { this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false); }; }; }; if (this.vars.runBackwards == true){ _local2 = (this.tweens.length - 1); while (_local2 > -1) { _local4 = this.tweens[_local2]; this.tweens[_local2].start = (_local4.start + _local4.change); _local4.change = -(_local4.change); _local2--; }; }; if (this.vars.onUpdate != null){ _hasUpdate = true; }; if (((TweenLite.overwriteManager.enabled) && ((this.target in masterList)))){ overwriteManager.manageOverwrites(this, masterList[this.target]); }; this.initted = true; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } public function killVars(_arg1:Object):void{ if (overwriteManager.enabled){ overwriteManager.killVars(_arg1, this.exposedVars, this.tweens); }; } public function complete(_arg1:Boolean=false):void{ var _local2:int; if (!_arg1){ if (!this.initted){ initTweenVals(); }; this.startTime = (currentTime - ((this.duration * 1000) / this.combinedTimeScale)); render(currentTime); return; }; if (_hasPlugins){ _local2 = (this.tweens.length - 1); while (_local2 > -1) { if (((this.tweens[_local2].isPlugin) && (!((this.tweens[_local2].target.onComplete == null))))){ this.tweens[_local2].target.onComplete(); }; _local2--; }; }; if (this.vars.persist != true){ this.enabled = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; } public static function updateAll(_arg1:Event=null):void{ var _local2:uint; var _local3:Dictionary; var _local4:Array; var _local5:int; var _local6:TweenLite; _local2 = (currentTime = getTimer()); _local3 = masterList; for each (_local4 in _local3) { _local5 = (_local4.length - 1); while (_local5 > -1) { _local6 = _local4[_local5]; if (_local6.active){ _local6.render(_local2); } else { if (_local6.gc){ _local4.splice(_local5, 1); } else { if (_local2 >= _local6.startTime){ _local6.activate(); _local6.render(_local2); }; }; }; _local5--; }; }; } public static function removeTween(_arg1:TweenLite, _arg2:Boolean=true):void{ if (_arg1 != null){ if (_arg2){ _arg1.clear(); }; _arg1.enabled = false; }; } public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{ var _local3:Array; var _local4:int; var _local5:TweenLite; if (((!((_arg1 == null))) && ((_arg1 in masterList)))){ _local3 = masterList[_arg1]; _local4 = (_local3.length - 1); while (_local4 > -1) { _local5 = _local3[_local4]; if (((_arg2) && (!(_local5.gc)))){ _local5.complete(false); }; _local5.clear(); _local4--; }; delete masterList[_arg1]; }; } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } protected static function killGarbage(_arg1:TimerEvent):void{ var _local2:Dictionary; var _local3:Object; _local2 = masterList; for (_local3 in _local2) { if (_local2[_local3].length == 0){ delete _local2[_local3]; }; }; } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:0})); } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } } }//package gs
Section 176
//MochiAd (mochi.as3.MochiAd) package mochi.as3 { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showClickAwayAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_timeout:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var sendHostProgress:Boolean; var options = _arg1; DEFAULTS = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_timeout = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; sendHostProgress = false; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType == "application"){ return (_local2); }; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; } else { trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal"); }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{ trace("[MochiAds] Blocked URL"); }); loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array; var _local4:Number; _local3 = _arg2.split("."); _local4 = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_w:Number; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var progress:Number; var f:Function; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }, progress_override:function (_arg1:Object):Number{ return (NaN); }, bar_offset:0}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = (10 + options.bar_offset); bar.y = (h - 20); }; bar_w = ((w - bar.x) - 10); bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo(bar_w, 0); backing.lineTo(bar_w, 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo(bar_w, 0); inside.lineTo(bar_w, 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo(bar_w, 0); outline.lineTo(bar_w, 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; progress = Math.min(1, options.progress_override(clip)); f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; if (!isNaN(progress)){ complete = (progress == 1); } else { if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){ complete = true; } else { if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Object; var _local11:Number; var _local12:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; _local7 = Math.min(1, options.progress_override(_local1)); if (_local7 == 1){ complete = true; }; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local8 = ((100 * _local6) / _local5); if (!isNaN(_local7)){ _local8 = (100 * _local7); }; _local9 = ((100 * _local3) / chk.ad_msec); _local10 = this._mochiad_bar._inside; _local11 = Math.min(100, Math.min(((_local8) || (0)), _local9)); _local11 = Math.max(this.last_pcnt, _local11); this.last_pcnt = _local11; _local10.scaleX = (_local11 * 0.01); options.ad_progress(_local11); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8}); if (_local8 >= 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local12 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (unloaded){ MochiAd.unload(_local1); } else { if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package mochi.as3
Section 177
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const LOGGED_IN:String = "LoggedIn"; public static const STORE_ITEMS:String = "StoreItems"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const ITEM_NEW:String = "ItemNew"; public static const USER_INFO:String = "UserInfo"; public static const IO_ERROR:String = "IOError"; public static const ITEM_OWNED:String = "ItemOwned"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const ERROR:String = "Error"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_HIDE:String = "LoginHide"; public static const LOGIN_SHOW:String = "LoginShow"; public static const STORE_SHOW:String = "StoreShow"; public static const PROFILE_HIDE:String = "ProfileHide"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("coins_saveUserProperties", _arg1); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showStore(_arg1:Object=null):void{ MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } } }//package mochi.as3
Section 178
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3
Section 179
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { import flash.display.*; public class MochiEvents { public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var gameStart:Number; private static var levelStart:Number; public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{ var _local3:Object; var _local4:Object; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function endGame():void{ var _local1:Number; _local1 = (new Date().time - gameStart); trigger("end_game", {time:_local1}); } public static function startGame():void{ gameStart = new Date().time; trigger("start_game"); } public static function trigger(_arg1:String, _arg2:Object=null):void{ if (_arg2 == null){ _arg2 = {}; } else { if (_arg2["kind"] != undefined){ trace("WARNING: optional arguements package contains key 'id', it will be overwritten"); _arg2["kind"] = _arg1; }; }; MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startLevel():void{ levelStart = new Date().time; trigger("start_level"); } public static function endLevel():void{ var _local1:Number; _local1 = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 180
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.net.*; import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; public static var servicesSync:MochiSync = new MochiSync(); private static var _clip:MovieClip; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _loader:Loader; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = _clip._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _clip._callbacks[cb]; } public static function get childClip():Object{ return (_clip); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; vars = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); s = "?"; i = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function warnID(_arg1:String, _arg2:Boolean):void{ var _local3:Number; _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; _local3 = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.3 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_clip._queue))){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String; var _local3:String; _local2 = _arg1.target; _local3 = _arg1.event; switch (_local2){ case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "sync": servicesSync.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_clip._queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var mochiLCURL:String; var req:URLRequest; var complete:Function; var clip = _arg1; loader = new Loader(); mochiLCURL = (_servURL + _mochiLC); req = new URLRequest(mochiLCURL); complete = function (_arg1:Object):void{ _mochiLocalConnection = MovieClip(loader.content); listen(); }; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); loader.load(req); clip.addChild(loader); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String; var _local4:String; var _local5:URLRequest; var _local6:URLVariables; _local3 = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; _local4 = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local4 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local4); _clip = createEmptyMovieClip(_arg2, _local3, 10336, false); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local5 = new URLRequest(_local4); _local6 = new URLVariables(); _local6.listenLC = _listenChannelName; _local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local6.api_version = getVersion(); if (widget){ _local6.widget = true; }; _local5.data = _local6; _loader.load(_local5); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if ((clip is DisplayObject)){ if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var mc:MovieClip; var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; mc = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 181
//MochiSync (mochi.as3.MochiSync) package mochi.as3 { import flash.utils.*; public dynamic class MochiSync extends Proxy { private var _syncContainer:Object; public static var SYNC_PROPERTY:String = "UpdateProperty"; public static var SYNC_REQUEST:String = "SyncRequest"; public function MochiSync():void{ _syncContainer = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case SYNC_REQUEST: MochiServices.send("sync_syncronize", _syncContainer); break; case SYNC_PROPERTY: _syncContainer[_arg2.name] = _arg2.value; break; }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:String; if (_syncContainer[_arg1] == _arg2){ return; }; _local3 = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } } }//package mochi.as3
Section 182
//DaeAccessor (org.ascollada.core.DaeAccessor) package org.ascollada.core { import org.ascollada.*; public class DaeAccessor extends DaeEntity { public var params:Object; public var stride:uint; public var count:uint; public var source:String; public var offset:uint; public function DaeAccessor(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XML; var _local5:String; var _local6:String; if (_arg1.localName() != ASCollada.DAE_ACCESSOR_ELEMENT){ throw (new Error((("expected a " + ASCollada.DAE_ACCESSOR_ELEMENT) + " element"))); }; super.read(_arg1); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); this.offset = getAttributeAsInt(_arg1, ASCollada.DAE_OFFSET_ATTRIBUTE); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.stride = getAttributeAsInt(_arg1, ASCollada.DAE_STRIDE_ATTRIBUTE, 1); _local2 = getNodeList(_arg1, ASCollada.DAE_PARAMETER); this.params = new Object(); _local3 = 0; while (_local3 < _local2.length()) { _local4 = _local2[_local3]; _local5 = getAttribute(_local4, ASCollada.DAE_NAME_ATTRIBUTE); _local6 = getAttribute(_local4, ASCollada.DAE_TYPE_ATTRIBUTE); this.params[_local5] = _local6; _local3++; }; } } }//package org.ascollada.core
Section 183
//DaeAnimation (org.ascollada.core.DaeAnimation) package org.ascollada.core { import org.ascollada.*; public class DaeAnimation extends DaeEntity { public var channels:Array; public var animations:Array; public function DaeAnimation(_arg1:XML=null):void{ super(_arg1); } private function parseAnimation(_arg1:XML):void{ var _local2:XMLList; var _local3:XMLList; var _local4:XMLList; var _local5:XML; var _local6:XML; var _local7:DaeChannel; var _local8:XML; var _local9:XMLList; var _local10:uint; var _local11:XML; var _local12:DaeInput; var _local13:DaeSource; var _local14:DaeSampler; _local2 = getNodeList(_arg1, ASCollada.DAE_ANIMATION_ELEMENT); _local3 = getNodeList(_arg1, ASCollada.DAE_CHANNEL_ELEMENT); _local4 = getNodeList(_arg1, ASCollada.DAE_SAMPLER_ELEMENT); if (_local2.length() > 0){ for each (_local6 in _local2) { this.animations.push(new DaeAnimation(_local6)); }; } else { if (_local3.length() == 0){ throw (new Error("require at least one <channel> element!")); }; }; this.channels = new Array(); for each (_local5 in _local3) { _local7 = new DaeChannel(_local5); _local8 = getNodeById(_arg1, ASCollada.DAE_SAMPLER_ELEMENT, _local7.source); _local9 = getNodeList(_local8, ASCollada.DAE_INPUT_ELEMENT); _local10 = 12; for each (_local11 in _local9) { _local12 = new DaeInput(_local11); _local13 = new DaeSource(getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local12.source)); _local14 = new DaeSampler(_local8); _local14.type = _local12.semantic; _local14.values = _local13.values; switch (_local12.semantic){ case "INTERPOLATION": _local7.interpolations = _local14.values; break; case "INPUT": _local7.input = _local14.values; break; case "OUTPUT": _local7.output = _local14.values; break; default: break; }; }; this.channels.push(_local7); }; } override public function read(_arg1:XML):void{ this.animations = new Array(); this.channels = new Array(); if (_arg1.localName() != ASCollada.DAE_ANIMATION_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ANIMATION_ELEMENT) + "' element"))); }; super.read(_arg1); parseAnimation(_arg1); } } }//package org.ascollada.core
Section 184
//DaeAnimationClip (org.ascollada.core.DaeAnimationClip) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeAnimationClip extends DaeEntity { public var start:Number; public var instance_animation:Array; public var end:Number; public function DaeAnimationClip(_arg1:XML=null):void{ this.start = 0; this.end = 0; this.instance_animation = new Array(); super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:String; if (_arg1.localName() != ASCollada.DAE_ANIMCLIP_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ANIMCLIP_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.log(("reading animation_clip: " + this.id)); this.instance_animation = new Array(); this.start = getAttributeAsFloat(_arg1, ASCollada.DAE_START_ATTRIBUTE); this.end = getAttributeAsFloat(_arg1, ASCollada.DAE_START_ATTRIBUTE); _local2 = getNodeList(_arg1, ASCollada.DAE_INSTANCE_ANIMATION_ELEMENT); for each (_local3 in _local2) { _local4 = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); this.instance_animation.push(_local4); }; } } }//package org.ascollada.core
Section 185
//DaeAsset (org.ascollada.core.DaeAsset) package org.ascollada.core { import org.ascollada.*; public class DaeAsset extends DaeEntity { public var unit_meter:Number; public var keywords:String; public var subject:String; public var modified:String; public var title:String; public var revision:String; public var created:String; public var unit_name:String; public var yUp:String; public var contributors:Array; public function DaeAsset(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; if (_arg1.localName() != ASCollada.DAE_ASSET_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_ASSET_ELEMENT) + "' element"))); }; super.read(_arg1); parseContributors(_arg1); this.created = getNodeContent(getNode(_arg1, ASCollada.DAE_CREATED_ASSET_PARAMETER)); this.keywords = getNodeContent(getNode(_arg1, ASCollada.DAE_KEYWORDS_ASSET_PARAMETER)); this.modified = getNodeContent(getNode(_arg1, ASCollada.DAE_MODIFIED_ASSET_PARAMETER)); this.revision = getNodeContent(getNode(_arg1, ASCollada.DAE_REVISION_ASSET_PARAMETER)); this.subject = getNodeContent(getNode(_arg1, ASCollada.DAE_SUBJECT_ASSET_PARAMETER)); this.title = getNodeContent(getNode(_arg1, ASCollada.DAE_TITLE_ASSET_PARAMETER)); _local2 = getNode(_arg1, ASCollada.DAE_UNITS_ASSET_PARAMETER); this.unit_meter = (_local2) ? getAttributeAsFloat(_local2, ASCollada.DAE_METERS_ATTRIBUTE, 1) : 1; this.unit_name = (_local2) ? getAttribute(_local2, ASCollada.DAE_NAME_ATTRIBUTE) : "meter"; _local3 = getNode(_arg1, ASCollada.DAE_UP); this.yUp = (_local3) ? _local3.toString() : ASCollada.DAE_Y_UP; } private function parseContributors(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:DaeContributor; this.contributors = new Array(); _local2 = getNodeList(_arg1, ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT); for each (_local3 in _local2) { this.contributors.push(new DaeContributor(_local3)); }; if (!this.contributors.length){ _local4 = new DaeContributor(); _local4.author = "Tim Knip"; _local4.authoring_tool = "ASCollada"; _local4.comment = ""; _local4.source_data = ""; this.contributors.push(_local4); }; } override public function write(_arg1:String=""):String{ var _local2:String; var _local3:int; var _local4:DaeContributor; _local2 = writeSimpleStartElement(ASCollada.DAE_ASSET_ELEMENT, _arg1); _local3 = 0; while (_local3 < this.contributors.length) { _local4 = this.contributors[_local3]; _local2 = (_local2 + _local4.write((_arg1 + "\t"))); _local3++; }; _local2 = (_local2 + writeSimpleEndElement(ASCollada.DAE_ASSET_ELEMENT, _arg1)); return (_local2); } } }//package org.ascollada.core
Section 186
//DaeBlendWeight (org.ascollada.core.DaeBlendWeight) package org.ascollada.core { public class DaeBlendWeight { public var originalWeight:Number; public var joint:String; public var vertexIndex:uint; public var weight:Number; public function DaeBlendWeight(_arg1:uint=0, _arg2:String="", _arg3:Number=0){ this.vertexIndex = _arg1; this.joint = _arg2; this.originalWeight = (this.weight = _arg3); } public function toString():String{ return ((((((("[v:" + this.vertexIndex) + " j:") + this.joint) + " w:") + this.weight) + "]")); } } }//package org.ascollada.core
Section 187
//DaeCamera (org.ascollada.core.DaeCamera) package org.ascollada.core { import org.ascollada.*; public class DaeCamera extends DaeEntity { public var target:String; public var far:Number; public var near:Number; public var ortho:Boolean;// = false public var type:uint;// = 0 public var fov:Number; public var mag:Number; public var aspect_ratio:Number; public static const TYPE_X:uint = 0; public static const TYPE_Y:uint = 1; public function DaeCamera(_arg1:XML):void{ ortho = false; type = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; if (_arg1.localName() != ASCollada.DAE_CAMERA_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CAMERA_ELEMENT) + "' element"))); }; super.read(_arg1); this.target = null; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_OPTICS_ELEMENT: readOptics(_local5); break; case ASCollada.DAE_EXTRA_ELEMENT: readExtra(_local5); break; default: break; }; _local4++; }; } private function readExtra(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; var _local6:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_TECHNIQUE_ELEMENT: _local6 = getNode(_local5, ASCollada.DAEMAX_TARGET_CAMERA_PARAMETER); if (_local6){ this.target = getNodeContent(_local6); this.target = this.target.split("#")[1]; }; break; default: break; }; _local4++; }; } private function readOrthogonal(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_XMAG_CAMERA_PARAMETER: this.type = TYPE_X; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_YMAG_CAMERA_PARAMETER: this.type = TYPE_Y; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ASPECT_CAMERA_PARAMETER: this.aspect_ratio = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZNEAR_CAMERA_PARAMETER: this.near = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZFAR_CAMERA_PARAMETER: this.far = parseFloat(getNodeContent(_local5)); break; default: break; }; _local4++; }; } private function readOptics(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: readTechniqueCommon(_local5); break; default: break; }; _local4++; }; } private function readPerspective(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_XFOV_CAMERA_PARAMETER: this.type = TYPE_X; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_YFOV_CAMERA_PARAMETER: this.type = TYPE_Y; this.fov = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ASPECT_CAMERA_PARAMETER: this.aspect_ratio = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZNEAR_CAMERA_PARAMETER: this.near = parseFloat(getNodeContent(_local5)); break; case ASCollada.DAE_ZFAR_CAMERA_PARAMETER: this.far = parseFloat(getNodeContent(_local5)); break; default: break; }; _local4++; }; } private function readTechniqueCommon(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_CAMERA_PERSP_ELEMENT: this.ortho = false; readPerspective(_local5); break; case ASCollada.DAE_CAMERA_ORTHO_ELEMENT: this.ortho = true; readOrthogonal(_local5); break; default: break; }; _local4++; }; } } }//package org.ascollada.core
Section 188
//DaeChannel (org.ascollada.core.DaeChannel) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeChannel extends DaeEntity { public var output:Array; public var input:Array; public var target:String; public var interpolations:Array; public var source:String; public var curves:Array; public var syntax:DaeAddressSyntax; public function DaeChannel(_arg1:XML):void{ super(_arg1); this.curves = new Array(); } public function update(_arg1:Number):Array{ var _local2:Array; var _local3:int; if (!this.curves){ return (null); }; _local2 = new Array(this.curves.length); _local3 = 0; while (_local3 < this.curves.length) { _local2[_local3] = this.curves[_local3].evaluate(_arg1); _local3++; }; return (_local2); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_CHANNEL_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CHANNEL_ELEMENT) + "' element"))); }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.target = getAttribute(_arg1, ASCollada.DAE_TARGET_ATTRIBUTE); this.syntax = DaeAddressSyntax.parseAnimationTarget(this.target); } } }//package org.ascollada.core
Section 189
//DaeContributor (org.ascollada.core.DaeContributor) package org.ascollada.core { import org.ascollada.*; public class DaeContributor extends DaeEntity { public var source_data:String; public var authoring_tool:String; public var author:String; public var comment:String; public function DaeContributor(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; var _local4:XML; var _local5:XML; super.read(_arg1); _local2 = getNode(_arg1, ASCollada.DAE_AUTHOR_ASSET_PARAMETER); _local3 = getNode(_arg1, ASCollada.DAE_AUTHORINGTOOL_ASSET_PARAMETER); _local4 = getNode(_arg1, ASCollada.DAE_COMMENTS_ASSET_PARAMETER); _local5 = getNode(_arg1, ASCollada.DAE_SOURCEDATA_ASSET_PARAMETER); this.author = (_local2) ? _local2.toString() : ""; this.authoring_tool = (_local3) ? _local3.toString() : ""; this.comment = (_local4) ? _local4.toString() : ""; this.source_data = (_local5) ? _local5.toString() : ""; } override public function write(_arg1:String=""):String{ var _local2:String; _local2 = writeSimpleStartElement(ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT, _arg1); _local2 = (_local2 + writeSimpleEndElement(ASCollada.DAE_CONTRIBUTOR_ASSET_ELEMENT, _arg1)); return (_local2); } } }//package org.ascollada.core
Section 190
//DaeController (org.ascollada.core.DaeController) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeController extends DaeEntity { public var morph:DaeMorph; public var skin:DaeSkin; public var type:uint; public static const TYPE_SKIN:uint = 0; public static const TYPE_MORPH:uint = 1; public function DaeController(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; if (_arg1.localName() != ASCollada.DAE_CONTROLLER_ELEMENT){ return; }; super.read(_arg1); Logger.log(("reading controller: " + this.id)); _local2 = getNode(_arg1, ASCollada.DAE_CONTROLLER_SKIN_ELEMENT); if (_local2){ this.skin = new DaeSkin(_local2); this.type = TYPE_SKIN; } else { _local3 = getNode(_arg1, ASCollada.DAE_CONTROLLER_MORPH_ELEMENT); if (_local3){ this.morph = new DaeMorph(_local3); this.type = TYPE_MORPH; }; }; if (((!(this.skin)) && (!(this.morph)))){ throw (new Error("controller element should contain a <skin> or a <morph> element!")); }; if (this.type == TYPE_SKIN){ }; } } }//package org.ascollada.core
Section 191
//DaeDocument (org.ascollada.core.DaeDocument) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.*; import org.ascollada.utils.*; import org.ascollada.physics.*; import org.ascollada.namespaces.*; public class DaeDocument extends DaeEntity { public var effects:Object; public var geometries:Object; public var COLLADA:XML; public var pscene:DaePhysicsScene; public var animation_clips:Object; public var materialSymbolToTarget:Object; public var materials:Object; public var nodes:Object; public var materialTargetToSymbol:Object; private var _waitingAnimations:Array; private var _waitingGeometries:Array; public var visual_scenes:Object; public var vscene:DaeVisualScene; public var controllers:Object; public var version:String; public var physics_scenes:Object; public var animations:Object; public var yUp:uint; public var cameras:Object; public var images:Object; public static const Z_UP:uint = 2; public static const Y_UP:uint = 1; public static const X_UP:uint = 0; public function DaeDocument(_arg1:Object, _arg2:Boolean=false){ this.COLLADA = ((_arg1 is XML)) ? (_arg1 as XML) : new XML(_arg1); XML.ignoreWhitespace = true; super(this.COLLADA, _arg2); } public function get numQueuedAnimations():uint{ return (_waitingAnimations.length); } private function readLibVisualScenes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeVisualScene; this.visual_scenes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_VSCENE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_VSCENE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeVisualScene(_local3, yUp); this.visual_scenes[_local4.id] = _local4; this.vscene = _local4; }; }; } private function readLibGeometries(_arg1:Boolean=false):void{ var _local2:XML; var _local3:XMLList; var _local4:XML; var _local5:DaeGeometry; _waitingGeometries = new Array(); this.geometries = new Object(); _local2 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_GEOMETRY_ELEMENT); if (_local2){ _local3 = getNodeList(_local2, ASCollada.DAE_GEOMETRY_ELEMENT); for each (_local4 in _local3) { _local5 = new DaeGeometry(_local4, _arg1); if (_arg1){ _waitingGeometries.push(_local5); } else { this.geometries[_local5.id] = _local5; }; }; }; } public function get numQueuedGeometries():uint{ return (_waitingGeometries.length); } private function readLibImages():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeImage; this.images = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_IMAGE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_IMAGE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeImage(_local3); this.images[_local4.id] = _local4; }; }; } override public function read(_arg1:XML):void{ this.version = _arg1.attribute(ASCollada.DAE_VERSION_ATTRIBUTE).toString(); Logger.log(("version: " + this.version)); this.asset = new DaeAsset(getNode(this.COLLADA, ASCollada.DAE_ASSET_ELEMENT)); if (((this.asset.contributors) && (this.asset.contributors[0].author))){ Logger.log(("author: " + this.asset.contributors[0].author)); }; Logger.log(("created: " + this.asset.created)); Logger.log(("modified: " + this.asset.modified)); Logger.log(("y-up: " + this.asset.yUp)); Logger.log(("unit_meter: " + this.asset.unit_meter)); Logger.log(("unit_name: " + this.asset.unit_name)); if (this.asset.yUp == ASCollada.DAE_Y_UP){ this.yUp = Y_UP; } else { this.yUp = Z_UP; }; buildMaterialTable(); readLibAnimationClips(); readLibCameras(); readLibControllers(); readLibAnimations(); readLibImages(); readLibMaterials(); readLibEffects(); readLibGeometries(this.async); readLibNodes(); readLibPhysicsScenes(); readLibVisualScenes(); readScene(); } private function readLibCameras():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeCamera; this.cameras = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_CAMERA_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_CAMERA_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeCamera(_local3); this.cameras[_local4.id] = _local4; }; }; } private function buildMaterialTable():void{ var _local1:XMLList; var _local2:XML; var _local3:String; var _local4:String; materialSymbolToTarget = new Object(); materialTargetToSymbol = new Object(); _local1 = this.COLLADA..collada::instance_material; for each (_local2 in _local1) { _local3 = getAttribute(_local2, ASCollada.DAE_TARGET_ATTRIBUTE); _local4 = getAttribute(_local2, ASCollada.DAE_SYMBOL_ATTRIBUTE); materialSymbolToTarget[_local4] = _local3; materialTargetToSymbol[_local3] = _local4; }; } public function getDaeNodeByIdOrSID(_arg1:String):DaeNode{ var _local2:DaeNode; _local2 = getDaeNodeById(_arg1, false); if (!_local2){ _local2 = getDaeNodeById(_arg1, true); }; return (_local2); } private function findDaeNodeById(_arg1:DaeNode, _arg2:String, _arg3:Boolean=false):DaeNode{ var _local4:int; var _local5:DaeNode; if (_arg3){ if (_arg1.sid == _arg2){ return (_arg1); }; } else { if (_arg1.id == _arg2){ return (_arg1); }; }; _local4 = 0; while (_local4 < _arg1.nodes.length) { _local5 = findDaeNodeById(_arg1.nodes[_local4], _arg2, _arg3); if (_local5){ return (_local5); }; _local4++; }; return (null); } private function findDaeInstanceGeometry(_arg1:DaeNode, _arg2:String):DaeInstanceGeometry{ var _local3:DaeInstanceGeometry; var _local4:DaeNode; var _local5:DaeInstanceGeometry; for each (_local3 in _arg1.geometries) { if (_local3.url == _arg2){ return (_local3); }; }; for each (_local4 in _arg1.nodes) { _local5 = findDaeInstanceGeometry(_local4, _arg2); if (_local5){ return (_local5); }; }; return (null); } public function getDaeInstanceGeometry(_arg1:String):DaeInstanceGeometry{ var _local2:DaeNode; var _local3:DaeInstanceGeometry; for each (_local2 in this.vscene.nodes) { _local3 = findDaeInstanceGeometry(_local2, _arg1); if (_local3){ return (_local3); }; }; return (null); } private function readLibPhysicsScenes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaePhysicsScene; this.physics_scenes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_PSCENE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_PHYSICS_SCENE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaePhysicsScene(_local3); this.physics_scenes[_local4.id] = _local4; }; }; } private function readScene():void{ var _local1:XML; var _local2:XML; var _local3:XML; var _local4:String; var _local5:String; _local1 = getNode(this.COLLADA, ASCollada.DAE_SCENE_ELEMENT); if (_local1){ _local2 = getNode(_local1, ASCollada.DAE_INSTANCE_VSCENE_ELEMENT); if (_local2){ _local4 = getAttribute(_local2, ASCollada.DAE_URL_ATTRIBUTE); if ((this.visual_scenes[_local4] is DaeVisualScene)){ Logger.log(("found visual scene: " + _local4)); this.vscene = this.visual_scenes[_local4]; Logger.log((" -> frameRate: " + this.vscene.frameRate)); Logger.log((" -> startTime: " + this.vscene.startTime)); Logger.log((" -> endTime: " + this.vscene.endTime)); }; }; _local3 = getNode(_local1, ASCollada.DAE_INSTANCE_PHYSICS_SCENE_ELEMENT); if (_local3){ _local5 = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); if ((this.physics_scenes[_local5] is DaePhysicsScene)){ Logger.log(("found physics scene: " + _local5)); this.pscene = this.physics_scenes[_local5]; }; }; }; } private function readLibControllers():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeController; this.controllers = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_CONTROLLER_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_CONTROLLER_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeController(_local3); this.controllers[_local4.id] = _local4; }; }; } public function readNextGeometry():Boolean{ var geometry:DaeGeometry; var geomLib:XML; var geomNode:XML; if (_waitingGeometries.length){ try { geometry = (_waitingGeometries.shift() as DaeGeometry); geomLib = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_GEOMETRY_ELEMENT); geomNode = getNodeById(geomLib, ASCollada.DAE_GEOMETRY_ELEMENT, geometry.id); geometry.async = false; geometry.read(geomNode); this.geometries[geometry.id] = geometry; } catch(e:Error) { Logger.error(("[ERROR] DaeDocument#readNextGeometry : " + e.toString())); }; return (true); //unresolved jump }; return (false); } public function readNextAnimation():Boolean{ var animation:DaeAnimation; var animLib:XML; var animNode:XML; if (_waitingAnimations.length){ try { animation = (_waitingAnimations.shift() as DaeAnimation); animLib = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_ELEMENT); animNode = getNodeById(animLib, ASCollada.DAE_ANIMATION_ELEMENT, animation.id); animation.read(animNode); } catch(e:Error) { Logger.error(("[ERROR] DaeDocument#readNextAnimation : " + e.toString())); }; return (true); //unresolved jump }; return (false); } private function readLibMaterials():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeMaterial; this.materials = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_MATERIAL_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_MATERIAL_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeMaterial(_local3); this.materials[_local4.id] = _local4; }; }; } private function readLibNodes():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeNode; this.nodes = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_NODE_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_NODE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeNode(_local3); this.nodes[_local4.id] = _local4; }; }; } public function getDaeNodeById(_arg1:String, _arg2:Boolean=false):DaeNode{ var _local3:DaeNode; var _local4:int; var _local5:DaeNode; var _local6:DaeNode; var _local7:DaeNode; for each (_local3 in this.nodes) { _local5 = findDaeNodeById(_local3, _arg1, _arg2); if (_local5){ return (_local5); }; }; _local4 = 0; while (_local4 < this.vscene.nodes.length) { _local6 = this.vscene.nodes[_local4]; _local7 = findDaeNodeById(_local6, _arg1, _arg2); if (_local7){ return (_local7); }; _local4++; }; return (null); } private function readLibEffects():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeEffect; this.effects = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_EFFECT_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_EFFECT_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeEffect(_local3); this.effects[_local4.id] = _local4; }; }; } private function readLibAnimations():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeAnimation; _waitingAnimations = new Array(); this.animations = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_ANIMATION_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeAnimation(); _local4.id = _local3.attribute(ASCollada.DAE_ID_ATTRIBUTE).toString(); this.animations[_local4.id] = _local4; _waitingAnimations.push(_local4); }; }; } private function readLibAnimationClips():void{ var _local1:XML; var _local2:XMLList; var _local3:XML; var _local4:DaeAnimationClip; this.animation_clips = new Object(); _local1 = getNode(this.COLLADA, ASCollada.DAE_LIBRARY_ANIMATION_CLIP_ELEMENT); if (_local1){ _local2 = getNodeList(_local1, ASCollada.DAE_ANIMCLIP_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeAnimationClip(_local3); this.animation_clips[_local4.id] = _local4; }; }; } } }//package org.ascollada.core
Section 192
//DaeEntity (org.ascollada.core.DaeEntity) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; import org.ascollada.namespaces.*; public class DaeEntity { public var name:String; public var sid:String; public var id:String; public var extras:Object; public var asset:DaeAsset; public var async:Boolean; public function DaeEntity(_arg1:XML=null, _arg2:Boolean=false){ this.async = _arg2; if (_arg1){ read(_arg1); }; } public function getAttributeAsFloat(_arg1:XML, _arg2:String, _arg3:Number=0):Number{ var _local4:String; _local4 = getAttribute(_arg1, _arg2); return ((isNaN(parseFloat(_local4))) ? _arg3 : parseFloat(_local4)); } public function getStrings(_arg1:XML):Array{ return (StringUtil.trim(_arg1.text().toString()).split(/\s+/)); } public function getFloats(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = parseFloat(_local2[_local3]); _local3++; }; return (_local2); } public function writeSimpleStartElement(_arg1:String, _arg2:String=""):String{ return ((((_arg2 + "<") + _arg1) + ">\n")); } public function getBools(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = ((_local2[_local3] == "true")) ? true : false; _local3++; }; return (_local2); } public function getAttributeAsInt(_arg1:XML, _arg2:String, _arg3:int=0):int{ var _local4:String; _local4 = getAttribute(_arg1, _arg2); return ((isNaN(parseInt(_local4, 10))) ? _arg3 : parseInt(_local4, 10)); } public function getInts(_arg1:XML):Array{ var _local2:Array; var _local3:int; _local2 = getStrings(_arg1); _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = parseInt(StringUtil.trim(_local2[_local3]), 10); _local3++; }; return (_local2); } public function read(_arg1:XML):void{ this.extras = new Object(); this.id = getAttribute(_arg1, ASCollada.DAE_ID_ATTRIBUTE); this.name = getAttribute(_arg1, ASCollada.DAE_NAME_ATTRIBUTE); this.sid = getAttribute(_arg1, ASCollada.DAE_SID_ATTRIBUTE); } public function write(_arg1:String=""):String{ return (_arg1); } public function getNodeContent(_arg1:XML):String{ return ((_arg1) ? _arg1.text().toString() : ""); } public function getAttribute(_arg1:XML, _arg2:String, _arg3:Boolean=true):String{ var _local4:XMLList; var _local5:String; _local4 = _arg1.attribute(_arg2); _local5 = (_local4.length()) ? _local4.toString() : ""; if (((_arg3) && ((_local5.indexOf("#") == 0)))){ _local5 = _local5.split("#")[1]; }; return (_local5); } public function getNodeById(_arg1:XML, _arg2:String, _arg3:String):XML{ var parent = _arg1; var nodeName = _arg2; var id = _arg3; return (parentcollada::[nodeName].(@[ASCollada.DAE_ID_ATTRIBUTE] == id)[0]); } public function writeSimpleEndElement(_arg1:String, _arg2:String=""):String{ return ((((_arg2 + "</") + _arg1) + ">\n")); } public function getNodeList(_arg1:XML, _arg2:String):XMLList{ return (_arg1collada::[_arg2]); } public function getNode(_arg1:XML, _arg2:String):XML{ return (_arg1collada::[_arg2][0]); } } }//package org.ascollada.core
Section 193
//DaeGeometry (org.ascollada.core.DaeGeometry) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; import org.ascollada.physics.*; public class DaeGeometry extends DaeEntity { public var splines:Array; public var convex_mesh:DaeConvexMesh; public var spline:DaeSpline; public var mesh:DaeMesh; public function DaeGeometry(_arg1:XML=null, _arg2:Boolean=false){ super(_arg1, _arg2); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XMLList; var _local4:int; var _local5:int; super.read(_arg1); Logger.log(("reading geometry: " + this.id)); this.mesh = null; this.convex_mesh = null; this.spline = null; this.splines = new Array(); if (async){ return; }; _local2 = getNode(_arg1, ASCollada.DAE_CONVEX_MESH_ELEMENT); if (!_local2){ _local2 = getNode(_arg1, ASCollada.DAE_MESH_ELEMENT); if (!_local2){ _local2 = getNode(_arg1, ASCollada.DAE_SPLINE_ELEMENT); }; }; if (!_local2){ Logger.error("expected one of <convex_mesh>, <mesh> or <spline>!"); throw (new Error("expected one of <convex_mesh>, <mesh> or <spline>!")); }; switch (_local2.localName()){ case ASCollada.DAE_CONVEX_MESH_ELEMENT: this.convex_mesh = new DaeConvexMesh(this, _local2); break; case ASCollada.DAE_MESH_ELEMENT: this.mesh = new DaeMesh(this, _local2); break; case ASCollada.DAE_SPLINE_ELEMENT: this.spline = new DaeSpline(_local2); _local3 = getNodeList(_arg1, ASCollada.DAE_SPLINE_ELEMENT); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { this.splines.push(new DaeSpline(_local3[_local5])); _local5++; }; break; default: break; }; } } }//package org.ascollada.core
Section 194
//DaeImage (org.ascollada.core.DaeImage) package org.ascollada.core { import flash.display.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeImage extends DaeEntity { public var bitmapData:BitmapData; public var init_from:String; public function DaeImage(_arg1:XML=null){ this.init_from = ""; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_ASSET_ELEMENT: this.asset = new DaeAsset(_local5); break; case ASCollada.DAE_DATA_ELEMENT: break; case ASCollada.DAE_INITFROM_ELEMENT: this.init_from = unescape(_local5.text().toString()); this.init_from.split("\\").join("/"); Logger.log((((" => " + this.id) + " init_from: ") + this.init_from)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local4++; }; } } }//package org.ascollada.core
Section 195
//DaeInput (org.ascollada.core.DaeInput) package org.ascollada.core { import org.ascollada.*; public class DaeInput extends DaeEntity { public var semantic:String; public var source:String; public var offset:uint; public var setId:uint; public function DaeInput(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_INPUT_ELEMENT){ return; }; super.read(_arg1); this.semantic = getAttribute(_arg1, ASCollada.DAE_SEMANTIC_ATTRIBUTE); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.offset = parseInt(getAttribute(_arg1, ASCollada.DAE_OFFSET_ATTRIBUTE), 10); this.offset = (this.offset) ? this.offset : 0; this.setId = parseInt(getAttribute(_arg1, ASCollada.DAE_SET_ATTRIBUTE), 10); } } }//package org.ascollada.core
Section 196
//DaeInstanceController (org.ascollada.core.DaeInstanceController) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeInstanceController extends DaeEntity { public var skeleton:String; public var skeletons:Array; public var materials:Array; public var url:String; public function DaeInstanceController(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:String; var _local5:int; var _local6:XML; super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); this.materials = new Array(); Logger.log((" => " + this.url)); this.skeleton = null; this.skeletons = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local5 = 0; while (_local5 < _local3) { _local6 = _local2[_local5]; switch (_local6.localName()){ case ASCollada.DAE_SKELETON_ELEMENT: _local4 = getNodeContent(_local6).toString(); _local4 = ((_local4.indexOf("#"))!=-1) ? _local4.substr(1) : _local4; this.skeletons.push(_local4); if (!this.skeleton){ this.skeleton = _local4; }; Logger.log((" => skeleton: " + _local4)); break; case ASCollada.DAE_BINDMATERIAL_ELEMENT: this.materials = parseBindMaterial(_local6); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local5++; }; } private function parseBindMaterial(_arg1:XML):Array{ var _local2:Array; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:XMLList; var _local9:XML; _local2 = new Array(); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; switch (_local6.localName()){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: _local8 = _local6.children(); for each (_local9 in _local8) { _local2.push(new DaeInstanceMaterial(_local9)); }; break; default: break; }; _local5++; }; return (_local2); } } }//package org.ascollada.core
Section 197
//DaeInstanceGeometry (org.ascollada.core.DaeInstanceGeometry) package org.ascollada.core { import org.ascollada.fx.*; import org.ascollada.*; public class DaeInstanceGeometry extends DaeEntity { public var materials:Array; public var url:String; public function DaeInstanceGeometry(_arg1:XML=null){ super(_arg1); } public function findBindVertexInput(_arg1:String, _arg2:String):DaeBindVertexInput{ var _local3:DaeInstanceMaterial; for each (_local3 in this.materials) { if (_arg1 == _local3.symbol){ return (_local3.findBindVertexInput(_arg2)); }; }; return (null); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; var _local6:Array; super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); this.materials = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_BINDMATERIAL_ELEMENT: this.materials = parseBindMaterial(_local5); break; default: break; }; _local4++; }; } private function parseBindMaterial(_arg1:XML):Array{ var _local2:Array; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:XMLList; var _local9:XML; _local2 = new Array(); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; switch (_local6.localName()){ case ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT: _local8 = _local6.children(); for each (_local9 in _local8) { _local2.push(new DaeInstanceMaterial(_local9)); }; break; default: break; }; _local5++; }; return (_local2); } } }//package org.ascollada.core
Section 198
//DaeInstanceNode (org.ascollada.core.DaeInstanceNode) package org.ascollada.core { import org.ascollada.*; public class DaeInstanceNode extends DaeEntity { public var url:String; public function DaeInstanceNode(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.url = getAttribute(_arg1, ASCollada.DAE_URL_ATTRIBUTE); } } }//package org.ascollada.core
Section 199
//DaeMesh (org.ascollada.core.DaeMesh) package org.ascollada.core { import org.ascollada.*; public class DaeMesh extends DaeEntity { public var vertices:Array; public var sources:Object; public var primitives:Array; public var geometry:DaeGeometry; public function DaeMesh(_arg1:DaeGeometry, _arg2:XML=null){ super(_arg2); this.geometry = _arg1; } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:DaeSource; var _local5:XML; var _local6:DaeVertices; var _local7:DaeInput; var _local8:XMLList; var _local9:int; var _local10:int; var _local11:XML; var _local12:DaePrimitive; if (((!((_arg1.localName() == ASCollada.DAE_MESH_ELEMENT))) && (!((_arg1.localName() == ASCollada.DAE_CONVEX_MESH_ELEMENT))))){ throw (new Error((((("expected a '" + ASCollada.DAE_MESH_ELEMENT) + " or a '") + ASCollada.DAE_CONVEX_MESH_ELEMENT) + "' element"))); }; super.read(_arg1); this.sources = new Object(); this.primitives = new Array(); _local2 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); for each (_local3 in _local2) { _local4 = new DaeSource(_local3); this.sources[_local4.id] = _local4.values; }; _local5 = getNode(_arg1, ASCollada.DAE_VERTICES_ELEMENT); _local6 = new DaeVertices(_local5); for each (_local7 in _local6.inputs) { if (_local7.semantic == "POSITION"){ this.vertices = sources[_local7.source]; this.sources[_local6.id] = sources[_local7.source]; }; }; _local8 = _arg1.children(); _local9 = _local8.length(); _local10 = 0; while (_local10 < _local9) { _local11 = _local8[_local10]; switch (String(_local11.localName())){ case ASCollada.DAE_TRIANGLES_ELEMENT: case ASCollada.DAE_TRIFANS_ELEMENT: case ASCollada.DAE_TRISTRIPS_ELEMENT: case ASCollada.DAE_LINESTRIPS_ELEMENT: case ASCollada.DAE_LINES_ELEMENT: case ASCollada.DAE_POLYGONS_ELEMENT: case ASCollada.DAE_POLYLIST_ELEMENT: _local12 = new DaePrimitive(this, _local11); if (_local12.count > 0){ this.primitives.push(_local12); }; break; default: break; }; _local10++; }; } } }//package org.ascollada.core
Section 200
//DaeMorph (org.ascollada.core.DaeMorph) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeMorph extends DaeEntity { public var targets:Array; public var source:String; public var method:String; public var weights:Array; public static const METHOD_RELATIVE:String = "RELATIVE"; public static const METHOD_NORMALIZED:String = "NORMALIZED"; public function DaeMorph(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:Object; var _local4:XMLList; var _local5:XML; var _local6:XMLList; var _local7:XML; var _local8:DaeSource; var _local9:DaeInput; if (_arg1.localName() != ASCollada.DAE_CONTROLLER_MORPH_ELEMENT){ return; }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); this.method = ((getAttribute(_arg1, ASCollada.DAE_METHOD_ATTRIBUTE) == METHOD_RELATIVE)) ? METHOD_RELATIVE : METHOD_NORMALIZED; Logger.log(((("reading morph, source: " + this.source) + " method: ") + this.method)); _local2 = getNode(_arg1, ASCollada.DAE_TARGETS_ELEMENT); this.targets = (this.weights = null); _local3 = new Object(); _local4 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); for each (_local5 in _local4) { _local8 = new DaeSource(_local5); _local3[_local8.id] = _local8; }; _local6 = getNodeList(_local2, ASCollada.DAE_INPUT_ELEMENT); for each (_local7 in _local6) { _local9 = new DaeInput(_local7); switch (_local9.semantic){ case ASCollada.DAE_TARGET_MORPH_INPUT: this.targets = _local3[_local9.source].values; break; case ASCollada.DAE_WEIGHT_MORPH_INPUT: this.weights = _local3[_local9.source].values; break; default: break; }; }; if (!this.targets){ throw (new Error("Invalid morph, could not find morph-targets")); }; if (!this.weights){ throw (new Error("Invalid morph, could not find morhp-weights!")); }; } } }//package org.ascollada.core
Section 201
//DaeNode (org.ascollada.core.DaeNode) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeNode extends DaeEntity { public var instance_nodes:Array; public var geometries:Array; public var transforms:Array; public var nodes:Array; public var type:uint; private var _yUp:uint; public var instance_cameras:Array; public var channels:Array; public var controllers:Array; public static const TYPE_JOINT:uint = 1; public static const TYPE_NODE:uint = 0; public function DaeNode(_arg1:XML=null, _arg2:uint=1):void{ _yUp = _arg2; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:Boolean; var _local3:XMLList; var _local4:int; var _local5:int; var _local6:XML; var _local7:Array; var _local8:String; var _local9:DaeTransform; this.nodes = new Array(); this.controllers = new Array(); this.geometries = new Array(); this.instance_nodes = new Array(); this.instance_cameras = new Array(); this.transforms = new Array(); if (_arg1.localName() != ASCollada.DAE_NODE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_NODE_ELEMENT) + "' element"))); }; super.read(_arg1); this.name = (((this.name) && (this.name.length))) ? this.name : this.id; this.type = ((getAttribute(_arg1, ASCollada.DAE_TYPE_ATTRIBUTE) == "JOINT")) ? TYPE_JOINT : TYPE_NODE; _local2 = (this._yUp == DaeDocument.Y_UP); _local3 = _arg1.children(); _local4 = _local3.length(); _local5 = 0; while (_local5 < _local4) { _local6 = _local3[_local5]; _local8 = getAttribute(_local6, ASCollada.DAE_SID_ATTRIBUTE); switch (_local6.localName()){ case ASCollada.DAE_ASSET_ELEMENT: break; case ASCollada.DAE_ROTATE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_ROTATE_ELEMENT, _local8, _local7); this.transforms.push(_local9); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_TRANSLATE_ELEMENT, _local8, _local7); this.transforms.push(_local9); break; case ASCollada.DAE_SCALE_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_SCALE_ELEMENT, _local8, _local7); this.transforms.push(_local9); break; case ASCollada.DAE_SKEW_ELEMENT: _local7 = getFloats(_local6); break; case ASCollada.DAE_LOOKAT_ELEMENT: _local7 = getFloats(_local6); break; case ASCollada.DAE_MATRIX_ELEMENT: _local7 = getFloats(_local6); _local9 = new DaeTransform(ASCollada.DAE_MATRIX_ELEMENT, _local8, _local7); this.transforms.push(_local9); break; case ASCollada.DAE_NODE_ELEMENT: this.nodes.push(new DaeNode(_local6, _yUp)); break; case ASCollada.DAE_INSTANCE_CAMERA_ELEMENT: this.instance_cameras.push(getAttribute(_local6, ASCollada.DAE_URL_ATTRIBUTE)); break; case ASCollada.DAE_INSTANCE_CONTROLLER_ELEMENT: this.controllers.push(new DaeInstanceController(_local6)); break; case ASCollada.DAE_INSTANCE_GEOMETRY_ELEMENT: this.geometries.push(new DaeInstanceGeometry(_local6)); break; case ASCollada.DAE_INSTANCE_LIGHT_ELEMENT: break; case ASCollada.DAE_INSTANCE_NODE_ELEMENT: this.instance_nodes.push(new DaeInstanceNode(_local6)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local5++; }; } public function findController(_arg1:String):DaeInstanceController{ var _local2:DaeInstanceController; for each (_local2 in this.controllers) { if (_arg1 == _local2.id){ return (_local2); }; }; return (null); } public function findMatrixBySID(_arg1:String):DaeTransform{ var _local2:DaeTransform; for each (_local2 in this.transforms) { if (_arg1 == _local2.sid){ return (_local2); }; }; return (null); } } }//package org.ascollada.core
Section 202
//DaePrimitive (org.ascollada.core.DaePrimitive) package org.ascollada.core { import flash.utils.*; import org.ascollada.*; public class DaePrimitive extends DaeEntity { private var _inputs:Dictionary; public var count:uint; public var material:String; public var type:String; public var vcount:Array; public var mesh:DaeMesh; public var polygons:Array; public function DaePrimitive(_arg1:DaeMesh, _arg2:XML=null):void{ this.mesh = _arg1; super(_arg2); } public function get vertices():Array{ return (getFirstInput("VERTEX")); } override public function read(_arg1:XML):void{ var _local2:XML; if (!checkNode(_arg1)){ throw (new Error("expected a primitive element!")); }; if (!this.mesh){ throw (new Error("parent-element 'mesh' or 'convex_mesh' not set!")); }; super.read(_arg1); this.type = String(_arg1.localName()); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); this.material = getAttribute(_arg1, ASCollada.DAE_MATERIAL_ATTRIBUTE); this.vcount = new Array(); this.polygons = new Array(); if (this.count == 0){ return; }; _inputs = new Dictionary(); _local2 = (_arg1.parent() as XML); switch (String(_local2.localName())){ case ASCollada.DAE_MESH_ELEMENT: switch (_arg1.name().localName.toString()){ case ASCollada.DAE_POLYGONS_ELEMENT: parsePolygons(_arg1); break; default: parse(_arg1); break; }; break; case ASCollada.DAE_CONVEX_MESH_ELEMENT: break; default: break; }; } private function checkNode(_arg1:XML):Boolean{ var _local2:String; _local2 = String(_arg1.localName()); return ((((((((((((((_local2 == ASCollada.DAE_TRIANGLES_ELEMENT)) || ((_local2 == ASCollada.DAE_TRIFANS_ELEMENT)))) || ((_local2 == ASCollada.DAE_TRISTRIPS_ELEMENT)))) || ((_local2 == ASCollada.DAE_LINESTRIPS_ELEMENT)))) || ((_local2 == ASCollada.DAE_LINES_ELEMENT)))) || ((_local2 == ASCollada.DAE_POLYGONS_ELEMENT)))) || ((_local2 == ASCollada.DAE_POLYLIST_ELEMENT)))); } protected function parse(_arg1:XML):void{ var _local2:Array; var _local3:XML; var _local4:XMLList; var _local5:Array; var _local6:DaeInput; var _local7:uint; var _local8:XML; var _local9:int; var _local10:int; var _local11:Array; _local2 = getInts(getNode(_arg1, ASCollada.DAE_POLYGON_ELEMENT)); _local3 = getNode(_arg1, ASCollada.DAE_VERTEXCOUNT_ELEMENT); _local4 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); _local5 = new Array(); _local7 = 0; if ((_local3 is XML)){ this.vcount = getInts(_local3); }; for each (_local8 in _local4) { _local6 = new DaeInput(_local8); _local7 = Math.max(_local7, (_local6.offset + 1)); _local5.push(_local6); _inputs[_local6] = new Array(); }; _local9 = 0; while (_local9 < _local2.length) { for each (_local6 in _local5) { _local10 = _local2[(_local9 + _local6.offset)]; _local11 = mesh.sources[_local6.source]; switch (_local6.semantic){ case "VERTEX": _inputs[_local6].push(_local10); break; default: _inputs[_local6].push(_local11[_local10]); break; }; }; _local9 = (_local9 + _local7); }; } private function parsePolygons(_arg1:XML):void{ var _local2:Array; var _local3:DaeInput; var _local4:uint; var _local5:XMLList; var _local6:XMLList; var _local7:int; var _local8:XML; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Array; _local2 = new Array(); _local4 = 0; _local5 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); _local6 = getNodeList(_arg1, ASCollada.DAE_POLYGON_ELEMENT); _local7 = 0; while (_local7 < _local5.length()) { _local3 = new DaeInput(_local5[_local7]); _local4 = Math.max(_local4, (_local3.offset + 1)); _local2.push(_local3); _inputs[_local3] = new Array(); _local7++; }; for each (_local8 in _local6) { _local9 = getInts(_local8); _local10 = new Array(); _local7 = 0; while (_local7 < _local9.length) { for each (_local3 in _local2) { _local11 = _local9[(_local7 + _local3.offset)]; _local12 = mesh.sources[_local3.source]; switch (_local3.semantic){ case "VERTEX": _inputs[_local3].push(_local11); _local10.push(_local11); break; default: _inputs[_local3].push(_local12[_local11]); break; }; }; _local7 = (_local7 + _local4); }; this.polygons.push(_local10); }; } private function getInputBySet(_arg1:String, _arg2:int):Array{ var _local3:*; if (getInputCount(_arg1) == 1){ return (getFirstInput(_arg1)); }; for (_local3 in _inputs) { if ((((_local3.semantic == _arg1)) && ((_local3.setId == _arg2)))){ return (_inputs[_local3]); }; }; return (new Array()); } private function getInputCount(_arg1:String):uint{ var _local2:uint; var _local3:*; _local2 = 0; for (_local3 in _inputs) { if (_local3.semantic == _arg1){ _local2++; }; }; return (_local2); } public function get normals():Array{ return (getFirstInput("NORMAL")); } public function getTexCoords(_arg1:uint=0):Array{ return (getInputBySet("TEXCOORD", _arg1)); } private function getFirstInput(_arg1:String):Array{ var _local2:*; for (_local2 in _inputs) { if (_local2.semantic == _arg1){ return (_inputs[_local2]); }; }; return (null); } } }//package org.ascollada.core
Section 203
//DaeSampler (org.ascollada.core.DaeSampler) package org.ascollada.core { import org.ascollada.*; public class DaeSampler extends DaeEntity { public var values:Array; public var type:String; public function DaeSampler(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_SAMPLER_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_SAMPLER_ELEMENT) + "' element"))); }; super.read(_arg1); } } }//package org.ascollada.core
Section 204
//DaeSkin (org.ascollada.core.DaeSkin) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeSkin extends DaeEntity { public var jointsType:String; public var source:String; public var vertex_weights:Array; public var bind_shape_matrix:Array; public var joints:Array; public var bind_matrices:Array; public var blendWeightsByJointID:Object; public function DaeSkin(_arg1:XML=null):void{ super(_arg1); } public function findJointBindMatrix2(_arg1:String):Array{ var _local2:int; _local2 = 0; while (_local2 < this.joints.length) { if (_arg1 == this.joints[_local2]){ return (this.bind_matrices[_local2]); }; _local2++; }; return (null); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XMLList; var _local4:XML; var _local5:XML; var _local6:XMLList; var _local7:DaeVertexWeights; var _local8:XML; var _local9:DaeInput; var _local10:DaeSource; var _local11:Object; var _local12:XML; var _local13:int; var _local14:uint; var _local15:uint; var _local16:Array; var _local17:int; var _local18:int; var _local19:int; var _local20:Array; var _local21:int; var _local22:int; var _local23:int; var _local24:Number; var _local25:String; var _local26:DaeBlendWeight; this.joints = new Array(); this.vertex_weights = new Array(); this.bind_matrices = new Array(); if (_arg1.localName() != ASCollada.DAE_CONTROLLER_SKIN_ELEMENT){ return; }; super.read(_arg1); this.source = getAttribute(_arg1, ASCollada.DAE_SOURCE_ATTRIBUTE); Logger.log(("reading skin, source: " + this.source)); _local2 = getNodeList(_arg1, ASCollada.DAE_BINDSHAPEMX_SKIN_PARAMETER); if (_local2.length()){ this.bind_shape_matrix = getFloats(_local2[0]); } else { this.bind_shape_matrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; }; _local3 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); if (_local3.length() < 3){ throw (new Error("<skin> requires a minimum of 3 <source> elements!")); }; _local4 = getNode(_arg1, ASCollada.DAE_JOINTS_ELEMENT); if (!_local4){ throw (new Error("need exactly one <joints> element!")); }; _local5 = getNode(_arg1, ASCollada.DAE_WEIGHTS_ELEMENT); if (!_local5){ throw (new Error("need exactly one <vertex_weights> element!")); }; _local6 = getNodeList(_local4, ASCollada.DAE_INPUT_ELEMENT); _local7 = new DaeVertexWeights(_local5); _local11 = new Object(); for each (_local12 in _local6) { _local9 = new DaeInput(_local12); _local8 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local9.source); if (!_local8){ throw (new Error((("source not found! (id='" + _local9.source) + "')"))); }; _local10 = new DaeSource(_local8); switch (_local9.semantic){ case ASCollada.DAE_JOINT_SKIN_INPUT: this.joints = _local10.values; this.jointsType = _local10.accessor.params[ASCollada.DAE_JOINT_SKIN_INPUT]; break; case ASCollada.DAE_BINDMATRIX_SKIN_INPUT: this.bind_matrices = _local10.values; break; default: break; }; }; _local13 = 0; _local14 = 0; _local15 = 1; for each (_local9 in _local7.inputs) { _local8 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local9.source); if (!_local8){ throw (new Error((("source not found! (id='" + _local9.source) + "')"))); }; _local10 = new DaeSource(_local8); switch (_local9.semantic){ case ASCollada.DAE_JOINT_SKIN_INPUT: _local14 = _local9.offset; _local13++; break; case ASCollada.DAE_WEIGHT_SKIN_INPUT: _local16 = _local10.values; _local15 = _local9.offset; _local13++; break; default: break; }; }; _local17 = 0; _local18 = 0; while (_local18 < _local7.vcounts.length) { _local19 = _local7.vcounts[_local18]; _local20 = new Array(); _local21 = 0; while (_local21 < _local19) { _local22 = _local7.v[(_local17 + _local14)]; _local23 = _local7.v[(_local17 + _local15)]; _local24 = _local16[_local23]; _local25 = ((_local22 < 0)) ? null : this.joints[_local22]; _local26 = new DaeBlendWeight(_local18, _local25, _local24); _local20.push(_local26); _local17 = (_local17 + _local13); _local21++; }; this.vertex_weights[_local18] = _local20; _local18++; }; Logger.log((" => => #vertex_weights " + vertex_weights.length)); } public function findJointBindMatrix(_arg1:DaeNode):Array{ var _local2:String; var _local3:int; _local2 = ((this.jointsType == "IDREF")) ? _arg1.id : _arg1.sid; _local3 = 0; while (_local3 < this.joints.length) { if (_local2 == this.joints[_local3]){ return (this.bind_matrices[_local3]); }; _local3++; }; return (null); } public function findJointVertexWeights(_arg1:DaeNode):Array{ var _local2:String; var _local3:Array; var _local4:int; var _local5:Array; var _local6:int; _local2 = ((this.jointsType == "IDREF")) ? _arg1.id : _arg1.sid; _local3 = new Array(); _local4 = 0; while (_local4 < this.vertex_weights.length) { _local5 = this.vertex_weights[_local4]; _local6 = 0; while (_local6 < _local5.length) { if (_local5[_local6].joint == _local2){ _local3.push(_local5[_local6]); }; _local6++; }; _local4++; }; return (_local3); } private function normalizeBlendWeights(_arg1:Array):void{ var _local2:int; var _local3:int; var _local4:Array; var _local5:Number; var _local6:Number; _local2 = 0; while (_local2 < _arg1.length) { _local4 = _arg1[_local2]; _local5 = 0; _local3 = 0; while (_local3 < _local4.length) { _local5 = (_local5 + _local4[_local3].weight); _local4[_local3].originalWeight = _local4[_local3].weight; _local3++; }; if ((((_local5 == 0)) || ((_local5 == 1)))){ } else { _local6 = (1 / _local5); _local3 = 0; while (_local3 < _local4.length) { _local4[_local3].weight = (_local4[_local3].weight * _local6); _local3++; }; }; _local2++; }; } public function findJointVertexWeightsByIDOrSID(_arg1:String):Array{ var _local2:Array; var _local3:int; var _local4:Array; var _local5:int; _local2 = new Array(); _local3 = 0; while (_local3 < this.vertex_weights.length) { _local4 = this.vertex_weights[_local3]; _local5 = 0; while (_local5 < _local4.length) { if (_local4[_local5].joint == _arg1){ _local2.push(_local4[_local5]); }; _local5++; }; _local3++; }; return (_local2); } } }//package org.ascollada.core
Section 205
//DaeSource (org.ascollada.core.DaeSource) package org.ascollada.core { import org.ascollada.types.*; import org.ascollada.*; public class DaeSource extends DaeEntity { public var values:Array; public var accessor:DaeAccessor; public function DaeSource(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:DaeArray; var _local3:XML; var _local4:XML; var _local5:int; var _local6:Array; var _local7:int; this.values = new Array(); if (_arg1.localName() != ASCollada.DAE_SOURCE_ELEMENT){ return; }; super.read(_arg1); _local2 = new DaeArray(_arg1); _local3 = getNode(_arg1, ASCollada.DAE_TECHNIQUE_COMMON_ELEMENT); if (!_local3){ this.values = _local2.values; return; }; _local4 = getNode(_local3, ASCollada.DAE_ACCESSOR_ELEMENT); if (!_local4){ throw (new Error("As a child of <source>, this element must contain exactly one <accessor> element.")); }; this.accessor = new DaeAccessor(_local4); _local5 = 0; while (_local5 < _local2.count) { if (this.accessor.stride > 1){ _local6 = new Array(); _local7 = 0; while (_local7 < this.accessor.stride) { _local6.push(_local2.values[(_local5 + _local7)]); _local7++; }; this.values.push(_local6); } else { this.values.push(_local2.values[_local5]); }; _local5 = (_local5 + this.accessor.stride); }; } } }//package org.ascollada.core
Section 206
//DaeSpline (org.ascollada.core.DaeSpline) package org.ascollada.core { import org.ascollada.*; public class DaeSpline extends DaeEntity { public var closed:Boolean; public var vertices:Array; public function DaeSpline(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:XMLList; var _local5:XML; var _local6:DaeInput; var _local7:XML; var _local8:DaeSource; if (_arg1.localName() != ASCollada.DAE_SPLINE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_SPLINE_ELEMENT) + "' element"))); }; super.read(_arg1); this.closed = ((getAttribute(_arg1, ASCollada.DAE_CLOSED_ATTRIBUTE) == "true")) ? true : false; _local2 = getNodeList(_arg1, ASCollada.DAE_SOURCE_ELEMENT); if (_local2 == new XMLList()){ throw (new Error("<spline> requires at least one <source> element!")); }; _local3 = getNode(_arg1, ASCollada.DAE_CONTROL_VERTICES_ELEMENT); if (!_local3){ throw (new Error("<spline> requires exactly one <control_vertices> element!")); }; _local4 = getNodeList(_local3, ASCollada.DAE_INPUT_ELEMENT); for each (_local5 in _local4) { _local6 = new DaeInput(_local5); switch (_local6.semantic){ case "POSITION": _local7 = getNodeById(_arg1, ASCollada.DAE_SOURCE_ELEMENT, _local6.source); if (!_local7){ throw (new Error((("source with id=" + _local6.source) + " not found!"))); }; _local8 = new DaeSource(_local7[0]); this.vertices = _local8.values; break; case "INTERPOLATION": break; case "IN_TANGENT": break; case "OUT_TANGENT": break; case "CONTINUITY": break; case "LINEAR_STEPS": break; default: break; }; }; } } }//package org.ascollada.core
Section 207
//DaeVertexWeights (org.ascollada.core.DaeVertexWeights) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeVertexWeights extends DaeEntity { public var v:Array; public var count:int; public var inputs:Array; public var vcounts:Array; public function DaeVertexWeights(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XML; var _local5:XML; var _local6:DaeInput; this.inputs = new Array(); if (_arg1.localName() != ASCollada.DAE_WEIGHTS_ELEMENT){ throw (new Error((("not a <" + ASCollada.DAE_WEIGHTS_ELEMENT) + "> element!"))); }; super.read(_arg1); this.count = getAttributeAsInt(_arg1, ASCollada.DAE_COUNT_ATTRIBUTE); Logger.log(" => reading vertex_weights"); _local2 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); if (_local2.length() < 2){ throw (new Error("<joints> requires at least 2 <input> elements!")); }; _local3 = 0; while (_local3 < _local2.length()) { _local6 = new DaeInput(_local2[_local3]); this.inputs.push(_local6); _local3++; }; this.v = new Array(); this.vcounts = new Array(); _local4 = getNode(_arg1, ASCollada.DAE_VERTEX_ELEMENT); _local5 = getNode(_arg1, ASCollada.DAE_VERTEXCOUNT_ELEMENT); if (((!(_local4)) || (!(_local5)))){ return; }; this.v = getInts(_local4); this.vcounts = getInts(_local5); } } }//package org.ascollada.core
Section 208
//DaeVertices (org.ascollada.core.DaeVertices) package org.ascollada.core { import org.ascollada.*; public class DaeVertices extends DaeEntity { public var inputs:Object; public function DaeVertices(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:uint; var _local4:int; var _local5:DaeInput; if (_arg1.localName() != ASCollada.DAE_VERTICES_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_VERTICES_ELEMENT) + "' element"))); }; super.read(_arg1); this.inputs = new Object(); _local2 = getNodeList(_arg1, ASCollada.DAE_INPUT_ELEMENT); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = new DaeInput(_local2[_local4]); this.inputs[_local5.semantic] = _local5; _local4++; }; } } }//package org.ascollada.core
Section 209
//DaeVisualScene (org.ascollada.core.DaeVisualScene) package org.ascollada.core { import org.ascollada.*; import org.ascollada.utils.*; public class DaeVisualScene extends DaeEntity { public var nodes:Array; private var _yUp:uint; public function DaeVisualScene(_arg1:XML=null, _arg2:uint=1):void{ _yUp = _arg2; super(_arg1); } public function get endTime():Number{ return (this.extras["end_time"]); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:XMLList; var _local5:XML; var _local6:XMLList; var _local7:XML; var _local8:String; var _local9:XML; var _local10:XML; var _local11:XML; this.nodes = new Array(); if (_arg1.localName() != ASCollada.DAE_VSCENE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_VSCENE_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.log(("reading visual scene: " + this.id)); _local2 = getNodeList(_arg1, ASCollada.DAE_NODE_ELEMENT); if (!_local2.length()){ throw (new Error("require at least 1 <node> element!")); }; _local3 = 0; while (_local3 < _local2.length()) { this.nodes.push(new DaeNode(_local2[_local3], _yUp)); _local3++; }; _local4 = getNodeList(_arg1, ASCollada.DAE_EXTRA_ELEMENT); for each (_local5 in _local4) { _local6 = getNodeList(_local5, ASCollada.DAE_TECHNIQUE_ELEMENT); for each (_local7 in _local6) { _local8 = getAttribute(_local7, ASCollada.DAE_PROFILE_ATTRIBUTE); switch (_local8){ case ASCollada.DAEMAX_MAX_PROFILE: _local9 = getNode(_local7, ASCollada.DAEMAX_FRAMERATE_PARAMETER); if (_local9){ this.extras[ASCollada.DAEMAX_FRAMERATE_PARAMETER] = parseFloat(getNodeContent(_local9)); }; break; case "FCOLLADA": _local10 = getNode(_local7, "start_time"); if (_local10){ this.extras["start_time"] = parseFloat(getNodeContent(_local10)); }; _local11 = getNode(_local7, "end_time"); if (_local11){ this.extras["end_time"] = parseFloat(getNodeContent(_local11)); }; break; default: break; }; }; }; } public function get startTime():Number{ return (this.extras["start_time"]); } public function get frameRate():Number{ return (this.extras[ASCollada.DAEMAX_FRAMERATE_PARAMETER]); } } }//package org.ascollada.core
Section 210
//DaeBindVertexInput (org.ascollada.fx.DaeBindVertexInput) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeBindVertexInput extends DaeEntity { public var semantic:String; public var input_semantic:String; public var input_set:int; public function DaeBindVertexInput(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); semantic = getAttribute(_arg1, ASCollada.DAE_SEMANTIC_ATTRIBUTE); input_semantic = getAttribute(_arg1, ASCollada.DAE_INPUT_SEMANTIC_ATTRIBUTE); input_set = getAttributeAsInt(_arg1, ASCollada.DAE_INPUT_SET_ATTRIBUTE); } } }//package org.ascollada.fx
Section 211
//DaeBlinn (org.ascollada.fx.DaeBlinn) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeBlinn extends DaeLambert { public var specular:DaeColorOrTexture; public var shininess:Number;// = 0 public function DaeBlinn(_arg1:XML=null):void{ shininess = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_SPECULAR_MATERIAL_PARAMETER: this.specular = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_SHININESS_MATERIAL_PARAMETER: this.shininess = parseFloat(getNodeContent(getNode(_local5, "float"))); Logger.log((" => shininess: " + this.shininess)); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 212
//DaeConstant (org.ascollada.fx.DaeConstant) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.core.*; import org.ascollada.*; public class DaeConstant extends DaeEntity { public var transparency:Number;// = 0 public var transparent:DaeColorOrTexture; public var emission:DaeColorOrTexture; public var reflectivity:Number;// = 0 public var index_of_refraction:Number;// = 0 public var reflective:DaeColorOrTexture; public function DaeConstant(_arg1:XML=null):void{ reflectivity = 0; transparency = 0; index_of_refraction = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_EMISSION_MATERIAL_PARAMETER: this.emission = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_REFLECTIVE_MATERIAL_PARAMETER: this.reflective = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_REFLECTIVITY_MATERIAL_PARAMETER: this.reflectivity = parseFloat(getNodeContent(getNode(_local5, "float"))); break; case ASCollada.DAE_TRANSPARENT_MATERIAL_PARAMETER: this.transparent = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_TRANSPARENCY_MATERIAL_PARAMETER: this.transparency = parseFloat(getNodeContent(getNode(_local5, "float"))); break; case ASCollada.DAE_INDEXOFREFRACTION_MATERIAL_PARAMETER: this.reflectivity = parseFloat(getNodeContent(getNode(_local5, "float"))); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 213
//DaeEffect (org.ascollada.fx.DaeEffect) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.core.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeEffect extends DaeEntity { public var wireframe:Boolean; public var texture_url:String; public var double_sided:Boolean; public var newparams:Object; public var color:DaeConstant; public function DaeEffect(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XMLList; var _local4:XMLList; var _local5:XML; var _local6:String; var _local7:XML; var _local8:XML; var _local9:XML; var _local10:XML; var _local11:XML; var _local12:DaeNewParam; var _local13:DaeNewParam; var _local14:DaeLambert; var _local15:DaeNewParam; super.read(_arg1); this.double_sided = false; this.wireframe = false; _local2 = getNode(_arg1, ASCollada.DAE_PROFILE_COMMON_ELEMENT); if (!_local2){ Logger.error("Can't handle profiles other then profile_COMMON!"); return; }; _local3 = getNodeList(_local2, ASCollada.DAE_IMAGE_ELEMENT); _local4 = getNodeList(_local2, ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT); _local5 = getNode(_local2, ASCollada.DAE_TECHNIQUE_ELEMENT); _local6 = _local5.attribute(ASCollada.DAE_SID_ATTRIBUTE); Logger.log(("reading effect: " + this.id)); Logger.log((" => #images: " + _local3.length())); Logger.log((" => #newparams: " + _local4.length())); Logger.log((" => technique sid: " + _local6)); this.newparams = new Object(); for each (_local7 in _local4) { _local15 = new DaeNewParam(_local7); this.newparams[_local15.type] = _local15; }; _local8 = getNode(_local5, ASCollada.DAE_FXSTD_PHONG_ELEMENT); _local9 = getNode(_local5, ASCollada.DAE_FXSTD_LAMBERT_ELEMENT); _local10 = getNode(_local5, ASCollada.DAE_FXSTD_BLINN_ELEMENT); _local11 = getNode(_local5, ASCollada.DAE_FXSTD_CONSTANT_ELEMENT); if (_local8){ Logger.log(" => shader: phong"); this.color = new DaePhong(_local8); } else { if (_local9){ Logger.log(" => shader: lambert"); this.color = new DaeLambert(_local9); } else { if (_local10){ Logger.log(" => shader: blinn"); this.color = new DaeBlinn(_local10); } else { if (_local11){ Logger.log(" => shader: constant"); this.color = new DaeConstant(_local11); }; }; }; }; _local12 = this.newparams[ASCollada.DAE_FXCMN_SURFACE_ELEMENT]; _local13 = this.newparams[ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT]; _local14 = (this.color as DaeLambert); if (((((((_local14) && ((_local14.diffuse.type == DaeColorOrTexture.TYPE_TEXTURE)))) && (_local13))) && (_local12))){ if ((((_local13.sid == _local14.diffuse.texture.texture)) && ((_local13.sampler2D.source == _local12.sid)))){ this.texture_url = _local12.surface.init_from; }; }; readExtra(_arg1); } private function readExtra(_arg1:XML):void{ var _local2:XMLList; var _local3:XML; var _local4:XML; var _local5:String; var _local6:XML; var _local7:String; _local2 = getNodeList(_arg1, ASCollada.DAE_EXTRA_ELEMENT); for each (_local3 in _local2) { _local4 = getNode(_local3, ASCollada.DAE_TECHNIQUE_ELEMENT); _local5 = _local4.@profile.toString(); switch (_local5){ case "MAX3D": _local6 = getNode(_local4, "double_sided"); if (_local6){ _local7 = getNodeContent(_local6); this.double_sided = (((_local7 == "1")) || ((_local7 == "true"))); }; _local6 = getNode(_local4, "wireframe"); if (_local6){ _local7 = getNodeContent(_local6); this.wireframe = (((_local7 == "1")) || ((_local7 == "true"))); }; break; default: break; }; }; } } }//package org.ascollada.fx
Section 214
//DaeInstanceMaterial (org.ascollada.fx.DaeInstanceMaterial) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeInstanceMaterial extends DaeEntity { public var target:String; public var symbol:String; private var _bindVertexInputs:Array; public function DaeInstanceMaterial(_arg1:XML=null){ super(_arg1); } public function get bindVertexInputs():Array{ return (_bindVertexInputs); } public function findBindVertexInput(_arg1:String, _arg2:String="TEXCOORD"):DaeBindVertexInput{ var _local3:DaeBindVertexInput; for each (_local3 in _bindVertexInputs) { if ((((_local3.semantic == _arg1)) && ((_local3.input_semantic == _arg2)))){ return (_local3); }; }; return (null); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); this.symbol = getAttribute(_arg1, ASCollada.DAE_SYMBOL_ATTRIBUTE); this.target = getAttribute(_arg1, ASCollada.DAE_TARGET_ATTRIBUTE); _bindVertexInputs = new Array(); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (String(_local5.localName())){ case ASCollada.DAE_BIND_ELEMENT: break; case ASCollada.DAE_BIND_VERTEX_INPUT: _bindVertexInputs.push(new DaeBindVertexInput(_local5)); break; case ASCollada.DAE_EXTRA_ELEMENT: break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 215
//DaeLambert (org.ascollada.fx.DaeLambert) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.*; public class DaeLambert extends DaeConstant { public var diffuse:DaeColorOrTexture; public var ambient:DaeColorOrTexture; public function DaeLambert(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_AMBIENT_MATERIAL_PARAMETER: this.ambient = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_DIFFUSE_MATERIAL_PARAMETER: this.diffuse = new DaeColorOrTexture(_local5); if (this.diffuse.texture){ }; break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 216
//DaeMaterial (org.ascollada.fx.DaeMaterial) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeMaterial extends DaeEntity { public var effect:String; public function DaeMaterial(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XML; var _local3:XML; var _local4:XMLList; var _local5:XML; var _local6:XML; super.read(_arg1); Logger.log(("reading material: " + this.id)); _local2 = getNode(_arg1, ASCollada.DAE_ASSET_ELEMENT); if (_local2){ this.asset = new DaeAsset(_local2); }; _local3 = getNode(_arg1, ASCollada.DAE_INSTANCE_EFFECT_ELEMENT); this.effect = getAttribute(_local3, ASCollada.DAE_URL_ATTRIBUTE); Logger.log((" => effect url: " + this.effect)); return; } } }//package org.ascollada.fx
Section 217
//DaeNewParam (org.ascollada.fx.DaeNewParam) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeNewParam extends DaeEntity { public var surface:DaeSurface; public var sampler2D:DaeSampler2D; public var type:String; public function DaeNewParam(_arg1:XML=null){ super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; if (_arg1.localName() != ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_NEWPARAM_ELEMENT) + "' element"))); }; super.read(_arg1); Logger.log((" => newparam @sid=" + this.sid)); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_FXCMN_SURFACE_ELEMENT: this.type = ASCollada.DAE_FXCMN_SURFACE_ELEMENT; this.surface = new DaeSurface(_local5); break; case ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT: this.type = ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT; this.sampler2D = new DaeSampler2D(_local5); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 218
//DaePhong (org.ascollada.fx.DaePhong) package org.ascollada.fx { import org.ascollada.types.*; import org.ascollada.*; public class DaePhong extends DaeLambert { public var specular:DaeColorOrTexture; public var shininess:Number;// = 0 public function DaePhong(_arg1:XML=null):void{ shininess = 0; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_SPECULAR_MATERIAL_PARAMETER: this.specular = new DaeColorOrTexture(_local5); break; case ASCollada.DAE_SHININESS_MATERIAL_PARAMETER: this.shininess = parseFloat(getNodeContent(getNode(_local5, "float"))); break; default: break; }; _local4++; }; } } }//package org.ascollada.fx
Section 219
//DaeSampler2D (org.ascollada.fx.DaeSampler2D) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeSampler2D extends DaeEntity { public var source:String; public function DaeSampler2D(_arg1:XML):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_SAMPLER2D_ELEMENT) + "' element"))); }; super.read(_arg1); this.source = getNodeContent(getNode(_arg1, ASCollada.DAE_SOURCE_ELEMENT)); Logger.log((" => => sampler2D source: " + this.source)); } } }//package org.ascollada.fx
Section 220
//DaeSurface (org.ascollada.fx.DaeSurface) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; import org.ascollada.utils.*; public class DaeSurface extends DaeEntity { public var init_from:String; public var type:String; public function DaeSurface(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_FXCMN_SURFACE_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_FXCMN_SURFACE_ELEMENT) + "' element"))); }; super.read(_arg1); this.type = getAttribute(_arg1, ASCollada.DAE_TYPE_ATTRIBUTE); this.init_from = getNodeContent(getNode(_arg1, ASCollada.DAE_INITFROM_ELEMENT)); Logger.log((((" => => surface type: " + this.type) + " init_from: ") + this.init_from)); } } }//package org.ascollada.fx
Section 221
//DaeTexture (org.ascollada.fx.DaeTexture) package org.ascollada.fx { import org.ascollada.core.*; import org.ascollada.*; public class DaeTexture extends DaeEntity { public var texture:String; public var texcoord:String; public function DaeTexture(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.texture = getAttribute(_arg1, ASCollada.DAE_FXSTD_TEXTURE_ATTRIBUTE); this.texcoord = getAttribute(_arg1, ASCollada.DAE_FXSTD_TEXTURESET_ATTRIBUTE); } } }//package org.ascollada.fx
Section 222
//DaeReader (org.ascollada.io.DaeReader) package org.ascollada.io { import flash.net.*; import flash.events.*; import org.ascollada.core.*; import flash.utils.*; import org.ascollada.utils.*; public class DaeReader extends EventDispatcher { private var _animTimer:Timer; public var document:DaeDocument; private var _numAnimations:uint; private var _geomTimer:Timer; private var _numGeometries:uint; public var async:Boolean; public function DaeReader(_arg1:Boolean=false){ this.async = _arg1; _animTimer = new Timer(100); _animTimer.addEventListener(TimerEvent.TIMER, loadNextAnimation); _geomTimer = new Timer(1); _geomTimer.addEventListener(TimerEvent.TIMER, loadNextGeometry); } private function loadNextAnimation(_arg1:TimerEvent):void{ if (!this.document.readNextAnimation()){ _animTimer.stop(); dispatchEvent(new Event(Event.COMPLETE)); } else { dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, (_numAnimations - this.document.numQueuedAnimations), _numAnimations)); }; } private function completeHandler(_arg1:Event):void{ var _local2:URLLoader; _local2 = (_arg1.target as URLLoader); Logger.log("complete!"); loadDocument(_local2.data); } private function loadNextGeometry(_arg1:TimerEvent):void{ _geomTimer.stop(); if (!this.document.readNextGeometry()){ Logger.log("geometries complete"); dispatchEvent(new Event(Event.COMPLETE)); } else { Logger.log("reading next geometry"); dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, (_numGeometries - this.document.numQueuedGeometries), _numGeometries)); _geomTimer.start(); }; } public function read(_arg1:String):void{ var _local2:URLLoader; Logger.log(("reading: " + _arg1)); if (_animTimer.running){ _animTimer.stop(); }; _local2 = new URLLoader(); _local2.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); _local2.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true); _local2.addEventListener(IOErrorEvent.IO_ERROR, handleIOError, false, 0, true); _local2.load(new URLRequest(_arg1)); } private function handleIOError(_arg1:IOErrorEvent):void{ dispatchEvent(_arg1); } private function progressHandler(_arg1:ProgressEvent):void{ if (hasEventListener(ProgressEvent.PROGRESS)){ dispatchEvent(_arg1); }; } public function readGeometries():void{ if (this.document.numQueuedGeometries > 0){ Logger.log((("START READING #" + this.document.numQueuedGeometries) + " GEOMETRIES")); _geomTimer.repeatCount = (this.document.numQueuedGeometries + 1); _geomTimer.delay = 2; _geomTimer.start(); } else { Logger.log("NO GEOMETRIES"); }; } public function loadDocument(_arg1):DaeDocument{ this.document = new DaeDocument(_arg1, this.async); _numAnimations = this.document.numQueuedAnimations; _numGeometries = this.document.numQueuedGeometries; dispatchEvent(new Event(Event.COMPLETE)); return (this.document); } public function readAnimations():void{ if (this.document.numQueuedAnimations > 0){ Logger.log((("START READING #" + this.document.numQueuedAnimations) + " ANIMATIONS")); _animTimer.repeatCount = (this.document.numQueuedAnimations + 1); _animTimer.delay = 100; _animTimer.start(); } else { Logger.log("NO ANIMATIONS"); }; } } }//package org.ascollada.io
Section 223
//collada (org.ascollada.namespaces.collada) package org.ascollada.namespaces { public namespace collada = "http://www.collada.org/2005/11/COLLADASchema"; }//package org.ascollada.namespaces
Section 224
//DaeConvexMesh (org.ascollada.physics.DaeConvexMesh) package org.ascollada.physics { import org.ascollada.core.*; import org.ascollada.*; public class DaeConvexMesh extends DaeMesh { public var convex_hull_off:String; public var isHull:Boolean; public function DaeConvexMesh(_arg1:DaeGeometry, _arg2:XML=null):void{ super(_arg1, _arg2); } override public function read(_arg1:XML):void{ if (_arg1.localName() != ASCollada.DAE_CONVEX_MESH_ELEMENT){ throw (new Error((("expected a '" + ASCollada.DAE_CONVEX_MESH_ELEMENT) + "' element"))); }; this.convex_hull_off = getAttribute(_arg1, ASCollada.DAE_CONVEX_HULL_OF_ATTRIBUTE, true); this.isHull = (this.convex_hull_off.length > 0); if (this.isHull){ return; }; super.read(_arg1); } } }//package org.ascollada.physics
Section 225
//DaePhysicsScene (org.ascollada.physics.DaePhysicsScene) package org.ascollada.physics { import org.ascollada.core.*; public class DaePhysicsScene extends DaeEntity { public function DaePhysicsScene(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); } } }//package org.ascollada.physics
Section 226
//DaeAddressSyntax (org.ascollada.types.DaeAddressSyntax) package org.ascollada.types { import org.ascollada.utils.*; public class DaeAddressSyntax { public var isDotAccess:Boolean; public var isFullAccess:Boolean; public var member:String; public var targetID:String; public var isArrayAccess:Boolean; public var arrayMember:Array; public var targetSID:String; public function DaeAddressSyntax():void{ } public function toString():String{ return ((((((((((((((("[target:" + targetID) + "\nSID:") + targetSID) + "\nmember:") + member) + "\narrayMember:") + arrayMember) + "\n") + isArrayAccess) + " ") + isDotAccess) + " ") + isFullAccess) + "]")); } public static function parseAnimationTarget(_arg1:String):DaeAddressSyntax{ var _local2:Array; var _local3:DaeAddressSyntax; if (_arg1.indexOf("/") == -1){ Logger.error("[ERROR] invalid animation target attribute!"); throw (new Error("invalid animation target attribute!")); }; _local2 = _arg1.split("/"); _local3 = new (DaeAddressSyntax); _local3.targetID = _local2[0]; parseFullMember(_local3, _local2[1]); return (_local3); } private static function parseFullMember(_arg1:DaeAddressSyntax, _arg2:String):void{ var _local3:RegExp; var _local4:Array; _arg1.isArrayAccess = (_arg1.isDotAccess = (_arg1.isFullAccess = false)); _arg1.member = ""; _arg1.arrayMember = new Array(); _local3 = /\(\d\)/ig; if (_local3.exec(_arg2)){ _arg1.isArrayAccess = true; _arg1.targetSID = _arg2.split("(")[0]; _arg1.arrayMember = _arg2.match(_local3); } else { if (_arg2.indexOf(".") != -1){ _arg1.isDotAccess = true; _local4 = _arg2.split("."); _arg1.targetSID = _local4[0]; _arg1.member = _local4[1]; } else { if (_arg2.length){ _arg1.isFullAccess = true; _arg1.targetSID = _arg2; } else { Logger.error("[ERROR] can't find a SID!"); throw (new Error("can't find a SID!")); }; }; }; } } }//package org.ascollada.types
Section 227
//DaeArray (org.ascollada.types.DaeArray) package org.ascollada.types { import org.ascollada.core.*; import org.ascollada.*; public class DaeArray extends DaeEntity { public var count:int; public var values:Array; public function DaeArray(_arg1:XML=null):void{ super(_arg1); } override public function read(_arg1:XML):void{ super.read(_arg1); this.count = 0; this.values = getData(_arg1); if (!this.values){ throw (new Error(" no data!")); }; } private function getData(_arg1:XML):Array{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case ASCollada.DAE_BOOL_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getBools(_local5)); case ASCollada.DAE_INT_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getInts(_local5)); case ASCollada.DAE_IDREF_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getStrings(_local5)); case ASCollada.DAE_FLOAT_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getFloats(_local5)); case ASCollada.DAE_NAME_ARRAY_ELEMENT: this.count = getAttributeAsInt(_local5, ASCollada.DAE_COUNT_ATTRIBUTE); return (getStrings(_local5)); default: break; }; _local4++; }; return (null); } } }//package org.ascollada.types
Section 228
//DaeColorOrTexture (org.ascollada.types.DaeColorOrTexture) package org.ascollada.types { import org.ascollada.core.*; import org.ascollada.fx.*; public class DaeColorOrTexture extends DaeEntity { public var texture:DaeTexture; public var type:uint; public var color:Array; public static const TYPE_TEXTURE:uint = 1; public static const TYPE_PARAM:uint = 2; public static const TYPE_COLOR:uint = 0; public function DaeColorOrTexture(_arg1:XML=null):void{ this.type = TYPE_COLOR; super(_arg1); } override public function read(_arg1:XML):void{ var _local2:XMLList; var _local3:int; var _local4:int; var _local5:XML; super.read(_arg1); _local2 = _arg1.children(); _local3 = _local2.length(); _local4 = 0; while (_local4 < _local3) { _local5 = _local2[_local4]; switch (_local5.localName()){ case "color": this.type = TYPE_COLOR; this.color = getFloats(_local5); return; case "texture": this.type = TYPE_TEXTURE; this.texture = new DaeTexture(_local5); return; case "param": this.type = TYPE_PARAM; return; default: break; }; _local4++; }; } } }//package org.ascollada.types
Section 229
//DaeTransform (org.ascollada.types.DaeTransform) package org.ascollada.types { import org.ascollada.*; import org.ascollada.utils.*; public class DaeTransform { public var values:Array; public var animated:Boolean; public var sid:String; public var type:String; public function DaeTransform(_arg1:String, _arg2:String, _arg3:Array):void{ this.type = _arg1; this.sid = _arg2; this.values = _arg3; this.animated = false; if (!validateValues()){ Logger.log("[ERROR] invalid values for this transform!"); throw (new Error("[ERROR] invalid values for this transform!")); }; } public function validateValues():Boolean{ var _local1:Boolean; _local1 = false; if (((!(this.values)) || (!(this.values.length)))){ return (false); }; switch (this.type){ case ASCollada.DAE_ROTATE_ELEMENT: _local1 = (this.values.length == 4); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local1 = (this.values.length == 3); break; case ASCollada.DAE_SCALE_ELEMENT: _local1 = (this.values.length == 3); break; case ASCollada.DAE_MATRIX_ELEMENT: _local1 = (this.values.length == 16); break; default: break; }; return (_local1); } } }//package org.ascollada.types
Section 230
//Logger (org.ascollada.utils.Logger) package org.ascollada.utils { public class Logger { public static var VERBOSE:Boolean = false; public static function debug(_arg1:String):void{ if (VERBOSE){ trace(_arg1); }; } public static function error(_arg1:String):void{ trace(_arg1); } public static function fatal(_arg1:String):void{ trace(_arg1); } public static function log(_arg1:String):void{ if (VERBOSE){ trace(_arg1); }; } public static function info(_arg1:String):void{ if (VERBOSE){ trace(_arg1); }; } } }//package org.ascollada.utils
Section 231
//StringUtil (org.ascollada.utils.StringUtil) package org.ascollada.utils { public class StringUtil { public static function trim(_arg1:String):String{ var _local2:int; var _local3:int; _local2 = 0; while (isWhitespace(_arg1.charAt(_local2))) { _local2++; }; _local3 = (_arg1.length - 1); while (isWhitespace(_arg1.charAt(_local3))) { _local3--; }; if (_local3 >= _local2){ return (_arg1.slice(_local2, (_local3 + 1))); }; return (""); } public static function substitute(_arg1:String, ... _args):String{ var _local3:uint; var _local4:Array; var _local5:int; _local3 = _args.length; if ((((_local3 == 1)) && ((_args[0] is Array)))){ _local4 = (_args[0] as Array); _local3 = _local4.length; } else { _local4 = _args; }; _local5 = 0; while (_local5 < _local3) { _arg1 = _arg1.replace(new RegExp((("\\{" + _local5) + "\\}"), "g"), _local4[_local5]); _local5++; }; return (_arg1); } public static function trimArrayElements(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:int; var _local5:int; if (((!((_arg1 == ""))) && (!((_arg1 == null))))){ _local3 = _arg1.split(_arg2); _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { _local3[_local5] = StringUtil.trim(_local3[_local5]); _local5++; }; if (_local4 > 0){ _arg1 = _local3.join(_arg2); }; }; return (_arg1); } public static function isWhitespace(_arg1:String):Boolean{ switch (_arg1){ case " ": case "\t": case "\r": case "\n": case "\f": return (true); default: return (false); }; } } }//package org.ascollada.utils
Section 232
//ASCollada (org.ascollada.ASCollada) package org.ascollada { public class ASCollada { public static const DAE_GEOMETRY_ELEMENT:String = "geometry"; public static const DAE_MASS_ELEMENT:String = "mass"; public static const DAE_FXSTD_STATE_FACE_ELEMENT:String = "face"; public static const DAE_FXCMN_SAMPLER2D_ELEMENT:String = "sampler2D"; public static const DAE_EMITTER_ELEMENT:String = "emitter"; public static const DAE_INSTANCE_MATERIAL_ELEMENT:String = "instance_material"; public static const DAE_INTANGENT_ANIMATION_INPUT:String = "IN_TANGENT"; public static const DAE_SKEW_ELEMENT:String = "skew"; public static const DAE_PASS_ELEMENT:String = "pass"; public static const DAE_TRISTRIPS_ELEMENT:String = "tristrips"; public static const DAE_LIGHT_POINT_ELEMENT:String = "point"; public static const DAE_INSTANCE_PHYSICS_MATERIAL_ELEMENT:String = "instance_physics_material"; public static const DAE_SURFACE_ATTRIBUTE:String = "surface"; public static const DAE_FXCMN_FLOAT4X4_ELEMENT:String = "float4x4"; public static const DAE_BUMP_MATERIAL_PARAMETER:String = "bump"; public static const DAE_LIBRARY_ANIMATION_ELEMENT:String = "library_animations"; public static const DAE_FORMAT_ELEMENT:String = "format"; public static const DAE_FXCMN_SETPARAM_ELEMENT:String = "setparam"; public static const DAE_LIBRARY_VSCENE_ELEMENT:String = "library_visual_scenes"; public static const DAEMAX_CAMERA_MB_DISABLEFILTER_PARAMETER:String = "disable_filtering"; public static const DAE_FXCMN_FLOAT4_ELEMENT:String = "float4"; public static const DAEMAYA_TEXTURE_ROTFRAME_PARAMETER:String = "rotateFrame"; public static const DAE_OPTICS_ELEMENT:String = "optics"; public static const DAE_INITASTARGET_ELEMENT:String = "init_as_target"; public static const DAE_INSTANCE_GEOMETRY_ELEMENT:String = "instance_geometry"; public static const DAEMAYA_SHORTNAME_PARAMETER:String = "short_name"; public static const DAE_FORMAT_HINT_LOW_VALUE:String = "LOW"; public static const DAE_YFOV_CAMERA_PARAMETER:String = "yfov"; public static const DAE_MAX_ELEMENT:String = "max"; public static const DAE_VERTICES_ELEMENT:String = "vertices"; public static const DAEMAX_USERPROPERTIES_NODE_PARAMETER:String = "user_properties"; public static const DAE_FLOAT_TYPE:String = "float"; public static const DAE_SYMBOL_ATTRIBUTE:String = "symbol"; public static const DAE_STIFFNESS_ELEMENT:String = "stiffness"; public static const DAE_RADIUS2_ELEMENT:String = "radius2"; public static const DAEMAX_WIREFRAME_MATERIAL_PARAMETER:String = "wireframe"; public static const DAE_GRAVITY_ATTRIBUTE:String = "gravity"; public static const DAE_FXSTD_FLOAT_ELEMENT:String = "float"; public static const DAEMAYA_TEXTURE_OFFSETV_PARAMETER:String = "offsetV"; public static const DAE_DEGREE_ATTRIBUTE:String = "degree"; public static const DAE_ZNEAR_CAMERA_PARAMETER:String = "znear"; public static const DAE_CENTER_OF_MASS_ELEMENT:String = "center_of_mass"; public static const DAE_VIEWPORT_RATIO:String = "viewport_ratio"; public static const DAE_INSTANCE_FORCE_FIELD_ELEMENT:String = "instance_force_field"; public static const DAE_FXCMN_HALF4X4_ELEMENT:String = "half4x4"; public static const DAEMAX_CAMERA_MB_BIAS_PARAMETER:String = "bias"; public static const DAEMAX_SHADOW_MAP:String = "shadow_map"; public static const DAE_TIME_TARGET:String = "TIME"; public static const DAE_COLOR_LIGHT_PARAMETER:String = "color"; public static const DAEMAX_ASPECTRATIO_LIGHT_PARAMETER:String = "aspect_ratio"; public static const DAE_EXTRA_ELEMENT:String = "extra"; public static const DAEMAX_SKY_INTENSITY_ON:String = "intensity_on"; public static const DAE_VERTEXCOUNT_ELEMENT:String = "vcount"; public static const DAE_FXCMN_HALF_ELEMENT:String = "half"; public static const DAE_FORMAT_HINT_ELEMENT:String = "format_hint"; public static const DAE_NODE_ELEMENT:String = "node"; public static const DAE_REF_ATTRIBUTE:String = "ref"; public static const DAE_FXCMN_VERTEX_SHADER:String = "VERTEX"; public static const DAEMAYA_DROPOFF_LIGHT_PARAMETER:String = "dropoff"; public static const DAE_SLICE_ATTRIBUTE:String = "slice"; public static const DAE_INSTANCE_LIGHT_ELEMENT:String = "instance_light"; public static const DAE_FORMAT_HINT_SINT_VALUE:String = "SINT"; public static const DAEMAX_PROJ_IMAGE:String = "proj_image"; public static const DAE_RIGID_BODY_ELEMENT:String = "rigid_body"; public static const DAE_FXCMN_SAMPLER3D_ELEMENT:String = "sampler3D"; public static const DAE_LIGHT_AMBIENT_ELEMENT:String = "ambient"; public static const DAE_TRIM_GROUP:String = "trim_group"; public static const DAE_RANGE_ELEMENT:String = "range"; public static const DAEMAYA_PENUMBRA_LIGHT_PARAMETER:String = "penumbra_angle"; public static const DAE_TARGET_ATTRIBUTE:String = "target"; public static const DAE_COLOR_ELEMENT:String = "color"; public static const DAEMAX_SKY_RAYS_PER_SAMPLE_PARAMETER:String = "rays_per_sample"; public static const DAE_INT_ARRAY_ELEMENT:String = "int_array"; public static const DAEMAX_OVERSHOOT_LIGHT_PARAMETER:String = "overshoot"; public static const DAE_CVS_SPLINE_INPUT:String = "POSITION"; public static const DAEMAYA_LENSSQUEEZE_PARAMETER:String = "lens_squeeze"; public static const DAE_FXCMN_FLOAT3_ELEMENT:String = "float3"; public static const DAE_FXSTD_STATE_SRCRGB_ELEMENT:String = "src_rgb"; public static const DAE_TRANS_LIMIT_MIN_ELEMENT:String = "trans_limit_min"; public static const DAE_FXCMN_INCLUDE_ELEMENT:String = "include"; public static const DAE_FXSTD_STATE_ZFAIL_ELEMENT:String = "zfail"; public static const DAEMAX_SHADOW_TYPE_RAYTRACE:String = "type_raytrace"; public static const DAEMAYA_LONGNAME_PARAMETER:String = "long_name"; public static const DAE_VELOCITY_ELEMENT:String = "velocity"; public static const DAE_SCENE_ELEMENT:String = "scene"; public static const DAE_WEIGHT_SKIN_INPUT:String = "WEIGHT"; public static const DAE_LINEAR_ELEMENT:String = "linear"; public static const DAE_HEIGHT_ELEMENT:String = "height"; public static const DAE_SEMANTIC_ATTRIBUTE:String = "semantic"; public static const DAE_CONVEX_MESH_ELEMENT:String = "convex_mesh"; public static const DAE_CREATED_ASSET_PARAMETER:String = "created"; public static const DAE_COMMENTS_ASSET_PARAMETER:String = "comments"; public static const DAEMAX_FRAMERATE_PARAMETER:String = "frame_rate"; public static const DAEMAYA_ENDTIME_PARAMETER:String = "end_time"; public static const DAE_MIP_ATTRIBUTE:String = "mip"; public static const DAE_LIBRARY_IMAGE_ELEMENT:String = "library_images"; public static const DAE_FXSTD_STATE_MASK_ELEMENT:String = "mask"; public static const DAE_RADIUS1_ELEMENT:String = "radius1"; public static const DAE_FXCMN_SEMANTIC_ELEMENT:String = "semantic"; public static const DAE_TARGETS_ELEMENT:String = "targets"; public static const DAEMAX_OUTERCONE_LIGHT_PARAMETER:String = "outer_cone"; public static const DAE_FORMAT_HINT_RGBA_VALUE:String = "RGBA"; public static const DAE_ROTATE_ELEMENT:String = "rotate"; public static const DAEMAX_SHADOW_TYPE_MAP:String = "type_map"; public static const DAE_SCHEMA_LOCATION:String = "http://www.collada.org/2005/11/COLLADASchema"; public static const DAE_LIBRARY_ANIMATION_CLIP_ELEMENT:String = "library_animation_clips"; public static const DAE_OFFSET_ATTRIBUTE:String = "offset"; public static const DAEMAYA_TEXTURE_TRANSFRAMEV_PARAMETER:String = "translateFrameV"; public static const DAE_SCHEMA_VERSION:String = "1.4.1"; public static const DAE_HOLE_ELEMENT:String = "h"; public static const DAE_FORMAT_HINT_L_VALUE:String = "L"; public static const DAEMAX_DEFAULT_TARGET_DIST_LIGHT_PARAMETER:String = "target_default_dist"; public static const DAE_RADIUS_ELEMENT:String = "radius"; public static const DAEMAYA_PROJECTION_MATRIX_PARAMETER:String = "matrix"; public static const DAEMAX_SHADOW_LIST_CASTS:String = "casts_shadows"; public static const DAE_BOX_ELEMENT:String = "box"; public static const DAE_REFLECTIVITY_MATERIAL_PARAMETER:String = "reflectivity"; public static const DAE_FXCMN_SAMPLERCUBE_ELEMENT:String = "samplerCUBE"; public static const DAE_FALLOFFANGLE_LIGHT_PARAMETER:String = "falloff_angle"; public static const DAE_FXSTD_LAMBERT_ELEMENT:String = "lambert"; public static const DAE_FALSE_KEYWORD:String = "false"; public static const DAE_INITVOLUME_ELEMENT:String = "init_volume"; public static const DAEMAX_USE_FAR_ATTEN_PARAMETER:String = "use_far_attenuation"; public static const DAE_POLYLIST_ELEMENT:String = "polylist"; public static const DAE_PHYSICS_MODEL_ELEMENT:String = "physics_model"; public static const DAE_ATTACHMENT_ELEMENT:String = "attachment"; public static const DAE_MASS_FRAME_ELEMENT:String = "mass_frame"; public static const DAEMAYA_NOTE_PARAMETER:String = "note"; public static const DAEMAYA_TEXTURE_WRAPU_PARAMETER:String = "wrapU"; public static const DAE_SPHERE_ELEMENT:String = "sphere"; public static const DAE_RIGID_CONSTRAINT_ELEMENT:String = "rigid_constraint"; public static const DAE_TEXTURE_SURFACE_ELEMENT:String = "texture_surface"; public static const DAE_ROT_LIMIT_MAX_ELEMENT:String = "rot_limit_max"; public static const DAEMAYA_HAPERTURE_PARAMETER:String = "horizontal_aperture"; public static const DAE_FXSTD_STATE_ALPHA_ELEMENT:String = "alpha"; public static const DAEMAX_FACEMAP_MATERIAL_PARAMETER:String = "face_map"; public static const DAE_PROFILE_ATTRIBUTE:String = "profile"; public static const DAEMAX_CAMERA_MB_NORMWEIGHTS_PARAMETER:String = "normalized_weights"; public static const DAE_CONST_ATTENUATION_LIGHT_PARAMETER:String = "constant_attenuation"; public static const DAEMAX_SKY_COLOR_MAP_AMOUNT_PARAMETER:String = "color_map_amount"; public static const DAE_FXCMN_FLOAT2_ELEMENT:String = "float2"; public static const DAE_LIBRARY_LIGHT_ELEMENT:String = "library_lights"; public static const DAE_X_UP:String = "X_UP"; public static const DAEMAYA_TEXTURE_BLENDMODE_PARAMETER:String = "blend_mode"; public static const DAE_FORMAT_HINT_NORMALIZED3_VALUE:String = "NORMALIZED3"; public static const DAE_AUTHORINGTOOL_ASSET_PARAMETER:String = "authoring_tool"; public static const DAE_MIPMAP_GENERATE:String = "mipmap_generate"; public static const DAEMAX_CAMERA_MB_DISPLAYPASSES_PARAMETER:String = "display_passes"; public static const DAE_METERS_ATTRIBUTE:String = "meter"; public static const DAE_INSTANCE_VSCENE_ELEMENT:String = "instance_visual_scene"; public static const DAE_INSTANCE_RIGID_BODY_ELEMENT:String = "instance_rigid_body"; public static const DAE_TAPERED_CYLINDER_ELEMENT:String = "tapered_cylinder"; public static const DAE_LIBRARY_CAMERA_ELEMENT:String = "library_cameras"; public static const DAE_TAPERED_CAPSULE_ELEMENT:String = "tapered_capsule"; public static const DAE_SAMPLER_ELEMENT:String = "sampler"; public static const DAEMAYA_VAPERTURE_PARAMETER:String = "vertical_aperture"; public static const DAE_FXSTD_BLINN_ELEMENT:String = "blinn"; public static const DAE_DATA_ELEMENT:String = "data"; public static const DAE_INPUT_ELEMENT:String = "input"; public static const DAEMAYA_LAYER_PARAMETER:String = "layer"; public static const DAEMAYA_TEXTURE_FAST_PARAMETER:String = "fast"; public static const DAE_OPTION_ELEMENT:String = "option"; public static const DAEMAYA_DOUBLE_SIDED_PARAMETER:String = "DOUBLE_SIDED"; public static const DAE_DYNAMIC_FRICTION_ATTRIBUTE:String = "dynamic_friction"; public static const DAE_AMBIENT_MATERIAL_PARAMETER:String = "ambient"; public static const DAEMAX_LIGHT_MAP:String = "light_map"; public static const DAE_STATIC_FRICTION_ATTRIBUTE:String = "static_friction"; public static const DAEMAYA_TEXTURE_REPEATV_PARAMETER:String = "repeatV"; public static const DAE_FXCMN_COMPILEROPTIONS_ELEMENT:String = "compiler_options"; public static const DAE_COLLADA_ELEMENT:String = "COLLADA"; public static const DAE_FORMAT_HINT_UNORM_VALUE:String = "UNORM"; public static const DAE_FORMAT_HINT_LA_VALUE:String = "LA"; public static const DAE_WEIGHT_MORPH_INPUT_DEPRECATED:String = "WEIGHT"; public static const DAE_URL_ATTRIBUTE:String = "url"; public static const DAE_FORMAT_HINT_XYZW_VALUE:String = "XYZW"; public static const DAEMAYA_PREINFINITY_PARAMETER:String = "pre_infinity"; public static const DAE_REST_LENGTH_ELEMENT:String = "rest_length"; public static const DAE_XFOV_CAMERA_PARAMETER:String = "xfov"; public static const DAEMAX_SHADOW_LIST_EXCLUDES:String = "list_is_exclusive"; public static const DAEMAX_SKY_COLOR_MAP_ON_PARAMETER:String = "color_map_on"; public static const DAE_POLYGONS_ELEMENT:String = "polygons"; public static const DAE_INSTANCE_ANIMATION_ELEMENT:String = "instance_animation"; public static const DAE_NODE_NODE_TYPE:String = "NODE"; public static const DAE_Z_UP:String = "Z_UP"; public static const DAE_INSTANCE_PHYSICS_MODEL_ELEMENT:String = "instance_physics_model"; public static const DAE_FXCMN_BIND_ELEMENT:String = "bind"; public static const DAE_CONSTRAINT_ATTRIBUTE:String = "constraint"; public static const DAEMAX_AMOUNT_TEXTURE_PARAMETER:String = "amount"; public static const DAE_PHYSICS_DYNAMIC_FRICTION:String = "dynamic_friction"; public static const DAE_VSCENE_ELEMENT:String = "visual_scene"; public static const DAE_RESTITUTION_ATTRIBUTE:String = "restitution"; public static const DAE_FORMAT_HINT_COMPRESSABLE_VALUE:String = "COMPRESSABLE"; public static const DAE_IMAGE_ELEMENT:String = "image"; public static const DAE_FORMAT_HINT_FLOAT_VALUE:String = "FLOAT"; public static const DAEMAYA_TEXTURE_MIRRORU_PARAMETER:String = "mirrorU"; public static const DAE_PLANE_ELEMENT:String = "plane"; public static const DAE_QUAD_ATTENUATION_LIGHT_PARAMETER:String = "quadratic_attenuation"; public static const DAE_SOURCE_ATTRIBUTE:String = "source"; public static const DAE_FXSTD_STATE_DEST_ELEMENT:String = "dest"; public static const DAE_FORMAT_HINT_UINT_VALUE:String = "UINT"; public static const DAE_FXSTD_STATE_ZPASS_ELEMENT:String = "zpass"; public static const DAE_CLOSED_ATTRIBUTE:String = "closed"; public static const DAE_CONVEX_HULL_OF_ATTRIBUTE:String = "convex_hull_of"; public static const DAE_INERTIA_ELEMENT:String = "inertia"; public static const DAE_FXCMN_HINT_ELEMENT:String = "technique_hint"; public static const DAE_CYLINDER_ELEMENT:String = "cylinder"; public static const DAE_FXCMN_NAME_ELEMENT:String = "name"; public static const DAE_INTERPENETRATE_ELEMENT:String = "interpenetrate"; public static const DAE_CONTROLLER_ELEMENT:String = "controller"; public static const DAE_PARAMETER:String = "param"; public static const DAE_LIMITS_ELEMENT:String = "limits"; public static const DAE_LIGHT_SPOT_ELEMENT:String = "spot"; public static const DAEFC_EASE_INOUT_ANIMATION_INPUT:String = "EASE_IN_OUT"; public static const DAE_SHAPE_ELEMENT:String = "shape"; public static const DAE_TRUE_KEYWORD:String = "true"; public static const DAE_MIN_ELEMENT:String = "min"; public static const DAE_TRIFANS_ELEMENT:String = "trifans"; public static const DAE_FXSTD_TEXTURE_ATTRIBUTE:String = "texture"; public static const DAEMAX_CAMERA_TARGETDISTANCE_PARAMETER:String = "target_distance"; public static const DAE_INPUT_SET_ATTRIBUTE:String = "input_set"; public static const DAE_MATERIAL_ATTRIBUTE:String = "material"; public static const DAE_FXSTD_STATE_VALUE:String = "value"; public static const DAEMAYA_STARTTIME_PARAMETER:String = "start_time"; public static const DAEMAYA_BLINDNAME_PARAMETER:String = "BLINDNAME"; public static const DAE_FXCMN_INT_ELEMENT:String = "int"; public static const DAE_FORMAT_HINT_HIGH_VALUE:String = "HIGH"; public static const DAE_TRANSLATE_ELEMENT:String = "translate"; public static const DAE_INTERPOLATION_ANIMATION_INPUT:String = "INTERPOLATION"; public static const DAEMAX_SHADOW_PROJ_COLOR:String = "shadow_color"; public static const DAE_ID_ATTRIBUTE:String = "id"; public static const DAE_EMISSION_MATERIAL_PARAMETER:String = "emission"; public static const DAE_PHYSICS_MATERIAL_ELEMENT:String = "physics_material"; public static const DAEMAX_NEAR_ATTEN_END_PARAMETER:String = "near_attenuation_end"; public static const DAE_LIBRARY_MATERIAL_ELEMENT:String = "library_materials"; public static const DAE_DYNAMIC_ELEMENT:String = "dynamic"; public static const DAE_START_ATTRIBUTE:String = "start"; public static const DAEMAYA_PROJECTION_TYPE:String = "type"; public static const DAE_FXCMN_FRAGMENT_SHADER:String = "FRAGMENT"; public static const DAE_FXSTD_STATE_FRONT_ELEMENT:String = "front"; public static const DAE_FXSTD_STATE_SRC_ELEMENT:String = "src"; public static const DAE_LIGHT_ELEMENT:String = "light"; public static const DAE_INITPLANAR_ELEMENT:String = "init_planar"; public static const DAE_VDEGREE_ATTRIBUTE:String = "vdegree"; public static const DAEMAX_DECAY_TYPE:String = "decay_type"; public static const DAE_SIZE_ELEMENT:String = "size"; public static const DAEMAX_SHADOW_TYPE:String = "type"; public static const DAE_CONTROLLER_MORPH_ELEMENT:String = "morph"; public static const DAE_ASPECT_CAMERA_PARAMETER:String = "aspect_ratio"; public static const DAEMAYA_TEXTURE_ROTATEUV_PARAMETER:String = "rotateUV"; public static const DAEMAX_FILTERCOLOR_MATERIAL_PARAMETER:String = "filter_color"; public static const DAE_LIBRARY_GEOMETRY_ELEMENT:String = "library_geometries"; public static const DAE_OPAQUE_MATERIAL_ATTRIBUTE:String = "opaque"; public static const DAE_SCALE_ELEMENT:String = "scale"; public static const DAE_LIBRARY_PMODEL_ELEMENT:String = "library_physics_models"; public static const DAE_INSTANCE_EMITTER_ELEMENT:String = "instance_emitter"; public static const DAEMAX_CAMERA_MB_TOTALPASSES_PARAMETER:String = "total_passes"; public static const DAE_FXSTD_STATE_DESTALPHA_ELEMENT:String = "dest_alpha"; public static const DAEMAX_USE_NEAR_ATTEN_PARAMETER:String = "use_near_attenuation"; public static const DAE_INITFROM_ELEMENT:String = "init_from"; public static const DAE_CONTROL_VERTICES_ELEMENT:String = "control_vertices"; public static const DAE_BIND_ELEMENT:String = "bind"; public static const DAE_COUNT_ATTRIBUTE:String = "count"; public static const DAE_INDEX_ATTRIBUTE:String = "index"; public static const DAE_PHYSICS_SCENE_ELEMENT:String = "physics_scene"; public static const DAE_MODIFIED_ASSET_PARAMETER:String = "modified"; public static const DAE_SPRING_ELEMENT:String = "spring"; public static const DAE_FXCMN_SURFACE_ELEMENT:String = "surface"; public static const DAE_FXSTD_TEXTURESET_ATTRIBUTE:String = "texcoord"; public static const DAE_LOOKAT_ELEMENT:String = "lookat"; public static const DAE_NAME_TYPE:String = "Name"; public static const DAEMAX_CAMERA_MB_DURATION_PARAMETER:String = "duration"; public static const DAE_FORMAT_HINT_MID_VALUE:String = "MID"; public static const DAEMAX_SHADOW_ATTRIBS:String = "shadow_attributes"; public static const DAE_SOURCE_ELEMENT:String = "source"; public static const DAE_ELLIPSOID_ELEMENT:String = "ellipsoid"; public static const DAEMAX_SHADOW_PROJ_COLOR_MULT:String = "shadow_color_mult"; public static const DAEMAYA_WEIGHT_INPUT:String = "WEIGHT"; public static const DAE_BOOL_ARRAY_ELEMENT:String = "bool_array"; public static const DAE_WEIGHT_MORPH_INPUT:String = "MORPH_WEIGHT"; public static const DAE_LIGHT_DIRECTIONAL_ELEMENT:String = "directional"; public static const DAEMAYA_TEXTURE_NOISEU_PARAMETER:String = "noiseU"; public static const DAEMAYA_BLINDTYPE:String = "BLINDTYPEID"; public static const DAE_STRIDE_ATTRIBUTE:String = "stride"; public static const DAE_CAMERA_PERSP_ELEMENT:String = "perspective"; public static const DAE_METHOD_ATTRIBUTE:String = "method"; public static const DAE_SPECULAR_MATERIAL_PARAMETER:String = "specular"; public static const DAE_FXSTD_STATE_BACK_ELEMENT:String = "back"; public static const DAE_TARGET_VALUE:String = "target_value"; public static const DAE_INITASNULL_ELEMENT:String = "init_as_null"; public static const DAE_WEIGHTS_ELEMENT:String = "vertex_weights"; public static const DAE_SHADER:String = "shader"; public static const DAEMAX_SKY_LIGHT:String = "skylight"; public static const DAE_SHININESS_MATERIAL_PARAMETER:String = "shininess"; public static const DAE_CHANNEL_ELEMENT:String = "channel"; public static const DAE_WIDTH_ELEMENT:String = "width"; public static const DAE_PROFILE_COMMON_ELEMENT:String = "profile_COMMON"; public static const DAE_DEPTH_ELEMENT:String = "depth"; public static const DAE_YMAG_CAMERA_PARAMETER:String = "ymag"; public static const DAE_TEXTURE_ELEMENT:String = "texture"; public static const DAEMAX_FAR_ATTEN_END_PARAMETER:String = "far_attenuation_end"; public static const DAE_FXCMN_BOOL_ELEMENT:String = "bool"; public static const DAE_INSTANCE_CONTROLLER_ELEMENT:String = "instance_controller"; public static const DAE_FXCMN_CODE_ELEMENT:String = "code"; public static const DAE_FACE_ATTRIBUTE:String = "face"; public static const DAE_WEIGHT_SPLINE_INPUT:String = "WEIGHTS"; public static const DAE_INSTANCE_CAMERA_ELEMENT:String = "instance_camera"; public static const DAEMAYA_TEXTURE_WRAPV_PARAMETER:String = "wrapV"; public static const DAE_TRIANGLES_ELEMENT:String = "triangles"; public static const DAE_ACCESSOR_ELEMENT:String = "accessor"; public static const DAE_AUTHOR_ASSET_PARAMETER:String = "author"; public static const DAE_EQUATION_ELEMENT:String = "equation"; public static const DAE_SKELETON_ELEMENT:String = "skeleton"; public static const DAEMAX_NEAR_ATTEN_START_PARAMETER:String = "near_attenuation_start"; public static const DAEMAX_CAMERA_MB_TILESIZE_PARAMETER:String = "tile_size"; public static const DAE_LINES_ELEMENT:String = "lines"; public static const DAE_ENABLED_ELEMENT:String = "enabled"; public static const DAE_IDREF_ARRAY_ELEMENT:String = "IDREF_array"; public static const DAE_BIND_VERTEX_INPUT:String = "bind_vertex_input"; public static const DAE_VERTEX_ELEMENT:String = "v"; public static const DAE_ZFAR_CAMERA_PARAMETER:String = "zfar"; public static const DAE_KNOT_SPLINE_INPUT:String = "KNOTS"; public static const DAE_LIBRARY_EFFECT_ELEMENT:String = "library_effects"; public static const DAE_FALLOFFEXPONENT_LIGHT_PARAMETER:String = "falloff_exponent"; public static const DAE_CLOSEDU_ATTRIBUTE:String = "closed_u"; public static const DAEMAX_SKY_RAY_BIAS_PARAMETER:String = "ray_bias"; public static const DAE_NAMESPACE_ATTRIBUTE:String = "xmlns"; public static const DAE_TIME_STEP_ATTRIBUTE:String = "time_step"; public static const DAE_FXSTD_STATE_SRCALPHA_ELEMENT:String = "src_alpha"; public static const DAE_ROT_LIMIT_MIN_ELEMENT:String = "rot_limit_min"; public static const DAEMAYA_AMBIENTSHADE_LIGHT_PARAMETER:String = "ambient_shade"; public static const DAEMAYA_TEXTURE_COVERAGEU_PARAMETER:String = "coverageU"; public static const DAE_OUTTANGENT_ANIMATION_INPUT:String = "OUT_TANGENT"; public static const DAE_FXCMN_HALF4_ELEMENT:String = "half4"; public static const DAE_HOLLOW_ELEMENT:String = "hollow"; public static const DAEMAYA_MAYA_PROFILE:String = "MAYA"; public static const DAE_IMAGE_INPUT:String = "IMAGE"; public static const DAE_FXSTD_STATE_MODE_ELEMENT:String = "mode"; public static const DAE_JOINT_SKIN_INPUT:String = "JOINT"; public static const DAE_FORMAT_HINT_SNORM_VALUE:String = "SNORM"; public static const DAE_BIND_TEXTURE_SURFACE_ELEMENT:String = "bind_texture_surface"; public static const DAE_CHANNELS_ELEMENT:String = "channels"; public static const DAEFC_TCB_ANIMATION_INPUT:String = "TCB"; public static const DAE_REVISION_ASSET_PARAMETER:String = "revision"; public static const DAE_BINDMATRIX_SKIN_INPUT:String = "INV_BIND_MATRIX"; public static const DAE_FXSTD_STATE_FUNC_ELEMENT:String = "func"; public static const DAE_ANIMCLIP_ELEMENT:String = "animation_clip"; public static const DAE_CAMERA_ELEMENT:String = "camera"; public static const DAEMAX_TARGET_CAMERA_PARAMETER:String = "target"; public static const DAE_TYPE_ATTRIBUTE:String = "type"; public static const DAE_INSTANCE_PHYSICS_SCENE_ELEMENT:String = "instance_physics_scene"; public static const DAEMAX_SHADOW_AFFECTS:String = "affect_list"; public static const DAESHD_DOUBLESIDED_PARAMETER:String = "double_sided"; public static const DAEMAYA_TEXTURE_STAGGER_PARAMETER:String = "stagger"; public static const DAE_LIBRARY_FFIELDS_ELEMENT:String = "library_force_fields"; public static const DAE_REFLECTIVE_MATERIAL_PARAMETER:String = "reflective"; public static const DAEMAX_SHADOW_LIST_NODE:String = "list_nodes"; public static const DAE_DYNAMICS_ELEMENT:String = "dynamics"; public static const DAE_DAMPING_ELEMENT:String = "damping"; public static const DAE_FXSTD_TEXTURE_ELEMENT:String = "texture"; public static const DAE_VALUE:String = "value"; public static const DAE_REF_ATTACHMENT_ELEMENT:String = "ref_attachment"; public static const DAE_DIFFUSE_MATERIAL_PARAMETER:String = "diffuse"; public static const DAE_FORMAT_HINT_NORMALIZED4_VALUE:String = "NORMALIZED4"; public static const DAE_FXCMN_COMPILERTARGET_ELEMENT:String = "compiler_target"; public static const DAE_CONTRIBUTOR_ASSET_ELEMENT:String = "contributor"; public static const DAEMAX_INDEXOFREFRACTION_MATERIAL_PARAMETER:String = "index_of_refraction"; public static const DAE_FXSTD_STATE_RGB_ELEMENT:String = "rgb"; public static const DAE_INITCUBE_ELEMENT:String = "init_cube"; public static const DAE_BODY_ATTRIBUTE:String = "body"; public static const DAE_POLYGON_ELEMENT:String = "p"; public static const DAE_TRANSPARENCY_MATERIAL_PARAMETER:String = "transparency"; public static const DAEMAYA_TEXTURE_OFFSETU_PARAMETER:String = "offsetU"; public static const DAE_FXCMN_STRING_ELEMENT:String = "string"; public static const DAE_MESH_ELEMENT:String = "mesh"; public static const DAEMAYA_TEXTURE_MIRRORV_PARAMETER:String = "mirrorV"; public static const DAEMAX_SKY_SKYMODE:String = "sky_mode"; public static const DAE_CONTROLLER_SKIN_ELEMENT:String = "skin"; public static const DAE_UDEGREE_ATTRIBUTE:String = "udegree"; public static const DAEMAX_DECAY_START_PARAMETER:String = "decay_start"; public static const DAEMAYA_PROJECTION_ELEMENT:String = "projection"; public static const DAE_CAMERA_ORTHO_ELEMENT:String = "orthographic"; public static const DAE_FXCMN_FLOAT_ELEMENT:String = "float"; public static const DAE_SOURCEDATA_ASSET_PARAMETER:String = "source_data"; public static const DAEMAX_FACETED_MATERIAL_PARAMETER:String = "faceted"; public static const DAE_TARGET_MORPH_INPUT:String = "MORPH_TARGET"; public static const DAE_MATRIX_ELEMENT:String = "matrix"; public static const DAE_SPLINE_ELEMENT:String = "spline"; public static const DAE_SET_ATTRIBUTE:String = "set"; public static const DAE_LINESTRIPS_ELEMENT:String = "linestrips"; public static const DAE_COPYRIGHT_ASSET_PARAMETER:String = "copyright"; public static const DAE_ORDER_ELEMENT:String = "order"; public static const DAEMAYA_DRIVER_INPUT:String = "DRIVER"; public static const DAE_FXCMN_HALF3_ELEMENT:String = "half3"; public static const DAEMAX_DISPLACEMENT_MATERIAL_PARAMETER:String = "displacement"; public static const DAE_A_ONE_ELEMENT:String = "A_ONE"; public static const DAE_UNITS_ASSET_PARAMETER:String = "unit"; public static const DAE_TRANSPARENT_MATERIAL_PARAMETER:String = "transparent"; public static const DAE_NAME_ARRAY_ELEMENT:String = "Name_array"; public static const DAEMAX_SKY_COLOR_MAP:String = "color_map"; public static const DAEMAYA_POSTINFINITY_PARAMETER:String = "post_infinity"; public static const DAE_TRANS_LIMIT_MAX_ELEMENT:String = "trans_limit_max"; public static const DAE_FACE_ELEMENT:String = "face"; public static const DAE_BINDMATERIAL_ELEMENT:String = "bind_material"; public static const DAEMAX_SPECLEVEL_MATERIAL_PARAMETER:String = "spec_level"; public static const DAE_INSTANCE_RIGID_CONSTRAINT_ELEMENT:String = "instance_rigid_constraint"; public static const DAE_FXSTD_CONSTANT_ELEMENT:String = "constant"; public static const DAE_ANGULAR_ELEMENT:String = "angular"; public static const DAEMAX_LIGHT_AFFECTS_SHADOW:String = "light_affects_shadow"; public static const DAE_RGB_ZERO_ELEMENT:String = "RGB_ZERO"; public static const DAE_OUTPUT_ANIMATION_INPUT:String = "OUTPUT"; public static const DAE_LIBRARY_CONTROLLER_ELEMENT:String = "library_controllers"; public static const DAE_LIBRARY_PSCENE_ELEMENT:String = "library_physics_scenes"; public static const DAE_VERSION_ATTRIBUTE:String = "version"; public static const DAE_MATRIX_TYPE:String = "float4x4"; public static const DAEMAX_SHADOW_LIST_ILLUMINATES:String = "is_illuminated"; public static const DAE_LIN_ATTENUATION_LIGHT_PARAMETER:String = "linear_attenuation"; public static const DAE_PRIMARY_ELEMENT:String = "primary"; public static const DAEMAX_MAX_PROFILE:String = "MAX3D"; public static const DAE_FORCE_FIELD_ELEMENT:String = "force_field"; public static const DAE_BINDSHAPEMX_SKIN_PARAMETER:String = "bind_shape_matrix"; public static const DAE_TECHNIQUE_ELEMENT:String = "technique"; public static const DAE_Y_UP:String = "Y_UP"; public static const DAE_FXSTD_COLOR_ELEMENT:String = "color"; public static const DAE_FLOAT_ARRAY_ELEMENT:String = "float_array"; public static const DAEMAX_EMISSIONLEVEL_MATERIAL_PARAMETER:String = "emission_level"; public static const DAE_POLYGONHOLED_ELEMENT:String = "ph"; public static const DAEMAX_SKY_CAST_SHADOWS_PARAMETER:String = "cast_shadows"; public static const DAE_INDEXOFREFRACTION_MATERIAL_PARAMETER:String = "index_of_refraction"; public static const DAE_TEXTURE_INPUT:String = "TEXTURE"; public static const DAE_UP:String = "up_axis"; public static const DAE_PHYSICS_RESTITUTION:String = "restitution"; public static const DAE_IDREF_TYPE:String = "IDREF"; public static const DAE_ANNOTATE_ELEMENT:String = "annotate"; public static const DAE_INPUT_ANIMATION_INPUT:String = "INPUT"; public static const DAE_JOINT_NODE_TYPE:String = "JOINT"; public static const DAE_INPUT_SEMANTIC_ATTRIBUTE:String = "input_semantic"; public static const DAE_PRECISION_ELEMENT:String = "precision"; public static const DAE_FXCMN_SAMPLER1D_ELEMENT:String = "sampler1D"; public static const DAE_SWING_CONE_AND_TWIST_ELEMENT:String = "swing_cone_and_twist"; public static const DAEMAYA_TEXTURE_TRANSFRAMEU_PARAMETER:String = "translateFrameU"; public static const DAE_FORMAT_HINT_XYZ_VALUE:String = "XYZ"; public static const DAE_MIP_LEVELS:String = "mip_levels"; public static const DAE_TEXTURE_ATTRIBUTE:String = "texture"; public static const DAE_FXCMN_ANNOTATE_ELEMENT:String = "annotate"; public static const DAE_FXCMN_HALF2_ELEMENT:String = "half2"; public static const DAE_LIBRARY_NODE_ELEMENT:String = "library_nodes"; public static const DAE_FORMAT_HINT_SRGB_GAMMA_VALUE:String = "SRGB_GAMMA"; public static const DAE_FORMAT_HINT_RGB_VALUE:String = "RGB"; public static const DAE_INSTANCE_EFFECT_ELEMENT:String = "instance_effect"; public static const DAE_XMAG_CAMERA_PARAMETER:String = "xmag"; public static const DAEMAX_CAMERA_MB_DITHERSTRENGTH_PARAMETER:String = "dither_strength"; public static const DAEMAYA_TEXTURE_NOISEV_PARAMETER:String = "noiseV"; public static const DAE_KEYWORDS_ASSET_PARAMETER:String = "keywords"; public static const DAE_ANGULAR_VELOCITY_ELEMENT:String = "angular_velocity"; public static const DAE_TITLE_ASSET_PARAMETER:String = "title"; public static const DAE_LIBRARY_PMATERIAL_ELEMENT:String = "library_physics_materials"; public static const DAE_END_ATTRIBUTE:String = "end"; public static const DAE_TECHNIQUE_COMMON_ELEMENT:String = "technique_common"; public static const DAE_LIBRARY_EMITTER_ELEMENT:String = "library_emitters"; public static const DAE_HALF_EXTENTS_ELEMENT:String = "half_extents"; public static const DAE_INSTANCE_NODE_ELEMENT:String = "instance_node"; public static const DAE_FXSTD_STATE_DESTRGB_ELEMENT:String = "dest_rgb"; public static const DAE_JOINTS_ELEMENT:String = "joints"; public static const DAE_NAME_ATTRIBUTE:String = "name"; public static const DAEMAX_CAMERA_MOTIONBLUR_ELEMENT:String = "motion_blur"; public static const DAE_STAGE_ATTRIBUTE:String = "stage"; public static const DAEMAX_FAR_ATTEN_START_PARAMETER:String = "far_attenuation_start"; public static const DAE_SID_ATTRIBUTE:String = "sid"; public static const DAE_DENSITY_ELEMENT:String = "density"; public static const DAE_FXSTD_STATE_REF_ELEMENT:String = "ref"; public static const DAEMAX_CAMERA_MB_DISABLEANTIALIAS_PARAMETER:String = "disable_antialiasing"; public static const DAE_TARGET_MORPH_INPUT_DEPRECATED:String = "TARGET"; public static const DAEMAX_TARGET_LIGHT_PARAMETER:String = "target"; public static const DAE_MATERIAL_ELEMENT:String = "material"; public static const DAE_PHYSICS_STATIC_FRICTION:String = "static_friction"; public static const DAE_ALL_ELEMENT:String = "all"; public static const DAE_FXSTD_PHONG_ELEMENT:String = "phong"; public static const DAE_FORMAT_HINT_D_VALUE:String = "D"; public static const DAE_CLOSEDV_ATTRIBUTE:String = "closed_v"; public static const DAE_CAPSULE_ELEMENT:String = "capsule"; public static const DAE_FXCMN_NEWPARAM_ELEMENT:String = "newparam"; public static const DAE_ASSET_ELEMENT:String = "asset"; public static const DAE_FXSTD_STATE_FAIL_ELEMENT:String = "fail"; public static const DAE_SUBJECT_ASSET_PARAMETER:String = "subject"; public static const DAE_EFFECT_ELEMENT:String = "effect"; public static const DAE_PLATFORM_ATTRIBUTE:String = "platform"; public static const DAE_ANIMATION_ELEMENT:String = "animation"; public static const DAEMAYA_TEXTURE_REPEATU_PARAMETER:String = "repeatU"; public static const DAEMAYA_TEXTURE_COVERAGEV_PARAMETER:String = "coverageV"; } }//package org.ascollada
Section 233
//Camera3D (org.papervision3d.cameras.Camera3D) package org.papervision3d.cameras { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import flash.utils.*; import org.papervision3d.core.culling.*; public class Camera3D extends CameraObject3D { protected var _prevZoom:Number; protected var _prevOrthoProjection:Boolean; protected var _prevHeight:Number; protected var _prevFocus:Number; protected var _prevUseProjection:Boolean; protected var _focusFix:Matrix3D; protected var _prevOrtho:Boolean; protected var _prevWidth:Number; protected var _projection:Matrix3D; public function Camera3D(_arg1:Number=60, _arg2:Number=10, _arg3:Number=5000, _arg4:Boolean=false, _arg5:Boolean=false){ super(_arg2, 40); this.fov = _arg1; _prevFocus = 0; _prevZoom = 0; _prevOrtho = false; _prevUseProjection = false; _useCulling = _arg4; _useProjectionMatrix = _arg5; _far = _arg3; _focusFix = Matrix3D.IDENTITY; } override public function projectFaces(_arg1:Array, _arg2:DisplayObject3D, _arg3:RenderSessionData):Number{ var _local4: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: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:Vertex3D; var _local25:Vertex3DInstance; var _local26:Number; var _local27:int; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Array; var _local35:Number; var _local36:Triangle3D; _local4 = _arg2.view; _local5 = _local4.n11; _local6 = _local4.n12; _local7 = _local4.n13; _local8 = _local4.n21; _local9 = _local4.n22; _local10 = _local4.n23; _local11 = _local4.n31; _local12 = _local4.n32; _local13 = _local4.n33; _local14 = _local4.n41; _local15 = _local4.n42; _local16 = _local4.n43; _local27 = 0; _local28 = _arg3.camera.focus; _local29 = (_local28 * _arg3.camera.zoom); _local30 = (viewport.width / 2); _local31 = (viewport.height / 2); _local32 = _arg3.camera.far; _local33 = (_local32 - _local28); _local35 = getTimer(); for each (_local36 in _arg1) { _local34 = _local36.vertices; _local27 = _local34.length; while ((_local24 = _local34[--_local27])) { if (_local24.timestamp == _local35){ } else { _local24.timestamp = _local35; _local17 = _local24.x; _local18 = _local24.y; _local19 = _local24.z; _local22 = ((((_local17 * _local11) + (_local18 * _local12)) + (_local19 * _local13)) + _local4.n34); _local25 = _local24.vertex3DInstance; if (_useProjectionMatrix){ _local23 = ((((_local17 * _local14) + (_local18 * _local15)) + (_local19 * _local16)) + _local4.n44); _local22 = (_local22 / _local23); if ((_local25.visible = (((_local22 > 0)) && ((_local22 < 1))))){ _local20 = (((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local4.n14) / _local23); _local21 = (((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local4.n24) / _local23); _local25.x = (_local20 * _local30); _local25.y = (_local21 * _local31); _local25.z = (_local22 * _local23); }; } else { if ((_local25.visible = ((_local28 + _local22) > 0))){ _local20 = ((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local4.n14); _local21 = ((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local4.n24); _local26 = (_local29 / (_local28 + _local22)); _local25.x = (_local20 * _local26); _local25.y = (_local21 * _local26); _local25.z = _local22; }; }; }; }; }; return (0); } override public function set far(_arg1:Number):void{ if (_arg1 > this.focus){ _far = _arg1; this.update(this.viewport); }; } override public function projectVertices(_arg1:Array, _arg2:DisplayObject3D, _arg3:RenderSessionData):Number{ var _local4: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: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:Vertex3D; var _local25:Vertex3DInstance; var _local26:Number; var _local27:int; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; _local4 = _arg2.view; _local5 = _local4.n11; _local6 = _local4.n12; _local7 = _local4.n13; _local8 = _local4.n21; _local9 = _local4.n22; _local10 = _local4.n23; _local11 = _local4.n31; _local12 = _local4.n32; _local13 = _local4.n33; _local14 = _local4.n41; _local15 = _local4.n42; _local16 = _local4.n43; _local27 = _arg1.length; _local28 = _arg3.camera.focus; _local29 = (_local28 * _arg3.camera.zoom); _local30 = (viewport.width / 2); _local31 = (viewport.height / 2); _local32 = _arg3.camera.far; _local33 = (_local32 - _local28); while ((_local24 = _arg1[--_local27])) { _local17 = _local24.x; _local18 = _local24.y; _local19 = _local24.z; _local22 = ((((_local17 * _local11) + (_local18 * _local12)) + (_local19 * _local13)) + _local4.n34); _local25 = _local24.vertex3DInstance; if (_useProjectionMatrix){ _local23 = ((((_local17 * _local14) + (_local18 * _local15)) + (_local19 * _local16)) + _local4.n44); _local22 = (_local22 / _local23); if ((_local25.visible = (((_local22 > 0)) && ((_local22 < 1))))){ _local20 = (((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local4.n14) / _local23); _local21 = (((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local4.n24) / _local23); _local25.x = (_local20 * _local30); _local25.y = (_local21 * _local31); _local25.z = (_local22 * _local23); }; } else { if ((_local25.visible = ((_local28 + _local22) > 0))){ _local20 = ((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local4.n14); _local21 = ((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local4.n24); _local26 = (_local29 / (_local28 + _local22)); _local25.x = (_local20 * _local26); _local25.y = (_local21 * _local26); _local25.z = _local22; }; }; }; return (0); } override public function transformView(_arg1:Matrix3D=null):void{ if (((((((((((!((ortho == _prevOrtho))) || (!((_prevUseProjection == _useProjectionMatrix))))) || (!((focus == _prevFocus))))) || (!((zoom == _prevZoom))))) || (!((viewport.width == _prevWidth))))) || (!((viewport.height == _prevHeight))))){ update(viewport); }; if (_target){ lookAt(_target); } else { if (_transformDirty){ updateTransform(); }; }; if (_useProjectionMatrix){ super.transformView(); this.eye.calculateMultiply4x4(_projection, this.eye); } else { _focusFix.copy(this.transform); _focusFix.n14 = (_focusFix.n14 + (focus * this.transform.n13)); _focusFix.n24 = (_focusFix.n24 + (focus * this.transform.n23)); _focusFix.n34 = (_focusFix.n34 + (focus * this.transform.n33)); super.transformView(_focusFix); }; if ((culler is FrustumCuller)){ FrustumCuller(culler).transform.copy(this.transform); }; } override public function orbit(_arg1:Number, _arg2:Number, _arg3:Boolean=true, _arg4:DisplayObject3D=null):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _arg4 = ((_arg4) || (_target)); _arg4 = ((_arg4) || (DisplayObject3D.ZERO)); if (_arg3){ _arg1 = (_arg1 * (Math.PI / 180)); _arg2 = (_arg2 * (Math.PI / 180)); }; _local5 = (_arg4.world.n14 - this.x); _local6 = (_arg4.world.n24 - this.y); _local7 = (_arg4.world.n34 - this.z); _local8 = Math.sqrt((((_local5 * _local5) + (_local6 * _local6)) + (_local7 * _local7))); _local9 = (Math.cos(_arg2) * Math.sin(_arg1)); _local10 = (Math.sin(_arg2) * Math.sin(_arg1)); _local11 = Math.cos(_arg1); this.x = (_arg4.world.n14 + (_local9 * _local8)); this.y = (_arg4.world.n24 + (_local11 * _local8)); this.z = (_arg4.world.n34 + (_local10 * _local8)); this.lookAt(_arg4); } override public function set near(_arg1:Number):void{ if (_arg1 > 0){ this.focus = _arg1; this.update(this.viewport); }; } public function update(_arg1:Rectangle):void{ if (!_arg1){ throw (new Error(("Camera3D#update: Invalid viewport rectangle! " + _arg1))); }; this.viewport = _arg1; _prevFocus = this.focus; _prevZoom = this.zoom; _prevWidth = this.viewport.width; _prevHeight = this.viewport.height; if (_prevOrtho != this.ortho){ if (this.ortho){ _prevOrthoProjection = this.useProjectionMatrix; this.useProjectionMatrix = true; } else { this.useProjectionMatrix = _prevOrthoProjection; }; } else { if (_prevUseProjection != _useProjectionMatrix){ this.useProjectionMatrix = this._useProjectionMatrix; }; }; _prevOrtho = this.ortho; _prevUseProjection = _useProjectionMatrix; this.useCulling = _useCulling; } override public function set orthoScale(_arg1:Number):void{ super.orthoScale = _arg1; this.useProjectionMatrix = this.useProjectionMatrix; _prevOrtho = !(this.ortho); this.update(this.viewport); } override public function set useProjectionMatrix(_arg1:Boolean):void{ var _local2:Number; var _local3:Number; if (_arg1){ if (this.ortho){ _local2 = (viewport.width / 2); _local3 = (viewport.height / 2); _projection = createOrthoMatrix(-(_local2), _local2, -(_local3), _local3, -(_far), _far); _projection = Matrix3D.multiply(_orthoScaleMatrix, _projection); } else { _projection = createPerspectiveMatrix(fov, (viewport.width / viewport.height), this.focus, this.far); }; } else { if (this.ortho){ _arg1 = true; }; }; super.useProjectionMatrix = _arg1; } override public function set useCulling(_arg1:Boolean):void{ super.useCulling = _arg1; if (_useCulling){ if (!this.culler){ this.culler = new FrustumCuller(); }; FrustumCuller(this.culler).initialize(this.fov, (this.viewport.width / this.viewport.height), (this.focus / this.zoom), _far); } else { this.culler = null; }; } public static function createPerspectiveMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix3D{ var _local5:Number; var _local6:Number; var _local7:Number; _local5 = ((_arg1 / 2) * (Math.PI / 180)); _local6 = Math.tan(_local5); _local7 = (1 / _local6); return (new Matrix3D([(_local7 / _arg2), 0, 0, 0, 0, _local7, 0, 0, 0, 0, -(((_arg3 + _arg4) / (_arg3 - _arg4))), (((2 * _arg4) * _arg3) / (_arg3 - _arg4)), 0, 0, 1, 0])); } public static function createOrthoMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Matrix3D{ var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Matrix3D; _local7 = ((_arg2 + _arg1) / (_arg2 - _arg1)); _local8 = ((_arg4 + _arg3) / (_arg4 - _arg3)); _local9 = ((_arg6 + _arg5) / (_arg6 - _arg5)); _local10 = new Matrix3D([(2 / (_arg2 - _arg1)), 0, 0, _local7, 0, (2 / (_arg4 - _arg3)), 0, _local8, 0, 0, (-2 / (_arg6 - _arg5)), _local9, 0, 0, 0, 1]); _local10.calculateMultiply(Matrix3D.scaleMatrix(1, 1, -1), _local10); return (_local10); } } }//package org.papervision3d.cameras
Section 234
//SpringCamera3D (org.papervision3d.cameras.SpringCamera3D) package org.papervision3d.cameras { import org.papervision3d.core.math.*; import org.papervision3d.objects.*; public class SpringCamera3D extends Camera3D { public var lookOffset:Number3D; private var _velocity:Number3D; private var _xPosition:Number3D; private var _acceleration:Number3D; private var _lookAtPosition:Number3D; private var _targetTransform:Matrix3D; public var _camTarget:DisplayObject3D; private var _xLookOffset:Number3D; public var damping:Number;// = 4 public var mass:Number;// = 40 public var positionOffset:Number3D; private var _dv:Number3D; public var stiffness:Number;// = 1 private var _xPositionOffset:Number3D; private var _desiredPosition:Number3D; private var _xLookAtObject:DisplayObject3D; private var _stretch:Number3D; private var _force:Number3D; private var _zrot:Number;// = 0 public function SpringCamera3D(_arg1:Number=60, _arg2:Number=10, _arg3:Number=5000, _arg4:Boolean=false, _arg5:Boolean=false){ stiffness = 1; damping = 4; mass = 40; positionOffset = new Number3D(0, 5, -50); lookOffset = new Number3D(0, 2, 10); _zrot = 0; _velocity = new Number3D(); _dv = new Number3D(); _stretch = new Number3D(); _force = new Number3D(); _acceleration = new Number3D(); _desiredPosition = new Number3D(); _lookAtPosition = new Number3D(); _targetTransform = new Matrix3D(); _xPositionOffset = new Number3D(); _xLookOffset = new Number3D(); _xPosition = new Number3D(); _xLookAtObject = new DisplayObject3D(); super(_arg1, _arg2, _arg3, _arg4, _arg5); } override public function transformView(_arg1:Matrix3D=null):void{ if (_camTarget != null){ _targetTransform.n31 = _camTarget.transform.n31; _targetTransform.n32 = _camTarget.transform.n32; _targetTransform.n33 = _camTarget.transform.n33; _targetTransform.n21 = _camTarget.transform.n21; _targetTransform.n22 = _camTarget.transform.n22; _targetTransform.n23 = _camTarget.transform.n23; _targetTransform.n11 = _camTarget.transform.n11; _targetTransform.n12 = _camTarget.transform.n12; _targetTransform.n13 = _camTarget.transform.n13; _xPositionOffset.x = positionOffset.x; _xPositionOffset.y = positionOffset.y; _xPositionOffset.z = positionOffset.z; Matrix3D.multiplyVector(_targetTransform, _xPositionOffset); _xLookOffset.x = lookOffset.x; _xLookOffset.y = lookOffset.y; _xLookOffset.z = lookOffset.z; Matrix3D.multiplyVector(_targetTransform, _xLookOffset); _desiredPosition.x = (_camTarget.x + _xPositionOffset.x); _desiredPosition.y = (_camTarget.y + _xPositionOffset.y); _desiredPosition.z = (_camTarget.z + _xPositionOffset.z); _lookAtPosition.x = (_camTarget.x + _xLookOffset.x); _lookAtPosition.y = (_camTarget.y + _xLookOffset.y); _lookAtPosition.z = (_camTarget.z + _xLookOffset.z); _stretch.x = ((x - _desiredPosition.x) * -(stiffness)); _stretch.y = ((y - _desiredPosition.y) * -(stiffness)); _stretch.z = ((z - _desiredPosition.z) * -(stiffness)); _dv.x = (_velocity.x * damping); _dv.y = (_velocity.y * damping); _dv.z = (_velocity.z * damping); _force.x = (_stretch.x - _dv.x); _force.y = (_stretch.y - _dv.y); _force.z = (_stretch.z - _dv.z); _acceleration.x = (_force.x * (1 / mass)); _acceleration.y = (_force.y * (1 / mass)); _acceleration.z = (_force.z * (1 / mass)); _velocity.plusEq(_acceleration); _xPosition.x = (x + _velocity.x); _xPosition.y = (y + _velocity.y); _xPosition.z = (z + _velocity.z); x = _xPosition.x; y = _xPosition.y; z = _xPosition.z; _xLookAtObject.x = _lookAtPosition.x; _xLookAtObject.y = _lookAtPosition.y; _xLookAtObject.z = _lookAtPosition.z; lookAt(_xLookAtObject); if (Math.abs(_zrot) > 0){ this.rotationZ = _zrot; }; }; super.transformView(_arg1); } public function set zrot(_arg1:Number):void{ _zrot = _arg1; if (_zrot < 0.001){ _arg1 = 0; }; } public function get zrot():Number{ return (_zrot); } override public function set target(_arg1:DisplayObject3D):void{ _camTarget = _arg1; } override public function get target():DisplayObject3D{ return (_camTarget); } } }//package org.papervision3d.cameras
Section 235
//AbstractChannel3D (org.papervision3d.core.animation.channel.AbstractChannel3D) package org.papervision3d.core.animation.channel { import org.papervision3d.objects.*; import org.papervision3d.core.animation.*; public class AbstractChannel3D { public var endTime:Number; public var name:String; public var startTime:Number; public var target:DisplayObject3D; public var duration:Number; public var currentIndex:int; public var nextIndex:int; public var nextKeyFrame:AnimationKeyFrame3D; public var keyFrames:Array; public var currentTime:Number; public var currentKeyFrame:AnimationKeyFrame3D; public var frameDuration:Number; public var frameAlpha:Number; public function AbstractChannel3D(_arg1:DisplayObject3D, _arg2:String=null){ this.target = _arg1; this.name = _arg2; this.startTime = (this.endTime = 0); this.keyFrames = new Array(); this.currentKeyFrame = (this.nextKeyFrame = null); this.currentIndex = (this.nextIndex = -1); this.frameAlpha = 0; } public function updateToTime(_arg1:Number):void{ currentIndex = Math.floor(((this.keyFrames.length - 1) * _arg1)); currentIndex = ((currentIndex < (this.keyFrames.length - 1))) ? currentIndex : 0; nextIndex = (currentIndex + 1); currentKeyFrame = this.keyFrames[currentIndex]; nextKeyFrame = ((nextIndex < this.keyFrames.length)) ? this.keyFrames[nextIndex] : null; frameDuration = (nextKeyFrame) ? (nextKeyFrame.time - currentKeyFrame.time) : currentKeyFrame.time; currentTime = (_arg1 * this.duration); frameAlpha = ((currentTime - currentKeyFrame.time) / frameDuration); frameAlpha = ((frameAlpha < 0)) ? 0 : frameAlpha; frameAlpha = ((frameAlpha > 1)) ? 1 : frameAlpha; } public function updateToFrame(_arg1:uint):void{ if (!this.keyFrames.length){ return; }; currentIndex = _arg1; currentIndex = ((currentIndex < (this.keyFrames.length - 1))) ? currentIndex : 0; nextIndex = (currentIndex + 1); currentKeyFrame = this.keyFrames[currentIndex]; nextKeyFrame = ((nextIndex < this.keyFrames.length)) ? this.keyFrames[nextIndex] : null; frameDuration = (nextKeyFrame) ? (nextKeyFrame.time - currentKeyFrame.time) : currentKeyFrame.time; frameAlpha = 0; currentTime = currentKeyFrame.time; } public function addKeyFrame(_arg1:AnimationKeyFrame3D):AnimationKeyFrame3D{ if (this.keyFrames.length){ this.startTime = Math.min(this.startTime, _arg1.time); this.endTime = Math.max(this.endTime, _arg1.time); } else { this.startTime = (this.endTime = _arg1.time); }; this.duration = (this.endTime - this.startTime); this.keyFrames.push(_arg1); this.keyFrames.sortOn("time", Array.NUMERIC); return (_arg1); } } }//package org.papervision3d.core.animation.channel
Section 236
//MatrixChannel3D (org.papervision3d.core.animation.channel.MatrixChannel3D) package org.papervision3d.core.animation.channel { import org.papervision3d.objects.*; public class MatrixChannel3D extends AbstractChannel3D { public var member:String; public function MatrixChannel3D(_arg1:DisplayObject3D, _arg2:String=null){ super(_arg1, _arg2); this.member = null; } override public function updateToTime(_arg1:Number):void{ super.updateToTime(_arg1); target.copyTransform(currentKeyFrame.output[0]); } override public function updateToFrame(_arg1:uint):void{ super.updateToFrame(_arg1); target.copyTransform(currentKeyFrame.output[0]); } } }//package org.papervision3d.core.animation.channel
Section 237
//AnimationKeyFrame3D (org.papervision3d.core.animation.AnimationKeyFrame3D) package org.papervision3d.core.animation { public class AnimationKeyFrame3D { public var inTangent:Array; public var interpolation:String; public var name:String; public var time:Number; public var output:Array; public var outTangent:Array; public static const INTERPOLATION_LINEAR:String = "LINEAR"; public static const INTERPOLATION_BEZIER:String = "BEZIER"; public function AnimationKeyFrame3D(_arg1:String, _arg2:Number, _arg3:Array=null, _arg4:String=null, _arg5:Array=null, _arg6:Array=null){ this.name = _arg1; this.time = _arg2; this.output = ((_arg3) || (new Array())); this.interpolation = ((_arg4) || (INTERPOLATION_LINEAR)); this.inTangent = ((_arg5) || (new Array())); this.outTangent = ((_arg6) || (new Array())); } } }//package org.papervision3d.core.animation
Section 238
//IAnimatable (org.papervision3d.core.animation.IAnimatable) package org.papervision3d.core.animation { public interface IAnimatable { function stop():void; function play(_arg1:String=null):void; } }//package org.papervision3d.core.animation
Section 239
//IAnimationDataProvider (org.papervision3d.core.animation.IAnimationDataProvider) package org.papervision3d.core.animation { import org.papervision3d.core.animation.channel.*; import org.papervision3d.objects.*; public interface IAnimationDataProvider { function getAnimationChannelsByClip(_arg1:String):Array; function getAnimationChannelByName(_arg1:String):AbstractChannel3D; function get fps():uint; function getAnimationChannels(_arg1:DisplayObject3D=null):Array; } }//package org.papervision3d.core.animation
Section 240
//Clipping (org.papervision3d.core.clipping.draw.Clipping) package org.papervision3d.core.clipping.draw { import flash.display.*; import org.papervision3d.core.render.command.*; import flash.geom.*; public class Clipping { public var minX:Number;// = -1000000 private var zeroPoint:Point; private var globalPoint:Point; public var minY:Number;// = -1000000 private var rectangleClipping:RectangleClipping; public var maxX:Number;// = 1000000 public var maxY:Number;// = 1000000 public function Clipping(){ zeroPoint = new Point(0, 0); minX = -1000000; minY = -1000000; maxX = 1000000; maxY = 1000000; super(); } public function check(_arg1:RenderableListItem):Boolean{ return (true); } public function rect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Boolean{ return (true); } public function screen(_arg1:Sprite):Clipping{ if (!rectangleClipping){ rectangleClipping = new RectangleClipping(); }; switch (_arg1.stage.align){ case StageAlign.TOP_LEFT: zeroPoint.x = 0; zeroPoint.y = 0; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.maxX = ((rectangleClipping.minX = globalPoint.x) + _arg1.stage.stageWidth); rectangleClipping.maxY = ((rectangleClipping.minY = globalPoint.y) + _arg1.stage.stageHeight); break; case StageAlign.TOP_RIGHT: zeroPoint.x = _arg1.stage.stageWidth; zeroPoint.y = 0; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = ((rectangleClipping.maxX = globalPoint.x) - _arg1.stage.stageWidth); rectangleClipping.maxY = ((rectangleClipping.minY = globalPoint.y) + _arg1.stage.stageHeight); break; case StageAlign.BOTTOM_LEFT: zeroPoint.x = 0; zeroPoint.y = _arg1.stage.stageHeight; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.maxX = ((rectangleClipping.minX = globalPoint.x) + _arg1.stage.stageWidth); rectangleClipping.minY = ((rectangleClipping.maxY = globalPoint.y) - _arg1.stage.stageHeight); break; case StageAlign.BOTTOM_RIGHT: zeroPoint.x = _arg1.stage.stageWidth; zeroPoint.y = _arg1.stage.stageHeight; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = ((rectangleClipping.maxX = globalPoint.x) - _arg1.stage.stageWidth); rectangleClipping.minY = ((rectangleClipping.maxY = globalPoint.y) - _arg1.stage.stageHeight); break; case StageAlign.TOP: zeroPoint.x = (_arg1.stage.stageWidth / 2); zeroPoint.y = 0; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = (globalPoint.x - (_arg1.stage.stageWidth / 2)); rectangleClipping.maxX = (globalPoint.x + (_arg1.stage.stageWidth / 2)); rectangleClipping.maxY = ((rectangleClipping.minY = globalPoint.y) + _arg1.stage.stageHeight); break; case StageAlign.BOTTOM: zeroPoint.x = (_arg1.stage.stageWidth / 2); zeroPoint.y = _arg1.stage.stageHeight; globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = (globalPoint.x - (_arg1.stage.stageWidth / 2)); rectangleClipping.maxX = (globalPoint.x + (_arg1.stage.stageWidth / 2)); rectangleClipping.minY = ((rectangleClipping.maxY = globalPoint.y) - _arg1.stage.stageHeight); break; case StageAlign.LEFT: zeroPoint.x = 0; zeroPoint.y = (_arg1.stage.stageHeight / 2); globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.maxX = ((rectangleClipping.minX = globalPoint.x) + _arg1.stage.stageWidth); rectangleClipping.minY = (globalPoint.y - (_arg1.stage.stageHeight / 2)); rectangleClipping.maxY = (globalPoint.y + (_arg1.stage.stageHeight / 2)); break; case StageAlign.RIGHT: zeroPoint.x = _arg1.stage.stageWidth; zeroPoint.y = (_arg1.stage.stageHeight / 2); globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = ((rectangleClipping.maxX = globalPoint.x) - _arg1.stage.stageWidth); rectangleClipping.minY = (globalPoint.y - (_arg1.stage.stageHeight / 2)); rectangleClipping.maxY = (globalPoint.y + (_arg1.stage.stageHeight / 2)); break; default: zeroPoint.x = (_arg1.stage.stageWidth / 2); zeroPoint.y = (_arg1.stage.stageHeight / 2); globalPoint = _arg1.globalToLocal(zeroPoint); rectangleClipping.minX = (globalPoint.x - (_arg1.stage.stageWidth / 2)); rectangleClipping.maxX = (globalPoint.x + (_arg1.stage.stageWidth / 2)); rectangleClipping.minY = (globalPoint.y - (_arg1.stage.stageHeight / 2)); rectangleClipping.maxY = (globalPoint.y + (_arg1.stage.stageHeight / 2)); }; return (rectangleClipping); } public function asRectangleClipping():RectangleClipping{ if (!rectangleClipping){ rectangleClipping = new RectangleClipping(); }; rectangleClipping.minX = -1000000; rectangleClipping.minY = -1000000; rectangleClipping.maxX = 1000000; rectangleClipping.maxY = 1000000; return (rectangleClipping); } } }//package org.papervision3d.core.clipping.draw
Section 241
//RectangleClipping (org.papervision3d.core.clipping.draw.RectangleClipping) package org.papervision3d.core.clipping.draw { import org.papervision3d.core.render.command.*; public class RectangleClipping extends Clipping { public function RectangleClipping(_arg1:Number=-1000000, _arg2:Number=-1000000, _arg3:Number=1000000, _arg4:Number=1000000){ 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:RenderableListItem):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); } public function toString():String{ return ((((((((("{minX:" + minX) + " maxX:") + maxX) + " minY:") + minY) + " maxY:") + maxY) + "}")); } override public function asRectangleClipping():RectangleClipping{ return (this); } } }//package org.papervision3d.core.clipping.draw
Section 242
//DefaultClipping (org.papervision3d.core.clipping.DefaultClipping) package org.papervision3d.core.clipping { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class DefaultClipping { public function reset(_arg1:RenderSessionData):void{ } public function testFace(_arg1:Triangle3D, _arg2:DisplayObject3D, _arg3:RenderSessionData):Boolean{ return (false); } public function clipFace(_arg1:Triangle3D, _arg2:DisplayObject3D, _arg3:MaterialObject3D, _arg4:RenderSessionData, _arg5:Array):Number{ return (0); } public function setDisplayObject(_arg1:DisplayObject3D, _arg2:RenderSessionData):void{ } } }//package org.papervision3d.core.clipping
Section 243
//IObjectController (org.papervision3d.core.controller.IObjectController) package org.papervision3d.core.controller { public interface IObjectController { function update():void; } }//package org.papervision3d.core.controller
Section 244
//SkinController (org.papervision3d.core.controller.SkinController) package org.papervision3d.core.controller { import org.papervision3d.core.math.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.objects.special.*; public class SkinController implements IObjectController { private var _cached:Array; public var bindShapeMatrix:Matrix3D; public var invBindMatrices:Array; public var joints:Array; public var target:Skin3D; public var poseMatrix:Matrix3D; public var vertexWeights:Array; public function SkinController(_arg1:Skin3D){ this.target = _arg1; this.joints = new Array(); this.invBindMatrices = new Array(); this.vertexWeights = new Array(); } private function skinMesh(_arg1:DisplayObject3D, _arg2:Array, _arg3:Matrix3D, _arg4:Array, _arg5:Array):void{ var _local6:int; var _local7:Number3D; var _local8:Number3D; var _local9:Vertex3D; var _local10:Matrix3D; var _local11:Number; var _local12:int; _local7 = new Number3D(); _local10 = Matrix3D.multiply(_arg1.world, _arg3); _local6 = 0; while (_local6 < _arg2.length) { _local11 = _arg2[_local6].weight; _local12 = _arg2[_local6].vertexIndex; if ((((_local11 <= 0.0001)) || ((_local11 >= 1.0001)))){ } else { _local8 = _arg4[_local12]; _local9 = _arg5[_local12]; _local7.x = _local8.x; _local7.y = _local8.y; _local7.z = _local8.z; Matrix3D.multiplyVector(_local10, _local7); _local9.x = (_local9.x + (_local7.x * _local11)); _local9.y = (_local9.y + (_local7.y * _local11)); _local9.z = (_local9.z + (_local7.z * _local11)); }; _local6++; }; } public function update():void{ var _local1:Array; var _local2:int; if (((!(joints.length)) || (!(bindShapeMatrix)))){ return; }; if (!_cached){ cacheVertices(); }; if (invBindMatrices.length != this.joints.length){ return; }; _local1 = target.geometry.vertices; _local2 = 0; while (_local2 < _local1.length) { _local1[_local2].x = (_local1[_local2].y = (_local1[_local2].z = 0)); _local2++; }; _local2 = 0; while (_local2 < joints.length) { skinMesh(joints[_local2], this.vertexWeights[_local2], invBindMatrices[_local2], _cached, _local1); _local2++; }; } private function cacheVertices():void{ var _local1:Array; var _local2:int; this.target.transformVertices(this.bindShapeMatrix); this.target.geometry.ready = true; _local1 = this.target.geometry.vertices; _cached = new Array(_local1.length); _local2 = 0; while (_local2 < _local1.length) { _cached[_local2] = new Number3D(_local1[_local2].x, _local1[_local2].y, _local1[_local2].z); _local2++; }; } } }//package org.papervision3d.core.controller
Section 245
//DefaultLineCuller (org.papervision3d.core.culling.DefaultLineCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public class DefaultLineCuller implements ILineCuller { public function testLine(_arg1:Line3D):Boolean{ return (((_arg1.v0.vertex3DInstance.visible) && (_arg1.v1.vertex3DInstance.visible))); } } }//package org.papervision3d.core.culling
Section 246
//DefaultParticleCuller (org.papervision3d.core.culling.DefaultParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public class DefaultParticleCuller implements IParticleCuller { public function testParticle(_arg1:Particle):Boolean{ if (_arg1.material.invisible == false){ if (_arg1.vertex3D.vertex3DInstance.visible == true){ return (true); }; }; return (false); } } }//package org.papervision3d.core.culling
Section 247
//DefaultTriangleCuller (org.papervision3d.core.culling.DefaultTriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; public class DefaultTriangleCuller implements ITriangleCuller { protected static var y2:Number; protected static var y1:Number; protected static var y0:Number; protected static var x0:Number; protected static var x1:Number; protected static var x2:Number; public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ var _local5:MaterialObject3D; if (((((_arg2.visible) && (_arg3.visible))) && (_arg4.visible))){ _local5 = (_arg1.material) ? _arg1.material : _arg1.instance.material; if (_local5.invisible){ return (false); }; x0 = _arg2.x; y0 = _arg2.y; x1 = _arg3.x; y1 = _arg3.y; x2 = _arg4.x; y2 = _arg4.y; if (_local5.oneSide){ if (_local5.opposite){ if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) > 0){ return (false); }; } else { if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) < 0){ return (false); }; }; }; return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 248
//FrustumCuller (org.papervision3d.core.culling.FrustumCuller) package org.papervision3d.core.culling { import org.papervision3d.core.math.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class FrustumCuller implements IObjectCuller { private var _tang:Number; private var _ratio:Number; private var _near:Number; private var _fov:Number; private var _far:Number; private var _nh:Number; private var _fh:Number; public var transform:Matrix3D; private var _sphereY:Number; private var _nw:Number; private var _sphereX:Number; private var _fw:Number; public static const OUTSIDE:int = -1; public static const INSIDE:int = 1; public static const INTERSECT:int = 0; public function FrustumCuller(){ this.transform = Matrix3D.IDENTITY; this.initialize(); } public function get ratio():Number{ return (_ratio); } public function pointInFrustum(_arg1:Number, _arg2:Number, _arg3:Number):int{ var _local4:Matrix3D; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _local4 = this.transform; _local5 = (_arg1 - _local4.n14); _local6 = (_arg2 - _local4.n24); _local7 = (_arg3 - _local4.n34); _local8 = (((_local5 * _local4.n13) + (_local6 * _local4.n23)) + (_local7 * _local4.n33)); if ((((_local8 > _far)) || ((_local8 < _near)))){ return (OUTSIDE); }; _local9 = (((_local5 * _local4.n12) + (_local6 * _local4.n22)) + (_local7 * _local4.n32)); _local10 = (_local8 * _tang); if ((((_local9 > _local10)) || ((_local9 < -(_local10))))){ return (OUTSIDE); }; _local11 = (((_local5 * _local4.n11) + (_local6 * _local4.n21)) + (_local7 * _local4.n31)); _local10 = (_local10 * _ratio); if ((((_local11 > _local10)) || ((_local11 < -(_local10))))){ return (OUTSIDE); }; return (INSIDE); } public function initialize(_arg1:Number=60, _arg2:Number=1.333, _arg3:Number=1, _arg4:Number=5000):void{ var _local5:Number; var _local6:Number; _fov = _arg1; _ratio = _arg2; _near = _arg3; _far = _arg4; _local5 = (((Math.PI / 180) * _fov) * 0.5); _tang = Math.tan(_local5); _nh = (_near * _tang); _nw = (_nh * _ratio); _fh = (_far * _tang); _fw = (_fh * _ratio); _local6 = Math.atan((_tang * _ratio)); _sphereX = (1 / Math.cos(_local6)); _sphereY = (1 / Math.cos(_local5)); } public function get fov():Number{ return (_fov); } public function set ratio(_arg1:Number):void{ this.initialize(_fov, _arg1, _near, _far); } public function get far():Number{ return (_far); } public function set fov(_arg1:Number):void{ this.initialize(_arg1, _ratio, _near, _far); } public function get near():Number{ return (_near); } public function set far(_arg1:Number):void{ this.initialize(_fov, _ratio, _near, _arg1); } public function set near(_arg1:Number):void{ this.initialize(_fov, _ratio, _arg1, _far); } public function sphereInFrustum(_arg1:DisplayObject3D, _arg2:BoundingSphere):int{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Matrix3D; var _local10:Number; var _local11:Number; var _local12:Number; _local3 = (_arg2.radius * Math.max(_arg1.scaleX, Math.max(_arg1.scaleY, _arg1.scaleZ))); _local8 = INSIDE; _local9 = this.transform; _local10 = (_arg1.world.n14 - _local9.n14); _local11 = (_arg1.world.n24 - _local9.n24); _local12 = (_arg1.world.n34 - _local9.n34); _local7 = (((_local10 * _local9.n13) + (_local11 * _local9.n23)) + (_local12 * _local9.n33)); if ((((_local7 > (_far + _local3))) || ((_local7 < (_near - _local3))))){ return (OUTSIDE); }; if ((((_local7 > (_far - _local3))) || ((_local7 < (_near + _local3))))){ _local8 = INTERSECT; }; _local6 = (((_local10 * _local9.n12) + (_local11 * _local9.n22)) + (_local12 * _local9.n32)); _local4 = (_sphereY * _local3); _local7 = (_local7 * _tang); if ((((_local6 > (_local7 + _local4))) || ((_local6 < (-(_local7) - _local4))))){ return (OUTSIDE); }; if ((((_local6 > (_local7 - _local4))) || ((_local6 < (-(_local7) + _local4))))){ _local8 = INTERSECT; }; _local5 = (((_local10 * _local9.n11) + (_local11 * _local9.n21)) + (_local12 * _local9.n31)); _local7 = (_local7 * _ratio); _local4 = (_sphereX * _local3); if ((((_local5 > (_local7 + _local4))) || ((_local5 < (-(_local7) - _local4))))){ return (OUTSIDE); }; if ((((_local5 > (_local7 - _local4))) || ((_local5 < (-(_local7) + _local4))))){ _local8 = INTERSECT; }; return (_local8); } public function testObject(_arg1:DisplayObject3D):int{ var _local2:int; _local2 = INSIDE; if (((((!(_arg1.geometry)) || (!(_arg1.geometry.vertices)))) || (!(_arg1.geometry.vertices.length)))){ return (_local2); }; switch (_arg1.frustumTestMethod){ case FrustumTestMethod.BOUNDING_SPHERE: _local2 = sphereInFrustum(_arg1, _arg1.geometry.boundingSphere); break; case FrustumTestMethod.BOUNDING_BOX: _local2 = aabbInFrustum(_arg1, _arg1.geometry.aabb); break; case FrustumTestMethod.NO_TESTING: break; default: break; }; return (_local2); } public function aabbInFrustum(_arg1:DisplayObject3D, _arg2:AxisAlignedBoundingBox, _arg3:Boolean=true):int{ var _local4:Vertex3D; var _local5:Number3D; var _local6:int; var _local7:int; var _local8:Array; _local6 = 0; _local7 = 0; _local8 = _arg2.getBoxVertices(); for each (_local4 in _local8) { _local5 = _local4.toNumber3D(); Matrix3D.multiplyVector(_arg1.world, _local5); if (pointInFrustum(_local5.x, _local5.y, _local5.z) == INSIDE){ _local6++; if (_arg3){ return (INSIDE); }; } else { _local7++; }; if (((_local6) && (_local7))){ return (INTERSECT); }; }; if (_local6){ return (((_local6 < 8)) ? INTERSECT : INSIDE); //unresolved jump }; return (OUTSIDE); } } }//package org.papervision3d.core.culling
Section 249
//FrustumTestMethod (org.papervision3d.core.culling.FrustumTestMethod) package org.papervision3d.core.culling { public class FrustumTestMethod { public static const BOUNDING_BOX:int = 1; public static const NO_TESTING:int = -1; public static const BOUNDING_SPHERE:int = 0; } }//package org.papervision3d.core.culling
Section 250
//ILineCuller (org.papervision3d.core.culling.ILineCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface ILineCuller { function testLine(_arg1:Line3D):Boolean; } }//package org.papervision3d.core.culling
Section 251
//IObjectCuller (org.papervision3d.core.culling.IObjectCuller) package org.papervision3d.core.culling { import org.papervision3d.objects.*; public interface IObjectCuller { function testObject(_arg1:DisplayObject3D):int; } }//package org.papervision3d.core.culling
Section 252
//IParticleCuller (org.papervision3d.core.culling.IParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface IParticleCuller { function testParticle(_arg1:Particle):Boolean; } }//package org.papervision3d.core.culling
Section 253
//ITriangleCuller (org.papervision3d.core.culling.ITriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface ITriangleCuller { function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean; } }//package org.papervision3d.core.culling
Section 254
//RectangleLineCuller (org.papervision3d.core.culling.RectangleLineCuller) package org.papervision3d.core.culling { import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.math.util.*; public class RectangleLineCuller implements ILineCuller { private var rectIntersection:Rectangle; private var lineBoundsRect:Rectangle; private var cullingRectangle:Rectangle; public function RectangleLineCuller(_arg1:Rectangle=null):void{ if (_arg1){ this.cullingRectangle = _arg1; }; lineBoundsRect = new Rectangle(); rectIntersection = new Rectangle(); } public function testLine(_arg1:Line3D):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; if (((!(_arg1.v0.vertex3DInstance.visible)) || (!(_arg1.v1.vertex3DInstance.visible)))){ return (false); }; _local2 = _arg1.v0.vertex3DInstance.x; _local3 = _arg1.v0.vertex3DInstance.y; _local4 = _arg1.v1.vertex3DInstance.x; _local5 = _arg1.v1.vertex3DInstance.y; lineBoundsRect.width = Math.abs((_local4 - _local2)); lineBoundsRect.height = Math.abs((_local5 - _local3)); if (_local2 < _local4){ lineBoundsRect.x = _local2; } else { lineBoundsRect.x = _local4; }; if (_local3 < _local5){ lineBoundsRect.y = _local3; } else { lineBoundsRect.y = _local5; }; if (cullingRectangle.containsRect(lineBoundsRect)){ return (true); }; if (!FastRectangleTools.intersects(lineBoundsRect, cullingRectangle)){ return (false); }; rectIntersection = FastRectangleTools.intersection(lineBoundsRect, cullingRectangle); _local6 = ((_local5 - _local3) / (_local4 - _local2)); _local7 = (_local3 - (_local6 * _local2)); _local8 = ((cullingRectangle.top - _local7) / _local6); if ((((_local8 > rectIntersection.left)) && ((_local8 < rectIntersection.right)))){ return (true); }; _local8 = ((cullingRectangle.bottom - _local7) / _local6); if ((((_local8 > rectIntersection.left)) && ((_local8 < rectIntersection.right)))){ return (true); }; _local9 = ((_local6 * cullingRectangle.left) + _local7); if ((((_local9 > rectIntersection.top)) && ((_local9 < rectIntersection.bottom)))){ return (true); }; _local9 = ((_local6 * cullingRectangle.right) + _local7); if ((((_local9 > rectIntersection.top)) && ((_local9 < rectIntersection.bottom)))){ return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 255
//RectangleParticleCuller (org.papervision3d.core.culling.RectangleParticleCuller) package org.papervision3d.core.culling { import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.math.util.*; public class RectangleParticleCuller implements IParticleCuller { public var cullingRectangle:Rectangle; private static var vInstance:Vertex3DInstance; private static var testPoint:Point; public function RectangleParticleCuller(_arg1:Rectangle=null){ this.cullingRectangle = _arg1; testPoint = new Point(); } public function testParticle(_arg1:Particle):Boolean{ vInstance = _arg1.vertex3D.vertex3DInstance; if (_arg1.material.invisible == false){ if (vInstance.visible){ if (FastRectangleTools.intersects(_arg1.renderRect, cullingRectangle)){ return (true); }; }; }; return (false); } } }//package org.papervision3d.core.culling
Section 256
//RectangleTriangleCuller (org.papervision3d.core.culling.RectangleTriangleCuller) package org.papervision3d.core.culling { import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.math.util.*; public class RectangleTriangleCuller extends DefaultTriangleCuller implements ITriangleCuller { public var cullingRectangle:Rectangle; private static const DEFAULT_RECT_X:Number = -((DEFAULT_RECT_W / 2)); private static const DEFAULT_RECT_W:Number = 640; private static const DEFAULT_RECT_H:Number = 480; private static const DEFAULT_RECT_Y:Number = -((DEFAULT_RECT_H / 2)); private static var hitRect:Rectangle = new Rectangle(); public function RectangleTriangleCuller(_arg1:Rectangle=null):void{ cullingRectangle = new Rectangle(DEFAULT_RECT_X, DEFAULT_RECT_Y, DEFAULT_RECT_W, DEFAULT_RECT_H); super(); if (_arg1){ this.cullingRectangle = _arg1; }; } override public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ if (super.testFace(_arg1, _arg2, _arg3, _arg4)){ hitRect.x = Math.min(_arg4.x, Math.min(_arg3.x, _arg2.x)); hitRect.width = (Math.max(_arg4.x, Math.max(_arg3.x, _arg2.x)) + Math.abs(hitRect.x)); hitRect.y = Math.min(_arg4.y, Math.min(_arg3.y, _arg2.y)); hitRect.height = (Math.max(_arg4.y, Math.max(_arg3.y, _arg2.y)) + Math.abs(hitRect.y)); return (FastRectangleTools.intersects(cullingRectangle, hitRect)); }; return (false); } } }//package org.papervision3d.core.culling
Section 257
//ViewportObjectFilter (org.papervision3d.core.culling.ViewportObjectFilter) package org.papervision3d.core.culling { import org.papervision3d.objects.*; import flash.utils.*; public class ViewportObjectFilter implements IObjectCuller { protected var _mode:int; protected var objects:Dictionary; public function ViewportObjectFilter(_arg1:int):void{ this.mode = _arg1; init(); } public function addObject(_arg1:DisplayObject3D):void{ objects[_arg1] = _arg1; } public function removeObject(_arg1:DisplayObject3D):void{ delete objects[_arg1]; } public function set mode(_arg1:int):void{ _mode = _arg1; } public function get mode():int{ return (_mode); } private function init():void{ objects = new Dictionary(true); } public function testObject(_arg1:DisplayObject3D):int{ if (objects[_arg1]){ return ((1 - _mode)); }; return (mode); } public function destroy():void{ objects = null; } } }//package org.papervision3d.core.culling
Section 258
//UserData (org.papervision3d.core.data.UserData) package org.papervision3d.core.data { public class UserData { public var data; public function UserData(_arg1=null){ this.data = _arg1; } } }//package org.papervision3d.core.data
Section 259
//AbstractRenderable (org.papervision3d.core.geom.renderables.AbstractRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.data.*; public class AbstractRenderable implements IRenderable { public var _userData:UserData; public var instance:DisplayObject3D; public function getRenderListItem():IRenderListItem{ return (null); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } public function get userData():UserData{ return (_userData); } } }//package org.papervision3d.core.geom.renderables
Section 260
//IRenderable (org.papervision3d.core.geom.renderables.IRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; public interface IRenderable { function getRenderListItem():IRenderListItem; } }//package org.papervision3d.core.geom.renderables
Section 261
//Line3D (org.papervision3d.core.geom.renderables.Line3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.core.geom.*; import org.papervision3d.materials.special.*; public class Line3D extends AbstractRenderable implements IRenderable { public var size:Number; public var cV:Vertex3D; public var renderCommand:RenderLine; public var material:LineMaterial; public var v0:Vertex3D; public var v1:Vertex3D; public function Line3D(_arg1:Lines3D, _arg2:LineMaterial, _arg3:Number, _arg4:Vertex3D, _arg5:Vertex3D){ this.size = _arg3; this.material = _arg2; this.v0 = _arg4; this.v1 = _arg5; this.cV = _arg5; this.instance = _arg1; this.renderCommand = new RenderLine(this); } public function addControlVertex(_arg1:Number, _arg2:Number, _arg3:Number):void{ cV = new Vertex3D(_arg1, _arg2, _arg3); if (instance.geometry.vertices.indexOf(cV) == -1){ instance.geometry.vertices.push(cV); }; renderCommand.cV = cV.vertex3DInstance; } override public function getRenderListItem():IRenderListItem{ return (this.renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 262
//Particle (org.papervision3d.core.geom.renderables.Particle) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.materials.special.*; public class Particle extends AbstractRenderable implements IRenderable { public var size:Number; public var renderScale:Number; public var vertex3D:Vertex3D; public var renderRect:Rectangle; public var rotationZ:Number;// = 0 public var drawMatrix:Matrix; public var material:ParticleMaterial; public var renderCommand:RenderParticle; public function Particle(_arg1:ParticleMaterial, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ rotationZ = 0; super(); this.material = _arg1; this.size = _arg2; this.renderCommand = new RenderParticle(this); this.renderRect = new Rectangle(); vertex3D = new Vertex3D(_arg3, _arg4, _arg5); drawMatrix = new Matrix(); } public function get y():Number{ return (vertex3D.y); } public function updateRenderRect():void{ material.updateRenderRect(this); } public function set z(_arg1:Number):void{ vertex3D.z = _arg1; } public function set x(_arg1:Number):void{ vertex3D.x = _arg1; } public function set y(_arg1:Number):void{ vertex3D.y = _arg1; } public function get z():Number{ return (vertex3D.z); } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } public function get x():Number{ return (vertex3D.x); } } }//package org.papervision3d.core.geom.renderables
Section 263
//Triangle3D (org.papervision3d.core.geom.renderables.Triangle3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.materials.special.*; public class Triangle3D extends AbstractRenderable implements IRenderable { public var vertices:Array; public var v1:Vertex3D; public var _uvArray:Array; public var visible:Boolean; public var id:Number; public var material:MaterialObject3D; public var renderCommand:RenderTriangle; public var screenZ:Number; public var uv0:NumberUV; public var uv1:NumberUV; public var uv2:NumberUV; public var faceNormal:Number3D; public var _materialName:String; public var v0:Vertex3D; public var v2:Vertex3D; private static var _totalFaces:Number = 0; public function Triangle3D(_arg1:DisplayObject3D, _arg2:Array, _arg3:MaterialObject3D=null, _arg4:Array=null){ this.instance = _arg1; faceNormal = new Number3D(); if (((_arg2) && ((_arg2.length == 3)))){ this.vertices = _arg2; v0 = _arg2[0]; v1 = _arg2[1]; v2 = _arg2[2]; createNormal(); } else { _arg2 = new Array(); v0 = (_arg2[0] = new Vertex3D()); v1 = (_arg2[1] = new Vertex3D()); v2 = (_arg2[2] = new Vertex3D()); }; this.material = _arg3; this.uv = _arg4; this.id = _totalFaces++; this.renderCommand = new RenderTriangle(this); } public function createNormal():void{ var _local1:Number3D; var _local2:Number3D; var _local3:Number3D; _local1 = v0.getPosition(); _local2 = v1.getPosition(); _local3 = v2.getPosition(); _local2.minusEq(_local1); _local3.minusEq(_local1); faceNormal = Number3D.cross(_local2, _local3, faceNormal); faceNormal.normalize(); } public function set uv(_arg1:Array):void{ if (((_arg1) && ((_arg1.length == 3)))){ uv0 = NumberUV(_arg1[0]); uv1 = NumberUV(_arg1[1]); uv2 = NumberUV(_arg1[2]); }; _uvArray = _arg1; } public function reset(_arg1:DisplayObject3D, _arg2:Array, _arg3:MaterialObject3D, _arg4:Array):void{ var _local5:MaterialObject3D; this.instance = _arg1; this.renderCommand.instance = _arg1; this.renderCommand.renderer = _arg3; this.vertices = _arg2; updateVertices(); this.material = _arg3; this.uv = _arg4; if ((_arg3 is BitmapMaterial)){ BitmapMaterial(_arg3).uvMatrices[this.renderCommand] = null; }; if ((_arg3 is CompositeMaterial)){ for each (_local5 in CompositeMaterial(_arg3).materials) { if ((_local5 is BitmapMaterial)){ BitmapMaterial(_local5).uvMatrices[this.renderCommand] = null; }; }; }; } public function get uv():Array{ return (_uvArray); } public function updateVertices():void{ v0 = vertices[0]; v1 = vertices[1]; v2 = vertices[2]; } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 264
//Triangle3DInstance (org.papervision3d.core.geom.renderables.Triangle3DInstance) package org.papervision3d.core.geom.renderables { import flash.display.*; import org.papervision3d.core.math.*; import org.papervision3d.objects.*; public class Triangle3DInstance { public var container:Sprite; public var faceNormal:Number3D; public var screenZ:Number; public var visible:Boolean;// = false public var instance:DisplayObject3D; public function Triangle3DInstance(_arg1:Triangle3D, _arg2:DisplayObject3D){ visible = false; super(); this.instance = _arg2; faceNormal = new Number3D(); } } }//package org.papervision3d.core.geom.renderables
Section 265
//Vertex3D (org.papervision3d.core.geom.renderables.Vertex3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; import org.papervision3d.core.render.command.*; import flash.utils.*; public class Vertex3D extends AbstractRenderable implements IRenderable { private var persp:Number;// = 0 public var vertex3DInstance:Vertex3DInstance; public var extra:Object; public var timestamp:Number; public var normal:Number3D; protected var position:Number3D; public var connectedFaces:Dictionary; public var x:Number; public var y:Number; public var z:Number; public function Vertex3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ persp = 0; position = new Number3D(); super(); this.x = (position.x = _arg1); this.y = (position.y = _arg2); this.z = (position.z = _arg3); this.vertex3DInstance = new Vertex3DInstance(); this.normal = new Number3D(); this.connectedFaces = new Dictionary(); } public function perspective(_arg1:Number):Vertex3DInstance{ persp = (1 / (1 + (z / _arg1))); return (new Vertex3DInstance((x * persp), (y * persp), z)); } public function clone():Vertex3D{ var _local1:Vertex3D; _local1 = new Vertex3D(x, y, z); _local1.extra = extra; _local1.vertex3DInstance = vertex3DInstance.clone(); _local1.normal = normal.clone(); return (_local1); } public function getPosition():Number3D{ position.x = x; position.y = y; position.z = z; return (position); } public function toNumber3D():Number3D{ return (new Number3D(x, y, z)); } public function calculateNormal():void{ var _local1:Triangle3D; var _local2:Number; var _local3:Number3D; _local2 = 0; normal.reset(); for each (_local1 in connectedFaces) { if (_local1.faceNormal){ _local2++; normal.plusEq(_local1.faceNormal); }; }; _local3 = getPosition(); _local3.x = (_local3.x / _local2); _local3.y = (_local3.y / _local2); _local3.z = (_local3.z / _local2); _local3.normalize(); normal.plusEq(_local3); normal.normalize(); } override public function getRenderListItem():IRenderListItem{ return (null); } 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 org.papervision3d.core.geom.renderables
Section 266
//Vertex3DInstance (org.papervision3d.core.geom.renderables.Vertex3DInstance) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; public class Vertex3DInstance { private var persp:Number;// = 0 public var visible:Boolean; public var normal:Number3D; public var extra:Object; public var x:Number; public var y:Number; public var z:Number; public function Vertex3DInstance(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ persp = 0; super(); this.x = _arg1; this.y = _arg2; this.z = _arg3; this.visible = false; this.normal = new Number3D(); } public function deperspective(_arg1:Number):Vertex3D{ persp = (1 + (z / _arg1)); return (new Vertex3D((x * persp), (y * persp), z)); } public function distance(_arg1:Vertex3DInstance):Number{ return (Math.sqrt((((x - _arg1.x) * (x - _arg1.x)) + ((y - _arg1.y) * (y - _arg1.y))))); } public function clone():Vertex3DInstance{ var _local1:Vertex3DInstance; _local1 = new Vertex3DInstance(x, y, z); _local1.visible = visible; _local1.extra = extra; return (_local1); } public function distanceSqr(_arg1:Vertex3DInstance):Number{ return ((((x - _arg1.x) * (x - _arg1.x)) + ((y - _arg1.y) * (y - _arg1.y)))); } public static function cross(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.y) - (_arg2.x * _arg1.y))); } public static function dot(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function subTo(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance):void{ _arg3.x = (_arg2.x - _arg1.x); _arg3.y = (_arg2.y - _arg1.y); } public static function median(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Number):Vertex3DInstance{ 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 Vertex3DInstance((((_arg1.x * _local5) + (_arg2.x * _local6)) * _local7), (((_arg1.y * _local5) + (_arg2.y * _local6)) * _local7), _local4)); } public static function sub(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Vertex3DInstance{ return (new Vertex3DInstance((_arg2.x - _arg1.x), (_arg2.y - _arg1.y))); } } }//package org.papervision3d.core.geom.renderables
Section 267
//Lines3D (org.papervision3d.core.geom.Lines3D) package org.papervision3d.core.geom { import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.log.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.render.draw.*; public class Lines3D extends Vertices3D { public var lines:Array; private var _material:ILineDrawer; public function Lines3D(_arg1:LineMaterial=null, _arg2:String=null){ super(null, _arg2); if (!_arg1){ this.material = new LineMaterial(); } else { this.material = _arg1; }; init(); } private function init():void{ this.lines = new Array(); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Line3D; var _local4:Number; var _local5:RenderLine; super.project(_arg1, _arg2); for each (_local3 in lines) { if (_arg2.viewPort.lineCuller.testLine(_local3)){ _local5 = _local3.renderCommand; _local5.renderer = _local3.material; _local5.size = _local3.size; _local4 = (_local4 + (_local5.screenZ = ((_local3.v0.vertex3DInstance.z + _local3.v1.vertex3DInstance.z) / 2))); _local5.v0 = _local3.v0.vertex3DInstance; _local5.v1 = _local3.v1.vertex3DInstance; _arg2.renderer.addToRenderList(_local5); }; }; return ((_local4 / (lines.length + 1))); } public function addNewSegmentedLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):Array{ var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Array; var _local13:Line3D; var _local14:Vertex3D; var _local15:Vertex3D; var _local16:Number; _local9 = ((_arg6 - _arg3) / _arg2); _local10 = ((_arg7 - _arg4) / _arg2); _local11 = ((_arg8 - _arg5) / _arg2); _local12 = new Array(); _local14 = new Vertex3D(_arg3, _arg4, _arg5); _local16 = 0; while (_local16 <= _arg2) { _local15 = new Vertex3D((_arg3 + (_local9 * _local16)), (_arg4 + (_local10 * _local16)), (_arg5 + (_local11 * _local16))); _local13 = new Line3D(this, (material as LineMaterial), _arg1, _local14, _local15); addLine(_local13); _local12.push(_local13); _local14 = _local15; _local16++; }; return (_local12); } public function addLine(_arg1:Line3D):void{ lines.push(_arg1); _arg1.instance = this; if (geometry.vertices.indexOf(_arg1.v0) == -1){ geometry.vertices.push(_arg1.v0); }; if (geometry.vertices.indexOf(_arg1.v1) == -1){ geometry.vertices.push(_arg1.v1); }; if (_arg1.cV){ if (geometry.vertices.indexOf(_arg1.cV) == -1){ geometry.vertices.push(_arg1.cV); }; }; } public function removeAllLines():void{ while (lines.length > 0) { removeLine(lines[0]); }; } public function removeLine(_arg1:Line3D):void{ var _local2:int; _local2 = lines.indexOf(_arg1); if (_local2 > -1){ lines.splice(_local2, 1); } else { PaperLogger.warning("Papervision3D Lines3D.removeLine : WARNING removal of non-existant line attempted. "); }; } public function addNewLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Line3D{ var _local8:Line3D; _local8 = new Line3D(this, (material as LineMaterial), _arg1, new Vertex3D(_arg2, _arg3, _arg4), new Vertex3D(_arg5, _arg6, _arg7)); addLine(_local8); return (_local8); } } }//package org.papervision3d.core.geom
Section 268
//TriangleMesh3D (org.papervision3d.core.geom.TriangleMesh3D) package org.papervision3d.core.geom { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import flash.utils.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.draw.*; public class TriangleMesh3D extends Vertices3D { private var _dtStore:Array; private var _dtActive:Array; private var _tri:RenderTriangle; public function TriangleMesh3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null){ _dtStore = new Array(); _dtActive = new Array(); super(_arg2, _arg4); this.geometry.faces = ((_arg3) || (new Array())); this.material = ((_arg1) || (MaterialObject3D.DEFAULT)); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:int; var _local4:Array; var _local5:Triangle3D; var _local6:Array; var _local7:Number; var _local8:Number; var _local9:ITriangleCuller; var _local10:Vertex3DInstance; var _local11:Vertex3DInstance; var _local12:Vertex3DInstance; var _local13:Triangle3DInstance; var _local14:Triangle3D; var _local15:MaterialObject3D; var _local16:RenderTriangle; _dtStore = []; _dtActive = new Array(); _local3 = this.geometry.vertices.length; _local4 = []; if (((((((_arg2.clipping) && (this.useClipping))) && (!(this.culled)))) && ((_arg2.camera.useCulling) ? (cullTest == 0) : true))){ super.projectEmpty(_arg1, _arg2); _arg2.clipping.setDisplayObject(this, _arg2); for each (_local5 in this.geometry.faces) { if (_arg2.clipping.testFace(_local5, this, _arg2)){ _arg2.clipping.clipFace(_local5, this, _local15, _arg2, _local4); } else { _local4.push(_local5); }; }; super.project(_arg1, _arg2); _arg2.camera.projectFaces(_local4, this, _arg2); } else { super.project(_arg1, _arg2); _local4 = this.geometry.faces; }; if (!this.culled){ _local6 = this.geometry.faces; _local7 = 0; _local8 = 0; _local9 = _arg2.triangleCuller; for each (_local14 in _local4) { _local15 = (_local14.material) ? _local14.material : material; _local10 = _local14.v0.vertex3DInstance; _local11 = _local14.v1.vertex3DInstance; _local12 = _local14.v2.vertex3DInstance; if (_local9.testFace(_local14, _local10, _local11, _local12)){ _local16 = _local14.renderCommand; _local7 = (_local7 + (_local16.screenZ = setScreenZ(meshSort, _local10, _local11, _local12))); _local8++; _local16.renderer = (_local15 as ITriangleDrawer); _local16.v0 = _local10; _local16.v1 = _local11; _local16.v2 = _local12; _local16.uv0 = _local14.uv0; _local16.uv1 = _local14.uv1; _local16.uv2 = _local14.uv2; if (_arg2.quadrantTree){ if (_local16.create == null){ _local16.create = createRenderTriangle; }; _local16.update(); if ((((_local16.area < 0)) && (((_local14.material.doubleSided) || (((_local14.material.oneSide) && (_local14.material.opposite))))))){ _local16.area = -(_local16.area); }; }; _arg2.renderer.addToRenderList(_local16); } else { _arg2.renderStatistics.culledTriangles++; }; }; if (_local3){ while (this.geometry.vertices.length > _local3) { this.geometry.vertices.pop(); }; }; return ((this.screenZ = (_local7 / _local8))); } else { _arg2.renderStatistics.culledObjects++; }; return (0); } override public function set material(_arg1:MaterialObject3D):void{ var _local2:Triangle3D; super.material = _arg1; for each (_local2 in geometry.faces) { _local2.material = _arg1; }; } public function mergeVertices():void{ var _local1:Dictionary; var _local2:Array; var _local3:Vertex3D; var _local4:Triangle3D; var _local5:Vertex3D; _local1 = new Dictionary(); _local2 = new Array(); for each (_local3 in this.geometry.vertices) { for each (_local5 in _local1) { if ((((((_local3.x == _local5.x)) && ((_local3.y == _local5.y)))) && ((_local3.z == _local5.z)))){ _local1[_local3] = _local5; break; }; }; if (!_local1[_local3]){ _local1[_local3] = _local3; _local2.push(_local3); }; }; this.geometry.vertices = _local2; for each (_local4 in geometry.faces) { _local4.v0 = (_local4.vertices[0] = _local1[_local4.v0]); _local4.v1 = (_local4.vertices[1] = _local1[_local4.v1]); _local4.v2 = (_local4.vertices[2] = _local1[_local4.v2]); }; } public function quarterFaces():void{ var _local1:Array; var _local2:Array; var _local3:Array; var _local4:Triangle3D; var _local5:int; var _local6:Vertex3D; var _local7:Vertex3D; var _local8:Vertex3D; var _local9:Vertex3D; var _local10:Vertex3D; var _local11:Vertex3D; var _local12:NumberUV; var _local13:NumberUV; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:NumberUV; var _local18:Triangle3D; var _local19:Triangle3D; var _local20:Triangle3D; var _local21:Triangle3D; _local1 = new Array(); _local2 = new Array(); _local3 = this.geometry.faces; _local5 = _local3.length; while ((_local4 = _local3[--_local5])) { _local6 = _local4.v0; _local7 = _local4.v1; _local8 = _local4.v2; _local9 = new Vertex3D(((_local6.x + _local7.x) / 2), ((_local6.y + _local7.y) / 2), ((_local6.z + _local7.z) / 2)); _local10 = new Vertex3D(((_local7.x + _local8.x) / 2), ((_local7.y + _local8.y) / 2), ((_local7.z + _local8.z) / 2)); _local11 = new Vertex3D(((_local8.x + _local6.x) / 2), ((_local8.y + _local6.y) / 2), ((_local8.z + _local6.z) / 2)); this.geometry.vertices.push(_local9, _local10, _local11); _local12 = _local4.uv[0]; _local13 = _local4.uv[1]; _local14 = _local4.uv[2]; _local15 = new NumberUV(((_local12.u + _local13.u) / 2), ((_local12.v + _local13.v) / 2)); _local16 = new NumberUV(((_local13.u + _local14.u) / 2), ((_local13.v + _local14.v) / 2)); _local17 = new NumberUV(((_local14.u + _local12.u) / 2), ((_local14.v + _local12.v) / 2)); _local18 = new Triangle3D(this, [_local6, _local9, _local11], _local4.material, [_local12, _local15, _local17]); _local19 = new Triangle3D(this, [_local9, _local7, _local10], _local4.material, [_local15, _local13, _local16]); _local20 = new Triangle3D(this, [_local11, _local10, _local8], _local4.material, [_local17, _local16, _local14]); _local21 = new Triangle3D(this, [_local9, _local10, _local11], _local4.material, [_local15, _local16, _local17]); _local2.push(_local18, _local19, _local20, _local21); }; this.geometry.faces = _local2; this.mergeVertices(); this.geometry.ready = true; } override public function clone():DisplayObject3D{ var _local1:DisplayObject3D; var _local2:TriangleMesh3D; _local1 = super.clone(); _local2 = new TriangleMesh3D(this.material, [], [], _local1.name); if (this.materials){ _local2.materials = this.materials.clone(); }; if (_local1.geometry){ _local2.geometry = _local1.geometry.clone(_local2); }; _local2.copyTransform(this.transform); return (_local2); } protected function setScreenZ(_arg1:uint, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Number{ switch (_arg1){ case DisplayObject3D.MESH_SORT_CENTER: return ((((_arg2.z + _arg3.z) + _arg4.z) / 3)); case DisplayObject3D.MESH_SORT_FAR: return (Math.max(_arg2.z, _arg3.z, _arg4.z)); case DisplayObject3D.MESH_SORT_CLOSE: return (Math.min(_arg2.z, _arg3.z, _arg4.z)); }; return (0); } public function projectTexture(_arg1:String="x", _arg2:String="y"):void{ var _local3:Array; var _local4:Object; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:MaterialObject3D; var _local10:String; var _local11:Triangle3D; var _local12:Array; var _local13:Vertex3D; var _local14:Vertex3D; var _local15:Vertex3D; var _local16:NumberUV; var _local17:NumberUV; var _local18:NumberUV; _local3 = this.geometry.faces; _local4 = this.boundingBox(); _local5 = _local4.min[_arg1]; _local6 = _local4.size[_arg1]; _local7 = _local4.min[_arg2]; _local8 = _local4.size[_arg2]; _local9 = this.material; for (_local10 in _local3) { _local11 = _local3[Number(_local10)]; _local12 = _local11.vertices; _local13 = _local12[0]; _local14 = _local12[1]; _local15 = _local12[2]; _local16 = new NumberUV(((_local13[_arg1] - _local5) / _local6), ((_local13[_arg2] - _local7) / _local8)); _local17 = new NumberUV(((_local14[_arg1] - _local5) / _local6), ((_local14[_arg2] - _local7) / _local8)); _local18 = new NumberUV(((_local15[_arg1] - _local5) / _local6), ((_local15[_arg2] - _local7) / _local8)); _local11.uv = [_local16, _local17, _local18]; }; } public function createRenderTriangle(_arg1:Triangle3D, _arg2:MaterialObject3D, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance, _arg5:Vertex3DInstance, _arg6:NumberUV, _arg7:NumberUV, _arg8:NumberUV):RenderTriangle{ if (_dtStore.length){ _dtActive.push((_tri = _dtStore.pop())); } else { _dtActive.push((_tri = new RenderTriangle(_arg1))); }; _tri.instance = this; _tri.triangle = _arg1; _tri.renderableInstance = _arg1; _tri.renderer = _arg2; _tri.create = createRenderTriangle; _tri.v0 = _arg3; _tri.v1 = _arg4; _tri.v2 = _arg5; _tri.uv0 = _arg6; _tri.uv1 = _arg7; _tri.uv2 = _arg8; _tri.update(); return (_tri); } } }//package org.papervision3d.core.geom
Section 269
//Vertices3D (org.papervision3d.core.geom.Vertices3D) package org.papervision3d.core.geom { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.culling.*; public class Vertices3D extends DisplayObject3D { public function Vertices3D(_arg1:Array, _arg2:String=null){ super(_arg2, new GeometryObject3D()); this.geometry.vertices = ((_arg1) || (new Array())); } public function projectFrustum(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ return (0); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ super.project(_arg1, _arg2); if (this.culled){ return (0); }; if ((_arg2.camera is IObjectCuller)){ return (projectFrustum(_arg1, _arg2)); }; if (((!(this.geometry)) || (!(this.geometry.vertices)))){ return (0); }; return (_arg2.camera.projectVertices(this.geometry.vertices, this, _arg2)); } override public function clone():DisplayObject3D{ var _local1:DisplayObject3D; var _local2:Vertices3D; _local1 = super.clone(); _local2 = new Vertices3D(null, _local1.name); _local2.material = _local1.material; if (_local1.materials){ _local2.materials = _local1.materials.clone(); }; if (this.geometry){ _local2.geometry = this.geometry.clone(_local2); }; _local2.copyTransform(this.transform); return (_local2); } public function transformVertices(_arg1:Matrix3D):void{ geometry.transformVertices(_arg1); } public function boundingBox():Object{ var _local1:Array; var _local2:Object; var _local3:Vertex3D; _local1 = this.geometry.vertices; _local2 = new Object(); _local2.min = new Number3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE); _local2.max = new Number3D(-(Number.MAX_VALUE), -(Number.MAX_VALUE), -(Number.MAX_VALUE)); _local2.size = new Number3D(); for each (_local3 in _local1) { _local2.min.x = Math.min(_local3.x, _local2.min.x); _local2.min.y = Math.min(_local3.y, _local2.min.y); _local2.min.z = Math.min(_local3.z, _local2.min.z); _local2.max.x = Math.max(_local3.x, _local2.max.x); _local2.max.y = Math.max(_local3.y, _local2.max.y); _local2.max.z = Math.max(_local3.z, _local2.max.z); }; _local2.size.x = (_local2.max.x - _local2.min.x); _local2.size.y = (_local2.max.y - _local2.min.y); _local2.size.z = (_local2.max.z - _local2.min.z); return (_local2); } public function worldBoundingBox():Object{ var _local1:Array; var _local2:Object; var _local3:Number3D; var _local4:Vertex3D; _local1 = this.geometry.vertices; _local2 = new Object(); _local2.min = new Number3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE); _local2.max = new Number3D(-(Number.MAX_VALUE), -(Number.MAX_VALUE), -(Number.MAX_VALUE)); _local2.size = new Number3D(); for each (_local4 in _local1) { _local3 = _local4.getPosition(); Matrix3D.multiplyVector(this.world, _local3); _local2.min.x = Math.min(_local3.x, _local2.min.x); _local2.min.y = Math.min(_local3.y, _local2.min.y); _local2.min.z = Math.min(_local3.z, _local2.min.z); _local2.max.x = Math.max(_local3.x, _local2.max.x); _local2.max.y = Math.max(_local3.y, _local2.max.y); _local2.max.z = Math.max(_local3.z, _local2.max.z); }; _local2.size.x = (_local2.max.x - _local2.min.x); _local2.size.y = (_local2.max.y - _local2.min.y); _local2.size.z = (_local2.max.z - _local2.min.z); return (_local2); } public function projectEmpty(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ return (super.project(_arg1, _arg2)); } } }//package org.papervision3d.core.geom
Section 270
//PaperLoggerEvent (org.papervision3d.core.log.event.PaperLoggerEvent) package org.papervision3d.core.log.event { import flash.events.*; import org.papervision3d.core.log.*; public class PaperLoggerEvent extends Event { public var paperLogVO:PaperLogVO; public static const TYPE_LOGEVENT:String = "logEvent"; public function PaperLoggerEvent(_arg1:PaperLogVO){ super(TYPE_LOGEVENT); this.paperLogVO = _arg1; } } }//package org.papervision3d.core.log.event
Section 271
//AbstractPaperLogger (org.papervision3d.core.log.AbstractPaperLogger) package org.papervision3d.core.log { import org.papervision3d.core.log.event.*; public class AbstractPaperLogger implements IPaperLogger { public function registerWithPaperLogger(_arg1:PaperLogger):void{ _arg1.addEventListener(PaperLoggerEvent.TYPE_LOGEVENT, onLogEvent); } public function debug(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } public function log(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } public function fatal(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } public function error(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } protected function onLogEvent(_arg1:PaperLoggerEvent):void{ var _local2:PaperLogVO; _local2 = _arg1.paperLogVO; switch (_local2.level){ case LogLevel.LOG: log(_local2.msg, _local2.object, _local2.arg); break; case LogLevel.INFO: info(_local2.msg, _local2.object, _local2.arg); break; case LogLevel.ERROR: error(_local2.msg, _local2.object, _local2.arg); break; case LogLevel.DEBUG: debug(_local2.msg, _local2.object, _local2.arg); break; case LogLevel.WARNING: warning(_local2.msg, _local2.object, _local2.arg); break; case LogLevel.FATAL: fatal(_local2.msg, _local2.object, _local2.arg); break; default: log(_local2.msg, _local2.object, _local2.arg); break; }; } public function unregisterFromPaperLogger(_arg1:PaperLogger):void{ _arg1.removeEventListener(PaperLoggerEvent.TYPE_LOGEVENT, onLogEvent); } public function warning(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } public function info(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ } } }//package org.papervision3d.core.log
Section 272
//IPaperLogger (org.papervision3d.core.log.IPaperLogger) package org.papervision3d.core.log { public interface IPaperLogger { function debug(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; function log(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; function error(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; function fatal(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; function warning(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; function info(_arg1:String, _arg2:Object=null, _arg3:Array=null):void; } }//package org.papervision3d.core.log
Section 273
//LogLevel (org.papervision3d.core.log.LogLevel) package org.papervision3d.core.log { public class LogLevel { public static const FATAL:int = 5; public static const ERROR:int = 4; public static const LOG:int = 0; public static const INFO:int = 1; public static const DEBUG:int = 2; public static const WARNING:int = 3; } }//package org.papervision3d.core.log
Section 274
//PaperLogger (org.papervision3d.core.log.PaperLogger) package org.papervision3d.core.log { import flash.events.*; import org.papervision3d.core.log.event.*; public class PaperLogger extends EventDispatcher { public var traceLogger:PaperTraceLogger; private static var instance:PaperLogger; public function PaperLogger(){ if (instance){ throw (new Error("Don't call the PaperLogger constructor directly")); }; traceLogger = new PaperTraceLogger(); registerLogger(traceLogger); } public function registerLogger(_arg1:AbstractPaperLogger):void{ _arg1.registerWithPaperLogger(this); } public function _debug(_arg1:String, _arg2:Object=null, ... _args):void{ var _local4:PaperLogVO; var _local5:PaperLoggerEvent; _local4 = new PaperLogVO(LogLevel.DEBUG, _arg1, _arg2, _args); _local5 = new PaperLoggerEvent(_local4); dispatchEvent(_local5); } public function _warning(_arg1:String, _arg2:Object=null, ... _args):void{ var _local4:PaperLogVO; var _local5:PaperLoggerEvent; _local4 = new PaperLogVO(LogLevel.WARNING, _arg1, _arg2, _args); _local5 = new PaperLoggerEvent(_local4); dispatchEvent(_local5); } public function _error(_arg1:String, _arg2:Object=null, ... _args):void{ var _local4:PaperLogVO; var _local5:PaperLoggerEvent; _local4 = new PaperLogVO(LogLevel.ERROR, _arg1, _arg2, _args); _local5 = new PaperLoggerEvent(_local4); dispatchEvent(_local5); } public function unregisterLogger(_arg1:AbstractPaperLogger):void{ _arg1.unregisterFromPaperLogger(this); } public function _info(_arg1:String, _arg2:Object=null, ... _args):void{ var _local4:PaperLogVO; var _local5:PaperLoggerEvent; _local4 = new PaperLogVO(LogLevel.INFO, _arg1, _arg2, _args); _local5 = new PaperLoggerEvent(_local4); dispatchEvent(_local5); } public function _log(_arg1:String, _arg2:Object=null, ... _args):void{ var _local4:PaperLogVO; var _local5:PaperLoggerEvent; _local4 = new PaperLogVO(LogLevel.LOG, _arg1, _arg2, _args); _local5 = new PaperLoggerEvent(_local4); dispatchEvent(_local5); } public static function debug(_arg1:String, _arg2:Object=null, ... _args):void{ getInstance()._debug(_arg1); } public static function log(_arg1:String, _arg2:Object=null, ... _args):void{ getInstance()._log(_arg1); } public static function error(_arg1:String, _arg2:Object=null, ... _args):void{ getInstance()._error(_arg1); } public static function getInstance():PaperLogger{ if (!instance){ instance = new (PaperLogger); }; return (instance); } public static function warning(_arg1:String, _arg2:Object=null, ... _args):void{ getInstance()._warning(_arg1); } public static function info(_arg1:String, _arg2:Object=null, ... _args):void{ getInstance()._info(_arg1); } } }//package org.papervision3d.core.log
Section 275
//PaperLogVO (org.papervision3d.core.log.PaperLogVO) package org.papervision3d.core.log { public class PaperLogVO { public var msg:String; public var level:int; public var arg:Array; public var object:Object; public function PaperLogVO(_arg1:int, _arg2:String, _arg3:Object, _arg4:Array){ this.level = _arg1; this.msg = _arg2; this.object = _arg3; this.arg = _arg4; } } }//package org.papervision3d.core.log
Section 276
//PaperTraceLogger (org.papervision3d.core.log.PaperTraceLogger) package org.papervision3d.core.log { public class PaperTraceLogger extends AbstractPaperLogger implements IPaperLogger { override public function fatal(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("FATAL:", _arg1, _arg3); } override public function error(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("ERROR:", _arg1, _arg3); } override public function debug(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("DEBUG:", _arg1, _arg3); } override public function warning(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("WARNING:", _arg1, _arg3); } override public function log(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("LOG:", _arg1, _arg3); } override public function info(_arg1:String, _arg2:Object=null, _arg3:Array=null):void{ trace("INFO:", _arg1, _arg3); } } }//package org.papervision3d.core.log
Section 277
//AbstractLightShadeMaterial (org.papervision3d.core.material.AbstractLightShadeMaterial) package org.papervision3d.core.material { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.material.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class AbstractLightShadeMaterial extends TriangleMaterial implements ITriangleDrawer, IUpdateBeforeMaterial { public var lightMatrices:Dictionary; private var _light:LightObject3D; protected static var lightMatrix:Matrix3D; public function AbstractLightShadeMaterial(){ init(); } public function get light():LightObject3D{ return (_light); } protected function init():void{ lightMatrices = new Dictionary(); } public function set light(_arg1:LightObject3D):void{ _light = _arg1; } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:Object; var _local3:DisplayObject3D; for (_local2 in objects) { _local3 = (_local2 as DisplayObject3D); lightMatrices[_local2] = LightMatrix.getLightMatrix(light, _local3, _arg1, lightMatrices[_local2]); }; } } }//package org.papervision3d.core.material
Section 278
//TriangleMaterial (org.papervision3d.core.material.TriangleMaterial) package org.papervision3d.core.material { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; public class TriangleMaterial extends MaterialObject3D implements ITriangleDrawer { override public function drawRT(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData):void{ } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } } }//package org.papervision3d.core.material
Section 279
//FastRectangleTools (org.papervision3d.core.math.util.FastRectangleTools) package org.papervision3d.core.math.util { import flash.geom.*; public class FastRectangleTools { public static function intersection(_arg1:Rectangle, _arg2:Rectangle, _arg3:Rectangle=null):Rectangle{ if (!_arg3){ _arg3 = new Rectangle(); }; if (!intersects(_arg1, _arg2)){ _arg3.x = (_arg3.y = (_arg3.width = (_arg3.height = 0))); return (_arg3); }; _arg3.left = ((_arg1.left)>_arg2.left) ? _arg1.left : _arg2.left; _arg3.right = ((_arg1.right)<_arg2.right) ? _arg1.right : _arg2.right; _arg3.top = ((_arg1.top)>_arg2.top) ? _arg1.top : _arg2.top; _arg3.bottom = ((_arg1.bottom)<_arg2.bottom) ? _arg1.bottom : _arg2.bottom; return (_arg3); } public static function intersects(_arg1:Rectangle, _arg2:Rectangle):Boolean{ if (!(((_arg1.right < _arg2.left)) || ((_arg1.left > _arg2.right)))){ if (!(((_arg1.bottom < _arg2.top)) || ((_arg1.top > _arg2.bottom)))){ return (true); }; }; return (false); } } }//package org.papervision3d.core.math.util
Section 280
//AxisAlignedBoundingBox (org.papervision3d.core.math.AxisAlignedBoundingBox) package org.papervision3d.core.math { import org.papervision3d.core.geom.renderables.*; public class AxisAlignedBoundingBox { public var minX:Number; public var minY:Number; public var minZ:Number; public var maxX:Number; public var maxY:Number; protected var _vertices:Array; public var maxZ:Number; public function AxisAlignedBoundingBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){ this.minX = _arg1; this.minY = _arg2; this.minZ = _arg3; this.maxX = _arg4; this.maxY = _arg5; this.maxZ = _arg6; createBoxVertices(); } protected function createBoxVertices():void{ _vertices = new Array(); _vertices.push(new Vertex3D(minX, minY, minZ)); _vertices.push(new Vertex3D(minX, minY, maxZ)); _vertices.push(new Vertex3D(minX, maxY, minZ)); _vertices.push(new Vertex3D(minX, maxY, maxZ)); _vertices.push(new Vertex3D(maxX, minY, minZ)); _vertices.push(new Vertex3D(maxX, minY, maxZ)); _vertices.push(new Vertex3D(maxX, maxY, minZ)); _vertices.push(new Vertex3D(maxX, maxY, maxZ)); } public function getBoxVertices():Array{ return (_vertices); } public function merge(_arg1:AxisAlignedBoundingBox):void{ this.minX = Math.min(this.minX, _arg1.minX); this.minY = Math.min(this.minY, _arg1.minY); this.minZ = Math.min(this.minZ, _arg1.minZ); this.maxX = Math.max(this.maxX, _arg1.maxX); this.maxY = Math.max(this.maxY, _arg1.maxY); this.maxZ = Math.max(this.maxZ, _arg1.maxZ); createBoxVertices(); } public static function createFromVertices(_arg1:Array):AxisAlignedBoundingBox{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Vertex3D; _local2 = Number.MAX_VALUE; _local3 = Number.MAX_VALUE; _local4 = Number.MAX_VALUE; _local5 = -(_local2); _local6 = -(_local3); _local7 = -(_local4); for each (_local8 in _arg1) { _local2 = Math.min(_local2, _local8.x); _local3 = Math.min(_local3, _local8.y); _local4 = Math.min(_local4, _local8.z); _local5 = Math.max(_local5, _local8.x); _local6 = Math.max(_local6, _local8.y); _local7 = Math.max(_local7, _local8.z); }; return (new AxisAlignedBoundingBox(_local2, _local3, _local4, _local5, _local6, _local7)); } } }//package org.papervision3d.core.math
Section 281
//BoundingSphere (org.papervision3d.core.math.BoundingSphere) package org.papervision3d.core.math { import org.papervision3d.core.geom.renderables.*; public class BoundingSphere { public var maxDistance:Number; public var radius:Number; public function BoundingSphere(_arg1:Number){ this.maxDistance = _arg1; this.radius = Math.sqrt(_arg1); } public static function getFromVertices(_arg1:Array):BoundingSphere{ var _local2:Number; var _local3:Number; var _local4:Vertex3D; _local2 = 0; for each (_local4 in _arg1) { _local3 = (((_local4.x * _local4.x) + (_local4.y * _local4.y)) + (_local4.z * _local4.z)); _local2 = ((_local3)>_local2) ? _local3 : _local2; }; return (new BoundingSphere(_local2)); } } }//package org.papervision3d.core.math
Section 282
//Matrix3D (org.papervision3d.core.math.Matrix3D) package org.papervision3d.core.math { import org.papervision3d.*; 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 n42:Number; public var n21:Number; public var n22:Number; public var n23:Number; public var n24:Number; public var n34:Number; public var n41:Number; public var n43:Number; public var n44:Number; private static var _cos:Function = Math.cos; private static var _sin:Function = Math.sin; private static var temp:Matrix3D = Matrix3D.IDENTITY; private static var n3Di:Number3D = Number3D.ZERO; private static var n3Dj:Number3D = Number3D.ZERO; private static var n3Dk:Number3D = Number3D.ZERO; private static var toDEGREES:Number = (180 / Math.PI); private static var toRADIANS:Number = (Math.PI / 180); public function Matrix3D(_arg1:Array=null){ reset(_arg1); } public function calculateSkewSymmetric(_arg1:Number3D):void{ this.n11 = 0; this.n12 = -(_arg1.z); this.n13 = _arg1.y; this.n21 = _arg1.z; this.n22 = 0; this.n23 = -(_arg1.x); this.n31 = -(_arg1.y); this.n32 = _arg1.x; this.n33 = 0; } public function calculateMultiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); } public function calculateMultiply4x4(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n41; _local10 = _arg2.n41; _local11 = _arg1.n12; _local12 = _arg2.n12; _local13 = _arg1.n22; _local14 = _arg2.n22; _local15 = _arg1.n32; _local16 = _arg2.n32; _local17 = _arg1.n42; _local18 = _arg2.n42; _local19 = _arg1.n13; _local20 = _arg2.n13; _local21 = _arg1.n23; _local22 = _arg2.n23; _local23 = _arg1.n33; _local24 = _arg2.n33; _local25 = _arg1.n43; _local26 = _arg2.n43; _local27 = _arg1.n14; _local28 = _arg2.n14; _local29 = _arg1.n24; _local30 = _arg2.n24; _local31 = _arg1.n34; _local32 = _arg2.n34; _local33 = _arg1.n44; _local34 = _arg2.n44; this.n11 = (((_local3 * _local4) + (_local11 * _local6)) + (_local19 * _local8)); this.n12 = (((_local3 * _local12) + (_local11 * _local14)) + (_local19 * _local16)); this.n13 = (((_local3 * _local20) + (_local11 * _local22)) + (_local19 * _local24)); this.n14 = ((((_local3 * _local28) + (_local11 * _local30)) + (_local19 * _local32)) + _local27); this.n21 = (((_local5 * _local4) + (_local13 * _local6)) + (_local21 * _local8)); this.n22 = (((_local5 * _local12) + (_local13 * _local14)) + (_local21 * _local16)); this.n23 = (((_local5 * _local20) + (_local13 * _local22)) + (_local21 * _local24)); this.n24 = ((((_local5 * _local28) + (_local13 * _local30)) + (_local21 * _local32)) + _local29); this.n31 = (((_local7 * _local4) + (_local15 * _local6)) + (_local23 * _local8)); this.n32 = (((_local7 * _local12) + (_local15 * _local14)) + (_local23 * _local16)); this.n33 = (((_local7 * _local20) + (_local15 * _local22)) + (_local23 * _local24)); this.n34 = ((((_local7 * _local28) + (_local15 * _local30)) + (_local23 * _local32)) + _local31); this.n41 = (((_local9 * _local4) + (_local17 * _local6)) + (_local25 * _local8)); this.n42 = (((_local9 * _local12) + (_local17 * _local14)) + (_local25 * _local16)); this.n43 = (((_local9 * _local20) + (_local17 * _local22)) + (_local25 * _local24)); this.n44 = ((((_local9 * _local28) + (_local17 * _local30)) + (_local25 * _local32)) + _local33); } public function get det():Number{ return ((((((this.n11 * this.n22) - (this.n21 * this.n12)) * this.n33) - (((this.n11 * this.n32) - (this.n31 * this.n12)) * this.n23)) + (((this.n21 * this.n32) - (this.n31 * this.n22)) * this.n13))); } public function copy(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n14 = _arg1.n14; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n24 = _arg1.n24; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; this.n34 = _arg1.n34; return (this); } public function copy3x3(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; return (this); } public function calculateAdd(_arg1:Matrix3D, _arg2:Matrix3D):void{ this.n11 = (_arg1.n11 + _arg2.n11); this.n12 = (_arg1.n12 + _arg2.n12); this.n13 = (_arg1.n13 + _arg2.n13); this.n14 = (_arg1.n14 + _arg2.n14); this.n21 = (_arg1.n21 + _arg2.n21); this.n22 = (_arg1.n22 + _arg2.n22); this.n23 = (_arg1.n23 + _arg2.n23); this.n24 = (_arg1.n24 + _arg2.n24); this.n31 = (_arg1.n31 + _arg2.n31); this.n32 = (_arg1.n32 + _arg2.n32); this.n33 = (_arg1.n33 + _arg2.n33); this.n34 = (_arg1.n34 + _arg2.n34); } public function calculateMultiply(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; _local21 = _arg1.n14; _local22 = _arg2.n14; _local23 = _arg1.n24; _local24 = _arg2.n24; _local25 = _arg1.n34; _local26 = _arg2.n34; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n14 = ((((_local3 * _local22) + (_local9 * _local24)) + (_local15 * _local26)) + _local21); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n24 = ((((_local5 * _local22) + (_local11 * _local24)) + (_local17 * _local26)) + _local23); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); this.n34 = ((((_local7 * _local22) + (_local13 * _local24)) + (_local19 * _local26)) + _local25); } public function invert():void{ temp.copy(this); calculateInverse(temp); } public function calculateInverse(_arg1:Matrix3D):void{ 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; _local2 = _arg1.det; if (Math.abs(_local2) > 0.001){ _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; this.n11 = (_local2 * ((_local7 * _local11) - (_local8 * _local10))); this.n12 = (-(_local2) * ((_local6 * _local11) - (_local8 * _local9))); this.n13 = (_local2 * ((_local6 * _local10) - (_local7 * _local9))); this.n14 = (-(_local2) * (((_local6 * ((_local10 * _local14) - (_local11 * _local13))) - (_local7 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local8 * ((_local9 * _local13) - (_local10 * _local12))))); this.n21 = (-(_local2) * ((_local4 * _local11) - (_local5 * _local10))); this.n22 = (_local2 * ((_local3 * _local11) - (_local5 * _local9))); this.n23 = (-(_local2) * ((_local3 * _local10) - (_local4 * _local9))); this.n24 = (_local2 * (((_local3 * ((_local10 * _local14) - (_local11 * _local13))) - (_local4 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local5 * ((_local9 * _local13) - (_local10 * _local12))))); this.n31 = (_local2 * ((_local4 * _local8) - (_local5 * _local7))); this.n32 = (-(_local2) * ((_local3 * _local8) - (_local5 * _local6))); this.n33 = (_local2 * ((_local3 * _local7) - (_local4 * _local6))); this.n34 = (-(_local2) * (((_local3 * ((_local7 * _local14) - (_local8 * _local13))) - (_local4 * ((_local6 * _local14) - (_local8 * _local12)))) + (_local5 * ((_local6 * _local13) - (_local7 * _local12))))); }; } public function calculateTranspose():void{ var _local1:Number; 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:Number; var _local16:Number; _local1 = this.n11; _local2 = this.n21; _local3 = this.n31; _local4 = this.n41; _local5 = this.n12; _local6 = this.n22; _local7 = this.n32; _local8 = this.n42; _local9 = this.n13; _local10 = this.n23; _local11 = this.n33; _local12 = this.n43; _local13 = this.n14; _local14 = this.n24; _local15 = this.n34; _local16 = this.n44; this.n11 = _local1; this.n12 = _local2; this.n13 = _local3; this.n14 = _local4; this.n21 = _local5; this.n22 = _local6; this.n23 = _local7; this.n24 = _local8; this.n31 = _local9; this.n32 = _local10; this.n33 = _local11; this.n34 = _local12; this.n41 = _local13; this.n42 = _local14; this.n43 = _local15; this.n44 = _local16; } 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")); _local1 = (_local1 + ((((((((int((n41 * 1000)) / 1000) + "\t\t") + (int((n42 * 1000)) / 1000)) + "\t\t") + (int((n43 * 1000)) / 1000)) + "\t\t") + (int((n44 * 1000)) / 1000)) + "\n")); return (_local1); } public function reset(_arg1:Array=null):void{ if (((!(_arg1)) || ((_arg1.length < 12)))){ n11 = (n22 = (n33 = (n44 = 1))); n12 = (n13 = (n14 = (n21 = (n23 = (n24 = (n31 = (n32 = (n34 = (n41 = (n42 = (n43 = 0))))))))))); } else { n11 = _arg1[0]; n12 = _arg1[1]; n13 = _arg1[2]; n14 = _arg1[3]; n21 = _arg1[4]; n22 = _arg1[5]; n23 = _arg1[6]; n24 = _arg1[7]; n31 = _arg1[8]; n32 = _arg1[9]; n33 = _arg1[10]; n34 = _arg1[11]; if (_arg1.length == 16){ n41 = _arg1[12]; n42 = _arg1[13]; n43 = _arg1[14]; n44 = _arg1[15]; } else { n41 = (n42 = (n43 = 0)); n44 = 1; }; }; } public static function rotationMatrixWithReference(_arg1:Number3D, _arg2:Number, _arg3:Number3D):Matrix3D{ var _local4:Matrix3D; _local4 = Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z); Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z).calculateMultiply(_local4, Matrix3D.rotationMatrix(_arg1.x, _arg1.y, _arg1.z, _arg2)); _local4.calculateMultiply(_local4, Matrix3D.translationMatrix(-(_arg3.x), _arg3.y, -(_arg3.z))); return (_local4); } public static function multiplyVector(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); } public static function multiplyVector4x4(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _local6 = (1 / ((((_local3 * _arg1.n41) + (_local4 * _arg1.n42)) + (_local5 * _arg1.n43)) + _arg1.n44)); _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); _arg2.x = (_arg2.x * _local6); _arg2.y = (_arg2.y * _local6); _arg2.z = (_arg2.z * _local6); } public static function multiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply3x3(_arg1, _arg2); return (_local3); } public static function normalizeQuaternion(_arg1:Object):Object{ var _local2:Number; _local2 = magnitudeQuaternion(_arg1); _arg1.x = (_arg1.x / _local2); _arg1.y = (_arg1.y / _local2); _arg1.z = (_arg1.z / _local2); _arg1.w = (_arg1.w / _local2); return (_arg1); } public static function multiplyVector3x3(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); } public static function axis2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{ var _local5:Number; var _local6:Number; var _local7:Object; _local5 = Math.sin((_arg4 / 2)); _local6 = Math.cos((_arg4 / 2)); _local7 = new Object(); _local7.x = (_arg1 * _local5); _local7.y = (_arg2 * _local5); _local7.z = (_arg3 * _local5); _local7.w = _local6; return (normalizeQuaternion(_local7)); } public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n14 = _arg1; _local4.n24 = _arg2; _local4.n34 = _arg3; return (_local4); } public static function magnitudeQuaternion(_arg1:Object):Number{ return (Math.sqrt(((((_arg1.w * _arg1.w) + (_arg1.x * _arg1.x)) + (_arg1.y * _arg1.y)) + (_arg1.z * _arg1.z)))); } public static function rotationX(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n22 = _local3; _local2.n23 = -(_local4); _local2.n32 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationY(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n13 = -(_local4); _local2.n31 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationZ(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n12 = -(_local4); _local2.n21 = _local4; _local2.n22 = _local3; return (_local2); } public static function clone(_arg1:Matrix3D):Matrix3D{ return (new Matrix3D([_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14, _arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24, _arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34])); } public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):Matrix3D{ var _local6:Matrix3D; 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; if (!_arg5){ _local6 = IDENTITY; } else { _local6 = _arg5; }; _local7 = Math.cos(_arg4); _local8 = Math.sin(_arg4); _local9 = (1 - _local7); _local10 = ((_arg1 * _arg2) * _local9); _local11 = ((_arg2 * _arg3) * _local9); _local12 = ((_arg1 * _arg3) * _local9); _local13 = (_local8 * _arg3); _local14 = (_local8 * _arg2); _local15 = (_local8 * _arg1); _local6.n11 = (_local7 + ((_arg1 * _arg1) * _local9)); _local6.n12 = (-(_local13) + _local10); _local6.n13 = (_local14 + _local12); _local6.n14 = 0; _local6.n21 = (_local13 + _local10); _local6.n22 = (_local7 + ((_arg2 * _arg2) * _local9)); _local6.n23 = (-(_local15) + _local11); _local6.n24 = 0; _local6.n31 = (-(_local14) + _local12); _local6.n32 = (_local15 + _local11); _local6.n33 = (_local7 + ((_arg3 * _arg3) * _local9)); _local6.n34 = 0; return (_local6); } public static function add(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateAdd(_arg1, _arg2); return (_local3); } public static function multiply(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply(_arg1, _arg2); return (_local3); } public static function euler2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Quaternion=null):Quaternion{ 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:Quaternion; _local5 = Math.sin((_arg1 * 0.5)); _local6 = Math.cos((_arg1 * 0.5)); _local7 = Math.sin((_arg2 * 0.5)); _local8 = Math.cos((_arg2 * 0.5)); _local9 = Math.sin((_arg3 * 0.5)); _local10 = Math.cos((_arg3 * 0.5)); _local11 = (_local6 * _local8); _local12 = (_local5 * _local7); if (!_arg4){ _local13 = new Quaternion(); } else { _local13 = _arg4; }; _local13.x = ((_local9 * _local11) - (_local10 * _local12)); _local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7)); _local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8)); _local13.w = ((_local10 * _local11) + (_local9 * _local12)); return (_local13); } public static function quaternion2matrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):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; var _local15:Matrix3D; _local6 = (_arg1 * _arg1); _local7 = (_arg1 * _arg2); _local8 = (_arg1 * _arg3); _local9 = (_arg1 * _arg4); _local10 = (_arg2 * _arg2); _local11 = (_arg2 * _arg3); _local12 = (_arg2 * _arg4); _local13 = (_arg3 * _arg3); _local14 = (_arg3 * _arg4); if (!_arg5){ _local15 = IDENTITY; } else { _local15 = _arg5; }; _local15.n11 = (1 - (2 * (_local10 + _local13))); _local15.n12 = (2 * (_local7 - _local14)); _local15.n13 = (2 * (_local8 + _local12)); _local15.n21 = (2 * (_local7 + _local14)); _local15.n22 = (1 - (2 * (_local6 + _local13))); _local15.n23 = (2 * (_local11 - _local9)); _local15.n31 = (2 * (_local8 - _local12)); _local15.n32 = (2 * (_local11 + _local9)); _local15.n33 = (1 - (2 * (_local6 + _local10))); return (_local15); } public static function inverse(_arg1:Matrix3D):Matrix3D{ var _local2:Matrix3D; _local2 = new (Matrix3D); _local2.calculateInverse(_arg1); return (_local2); } public static function euler2matrix(_arg1:Number3D):Matrix3D{ var _local2:Matrix3D; 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; temp.reset(); _local2 = temp; _local2 = temp; _local3 = (_arg1.x * toRADIANS); _local4 = (_arg1.y * toRADIANS); _local5 = (_arg1.z * toRADIANS); _local6 = Math.cos(_local3); _local7 = Math.sin(_local3); _local8 = Math.cos(_local4); _local9 = Math.sin(_local4); _local10 = Math.cos(_local5); _local11 = Math.sin(_local5); _local12 = (_local6 * _local9); _local13 = (_local7 * _local9); _local2.n11 = (_local8 * _local10); _local2.n12 = (-(_local8) * _local11); _local2.n13 = _local9; _local2.n21 = ((_local13 * _local10) + (_local6 * _local11)); _local2.n22 = ((-(_local13) * _local11) + (_local6 * _local10)); _local2.n23 = (-(_local7) * _local8); _local2.n31 = ((-(_local12) * _local10) + (_local7 * _local11)); _local2.n32 = ((_local12 * _local11) + (_local7 * _local10)); _local2.n33 = (_local6 * _local8); return (_local2); } public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n11 = _arg1; _local4.n22 = _arg2; _local4.n33 = _arg3; return (_local4); } public static function rotateAxis(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); _arg2.normalize(); } public static function matrix2euler(_arg1:Matrix3D, _arg2:Number3D=null, _arg3:Number3D=null):Number3D{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _arg2 = ((_arg2) || (new Number3D())); _local4 = (((_arg3) && ((_arg3.x == 1)))) ? 1 : Math.sqrt((((_arg1.n11 * _arg1.n11) + (_arg1.n21 * _arg1.n21)) + (_arg1.n31 * _arg1.n31))); _local5 = (((_arg3) && ((_arg3.y == 1)))) ? 1 : Math.sqrt((((_arg1.n12 * _arg1.n12) + (_arg1.n22 * _arg1.n22)) + (_arg1.n32 * _arg1.n32))); _local6 = (((_arg3) && ((_arg3.z == 1)))) ? 1 : Math.sqrt((((_arg1.n13 * _arg1.n13) + (_arg1.n23 * _arg1.n23)) + (_arg1.n33 * _arg1.n33))); _local7 = (_arg1.n11 / _local4); _local8 = (_arg1.n21 / _local5); _local9 = (_arg1.n31 / _local6); _local10 = (_arg1.n32 / _local6); _local11 = (_arg1.n33 / _local6); _local9 = ((_local9 > 1)) ? 1 : _local9; _local9 = ((_local9 < -1)) ? -1 : _local9; _arg2.y = Math.asin(-(_local9)); _arg2.z = Math.atan2(_local8, _local7); _arg2.x = Math.atan2(_local10, _local11); if (Papervision3D.useDEGREES){ _arg2.x = (_arg2.x * toDEGREES); _arg2.y = (_arg2.y * toDEGREES); _arg2.z = (_arg2.z * toDEGREES); }; return (_arg2); } public static function multiplyQuaternion(_arg1:Object, _arg2:Object):Object{ 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:Object; _local3 = _arg1.x; _local4 = _arg1.y; _local5 = _arg1.z; _local6 = _arg1.w; _local7 = _arg2.x; _local8 = _arg2.y; _local9 = _arg2.z; _local10 = _arg2.w; _local11 = new Object(); _local11.x = ((((_local6 * _local7) + (_local3 * _local10)) + (_local4 * _local9)) - (_local5 * _local8)); _local11.y = ((((_local6 * _local8) + (_local4 * _local10)) + (_local5 * _local7)) - (_local3 * _local9)); _local11.z = ((((_local6 * _local9) + (_local5 * _local10)) + (_local3 * _local8)) - (_local4 * _local7)); _local11.w = ((((_local6 * _local10) - (_local3 * _local7)) - (_local4 * _local8)) - (_local5 * _local9)); return (_local11); } public static function get IDENTITY():Matrix3D{ return (new Matrix3D([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])); } } }//package org.papervision3d.core.math
Section 283
//Number2D (org.papervision3d.core.math.Number2D) package org.papervision3d.core.math { import org.papervision3d.*; public class Number2D { public var x:Number; public var y:Number; public static const DEGTORAD:Number = 0.0174532925199433; public static const RADTODEG:Number = 57.2957795130823; public function Number2D(_arg1:Number=0, _arg2:Number=0){ this.x = _arg1; this.y = _arg2; } public function divideEq(_arg1:Number):void{ x = (x / _arg1); y = (y / _arg1); } public function copyTo(_arg1:Number2D):void{ _arg1.x = this.x; _arg1.y = this.y; } public function get moduloSquared():Number{ return (((this.x * this.x) + (this.y * this.y))); } public function angle():Number{ if (Papervision3D.useDEGREES){ return ((RADTODEG * Math.atan2(y, x))); }; return (Math.atan2(y, x)); } public function reset(_arg1:Number=0, _arg2:Number=0):void{ this.x = _arg1; this.y = _arg2; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function clone():Number2D{ return (new Number2D(this.x, this.y)); } public function reverse():void{ this.x = -(this.x); this.y = -(this.y); } public function plusEq(_arg1:Number2D):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function rotate(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number2D; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * DEGTORAD); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = clone(); this.x = ((_local4.x * _local2) - (_local4.y * _local3)); this.y = ((_local4.x * _local3) + (_local4.y * _local2)); } public function toString():String{ var _local1:Number; var _local2:Number; _local1 = (Math.round((this.x * 1000)) / 1000); _local2 = (Math.round((this.y * 1000)) / 1000); return ((((("[" + _local1) + ", ") + _local2) + "]")); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public function multiplyEq(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function normalise():void{ var _local1:Number; _local1 = this.modulo; this.x = (this.x / _local1); this.y = (this.y / _local1); } public function get modulo():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function minusEq(_arg1:Number2D):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function copyFrom(_arg1:Number2D):void{ this.x = _arg1.x; this.y = _arg1.y; } public static function multiplyScalar(_arg1:Number2D, _arg2:Number):Number2D{ return (new Number2D((_arg1.x * _arg2), (_arg1.y * _arg2))); } public static function add(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x = (_arg1.x + _arg2.x)), (_arg1.y + _arg2.y))); } public static function dot(_arg1:Number2D, _arg2:Number2D):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function subtract(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y))); } } }//package org.papervision3d.core.math
Section 284
//Number3D (org.papervision3d.core.math.Number3D) package org.papervision3d.core.math { import org.papervision3d.*; public class Number3D { public var z:Number; public var x:Number; public var y:Number; public static var toDEGREES:Number = 57.2957795130823; private static var temp:Number3D = Number3D.ZERO; public static var toRADIANS:Number = 0.0174532925199433; public function Number3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function normalize():void{ var _local1:Number; _local1 = Math.sqrt((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z))); if (((!((_local1 == 0))) && (!((_local1 == 1))))){ _local1 = (1 / _local1); this.x = (this.x * _local1); this.y = (this.y * _local1); this.z = (this.z * _local1); }; } public function copyTo(_arg1:Number3D):void{ _arg1.x = x; _arg1.y = y; _arg1.z = z; } public function get moduloSquared():Number{ return ((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z))); } public function reset(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):void{ x = _arg1; y = _arg2; z = _arg3; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function rotateX(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.y = ((temp.y * _local2) - (temp.z * _local3)); this.z = ((temp.y * _local3) + (temp.z * _local2)); } public function rotateY(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.x = ((temp.x * _local2) + (temp.z * _local3)); this.z = ((temp.x * -(_local3)) + (temp.z * _local2)); } public function rotateZ(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.x = ((temp.x * _local2) - (temp.y * _local3)); this.y = ((temp.x * _local3) + (temp.y * _local2)); } public function clone():Number3D{ return (new Number3D(this.x, this.y, this.z)); } public function plusEq(_arg1:Number3D):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function toString():String{ return (((((("x:" + (Math.round((x * 100)) / 100)) + " y:") + (Math.round((y * 100)) / 100)) + " z:") + (Math.round((z * 100)) / 100))); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public function multiplyEq(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function get modulo():Number{ return (Math.sqrt((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z)))); } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function minusEq(_arg1:Number3D):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } public function copyFrom(_arg1:Number3D):void{ x = _arg1.x; y = _arg1.y; z = _arg1.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 add(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z))); } public static function cross(_arg1:Number3D, _arg2:Number3D, _arg3:Number3D=null):Number3D{ if (!_arg3){ _arg3 = ZERO; }; _arg3.reset(((_arg2.y * _arg1.z) - (_arg2.z * _arg1.y)), ((_arg2.z * _arg1.x) - (_arg2.x * _arg1.z)), ((_arg2.x * _arg1.y) - (_arg2.y * _arg1.x))); return (_arg3); } 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 get ZERO():Number3D{ return (new Number3D(0, 0, 0)); } } }//package org.papervision3d.core.math
Section 285
//NumberUV (org.papervision3d.core.math.NumberUV) package org.papervision3d.core.math { 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 function clone():NumberUV{ return (new NumberUV(this.u, this.v)); } public static function get ZERO():NumberUV{ return (new NumberUV(0, 0)); } 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 org.papervision3d.core.math
Section 286
//Quaternion (org.papervision3d.core.math.Quaternion) package org.papervision3d.core.math { public class Quaternion { private var _matrix:Matrix3D; public var w:Number; public var x:Number; public var y:Number; public var z:Number; public static const EPSILON:Number = 1E-6; public static const DEGTORAD:Number = 0.0174532925199433; public static const RADTODEG:Number = 57.2957795130823; public function Quaternion(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1){ this.x = _arg1; this.y = _arg2; this.z = _arg3; this.w = _arg4; _matrix = Matrix3D.IDENTITY; } public function setFromEuler(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; if (_arg4){ _arg1 = (_arg1 * DEGTORAD); _arg2 = (_arg2 * DEGTORAD); _arg3 = (_arg3 * DEGTORAD); }; _local5 = Math.sin((_arg1 * 0.5)); _local6 = Math.cos((_arg1 * 0.5)); _local7 = Math.sin((_arg2 * 0.5)); _local8 = Math.cos((_arg2 * 0.5)); _local9 = Math.sin((_arg3 * 0.5)); _local10 = Math.cos((_arg3 * 0.5)); _local11 = (_local6 * _local8); _local12 = (_local5 * _local7); this.x = ((_local9 * _local11) - (_local10 * _local12)); this.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7)); this.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8)); this.w = ((_local10 * _local11) + (_local9 * _local12)); } public function setFromAxisAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Number; var _local6:Number; _local5 = Math.sin((_arg4 / 2)); _local6 = Math.cos((_arg4 / 2)); this.x = (_arg1 * _local5); this.y = (_arg2 * _local5); this.z = (_arg3 * _local5); this.w = _local6; this.normalize(); } public function get matrix():Matrix3D{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local1 = (x * x); _local2 = (x * y); _local3 = (x * z); _local4 = (x * w); _local5 = (y * y); _local6 = (y * z); _local7 = (y * w); _local8 = (z * z); _local9 = (z * w); _matrix.n11 = (1 - (2 * (_local5 + _local8))); _matrix.n12 = (2 * (_local2 - _local9)); _matrix.n13 = (2 * (_local3 + _local7)); _matrix.n21 = (2 * (_local2 + _local9)); _matrix.n22 = (1 - (2 * (_local1 + _local8))); _matrix.n23 = (2 * (_local6 - _local4)); _matrix.n31 = (2 * (_local3 - _local7)); _matrix.n32 = (2 * (_local6 + _local4)); _matrix.n33 = (1 - (2 * (_local1 + _local5))); return (_matrix); } public function calculateMultiply(_arg1:Quaternion, _arg2:Quaternion):void{ this.x = ((((_arg1.w * _arg2.x) + (_arg1.x * _arg2.w)) + (_arg1.y * _arg2.z)) - (_arg1.z * _arg2.y)); this.y = ((((_arg1.w * _arg2.y) - (_arg1.x * _arg2.z)) + (_arg1.y * _arg2.w)) + (_arg1.z * _arg2.x)); this.z = ((((_arg1.w * _arg2.z) + (_arg1.x * _arg2.y)) - (_arg1.y * _arg2.x)) + (_arg1.z * _arg2.w)); this.w = ((((_arg1.w * _arg2.w) - (_arg1.x * _arg2.x)) - (_arg1.y * _arg2.y)) - (_arg1.z * _arg2.z)); } public function toString():String{ return (((((((("Quaternion: x:" + this.x) + " y:") + this.y) + " z:") + this.z) + " w:") + this.w)); } public function normalize():void{ var _local1:Number; var _local2:Number; _local1 = this.modulo; if (Math.abs(_local1) < EPSILON){ x = (y = (z = 0)); w = 1; } else { _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); z = (z * _local2); w = (w * _local2); }; } public function get modulo():Number{ return (Math.sqrt(((((x * x) + (y * y)) + (z * z)) + (w * w)))); } public function toEuler():Number3D{ var _local1:Number3D; var _local2:Quaternion; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local1 = new Number3D(); _local2 = this; _local3 = ((_local2.x * _local2.y) + (_local2.z * _local2.w)); if (_local3 > 0.499){ _local1.x = (2 * Math.atan2(_local2.x, _local2.w)); _local1.y = (Math.PI / 2); _local1.z = 0; return (_local1); }; if (_local3 < -0.499){ _local1.x = (-2 * Math.atan2(_local2.x, _local2.w)); _local1.y = (-(Math.PI) / 2); _local1.z = 0; return (_local1); }; _local4 = (_local2.x * _local2.x); _local5 = (_local2.y * _local2.y); _local6 = (_local2.z * _local2.z); _local1.x = Math.atan2((((2 * _local2.y) * _local2.w) - ((2 * _local2.x) * _local2.z)), ((1 - (2 * _local5)) - (2 * _local6))); _local1.y = Math.asin((2 * _local3)); _local1.z = Math.atan2((((2 * _local2.x) * _local2.w) - ((2 * _local2.y) * _local2.z)), ((1 - (2 * _local4)) - (2 * _local6))); return (_local1); } public function clone():Quaternion{ return (new Quaternion(this.x, this.y, this.z, this.w)); } public function mult(_arg1:Quaternion):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = this.w; _local3 = this.x; _local4 = this.y; _local5 = this.z; x = ((((_local2 * _arg1.x) + (_local3 * _arg1.w)) + (_local4 * _arg1.z)) - (_local5 * _arg1.y)); y = ((((_local2 * _arg1.y) - (_local3 * _arg1.z)) + (_local4 * _arg1.w)) + (_local5 * _arg1.x)); z = ((((_local2 * _arg1.z) + (_local3 * _arg1.y)) - (_local4 * _arg1.x)) + (_local5 * _arg1.w)); w = ((((_local2 * _arg1.w) - (_local3 * _arg1.x)) - (_local4 * _arg1.y)) - (_local5 * _arg1.z)); } public static function sub(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ return (new Quaternion((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z), (_arg1.w - _arg2.w))); } public static function add(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ return (new Quaternion((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z), (_arg1.w + _arg2.w))); } public static function createFromEuler(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false):Quaternion{ 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:Quaternion; if (_arg4){ _arg1 = (_arg1 * DEGTORAD); _arg2 = (_arg2 * DEGTORAD); _arg3 = (_arg3 * DEGTORAD); }; _local5 = Math.sin((_arg1 * 0.5)); _local6 = Math.cos((_arg1 * 0.5)); _local7 = Math.sin((_arg2 * 0.5)); _local8 = Math.cos((_arg2 * 0.5)); _local9 = Math.sin((_arg3 * 0.5)); _local10 = Math.cos((_arg3 * 0.5)); _local11 = (_local6 * _local8); _local12 = (_local5 * _local7); _local13 = new (Quaternion); _local13.x = ((_local9 * _local11) - (_local10 * _local12)); _local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7)); _local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8)); _local13.w = ((_local10 * _local11) + (_local9 * _local12)); return (_local13); } public static function createFromMatrix(_arg1:Matrix3D):Quaternion{ var _local2:Quaternion; var _local3:Number; var _local4:Array; var _local5:int; var _local6:int; var _local7:int; var _local8:Number; var _local9:Array; var _local10:Array; _local2 = new (Quaternion); _local4 = new Array(4); _local8 = ((_arg1.n11 + _arg1.n22) + _arg1.n33); if (_local8 > 0){ _local3 = Math.sqrt((_local8 + 1)); _local2.w = (_local3 / 2); _local3 = (0.5 / _local3); _local2.x = ((_arg1.n32 - _arg1.n23) * _local3); _local2.y = ((_arg1.n13 - _arg1.n31) * _local3); _local2.z = ((_arg1.n21 - _arg1.n12) * _local3); } else { _local9 = [1, 2, 0]; _local10 = [[_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14], [_arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24], [_arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34]]; _local5 = 0; if (_local10[1][1] > _local10[0][0]){ _local5 = 1; }; if (_local10[2][2] > _local10[_local5][_local5]){ _local5 = 2; }; _local6 = _local9[_local5]; _local7 = _local9[_local6]; _local3 = Math.sqrt(((_local10[_local5][_local5] - (_local10[_local6][_local6] + _local10[_local7][_local7])) + 1)); _local4[_local5] = (_local3 * 0.5); if (_local3 != 0){ _local3 = (0.5 / _local3); }; _local4[3] = ((_local10[_local7][_local6] - _local10[_local6][_local7]) * _local3); _local4[_local6] = ((_local10[_local6][_local5] + _local10[_local5][_local6]) * _local3); _local4[_local7] = ((_local10[_local7][_local5] + _local10[_local5][_local7]) * _local3); _local2.x = _local4[0]; _local2.y = _local4[1]; _local2.z = _local4[2]; _local2.w = _local4[3]; }; return (_local2); } public static function dot(_arg1:Quaternion, _arg2:Quaternion):Number{ return (((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)) + (_arg1.w * _arg2.w))); } public static function multiply(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ var _local3:Quaternion; _local3 = new (Quaternion); _local3.x = ((((_arg1.w * _arg2.x) + (_arg1.x * _arg2.w)) + (_arg1.y * _arg2.z)) - (_arg1.z * _arg2.y)); _local3.y = ((((_arg1.w * _arg2.y) - (_arg1.x * _arg2.z)) + (_arg1.y * _arg2.w)) + (_arg1.z * _arg2.x)); _local3.z = ((((_arg1.w * _arg2.z) + (_arg1.x * _arg2.y)) - (_arg1.y * _arg2.x)) + (_arg1.z * _arg2.w)); _local3.w = ((((_arg1.w * _arg2.w) - (_arg1.x * _arg2.x)) - (_arg1.y * _arg2.y)) - (_arg1.z * _arg2.z)); return (_local3); } public static function createFromAxisAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Quaternion{ var _local5:Quaternion; _local5 = new (Quaternion); _local5.setFromAxisAngle(_arg1, _arg2, _arg3, _arg4); return (_local5); } public static function slerp(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = ((((_arg1.w * _arg2.w) + (_arg1.x * _arg2.x)) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)); if (_local4 < 0){ _arg1.x = (_arg1.x * -1); _arg1.y = (_arg1.y * -1); _arg1.z = (_arg1.z * -1); _arg1.w = (_arg1.w * -1); _local4 = (_local4 * -1); }; if ((_local4 + 1) > EPSILON){ if ((1 - _local4) >= EPSILON){ _local7 = Math.acos(_local4); _local8 = (1 / Math.sin(_local7)); _local5 = (Math.sin((_local7 * (1 - _arg3))) * _local8); _local6 = (Math.sin((_local7 * _arg3)) * _local8); } else { _local5 = (1 - _arg3); _local6 = _arg3; }; } else { _arg2.y = -(_arg1.y); _arg2.x = _arg1.x; _arg2.w = -(_arg1.w); _arg2.z = _arg1.z; _local5 = Math.sin((Math.PI * (0.5 - _arg3))); _local6 = Math.sin((Math.PI * _arg3)); }; return (new Quaternion(((_local5 * _arg1.x) + (_local6 * _arg2.x)), ((_local5 * _arg1.y) + (_local6 * _arg2.y)), ((_local5 * _arg1.z) + (_local6 * _arg2.z)), ((_local5 * _arg1.w) + (_local6 * _arg2.w)))); } public static function createFromOrthoMatrix(_arg1:Matrix3D):Quaternion{ var _local2:Quaternion; _local2 = new (Quaternion); _local2.w = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) + _arg1.n22) + _arg1.n33))) / 2); _local2.x = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) - _arg1.n22) - _arg1.n33))) / 2); _local2.y = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) + _arg1.n22) - _arg1.n33))) / 2); _local2.z = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) - _arg1.n22) + _arg1.n33))) / 2); _local2.x = (((_arg1.n32 - _arg1.n23) < 0)) ? ((_local2.x < 0)) ? _local2.x : -(_local2.x) : ((_local2.x < 0)) ? -(_local2.x) : _local2.x; _local2.y = (((_arg1.n13 - _arg1.n31) < 0)) ? ((_local2.y < 0)) ? _local2.y : -(_local2.y) : ((_local2.y < 0)) ? -(_local2.y) : _local2.y; _local2.z = (((_arg1.n21 - _arg1.n12) < 0)) ? ((_local2.z < 0)) ? _local2.z : -(_local2.z) : ((_local2.z < 0)) ? -(_local2.z) : _local2.z; return (_local2); } public static function conjugate(_arg1:Quaternion):Quaternion{ var _local2:Quaternion; _local2 = new (Quaternion); _local2.x = -(_arg1.x); _local2.y = -(_arg1.y); _local2.z = -(_arg1.z); _local2.w = _arg1.w; return (_local2); } public static function slerpOld(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{ var _local4:Quaternion; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local4 = new (Quaternion); _local5 = ((((_arg1.w * _arg2.w) + (_arg1.x * _arg2.x)) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)); if (Math.abs(_local5) >= 1){ _local4.w = _arg1.w; _local4.x = _arg1.x; _local4.y = _arg1.y; _local4.z = _arg1.z; return (_local4); }; _local6 = Math.acos(_local5); _local7 = Math.sqrt((1 - (_local5 * _local5))); if (Math.abs(_local7) < 0.001){ _local4.w = ((_arg1.w * 0.5) + (_arg2.w * 0.5)); _local4.x = ((_arg1.x * 0.5) + (_arg2.x * 0.5)); _local4.y = ((_arg1.y * 0.5) + (_arg2.y * 0.5)); _local4.z = ((_arg1.z * 0.5) + (_arg2.z * 0.5)); return (_local4); }; _local8 = (Math.sin(((1 - _arg3) * _local6)) / _local7); _local9 = (Math.sin((_arg3 * _local6)) / _local7); _local4.w = ((_arg1.w * _local8) + (_arg2.w * _local9)); _local4.x = ((_arg1.x * _local8) + (_arg2.x * _local9)); _local4.y = ((_arg1.y * _local8) + (_arg2.y * _local9)); _local4.z = ((_arg1.z * _local8) + (_arg2.z * _local9)); return (_local4); } } }//package org.papervision3d.core.math
Section 287
//pv3dview (org.papervision3d.core.ns.pv3dview) package org.papervision3d.core.ns { public namespace pv3dview; }//package org.papervision3d.core.ns
Section 288
//CameraObject3D (org.papervision3d.core.proto.CameraObject3D) package org.papervision3d.core.proto { import org.papervision3d.core.math.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.log.*; import org.papervision3d.core.culling.*; import org.papervision3d.*; public class CameraObject3D extends DisplayObject3D { protected var _orthoScale:Number;// = 1 public var eye:Matrix3D; protected var _far:Number; public var viewport:Rectangle; protected var _target:DisplayObject3D; protected var _ortho:Boolean; public var yUP:Boolean; public var focus:Number; protected var _orthoScaleMatrix:Matrix3D; protected var _useCulling:Boolean; public var sort:Boolean; public var culler:IObjectCuller; public var zoom:Number; protected var _useProjectionMatrix:Boolean; public static var DEFAULT_VIEWPORT:Rectangle = new Rectangle(0, 0, 550, 400); public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000); public static var DEFAULT_UP:Number3D = new Number3D(0, 1, 0); private static var _flipY:Matrix3D = Matrix3D.scaleMatrix(1, -1, 1); public function CameraObject3D(_arg1:Number=500, _arg2:Number=3){ _orthoScale = 1; super(); this.x = DEFAULT_POS.x; this.y = DEFAULT_POS.y; this.z = DEFAULT_POS.z; this.zoom = _arg2; this.focus = _arg1; this.eye = Matrix3D.IDENTITY; this.viewport = DEFAULT_VIEWPORT; this.sort = true; _ortho = false; _orthoScaleMatrix = Matrix3D.scaleMatrix(1, 1, 1); if (Papervision3D.useRIGHTHANDED){ DEFAULT_UP.y = -1; this.yUP = false; this.lookAt(DisplayObject3D.ZERO); } else { this.yUP = true; }; } public function projectFaces(_arg1:Array, _arg2:DisplayObject3D, _arg3:RenderSessionData):Number{ return (0); } public function get near():Number{ return (this.focus); } public function set far(_arg1:Number):void{ if (_arg1 > this.focus){ _far = _arg1; }; } public function projectVertices(_arg1:Array, _arg2:DisplayObject3D, _arg3:RenderSessionData):Number{ return (0); } public function transformView(_arg1:Matrix3D=null):void{ if (this.yUP){ eye.calculateMultiply(((_arg1) || (this.transform)), _flipY); eye.invert(); } else { eye.calculateInverse(((_arg1) || (this.transform))); }; } public function orbit(_arg1:Number, _arg2:Number, _arg3:Boolean=true, _arg4:DisplayObject3D=null):void{ } public function set near(_arg1:Number):void{ if (_arg1 > 0){ this.focus = _arg1; }; } public function unproject(_arg1:Number, _arg2:Number):Number3D{ var _local3:Number; var _local4:Number3D; _local3 = ((focus * zoom) / focus); _local4 = new Number3D((_arg1 / _local3), (-(_arg2) / _local3), focus); Matrix3D.multiplyVector3x3(transform, _local4); return (_local4); } public function get orthoScale():Number{ return (_orthoScale); } public function get useProjectionMatrix():Boolean{ return (_useProjectionMatrix); } public function pan(_arg1:Number):void{ } public function tilt(_arg1:Number):void{ } public function get fov():Number{ var _local1:Number; 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; if (((!(viewport)) || (viewport.isEmpty()))){ PaperLogger.warning("CameraObject3D#viewport not set, can't calculate fov!"); return (NaN); }; _local1 = 0; _local2 = 0; _local3 = 0; if (_target){ _local1 = _target.world.n14; _local2 = _target.world.n24; _local3 = _target.world.n34; }; _local4 = (this.x - _local1); _local5 = (this.y - _local2); _local6 = (this.z - _local3); _local7 = this.focus; _local8 = this.zoom; _local9 = (Math.sqrt((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6))) + _local7); _local10 = (viewport.height / 2); _local11 = (180 / Math.PI); return (((Math.atan(((((_local9 / _local7) / _local8) * _local10) / _local9)) * _local11) * 2)); } public function set orthoScale(_arg1:Number):void{ _orthoScale = ((_arg1 > 0)) ? _arg1 : 0.0001; _orthoScaleMatrix.n11 = _orthoScale; _orthoScaleMatrix.n22 = _orthoScale; _orthoScaleMatrix.n33 = _orthoScale; } public function get far():Number{ return (_far); } public function set useProjectionMatrix(_arg1:Boolean):void{ _useProjectionMatrix = _arg1; } public function set target(_arg1:DisplayObject3D):void{ _target = _arg1; } override public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{ if (this.yUP){ super.lookAt(_arg1, _arg2); } else { super.lookAt(_arg1, ((_arg2) || (DEFAULT_UP))); }; } public function set useCulling(_arg1:Boolean):void{ _useCulling = _arg1; } public function set ortho(_arg1:Boolean):void{ _ortho = _arg1; } public function get target():DisplayObject3D{ return (_target); } public function set fov(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; if (((!(viewport)) || (viewport.isEmpty()))){ PaperLogger.warning("CameraObject3D#viewport not set, can't set fov!"); return; }; _local2 = 0; _local3 = 0; _local4 = 0; if (_target){ _local2 = _target.world.n14; _local3 = _target.world.n24; _local4 = _target.world.n34; }; _local5 = (viewport.height / 2); _local6 = ((_arg1 / 2) * (Math.PI / 180)); this.focus = ((_local5 / Math.tan(_local6)) / this.zoom); } public function get useCulling():Boolean{ return (_useCulling); } public function get ortho():Boolean{ return (_ortho); } } }//package org.papervision3d.core.proto
Section 289
//DisplayObjectContainer3D (org.papervision3d.core.proto.DisplayObjectContainer3D) package org.papervision3d.core.proto { import flash.events.*; import org.papervision3d.objects.*; import org.papervision3d.core.log.*; import flash.utils.*; public class DisplayObjectContainer3D extends EventDispatcher { protected var _childrenByName:Object; private var _childrenTotal:int; public var root:DisplayObjectContainer3D; protected var _children:Dictionary; public function DisplayObjectContainer3D():void{ this._children = new Dictionary(false); this._childrenByName = new Dictionary(true); this._childrenTotal = 0; } public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ if (_arg1.parent){ PaperLogger.error("DisplayObjectContainer.addChild : DisplayObject3D already has a parent, ie is already added to scene."); }; _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._children[_arg1] = _arg2; this._childrenByName[_arg2] = _arg1; this._childrenTotal++; _arg1.parent = this; _arg1.root = this.root; return (_arg1); } private function findChildByName(_arg1:String, _arg2:DisplayObject3D=null):DisplayObject3D{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; _arg2 = ((_arg2) || (DisplayObject3D(this))); if (!_arg2){ return (null); }; if (_arg2.name == _arg1){ return (_arg2); }; for each (_local3 in _arg2.children) { _local4 = findChildByName(_arg1, _local3); if (_local4){ return (_local4); }; }; return (null); } public function getChildByName(_arg1:String, _arg2:Boolean=false):DisplayObject3D{ if (_arg2){ return (findChildByName(_arg1)); }; return (this._childrenByName[_arg1]); } public function get numChildren():int{ return (this._childrenTotal); } public function removeChildByName(_arg1:String):DisplayObject3D{ return (removeChild(getChildByName(_arg1))); } override public function toString():String{ return (childrenList()); } public function addChildren(_arg1:DisplayObject3D):DisplayObjectContainer3D{ var _local2:DisplayObject3D; for each (_local2 in _arg1.children) { _arg1.removeChild(_local2); this.addChild(_local2); }; return (this); } public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ if (((_arg1) && (_children[_arg1]))){ delete _childrenByName[this._children[_arg1]]; delete _children[_arg1]; _arg1.parent = null; _arg1.root = null; _childrenTotal--; return (_arg1); }; return (null); } public function childrenList():String{ var _local1:String; var _local2:String; _local1 = ""; for (_local2 in this._children) { _local1 = (_local1 + (_local2 + "\n")); }; return (_local1); } public function get children():Object{ return (this._childrenByName); } } }//package org.papervision3d.core.proto
Section 290
//GeometryObject3D (org.papervision3d.core.proto.GeometryObject3D) package org.papervision3d.core.proto { import flash.events.*; import org.papervision3d.core.math.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import flash.utils.*; public class GeometryObject3D extends EventDispatcher { protected var _boundingSphereDirty:Boolean;// = true public var dirty:Boolean; protected var _aabbDirty:Boolean;// = true public var _ready:Boolean;// = false protected var _boundingSphere:BoundingSphere; public var faces:Array; private var _numInstances:uint;// = 0 public var vertices:Array; protected var _aabb:AxisAlignedBoundingBox; public function GeometryObject3D():void{ _boundingSphereDirty = true; _aabbDirty = true; _numInstances = 0; _ready = false; super(); dirty = true; } public function transformVertices(_arg1:Matrix3D):void{ 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:int; var _local15:Vertex3D; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = _arg1.n11; _local3 = _arg1.n12; _local4 = _arg1.n13; _local5 = _arg1.n21; _local6 = _arg1.n22; _local7 = _arg1.n23; _local8 = _arg1.n31; _local9 = _arg1.n32; _local10 = _arg1.n33; _local11 = _arg1.n14; _local12 = _arg1.n24; _local13 = _arg1.n34; _local14 = vertices.length; while ((_local15 = vertices[--_local14])) { _local16 = _local15.x; _local17 = _local15.y; _local18 = _local15.z; _local19 = ((((_local16 * _local2) + (_local17 * _local3)) + (_local18 * _local4)) + _local11); _local20 = ((((_local16 * _local5) + (_local17 * _local6)) + (_local18 * _local7)) + _local12); _local21 = ((((_local16 * _local8) + (_local17 * _local9)) + (_local18 * _local10)) + _local13); _local15.x = _local19; _local15.y = _local20; _local15.z = _local21; }; } public function flipFaces():void{ var _local1:Triangle3D; var _local2:Vertex3D; for each (_local1 in this.faces) { _local2 = _local1.v0; _local1.v0 = _local1.v2; _local1.v2 = _local2; _local1.uv = [_local1.uv2, _local1.uv1, _local1.uv0]; _local1.createNormal(); }; this.ready = true; } private function createVertexNormals():void{ var _local1:Dictionary; var _local2:Triangle3D; var _local3:Vertex3D; _local1 = new Dictionary(true); for each (_local2 in faces) { _local2.v0.connectedFaces[_local2] = _local2; _local2.v1.connectedFaces[_local2] = _local2; _local2.v2.connectedFaces[_local2] = _local2; _local1[_local2.v0] = _local2.v0; _local1[_local2.v1] = _local2.v1; _local1[_local2.v2] = _local2.v2; }; for each (_local3 in _local1) { _local3.calculateNormal(); }; } public function clone(_arg1:DisplayObject3D=null):GeometryObject3D{ var _local2:Dictionary; var _local3:Dictionary; var _local4:GeometryObject3D; var _local5:int; var _local6:MaterialObject3D; var _local7:Vertex3D; var _local8:Triangle3D; var _local9:Vertex3D; var _local10:Vertex3D; var _local11:Vertex3D; _local2 = new Dictionary(true); _local3 = new Dictionary(true); _local4 = new GeometryObject3D(); _local4.vertices = new Array(); _local4.faces = new Array(); _local5 = 0; while (_local5 < this.vertices.length) { _local7 = this.vertices[_local5]; _local3[_local7] = _local7.clone(); _local4.vertices.push(_local3[_local7]); _local5++; }; _local5 = 0; while (_local5 < this.faces.length) { _local8 = this.faces[_local5]; _local9 = _local3[_local8.v0]; _local10 = _local3[_local8.v1]; _local11 = _local3[_local8.v2]; _local4.faces.push(new Triangle3D(_arg1, [_local9, _local10, _local11], _local8.material, _local8.uv)); _local2[_local8.material] = _local8.material; _local5++; }; for each (_local6 in _local2) { if (_local6){ _local6.registerObject(_arg1); }; }; return (_local4); } public function set ready(_arg1:Boolean):void{ if (_arg1){ createVertexNormals(); this.dirty = false; }; _ready = _arg1; } public function get ready():Boolean{ return (_ready); } public function get aabb():AxisAlignedBoundingBox{ if (_aabbDirty){ _aabb = AxisAlignedBoundingBox.createFromVertices(vertices); _aabbDirty = false; }; return (_aabb); } public function get boundingSphere():BoundingSphere{ if (_boundingSphereDirty){ _boundingSphere = BoundingSphere.getFromVertices(vertices); _boundingSphereDirty = false; }; return (_boundingSphere); } } }//package org.papervision3d.core.proto
Section 291
//LightObject3D (org.papervision3d.core.proto.LightObject3D) package org.papervision3d.core.proto { import org.papervision3d.core.math.*; import org.papervision3d.objects.*; import org.papervision3d.materials.*; import org.papervision3d.objects.primitives.*; public class LightObject3D extends DisplayObject3D { private var displaySphere:Sphere; public var flipped:Boolean; public var lightMatrix:Matrix3D; private var _showLight:Boolean; public function LightObject3D(_arg1:Boolean=false, _arg2:Boolean=false){ this.lightMatrix = Matrix3D.IDENTITY; this.showLight = _arg1; this.flipped = _arg2; } public function set showLight(_arg1:Boolean):void{ if (_showLight){ removeChild(displaySphere); }; if (_arg1){ displaySphere = new Sphere(new WireframeMaterial(0xFFFF00), 10, 3, 2); addChild(displaySphere); }; _showLight = _arg1; } public function get showLight():Boolean{ return (_showLight); } } }//package org.papervision3d.core.proto
Section 292
//MaterialObject3D (org.papervision3d.core.proto.MaterialObject3D) package org.papervision3d.core.proto { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.material.*; import org.papervision3d.materials.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class MaterialObject3D extends EventDispatcher implements ITriangleDrawer { public var widthOffset:Number;// = 0 public var name:String; public var heightOffset:Number;// = 0 public var id:Number; public var fillColor:Number; public var fillAlpha:Number;// = 0 protected var objects:Dictionary; public var baked:Boolean;// = false public var invisible:Boolean;// = false public var smooth:Boolean;// = false public var bitmap:BitmapData; public var lineAlpha:Number;// = 0 public var lineColor:Number; public var oneSide:Boolean;// = true public var lineThickness:Number;// = 1 public var interactive:Boolean;// = false public var opposite:Boolean;// = false public var maxU:Number; public var tiled:Boolean;// = false public var maxV:Number; public static var DEFAULT_COLOR:int = 0; public static var DEBUG_COLOR:int = 0xFF00FF; private static var _totalMaterialObjects:Number = 0; public function MaterialObject3D(){ smooth = false; tiled = false; baked = false; lineColor = DEFAULT_COLOR; lineAlpha = 0; lineThickness = 1; fillColor = DEFAULT_COLOR; fillAlpha = 0; oneSide = true; invisible = false; opposite = false; widthOffset = 0; heightOffset = 0; interactive = false; super(); this.id = _totalMaterialObjects++; MaterialManager.registerMaterial(this); objects = new Dictionary(true); } public function getObjectList():Dictionary{ return (objects); } public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } public function drawRT(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData):void{ } public function get doubleSided():Boolean{ return (!(this.oneSide)); } public function unregisterObject(_arg1:DisplayObject3D):void{ if (((objects) && (objects[_arg1]))){ objects[_arg1] = null; }; } public function set doubleSided(_arg1:Boolean):void{ this.oneSide = !(_arg1); } public function registerObject(_arg1:DisplayObject3D):void{ objects[_arg1] = true; } public function updateBitmap():void{ } override public function toString():String{ return (((((("[MaterialObject3D] bitmap:" + this.bitmap) + " lineColor:") + this.lineColor) + " fillColor:") + fillColor)); } public function copy(_arg1:MaterialObject3D):void{ this.bitmap = _arg1.bitmap; this.smooth = _arg1.smooth; this.lineColor = _arg1.lineColor; this.lineAlpha = _arg1.lineAlpha; this.fillColor = _arg1.fillColor; this.fillAlpha = _arg1.fillAlpha; this.oneSide = _arg1.oneSide; this.opposite = _arg1.opposite; this.invisible = _arg1.invisible; this.name = _arg1.name; this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } public function destroy():void{ objects = null; bitmap = null; MaterialManager.unRegisterMaterial(this); } public function isUpdateable():Boolean{ return (!(baked)); } public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new MaterialObject3D(); _local1.copy(this); return (_local1); } public static function get DEFAULT():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new WireframeMaterial(); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEFAULT_COLOR; _local1.fillAlpha = 1; _local1.doubleSided = false; return (_local1); } public static function get DEBUG():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new (MaterialObject3D); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEBUG_COLOR; _local1.fillAlpha = 0.37; _local1.doubleSided = true; return (_local1); } } }//package org.papervision3d.core.proto
Section 293
//SceneObject3D (org.papervision3d.core.proto.SceneObject3D) package org.papervision3d.core.proto { import org.papervision3d.materials.utils.*; import org.papervision3d.objects.*; import org.papervision3d.core.log.*; import org.papervision3d.*; public class SceneObject3D extends DisplayObjectContainer3D { public var objects:Array; public var materials:MaterialsList; public function SceneObject3D(){ this.objects = new Array(); this.materials = new MaterialsList(); PaperLogger.info((((((Papervision3D.NAME + " ") + Papervision3D.VERSION) + " (") + Papervision3D.DATE) + ")\n")); this.root = this; } override public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ var _local2:int; super.removeChild(_arg1); _local2 = 0; while (_local2 < this.objects.length) { if (this.objects[_local2] === _arg1){ this.objects.splice(_local2, 1); return (_arg1); }; _local2++; }; return (_arg1); } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ var _local3:DisplayObject3D; _local3 = super.addChild(_arg1, (_arg2) ? _arg2 : _arg1.name); _arg1.scene = this; _arg1.parent = null; this.objects.push(_local3); return (_local3); } } }//package org.papervision3d.core.proto
Section 294
//AbstractRenderListItem (org.papervision3d.core.render.command.AbstractRenderListItem) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; public class AbstractRenderListItem implements IRenderListItem { public var screenZ:Number; public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ } } }//package org.papervision3d.core.render.command
Section 295
//IRenderListItem (org.papervision3d.core.render.command.IRenderListItem) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; public interface IRenderListItem { function render(_arg1:RenderSessionData, _arg2:Graphics):void; } }//package org.papervision3d.core.render.command
Section 296
//RenderableListItem (org.papervision3d.core.render.command.RenderableListItem) package org.papervision3d.core.render.command { import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class RenderableListItem extends AbstractRenderListItem { public var minX:Number; public var minZ:Number; public var area:Number; public var instance:DisplayObject3D; public var minY:Number; public var renderableInstance:AbstractRenderable; public var renderable:Class; public var maxX:Number; public var maxY:Number; public var maxZ:Number; public var quadrant:QuadTreeNode; public function getZ(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (screenZ); } public function update():void{ } public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ return (_arg2); } public function quarter(_arg1:Number):Array{ return ([]); } } }//package org.papervision3d.core.render.command
Section 297
//RenderLine (org.papervision3d.core.render.command.RenderLine) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.math.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.special.*; public class RenderLine extends RenderableListItem implements IRenderListItem { private var fbz:Number; private var v:Number2D; public var size:Number; private var byf:Number; private var dx:Number; private var yfocus:Number; private var xfocus:Number; private var dy:Number; private var faz:Number; public var line:Line3D; private var det:Number; private var axf:Number; private var db:Number; private var ayf:Number; private var da:Number; private var ax:Number; private var ay:Number; private var az:Number; private var cp3d:Number3D; public var renderer:LineMaterial; private var l1:Number2D; private var l2:Number2D; private var bxf:Number; public var cV:Vertex3DInstance; private var azf:Number; private var bx:Number; private var by:Number; private var bz:Number; private var bzf:Number; public var length:Number; private var p:Number2D; public var v0:Vertex3DInstance; public var v1:Vertex3DInstance; private static var mouseVector:Number3D = Number3D.ZERO; private static var lineVector:Number3D = Number3D.ZERO; public function RenderLine(_arg1:Line3D){ this.renderable = Line3D; this.renderableInstance = _arg1; this.line = _arg1; this.instance = _arg1.instance; v0 = _arg1.v0.vertex3DInstance; v1 = _arg1.v1.vertex3DInstance; cV = _arg1.cV.vertex3DInstance; p = new Number2D(); l1 = new Number2D(); l2 = new Number2D(); v = new Number2D(); cp3d = new Number3D(); } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ renderer.drawLine(this, _arg2, _arg1); } override public function getZ(_arg1:Number, _arg2:Number, _arg3:Number):Number{ ax = v0.x; ay = v0.y; az = v0.z; bx = v1.x; by = v1.y; bz = v1.z; if ((((ax == _arg1)) && ((ay == _arg2)))){ return (az); }; if ((((bx == _arg1)) && ((by == _arg2)))){ return (bz); }; dx = (bx - ax); dy = (by - ay); azf = (az / _arg3); bzf = (bz / _arg3); faz = (1 + azf); fbz = (1 + bzf); xfocus = _arg1; yfocus = _arg2; axf = ((ax * faz) - (_arg1 * azf)); bxf = ((bx * fbz) - (_arg1 * bzf)); ayf = ((ay * faz) - (_arg2 * azf)); byf = ((by * fbz) - (_arg2 * bzf)); det = ((dx * (axf - bxf)) + (dy * (ayf - byf))); db = ((dx * (axf - _arg1)) + (dy * (ayf - _arg2))); da = ((dx * (_arg1 - bxf)) + (dy * (_arg2 - byf))); return ((((da * az) + (db * bz)) / det)); } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ var _local3:Number; var _local4:Number; var _local5:Number; if (renderer.interactive){ _local3 = line.size; p.reset(_arg1.x, _arg1.y); l1.reset(line.v0.vertex3DInstance.x, line.v0.vertex3DInstance.y); l2.reset(line.v1.vertex3DInstance.x, line.v1.vertex3DInstance.y); v.copyFrom(l2); v.minusEq(l1); _local4 = ((((p.x - l1.x) * (l2.x - l1.x)) + ((p.y - l1.y) * (l2.y - l1.y))) / ((v.x * v.x) + (v.y * v.y))); if ((((_local4 > 0)) && ((_local4 < 1)))){ v.multiplyEq(_local4); v.plusEq(l1); v.minusEq(p); _local5 = ((v.x * v.x) + (v.y * v.y)); if (_local5 < (_local3 * _local3)){ _arg2.displayObject3D = line.instance; _arg2.material = renderer; _arg2.renderable = line; _arg2.hasHit = true; cp3d.reset((line.v1.x - line.v0.x), (line.v1.y - line.v0.y), (line.v1.x - line.v0.x)); cp3d.x = (cp3d.x * _local4); cp3d.y = (cp3d.y * _local4); cp3d.z = (cp3d.z * _local4); cp3d.x = (cp3d.x + line.v0.x); cp3d.y = (cp3d.y + line.v0.y); cp3d.z = (cp3d.z + line.v0.z); _arg2.x = cp3d.x; _arg2.y = cp3d.y; _arg2.z = cp3d.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; }; return (_arg2); } } }//package org.papervision3d.core.render.command
Section 298
//RenderParticle (org.papervision3d.core.render.command.RenderParticle) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.special.*; public class RenderParticle extends RenderableListItem implements IRenderListItem { public var particle:Particle; public var renderMat:ParticleMaterial; public function RenderParticle(_arg1:Particle){ this.particle = _arg1; this.renderableInstance = _arg1; this.renderable = Particle; this.instance = _arg1.instance; } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ renderMat = particle.material; if (renderMat.interactive){ if (particle.renderRect.contains(_arg1.x, _arg1.y)){ _arg2.displayObject3D = particle.instance; _arg2.material = renderMat; _arg2.renderable = particle; _arg2.hasHit = true; _arg2.x = particle.x; _arg2.y = particle.y; _arg2.z = particle.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; return (_arg2); } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ particle.material.drawParticle(particle, _arg2, _arg1); } } }//package org.papervision3d.core.render.command
Section 299
//RenderTriangle (org.papervision3d.core.render.command.RenderTriangle) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.*; import org.papervision3d.core.render.draw.*; public class RenderTriangle extends RenderableListItem implements IRenderListItem { public var create:Function; public var triangle:Triangle3D; private var bzf:Number; private var det:Number; private var axf:Number; private var v12:Vertex3DInstance; private var faz:Number; private var position:Number3D; private var ayf:Number; private var au:Number; private var av:Number; private var ax:Number; private var ay:Number; private var v20:Vertex3DInstance; private var fbz:Number; private var az:Number; private var azf:Number; private var bu:Number; private var bv:Number; private var bx:Number; private var by:Number; private var bz:Number; private var fcz:Number; private var uv01:NumberUV; private var cv:Number; private var cx:Number; private var cy:Number; private var cz:Number; private var cu:Number; public var v0:Vertex3DInstance; public var v1:Vertex3DInstance; private var db:Number; private var dc:Number; private var uv12:NumberUV; public var v2:Vertex3DInstance; public var container:Sprite; private var cxf:Number; private var da:Number; protected var vx0:Vertex3DInstance; public var uv0:NumberUV; public var uv1:NumberUV; public var uv2:NumberUV; protected var vx1:Vertex3DInstance; protected var vx2:Vertex3DInstance; private var uv20:NumberUV; public var renderer:ITriangleDrawer; private var cyf:Number; private var czf:Number; private var bxf:Number; protected var vPointL:Vertex3DInstance; private var byf:Number; public var renderMat:MaterialObject3D; private var v01:Vertex3DInstance; protected static var resPA:Vertex3DInstance = new Vertex3DInstance(); protected static var resBA:Vertex3DInstance = new Vertex3DInstance(); protected static var vPoint:Vertex3DInstance = new Vertex3DInstance(); protected static var resRA:Vertex3DInstance = new Vertex3DInstance(); public function RenderTriangle(_arg1:Triangle3D):void{ position = new Number3D(); super(); this.triangle = _arg1; this.instance = _arg1.instance; renderableInstance = _arg1; renderable = Triangle3D; this.v0 = _arg1.v0.vertex3DInstance; this.v1 = _arg1.v1.vertex3DInstance; this.v2 = _arg1.v2.vertex3DInstance; this.uv0 = _arg1.uv0; this.uv1 = _arg1.uv1; this.uv2 = _arg1.uv2; this.renderer = _arg1.material; update(); } private function deepHitTest(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:RenderHitData):RenderHitData{ var _local4:Vertex3DInstance; var _local5:Vertex3DInstance; var _local6:Vertex3DInstance; 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:Array; 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:BitmapData; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:MovieMaterial; var _local45:Rectangle; _local4 = _arg1.v0.vertex3DInstance; _local5 = _arg1.v1.vertex3DInstance; _local6 = _arg1.v2.vertex3DInstance; _local7 = (_local6.x - _local4.x); _local8 = (_local6.y - _local4.y); _local9 = (_local5.x - _local4.x); _local10 = (_local5.y - _local4.y); _local11 = (_arg2.x - _local4.x); _local12 = (_arg2.y - _local4.y); _local13 = ((_local7 * _local7) + (_local8 * _local8)); _local14 = ((_local7 * _local9) + (_local8 * _local10)); _local15 = ((_local7 * _local11) + (_local8 * _local12)); _local16 = ((_local9 * _local9) + (_local10 * _local10)); _local17 = ((_local9 * _local11) + (_local10 * _local12)); _local18 = (1 / ((_local13 * _local16) - (_local14 * _local14))); _local19 = (((_local16 * _local15) - (_local14 * _local17)) * _local18); _local20 = (((_local13 * _local17) - (_local14 * _local15)) * _local18); _local21 = (_arg1.v2.x - _arg1.v0.x); _local22 = (_arg1.v2.y - _arg1.v0.y); _local23 = (_arg1.v2.z - _arg1.v0.z); _local24 = (_arg1.v1.x - _arg1.v0.x); _local25 = (_arg1.v1.y - _arg1.v0.y); _local26 = (_arg1.v1.z - _arg1.v0.z); _local27 = ((_arg1.v0.x + (_local21 * _local19)) + (_local24 * _local20)); _local28 = ((_arg1.v0.y + (_local22 * _local19)) + (_local25 * _local20)); _local29 = ((_arg1.v0.z + (_local23 * _local19)) + (_local26 * _local20)); _local30 = _arg1.uv; _local31 = _local30[0].u; _local32 = _local30[1].u; _local33 = _local30[2].u; _local34 = _local30[0].v; _local35 = _local30[1].v; _local36 = _local30[2].v; _local37 = ((((_local32 - _local31) * _local20) + ((_local33 - _local31) * _local19)) + _local31); _local38 = ((((_local35 - _local34) * _local20) + ((_local36 - _local34) * _local19)) + _local34); if (triangle.material){ renderMat = _arg1.material; } else { renderMat = _arg1.instance.material; }; _local39 = renderMat.bitmap; _local40 = 1; _local41 = 1; _local42 = 0; _local43 = 0; if ((renderMat is MovieMaterial)){ _local44 = (renderMat as MovieMaterial); _local45 = _local44.rect; if (_local45){ _local42 = _local45.x; _local43 = _local45.y; _local40 = _local45.width; _local41 = _local45.height; }; } else { if (_local39){ _local40 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.widthOffset : _local39.width; _local41 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.heightOffset : _local39.height; }; }; _arg3.displayObject3D = _arg1.instance; _arg3.material = renderMat; _arg3.renderable = _arg1; _arg3.hasHit = true; position.x = _local27; position.y = _local28; position.z = _local29; Matrix3D.multiplyVector(_arg1.instance.world, position); _arg3.x = position.x; _arg3.y = position.y; _arg3.z = position.z; _arg3.u = ((_local37 * _local40) + _local42); _arg3.v = ((_local41 - (_local38 * _local41)) + _local43); return (_arg3); } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ renderMat = triangle.material; if (!renderMat){ renderMat = triangle.instance.material; }; if (((renderMat) && (renderMat.interactive))){ vPointL = RenderTriangle.vPoint; vPointL.x = _arg1.x; vPointL.y = _arg1.y; vx0 = triangle.v0.vertex3DInstance; vx1 = triangle.v1.vertex3DInstance; vx2 = triangle.v2.vertex3DInstance; if (sameSide(vPointL, vx0, vx1, vx2)){ if (sameSide(vPointL, vx1, vx0, vx2)){ if (sameSide(vPointL, vx2, vx0, vx1)){ return (deepHitTest(triangle, vPointL, _arg2)); }; }; }; }; return (_arg2); } public function fivepointcut(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance, _arg5:Vertex3DInstance, _arg6:NumberUV, _arg7:NumberUV, _arg8:NumberUV, _arg9:NumberUV, _arg10:NumberUV):Array{ if (_arg1.distanceSqr(_arg4) < _arg2.distanceSqr(_arg5)){ return ([create(renderableInstance, renderer, _arg1, _arg2, _arg4, _arg6, _arg7, _arg9), create(renderableInstance, renderer, _arg2, _arg3, _arg4, _arg7, _arg8, _arg9), create(renderableInstance, renderer, _arg1, _arg4, _arg5, _arg6, _arg9, _arg10)]); }; return ([create(renderableInstance, renderer, _arg1, _arg2, _arg5, _arg6, _arg7, _arg10), create(renderableInstance, renderer, _arg2, _arg3, _arg4, _arg7, _arg8, _arg9), create(renderableInstance, renderer, _arg2, _arg4, _arg5, _arg7, _arg9, _arg10)]); } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ renderer.drawTriangle(this, _arg2, _arg1); } final override public function quarter(_arg1:Number):Array{ if (area < 20){ return (null); }; v01 = Vertex3DInstance.median(v0, v1, _arg1); v12 = Vertex3DInstance.median(v1, v2, _arg1); v20 = Vertex3DInstance.median(v2, v0, _arg1); uv01 = NumberUV.median(uv0, uv1); uv12 = NumberUV.median(uv1, uv2); uv20 = NumberUV.median(uv2, uv0); return ([create(renderableInstance, renderer, v0, v01, v20, uv0, uv01, uv20), create(renderableInstance, renderer, v1, v12, v01, uv1, uv12, uv01), create(renderableInstance, renderer, v2, v20, v12, uv2, uv20, uv12), create(renderableInstance, renderer, v01, v12, v20, uv01, uv12, uv20)]); } final override public function getZ(_arg1:Number, _arg2:Number, _arg3:Number):Number{ ax = v0.x; ay = v0.y; az = v0.z; bx = v1.x; by = v1.y; bz = v1.z; cx = v2.x; cy = v2.y; cz = v2.z; if ((((ax == _arg1)) && ((ay == _arg2)))){ return (az); }; if ((((bx == _arg1)) && ((by == _arg2)))){ return (bz); }; if ((((cx == _arg1)) && ((cy == _arg2)))){ return (cz); }; azf = (az / _arg3); bzf = (bz / _arg3); czf = (cz / _arg3); faz = (1 + azf); fbz = (1 + bzf); fcz = (1 + czf); axf = ((ax * faz) - (_arg1 * azf)); bxf = ((bx * fbz) - (_arg1 * bzf)); cxf = ((cx * fcz) - (_arg1 * czf)); ayf = ((ay * faz) - (_arg2 * azf)); byf = ((by * fbz) - (_arg2 * bzf)); cyf = ((cy * fcz) - (_arg2 * czf)); det = (((axf * (byf - cyf)) + (bxf * (cyf - ayf))) + (cxf * (ayf - byf))); da = (((_arg1 * (byf - cyf)) + (bxf * (cyf - _arg2))) + (cxf * (_arg2 - byf))); db = (((axf * (_arg2 - cyf)) + (_arg1 * (cyf - ayf))) + (cxf * (ayf - _arg2))); dc = (((axf * (byf - _arg2)) + (bxf * (_arg2 - ayf))) + (_arg1 * (ayf - byf))); return (((((da * az) + (db * bz)) + (dc * cz)) / det)); } override public function update():void{ if (v0.x > v1.x){ if (v0.x > v2.x){ maxX = v0.x; } else { maxX = v2.x; }; } else { if (v1.x > v2.x){ maxX = v1.x; } else { maxX = v2.x; }; }; if (v0.x < v1.x){ if (v0.x < v2.x){ minX = v0.x; } else { minX = v2.x; }; } else { if (v1.x < v2.x){ minX = v1.x; } else { minX = v2.x; }; }; if (v0.y > v1.y){ if (v0.y > v2.y){ maxY = v0.y; } else { maxY = v2.y; }; } else { if (v1.y > v2.y){ maxY = v1.y; } else { maxY = v2.y; }; }; if (v0.y < v1.y){ if (v0.y < v2.y){ minY = v0.y; } else { minY = v2.y; }; } else { if (v1.y < v2.y){ minY = v1.y; } else { minY = v2.y; }; }; if (v0.z > v1.z){ if (v0.z > v2.z){ maxZ = v0.z; } else { maxZ = v2.z; }; } else { if (v1.z > v2.z){ maxZ = v1.z; } else { maxZ = v2.z; }; }; if (v0.z < v1.z){ if (v0.z < v2.z){ minZ = v0.z; } else { minZ = v2.z; }; } else { if (v1.z < v2.z){ minZ = v1.z; } else { minZ = v2.z; }; }; screenZ = (((v0.z + v1.z) + v2.z) / 3); area = (0.5 * (((v0.x * (v2.y - v1.y)) + (v1.x * (v0.y - v2.y))) + (v2.x * (v1.y - v0.y)))); } public function sameSide(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ Vertex3DInstance.subTo(_arg4, _arg3, resBA); Vertex3DInstance.subTo(_arg1, _arg3, resPA); Vertex3DInstance.subTo(_arg2, _arg3, resRA); return (((Vertex3DInstance.cross(resBA, resPA) * Vertex3DInstance.cross(resBA, resRA)) >= 0)); } } }//package org.papervision3d.core.render.command
Section 300
//QuadTree (org.papervision3d.core.render.data.QuadTree) package org.papervision3d.core.render.data { import flash.display.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.clipping.draw.*; public final class QuadTree { private var _children:Array; private var _root:QuadTreeNode; private var _rect:RectangleClipping; private var _maxlevel:uint;// = 4 private var _maxX:Number; private var _maxY:Number; private var _child:RenderableListItem; private var _minX:Number; private var _minY:Number; private var i:int; private var _center:Array; private var _clip:Clipping; private var _result:Array; private var _except:DisplayObject3D; public function QuadTree(){ _maxlevel = 4; super(); } public function remove(_arg1:RenderableListItem):void{ _center = _arg1.quadrant.center; _center.splice(_center.indexOf(_arg1), 1); } public function getOverlaps(_arg1:RenderableListItem, _arg2:DisplayObject3D=null):Array{ _result = []; _minX = _arg1.minX; _minY = _arg1.minY; _maxX = _arg1.maxX; _maxY = _arg1.maxY; _except = _arg2; getList(_arg1.quadrant); getParent(_arg1.quadrant); return (_result); } public function get clip():Clipping{ return (_clip); } public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ _root.render(-(Infinity), _arg1, _arg2); } public function list():Array{ _result = []; _minX = -1000000; _minY = -1000000; _maxX = 1000000; _maxY = 1000000; _except = null; getList(_root); return (_result); } public function get maxLevel():uint{ return (_maxlevel); } private function getList(_arg1:QuadTreeNode):void{ if (!_arg1){ return; }; if (((_arg1.onlysourceFlag) && ((_except == _arg1.onlysource)))){ return; }; if (_minX < _arg1.xdiv){ if (((_arg1.lefttopFlag) && ((_minY < _arg1.ydiv)))){ getList(_arg1.lefttop); }; if (((_arg1.leftbottomFlag) && ((_maxY > _arg1.ydiv)))){ getList(_arg1.leftbottom); }; }; if (_maxX > _arg1.xdiv){ if (((_arg1.righttopFlag) && ((_minY < _arg1.ydiv)))){ getList(_arg1.righttop); }; if (((_arg1.rightbottomFlag) && ((_maxY > _arg1.ydiv)))){ getList(_arg1.rightbottom); }; }; _children = _arg1.center; if (_children != null){ i = _children.length; while (i--) { _child = _children[i]; if ((((((((((((_except == null)) || (!((_child.instance == _except))))) && ((_child.maxX > _minX)))) && ((_child.minX < _maxX)))) && ((_child.maxY > _minY)))) && ((_child.minY < _maxY)))){ _result.push(_child); }; }; }; } public function getRoot():QuadTreeNode{ return (_root); } private function getParent(_arg1:QuadTreeNode=null):void{ if (!_arg1){ return; }; _arg1 = _arg1.parent; if ((((_arg1 == null)) || (((_arg1.onlysourceFlag) && ((_except == _arg1.onlysource)))))){ return; }; _children = _arg1.center; if (_children != null){ i = _children.length; while (i--) { _child = _children[i]; if ((((((((((((_except == null)) || (!((_child.instance == _except))))) && ((_child.maxX > _minX)))) && ((_child.minX < _maxX)))) && ((_child.maxY > _minY)))) && ((_child.minY < _maxY)))){ _result.push(_child); }; }; }; getParent(_arg1); } public function add(_arg1:RenderableListItem):void{ if (_clip.check(_arg1)){ _root.push(_arg1); }; } public function set maxLevel(_arg1:uint):void{ _maxlevel = _arg1; if (_root){ _root.maxlevel = _maxlevel; }; } public function set clip(_arg1:Clipping):void{ _clip = _arg1; _rect = _clip.asRectangleClipping(); if (!_root){ _root = new QuadTreeNode(((_rect.minX + _rect.maxX) / 2), ((_rect.minY + _rect.maxY) / 2), (_rect.maxX - _rect.minX), (_rect.maxY - _rect.minY), 0, null, _maxlevel); } else { _root.reset(((_rect.minX + _rect.maxX) / 2), ((_rect.minY + _rect.maxY) / 2), (_rect.maxX - _rect.minX), (_rect.maxY - _rect.minY), _maxlevel); }; } } }//package org.papervision3d.core.render.data
Section 301
//QuadTreeNode (org.papervision3d.core.render.data.QuadTreeNode) package org.papervision3d.core.render.data { import flash.display.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.objects.*; public final class QuadTreeNode { private var level:int; public var leftbottomFlag:Boolean; public var xdiv:Number; private var halfheight:Number; public var maxlevel:int;// = 4 private var render_center_length:int;// = -1 public var parent:QuadTreeNode; public var righttop:QuadTreeNode; public var righttopFlag:Boolean; public var rightbottom:QuadTreeNode; public var rightbottomFlag:Boolean; public var center:Array; public var onlysource:DisplayObject3D; public var onlysourceFlag:Boolean;// = true public var lefttop:QuadTreeNode; private var render_center_index:int;// = -1 private var halfwidth:Number; public var ydiv:Number; public var leftbottom:QuadTreeNode; public var lefttopFlag:Boolean; public var create:Function; public var hasContent:Boolean;// = false public function QuadTreeNode(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int, _arg6:QuadTreeNode=null, _arg7:uint=4){ render_center_length = -1; render_center_index = -1; maxlevel = 4; onlysourceFlag = true; hasContent = false; super(); this.level = _arg5; this.xdiv = _arg1; this.ydiv = _arg2; halfwidth = (_arg3 / 2); halfheight = (_arg4 / 2); this.parent = _arg6; this.maxlevel = _arg7; } public function render(_arg1:Number, _arg2:RenderSessionData, _arg3:Graphics):void{ var _local4:RenderableListItem; 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; }; while (render_center_index < render_center_length) { _local4 = center[render_center_index]; if (_local4.screenZ < _arg1){ break; }; render_other(_local4.screenZ, _arg2, _arg3); _local4.render(_arg2, _arg3); _arg2.viewPort.lastRenderList.push(_local4); render_center_index++; }; if (render_center_index == render_center_length){ center = null; }; render_other(_arg1, _arg2, _arg3); } public function push(_arg1:RenderableListItem):void{ hasContent = true; if (onlysourceFlag){ if (((!((onlysource == null))) && (!((onlysource == _arg1.instance))))){ onlysourceFlag = false; }; onlysource = _arg1.instance; }; if (level < maxlevel){ if (_arg1.maxX <= xdiv){ if (_arg1.maxY <= ydiv){ if (lefttop == null){ lefttopFlag = true; lefttop = new QuadTreeNode((xdiv - (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, (level + 1), this, maxlevel); } else { if (!lefttopFlag){ lefttopFlag = true; lefttop.reset((xdiv - (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, maxlevel); }; }; lefttop.push(_arg1); return; } else { if (_arg1.minY >= ydiv){ if (leftbottom == null){ leftbottomFlag = true; leftbottom = new QuadTreeNode((xdiv - (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, (level + 1), this, maxlevel); } else { if (!leftbottomFlag){ leftbottomFlag = true; leftbottom.reset((xdiv - (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, maxlevel); }; }; leftbottom.push(_arg1); return; }; }; } else { if (_arg1.minX >= xdiv){ if (_arg1.maxY <= ydiv){ if (righttop == null){ righttopFlag = true; righttop = new QuadTreeNode((xdiv + (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, (level + 1), this, maxlevel); } else { if (!righttopFlag){ righttopFlag = true; righttop.reset((xdiv + (halfwidth / 2)), (ydiv - (halfheight / 2)), halfwidth, halfheight, maxlevel); }; }; righttop.push(_arg1); return; } else { if (_arg1.minY >= ydiv){ if (rightbottom == null){ rightbottomFlag = true; rightbottom = new QuadTreeNode((xdiv + (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, (level + 1), this, maxlevel); } else { if (!rightbottomFlag){ rightbottomFlag = true; rightbottom.reset((xdiv + (halfwidth / 2)), (ydiv + (halfheight / 2)), halfwidth, halfheight, maxlevel); }; }; rightbottom.push(_arg1); return; }; }; }; }; }; if (center == null){ center = new Array(); }; center.push(_arg1); _arg1.quadrant = this; } private function render_other(_arg1:Number, _arg2:RenderSessionData, _arg3:Graphics):void{ if (lefttopFlag){ lefttop.render(_arg1, _arg2, _arg3); }; if (leftbottomFlag){ leftbottom.render(_arg1, _arg2, _arg3); }; if (righttopFlag){ righttop.render(_arg1, _arg2, _arg3); }; if (rightbottomFlag){ rightbottom.render(_arg1, _arg2, _arg3); }; } public function reset(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:uint):void{ this.xdiv = _arg1; this.ydiv = _arg2; halfwidth = (_arg3 / 2); halfheight = (_arg4 / 2); lefttopFlag = false; leftbottomFlag = false; righttopFlag = false; rightbottomFlag = false; onlysourceFlag = true; onlysource = null; render_center_length = -1; render_center_index = -1; hasContent = false; maxlevel = _arg5; } public function getRect():Rectangle{ return (new Rectangle(xdiv, ydiv, (halfwidth * 2), (halfheight * 2))); } } }//package org.papervision3d.core.render.data
Section 302
//RenderHitData (org.papervision3d.core.render.data.RenderHitData) package org.papervision3d.core.render.data { import org.papervision3d.core.proto.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class RenderHitData { public var y:Number; public var endTime:int;// = 0 public var displayObject3D:DisplayObject3D; public var startTime:int;// = 0 public var hasHit:Boolean;// = false public var material:MaterialObject3D; public var renderable:IRenderable; public var u:Number; public var v:Number; public var x:Number; public var z:Number; public function RenderHitData():void{ startTime = 0; endTime = 0; hasHit = false; super(); } public function clear():void{ startTime = 0; endTime = 0; hasHit = false; displayObject3D = null; material = null; renderable = null; u = 0; v = 0; x = 0; y = 0; z = 0; } public function clone():RenderHitData{ var _local1:RenderHitData; _local1 = new RenderHitData(); _local1.startTime = startTime; _local1.endTime = endTime; _local1.hasHit = hasHit; _local1.displayObject3D = displayObject3D; _local1.material = material; _local1.renderable = renderable; _local1.u = u; _local1.v = v; _local1.x = x; _local1.y = y; _local1.z = z; return (_local1); } public function toString():String{ return (((displayObject3D + " ") + renderable)); } } }//package org.papervision3d.core.render.data
Section 303
//RenderSessionData (org.papervision3d.core.render.data.RenderSessionData) package org.papervision3d.core.render.data { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.view.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.*; import org.papervision3d.core.clipping.*; public class RenderSessionData { public var renderer:IRenderEngine; public var particleCuller:IParticleCuller; public var viewPort:Viewport3D; public var triangleCuller:ITriangleCuller; public var container:Sprite; public var clipping:DefaultClipping; public var quadrantTree:QuadTree; public var scene:SceneObject3D; public var renderStatistics:RenderStatistics; public var renderObjects:Array; public var camera:CameraObject3D; public var renderLayers:Array; public var sorted:Boolean; public function RenderSessionData():void{ this.renderStatistics = new RenderStatistics(); } public function destroy():void{ triangleCuller = null; particleCuller = null; viewPort = null; container = null; scene = null; camera = null; renderer = null; renderStatistics = null; renderObjects = null; renderLayers = null; clipping = null; quadrantTree = null; } public function clone():RenderSessionData{ var _local1:RenderSessionData; _local1 = new RenderSessionData(); _local1.triangleCuller = triangleCuller; _local1.particleCuller = particleCuller; _local1.viewPort = viewPort; _local1.container = container; _local1.scene = scene; _local1.camera = camera; _local1.renderer = renderer; _local1.renderStatistics = renderStatistics.clone(); _local1.clipping = clipping; _local1.quadrantTree = quadrantTree; return (_local1); } } }//package org.papervision3d.core.render.data
Section 304
//RenderStatistics (org.papervision3d.core.render.data.RenderStatistics) package org.papervision3d.core.render.data { public class RenderStatistics { public var renderTime:int;// = 0 public var culledObjects:int;// = 0 public var shadedTriangles:int;// = 0 public var culledParticles:int;// = 0 public var culledTriangles:int;// = 0 public var triangles:int;// = 0 public var particles:int;// = 0 public var rendered:int;// = 0 public var projectionTime:int;// = 0 public var filteredObjects:int;// = 0 public var lines:int;// = 0 public function RenderStatistics(){ projectionTime = 0; renderTime = 0; rendered = 0; triangles = 0; culledTriangles = 0; particles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; super(); } public function clone():RenderStatistics{ var _local1:RenderStatistics; _local1 = new RenderStatistics(); _local1.projectionTime = projectionTime; _local1.renderTime = renderTime; _local1.rendered = rendered; _local1.particles = particles; _local1.triangles = triangles; _local1.culledTriangles = culledTriangles; _local1.lines = lines; _local1.shadedTriangles = shadedTriangles; _local1.filteredObjects = filteredObjects; _local1.culledObjects = culledObjects; return (_local1); } public function clear():void{ projectionTime = 0; renderTime = 0; rendered = 0; particles = 0; triangles = 0; culledTriangles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; } public function toString():String{ return (new String((((((((((((((((((("ProjectionTime:" + projectionTime) + " RenderTime:") + renderTime) + " Particles:") + particles) + " CulledParticles :") + culledParticles) + " Triangles:") + triangles) + " ShadedTriangles :") + shadedTriangles) + " CulledTriangles:") + culledTriangles) + " FilteredObjects:") + filteredObjects) + " CulledObjects:") + culledObjects) + ""))); } } }//package org.papervision3d.core.render.data
Section 305
//ILineDrawer (org.papervision3d.core.render.draw.ILineDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; public interface ILineDrawer { function drawLine(_arg1:RenderLine, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 306
//IParticleDrawer (org.papervision3d.core.render.draw.IParticleDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; public interface IParticleDrawer { function updateRenderRect(_arg1:Particle):void; function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 307
//ITriangleDrawer (org.papervision3d.core.render.draw.ITriangleDrawer) package org.papervision3d.core.render.draw { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; public interface ITriangleDrawer { function drawRT(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData):void; function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void; } }//package org.papervision3d.core.render.draw
Section 308
//BasicRenderFilter (org.papervision3d.core.render.filter.BasicRenderFilter) package org.papervision3d.core.render.filter { public class BasicRenderFilter implements IRenderFilter { public function filter(_arg1:Array):int{ return (0); } } }//package org.papervision3d.core.render.filter
Section 309
//IRenderFilter (org.papervision3d.core.render.filter.IRenderFilter) package org.papervision3d.core.render.filter { public interface IRenderFilter { function filter(_arg1:Array):int; } }//package org.papervision3d.core.render.filter
Section 310
//IUpdateAfterMaterial (org.papervision3d.core.render.material.IUpdateAfterMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateAfterMaterial { function updateAfterRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 311
//IUpdateBeforeMaterial (org.papervision3d.core.render.material.IUpdateBeforeMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateBeforeMaterial { function isUpdateable():Boolean; function updateBeforeRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 312
//MaterialManager (org.papervision3d.core.render.material.MaterialManager) package org.papervision3d.core.render.material { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.utils.*; public class MaterialManager { private var materials:Dictionary; private static var instance:MaterialManager; public function MaterialManager():void{ if (instance){ throw (new Error("Only 1 instance of materialmanager allowed")); }; init(); } private function init():void{ materials = new Dictionary(true); } private function _unRegisterMaterial(_arg1:MaterialObject3D):void{ delete materials[_arg1]; } public function updateMaterialsAfterRender(_arg1:RenderSessionData):void{ var _local2:IUpdateAfterMaterial; var _local3:*; for (_local3 in materials) { if ((_local3 is IUpdateAfterMaterial)){ _local2 = (_local3 as IUpdateAfterMaterial); _local2.updateAfterRender(_arg1); }; }; } private function _registerMaterial(_arg1:MaterialObject3D):void{ materials[_arg1] = true; } public function updateMaterialsBeforeRender(_arg1:RenderSessionData):void{ var _local2:IUpdateBeforeMaterial; var _local3:*; for (_local3 in materials) { if ((_local3 is IUpdateBeforeMaterial)){ _local2 = (_local3 as IUpdateBeforeMaterial); if (_local2.isUpdateable()){ _local2.updateBeforeRender(_arg1); }; }; }; } public static function getInstance():MaterialManager{ if (!instance){ instance = new (MaterialManager); }; return (instance); } public static function unRegisterMaterial(_arg1:MaterialObject3D):void{ getInstance()._unRegisterMaterial(_arg1); } public static function registerMaterial(_arg1:MaterialObject3D):void{ getInstance()._registerMaterial(_arg1); } } }//package org.papervision3d.core.render.material
Section 313
//BasicProjectionPipeline (org.papervision3d.core.render.project.BasicProjectionPipeline) package org.papervision3d.core.render.project { import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; public class BasicProjectionPipeline extends ProjectionPipeline { public function BasicProjectionPipeline(){ init(); } protected function init():void{ } protected function projectObject(_arg1:DisplayObject3D, _arg2:RenderSessionData, _arg3:Number):void{ _arg1.cullTest = _arg3; if (_arg1.parent){ _arg1.project((_arg1.parent as DisplayObject3D), _arg2); } else { _arg1.project(_arg2.camera, _arg2); }; } override public function project(_arg1:RenderSessionData):void{ var _local2:Array; var _local3:DisplayObject3D; var _local4:Number; var _local5:Number; _arg1.camera.transformView(); _local2 = _arg1.renderObjects; _local4 = _local2.length; if (_arg1.camera.useProjectionMatrix){ for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ _local5 = _arg1.viewPort.viewportObjectFilter.testObject(_local3); if (_local5){ projectObject(_local3, _arg1, _local5); } else { _arg1.renderStatistics.filteredObjects++; }; } else { projectObject(_local3, _arg1, 1); }; }; }; } else { for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ _local5 = _arg1.viewPort.viewportObjectFilter.testObject(_local3); if (_local5){ projectObject(_local3, _arg1, _local5); } else { _arg1.renderStatistics.filteredObjects++; }; } else { projectObject(_local3, _arg1, 1); }; }; }; }; } } }//package org.papervision3d.core.render.project
Section 314
//ProjectionPipeline (org.papervision3d.core.render.project.ProjectionPipeline) package org.papervision3d.core.render.project { import org.papervision3d.core.render.data.*; public class ProjectionPipeline { public function project(_arg1:RenderSessionData):void{ } } }//package org.papervision3d.core.render.project
Section 315
//IShaderRenderer (org.papervision3d.core.render.shader.IShaderRenderer) package org.papervision3d.core.render.shader { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.materials.shaders.*; public interface IShaderRenderer { function getLayerForShader(_arg1:Shader):Sprite; function render(_arg1:RenderSessionData):void; function destroy():void; function clear():void; } }//package org.papervision3d.core.render.shader
Section 316
//ShaderObjectData (org.papervision3d.core.render.shader.ShaderObjectData) package org.papervision3d.core.render.shader { import flash.display.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.*; import org.papervision3d.materials.shaders.*; import flash.utils.*; public class ShaderObjectData { public var shaderRenderer:ShaderRenderer; public var triangleUVS:Dictionary; public var renderTriangleUVS:Dictionary; public var lightMatrices:Dictionary; public var shadedMaterial:ShadedMaterial; public var uvMatrices:Dictionary; private var origin:Point; public var triangleRects:Dictionary; public var material:BitmapMaterial; protected var triangleBitmaps:Dictionary; public var object:DisplayObject3D; public function ShaderObjectData(_arg1:DisplayObject3D, _arg2:BitmapMaterial, _arg3:ShadedMaterial):void{ origin = new Point(0, 0); super(); shaderRenderer = new ShaderRenderer(); lightMatrices = new Dictionary(); uvMatrices = new Dictionary(); this.object = _arg1; this.material = _arg2; this.shadedMaterial = _arg3; triangleUVS = new Dictionary(); renderTriangleUVS = new Dictionary(); triangleBitmaps = new Dictionary(); triangleRects = new Dictionary(); } public function getRectFor(_arg1:Triangle3D):Rectangle{ 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:Number; if (!triangleRects[_arg1]){ _local2 = material.bitmap.width; _local3 = material.bitmap.height; _local4 = (_arg1.uv[0].u * _local2); _local5 = ((1 - _arg1.uv[0].v) * _local3); _local6 = (_arg1.uv[1].u * _local2); _local7 = ((1 - _arg1.uv[1].v) * _local3); _local8 = (_arg1.uv[2].u * _local2); _local9 = ((1 - _arg1.uv[2].v) * _local3); _local10 = Math.min(Math.min(_local4, _local6), _local8); _local11 = Math.min(Math.min(_local5, _local7), _local9); _local12 = Math.max(Math.max(_local4, _local6), _local8); _local13 = Math.max(Math.max(_local5, _local7), _local9); _local14 = (_local12 - _local10); _local15 = (_local13 - _local11); if (_local14 <= 0){ _local14 = 1; }; if (_local15 <= 0){ _local15 = 1; }; return ((triangleRects[_arg1] = new Rectangle(_local10, _local11, _local14, _local15))); }; return (triangleRects[_arg1]); } private function perturbUVMatrix(_arg1:Matrix, _arg2:Triangle3D, _arg3:Number=2):void{ 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; _local4 = material.bitmap.width; _local5 = material.bitmap.height; _local6 = _arg2.uv[0].u; _local7 = (1 - _arg2.uv[0].v); _local8 = _arg2.uv[1].u; _local9 = (1 - _arg2.uv[1].v); _local10 = _arg2.uv[2].u; _local11 = (1 - _arg2.uv[2].v); _local12 = (_local6 * _local4); _local13 = (_local7 * _local5); _local14 = (_local8 * _local4); _local15 = (_local9 * _local5); _local16 = (_local10 * _local4); _local17 = (_local11 * _local5); _local18 = (((_local10 + _local8) + _local6) / 3); _local19 = (((_local11 + _local9) + _local7) / 3); _local20 = (_local6 - _local18); _local21 = (_local7 - _local19); _local22 = (_local8 - _local18); _local23 = (_local9 - _local19); _local24 = (_local10 - _local18); _local25 = (_local11 - _local19); _local26 = ((_local20)<0) ? -(_local20) : _local20; _local27 = ((_local21)<0) ? -(_local21) : _local21; _local28 = ((_local22)<0) ? -(_local22) : _local22; _local29 = ((_local23)<0) ? -(_local23) : _local23; _local30 = ((_local24)<0) ? -(_local24) : _local24; _local31 = ((_local25)<0) ? -(_local25) : _local25; _local32 = ((_local26)>_local27) ? (1 / _local26) : (1 / _local27); _local33 = ((_local28)>_local29) ? (1 / _local28) : (1 / _local29); _local34 = ((_local30)>_local31) ? (1 / _local30) : (1 / _local31); _local12 = (_local12 - ((-(_local20) * _local32) * _arg3)); _local13 = (_local13 - ((-(_local21) * _local32) * _arg3)); _local14 = (_local14 - ((-(_local22) * _local33) * _arg3)); _local15 = (_local15 - ((-(_local23) * _local33) * _arg3)); _local16 = (_local16 - ((-(_local24) * _local34) * _arg3)); _local17 = (_local17 - ((-(_local25) * _local34) * _arg3)); _arg1.tx = _local12; _arg1.ty = _local13; _arg1.a = (_local14 - _local12); _arg1.b = (_local15 - _local13); _arg1.c = (_local16 - _local12); _arg1.d = (_local17 - _local13); } public function getOutputBitmapFor(_arg1:Triangle3D):BitmapData{ var _local2:Rectangle; var _local3:BitmapData; var _local4:Rectangle; if (!triangleBitmaps[_arg1]){ _local2 = getRectFor(_arg1); _local3 = (triangleBitmaps[_arg1] = new BitmapData(Math.ceil(_local2.width), Math.ceil(_local2.height), false, 0)); _local4 = new Rectangle(0, 0, _local3.width, _local3.height); _local3.copyPixels(material.bitmap, _local4, origin); } else { _local2 = getRectFor(_arg1); }; if (((material.bitmap) && (_local2))){ triangleBitmaps[_arg1].copyPixels(material.bitmap, _local2, origin); }; return (triangleBitmaps[_arg1]); } public function updateBeforeRender():void{ } public function getPerTriUVForShader(_arg1:Triangle3D):Matrix{ var _local2:Matrix; 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:Rectangle; if (!renderTriangleUVS[_arg1]){ _local2 = (renderTriangleUVS[_arg1] = new Matrix()); _local3 = material.bitmap.width; _local4 = material.bitmap.height; _local5 = (_arg1.uv[0].u * _local3); _local6 = ((1 - _arg1.uv[0].v) * _local4); _local7 = (_arg1.uv[1].u * _local3); _local8 = ((1 - _arg1.uv[1].v) * _local4); _local9 = (_arg1.uv[2].u * _local3); _local10 = ((1 - _arg1.uv[2].v) * _local4); _local11 = getRectFor(_arg1); _local2.tx = (_local5 - _local11.x); _local2.ty = (_local6 - _local11.y); _local2.a = (_local7 - _local5); _local2.b = (_local8 - _local6); _local2.c = (_local9 - _local5); _local2.d = (_local10 - _local6); }; return (renderTriangleUVS[_arg1]); } public function getPerTriUVForDraw(_arg1:Triangle3D):Matrix{ var _local2:Matrix; 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:Rectangle; if (!triangleUVS[_arg1]){ _local2 = (triangleUVS[_arg1] = new Matrix()); _local3 = material.bitmap.width; _local4 = material.bitmap.height; _local5 = (_arg1.uv[0].u * _local3); _local6 = ((1 - _arg1.uv[0].v) * _local4); _local7 = (_arg1.uv[1].u * _local3); _local8 = ((1 - _arg1.uv[1].v) * _local4); _local9 = (_arg1.uv[2].u * _local3); _local10 = ((1 - _arg1.uv[2].v) * _local4); _local11 = getRectFor(_arg1); _local2.tx = (_local5 - _local11.x); _local2.ty = (_local6 - _local11.y); _local2.a = (_local7 - _local5); _local2.b = (_local8 - _local6); _local2.c = (_local9 - _local5); _local2.d = (_local10 - _local6); _local2.invert(); }; return (triangleUVS[_arg1]); } public function getUVMatrixForTriangle(_arg1:Triangle3D, _arg2:Boolean=false):Matrix{ var _local3:Matrix; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _local3 = uvMatrices[_arg1]; if (!_local3){ _local3 = new Matrix(); if (_arg2){ perturbUVMatrix(_local3, _arg1, 2); } else { if (material.bitmap){ _local4 = material.bitmap.width; _local5 = material.bitmap.height; _local6 = (_arg1.uv[0].u * _local4); _local7 = ((1 - _arg1.uv[0].v) * _local5); _local8 = (_arg1.uv[1].u * _local4); _local9 = ((1 - _arg1.uv[1].v) * _local5); _local10 = (_arg1.uv[2].u * _local4); _local11 = ((1 - _arg1.uv[2].v) * _local5); _local3.tx = _local6; _local3.ty = _local7; _local3.a = (_local8 - _local6); _local3.b = (_local9 - _local7); _local3.c = (_local10 - _local6); _local3.d = (_local11 - _local7); }; }; if (material.bitmap){ uvMatrices[_arg1] = _local3; }; }; return (_local3); } public function destroy():void{ var _local1:Object; for each (_local1 in uvMatrices) { uvMatrices[_local1] = null; }; uvMatrices = null; shaderRenderer.destroy(); shaderRenderer = null; lightMatrices = null; } } }//package org.papervision3d.core.render.shader
Section 317
//ShaderRenderer (org.papervision3d.core.render.shader.ShaderRenderer) package org.papervision3d.core.render.shader { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.materials.shaders.*; import flash.utils.*; public class ShaderRenderer extends EventDispatcher implements IShaderRenderer { public var container:Sprite; public var outputBitmap:BitmapData; public var bitmapContainer:Bitmap; public var shadeLayers:Dictionary; public var bitmapLayer:Sprite; private var _inputBitmapData:BitmapData; public var resizedInput:Boolean;// = false public function ShaderRenderer(){ resizedInput = false; super(); container = new Sprite(); bitmapLayer = new Sprite(); bitmapContainer = new Bitmap(); bitmapLayer.addChild(bitmapContainer); bitmapLayer.blendMode = BlendMode.NORMAL; shadeLayers = new Dictionary(); container.addChild(bitmapLayer); } public function destroy():void{ bitmapLayer = null; outputBitmap.dispose(); } public function getLayerForShader(_arg1:Shader):Sprite{ var _local2:Sprite; var _local3:Sprite; _local2 = new Sprite(); shadeLayers[_arg1] = _local2; _local3 = new Sprite(); _local2.addChild(_local3); if (inputBitmap != null){ _local3.graphics.beginFill(0, 0); _local3.graphics.drawRect(0, 0, inputBitmap.width, inputBitmap.height); _local3.graphics.endFill(); }; container.addChild(_local2); _local2.blendMode = _arg1.layerBlendMode; return (_local2); } public function get inputBitmap():BitmapData{ return (_inputBitmapData); } public function clear():void{ var _local1:Sprite; for each (_local1 in shadeLayers) { if (((((inputBitmap) && ((inputBitmap.width > 0)))) && ((inputBitmap.height > 0)))){ _local1.graphics.clear(); _local1.graphics.beginFill(0, 1); _local1.graphics.drawRect(0, 0, inputBitmap.width, inputBitmap.height); _local1.graphics.endFill(); }; }; } public function render(_arg1:RenderSessionData):void{ if (outputBitmap){ outputBitmap.fillRect(outputBitmap.rect, 0); bitmapContainer.bitmapData = inputBitmap; outputBitmap.draw(container, null, null, null, outputBitmap.rect, false); if (outputBitmap.transparent){ outputBitmap.copyChannel(inputBitmap, outputBitmap.rect, new Point(0, 0), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); }; }; } public function set inputBitmap(_arg1:BitmapData):void{ if (_arg1 != null){ if (_inputBitmapData != _arg1){ _inputBitmapData = _arg1; if (outputBitmap){ if (((!((_inputBitmapData.width == outputBitmap.width))) || (!((_inputBitmapData.height == outputBitmap.height))))){ resizedInput = true; outputBitmap.dispose(); outputBitmap = _inputBitmapData.clone(); }; } else { resizedInput = true; outputBitmap = _inputBitmapData.clone(); }; }; }; } } }//package org.papervision3d.core.render.shader
Section 318
//BasicRenderSorter (org.papervision3d.core.render.sort.BasicRenderSorter) package org.papervision3d.core.render.sort { public class BasicRenderSorter implements IRenderSorter { public function sort(_arg1:Array):void{ _arg1.sortOn("screenZ", Array.NUMERIC); } } }//package org.papervision3d.core.render.sort
Section 319
//IRenderSorter (org.papervision3d.core.render.sort.IRenderSorter) package org.papervision3d.core.render.sort { public interface IRenderSorter { function sort(_arg1:Array):void; } }//package org.papervision3d.core.render.sort
Section 320
//AbstractRenderEngine (org.papervision3d.core.render.AbstractRenderEngine) package org.papervision3d.core.render { import flash.events.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public class AbstractRenderEngine extends EventDispatcher implements IRenderEngine { public function AbstractRenderEngine(_arg1:IEventDispatcher=null){ super(_arg1); } public function removeFromRenderList(_arg1:IRenderListItem):int{ return (0); } public function addToRenderList(_arg1:RenderableListItem):int{ return (0); } public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D):RenderStatistics{ return (null); } } }//package org.papervision3d.core.render
Section 321
//IRenderEngine (org.papervision3d.core.render.IRenderEngine) package org.papervision3d.core.render { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public interface IRenderEngine { function addToRenderList(_arg1:RenderableListItem):int; function removeFromRenderList(_arg1:IRenderListItem):int; function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D):RenderStatistics; } }//package org.papervision3d.core.render
Section 322
//IVirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.IVirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { public interface IVirtualMouseEvent { } }//package org.papervision3d.core.utils.virtualmouse
Section 323
//VirtualMouse (org.papervision3d.core.utils.virtualmouse.VirtualMouse) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; import flash.display.*; import flash.geom.*; import org.papervision3d.core.log.*; import flash.utils.*; public class VirtualMouse extends EventDispatcher { private var _container:Sprite; private var lastDownTarget:DisplayObject; private var target:InteractiveObject; private var updateMouseDown:Boolean;// = false private var eventEvent:Class; private var _lastEvent:Event; private var mouseEventEvent:Class; private var location:Point; private var delta:int;// = 0 private var disabledEvents:Object; private var ignoredInstances:Dictionary; private var isLocked:Boolean;// = false private var lastWithinStage:Boolean;// = true private var lastLocation:Point; private var isDoubleClickEvent:Boolean;// = false private var lastMouseDown:Boolean;// = false private var altKey:Boolean;// = false private var _useNativeEvents:Boolean;// = false private var ctrlKey:Boolean;// = false private var shiftKey:Boolean;// = false private var _stage:Stage; public static const UPDATE:String = "update"; private static var _mouseIsDown:Boolean = false; public function VirtualMouse(_arg1:Stage=null, _arg2:Sprite=null, _arg3:Number=0, _arg4:Number=0){ altKey = false; ctrlKey = false; shiftKey = false; delta = 0; isLocked = false; isDoubleClickEvent = false; disabledEvents = new Object(); ignoredInstances = new Dictionary(true); lastMouseDown = false; updateMouseDown = false; lastWithinStage = true; _useNativeEvents = false; eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; super(); this.stage = _arg1; this.container = _arg2; location = new Point(_arg3, _arg4); lastLocation = location.clone(); addEventListener(UPDATE, handleUpdate); update(); } public function get mouseIsDown():Boolean{ return (_mouseIsDown); } public function get stage():Stage{ return (_stage); } public function get container():Sprite{ return (_container); } public function exitContainer():void{ var _local1:Point; if (!container){ return; }; _local1 = target.globalToLocal(location); if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (target != container){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; }; target = _stage; } public function release():void{ updateMouseDown = true; _mouseIsDown = false; if (!isLocked){ update(); }; } public function click():void{ press(); release(); } public function disableEvent(_arg1:String):void{ disabledEvents[_arg1] = true; } public function set container(_arg1:Sprite):void{ _container = _arg1; } public function get y():Number{ return (location.y); } public function set x(_arg1:Number):void{ location.x = _arg1; if (!isLocked){ update(); }; } public function get lastEvent():Event{ return (_lastEvent); } private function handleUpdate(_arg1:Event):void{ var _local2:Point; var _local3:Array; var _local4:InteractiveObject; var _local5:DisplayObject; var _local6:int; var _local7:Point; var _local8:Point; var _local9:Boolean; if (!container){ return; }; if (container.scrollRect){ PaperLogger.warning("The container that virtualMouse is trying to test against has a scrollRect defined, and may cause an issue with finding objects under a defined point. Use MovieMaterial.rect to set a rectangle area instead"); }; _local2 = new Point(); _local2.x = container.x; _local2.y = container.y; container.x = (container.y = 0); _local3 = container.getObjectsUnderPoint(location); container.x = _local2.x; container.y = _local2.y; _local6 = _local3.length; while (_local6--) { _local5 = _local3[_local6]; while (_local5) { if (ignoredInstances[_local5]){ _local4 = null; break; }; if (((_local4) && ((_local5 is SimpleButton)))){ _local4 = null; } else { if (((_local4) && (!(DisplayObjectContainer(_local5).mouseChildren)))){ _local4 = null; }; }; if (((((!(_local4)) && ((_local5 is InteractiveObject)))) && (InteractiveObject(_local5).mouseEnabled))){ _local4 = InteractiveObject(_local5); }; _local5 = _local5.parent; }; if (_local4){ break; }; }; if (!_local4){ _local4 = container; }; _local7 = target.globalToLocal(location); _local8 = _local4.globalToLocal(location); if (((!((lastLocation.x == location.x))) || (!((lastLocation.y == location.y))))){ _local9 = false; if (stage){ _local9 = (((((((location.x >= 0)) && ((location.y >= 0)))) && ((location.x <= stage.stageWidth)))) && ((location.y <= stage.stageHeight))); }; if (((((!(_local9)) && (lastWithinStage))) && (!(disabledEvents[Event.MOUSE_LEAVE])))){ _lastEvent = new eventEvent(Event.MOUSE_LEAVE, false, false); stage.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((_local9) && (!(disabledEvents[MouseEvent.MOUSE_MOVE])))){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_MOVE, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastWithinStage = _local9; }; if (_local4 != target){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.MOUSE_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OVER, true, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OVER, false, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; }; if (updateMouseDown){ if (_mouseIsDown){ if (!disabledEvents[MouseEvent.MOUSE_DOWN]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_DOWN, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = _local4; updateMouseDown = false; } else { if (!disabledEvents[MouseEvent.MOUSE_UP]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_UP, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((!(disabledEvents[MouseEvent.CLICK])) && ((_local4 == lastDownTarget)))){ _lastEvent = new mouseEventEvent(MouseEvent.CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = null; updateMouseDown = false; }; }; if (((((isDoubleClickEvent) && (!(disabledEvents[MouseEvent.DOUBLE_CLICK])))) && (_local4.doubleClickEnabled))){ _lastEvent = new mouseEventEvent(MouseEvent.DOUBLE_CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastLocation = location.clone(); lastMouseDown = _mouseIsDown; target = _local4; } public function getLocation():Point{ return (location.clone()); } public function get x():Number{ return (location.x); } public function lock():void{ isLocked = true; } public function get useNativeEvents():Boolean{ return (_useNativeEvents); } public function setLocation(_arg1, _arg2=null):void{ var _local3:Point; if ((_arg1 is Point)){ _local3 = (_arg1 as Point); location.x = _local3.x; location.y = _local3.y; } else { location.x = Number(_arg1); location.y = Number(_arg2); }; if (!isLocked){ update(); }; } private function keyHandler(_arg1:KeyboardEvent):void{ altKey = _arg1.altKey; ctrlKey = _arg1.ctrlKey; shiftKey = _arg1.shiftKey; } public function unignore(_arg1:DisplayObject):void{ if ((_arg1 in ignoredInstances)){ delete ignoredInstances[_arg1]; }; } public function doubleClick():void{ if (isLocked){ release(); } else { click(); press(); isDoubleClickEvent = true; release(); isDoubleClickEvent = false; }; } public function update():void{ dispatchEvent(new Event(UPDATE, false, false)); } public function unlock():void{ isLocked = false; update(); } public function ignore(_arg1:DisplayObject):void{ ignoredInstances[_arg1] = true; } public function enableEvent(_arg1:String):void{ if ((_arg1 in disabledEvents)){ delete disabledEvents[_arg1]; }; } public function press():void{ updateMouseDown = true; _mouseIsDown = true; if (!isLocked){ update(); }; } public function set useNativeEvents(_arg1:Boolean):void{ if (_arg1 == _useNativeEvents){ return; }; _useNativeEvents = _arg1; if (_useNativeEvents){ eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; } else { eventEvent = Event; mouseEventEvent = MouseEvent; }; } public function set y(_arg1:Number):void{ location.y = _arg1; if (!isLocked){ update(); }; } public function set stage(_arg1:Stage):void{ var _local2:Boolean; if (_stage){ _local2 = true; _stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.removeEventListener(KeyboardEvent.KEY_UP, keyHandler); } else { _local2 = false; }; _stage = _arg1; if (_stage){ _stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler); target = _stage; if (!_local2){ update(); }; }; } } }//package org.papervision3d.core.utils.virtualmouse
Section 324
//VirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; public class VirtualMouseEvent extends Event implements IVirtualMouseEvent { public function VirtualMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package org.papervision3d.core.utils.virtualmouse
Section 325
//VirtualMouseMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; import flash.display.*; public class VirtualMouseMouseEvent extends MouseEvent implements IVirtualMouseEvent { public function VirtualMouseMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:InteractiveObject=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10:Boolean=false, _arg11:int=0){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11); } } }//package org.papervision3d.core.utils.virtualmouse
Section 326
//InteractiveSceneManager (org.papervision3d.core.utils.InteractiveSceneManager) package org.papervision3d.core.utils { import flash.events.*; import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.*; import org.papervision3d.events.*; import org.papervision3d.core.utils.virtualmouse.*; public class InteractiveSceneManager extends EventDispatcher { public var container:Sprite; public var currentMousePos:Point; public var currentDisplayObject3D:DisplayObject3D; public var lastMousePos:Point; public var viewport:Viewport3D; public var currentMaterial:MaterialObject3D; public var debug:Boolean;// = false public var mouse3D:Mouse3D; public var enableOverOut:Boolean;// = true public var virtualMouse:VirtualMouse; public var _viewportRendered:Boolean;// = false public var renderHitData:RenderHitData; public var currentMouseDO3D:DisplayObject3D;// = null public static var MOUSE_IS_DOWN:Boolean = false; public function InteractiveSceneManager(_arg1:Viewport3D){ virtualMouse = new VirtualMouse(); mouse3D = new Mouse3D(); enableOverOut = true; currentMouseDO3D = null; debug = false; currentMousePos = new Point(); lastMousePos = new Point(); _viewportRendered = false; super(); this.viewport = _arg1; this.container = _arg1.containerSprite; init(); } public function updateAfterRender():void{ _viewportRendered = true; } protected function initVirtualMouse():void{ virtualMouse.stage = container.stage; virtualMouse.container = container; } public function initListeners():void{ if (viewport.interactive){ container.addEventListener(MouseEvent.MOUSE_DOWN, handleMousePress, false, 0, true); container.addEventListener(MouseEvent.MOUSE_UP, handleMouseRelease, false, 0, true); container.addEventListener(MouseEvent.CLICK, handleMouseClick, false, 0, true); container.addEventListener(MouseEvent.DOUBLE_CLICK, handleMouseDoubleClick, false, 0, true); container.stage.addEventListener(Event.ENTER_FRAME, handleEnterFrame, false, 0, true); }; } protected function handleMouseDoubleClick(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_DOUBLE_CLICK, currentDisplayObject3D); }; } public function updateRenderHitData():void{ resolveRenderHitData(); currentDisplayObject3D = renderHitData.displayObject3D; currentMaterial = renderHitData.material; manageOverOut(); } public function init():void{ if (container){ if (container.stage){ initVirtualMouse(); initListeners(); } else { container.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage, false, 0, true); }; }; } protected function handleMouseClick(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_CLICK, currentDisplayObject3D); }; } protected function handleMouseOut(_arg1:DisplayObject3D):void{ var _local2:MovieMaterial; if (!hasMouseMoved()){ return; }; if (_arg1){ _local2 = (_arg1.material as MovieMaterial); if (_local2){ virtualMouse.exitContainer(); }; }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OUT, _arg1); } protected function manageOverOut():void{ if (!enableOverOut){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ if (((!(currentMouseDO3D)) && (currentDisplayObject3D))){ handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; } else { if (((currentMouseDO3D) && (!((currentMouseDO3D == currentDisplayObject3D))))){ handleMouseOut(currentMouseDO3D); handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; }; }; } else { if (currentMouseDO3D != null){ handleMouseOut(currentMouseDO3D); currentMouseDO3D = null; }; }; } protected function handleEnterFrame(_arg1:Event):void{ var _local2:Boolean; var _local3:MovieMaterial; _local2 = hasMouseMoved(); if (((_local2) || (_viewportRendered))){ updateRenderHitData(); _viewportRendered = false; if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((virtualMouse) && (renderHitData))){ _local3 = (currentMaterial as MovieMaterial); if (_local3){ virtualMouse.container = (_local3.movie as Sprite); }; if (virtualMouse.container){ virtualMouse.setLocation(renderHitData.u, renderHitData.v); }; if (((((Mouse3D.enabled) && (renderHitData))) && (renderHitData.hasHit))){ mouse3D.updatePosition(renderHitData); }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); } else { if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); }; }; }; lastMousePos.x = currentMousePos.x; lastMousePos.y = currentMousePos.y; } protected function dispatchObjectEvent(_arg1:String, _arg2:DisplayObject3D):void{ var _local3:Number; var _local4:Number; var _local5:InteractiveScene3DEvent; if (((renderHitData) && (renderHitData.hasHit))){ _local3 = (renderHitData.u) ? renderHitData.u : 0; _local4 = (renderHitData.v) ? renderHitData.v : 0; _local5 = new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4, renderHitData); _local5.renderHitData = renderHitData; dispatchEvent(_local5); _arg2.dispatchEvent(_local5); } else { dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); if (_arg2){ _arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); }; }; } protected function hasMouseMoved():Boolean{ currentMousePos.x = container.mouseX; currentMousePos.y = container.mouseY; return (!(currentMousePos.equals(lastMousePos))); } protected function handleMouseOver(_arg1:DisplayObject3D):void{ if (hasMouseMoved()){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OVER, _arg1); }; } protected function resolveRenderHitData():void{ renderHitData = (viewport.hitTestPoint2D(currentMousePos) as RenderHitData); } protected function handleMousePress(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = true; if (virtualMouse){ virtualMouse.press(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_PRESS, currentDisplayObject3D); }; } protected function handleMouseRelease(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = false; if (virtualMouse){ virtualMouse.release(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_RELEASE, currentDisplayObject3D); }; } protected function handleAddedToStage(_arg1:Event):void{ container.removeEventListener(Event.ADDED_TO_STAGE, handleAddedToStage); initVirtualMouse(); initListeners(); } public function destroy():void{ viewport = null; renderHitData = null; currentDisplayObject3D = null; currentMaterial = null; currentMouseDO3D = null; virtualMouse.stage = null; virtualMouse.container = null; container.removeEventListener(MouseEvent.MOUSE_DOWN, handleMousePress); container.removeEventListener(MouseEvent.MOUSE_UP, handleMouseRelease); container.removeEventListener(MouseEvent.CLICK, handleMouseClick); container.removeEventListener(MouseEvent.DOUBLE_CLICK, handleMouseDoubleClick); if (container.stage){ container.stage.removeEventListener(Event.ENTER_FRAME, handleEnterFrame); }; container = null; } } }//package org.papervision3d.core.utils
Section 327
//Mouse3D (org.papervision3d.core.utils.Mouse3D) package org.papervision3d.core.utils { import org.papervision3d.core.math.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class Mouse3D extends DisplayObject3D { private var target:Number3D; public static var enabled:Boolean = false; private static var UP:Number3D = new Number3D(0, 1, 0); public function Mouse3D():void{ target = new Number3D(); super(); } public function updatePosition(_arg1:RenderHitData):void{ var _local2:Triangle3D; var _local3:Number3D; var _local4:Matrix3D; var _local5:Number3D; var _local6:Number3D; var _local7:Matrix3D; _local2 = (_arg1.renderable as Triangle3D); target.x = _local2.faceNormal.x; target.y = _local2.faceNormal.y; target.z = _local2.faceNormal.z; _local3 = Number3D.sub(target, position); _local3.normalize(); if (_local3.modulo > 0.1){ _local5 = Number3D.cross(_local3, UP); _local5.normalize(); _local6 = Number3D.cross(_local3, _local5); _local6.normalize(); _local7 = this.transform; _local7.n11 = _local5.x; _local7.n21 = _local5.y; _local7.n31 = _local5.z; _local7.n12 = -(_local6.x); _local7.n22 = -(_local6.y); _local7.n32 = -(_local6.z); _local7.n13 = _local3.x; _local7.n23 = _local3.y; _local7.n33 = _local3.z; }; _local4 = Matrix3D.IDENTITY; this.transform = Matrix3D.multiply(_local2.instance.world, _local7); x = _arg1.x; y = _arg1.y; z = _arg1.z; } } }//package org.papervision3d.core.utils
Section 328
//StopWatch (org.papervision3d.core.utils.StopWatch) package org.papervision3d.core.utils { import flash.events.*; import flash.utils.*; public class StopWatch extends EventDispatcher { private var startTime:int; private var elapsedTime:int; private var stopTime:int; private var isRunning:Boolean; public function stop():int{ if (isRunning){ stopTime = getTimer(); elapsedTime = (stopTime - startTime); isRunning = false; return (elapsedTime); }; return (0); } public function start():void{ if (!isRunning){ startTime = getTimer(); isRunning = true; }; } public function reset():void{ isRunning = false; } } }//package org.papervision3d.core.utils
Section 329
//IViewport3D (org.papervision3d.core.view.IViewport3D) package org.papervision3d.core.view { import org.papervision3d.core.render.data.*; public interface IViewport3D { function updateAfterRender(_arg1:RenderSessionData):void; function updateBeforeRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.view
Section 330
//AnimationEvent (org.papervision3d.events.AnimationEvent) package org.papervision3d.events { import flash.events.*; public class AnimationEvent extends Event { public var totalFrames:uint; public var message:String;// = "" public var dataObj:Object;// = null public var currentFrame:uint; public static const ANIMATION_COMPLETE:String = "animationComplete"; public static const ANIMATION_NEXT_FRAME:String = "animationNextFrame"; public static const ANIMATION_ERROR:String = "animationError"; public function AnimationEvent(_arg1:String, _arg2:uint, _arg3:uint, _arg4:String="", _arg5:Object=null, _arg6:Boolean=false, _arg7:Boolean=false){ message = ""; dataObj = null; super(_arg1, _arg6, _arg7); this.currentFrame = _arg2; this.totalFrames = _arg3; this.message = _arg4; this.dataObj = _arg5; } override public function clone():Event{ return (new AnimationEvent(type, currentFrame, totalFrames, message, dataObj, bubbles, cancelable)); } } }//package org.papervision3d.events
Section 331
//FileLoadEvent (org.papervision3d.events.FileLoadEvent) package org.papervision3d.events { import flash.events.*; public class FileLoadEvent extends Event { public var bytesLoaded:Number;// = -1 public var message:String;// = "" public var bytesTotal:Number;// = -1 public var dataObj:Object;// = null public var file:String;// = "" public static const COLLADA_MATERIALS_DONE:String = "colladaMaterialsDone"; public static const LOAD_PROGRESS:String = "loadProgress"; public static const ANIMATIONS_COMPLETE:String = "animationsComplete"; public static const SECURITY_LOAD_ERROR:String = "securityLoadError"; public static const LOAD_ERROR:String = "loadError"; public static const LOAD_COMPLETE:String = "loadComplete"; public static const ANIMATIONS_PROGRESS:String = "animationsProgress"; public function FileLoadEvent(_arg1:String, _arg2:String="", _arg3:Number=-1, _arg4:Number=-1, _arg5:String="", _arg6:Object=null, _arg7:Boolean=false, _arg8:Boolean=false){ file = ""; bytesLoaded = -1; bytesTotal = -1; message = ""; dataObj = null; super(_arg1, _arg7, _arg8); this.file = _arg2; this.bytesLoaded = _arg3; this.bytesTotal = _arg4; this.message = _arg5; this.dataObj = _arg6; } override public function clone():Event{ return (new FileLoadEvent(type, file, bytesLoaded, bytesTotal, message, dataObj, bubbles, cancelable)); } } }//package org.papervision3d.events
Section 332
//InteractiveScene3DEvent (org.papervision3d.events.InteractiveScene3DEvent) package org.papervision3d.events { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; public class InteractiveScene3DEvent extends Event { public var sprite:Sprite;// = null public var displayObject3D:DisplayObject3D;// = null public var face3d:Triangle3D;// = null public var renderHitData:RenderHitData; public var x:Number;// = 0 public var y:Number;// = 0 public static const OBJECT_ADDED:String = "objectAdded"; public static const OBJECT_PRESS:String = "mousePress"; public static const OBJECT_RELEASE:String = "mouseRelease"; public static const OBJECT_CLICK:String = "mouseClick"; public static const OBJECT_RELEASE_OUTSIDE:String = "mouseReleaseOutside"; public static const OBJECT_OUT:String = "mouseOut"; public static const OBJECT_MOVE:String = "mouseMove"; public static const OBJECT_OVER:String = "mouseOver"; public static const OBJECT_DOUBLE_CLICK:String = "mouseDoubleClick"; public function InteractiveScene3DEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:Sprite=null, _arg4:Triangle3D=null, _arg5:Number=0, _arg6:Number=0, _arg7:RenderHitData=null, _arg8:Boolean=false, _arg9:Boolean=false){ displayObject3D = null; sprite = null; face3d = null; x = 0; y = 0; super(_arg1, _arg8, _arg9); this.displayObject3D = _arg2; this.sprite = _arg3; this.face3d = _arg4; this.x = _arg5; this.y = _arg6; this.renderHitData = _arg7; } override public function toString():String{ return (((((((("Type : " + type) + ", DO3D : ") + displayObject3D) + " Sprite : ") + sprite) + " Face : ") + face3d)); } } }//package org.papervision3d.events
Section 333
//RendererEvent (org.papervision3d.events.RendererEvent) package org.papervision3d.events { import flash.events.*; import org.papervision3d.core.render.data.*; public class RendererEvent extends Event { public var renderSessionData:RenderSessionData; public static const PROJECTION_DONE:String = "projectionDone"; public static const RENDER_DONE:String = "renderDone"; public function RendererEvent(_arg1:String, _arg2:RenderSessionData){ super(_arg1); this.renderSessionData = _arg2; } public function clear():void{ renderSessionData = null; } override public function clone():Event{ return (new RendererEvent(type, renderSessionData)); } } }//package org.papervision3d.events
Section 334
//PointLight3D (org.papervision3d.lights.PointLight3D) package org.papervision3d.lights { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; public class PointLight3D extends LightObject3D { public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000); public function PointLight3D(_arg1:Boolean=false, _arg2:Boolean=false){ super(_arg1, _arg2); x = DEFAULT_POS.x; y = DEFAULT_POS.y; z = DEFAULT_POS.z; } } }//package org.papervision3d.lights
Section 335
//ILightShader (org.papervision3d.materials.shaders.ILightShader) package org.papervision3d.materials.shaders { import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.shader.*; public interface ILightShader { function updateLightMatrix(_arg1:ShaderObjectData, _arg2:RenderSessionData):void; } }//package org.papervision3d.materials.shaders
Section 336
//IShader (org.papervision3d.materials.shaders.IShader) package org.papervision3d.materials.shaders { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.shader.*; public interface IShader { function renderTri(_arg1:Triangle3D, _arg2:RenderSessionData, _arg3:ShaderObjectData, _arg4:BitmapData):void; function updateAfterRender(_arg1:RenderSessionData, _arg2:ShaderObjectData):void; function destroy():void; function renderLayer(_arg1:Triangle3D, _arg2:RenderSessionData, _arg3:ShaderObjectData):void; } }//package org.papervision3d.materials.shaders
Section 337
//ShadedMaterial (org.papervision3d.materials.shaders.ShadedMaterial) package org.papervision3d.materials.shaders { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.material.*; import org.papervision3d.materials.*; import org.papervision3d.core.render.shader.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class ShadedMaterial extends TriangleMaterial implements ITriangleDrawer, IUpdateBeforeMaterial, IUpdateAfterMaterial { private var _shaderCompositeMode:int; public var material:BitmapMaterial; public var shader:Shader; public var shaderObjectData:Dictionary; private static var bmp:BitmapData; public function ShadedMaterial(_arg1:BitmapMaterial, _arg2:Shader, _arg3:int=0){ this.shader = _arg2; this.material = _arg1; shaderCompositeMode = _arg3; init(); } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:ShaderObjectData; _local6 = ShaderObjectData(shaderObjectData[_arg1.renderableInstance.instance]); if (shaderCompositeMode == ShaderCompositeModes.PER_LAYER){ material.drawTriangle(_arg1, _arg2, _arg3, _local6.shaderRenderer.outputBitmap); shader.renderLayer(_arg1.triangle, _arg3, _local6); } else { if (shaderCompositeMode == ShaderCompositeModes.PER_TRIANGLE_IN_BITMAP){ bmp = _local6.getOutputBitmapFor(_arg1.triangle); material.drawTriangle(_arg1, _arg2, _arg3, bmp, (_local6.triangleUVS[_arg1.triangle]) ? _local6.triangleUVS[_arg1.triangle] : _local6.getPerTriUVForDraw(_arg1.triangle)); shader.renderTri(_arg1.triangle, _arg3, _local6, bmp); }; }; } override public function destroy():void{ var _local1:ShaderObjectData; super.destroy(); for each (_local1 in shaderObjectData) { _local1.destroy(); }; material = null; shader = null; } private function init():void{ shaderObjectData = new Dictionary(); } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:ShaderObjectData; var _local3:ILightShader; for each (_local2 in shaderObjectData) { _local2.shaderRenderer.inputBitmap = material.bitmap; if (shaderCompositeMode == ShaderCompositeModes.PER_LAYER){ if (_local2.shaderRenderer.resizedInput){ _local2.shaderRenderer.resizedInput = false; _local2.uvMatrices = new Dictionary(); }; _local2.shaderRenderer.clear(); }; if ((shader is ILightShader)){ _local3 = (shader as ILightShader); _local3.updateLightMatrix(_local2, _arg1); }; }; } public function updateAfterRender(_arg1:RenderSessionData):void{ var _local2:ShaderObjectData; for each (_local2 in shaderObjectData) { shader.updateAfterRender(_arg1, _local2); if (shaderCompositeMode == ShaderCompositeModes.PER_LAYER){ _local2.shaderRenderer.render(_arg1); }; }; } override public function unregisterObject(_arg1:DisplayObject3D):void{ var _local2:ShaderObjectData; super.unregisterObject(_arg1); _local2 = shaderObjectData[_arg1]; _local2.destroy(); delete shaderObjectData[_arg1]; } public function set shaderCompositeMode(_arg1:int):void{ _shaderCompositeMode = _arg1; } override public function registerObject(_arg1:DisplayObject3D):void{ var _local2:ShaderObjectData; super.registerObject(_arg1); _local2 = (shaderObjectData[_arg1] = new ShaderObjectData(_arg1, material, this)); _local2.shaderRenderer.inputBitmap = material.bitmap; shader.setContainerForObject(_arg1, _local2.shaderRenderer.getLayerForShader(shader)); } public function getOutputBitmapDataFor(_arg1:DisplayObject3D):BitmapData{ var _local2:ShaderObjectData; if (shaderCompositeMode == ShaderCompositeModes.PER_LAYER){ if (shaderObjectData[_arg1]){ _local2 = ShaderObjectData(shaderObjectData[_arg1]); return (_local2.shaderRenderer.outputBitmap); }; PaperLogger.warning("object not registered with shaded material"); } else { PaperLogger.warning("getOutputBitmapDataFor only works on per layer mode"); }; return (null); } public function get shaderCompositeMode():int{ return (_shaderCompositeMode); } } }//package org.papervision3d.materials.shaders
Section 338
//Shader (org.papervision3d.materials.shaders.Shader) package org.papervision3d.materials.shaders { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.shader.*; import flash.utils.*; import flash.filters.*; public class Shader extends EventDispatcher implements IShader { protected var layers:Dictionary; protected var _filter:BitmapFilter; protected var _blendMode:String;// = "multiply" protected var _object:DisplayObject3D; public function Shader(){ _blendMode = BlendMode.MULTIPLY; super(); this.layers = new Dictionary(true); } public function get layerBlendMode():String{ return (_blendMode); } public function updateAfterRender(_arg1:RenderSessionData, _arg2:ShaderObjectData):void{ } public function renderLayer(_arg1:Triangle3D, _arg2:RenderSessionData, _arg3:ShaderObjectData):void{ } public function set layerBlendMode(_arg1:String):void{ _blendMode = _arg1; } public function setContainerForObject(_arg1:DisplayObject3D, _arg2:Sprite):void{ layers[_arg1] = _arg2; } public function set filter(_arg1:BitmapFilter):void{ _filter = _arg1; } public function renderTri(_arg1:Triangle3D, _arg2:RenderSessionData, _arg3:ShaderObjectData, _arg4:BitmapData):void{ } public function get filter():BitmapFilter{ return (_filter); } public function destroy():void{ } } }//package org.papervision3d.materials.shaders
Section 339
//ShaderCompositeModes (org.papervision3d.materials.shaders.ShaderCompositeModes) package org.papervision3d.materials.shaders { public class ShaderCompositeModes { public static var PER_TRIANGLE_IN_BITMAP:int = 1; public static var PER_LAYER:int = 0; } }//package org.papervision3d.materials.shaders
Section 340
//CompositeMaterial (org.papervision3d.materials.special.CompositeMaterial) package org.papervision3d.materials.special { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class CompositeMaterial extends TriangleMaterial implements ITriangleDrawer { public var materials:Array; public function CompositeMaterial(){ init(); } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:MaterialObject3D; for each (_local6 in materials) { if (!_local6.invisible){ _local6.drawTriangle(_arg1, _arg2, _arg3); }; }; } private function init():void{ materials = new Array(); } override public function unregisterObject(_arg1:DisplayObject3D):void{ var _local2:MaterialObject3D; super.unregisterObject(_arg1); for each (_local2 in materials) { _local2.unregisterObject(_arg1); }; } public function removeAllMaterials():void{ materials = new Array(); } override public function registerObject(_arg1:DisplayObject3D):void{ var _local2:MaterialObject3D; super.registerObject(_arg1); for each (_local2 in materials) { _local2.registerObject(_arg1); }; } public function removeMaterial(_arg1:MaterialObject3D):void{ materials.splice(materials.indexOf(_arg1), 1); } public function addMaterial(_arg1:MaterialObject3D):void{ var _local2:Object; var _local3:DisplayObject3D; materials.push(_arg1); for (_local2 in objects) { _local3 = (_local2 as DisplayObject3D); _arg1.registerObject(_local3); }; } } }//package org.papervision3d.materials.special
Section 341
//LineMaterial (org.papervision3d.materials.special.LineMaterial) package org.papervision3d.materials.special { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import org.papervision3d.core.render.draw.*; public class LineMaterial extends MaterialObject3D implements ILineDrawer { public function LineMaterial(_arg1:Number=0xFF0000, _arg2:Number=1){ this.lineColor = _arg1; this.lineAlpha = _arg2; } public function drawLine(_arg1:RenderLine, _arg2:Graphics, _arg3:RenderSessionData):void{ _arg2.lineStyle(_arg1.size, lineColor, lineAlpha); _arg2.moveTo(_arg1.v0.x, _arg1.v0.y); if (_arg1.cV){ _arg2.curveTo(_arg1.cV.x, _arg1.cV.y, _arg1.v1.x, _arg1.v1.y); } else { _arg2.lineTo(_arg1.v1.x, _arg1.v1.y); }; _arg2.moveTo(0, 0); _arg2.lineStyle(); } } }//package org.papervision3d.materials.special
Section 342
//ParticleMaterial (org.papervision3d.materials.special.ParticleMaterial) package org.papervision3d.materials.special { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.log.*; import org.papervision3d.core.render.draw.*; public class ParticleMaterial extends MaterialObject3D implements IParticleDrawer { public var shape:int; public var scale:Number; public static var SHAPE_SQUARE:int = 0; public static var SHAPE_CIRCLE:int = 1; public function ParticleMaterial(_arg1:Number, _arg2:Number, _arg3:int=0, _arg4:Number=1){ this.shape = _arg3; this.fillAlpha = _arg2; this.fillColor = _arg1; this.scale = _arg4; } public function updateRenderRect(_arg1:Particle):void{ var _local2:Rectangle; _local2 = _arg1.renderRect; if (_arg1.size == 0){ _local2.width = 1; _local2.height = 1; } else { _local2.width = ((_arg1.renderScale * _arg1.size) * scale); _local2.height = ((_arg1.renderScale * _arg1.size) * scale); }; _local2.x = (_arg1.vertex3D.vertex3DInstance.x - (_local2.width / 2)); _local2.y = (_arg1.vertex3D.vertex3DInstance.y - (_local2.width / 2)); } public function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void{ var _local4:Rectangle; _arg2.beginFill(fillColor, fillAlpha); _local4 = _arg1.renderRect; if (shape == SHAPE_SQUARE){ _arg2.drawRect(_local4.x, _local4.y, _local4.width, _local4.height); } else { if (shape == SHAPE_CIRCLE){ _arg2.drawCircle((_local4.x + (_local4.width / 2)), (_local4.y + (_local4.width / 2)), (_local4.width / 2)); } else { PaperLogger.warning("Particle material has no valid shape - Must be ParticleMaterial.SHAPE_SQUARE or ParticleMaterial.SHAPE_CIRCLE"); }; }; _arg2.endFill(); _arg3.renderStatistics.particles++; } } }//package org.papervision3d.materials.special
Section 343
//BitmapMaterialTools (org.papervision3d.materials.utils.BitmapMaterialTools) package org.papervision3d.materials.utils { import flash.display.*; import flash.geom.*; import org.papervision3d.materials.*; public class BitmapMaterialTools { public static function createBitmapMaterial(_arg1:Class, _arg2:Boolean=true):BitmapMaterial{ var _local3:BitmapData; var _local4:BitmapMaterial; _local3 = getTexture(_arg1); _local4 = new BitmapMaterial(_local3); _local4.oneSide = _arg2; return (_local4); } public static function mirrorBitmapY(_arg1:BitmapData):void{ var _local2:Bitmap; _local2 = new Bitmap(_arg1.clone()); _local2.scaleY = -1; _local2.y = _arg1.height; _arg1.draw(_local2, _local2.transform.matrix); _local2.bitmapData.dispose(); } public static function mirrorBitmapX(_arg1:BitmapData):void{ var _local2:Bitmap; _local2 = new Bitmap(_arg1.clone()); _local2.scaleX = -1; _local2.x = _arg1.width; _arg1.draw(_local2, _local2.transform.matrix); _local2.bitmapData.dispose(); } public static function getTexture(_arg1:Class):BitmapData{ var _local2:Bitmap; var _local3:BitmapData; _local2 = Bitmap(new (_arg1)); _local3 = new BitmapData(_local2.width, _local2.height, true, 0xFFFFFF); _local3.draw(_local2, new Matrix()); return (_local3); } } }//package org.papervision3d.materials.utils
Section 344
//LightMatrix (org.papervision3d.materials.utils.LightMatrix) package org.papervision3d.materials.utils { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.*; import org.papervision3d.lights.*; public class LightMatrix { private static var _targetPos:Number3D = new Number3D(); private static var _lightUp:Number3D = new Number3D(); private static var _lightSide:Number3D = new Number3D(); private static var _lightDir:Number3D = new Number3D(); private static var lightMatrix:Matrix3D = Matrix3D.IDENTITY; private static var invMatrix:Matrix3D = Matrix3D.IDENTITY; protected static var UP:Number3D = new Number3D(0, 1, 0); private static var _lightPos:Number3D = new Number3D(); public static function getLightMatrix(_arg1:LightObject3D, _arg2:DisplayObject3D, _arg3:RenderSessionData, _arg4:Matrix3D):Matrix3D{ var _local5:Matrix3D; var _local6:Matrix3D; var _local7:Matrix3D; _local5 = (_arg4) ? _arg4 : Matrix3D.IDENTITY; if (_arg1 == null){ _arg1 = new PointLight3D(); _arg1.copyPosition(_arg3.camera); }; _targetPos.reset(); _lightPos.reset(); _lightDir.reset(); _lightUp.reset(); _lightSide.reset(); _local6 = _arg1.transform; _local7 = _arg2.world; _lightPos.x = -(_local6.n14); _lightPos.y = -(_local6.n24); _lightPos.z = -(_local6.n34); _targetPos.x = -(_local7.n14); _targetPos.y = -(_local7.n24); _targetPos.z = -(_local7.n34); _lightDir.x = (_targetPos.x - _lightPos.x); _lightDir.y = (_targetPos.y - _lightPos.y); _lightDir.z = (_targetPos.z - _lightPos.z); invMatrix.calculateInverse(_arg2.world); Matrix3D.multiplyVector3x3(invMatrix, _lightDir); _lightDir.normalize(); _lightSide.x = ((_lightDir.y * UP.z) - (_lightDir.z * UP.y)); _lightSide.y = ((_lightDir.z * UP.x) - (_lightDir.x * UP.z)); _lightSide.z = ((_lightDir.x * UP.y) - (_lightDir.y * UP.x)); _lightSide.normalize(); _lightUp.x = ((_lightSide.y * _lightDir.z) - (_lightSide.z * _lightDir.y)); _lightUp.y = ((_lightSide.z * _lightDir.x) - (_lightSide.x * _lightDir.z)); _lightUp.z = ((_lightSide.x * _lightDir.y) - (_lightSide.y * _lightDir.x)); _lightUp.normalize(); if (((Papervision3D.useRIGHTHANDED) || (_arg2.flipLightDirection))){ _lightDir.x = -(_lightDir.x); _lightDir.y = -(_lightDir.y); _lightDir.z = -(_lightDir.z); }; _local5.n11 = _lightSide.x; _local5.n12 = _lightSide.y; _local5.n13 = _lightSide.z; _local5.n21 = _lightUp.x; _local5.n22 = _lightUp.y; _local5.n23 = _lightUp.z; _local5.n31 = _lightDir.x; _local5.n32 = _lightDir.y; _local5.n33 = _lightDir.z; return (_local5); } } }//package org.papervision3d.materials.utils
Section 345
//MaterialsList (org.papervision3d.materials.utils.MaterialsList) package org.papervision3d.materials.utils { import org.papervision3d.core.proto.*; import flash.utils.*; public class MaterialsList { protected var _materials:Dictionary; public var materialsByName:Dictionary; private var _materialsTotal:int; public function MaterialsList(_arg1=null):void{ var _local2:String; var _local3:String; super(); this.materialsByName = new Dictionary(true); this._materials = new Dictionary(false); this._materialsTotal = 0; if (_arg1){ if ((_arg1 is Array)){ for (_local2 in _arg1) { this.addMaterial(_arg1[_local2]); }; } else { if ((_arg1 is Object)){ for (_local3 in _arg1) { this.addMaterial(_arg1[_local3], _local3); }; }; }; }; } public function get numMaterials():int{ return (_materialsTotal); } public function addMaterial(_arg1:MaterialObject3D, _arg2:String=null):MaterialObject3D{ _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._materials[_arg1] = _arg2; this.materialsByName[_arg2] = _arg1; this._materialsTotal++; return (_arg1); } public function removeMaterial(_arg1:MaterialObject3D):MaterialObject3D{ if (this._materials[_arg1]){ delete this.materialsByName[this._materials[_arg1]]; delete this._materials[_arg1]; _materialsTotal--; }; return (_arg1); } public function toString():String{ var _local1:String; var _local2:MaterialObject3D; _local1 = ""; for each (_local2 in this.materialsByName) { _local1 = (_local1 + (this._materials[_local2] + "\n")); }; return (_local1); } public function removeMaterialByName(_arg1:String):MaterialObject3D{ return (removeMaterial(getMaterialByName(_arg1))); } public function clone():MaterialsList{ var _local1:MaterialsList; var _local2:MaterialObject3D; _local1 = new MaterialsList(); for each (_local2 in this.materialsByName) { _local1.addMaterial(_local2.clone(), this._materials[_local2]); }; return (_local1); } public function getMaterialByName(_arg1:String):MaterialObject3D{ return ((this.materialsByName[_arg1]) ? this.materialsByName[_arg1] : this.materialsByName["all"]); } } }//package org.papervision3d.materials.utils
Section 346
//PrecisionMode (org.papervision3d.materials.utils.PrecisionMode) package org.papervision3d.materials.utils { public class PrecisionMode { public static var ORIGINAL:int = 0; public static var STABLE:int = 1; } }//package org.papervision3d.materials.utils
Section 347
//RenderRecStorage (org.papervision3d.materials.utils.RenderRecStorage) package org.papervision3d.materials.utils { import flash.geom.*; import org.papervision3d.core.geom.renderables.*; public class RenderRecStorage { public var mat:Matrix; public var v0:Vertex3DInstance; public var v1:Vertex3DInstance; public var v2:Vertex3DInstance; public function RenderRecStorage(){ v0 = new Vertex3DInstance(); v1 = new Vertex3DInstance(); v2 = new Vertex3DInstance(); mat = new Matrix(); super(); } } }//package org.papervision3d.materials.utils
Section 348
//BitmapAssetMaterial (org.papervision3d.materials.BitmapAssetMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class BitmapAssetMaterial extends BitmapMaterial implements ITriangleDrawer { private static var _library:Object = new Object(); private static var _count:Object = new Object(); public function BitmapAssetMaterial(_arg1:String, _arg2:Boolean=false){ texture = _arg1; this.precise = _arg2; } override public function get texture():Object{ return (this._texture); } override public function set texture(_arg1:Object):void{ if ((_arg1 is String) == false){ PaperLogger.error("BitmapMaterial.texture requires a BitmapData object for the texture"); return; }; bitmap = createBitmapFromLinkageID(String(_arg1)); _texture = _arg1; } protected function createBitmapFromLinkageID(_arg1:String):BitmapData{ var _local2:BitmapData; var _local3:BitmapData; var _local4:BitmapData; var _local5:Class; var _local6:XML; if (this._texture != _arg1){ var _local7 = _count; var _local8 = this._texture; var _local9 = (_local7[_local8] - 1); _local7[_local8] = _local9; _local4 = _library[this._texture]; if (((_local4) && ((_count[this._texture] == 0)))){ _local4.dispose(); }; }; _local3 = _library[_arg1]; if (!_local3){ _local5 = (getDefinitionByName(_arg1) as Class); _local6 = describeType(_local5); if (_local6..constructor.length() == 0){ _local3 = (new (_local5) as BitmapData); } else { _local3 = (new _local5(0, 0) as BitmapData); }; _local2 = createBitmap(_local3); _library[_arg1] = _local2; _count[_arg1] = 0; } else { _local2 = _local3; maxU = (maxV = 1); _local7 = _count; _local8 = _arg1; _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; }; return (_local2); } } }//package org.papervision3d.materials
Section 349
//BitmapFileMaterial (org.papervision3d.materials.BitmapFileMaterial) package org.papervision3d.materials { import flash.net.*; import flash.events.*; import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.events.*; import org.papervision3d.core.render.draw.*; import flash.system.*; public class BitmapFileMaterial extends BitmapMaterial implements ITriangleDrawer { public var loaded:Boolean; protected var bitmapLoader:Loader; protected var errorLoading:Boolean;// = false public var url:String;// = "" public var checkPolicyFile:Boolean;// = false public static var LOADING_COLOR:int = MaterialObject3D.DEFAULT_COLOR; public static var callback:Function; public static var loadingBitmap:BitmapData = new BitmapData(1, 1, false, 0); protected static var _loaderUrls:Dictionary = new Dictionary(true); protected static var _loadingIdle:Boolean = true; public static var ERROR_COLOR:int = MaterialObject3D.DEBUG_COLOR; protected static var _subscribedMaterials:Object = new Object(); protected static var _waitingBitmaps:Array = new Array(); protected static var _bitmapMaterials:Dictionary = new Dictionary(true); public function BitmapFileMaterial(_arg1:String="", _arg2:Boolean=false){ url = ""; checkPolicyFile = false; errorLoading = false; super(null, _arg2); this.url = _arg1; this.loaded = false; this.fillAlpha = 1; this.fillColor = LOADING_COLOR; if (_arg1.length > 0){ texture = _arg1; }; } protected function loadBitmapProgressHandler(_arg1:ProgressEvent):void{ var _local2:FileLoadEvent; _local2 = new FileLoadEvent(FileLoadEvent.LOAD_PROGRESS, url, _arg1.bytesLoaded, _arg1.bytesTotal); dispatchEvent(_local2); } override public function get texture():Object{ return (this._texture); } public function get subscribedMaterials():Object{ return (_subscribedMaterials); } override public function set texture(_arg1:Object):void{ if ((_arg1 is String) == false){ PaperLogger.error("BitmapFileMaterial.texture requires a String for the texture"); return; }; bitmap = createBitmapFromURL(String(_arg1)); _texture = _arg1; } protected function setupAsyncLoadCompleteCallback():void{ var _local1:Timer; _local1 = new Timer(1, 1); _local1.addEventListener(TimerEvent.TIMER_COMPLETE, dispatchAsyncLoadCompleteEvent); _local1.start(); } protected function loadComplete():void{ var _local1:FileLoadEvent; this.fillAlpha = 0; this.fillColor = 0; this.loaded = true; _local1 = new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, this.url); this.dispatchEvent(_local1); } protected function removeLoaderListeners():void{ bitmapLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadBitmapProgressHandler); bitmapLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadBitmapCompleteHandler); bitmapLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, loadBitmapErrorHandler); } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ if ((((bitmap == null)) || (errorLoading))){ if (errorLoading){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; _arg2.beginFill(fillColor, fillAlpha); _arg2.moveTo(_arg1.v0.x, _arg1.v0.y); _arg2.lineTo(_arg1.v1.x, _arg1.v1.y); _arg2.lineTo(_arg1.v2.x, _arg1.v2.y); _arg2.lineTo(_arg1.v0.x, _arg1.v0.y); _arg2.endFill(); if (errorLoading){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; }; super.drawTriangle(_arg1, _arg2, _arg3); } protected function loadNextBitmap():void{ var file:String; var request:URLRequest; var loaderContext:LoaderContext; file = _waitingBitmaps[0]; request = new URLRequest(file); bitmapLoader = new Loader(); bitmapLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadBitmapProgressHandler); bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBitmapCompleteHandler); bitmapLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadBitmapErrorHandler); try { loaderContext = new LoaderContext(); loaderContext.checkPolicyFile = checkPolicyFile; bitmapLoader.load(request, loaderContext); _loaderUrls[bitmapLoader] = file; _loadingIdle = false; PaperLogger.info(("BitmapFileMaterial: Loading bitmap from " + file)); } catch(error:Error) { _waitingBitmaps.shift(); _loadingIdle = true; PaperLogger.info(("[ERROR] BitmapFileMaterial: Unable to load file " + error.message)); }; } protected function loadBitmapCompleteHandler(_arg1:Event):void{ var _local2:Bitmap; var _local3:String; var _local4:BitmapData; var _local5:BitmapFileMaterial; _local2 = Bitmap(bitmapLoader.content); removeLoaderListeners(); _local3 = _loaderUrls[bitmapLoader]; _local4 = super.createBitmap(_local2.bitmapData); for each (_local5 in _subscribedMaterials[_local3]) { _local5.bitmap = _local4; _local5.maxU = this.maxU; _local5.maxV = this.maxV; _local5.resetMapping(); _local5.loadComplete(); }; _subscribedMaterials[_local3] = null; _bitmapMaterials[this] = true; _waitingBitmaps.shift(); if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; } protected function loadBitmapErrorHandler(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:FileLoadEvent; _local2 = String(_waitingBitmaps.shift()); _subscribedMaterials[_local2] = null; this.errorLoading = true; this.lineColor = ERROR_COLOR; this.lineAlpha = 1; this.lineThickness = 1; PaperLogger.error(("BitmapFileMaterial: Unable to load file " + _local2)); removeLoaderListeners(); if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; _local3 = new FileLoadEvent(FileLoadEvent.LOAD_ERROR, _local2, -1, -1, _arg1.text); dispatchEvent(_local3); } protected function getBitmapForFilename(_arg1:String):BitmapData{ var _local2:*; var _local3:BitmapFileMaterial; for (_local2 in _bitmapMaterials) { _local3 = (_local2 as BitmapFileMaterial); if (_local3.url == _arg1){ return (_local3.bitmap); }; }; return (null); } protected function dispatchAsyncLoadCompleteEvent(_arg1:TimerEvent):void{ loadComplete(); } private function queueBitmap(_arg1:String):void{ if (!_subscribedMaterials[_arg1]){ _waitingBitmaps.push(_arg1); _subscribedMaterials[_arg1] = new Array(); }; _subscribedMaterials[_arg1].push(this); if (_loadingIdle){ loadNextBitmap(); }; } protected function createBitmapFromURL(_arg1:String):BitmapData{ var _local2:BitmapData; if (_arg1 == ""){ return (null); }; _local2 = getBitmapForFilename(_arg1); if (_local2){ bitmap = super.createBitmap(_local2); setupAsyncLoadCompleteCallback(); return (_local2); }; queueBitmap(_arg1); return (loadingBitmap); } public function get bitmapMaterials():Dictionary{ return (_bitmapMaterials); } } }//package org.papervision3d.materials
Section 350
//BitmapMaterial (org.papervision3d.materials.BitmapMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.*; import org.papervision3d.core.material.*; public class BitmapMaterial extends TriangleMaterial implements ITriangleDrawer { protected var renderRecStorage:Array; private var b2:Number; private var c2:Number; protected var ax:Number; protected var az:Number; protected var ay:Number; protected var tempPreGrp:Graphics; protected var mcay:Number; protected var mcaz:Number; private var d2:Number; protected var bx:Number; protected var by:Number; protected var bz:Number; protected var mcax:Number; protected var cx:Number; protected var cy:Number; protected var cz:Number; protected var cullRect:Rectangle; protected var dmax:Number; private var dx:Number; private var dy:Number; protected var _perPixelPrecision:int;// = 8 private var x0:Number; private var x1:Number; private var x2:Number; protected var mbcy:Number; protected var mbcz:Number; protected var mbcx:Number; protected var tempPreBmp:BitmapData; private var y0:Number; private var y1:Number; private var y2:Number; protected var tempTriangleMatrix:Matrix; protected var focus:Number;// = 200 protected var mabz:Number; private var d2ab:Number; protected var dsab:Number; protected var mabx:Number; protected var maby:Number; protected var dcax:Number; protected var dcay:Number; protected var _precision:int;// = 8 protected var dsbc:Number; protected var _precise:Boolean; private var d2bc:Number; protected var faz:Number; public var uvMatrices:Dictionary; protected var dsca:Number; private var d2ca:Number; protected var fbz:Number; public var precisionMode:int; protected var fcz:Number; public var minimumRenderSize:Number;// = 4 protected var dbcx:Number; protected var dbcy:Number; protected var dabx:Number; protected var daby:Number; protected var tempPreRSD:RenderSessionData; protected var _texture:Object; private var a2:Number; protected static const DEFAULT_FOCUS:Number = 200; protected static var _triMatrix:Matrix = new Matrix(); protected static var _triMap:Matrix; public static var AUTO_MIP_MAPPING:Boolean = false; public static var MIP_MAP_DEPTH:Number = 8; protected static var hitRect:Rectangle = new Rectangle(); protected static var _localMatrix:Matrix = new Matrix(); public function BitmapMaterial(_arg1:BitmapData=null, _arg2:Boolean=false){ focus = 200; _precision = 8; _perPixelPrecision = 8; minimumRenderSize = 4; precisionMode = PrecisionMode.ORIGINAL; uvMatrices = new Dictionary(); tempTriangleMatrix = new Matrix(); super(); if (_arg1){ texture = _arg1; }; this.precise = _arg2; createRenderRecStorage(); } public function transformUVRT(_arg1:RenderTriangle):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; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Matrix; var _local15:Matrix; if (bitmap){ _local2 = (bitmap.width * maxU); _local3 = (bitmap.height * maxV); _local4 = (_local2 * _arg1.uv0.u); _local5 = (_local3 * (1 - _arg1.uv0.v)); _local6 = (_local2 * _arg1.uv1.u); _local7 = (_local3 * (1 - _arg1.uv1.v)); _local8 = (_local2 * _arg1.uv2.u); _local9 = (_local3 * (1 - _arg1.uv2.v)); if ((((((_local4 == _local6)) && ((_local5 == _local7)))) || ((((_local4 == _local8)) && ((_local5 == _local9)))))){ _local4 = (_local4 - ((_local4)>0.05) ? 0.05 : -0.05); _local5 = (_local5 - ((_local5)>0.07) ? 0.07 : -0.07); }; if ((((_local8 == _local6)) && ((_local9 == _local7)))){ _local8 = (_local8 - ((_local8)>0.05) ? 0.04 : -0.04); _local9 = (_local9 - ((_local9)>0.06) ? 0.06 : -0.06); }; _local10 = (_local6 - _local4); _local11 = (_local7 - _local5); _local12 = (_local8 - _local4); _local13 = (_local9 - _local5); _local14 = new Matrix(_local10, _local11, _local12, _local13, _local4, _local5); if (Papervision3D.useRIGHTHANDED){ _local14.scale(-1, 1); _local14.translate(_local2, 0); }; _local14.invert(); _local15 = (uvMatrices[_arg1] = _local14.clone()); _local15.a = _local14.a; _local15.b = _local14.b; _local15.c = _local14.c; _local15.d = _local14.d; _local15.tx = _local14.tx; _local15.ty = _local14.ty; } else { PaperLogger.error("MaterialObject3D: transformUV() material.bitmap not found!"); }; return (_local15); } public function resetUVS():void{ uvMatrices = new Dictionary(false); } protected function correctBitmap(_arg1:BitmapData):BitmapData{ var _local2:BitmapData; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Boolean; _local3 = (1 << MIP_MAP_DEPTH); _local4 = (_arg1.width / _local3); _local4 = ((_local4 == uint(_local4))) ? _local4 : (uint(_local4) + 1); _local5 = (_arg1.height / _local3); _local5 = ((_local5 == uint(_local5))) ? _local5 : (uint(_local5) + 1); _local6 = (_local3 * _local4); _local7 = (_local3 * _local5); _local8 = true; if (_local6 > 2880){ _local6 = _arg1.width; _local8 = false; }; if (_local7 > 2880){ _local7 = _arg1.height; _local8 = false; }; if (!_local8){ PaperLogger.warning((("Material " + this.name) + ": Texture too big for mip mapping. Resizing recommended for better performance and quality.")); }; if (((_arg1) && (((!(((_arg1.width % _local3) == 0))) || (!(((_arg1.height % _local3) == 0))))))){ _local2 = new BitmapData(_local6, _local7, _arg1.transparent, 0); widthOffset = _arg1.width; heightOffset = _arg1.height; this.maxU = (_arg1.width / _local6); this.maxV = (_arg1.height / _local7); _local2.draw(_arg1); extendBitmapEdges(_local2, _arg1.width, _arg1.height); } else { this.maxU = (this.maxV = 1); _local2 = _arg1; }; return (_local2); } public function get precise():Boolean{ return (_precise); } public function set texture(_arg1:Object):void{ if ((_arg1 is BitmapData) == false){ PaperLogger.error("BitmapMaterial.texture requires a BitmapData object for the texture"); return; }; bitmap = createBitmap(BitmapData(_arg1)); _texture = _arg1; } override public function toString():String{ return (((((("Texture:" + this.texture) + " lineColor:") + this.lineColor) + " lineAlpha:") + this.lineAlpha)); } public function get precision():int{ return (_precision); } public function resetMapping():void{ uvMatrices = new Dictionary(); } public function get pixelPrecision():int{ return (_perPixelPrecision); } public function set precise(_arg1:Boolean):void{ _precise = _arg1; } protected function extendBitmapEdges(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{ var _local4:Rectangle; var _local5:Point; var _local6:int; _local4 = new Rectangle(); _local5 = new Point(); if (_arg1.width > _arg2){ _local4.x = (_arg2 - 1); _local4.y = 0; _local4.width = 1; _local4.height = _arg3; _local5.y = 0; _local6 = _arg2; while (_local6 < _arg1.width) { _local5.x = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; if (_arg1.height > _arg3){ _local4.x = 0; _local4.y = (_arg3 - 1); _local4.width = _arg1.width; _local4.height = 1; _local5.x = 0; _local6 = _arg3; while (_local6 < _arg1.height) { _local5.y = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; } public function set precision(_arg1:int):void{ _precision = _arg1; } public function transformUV(_arg1:Triangle3D):Matrix{ var _local2: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:Matrix; var _local16:Matrix; if (!_arg1.uv){ PaperLogger.error("MaterialObject3D: transformUV() uv not found!"); } else { if (bitmap){ _local2 = _arg1.uv; _local3 = (bitmap.width * maxU); _local4 = (bitmap.height * maxV); _local5 = (_local3 * _arg1.uv0.u); _local6 = (_local4 * (1 - _arg1.uv0.v)); _local7 = (_local3 * _arg1.uv1.u); _local8 = (_local4 * (1 - _arg1.uv1.v)); _local9 = (_local3 * _arg1.uv2.u); _local10 = (_local4 * (1 - _arg1.uv2.v)); if ((((((_local5 == _local7)) && ((_local6 == _local8)))) || ((((_local5 == _local9)) && ((_local6 == _local10)))))){ _local5 = (_local5 - ((_local5)>0.05) ? 0.05 : -0.05); _local6 = (_local6 - ((_local6)>0.07) ? 0.07 : -0.07); }; if ((((_local9 == _local7)) && ((_local10 == _local8)))){ _local9 = (_local9 - ((_local9)>0.05) ? 0.04 : -0.04); _local10 = (_local10 - ((_local10)>0.06) ? 0.06 : -0.06); }; _local11 = (_local7 - _local5); _local12 = (_local8 - _local6); _local13 = (_local9 - _local5); _local14 = (_local10 - _local6); _local15 = new Matrix(_local11, _local12, _local13, _local14, _local5, _local6); if (Papervision3D.useRIGHTHANDED){ _local15.scale(-1, 1); _local15.translate(_local3, 0); }; _local15.invert(); _local16 = (uvMatrices[_arg1] = _local15.clone()); _local16.a = _local15.a; _local16.b = _local15.b; _local16.c = _local15.c; _local16.d = _local15.d; _local16.tx = _local15.tx; _local16.ty = _local15.ty; } else { PaperLogger.error("MaterialObject3D: transformUV() material.bitmap not found!"); }; }; return (_local16); } protected function renderRec(_arg1:Matrix, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance, _arg5:Number):void{ var _local6:int; var _local7:RenderRecStorage; var _local8:Matrix; az = _arg2.z; bz = _arg3.z; cz = _arg4.z; if ((((((az <= 0)) && ((bz <= 0)))) && ((cz <= 0)))){ return; }; cx = _arg4.x; cy = _arg4.y; bx = _arg3.x; by = _arg3.y; ax = _arg2.x; ay = _arg2.y; if (cullRect){ hitRect.x = ((bx < ax)) ? ((bx < cx)) ? bx : cx : ((ax < cx)) ? ax : cx; hitRect.width = (((bx > ax)) ? ((bx > cx)) ? bx : cx : ((ax > cx)) ? ax : cx + ((hitRect.x < 0)) ? -(hitRect.x) : hitRect.x); hitRect.y = ((by < ay)) ? ((by < cy)) ? by : cy : ((ay < cy)) ? ay : cy; hitRect.height = (((by > ay)) ? ((by > cy)) ? by : cy : ((ay > cy)) ? ay : cy + ((hitRect.y < 0)) ? -(hitRect.y) : hitRect.y); if (!(((hitRect.right < cullRect.left)) || ((hitRect.left > cullRect.right)))){ if (!(((hitRect.bottom < cullRect.top)) || ((hitRect.top > cullRect.bottom)))){ } else { return; }; } else { return; }; }; if ((((((((_arg5 >= 100)) || ((hitRect.width < minimumRenderSize)))) || ((hitRect.height < minimumRenderSize)))) || ((focus == Infinity)))){ a2 = (_arg3.x - _arg2.x); b2 = (_arg3.y - _arg2.y); c2 = (_arg4.x - _arg2.x); d2 = (_arg4.y - _arg2.y); tempTriangleMatrix.a = ((_arg1.a * a2) + (_arg1.b * c2)); tempTriangleMatrix.b = ((_arg1.a * b2) + (_arg1.b * d2)); tempTriangleMatrix.c = ((_arg1.c * a2) + (_arg1.d * c2)); tempTriangleMatrix.d = ((_arg1.c * b2) + (_arg1.d * d2)); tempTriangleMatrix.tx = (((_arg1.tx * a2) + (_arg1.ty * c2)) + _arg2.x); tempTriangleMatrix.ty = (((_arg1.tx * b2) + (_arg1.ty * d2)) + _arg2.y); if (lineAlpha){ tempPreGrp.lineStyle(lineThickness, lineColor, lineAlpha); }; tempPreGrp.beginBitmapFill(tempPreBmp, tempTriangleMatrix, tiled, smooth); tempPreGrp.moveTo(_arg2.x, _arg2.y); tempPreGrp.lineTo(_arg3.x, _arg3.y); tempPreGrp.lineTo(_arg4.x, _arg4.y); tempPreGrp.endFill(); if (lineAlpha){ tempPreGrp.lineStyle(); }; tempPreRSD.renderStatistics.triangles++; return; }; faz = (focus + az); fbz = (focus + bz); fcz = (focus + cz); mabz = (2 / (faz + fbz)); mbcz = (2 / (fbz + fcz)); mcaz = (2 / (fcz + faz)); mabx = (((ax * faz) + (bx * fbz)) * mabz); maby = (((ay * faz) + (by * fbz)) * mabz); mbcx = (((bx * fbz) + (cx * fcz)) * mbcz); mbcy = (((by * fbz) + (cy * fcz)) * mbcz); mcax = (((cx * fcz) + (ax * faz)) * mcaz); mcay = (((cy * fcz) + (ay * faz)) * mcaz); dabx = ((ax + bx) - mabx); daby = ((ay + by) - maby); dbcx = ((bx + cx) - mbcx); dbcy = ((by + cy) - mbcy); dcax = ((cx + ax) - mcax); dcay = ((cy + ay) - mcay); dsab = ((dabx * dabx) + (daby * daby)); dsbc = ((dbcx * dbcx) + (dbcy * dbcy)); dsca = ((dcax * dcax) + (dcay * dcay)); _local6 = (_arg5 + 1); _local7 = RenderRecStorage(renderRecStorage[int(_arg5)]); _local8 = _local7.mat; if ((((((dsab <= _precision)) && ((dsca <= _precision)))) && ((dsbc <= _precision)))){ a2 = (_arg3.x - _arg2.x); b2 = (_arg3.y - _arg2.y); c2 = (_arg4.x - _arg2.x); d2 = (_arg4.y - _arg2.y); tempTriangleMatrix.a = ((_arg1.a * a2) + (_arg1.b * c2)); tempTriangleMatrix.b = ((_arg1.a * b2) + (_arg1.b * d2)); tempTriangleMatrix.c = ((_arg1.c * a2) + (_arg1.d * c2)); tempTriangleMatrix.d = ((_arg1.c * b2) + (_arg1.d * d2)); tempTriangleMatrix.tx = (((_arg1.tx * a2) + (_arg1.ty * c2)) + _arg2.x); tempTriangleMatrix.ty = (((_arg1.tx * b2) + (_arg1.ty * d2)) + _arg2.y); if (lineAlpha){ tempPreGrp.lineStyle(lineThickness, lineColor, lineAlpha); }; tempPreGrp.beginBitmapFill(tempPreBmp, tempTriangleMatrix, tiled, smooth); tempPreGrp.moveTo(_arg2.x, _arg2.y); tempPreGrp.lineTo(_arg3.x, _arg3.y); tempPreGrp.lineTo(_arg4.x, _arg4.y); tempPreGrp.endFill(); if (lineAlpha){ tempPreGrp.lineStyle(); }; tempPreRSD.renderStatistics.triangles++; return; }; if ((((((dsab > _precision)) && ((dsca > _precision)))) && ((dsbc > _precision)))){ _local8.a = (_arg1.a * 2); _local8.b = (_arg1.b * 2); _local8.c = (_arg1.c * 2); _local8.d = (_arg1.d * 2); _local8.tx = (_arg1.tx * 2); _local8.ty = (_arg1.ty * 2); _local7.v0.x = (mabx * 0.5); _local7.v0.y = (maby * 0.5); _local7.v0.z = ((az + bz) * 0.5); _local7.v1.x = (mbcx * 0.5); _local7.v1.y = (mbcy * 0.5); _local7.v1.z = ((bz + cz) * 0.5); _local7.v2.x = (mcax * 0.5); _local7.v2.y = (mcay * 0.5); _local7.v2.z = ((cz + az) * 0.5); renderRec(_local8, _arg2, _local7.v0, _local7.v2, _local6); _local8.tx = (_local8.tx - 1); renderRec(_local8, _local7.v0, _arg3, _local7.v1, _local6); _local8.ty = (_local8.ty - 1); _local8.tx = (_arg1.tx * 2); renderRec(_local8, _local7.v2, _local7.v1, _arg4, _local6); _local8.a = (-(_arg1.a) * 2); _local8.b = (-(_arg1.b) * 2); _local8.c = (-(_arg1.c) * 2); _local8.d = (-(_arg1.d) * 2); _local8.tx = ((-(_arg1.tx) * 2) + 1); _local8.ty = ((-(_arg1.ty) * 2) + 1); renderRec(_local8, _local7.v1, _local7.v2, _local7.v0, _local6); return; }; if (precisionMode == PrecisionMode.ORIGINAL){ d2ab = dsab; d2bc = dsbc; d2ca = dsca; dmax = ((dsca > dsbc)) ? ((dsca > dsab)) ? dsca : dsab : ((dsbc > dsab)) ? dsbc : dsab; } else { dx = (_arg2.x - _arg3.x); dy = (_arg2.y - _arg3.y); d2ab = ((dx * dx) + (dy * dy)); dx = (_arg3.x - _arg4.x); dy = (_arg3.y - _arg4.y); d2bc = ((dx * dx) + (dy * dy)); dx = (_arg4.x - _arg2.x); dy = (_arg4.y - _arg2.y); d2ca = ((dx * dx) + (dy * dy)); dmax = ((d2ca > d2bc)) ? ((d2ca > d2ab)) ? d2ca : d2ab : ((d2bc > d2ab)) ? d2bc : d2ab; }; if (d2ab == dmax){ _local8.a = (_arg1.a * 2); _local8.b = _arg1.b; _local8.c = (_arg1.c * 2); _local8.d = _arg1.d; _local8.tx = (_arg1.tx * 2); _local8.ty = _arg1.ty; _local7.v0.x = (mabx * 0.5); _local7.v0.y = (maby * 0.5); _local7.v0.z = ((az + bz) * 0.5); renderRec(_local8, _arg2, _local7.v0, _arg4, _local6); _local8.a = ((_arg1.a * 2) + _arg1.b); _local8.c = ((2 * _arg1.c) + _arg1.d); _local8.tx = (((_arg1.tx * 2) + _arg1.ty) - 1); renderRec(_local8, _local7.v0, _arg3, _arg4, _local6); return; }; if (d2ca == dmax){ _local8.a = _arg1.a; _local8.b = (_arg1.b * 2); _local8.c = _arg1.c; _local8.d = (_arg1.d * 2); _local8.tx = _arg1.tx; _local8.ty = (_arg1.ty * 2); _local7.v2.x = (mcax * 0.5); _local7.v2.y = (mcay * 0.5); _local7.v2.z = ((cz + az) * 0.5); renderRec(_local8, _arg2, _arg3, _local7.v2, _local6); _local8.b = (_local8.b + _arg1.a); _local8.d = (_local8.d + _arg1.c); _local8.ty = (_local8.ty + (_arg1.tx - 1)); renderRec(_local8, _local7.v2, _arg3, _arg4, _local6); return; }; _local8.a = (_arg1.a - _arg1.b); _local8.b = (_arg1.b * 2); _local8.c = (_arg1.c - _arg1.d); _local8.d = (_arg1.d * 2); _local8.tx = (_arg1.tx - _arg1.ty); _local8.ty = (_arg1.ty * 2); _local7.v1.x = (mbcx * 0.5); _local7.v1.y = (mbcy * 0.5); _local7.v1.z = ((bz + cz) * 0.5); renderRec(_local8, _arg2, _arg3, _local7.v1, _local6); _local8.a = (_arg1.a * 2); _local8.b = (_arg1.b - _arg1.a); _local8.c = (_arg1.c * 2); _local8.d = (_arg1.d - _arg1.c); _local8.tx = (_arg1.tx * 2); _local8.ty = (_arg1.ty - _arg1.tx); renderRec(_local8, _arg2, _local7.v1, _arg4, _local6); } protected function createRenderRecStorage():void{ var _local1:int; this.renderRecStorage = new Array(); _local1 = 0; while (_local1 <= 100) { this.renderRecStorage[_local1] = new RenderRecStorage(); _local1++; }; } public function set pixelPrecision(_arg1:int):void{ _precision = ((_arg1 * _arg1) * 1.4); _perPixelPrecision = _arg1; } public function get texture():Object{ return (this._texture); } protected function createBitmap(_arg1:BitmapData):BitmapData{ var _local2:BitmapData; resetMapping(); if (AUTO_MIP_MAPPING){ _local2 = correctBitmap(_arg1); } else { this.maxU = (this.maxV = 1); _local2 = _arg1; }; return (_local2); } override public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = super.clone(); _local1.maxU = this.maxU; _local1.maxV = this.maxV; return (_local1); } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ _triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUVRT(_arg1))); if (((!(_precise)) || (!(_triMap)))){ if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; if (bitmap){ x0 = _arg1.v0.x; y0 = _arg1.v0.y; x1 = _arg1.v1.x; y1 = _arg1.v1.y; x2 = _arg1.v2.x; y2 = _arg1.v2.y; _triMatrix.a = (x1 - x0); _triMatrix.b = (y1 - y0); _triMatrix.c = (x2 - x0); _triMatrix.d = (y2 - y0); _triMatrix.tx = x0; _triMatrix.ty = y0; _localMatrix.a = _triMap.a; _localMatrix.b = _triMap.b; _localMatrix.c = _triMap.c; _localMatrix.d = _triMap.d; _localMatrix.tx = _triMap.tx; _localMatrix.ty = _triMap.ty; _localMatrix.concat(_triMatrix); _arg2.beginBitmapFill((_arg4) ? _arg4 : bitmap, _localMatrix, tiled, smooth); }; _arg2.moveTo(x0, y0); _arg2.lineTo(x1, y1); _arg2.lineTo(x2, y2); _arg2.lineTo(x0, y0); if (bitmap){ _arg2.endFill(); }; if (lineAlpha){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; } else { if (bitmap){ focus = _arg3.camera.focus; tempPreBmp = (_arg4) ? _arg4 : bitmap; tempPreRSD = _arg3; tempPreGrp = _arg2; cullRect = _arg3.viewPort.cullingRectangle; renderRec(_triMap, _arg1.v0, _arg1.v1, _arg1.v2, 0); }; }; } override public function copy(_arg1:MaterialObject3D):void{ super.copy(_arg1); this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } override public function destroy():void{ super.destroy(); if (uvMatrices){ uvMatrices = null; }; if (bitmap){ bitmap.dispose(); }; this.renderRecStorage = null; } } }//package org.papervision3d.materials
Section 351
//ColorMaterial (org.papervision3d.materials.ColorMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class ColorMaterial extends TriangleMaterial implements ITriangleDrawer { public function ColorMaterial(_arg1:Number=0xFF00FF, _arg2:Number=1, _arg3:Boolean=false){ this.fillColor = _arg1; this.fillAlpha = _arg2; this.interactive = _arg3; } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _local6 = _arg1.v0.x; _local7 = _arg1.v0.y; _local8 = _arg1.v1.x; _local9 = _arg1.v1.y; _local10 = _arg1.v2.x; _local11 = _arg1.v2.y; _arg2.beginFill(fillColor, fillAlpha); _arg2.moveTo(_local6, _local7); _arg2.lineTo(_local8, _local9); _arg2.lineTo(_local10, _local11); _arg2.lineTo(_local6, _local7); _arg2.endFill(); _arg3.renderStatistics.triangles++; } override public function toString():String{ return (((("ColorMaterial - color:" + this.fillColor) + " alpha:") + this.fillAlpha)); } override public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new ColorMaterial(); _local1.copy(this); return (_local1); } } }//package org.papervision3d.materials
Section 352
//MovieMaterial (org.papervision3d.materials.MovieMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.render.material.*; import org.papervision3d.core.log.*; import org.papervision3d.core.render.draw.*; public class MovieMaterial extends BitmapMaterial implements ITriangleDrawer, IUpdateBeforeMaterial, IUpdateAfterMaterial { public var movieTransparent:Boolean; private var materialIsUsed:Boolean;// = false private var autoClipRect:Rectangle; private var userClipRect:Rectangle; protected var recreateBitmapInSuper:Boolean; private var movieAnimated:Boolean; private var stage:Stage; private var quality:String; public var movie:DisplayObject; public var allowAutoResize:Boolean;// = false public function MovieMaterial(_arg1:DisplayObject=null, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Rectangle=null){ materialIsUsed = false; allowAutoResize = false; super(); movieTransparent = _arg2; this.animated = _arg3; this.precise = _arg4; userClipRect = _arg5; if (_arg1){ texture = _arg1; }; } public function updateAfterRender(_arg1:RenderSessionData):void{ if ((((movieAnimated == true)) && ((materialIsUsed == true)))){ drawBitmap(); if (recreateBitmapInSuper){ bitmap = super.createBitmap(bitmap); recreateBitmapInSuper = false; }; }; } override public function set texture(_arg1:Object):void{ if ((_arg1 is DisplayObject) == false){ PaperLogger.error("MovieMaterial.texture requires a Sprite to be passed as the object"); return; }; bitmap = createBitmapFromSprite(DisplayObject(_arg1)); _texture = _arg1; } public function setQuality(_arg1:String, _arg2:Stage, _arg3:Boolean=true):void{ this.quality = _arg1; this.stage = _arg2; if (_arg3){ createBitmapFromSprite(movie); }; } protected function initBitmap(_arg1:DisplayObject):void{ if (bitmap){ bitmap.dispose(); }; if (userClipRect){ bitmap = new BitmapData(int((userClipRect.width + 0.5)), int((userClipRect.height + 0.5)), movieTransparent, fillColor); } else { if ((((_arg1.width == 0)) || ((_arg1.height == 0)))){ bitmap = new BitmapData(0x0100, 0x0100, movieTransparent, fillColor); } else { bitmap = new BitmapData(int((_arg1.width + 0.5)), int((_arg1.height + 0.5)), movieTransparent, fillColor); }; }; } protected function createBitmapFromSprite(_arg1:DisplayObject):BitmapData{ movie = _arg1; initBitmap(movie); drawBitmap(); bitmap = super.createBitmap(bitmap); return (bitmap); } override public function get texture():Object{ return (this._texture); } public function set animated(_arg1:Boolean):void{ movieAnimated = _arg1; } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:int; var _local3:int; materialIsUsed = false; if (movieAnimated){ if (userClipRect){ _local2 = int((userClipRect.width + 0.5)); _local3 = int((userClipRect.height + 0.5)); } else { _local2 = int((movie.width + 0.5)); _local3 = int((movie.height + 0.5)); }; if (((allowAutoResize) && (((!((_local2 == bitmap.width))) || (!((_local3 == bitmap.height))))))){ initBitmap(movie); recreateBitmapInSuper = true; }; }; } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ materialIsUsed = true; super.drawTriangle(_arg1, _arg2, _arg3, _arg4, _arg5); } public function drawBitmap():void{ var _local1:Rectangle; var _local2:Matrix; var _local3:String; bitmap.fillRect(bitmap.rect, fillColor); if (((stage) && (quality))){ _local3 = stage.quality; stage.quality = quality; }; _local1 = rect; _local2 = new Matrix(1, 0, 0, 1, -(_local1.x), -(_local1.y)); bitmap.draw(movie, _local2, movie.transform.colorTransform, null); if (!userClipRect){ autoClipRect = movie.getBounds(movie); }; if (((stage) && (quality))){ stage.quality = _local3; }; } public function get animated():Boolean{ return (movieAnimated); } public function set rect(_arg1:Rectangle):void{ userClipRect = _arg1; createBitmapFromSprite(movie); } public function get rect():Rectangle{ var _local1:Rectangle; _local1 = ((userClipRect) || (autoClipRect)); if (((!(_local1)) && (movie))){ _local1 = movie.getBounds(movie); }; return (_local1); } } }//package org.papervision3d.materials
Section 353
//WireframeMaterial (org.papervision3d.materials.WireframeMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class WireframeMaterial extends TriangleMaterial implements ITriangleDrawer { public function WireframeMaterial(_arg1:Number=0xFF00FF, _arg2:Number=100, _arg3:Number=0){ this.lineColor = _arg1; this.lineAlpha = _arg2; this.lineThickness = _arg3; this.doubleSided = false; } override public function drawTriangle(_arg1:RenderTriangle, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; _local6 = _arg1.v0.x; _local7 = _arg1.v0.y; if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); _arg2.moveTo(_local6, _local7); _arg2.lineTo(_arg1.v1.x, _arg1.v1.y); _arg2.lineTo(_arg1.v2.x, _arg1.v2.y); _arg2.lineTo(_local6, _local7); _arg2.lineStyle(); _arg3.renderStatistics.triangles++; }; } override public function toString():String{ return (((("WireframeMaterial - color:" + this.lineColor) + " alpha:") + this.lineAlpha)); } } }//package org.papervision3d.materials
Section 354
//DAE (org.papervision3d.objects.parsers.DAE) package org.papervision3d.objects.parsers { import flash.events.*; import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.animation.channel.*; import org.papervision3d.objects.*; import org.papervision3d.core.animation.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.*; import org.ascollada.types.*; import org.papervision3d.materials.shaders.*; import org.papervision3d.core.log.*; import org.papervision3d.objects.special.*; import org.ascollada.core.*; import org.ascollada.fx.*; import flash.utils.*; import org.papervision3d.core.geom.*; import org.papervision3d.materials.special.*; import org.papervision3d.events.*; import org.papervision3d.core.controller.*; import org.papervision3d.*; import org.ascollada.*; import org.ascollada.io.*; import org.papervision3d.core.material.*; import org.ascollada.namespaces.*; import flash.system.*; public class DAE extends DisplayObject3D implements IAnimationDataProvider, IAnimatable { public var filename:String; protected var _numSkins:uint; public var COLLADA:XML; public var parser:DaeReader; protected var _isPlaying:Boolean;// = false protected var _currentTime:int; protected var _geometries:Object; public var useMaterialTargetName:Boolean;// = false public var fileTitle:String; protected var _textureSets:Object; protected var _isAnimated:Boolean;// = false protected var _controllers:Array; protected var _startTime:Number; protected var _rightHanded:Boolean; protected var _colladaSID:Dictionary; public var baseUrl:String; protected var _autoPlay:Boolean; protected var _colladaIDToObject:Object; protected var _endTime:Number; protected var _channelsByTarget:Dictionary; protected var _channels:Array; public var forceCoordSet:int;// = 0 public var document:DaeDocument; protected var _totalFrames:int;// = 0 protected var _currentFrame:int;// = 0 protected var _playerType:String; protected var _objectToNode:Object; protected var _rootNode:DisplayObject3D; protected var _colladaID:Dictionary; protected var _loop:Boolean;// = false protected var _colladaSIDToObject:Object; protected var _skins:Dictionary; protected var _queuedMaterials:Array; public var texturePath:String; protected var _bindVertexInputs:Dictionary; public static const ROOTNODE_NAME:String = "COLLADA_Scene"; public static var DEFAULT_LINE_COLOR:uint = 0xFFFF00; public static var DEFAULT_LINE_WIDTH:Number = 0; public static var DEFAULT_TGA_ALTERNATIVE:String = "png"; public function DAE(_arg1:Boolean=true, _arg2:String=null, _arg3:Boolean=false){ useMaterialTargetName = false; forceCoordSet = 0; _currentFrame = 0; _totalFrames = 0; _isAnimated = false; _isPlaying = false; _loop = false; super(_arg2); _autoPlay = _arg1; _rightHanded = Papervision3D.useRIGHTHANDED; _loop = _arg3; _playerType = Capabilities.playerType; } public function stop():void{ trace("STOP CALLED ON DAE"); _isPlaying = false; dispatchEvent(new AnimationEvent(AnimationEvent.ANIMATION_COMPLETE, _currentFrame, _totalFrames)); } public function getAnimationChannelByName(_arg1:String):AbstractChannel3D{ return (null); } protected function getSymbolName(_arg1:String):String{ var _local2:DaeEffect; var _local3:DaeEffect; for each (_local3 in this.document.effects) { if (_local3.id == _arg1){ return (_local3.texture_url); }; }; return (null); } protected function onParseProgress(_arg1:ProgressEvent):void{ dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_PROGRESS, this.filename, _arg1.bytesLoaded, _arg1.bytesTotal, null, null, true, false)); } protected function buildVertices(_arg1:DaeMesh):Array{ var _local2:Array; var _local3:int; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.vertices.length) { _local2.push(new Vertex3D(_arg1.vertices[_local3][0], _arg1.vertices[_local3][1], _arg1.vertices[_local3][2])); _local3++; }; return (_local2); } protected function linkSkin(_arg1:DisplayObject3D, _arg2:DaeSkin):void{ var _local3:int; var _local4:Object; var _local5:SkinController; var _local6:String; var _local7:DisplayObject3D; var _local8:Array; var _local9:Array; _local4 = new Object(); _local5 = new SkinController((_arg1 as Skin3D)); _local5.bindShapeMatrix = new Matrix3D(_arg2.bind_shape_matrix); _local5.joints = new Array(); _local5.vertexWeights = new Array(); _local5.invBindMatrices = new Array(); _local3 = 0; while (_local3 < _arg2.joints.length) { _local6 = _arg2.joints[_local3]; if (_local4[_local6]){ } else { _local7 = _colladaIDToObject[_local6]; if (!_local7){ _local7 = _colladaSIDToObject[_local6]; }; if (!_local7){ throw (new Error(("Couldn't find the joint id = " + _local6))); }; _local8 = _arg2.findJointVertexWeightsByIDOrSID(_local6); if (!_local8){ throw (new Error(("Could not find vertex weights for joint with id = " + _local6))); }; _local9 = _arg2.findJointBindMatrix2(_local6); if (((!(_local9)) || (!((_local9.length == 16))))){ throw (new Error(("Could not find inverse bind matrix for joint with id = " + _local6))); }; _local5.joints.push(_local7); _local5.invBindMatrices.push(new Matrix3D(_local9)); _local5.vertexWeights.push(_local8); _local4[_local6] = true; }; _local3++; }; _controllers.push(_local5); } public function getAnimationChannelsByClip(_arg1:String):Array{ return (null); } protected function buildAnimationChannels():void{ var _local1:DisplayObject3D; var _local2:DaeChannel; var _local3:Dictionary; var _local4:int; var _local5:DaeAnimation; var _local6:*; var _local7:Array; var _local8:DaeNode; var _local9:DaeTransform; var _local10:Array; var _local11:Array; var _local12:Number; var _local13:Object; var _local14:MatrixChannel3D; var _local15:Number; var _local16:MatrixChannel3D; var _local17:Number; var _local18:Matrix3D; var _local19:int; var _local20:MatrixChannel3D; var _local21:Number; _local3 = new Dictionary(true); _channelsByTarget = new Dictionary(true); for each (_local5 in this.document.animations) { _local4 = 0; while (_local4 < _local5.channels.length) { _local2 = _local5.channels[_local4]; _local1 = _colladaIDToObject[_local2.syntax.targetID]; if (!_local1){ throw (new Error("damn")); }; if (!_local3[_local1]){ _local3[_local1] = new Array(); }; _local3[_local1].push(_local2); _local4++; }; }; for (_local6 in _local3) { _local1 = (_local6 as DisplayObject3D); _local7 = _local3[_local6]; _local8 = _objectToNode[_local1]; if (!_local8){ throw (new Error((("Couldn't find the targeted object with name '" + _local8.name) + "'"))); }; _local8.channels = _local7; if (!_local7.length){ } else { _local2 = _local7[0]; _local9 = _local8.findMatrixBySID(_local2.syntax.targetSID); if (!_local9){ PaperLogger.warning(("Could not find a transform with SID=" + _local2.syntax.targetSID)); } else { if ((((_local7.length == 1)) && ((_local9.type == ASCollada.DAE_MATRIX_ELEMENT)))){ _channelsByTarget[_local1] = [buildAnimationChannel(_local1, _local2)]; } else { _local10 = new Array(); _local11 = new Array(); for each (_local2 in _local7) { _local10 = _local10.concat(_local2.input); }; _local10.sort(Array.NUMERIC); _local4 = 0; while (_local4 < _local10.length) { _local15 = _local10[_local4]; if (_local4 == 0){ _local11.push(_local15); } else { if ((_local15 - _local12) > 0.01){ _local11.push(_local15); }; }; _local12 = _local15; _local4++; }; _local13 = new Object(); for each (_local2 in _local7) { _local16 = buildAnimationChannel(_local1, _local2); if (_local16){ _local13[_local2.syntax.targetSID] = buildAnimationChannel(_local1, _local2); }; }; _local14 = new MatrixChannel3D(_local1); _local4 = 0; while (_local4 < _local11.length) { _local17 = _local11[_local4]; _local18 = Matrix3D.IDENTITY; _local19 = 0; while (_local19 < _local8.transforms.length) { _local9 = _local8.transforms[_local19]; _local20 = _local13[_local9.sid]; if (_local20){ if (_local17 < _local20.startTime){ _local21 = 0; } else { if (_local17 > _local20.endTime){ _local21 = 1; } else { _local21 = (_local17 / (_local20.endTime - _local20.startTime)); }; }; _local20.updateToTime(_local21); _local18 = Matrix3D.multiply(_local18, _local1.transform); } else { _local18 = Matrix3D.multiply(_local18, buildMatrixFromTransform(_local9)); }; _local19++; }; _local14.addKeyFrame(new AnimationKeyFrame3D(("frame_" + _local4), _local17, [_local18])); _local4++; }; _channelsByTarget[_local1] = [_local14]; }; }; }; }; } public function getAnimationChannels(_arg1:DisplayObject3D=null):Array{ var _local2:Array; var _local3:Array; _local2 = new Array(); if (_arg1 == null){ for each (_local3 in _channelsByTarget) { _local2 = _local2.concat(_local3); }; } else { if (_channelsByTarget[_arg1]){ _local2 = _local2.concat(_channelsByTarget[_arg1]); } else { return (null); }; }; return (_local2); } protected function buildScene():void{ var _local1:int; _controllers = new Array(); buildGeometries(); _rootNode = new DisplayObject3D(ROOTNODE_NAME); _local1 = 0; while (_local1 < this.document.vscene.nodes.length) { buildNode(this.document.vscene.nodes[_local1], _rootNode); _local1++; }; linkSkins(); this.addChild(_rootNode); if (this.yUp){ } else { _rootNode.rotationX = -90; _rootNode.rotationY = 180; }; if (!_rightHanded){ _rootNode.scaleX = -(_rootNode.scaleX); }; _currentFrame = 0; _totalFrames = 0; _startTime = (_endTime = 0); _channels = new Array(); _isAnimated = false; _isPlaying = false; if (document.numQueuedAnimations){ _isAnimated = true; this.parser.addEventListener(Event.COMPLETE, onParseAnimationsComplete); this.parser.addEventListener(ProgressEvent.PROGRESS, onParseAnimationsProgress); this.parser.readAnimations(); }; dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, this.filename)); } public function load(_arg1, _arg2:MaterialsList=null, _arg3:Boolean=false):void{ this.materials = ((_arg2) || (new MaterialsList())); buildFileInfo(_arg1); _bindVertexInputs = new Dictionary(true); this.parser = new DaeReader(_arg3); this.parser.addEventListener(Event.COMPLETE, onParseComplete); this.parser.addEventListener(ProgressEvent.PROGRESS, onParseProgress); if ((_arg1 is XML)){ this.COLLADA = (_arg1 as XML); this.parser.loadDocument(_arg1); } else { if ((_arg1 is ByteArray)){ this.COLLADA = new XML(ByteArray(_arg1)); this.parser.loadDocument(_arg1); } else { if ((_arg1 is String)){ this.filename = String(_arg1); this.parser.read(this.filename); } else { throw (new Error("load : unknown asset type!")); }; }; }; } protected function buildFileInfo(_arg1):void{ var _local2:Array; this.filename = ((_arg1 is String)) ? String(_arg1) : "./meshes/rawdata_dae"; this.filename = this.filename.split("\\").join("/"); if (this.filename.indexOf("/") != -1){ _local2 = this.filename.split("/"); this.fileTitle = String(_local2.pop()); this.baseUrl = _local2.join("/"); } else { this.fileTitle = this.filename; this.baseUrl = ""; }; } protected function mergeGeometries(_arg1:GeometryObject3D, _arg2:GeometryObject3D, _arg3:Array=null):void{ var _local4:MaterialObject3D; var _local5:Triangle3D; var _local6:Boolean; var _local7:MaterialObject3D; if (((_arg3) && (_arg3.length))){ _local4 = _arg3[0]; for each (_local5 in _arg2.faces) { _local6 = false; for each (_local7 in _arg3) { if (_local7 === _local5.material){ _local6 = true; break; }; }; _local5.material = (_local6) ? _local5.material : _local4; }; }; _arg1.vertices = _arg1.vertices.concat(_arg2.vertices); _arg1.faces = _arg1.faces.concat(_arg2.faces); _arg1.ready = true; } protected function linkSkins():void{ var _local1:*; var _local2:TriangleMesh3D; _numSkins = 0; for (_local1 in _skins) { _local2 = (_local1 as TriangleMesh3D); if (!_local2){ throw (new Error("Not a Skin3D?")); }; linkSkin(_local2, _skins[_local1]); _numSkins++; }; } override public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ var _local2:DisplayObject3D; var _local3:DisplayObject3D; var _local4:DisplayObject3D; _local2 = getChildByName(_arg1.name, true); if (_local2){ _local3 = DisplayObject3D(_local2.parent); if (_local3){ _local4 = _local3.removeChild(_local2); if (_local4){ return (_local4); }; }; }; return (null); } protected function onParseAnimationsComplete(_arg1:Event):void{ var _local2:AbstractChannel3D; buildAnimationChannels(); _channels = ((this.getAnimationChannels()) || (new Array())); _currentFrame = (_totalFrames = 0); _startTime = (_endTime = 0); for each (_local2 in _channels) { _totalFrames = Math.max(_totalFrames, _local2.keyFrames.length); _startTime = Math.min(_startTime, _local2.startTime); _endTime = Math.max(_endTime, _local2.endTime); _local2.updateToTime(0); }; PaperLogger.info((((((((("animations COMPLETE (#channels: " + _channels.length) + " #frames: ") + _totalFrames) + ", startTime: ") + _startTime) + " endTime: ") + _endTime) + ")")); dispatchEvent(new FileLoadEvent(FileLoadEvent.ANIMATIONS_COMPLETE, this.filename)); if (_autoPlay){ play(); }; } public function get fps():uint{ return (20); } public function get yUp():Boolean{ if (this.document){ return ((this.document.asset.yUp == ASCollada.DAE_Y_UP)); }; return (false); } protected function buildSkin(_arg1:Skin3D, _arg2:DaeSkin, _arg3:Array, _arg4:DaeNode):void{ var _local5:GeometryObject3D; var _local6:DaeController; var _local7:DaeMorph; var _local8:int; var _local9:GeometryObject3D; _local5 = _geometries[_arg2.source]; if (!_local5){ _local6 = this.document.controllers[_arg2.source]; if (((_local6) && (_local6.morph))){ _local7 = _local6.morph; _local5 = _geometries[_local7.source]; _local8 = 0; while (_local8 < _local7.targets.length) { _local9 = _geometries[_local7.targets[_local8]]; _local8++; }; }; if (!_local5){ throw (new Error(("no geometry for source: " + _arg2.source))); }; }; mergeGeometries(_arg1.geometry, _local5.clone(_arg1)); _skins[_arg1] = _arg2; } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:IObjectController; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:AbstractChannel3D; for each (_local3 in _controllers) { _local3.update(); }; if (((_isPlaying) && (_channels))){ _local4 = (_currentTime / 1000); _local5 = (_endTime - _startTime); _local6 = ((getTimer() / 1000) - _local4); if (_local6 > _local5){ _currentTime = getTimer(); _local4 = (_currentTime / 1000); _local6 = 0; }; _local7 = (_local6 / _local5); if ((((_local7 == 0)) && (!(_loop)))){ stop(); } else { for each (_local8 in _channels) { _local8.updateToTime(_local7); }; }; }; return (super.project(_arg1, _arg2)); } protected function onParseGeometriesComplete(_arg1:Event):void{ if (this.parser.hasEventListener(Event.COMPLETE)){ this.parser.removeEventListener(Event.COMPLETE, onParseGeometriesComplete); }; buildScene(); } protected function findChildByID(_arg1:String, _arg2:DisplayObject3D=null):DisplayObject3D{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; _arg2 = ((_arg2) || (this)); if (_colladaID[_arg2] == _arg1){ return (_arg2); }; for each (_local3 in _arg2.children) { _local4 = findChildByID(_arg1, _local3); if (_local4){ return (_local4); }; }; return (null); } public function play(_arg1:String=null):void{ _currentFrame = 0; _currentTime = getTimer(); _isPlaying = ((((_isAnimated) && (_channels))) && (_channels.length)); } protected function loadNextMaterial(_arg1:FileLoadEvent=null):void{ var _local2:BitmapFileMaterial; var _local3:Object; var _local4:String; var _local5:String; var _local6:String; var _local7:BitmapFileMaterial; if (_arg1){ _local2 = (_arg1.target as BitmapFileMaterial); if (((_rightHanded) && (_local2))){ BitmapMaterialTools.mirrorBitmapX(_local2.bitmap); }; }; if (_queuedMaterials.length){ _local3 = _queuedMaterials.shift(); _local4 = _local3.url; _local5 = _local3.symbol; _local6 = _local3.target; _local4 = _local4.replace(/\.tga/i, ("." + DEFAULT_TGA_ALTERNATIVE)); _local7 = _local3.material; _local7.addEventListener(FileLoadEvent.LOAD_COMPLETE, loadNextMaterial); _local7.addEventListener(FileLoadEvent.LOAD_ERROR, onMaterialError); _local7.texture = _local4; if (useMaterialTargetName){ _local7.name = _local6; this.materials.addMaterial(_local7, _local6); } else { _local7.name = _local5; this.materials.addMaterial(_local7, _local5); }; } else { dispatchEvent(new FileLoadEvent(FileLoadEvent.COLLADA_MATERIALS_DONE, this.filename)); onMaterialsLoaded(); }; } protected function buildImagePath(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:String; if (texturePath != null){ _arg2 = (texturePath + _arg2.slice((_arg2.lastIndexOf("/") + 1))); }; _local3 = _arg1.split("/"); _local4 = _arg2.split("/"); while (_local3[0] == ".") { _local3.shift(); }; while (_local4[0] == ".") { _local4.shift(); }; while (_local4[0] == "..") { _local4.shift(); _local3.pop(); }; _local5 = ((_local3.length > 1)) ? _local3.join("/") : (_local3.length) ? _local3[0] : ""; _local5 = ((_local5)!="") ? ((_local5 + "/") + _local4.join("/")) : _local4.join("/"); return (_local5); } protected function buildMatrixFromTransform(_arg1:DaeTransform):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Array; _local3 = (Math.PI / 180); _local4 = _arg1.values; switch (_arg1.type){ case ASCollada.DAE_ROTATE_ELEMENT: _local2 = Matrix3D.rotationMatrix(_local4[0], _local4[1], _local4[2], (_local4[3] * _local3)); break; case ASCollada.DAE_SCALE_ELEMENT: _local2 = Matrix3D.scaleMatrix(_local4[0], _local4[1], _local4[2]); break; case ASCollada.DAE_TRANSLATE_ELEMENT: _local2 = Matrix3D.translationMatrix(_local4[0], _local4[1], _local4[2]); break; case ASCollada.DAE_MATRIX_ELEMENT: _local2 = new Matrix3D(_local4); break; default: throw (new Error(("Unknown transform type: " + _arg1.type))); }; return (_local2); } protected function buildAnimationChannel(_arg1:DisplayObject3D, _arg2:DaeChannel):MatrixChannel3D{ var _local3:DaeNode; var _local4:MatrixChannel3D; var _local5:DaeTransform; var _local6:Matrix3D; var _local7:String; var _local8:String; var _local9:Array; var _local10:Number; var _local11:int; var _local12:Number; _local3 = _objectToNode[_arg1]; if (!_local3){ throw (new Error("Couldn't find the targeted object!")); }; _local4 = new MatrixChannel3D(_arg1, _arg2.syntax.targetSID); _local5 = _local3.findMatrixBySID(_arg2.syntax.targetSID); if (!_local5){ PaperLogger.warning(("Couldn't find the targeted object's transform: " + _arg2.syntax.targetSID)); return (null); }; if (_arg2.syntax.isArrayAccess){ _local8 = _arg2.syntax.arrayMember.join(""); switch (_local8){ case "(0)(0)": _local7 = "n11"; break; case "(1)(0)": _local7 = "n12"; break; case "(2)(0)": _local7 = "n13"; break; case "(3)(0)": _local7 = "n14"; break; case "(0)(1)": _local7 = "n21"; break; case "(1)(1)": _local7 = "n22"; break; case "(2)(1)": _local7 = "n23"; break; case "(3)(1)": _local7 = "n24"; break; case "(0)(2)": _local7 = "n31"; break; case "(1)(2)": _local7 = "n32"; break; case "(2)(2)": _local7 = "n33"; break; case "(3)(2)": _local7 = "n34"; break; case "(0)(3)": _local7 = "n41"; break; case "(1)(3)": _local7 = "n42"; break; case "(2)(3)": _local7 = "n43"; break; case "(3)(3)": _local7 = "n44"; break; default: throw (new Error(_local8)); }; }; switch (_local5.type){ case "matrix": if (_arg2.syntax.isFullAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local9 = _arg2.output[_local11]; _local6 = new Matrix3D(_local9); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; } else { if (_arg2.syntax.isArrayAccess){ _local6 = Matrix3D.clone(_arg1.transform); _local11 = 0; while (_local11 < _arg2.input.length) { _local6[_local7] = _arg2.output[_local11]; _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; } else { throw (new Error(("Don't know how to handle this channel: " + _arg2.syntax))); }; }; break; case "rotate": if (_arg2.syntax.isFullAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local9 = _arg2.output[_local11]; _local6 = Matrix3D.rotationMatrix(_local9[0], _local9[1], _local9[2], (_local9[3] * (Math.PI / 180))); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; } else { if (_arg2.syntax.isDotAccess){ switch (_arg2.syntax.member){ case "ANGLE": _local11 = 0; while (_local11 < _arg2.input.length) { _local12 = (_arg2.output[_local11] * (Math.PI / 180)); _local6 = Matrix3D.rotationMatrix(_local5.values[0], _local5.values[1], _local5.values[2], _local12); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; break; default: throw (new Error(("Don't know how to handle this channel: " + _arg2.syntax))); }; } else { throw (new Error(("Don't know how to handle this channel: " + _arg2.syntax))); }; }; break; case "scale": if (_arg2.syntax.isFullAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local9 = _arg2.output[_local11]; _local6 = Matrix3D.scaleMatrix(_local9[0], _local9[1], _local9[2]); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; } else { if (_arg2.syntax.isDotAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local10 = _arg2.output[_local11]; switch (_arg2.syntax.member){ case "X": _local6 = Matrix3D.scaleMatrix(_local10, 0, 0); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; case "Y": _local6 = Matrix3D.scaleMatrix(0, _local10, 0); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; case "Z": _local6 = Matrix3D.scaleMatrix(0, 0, _local10); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; default: break; }; _local11++; }; } else { throw (new Error(("Don't know how to handle this channel: " + _arg2.syntax))); }; }; break; case "translate": if (_arg2.syntax.isFullAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local9 = _arg2.output[_local11]; _local6 = Matrix3D.translationMatrix(_local9[0], _local9[1], _local9[2]); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); _local11++; }; } else { if (_arg2.syntax.isDotAccess){ _local11 = 0; while (_local11 < _arg2.input.length) { _local10 = _arg2.output[_local11]; switch (_arg2.syntax.member){ case "X": _local6 = Matrix3D.translationMatrix(_local10, 0, 0); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; case "Y": _local6 = Matrix3D.translationMatrix(0, _local10, 0); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; case "Z": _local6 = Matrix3D.translationMatrix(0, 0, _local10); _local4.addKeyFrame(new AnimationKeyFrame3D(("keyframe_" + _local11), _arg2.input[_local11], [_local6])); break; default: break; }; _local11++; }; } else { throw (new Error(("Don't know how to handle this channel: " + _arg2.syntax))); }; }; break; default: throw (new Error("Unknown transform type!")); }; return (_local4); } protected function onMaterialsLoaded():void{ if (this.parser.hasEventListener(Event.COMPLETE)){ this.parser.removeEventListener(Event.COMPLETE, onParseComplete); }; if (this.parser.hasEventListener(ProgressEvent.PROGRESS)){ this.parser.removeEventListener(ProgressEvent.PROGRESS, onParseProgress); }; if (document.numQueuedGeometries){ this.parser.addEventListener(Event.COMPLETE, onParseGeometriesComplete); this.parser.readGeometries(); } else { buildScene(); }; } protected function buildMaterials():void{ var _local1:String; var _local2:MaterialObject3D; var _local3:DaeMaterial; var _local4:String; var _local5:MaterialObject3D; var _local6:DaeEffect; var _local7:DaeLambert; var _local8:String; var _local9:DaeImage; var _local10:String; _queuedMaterials = new Array(); for (_local1 in this.document.materials) { _local2 = null; _local3 = this.document.materials[_local1]; _local4 = this.document.materialTargetToSymbol[_local3.id]; if (useMaterialTargetName){ _local5 = this.materials.getMaterialByName(_local1); } else { _local5 = this.materials.getMaterialByName(_local4); }; if (_local5 == null){ _local8 = getSymbolName(_local3.effect); _local5 = this.materials.getMaterialByName(_local8); this.materials.removeMaterial(_local5); if (_local5){ if (useMaterialTargetName){ this.materials.addMaterial(_local5, _local1); } else { this.materials.addMaterial(_local5, _local4); }; }; }; _local6 = document.effects[_local3.effect]; _local7 = (_local6.color as DaeLambert); if (((_local7) && (_local7.diffuse.texture))){ _textureSets[_local4] = _local7.diffuse.texture.texcoord; }; if (_local5){ } else { if (((_local6) && (_local6.texture_url))){ _local9 = document.images[_local6.texture_url]; //unresolved if _local10 = buildImagePath(this.baseUrl, _local9.init_from); _local2 = new BitmapFileMaterial(); _local2.doubleSided = _local6.double_sided; _queuedMaterials.push({symbol:_local4, url:_local10, material:_local2, target:_local1}); } else { if (((_local7) && (_local7.diffuse.color))){ if (_local6.wireframe){ _local2 = new WireframeMaterial(buildColor(_local7.diffuse.color)); } else { _local2 = new ColorMaterial(buildColor(_local7.diffuse.color)); }; } else { _local2 = MaterialObject3D.DEFAULT; }; _local2.doubleSided = _local6.double_sided; if (useMaterialTargetName){ this.materials.addMaterial(_local2, _local1); } else { this.materials.addMaterial(_local2, _local4); }; }; }; }; } protected function onParseComplete(_arg1:Event):void{ var _local2:DaeReader; _local2 = (_arg1.target as DaeReader); this.document = _local2.document; _textureSets = new Object(); _colladaID = new Dictionary(true); _colladaSID = new Dictionary(true); _colladaIDToObject = new Object(); _colladaSIDToObject = new Object(); _objectToNode = new Object(); _skins = new Dictionary(true); buildMaterials(); loadNextMaterial(); } protected function onMaterialError(_arg1:Event):void{ loadNextMaterial(); } protected function buildNode(_arg1:DaeNode, _arg2:DisplayObject3D):void{ var _local3:DisplayObject3D; var _local4:MaterialObject3D; var _local5:int; var _local6:DaeInstanceController; var _local7:DaeController; var _local8:DaeInstanceGeometry; var _local9:GeometryObject3D; var _local10:Array; var _local11:DaeInstanceMaterial; var _local12:DaeNode; if (_arg1.controllers.length){ _local5 = 0; while (_local5 < _arg1.controllers.length) { _local6 = _arg1.controllers[_local5]; _local7 = document.controllers[_local6.url]; if (_local7.skin){ _local3 = new Skin3D(null, [], [], _arg1.name); buildSkin((_local3 as Skin3D), _local7.skin, _local6.skeletons, _arg1); } else { if (_local7.morph){ throw (new Error("morph!")); }; throw (new Error("A COLLADA controller should be of type <skin> or <morph>!")); }; break; _local5++; }; } else { if (_arg1.geometries.length){ _local3 = new TriangleMesh3D(null, [], [], _arg1.name); for each (_local8 in _arg1.geometries) { _local9 = _geometries[_local8.url]; if (!_local9){ } else { if ((_geometries[_local8.url] is Lines3D)){ _local3.addChild(_geometries[_local8.url]); } else { _local10 = new Array(); if (_local8.materials){ for each (_local11 in _local8.materials) { if (useMaterialTargetName){ _local4 = this.materials.getMaterialByName(_local11.target); } else { _local4 = this.materials.getMaterialByName(_local11.symbol); }; if (_local4){ _bindVertexInputs[_local4] = _local11; if ((((_local4 is AbstractLightShadeMaterial)) || ((_local4 is ShadedMaterial)))){ _local4.registerObject(_local3); }; _local10.push(_local4); }; }; }; mergeGeometries(_local3.geometry, _local9.clone(_local3), _local10); }; }; }; } else { _local3 = new DisplayObject3D(_arg1.name); }; }; _local5 = 0; while (_local5 < _arg1.instance_nodes.length) { _local12 = document.getDaeNodeById(_arg1.instance_nodes[_local5].url); buildNode(_local12, _local3); _local5++; }; _local3.copyTransform(buildMatrix(_arg1)); _local5 = 0; while (_local5 < _arg1.nodes.length) { buildNode(_arg1.nodes[_local5], _local3); _local5++; }; _colladaID[_local3] = _arg1.id; _colladaSID[_local3] = _arg1.sid; _colladaIDToObject[_arg1.id] = _local3; _colladaSIDToObject[_arg1.sid] = _local3; _objectToNode[_local3] = _arg1; _local3.flipLightDirection = true; _arg2.addChild(_local3); } protected function buildGeometries():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:DaeGeometry; var _local5:GeometryObject3D; var _local6:Lines3D; var _local7:DaeSpline; var _local8:Vertex3D; var _local9:Vertex3D; var _local10:Line3D; _geometries = new Object(); for each (_local4 in this.document.geometries) { if (_local4.mesh){ _local5 = new GeometryObject3D(); _local5.vertices = buildVertices(_local4.mesh); _local5.faces = new Array(); if (!_local5.vertices.length){ continue; }; _local1 = 0; while (_local1 < _local4.mesh.primitives.length) { buildFaces(_local4.mesh.primitives[_local1], _local5, 0); _local1++; }; _geometries[_local4.id] = _local5; } else { if (((_local4.spline) && (_local4.splines))){ _local6 = new Lines3D(new LineMaterial(DEFAULT_LINE_COLOR), _local4.id); _local1 = 0; while (_local1 < _local4.splines.length) { _local7 = _local4.splines[_local1]; _local2 = 0; while (_local2 < _local7.vertices.length) { _local3 = ((_local2 + 1) % _local7.vertices.length); _local8 = new Vertex3D(_local7.vertices[_local2][0], _local7.vertices[_local2][1], _local7.vertices[_local2][2]); _local9 = new Vertex3D(_local7.vertices[_local3][0], _local7.vertices[_local3][1], _local7.vertices[_local3][2]); _local10 = new Line3D(_local6, (_local6.material as LineMaterial), DEFAULT_LINE_WIDTH, _local8, _local9); _local6.addLine(_local10); _local2++; }; _local1++; }; _geometries[_local4.id] = _local6; }; }; }; } protected function buildColor(_arg1:Array):uint{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = (_arg1[0] * 0xFF); _local3 = (_arg1[1] * 0xFF); _local4 = (_arg1[2] * 0xFF); return ((((_local2 << 16) | (_local3 << 8)) | _local4)); } protected function isBakedMatrix(_arg1:DaeNode):Boolean{ var _local2:DaeTransform; if (((!(_arg1.transforms.length)) || ((_arg1.transforms.length > 1)))){ return (false); }; _local2 = _arg1.transforms[0]; return ((_local2.type == ASCollada.DAE_MATERIAL_ELEMENT)); } protected function buildMatrix(_arg1:DaeNode):Matrix3D{ var _local2:Array; var _local3:Matrix3D; var _local4:int; _local2 = buildMatrixStack(_arg1); _local3 = Matrix3D.IDENTITY; _local4 = 0; while (_local4 < _local2.length) { _local3.calculateMultiply4x4(_local3, _local2[_local4]); _local4++; }; return (_local3); } protected function findChildBySID(_arg1:String, _arg2:DisplayObject3D=null):DisplayObject3D{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; _arg2 = ((_arg2) || (this)); if (_colladaSID[_arg2] == _arg1){ return (_arg2); }; for each (_local3 in _arg2.children) { _local4 = findChildBySID(_arg1, _local3); if (_local4){ return (_local4); }; }; return (null); } protected function buildFaces(_arg1:DaePrimitive, _arg2:GeometryObject3D, _arg3:uint):void{ var _local4:Array; var _local5:MaterialObject3D; var _local6:DaeInstanceMaterial; var _local7:int; var _local8:String; var _local9:DaeGeometry; var _local10:Array; var _local11:Array; var _local12:int; var _local13:int; var _local14:int; var _local15:Boolean; var _local16:Array; var _local17:Array; var _local18:Array; var _local19:DaeInstanceGeometry; var _local20:DaeBindVertexInput; var _local21:Array; var _local22:Array; var _local23:Array; var _local24:Array; var _local25:Array; _local4 = new Array(); _local5 = this.materials.getMaterialByName(_arg1.material); _local5 = ((_local5) || (MaterialObject3D.DEFAULT)); _local6 = _bindVertexInputs[_local5]; _local7 = this.forceCoordSet; _local8 = _textureSets[_arg1.material]; _local9 = _arg1.mesh.geometry; if (((((_local8) && (_local8.length))) && (_local9))){ _local19 = this.document.getDaeInstanceGeometry(_local9.id); if (_local19){ _local20 = _local19.findBindVertexInput(_arg1.material, _local8); if (_local20){ PaperLogger.info(((("using input set #" + _local20.input_set) + " for material ") + _arg1.material)); _local7 = _local20.input_set; }; }; }; _local10 = _arg1.getTexCoords(_local7); _local11 = new Array(); _local13 = 0; _local12 = 0; while (_local12 < _local10.length) { _local11.push(new NumberUV(_local10[_local12][0], _local10[_local12][1])); _local12++; }; _local15 = (_local11.length == _arg1.vertices.length); _local16 = new Array(); _local17 = new Array(); _local18 = new Array(); switch (_arg1.type){ case ASCollada.DAE_LINES_ELEMENT: _local12 = 0; while (_local12 < _arg1.vertices.length) { _local17[0] = _arg2.vertices[_arg1.vertices[_local12]]; _local17[1] = _arg2.vertices[_arg1.vertices[(_local12 + 1)]]; _local18[0] = (_local15) ? _local11[_local12] : new NumberUV(); _local18[1] = (_local15) ? _local11[(_local12 + 1)] : new NumberUV(); _local12 = (_local12 + 2); }; break; case ASCollada.DAE_TRIANGLES_ELEMENT: _local12 = 0; _local13 = 0; while (_local12 < _arg1.vertices.length) { _local16[0] = (_arg3 + _arg1.vertices[_local12]); _local16[1] = (_arg3 + _arg1.vertices[(_local12 + 1)]); _local16[2] = (_arg3 + _arg1.vertices[(_local12 + 2)]); _local17[0] = _arg2.vertices[_local16[0]]; _local17[1] = _arg2.vertices[_local16[1]]; _local17[2] = _arg2.vertices[_local16[2]]; _local18[0] = (_local15) ? _local11[(_local12 + 0)] : new NumberUV(); _local18[1] = (_local15) ? _local11[(_local12 + 1)] : new NumberUV(); _local18[2] = (_local15) ? _local11[(_local12 + 2)] : new NumberUV(); _arg2.faces.push(new Triangle3D(null, [_local17[0], _local17[1], _local17[2]], _local5, [_local18[0], _local18[1], _local18[2]])); _local12 = (_local12 + 3); _local13++; }; break; case ASCollada.DAE_POLYLIST_ELEMENT: _local12 = 0; _local14 = 0; while (_local12 < _arg1.vcount.length) { _local21 = new Array(); _local22 = new Array(); _local13 = 0; while (_local13 < _arg1.vcount[_local12]) { _local22.push((_local15) ? _local11[_local14] : new NumberUV()); var _temp1 = _local14; _local14 = (_local14 + 1); _local21.push(_arg2.vertices[_arg1.vertices[_temp1]]); _local13++; }; if (((((!(_arg2)) || (!(_arg2.faces)))) || (!(_arg2.vertices)))){ throw (new Error("no geometry")); }; _local17[0] = _local21[0]; _local18[0] = _local22[0]; _local13 = 1; while (_local13 < (_local21.length - 1)) { _local17[1] = _local21[_local13]; _local17[2] = _local21[(_local13 + 1)]; _local18[1] = _local22[_local13]; _local18[2] = _local22[(_local13 + 1)]; if ((((((_local17[0] is Vertex3D)) && ((_local17[1] is Vertex3D)))) && ((_local17[2] is Vertex3D)))){ _arg2.faces.push(new Triangle3D(null, [_local17[0], _local17[1], _local17[2]], _local5, [_local18[0], _local18[1], _local18[2]])); }; _local13++; }; _local12++; }; break; case ASCollada.DAE_POLYGONS_ELEMENT: _local12 = 0; _local14 = 0; while (_local12 < _arg1.polygons.length) { _local23 = _arg1.polygons[_local12]; _local24 = new Array(); _local25 = new Array(); _local13 = 0; while (_local13 < _local23.length) { _local25.push((_local15) ? _local11[_local14] : new NumberUV()); var _temp2 = _local14; _local14 = (_local14 + 1); _local24.push(_arg2.vertices[_arg1.vertices[_temp2]]); _local13++; }; _local17[0] = _local24[0]; _local18[0] = _local25[0]; _local13 = 1; while (_local13 < (_local24.length - 1)) { _local17[1] = _local24[_local13]; _local17[2] = _local24[(_local13 + 1)]; _local18[1] = _local25[_local13]; _local18[2] = _local25[(_local13 + 1)]; _arg2.faces.push(new Triangle3D(null, [_local17[0], _local17[1], _local17[2]], _local5, [_local18[0], _local18[1], _local18[2]])); _local13++; }; _local12++; }; break; default: throw (new Error(("Don't know how to create face for a DaePrimitive with type = " + _arg1.type))); }; } protected function onParseAnimationsProgress(_arg1:ProgressEvent):void{ PaperLogger.info(((("animations #" + _arg1.bytesLoaded) + " of ") + _arg1.bytesTotal)); } protected function buildMatrixStack(_arg1:DaeNode):Array{ var _local2:Array; var _local3:int; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.transforms.length) { _local2.push(buildMatrixFromTransform(_arg1.transforms[_local3])); _local3++; }; return (_local2); } } }//package org.papervision3d.objects.parsers
Section 355
//Cube (org.papervision3d.objects.primitives.Cube) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.log.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Cube extends TriangleMesh3D { public var segments:Number3D; private var insideFaces:int; private var excludeFaces:int; public static var ALL:int = (((((FRONT + BACK) + RIGHT) + LEFT) + TOP) + BOTTOM); public static var LEFT:int = 8; public static var FRONT:int = 1; public static var BOTTOM:int = 32; public static var TOP:int = 16; public static var BACK:int = 2; public static var NONE:int = 0; public static var RIGHT:int = 4; public function Cube(_arg1:MaterialsList, _arg2:Number=500, _arg3:Number=500, _arg4:Number=500, _arg5:int=1, _arg6:int=1, _arg7:int=1, _arg8:int=0, _arg9:int=0){ super(_arg1.getMaterialByName("all"), new Array(), new Array(), null); this.materials = _arg1; this.insideFaces = _arg8; this.excludeFaces = _arg9; segments = new Number3D(_arg5, _arg6, _arg7); buildCube(_arg2, _arg4, _arg3); } protected function buildPlane(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false):void{ var _local8:MaterialObject3D; var _local9:String; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Array; var _local17:Array; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:NumberUV; var _local24:NumberUV; var _local25:NumberUV; var _local26:int; var _local27:Vertex3D; var _local28:Vertex3D; var _local29:Vertex3D; var _local30:Vertex3D; _local8 = materials.getMaterialByName(_arg1); if (!_local8){ _local8 = materials.getMaterialByName("all"); if (!_local8){ PaperLogger.warning("Required material not found in given materials list. Supported materials are: front, back, right, left, top, bottom & all."); return; }; }; _local8.registerObject(this); if ((((((_arg2 == "x")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "x")))))){ _local9 = "z"; } else { if ((((((_arg2 == "x")) && ((_arg3 == "z")))) || ((((_arg2 == "z")) && ((_arg3 == "x")))))){ _local9 = "y"; } else { if ((((((_arg2 == "z")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "z")))))){ _local9 = "x"; }; }; }; _local10 = (_arg7) ? -1 : 1; _local11 = this.segments[_arg2]; _local12 = this.segments[_arg3]; _local13 = (_local11 + 1); _local14 = (_local12 + 1); _local15 = this.geometry.vertices; _local16 = this.geometry.faces; _local17 = new Array(); _local18 = (_arg4 / 2); _local19 = (_arg5 / 2); _local20 = (_arg4 / _local11); _local21 = (_arg5 / _local12); _local22 = 0; while (_local22 < _local13) { _local26 = 0; while (_local26 < _local14) { _local27 = new Vertex3D(); _local27[_arg2] = (((_local22 * _local20) - _local18) * _local10); _local27[_arg3] = ((_local26 * _local21) - _local19); _local27[_local9] = _arg6; _local15.push(_local27); _local17.push(_local27); _local26++; }; _local22++; }; _local22 = 0; while (_local22 < _local11) { _local26 = 0; while (_local26 < _local12) { _local28 = _local17[((_local22 * _local14) + _local26)]; _local29 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local30 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local23 = new NumberUV((_local22 / _local11), (_local26 / _local12)); _local24 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local25 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local16.push(new Triangle3D(this, [_local28, _local30, _local29], _local8, [_local23, _local25, _local24])); _local28 = _local17[(((_local22 + 1) * _local14) + (_local26 + 1))]; _local29 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local30 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local23 = new NumberUV(((_local22 + 1) / _local11), ((_local26 + 1) / _local12)); _local24 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local25 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local16.push(new Triangle3D(this, [_local29, _local28, _local30], _local8, [_local24, _local23, _local25])); _local26++; }; _local22++; }; } protected function buildCube(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Triangle3D; _local4 = (_arg1 / 2); _local5 = (_arg2 / 2); _local6 = (_arg3 / 2); if (!(excludeFaces & FRONT)){ buildPlane("front", "x", "y", _arg1, _arg2, _local6, !(Boolean((insideFaces & FRONT)))); }; if (!(excludeFaces & BACK)){ buildPlane("back", "x", "y", _arg1, _arg2, -(_local6), Boolean((insideFaces & BACK))); }; if (!(excludeFaces & RIGHT)){ buildPlane("right", "z", "y", _arg3, _arg2, _local4, Boolean((insideFaces & RIGHT))); }; if (!(excludeFaces & LEFT)){ buildPlane("left", "z", "y", _arg3, _arg2, -(_local4), !(Boolean((insideFaces & LEFT)))); }; if (!(excludeFaces & TOP)){ buildPlane("top", "x", "z", _arg1, _arg3, _local5, Boolean((insideFaces & TOP))); }; if (!(excludeFaces & BOTTOM)){ buildPlane("bottom", "x", "z", _arg1, _arg3, -(_local5), !(Boolean((insideFaces & BOTTOM)))); }; mergeVertices(); for each (_local7 in this.geometry.faces) { _local7.renderCommand.create = createRenderTriangle; }; this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } public function destroy():void{ var _local1:MaterialObject3D; for each (_local1 in materials) { _local1.unregisterObject(this); }; } } }//package org.papervision3d.objects.primitives
Section 356
//Plane (org.papervision3d.objects.primitives.Plane) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Plane extends TriangleMesh3D { public var segmentsH:Number; public var segmentsW:Number; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_SEGMENTS:Number = 1; public static var DEFAULT_SIZE:Number = 500; public function Plane(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ var _local6:Number; super(_arg1, new Array(), new Array(), null); this.segmentsW = ((_arg4) || (DEFAULT_SEGMENTS)); this.segmentsH = ((_arg5) || (this.segmentsW)); _local6 = DEFAULT_SCALE; if (!_arg3){ if (_arg2){ _local6 = _arg2; }; if (((_arg1) && (_arg1.bitmap))){ _arg2 = (_arg1.bitmap.width * _local6); _arg3 = (_arg1.bitmap.height * _local6); } else { _arg2 = (DEFAULT_SIZE * _local6); _arg3 = (DEFAULT_SIZE * _local6); }; }; buildPlane(_arg2, _arg3); } private function buildPlane(_arg1:Number, _arg2:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:int; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Vertex3D; var _local21:Vertex3D; var _local22:Vertex3D; _local3 = this.segmentsW; _local4 = this.segmentsH; _local5 = (_local3 + 1); _local6 = (_local4 + 1); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = (_arg1 / 2); _local10 = (_arg2 / 2); _local11 = (_arg1 / _local3); _local12 = (_arg2 / _local4); _local13 = 0; while (_local13 < (_local3 + 1)) { _local17 = 0; while (_local17 < _local6) { _local18 = ((_local13 * _local11) - _local9); _local19 = ((_local17 * _local12) - _local10); _local7.push(new Vertex3D(_local18, _local19, 0)); _local17++; }; _local13++; }; _local13 = 0; while (_local13 < _local3) { _local17 = 0; while (_local17 < _local4) { _local20 = _local7[((_local13 * _local6) + _local17)]; _local21 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local22 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local14 = new NumberUV((_local13 / _local3), (_local17 / _local4)); _local15 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local16 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], material, [_local14, _local16, _local15])); _local20 = _local7[(((_local13 + 1) * _local6) + (_local17 + 1))]; _local21 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local22 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local14 = new NumberUV(((_local13 + 1) / _local3), ((_local17 + 1) / _local4)); _local15 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local16 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], material, [_local14, _local16, _local15])); _local17++; }; _local13++; }; this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } } }//package org.papervision3d.objects.primitives
Section 357
//Sphere (org.papervision3d.objects.primitives.Sphere) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Sphere extends TriangleMesh3D { private var segmentsH:Number; private var segmentsW:Number; public static var MIN_SEGMENTSW:Number = 3; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_RADIUS:Number = 100; public static var DEFAULT_SEGMENTSH:Number = 6; public static var MIN_SEGMENTSH:Number = 2; public static var DEFAULT_SEGMENTSW:Number = 8; public function Sphere(_arg1:MaterialObject3D=null, _arg2:Number=100, _arg3:int=8, _arg4:int=6){ var _local5:Number; super(_arg1, new Array(), new Array(), null); this.segmentsW = Math.max(MIN_SEGMENTSW, ((_arg3) || (DEFAULT_SEGMENTSW))); this.segmentsH = Math.max(MIN_SEGMENTSH, ((_arg4) || (DEFAULT_SEGMENTSH))); if (_arg2 == 0){ _arg2 = DEFAULT_RADIUS; }; _local5 = DEFAULT_SCALE; buildSphere(_arg2); } private function buildSphere(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Array; var _local10:int; var _local11:Triangle3D; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Vertex3D; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:int; var _local21:Boolean; var _local22:Vertex3D; var _local23:Vertex3D; var _local24:Vertex3D; var _local25:Vertex3D; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:NumberUV; var _local31:NumberUV; var _local32:NumberUV; var _local33:NumberUV; _local5 = Math.max(3, this.segmentsW); _local6 = Math.max(2, this.segmentsH); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = new Array(); _local3 = 0; while (_local3 < (_local6 + 1)) { _local12 = Number((_local3 / _local6)); _local13 = (-(_arg1) * Math.cos((_local12 * Math.PI))); _local14 = (_arg1 * Math.sin((_local12 * Math.PI))); _local15 = new Array(); _local2 = 0; while (_local2 < _local5) { _local17 = Number(((2 * _local2) / _local5)); _local18 = (_local14 * Math.sin((_local17 * Math.PI))); _local19 = (_local14 * Math.cos((_local17 * Math.PI))); if (!(((((_local3 == 0)) || ((_local3 == _local6)))) && ((_local2 > 0)))){ _local16 = new Vertex3D(_local19, _local13, _local18); _local7.push(_local16); }; _local15.push(_local16); _local2++; }; _local9.push(_local15); _local3++; }; _local10 = _local9.length; _local3 = 0; while (_local3 < _local10) { _local20 = _local9[_local3].length; if (_local3 > 0){ _local2 = 0; while (_local2 < _local20) { _local21 = (_local2 == (_local20 - 1)); _local22 = _local9[_local3][(_local21) ? 0 : (_local2 + 1)]; _local23 = _local9[_local3][(_local21) ? (_local20 - 1) : _local2]; _local24 = _local9[(_local3 - 1)][(_local21) ? (_local20 - 1) : _local2]; _local25 = _local9[(_local3 - 1)][(_local21) ? 0 : (_local2 + 1)]; _local26 = (_local3 / (_local10 - 1)); _local27 = ((_local3 - 1) / (_local10 - 1)); _local28 = ((_local2 + 1) / _local20); _local29 = (_local2 / _local20); _local30 = new NumberUV(_local28, _local27); _local31 = new NumberUV(_local28, _local26); _local32 = new NumberUV(_local29, _local26); _local33 = new NumberUV(_local29, _local27); if (_local3 < (_local9.length - 1)){ _local8.push(new Triangle3D(this, new Array(_local22, _local23, _local24), material, new Array(_local31, _local32, _local33))); }; if (_local3 > 1){ _local8.push(new Triangle3D(this, new Array(_local22, _local24, _local25), material, new Array(_local31, _local33, _local30))); }; _local2++; }; }; _local3++; }; for each (_local11 in _local8) { _local11.renderCommand.create = createRenderTriangle; }; this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } } }//package org.papervision3d.objects.primitives
Section 358
//Skin3D (org.papervision3d.objects.special.Skin3D) package org.papervision3d.objects.special { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.*; public class Skin3D extends TriangleMesh3D { public function Skin3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null){ super(_arg1, _arg2, _arg3, _arg4); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ this.transform.copy(_arg1.world); this.transform.invert(); return (super.project(_arg1, _arg2)); } } }//package org.papervision3d.objects.special
Section 359
//DisplayObject3D (org.papervision3d.objects.DisplayObject3D) package org.papervision3d.objects { import flash.display.*; import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.shaders.*; import org.papervision3d.view.layer.*; import org.papervision3d.core.log.*; import org.papervision3d.core.data.*; import org.papervision3d.core.culling.*; import org.papervision3d.*; import org.papervision3d.core.material.*; public class DisplayObject3D extends DisplayObjectContainer3D { public var extra:Object; public var materials:MaterialsList; private var _zAxis:Number3D; private var _scaleDirty:Boolean;// = false private var _tempScale:Number3D; private var _numClones:uint;// = 0 public var screen:Number3D; private var _qPitch:Quaternion; public var geometry:GeometryObject3D; public var visible:Boolean; protected var _useOwnContainer:Boolean;// = false private var _material:MaterialObject3D; public var name:String; private var _position:Number3D; public var container:ViewportLayer; public var view:Matrix3D; public var parent:DisplayObjectContainer3D; private var _yAxis:Number3D; public var flipLightDirection:Boolean;// = false private var _rotation:Number3D; private var _rotationDirty:Boolean;// = false public var parentContainer:DisplayObject3D; public var testQuad:Boolean;// = true public var frustumTestMethod:int;// = 0 private var _rot:Quaternion; public var id:int; private var _rotationY:Number; private var _rotationZ:Number; private var _lookatTarget:Number3D; private var _rotationX:Number; public var meshSort:uint;// = 1 private var _qYaw:Quaternion; public var cullTest:Number;// = 0 private var _xAxis:Number3D; private var _autoCalcScreenCoords:Boolean;// = false public var alpha:Number;// = 1 public var useClipping:Boolean;// = true private var _scaleX:Number; public var screenZ:Number; private var _scaleZ:Number; public var transform:Matrix3D; protected var _userData:UserData; private var _scaleY:Number; private var _localRotationX:Number;// = 0 private var _qRoll:Quaternion; private var _localRotationZ:Number;// = 0 public var culled:Boolean; public var world:Matrix3D; public var blendMode:String;// = "normal" private var _localRotationY:Number;// = 0 protected var _scene:SceneObject3D;// = null public var faces:Array; protected var _sorted:Array; protected var _transformDirty:Boolean;// = false public var filters:Array; public static const MESH_SORT_CENTER:uint = 1; private static const LEFT:Number3D = new Number3D(-1, 0, 0); public static const MESH_SORT_CLOSE:uint = 3; private static const BACKWARD:Number3D = new Number3D(0, 0, -1); private static const FORWARD:Number3D = new Number3D(0, 0, 1); public static const MESH_SORT_FAR:uint = 2; private static const DOWN:Number3D = new Number3D(0, -1, 0); private static const UP:Number3D = new Number3D(0, 1, 0); private static const RIGHT:Number3D = new Number3D(1, 0, 0); private static var entry_count:uint = 0; private static var _newID:int = 0; private static var _tempMatrix:Matrix3D = Matrix3D.IDENTITY; public static var sortedArray:Array = new Array(); public static var faceLevelMode:Boolean; private static var _tempQuat:Quaternion = new Quaternion(); private static var toRADIANS:Number = 0.0174532925199433; private static var toDEGREES:Number = 57.2957795130823; public function DisplayObject3D(_arg1:String=null, _arg2:GeometryObject3D=null):void{ var _local3:Number; faces = new Array(); meshSort = MESH_SORT_CENTER; alpha = 1; blendMode = BlendMode.NORMAL; filters = []; flipLightDirection = false; frustumTestMethod = FrustumTestMethod.BOUNDING_SPHERE; screen = new Number3D(); cullTest = 0; useClipping = true; testQuad = true; _transformDirty = false; _useOwnContainer = false; _scene = null; _position = Number3D.ZERO; _lookatTarget = Number3D.ZERO; _zAxis = Number3D.ZERO; _xAxis = Number3D.ZERO; _yAxis = Number3D.ZERO; _rotation = Number3D.ZERO; _rotationDirty = false; _scaleDirty = false; _numClones = 0; _rot = new Quaternion(); _qPitch = new Quaternion(); _qYaw = new Quaternion(); _qRoll = new Quaternion(); _localRotationX = 0; _localRotationY = 0; _localRotationZ = 0; _autoCalcScreenCoords = false; super(); if (_arg1 != null){ PaperLogger.info(("DisplayObject3D: " + _arg1)); }; this.culled = false; this.transform = Matrix3D.IDENTITY; this.world = Matrix3D.IDENTITY; this.view = Matrix3D.IDENTITY; this.x = 0; this.y = 0; this.z = 0; rotationX = 0; rotationY = 0; rotationZ = 0; _localRotationX = (_localRotationY = (_localRotationZ = 0)); _local3 = (Papervision3D.usePERCENT) ? 100 : 1; scaleX = _local3; scaleY = _local3; scaleZ = _local3; _tempScale = new Number3D(); this.visible = true; this.id = _newID++; this.name = ((_arg1) || (String(this.id))); _numClones = 0; if (_arg2){ addGeometry(_arg2); }; } public function setChildMaterialByName(_arg1:String, _arg2:MaterialObject3D):void{ setChildMaterial(getChildByName(_arg1, true), _arg2); } public function moveDown(_arg1:Number):void{ translate(_arg1, DOWN); } public function get userData():UserData{ return (_userData); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } protected function setParentContainer(_arg1:DisplayObject3D, _arg2:Boolean=true):void{ var _local3:DisplayObject3D; if (((_arg2) && (!((_arg1 == this))))){ parentContainer = _arg1; }; for each (_local3 in children) { _local3.setParentContainer(_arg1, _arg2); }; } public function calculateScreenCoords(_arg1:CameraObject3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; if (_arg1.useProjectionMatrix){ _local2 = 0; _local3 = 0; _local4 = 0; _local5 = ((((_local2 * view.n41) + (_local3 * view.n42)) + (_local4 * view.n43)) + view.n44); _local6 = (_arg1.viewport.width / 2); _local7 = (_arg1.viewport.height / 2); screen.x = (((((_local2 * view.n11) + (_local3 * view.n12)) + (_local4 * view.n13)) + view.n14) / _local5); screen.y = (((((_local2 * view.n21) + (_local3 * view.n22)) + (_local4 * view.n23)) + view.n24) / _local5); screen.z = ((((_local2 * view.n31) + (_local3 * view.n32)) + (_local4 * view.n33)) + view.n34); screen.x = (screen.x * _local6); screen.y = (screen.y * _local7); } else { _local8 = ((_arg1.focus * _arg1.zoom) / (_arg1.focus + view.n34)); screen.x = (view.n14 * _local8); screen.y = (view.n24 * _local8); screen.z = view.n34; }; } public function addGeometry(_arg1:GeometryObject3D=null):void{ if (_arg1){ this.geometry = _arg1; }; } public function moveUp(_arg1:Number):void{ translate(_arg1, UP); } public function get scaleY():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleY * 100)); }; return (this._scaleY); } public function get scaleZ():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleZ * 100)); }; return (this._scaleZ); } public function set position(_arg1:Number3D):void{ this.x = _arg1.x; this.y = _arg1.y; this.z = _arg1.z; } public function get scaleX():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); } public function hitTestObject(_arg1:DisplayObject3D, _arg2:Number=1):Boolean{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = (this.x - _arg1.x); _local4 = (this.y - _arg1.y); _local5 = (this.z - _arg1.z); _local6 = (((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5)); _local7 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0; _local8 = (_arg1.geometry) ? _arg1.geometry.boundingSphere.maxDistance : 0; _local7 = (_local7 * _arg2); return (((_local7 + _local8) > _local6)); } public function set material(_arg1:MaterialObject3D):void{ if (_material){ _material.unregisterObject(this); }; _material = _arg1; if (_material){ _material.registerObject(this); }; } public function yaw(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (_transformDirty){ updateTransform(); }; _qYaw.setFromAxisAngle(transform.n12, transform.n22, transform.n32, _arg1); transform.calculateMultiply3x3(_qYaw.matrix, transform); _localRotationY = (_localRotationY + _arg1); _rotationDirty = true; } override public function toString():String{ return (((((((this.name + ": x:") + Math.round(this.x)) + " y:") + Math.round(this.y)) + " z:") + Math.round(this.z))); } public function get autoCalcScreenCoords():Boolean{ return (_autoCalcScreenCoords); } public function get z():Number{ return (this.transform.n34); } public function roll(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (_transformDirty){ updateTransform(); }; _qRoll.setFromAxisAngle(transform.n13, transform.n23, transform.n33, _arg1); transform.calculateMultiply3x3(_qRoll.matrix, transform); _localRotationZ = (_localRotationZ + _arg1); _rotationDirty = true; } public function get x():Number{ return (this.transform.n14); } public function get scene():SceneObject3D{ return (_scene); } public function get y():Number{ return (this.transform.n24); } public function set scale(_arg1:Number):void{ if (this._rotationDirty){ updateRotation(); }; if (Papervision3D.usePERCENT){ _arg1 = (_arg1 / 100); }; this._scaleX = (this._scaleY = (this._scaleZ = _arg1)); this._transformDirty = true; } public function getMaterialByName(_arg1:String):MaterialObject3D{ var _local2:MaterialObject3D; var _local3:DisplayObject3D; _local2 = (this.materials) ? this.materials.getMaterialByName(_arg1) : null; if (_local2){ return (_local2); }; for each (_local3 in this._childrenByName) { _local2 = _local3.getMaterialByName(_arg1); if (_local2){ return (_local2); }; }; return (null); } public function get rotationY():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (this._rotationY * toDEGREES) : this._rotationY); } public function get rotationZ():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (this._rotationZ * toDEGREES) : this._rotationZ); } public function set scaleY(_arg1:Number):void{ if (this._rotationDirty){ updateRotation(); }; if (Papervision3D.usePERCENT){ this._scaleY = (_arg1 / 100); } else { this._scaleY = _arg1; }; this._transformDirty = true; } public function set scaleZ(_arg1:Number):void{ if (this._rotationDirty){ updateRotation(); }; if (Papervision3D.usePERCENT){ this._scaleZ = (_arg1 / 100); } else { this._scaleZ = _arg1; }; this._transformDirty = true; } public function set scaleX(_arg1:Number):void{ if (this._rotationDirty){ updateRotation(); }; if (Papervision3D.usePERCENT){ this._scaleX = (_arg1 / 100); } else { this._scaleX = _arg1; }; this._transformDirty = true; } public function get rotationX():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (this._rotationX * toDEGREES) : this._rotationX); } public function createViewportLayer(_arg1:Viewport3D, _arg2:Boolean=true):ViewportLayer{ var _local3:ViewportLayer; _local3 = _arg1.getChildLayer(this, true); if (_arg2){ addChildrenToLayer(this, _local3); }; return (_local3); } public function updateTransform():void{ _rot.setFromEuler(_rotationY, _rotationZ, _rotationX); this.transform.copy3x3(_rot.matrix); _tempMatrix.reset(); _tempMatrix.n11 = this._scaleX; _tempMatrix.n22 = this._scaleY; _tempMatrix.n33 = this._scaleZ; this.transform.calculateMultiply(this.transform, _tempMatrix); _transformDirty = false; } public function get useOwnContainer():Boolean{ return (_useOwnContainer); } public function moveRight(_arg1:Number):void{ translate(_arg1, RIGHT); } public function moveBackward(_arg1:Number):void{ translate(_arg1, BACKWARD); } public function set localRotationX(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (this._transformDirty){ updateTransform(); }; _qPitch.setFromAxisAngle(transform.n11, transform.n21, transform.n31, (_localRotationX - _arg1)); this.transform.calculateMultiply3x3(_qPitch.matrix, transform); _localRotationX = _arg1; _rotationDirty = true; } public function set localRotationY(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (_transformDirty){ updateTransform(); }; _qYaw.setFromAxisAngle(transform.n12, transform.n22, transform.n32, (_localRotationY - _arg1)); transform.calculateMultiply3x3(_qYaw.matrix, transform); _localRotationY = _arg1; _rotationDirty = true; } public function set autoCalcScreenCoords(_arg1:Boolean):void{ _autoCalcScreenCoords = _arg1; } public function set localRotationZ(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (_transformDirty){ updateTransform(); }; _qRoll.setFromAxisAngle(transform.n13, transform.n23, transform.n33, (_localRotationZ - _arg1)); transform.calculateMultiply3x3(_qRoll.matrix, transform); _localRotationZ = _arg1; _rotationDirty = true; } public function materialsList():String{ var _local1:String; var _local2:String; var _local3:DisplayObject3D; _local1 = ""; for (_local2 in this.materials) { _local1 = (_local1 + (_local2 + "\n")); }; for each (_local3 in this._childrenByName) { for (_local2 in _local3.materials.materialsByName) { _local1 = (_local1 + (("+ " + _local2) + "\n")); }; }; return (_local1); } public function set x(_arg1:Number):void{ this.transform.n14 = _arg1; } public function set y(_arg1:Number):void{ this.transform.n24 = _arg1; } public function set z(_arg1:Number):void{ this.transform.n34 = _arg1; } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ _arg1 = super.addChild(_arg1, _arg2); if (_arg1.scene == null){ _arg1.scene = scene; }; if (this.useOwnContainer){ _arg1.parentContainer = this; }; return (_arg1); } public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Number; var _local4:Number; var _local5:DisplayObject3D; if (this._transformDirty){ updateTransform(); }; this.world.calculateMultiply(_arg1.world, this.transform); if (_arg2.camera.culler){ if (this === _arg2.camera){ this.culled = true; } else { this.culled = (_arg2.camera.culler.testObject(this) < 0); }; if (this.culled){ _arg2.renderStatistics.culledObjects++; return (0); }; } else { this.culled = false; }; if (_arg1 !== _arg2.camera){ if (_arg2.camera.useProjectionMatrix){ this.view.calculateMultiply4x4(_arg1.view, this.transform); } else { this.view.calculateMultiply(_arg1.view, this.transform); }; } else { if (_arg2.camera.useProjectionMatrix){ this.view.calculateMultiply4x4(_arg2.camera.eye, this.transform); } else { this.view.calculateMultiply(_arg2.camera.eye, this.transform); }; }; if (_autoCalcScreenCoords){ calculateScreenCoords(_arg2.camera); }; _local3 = 0; _local4 = 0; for each (_local5 in this._childrenByName) { if (_local5.visible){ _local3 = (_local3 + _local5.project(this, _arg2)); _local4++; }; }; return ((this.screenZ = (_local3 / _local4))); } public function set scene(_arg1:SceneObject3D):void{ var _local2:DisplayObject3D; _scene = _arg1; for each (_local2 in this._childrenByName) { if (_local2.scene == null){ _local2.scene = _scene; }; }; } public function setChildMaterial(_arg1:DisplayObject3D, _arg2:MaterialObject3D, _arg3:MaterialObject3D=null):void{ var _local4:Triangle3D; if (!_arg1){ return; }; if (((!(_arg3)) || ((_arg1.material === _arg3)))){ _arg1.material = _arg2; }; if (((_arg1.geometry) && (_arg1.geometry.faces))){ for each (_local4 in _arg1.geometry.faces) { if (((!(_arg3)) || ((_local4.material === _arg3)))){ _local4.material = _arg2; }; }; }; } public function get material():MaterialObject3D{ return (_material); } public function get position():Number3D{ _position.reset(this.x, this.y, this.z); return (_position); } public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{ var _local3:DisplayObject3D; var _local4:Matrix3D; if ((this is CameraObject3D)){ _position.reset(this.x, this.y, this.z); } else { _local3 = (this.parent as DisplayObject3D); if (_local3){ world.calculateMultiply(_local3.world, transform); } else { world.copy(transform); }; _position.reset(world.n14, world.n24, world.n34); }; if ((_arg1 is CameraObject3D)){ _lookatTarget.reset(_arg1.x, _arg1.y, _arg1.z); } else { _local3 = (_arg1.parent as DisplayObject3D); if (_local3){ _arg1.world.calculateMultiply(_local3.world, _arg1.transform); } else { _arg1.world.copy(_arg1.transform); }; _lookatTarget.reset(_arg1.world.n14, _arg1.world.n24, _arg1.world.n34); }; _zAxis.copyFrom(_lookatTarget); _zAxis.minusEq(_position); _zAxis.normalize(); if (_zAxis.modulo > 0.1){ _xAxis = Number3D.cross(_zAxis, ((_arg2) || (UP)), _xAxis); _xAxis.normalize(); _yAxis = Number3D.cross(_zAxis, _xAxis, _yAxis); _yAxis.normalize(); _local4 = this.transform; _local4.n11 = (_xAxis.x * _scaleX); _local4.n21 = (_xAxis.y * _scaleX); _local4.n31 = (_xAxis.z * _scaleX); _local4.n12 = (-(_yAxis.x) * _scaleY); _local4.n22 = (-(_yAxis.y) * _scaleY); _local4.n32 = (-(_yAxis.z) * _scaleY); _local4.n13 = (_zAxis.x * _scaleZ); _local4.n23 = (_zAxis.y * _scaleZ); _local4.n33 = (_zAxis.z * _scaleZ); _localRotationX = (_localRotationY = (_localRotationZ = 0)); this._transformDirty = false; this._rotationDirty = true; } else { PaperLogger.error("lookAt error"); }; } public function set rotationX(_arg1:Number):void{ this._rotationX = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; this._transformDirty = true; } public function set rotationY(_arg1:Number):void{ this._rotationY = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; this._transformDirty = true; } public function set rotationZ(_arg1:Number):void{ this._rotationZ = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; this._transformDirty = true; } public function pitch(_arg1:Number):void{ _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; if (this._transformDirty){ updateTransform(); }; _qPitch.setFromAxisAngle(transform.n11, transform.n21, transform.n31, _arg1); this.transform.calculateMultiply3x3(_qPitch.matrix, transform); _localRotationX = (_localRotationX + _arg1); _rotationDirty = true; } public function get sceneX():Number{ return (this.world.n14); } public function translate(_arg1:Number, _arg2:Number3D):void{ var _local3:Number3D; _local3 = _arg2.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local3); this.x = (this.x + (_arg1 * _local3.x)); this.y = (this.y + (_arg1 * _local3.y)); this.z = (this.z + (_arg1 * _local3.z)); } public function distanceTo(_arg1:DisplayObject3D):Number{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (this.x - _arg1.x); _local3 = (this.y - _arg1.y); _local4 = (this.z - _arg1.z); return (Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4)))); } public function get sceneZ():Number{ return (this.world.n34); } public function get sceneY():Number{ return (this.world.n24); } public function clone():DisplayObject3D{ var _local1:String; var _local2:DisplayObject3D; var _local3:DisplayObject3D; _local1 = ((this.name + "_") + _numClones++); _local2 = new DisplayObject3D(_local1); if (this.material){ _local2.material = this.material; }; if (this.materials){ _local2.materials = this.materials.clone(); }; if (this.geometry){ _local2.geometry = this.geometry.clone(_local2); _local2.geometry.ready = true; }; _local2.copyTransform(this.transform); for each (_local3 in this.children) { _local2.addChild(_local3.clone()); }; return (_local2); } public function get scale():Number{ if ((((this._scaleX == this._scaleY)) && ((this._scaleX == this._scaleZ)))){ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); //unresolved jump }; return (NaN); } private function updateMaterials(_arg1:DisplayObject3D, _arg2:MaterialObject3D, _arg3:MaterialObject3D):void{ var _local4:DisplayObject3D; var _local5:Triangle3D; _arg2.unregisterObject(_arg1); if ((((_arg3 is AbstractLightShadeMaterial)) || ((_arg3 is ShadedMaterial)))){ _arg3.registerObject(_arg1); }; if (_arg1.material === _arg2){ _arg1.material = _arg3; }; if (((((_arg1.geometry) && (_arg1.geometry.faces))) && (_arg1.geometry.faces.length))){ for each (_local5 in _arg1.geometry.faces) { if (_local5.material === _arg2){ _local5.material = _arg3; }; }; }; for each (_local4 in _arg1.children) { updateMaterials(_local4, _arg2, _arg3); }; } public function replaceMaterialByName(_arg1:MaterialObject3D, _arg2:String):void{ var _local3:MaterialObject3D; if (!this.materials){ return; }; _local3 = this.materials.getMaterialByName(_arg2); if (!_local3){ return; }; if (this.material === _local3){ this.material = _arg1; }; _local3 = this.materials.removeMaterial(_local3); _arg1 = this.materials.addMaterial(_arg1, _arg2); updateMaterials(this, _local3, _arg1); } private function updateRotation():void{ _tempScale.x = (Papervision3D.usePERCENT) ? (_scaleX * 100) : _scaleX; _tempScale.y = (Papervision3D.usePERCENT) ? (_scaleY * 100) : _scaleY; _tempScale.z = (Papervision3D.usePERCENT) ? (_scaleZ * 100) : _scaleZ; _rotation = Matrix3D.matrix2euler(this.transform, _rotation, _tempScale); this._rotationX = (_rotation.x * toRADIANS); this._rotationY = (_rotation.y * toRADIANS); this._rotationZ = (_rotation.z * toRADIANS); this._rotationDirty = false; } public function get localRotationY():Number{ return ((Papervision3D.useDEGREES) ? (_localRotationY * toDEGREES) : _localRotationY); } public function get localRotationZ():Number{ return ((Papervision3D.useDEGREES) ? (_localRotationZ * toDEGREES) : _localRotationZ); } public function copyTransform(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; var _local4:DisplayObject3D; if ((_arg1 is DisplayObject3D)){ _local4 = DisplayObject3D(_arg1); if (_local4._transformDirty){ _local4.updateTransform(); }; }; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n11 = _local3.n11; _local2.n12 = _local3.n12; _local2.n13 = _local3.n13; _local2.n14 = _local3.n14; _local2.n21 = _local3.n21; _local2.n22 = _local3.n22; _local2.n23 = _local3.n23; _local2.n24 = _local3.n24; _local2.n31 = _local3.n31; _local2.n32 = _local3.n32; _local2.n33 = _local3.n33; _local2.n34 = _local3.n34; this._transformDirty = false; this._rotationDirty = true; } public function moveLeft(_arg1:Number):void{ translate(_arg1, LEFT); } public function get localRotationX():Number{ return ((Papervision3D.useDEGREES) ? (_localRotationX * toDEGREES) : _localRotationX); } public function set useOwnContainer(_arg1:Boolean):void{ _useOwnContainer = _arg1; setParentContainer(this, true); } public function moveForward(_arg1:Number):void{ translate(_arg1, FORWARD); } public function addChildrenToLayer(_arg1:DisplayObject3D, _arg2:ViewportLayer):void{ var _local3:DisplayObject3D; for each (_local3 in _arg1.children) { _arg2.addDisplayObject3D(_local3); _local3.addChildrenToLayer(_local3, _arg2); }; } public function copyPosition(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n14 = _local3.n14; _local2.n24 = _local3.n24; _local2.n34 = _local3.n34; } public function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = (this.x - _arg1); _local5 = (this.y - _arg2); _local6 = (this.z - _arg3); _local7 = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)); _local8 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0; return ((_local8 > _local7)); } public static function get ZERO():DisplayObject3D{ return (new (DisplayObject3D)); } } }//package org.papervision3d.objects
Section 360
//BasicRenderEngine (org.papervision3d.render.BasicRenderEngine) package org.papervision3d.render { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.core.render.material.*; import org.papervision3d.view.layer.*; import org.papervision3d.events.*; import org.papervision3d.core.render.*; import org.papervision3d.core.clipping.*; import org.papervision3d.core.render.filter.*; import org.papervision3d.core.render.sort.*; import org.papervision3d.core.render.project.*; import org.papervision3d.core.utils.*; public class BasicRenderEngine extends AbstractRenderEngine implements IRenderEngine { public var clipping:DefaultClipping; public var sorter:IRenderSorter; public var projectionPipeline:ProjectionPipeline; protected var renderDoneEvent:RendererEvent; protected var renderList:Array; protected var renderStatistics:RenderStatistics; protected var renderSessionData:RenderSessionData; protected var stopWatch:StopWatch; protected var projectionDoneEvent:RendererEvent; public var filter:IRenderFilter; protected var cleanRHD:RenderHitData; public function BasicRenderEngine():void{ cleanRHD = new RenderHitData(); super(); init(); } override public function removeFromRenderList(_arg1:IRenderListItem):int{ return (renderList.splice(renderList.indexOf(_arg1), 1)); } protected function doRender(_arg1:RenderSessionData, _arg2:Array=null):RenderStatistics{ var _local3:RenderableListItem; var _local4:Viewport3D; var _local5:ViewportLayer; stopWatch.reset(); stopWatch.start(); MaterialManager.getInstance().updateMaterialsBeforeRender(_arg1); filter.filter(renderList); sorter.sort(renderList); _local4 = _arg1.viewPort; while ((_local3 = renderList.pop())) { _local5 = _local4.accessLayerFor(_local3, true); _local3.render(_arg1, _local5.graphicsChannel); _local4.lastRenderList.push(_local3); _local5.processRenderItem(_local3); }; MaterialManager.getInstance().updateMaterialsAfterRender(_arg1); _arg1.renderStatistics.renderTime = stopWatch.stop(); _arg1.viewPort.updateAfterRender(_arg1); return (renderStatistics); } protected function init():void{ renderStatistics = new RenderStatistics(); projectionPipeline = new BasicProjectionPipeline(); stopWatch = new StopWatch(); sorter = new BasicRenderSorter(); filter = new BasicRenderFilter(); renderList = new Array(); clipping = null; renderSessionData = new RenderSessionData(); renderSessionData.renderer = this; projectionDoneEvent = new RendererEvent(RendererEvent.PROJECTION_DONE, renderSessionData); renderDoneEvent = new RendererEvent(RendererEvent.RENDER_DONE, renderSessionData); } override public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D):RenderStatistics{ _arg2.viewport = _arg3.sizeRectangle; renderSessionData.scene = _arg1; renderSessionData.camera = _arg2; renderSessionData.viewPort = _arg3; renderSessionData.container = _arg3.containerSprite; renderSessionData.triangleCuller = _arg3.triangleCuller; renderSessionData.particleCuller = _arg3.particleCuller; renderSessionData.renderObjects = _arg1.objects; renderSessionData.renderLayers = null; renderSessionData.renderStatistics.clear(); renderSessionData.clipping = clipping; if (clipping){ clipping.reset(renderSessionData); }; _arg3.updateBeforeRender(renderSessionData); projectionPipeline.project(renderSessionData); if (hasEventListener(RendererEvent.PROJECTION_DONE)){ dispatchEvent(projectionDoneEvent); }; doRender(renderSessionData, null); if (hasEventListener(RendererEvent.RENDER_DONE)){ dispatchEvent(renderDoneEvent); }; return (renderSessionData.renderStatistics); } public function hitTestPoint2D(_arg1:Point, _arg2:Viewport3D):RenderHitData{ return (_arg2.hitTestPoint2D(_arg1)); } override public function addToRenderList(_arg1:RenderableListItem):int{ return (renderList.push(_arg1)); } public function renderLayers(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Array=null):RenderStatistics{ renderSessionData.scene = _arg1; renderSessionData.camera = _arg2; renderSessionData.viewPort = _arg3; renderSessionData.container = _arg3.containerSprite; renderSessionData.triangleCuller = _arg3.triangleCuller; renderSessionData.particleCuller = _arg3.particleCuller; renderSessionData.renderObjects = getLayerObjects(_arg4); renderSessionData.renderLayers = _arg4; renderSessionData.renderStatistics.clear(); renderSessionData.clipping = clipping; _arg3.updateBeforeRender(renderSessionData); projectionPipeline.project(renderSessionData); if (hasEventListener(RendererEvent.PROJECTION_DONE)){ dispatchEvent(projectionDoneEvent); }; doRender(renderSessionData); if (hasEventListener(RendererEvent.RENDER_DONE)){ dispatchEvent(renderDoneEvent); }; return (renderSessionData.renderStatistics); } private function getLayerObjects(_arg1:Array):Array{ var _local2:Array; var _local3:ViewportLayer; _local2 = new Array(); for each (_local3 in _arg1) { _local2 = _local2.concat(_local3.getLayerObjects()); }; return (_local2); } public function destroy():void{ renderDoneEvent = null; projectionDoneEvent = null; projectionPipeline = null; sorter = null; filter = null; renderStatistics = null; renderList = null; renderSessionData.destroy(); renderSessionData = null; cleanRHD = null; stopWatch = null; clipping = null; } } }//package org.papervision3d.render
Section 361
//Scene3D (org.papervision3d.scenes.Scene3D) package org.papervision3d.scenes { import org.papervision3d.core.proto.*; public class Scene3D extends SceneObject3D { } }//package org.papervision3d.scenes
Section 362
//ViewportLayerSortMode (org.papervision3d.view.layer.util.ViewportLayerSortMode) package org.papervision3d.view.layer.util { public class ViewportLayerSortMode { public static var Z_SORT:String = "z"; public static var ORIGIN_SORT:String = "origin"; public static var INDEX_SORT:String = "index"; } }//package org.papervision3d.view.layer.util
Section 363
//ViewportBaseLayer (org.papervision3d.view.layer.ViewportBaseLayer) package org.papervision3d.view.layer { import org.papervision3d.view.*; import org.papervision3d.objects.*; public class ViewportBaseLayer extends ViewportLayer { public function ViewportBaseLayer(_arg1:Viewport3D){ super(_arg1, null); } override public function updateBeforeRender():void{ var _local1:int; clear(); _local1 = (childLayers.length - 1); while (_local1 >= 0) { if (childLayers[_local1].dynamicLayer){ removeLayerAt(_local1); }; _local1--; }; super.updateBeforeRender(); } override public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=false):ViewportLayer{ if (layers[_arg1]){ return (layers[_arg1]); }; if (((_arg2) || (_arg1.useOwnContainer))){ return (getChildLayerFor(_arg1, _arg3)); }; return (this); } } }//package org.papervision3d.view.layer
Section 364
//ViewportLayer (org.papervision3d.view.layer.ViewportLayer) package org.papervision3d.view.layer { import flash.display.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.view.layer.util.*; public class ViewportLayer extends Sprite { public var layerIndex:Number; public var originDepth:Number;// = 0 public var layers:Dictionary; public var dynamicLayer:Boolean;// = false public var sortMode:String; public var weight:Number;// = 0 public var childLayers:Array; public var forceDepth:Boolean;// = false protected var viewport:Viewport3D; public var screenDepth:Number;// = 0 public var displayObject3D:DisplayObject3D; public var displayObjects:Dictionary; public var graphicsChannel:Graphics; public function ViewportLayer(_arg1:Viewport3D, _arg2:DisplayObject3D, _arg3:Boolean=false){ layers = new Dictionary(true); displayObjects = new Dictionary(true); forceDepth = false; screenDepth = 0; originDepth = 0; weight = 0; sortMode = ViewportLayerSortMode.Z_SORT; dynamicLayer = false; super(); this.viewport = _arg1; this.displayObject3D = _arg2; this.dynamicLayer = _arg3; this.graphicsChannel = this.graphics; if (_arg3){ this.filters = _arg2.filters; this.blendMode = _arg2.blendMode; this.alpha = _arg2.alpha; }; if (_arg2){ addDisplayObject3D(_arg2); _arg2.container = this; }; init(); } public function getLayerObjects(_arg1:Array=null):Array{ var _local2:DisplayObject3D; var _local3:ViewportLayer; if (!_arg1){ _arg1 = new Array(); }; for each (_local2 in this.displayObjects) { if (_local2){ _arg1.push(_local2); }; }; for each (_local3 in childLayers) { _local3.getLayerObjects(_arg1); }; return (_arg1); } protected function init():void{ childLayers = new Array(); } public function updateInfo():void{ var _local1:ViewportLayer; for each (_local1 in childLayers) { _local1.updateInfo(); if (!forceDepth){ if (!isNaN(_local1.screenDepth)){ this.weight = (this.weight + _local1.weight); this.screenDepth = (this.screenDepth + (_local1.screenDepth * _local1.weight)); this.originDepth = (this.originDepth + (_local1.originDepth * _local1.weight)); }; }; }; if (!forceDepth){ this.screenDepth = (this.screenDepth / this.weight); this.originDepth = (this.originDepth / this.weight); }; } public function sortChildLayers():void{ switch (sortMode){ case ViewportLayerSortMode.Z_SORT: childLayers.sortOn("screenDepth", (Array.DESCENDING | Array.NUMERIC)); break; case ViewportLayerSortMode.INDEX_SORT: childLayers.sortOn("layerIndex", Array.NUMERIC); break; case ViewportLayerSortMode.ORIGIN_SORT: childLayers.sortOn(["originDepth", "screenDepth"], [(Array.DESCENDING | Array.NUMERIC), (Array.DESCENDING | Array.NUMERIC)]); break; }; orderLayers(); } private function onChildRemoved(_arg1:ViewportLayerEvent):void{ if (_arg1.do3d){ unlinkChild(_arg1.do3d, _arg1); }; } public function removeAllLayers():void{ var _local1:int; _local1 = (childLayers.length - 1); while (_local1 >= 0) { removeLayerAt(_local1); _local1--; }; } public function updateAfterRender():void{ var _local1:ViewportLayer; for each (_local1 in childLayers) { _local1.updateAfterRender(); }; } public function removeLayer(_arg1:ViewportLayer):void{ var _local2:int; _local2 = getChildIndex(_arg1); if (_local2 > -1){ removeLayerAt(_local2); } else { PaperLogger.error("Layer not found for removal."); }; } protected function getChildLayerFor(_arg1:DisplayObject3D, _arg2:Boolean=false):ViewportLayer{ var _local3:ViewportLayer; if (_arg1){ _local3 = new ViewportLayer(viewport, _arg1, _arg1.useOwnContainer); addLayer(_local3); if (_arg2){ _arg1.addChildrenToLayer(_arg1, _local3); }; return (_local3); } else { PaperLogger.warning("Needs to be a do3d"); }; return (null); } public function addLayer(_arg1:ViewportLayer):void{ var _local2:DisplayObject3D; var _local3:ViewportLayer; if (childLayers.indexOf(_arg1) != -1){ PaperLogger.warning("Child layer already exists in ViewportLayer"); return; }; childLayers.push(_arg1); addChild(_arg1); _arg1.addEventListener(ViewportLayerEvent.CHILD_ADDED, onChildAdded); _arg1.addEventListener(ViewportLayerEvent.CHILD_REMOVED, onChildRemoved); for each (_local2 in _arg1.displayObjects) { linkChild(_local2, _arg1); }; for each (_local3 in _arg1.layers) { for each (_local2 in _local3.displayObjects) { linkChild(_local2, _local3); }; }; } protected function orderLayers():void{ var _local1:int; var _local2:ViewportLayer; _local1 = 0; while (_local1 < childLayers.length) { _local2 = childLayers[_local1]; if (this.getChildIndex(_local2) != _local1){ this.setChildIndex(_local2, _local1); }; _local2.sortChildLayers(); _local1++; }; } public function childLayerIndex(_arg1:DisplayObject3D):Number{ var _local2:int; _arg1 = (_arg1.parentContainer) ? _arg1.parentContainer : _arg1; _local2 = 0; while (_local2 < childLayers.length) { if (childLayers[_local2].hasDisplayObject3D(_arg1)){ return (_local2); }; _local2++; }; return (-1); } public function removeLayerAt(_arg1:Number):void{ var _local2:DisplayObject3D; for each (_local2 in childLayers[_arg1].displayObjects) { unlinkChild(_local2); }; removeChild(childLayers[_arg1]); childLayers.splice(_arg1, 1); } protected function reset():void{ if (!forceDepth){ screenDepth = 0; originDepth = 0; }; this.weight = 0; } private function linkChild(_arg1:DisplayObject3D, _arg2:ViewportLayer, _arg3:ViewportLayerEvent=null):void{ layers[_arg1] = _arg2; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_ADDED, _arg1, _arg2)); } public function updateBeforeRender():void{ var _local1:ViewportLayer; clear(); for each (_local1 in childLayers) { _local1.updateBeforeRender(); }; } private function onChildAdded(_arg1:ViewportLayerEvent):void{ if (_arg1.do3d){ linkChild(_arg1.do3d, _arg1.layer, _arg1); }; } public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=false):ViewportLayer{ _arg1 = (_arg1.parentContainer) ? _arg1.parentContainer : _arg1; if (layers[_arg1]){ return (layers[_arg1]); }; if (_arg2){ return (getChildLayerFor(_arg1, _arg3)); }; return (null); } public function processRenderItem(_arg1:RenderableListItem):void{ if (!forceDepth){ if (!isNaN(_arg1.screenZ)){ this.screenDepth = (this.screenDepth + _arg1.screenZ); if (_arg1.instance){ this.originDepth = (this.originDepth + _arg1.instance.world.n34); this.originDepth = (this.originDepth + _arg1.instance.screen.z); }; this.weight++; }; }; } public function clear():void{ graphicsChannel.clear(); reset(); } public function removeDisplayObject3D(_arg1:DisplayObject3D):void{ displayObjects[_arg1] = null; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_REMOVED, _arg1, this)); } private function unlinkChild(_arg1:DisplayObject3D, _arg2:ViewportLayerEvent=null):void{ layers[_arg1] = null; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_REMOVED, _arg1)); } public function addDisplayObject3D(_arg1:DisplayObject3D, _arg2:Boolean=false):void{ if (!_arg1){ return; }; displayObjects[_arg1] = _arg1; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_ADDED, _arg1, this)); if (_arg2){ _arg1.addChildrenToLayer(_arg1, this); }; } public function hasDisplayObject3D(_arg1:DisplayObject3D):Boolean{ return (!((displayObjects[_arg1] == null))); } } }//package org.papervision3d.view.layer
Section 365
//ViewportLayerEvent (org.papervision3d.view.layer.ViewportLayerEvent) package org.papervision3d.view.layer { import flash.events.*; import org.papervision3d.objects.*; public class ViewportLayerEvent extends Event { public var layer:ViewportLayer; public var do3d:DisplayObject3D; public static const CHILD_REMOVED:String = "childRemoved"; public static const CHILD_ADDED:String = "childAdded"; public function ViewportLayerEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:ViewportLayer=null){ super(_arg1, false, false); this.do3d = _arg2; this.layer = _arg3; } } }//package org.papervision3d.view.layer
Section 366
//Viewport3D (org.papervision3d.view.Viewport3D) package org.papervision3d.view { import flash.events.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.view.layer.*; import org.papervision3d.core.log.*; import flash.utils.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.view.*; import org.papervision3d.core.render.*; import org.papervision3d.core.utils.*; public class Viewport3D extends Sprite implements IViewport3D { protected var _interactive:Boolean; public var cullingRectangle:Rectangle; private var stageScaleModeSet:Boolean;// = false protected var _viewportObjectFilter:ViewportObjectFilter; protected var _layerInstances:Dictionary; protected var _hWidth:Number; protected var _autoScaleToStage:Boolean; protected var _lastRenderer:IRenderEngine; protected var _containerSprite:ViewportBaseLayer; protected var _hHeight:Number; public var sizeRectangle:Rectangle; protected var renderHitData:RenderHitData; protected var _autoClipping:Boolean; protected var _height:Number; public var interactiveSceneManager:InteractiveSceneManager; public var lastRenderList:Array; public var lineCuller:ILineCuller; protected var _autoCulling:Boolean; public var particleCuller:IParticleCuller; protected var _width:Number; public var triangleCuller:ITriangleCuller; public function Viewport3D(_arg1:Number=640, _arg2:Number=480, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=true, _arg6:Boolean=true){ stageScaleModeSet = false; super(); init(); this.interactive = _arg4; this.viewportWidth = _arg1; this.viewportHeight = _arg2; this.autoClipping = _arg5; this.autoCulling = _arg6; this.autoScaleToStage = _arg3; this._layerInstances = new Dictionary(true); } public function set autoCulling(_arg1:Boolean):void{ if (_arg1){ triangleCuller = new RectangleTriangleCuller(cullingRectangle); particleCuller = new RectangleParticleCuller(cullingRectangle); lineCuller = new RectangleLineCuller(cullingRectangle); } else { if (!_arg1){ triangleCuller = new DefaultTriangleCuller(); particleCuller = new DefaultParticleCuller(); lineCuller = new DefaultLineCuller(); }; }; _autoCulling = _arg1; } protected function onRemovedFromStage(_arg1:Event):void{ stage.removeEventListener(Event.RESIZE, onStageResize); } public function hitTestMouse():RenderHitData{ var _local1:Point; _local1 = new Point(containerSprite.mouseX, containerSprite.mouseY); return (hitTestPoint2D(_local1)); } protected function init():void{ this.renderHitData = new RenderHitData(); lastRenderList = new Array(); sizeRectangle = new Rectangle(); cullingRectangle = new Rectangle(); _containerSprite = new ViewportBaseLayer(this); _containerSprite.doubleClickEnabled = true; addChild(_containerSprite); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } protected function onStageResize(_arg1:Event=null):void{ if (_autoScaleToStage){ viewportWidth = stage.stageWidth; viewportHeight = stage.stageHeight; }; } public function set autoClipping(_arg1:Boolean):void{ if (_arg1){ scrollRect = sizeRectangle; } else { scrollRect = null; }; _autoClipping = _arg1; } public function updateAfterRender(_arg1:RenderSessionData):void{ var _local2:ViewportLayer; if (interactive){ interactiveSceneManager.updateAfterRender(); }; if (_arg1.renderLayers){ for each (_local2 in _arg1.renderLayers) { _local2.updateInfo(); _local2.sortChildLayers(); _local2.updateAfterRender(); }; } else { containerSprite.updateInfo(); containerSprite.updateAfterRender(); }; containerSprite.sortChildLayers(); } public function accessLayerFor(_arg1:RenderableListItem, _arg2:Boolean=false):ViewportLayer{ var _local3:DisplayObject3D; if (_arg1.renderableInstance){ _local3 = _arg1.renderableInstance.instance; _local3 = (_local3.parentContainer) ? _local3.parentContainer : _local3; if (containerSprite.layers[_local3]){ if (_arg2){ _local3.container = containerSprite.layers[_local3]; }; return (containerSprite.layers[_local3]); } else { if (_local3.useOwnContainer){ return (containerSprite.getChildLayer(_local3, true, true)); }; }; }; return (containerSprite); } public function get viewportHeight():Number{ return (_height); } public function get autoCulling():Boolean{ return (_autoCulling); } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:ViewportLayer; lastRenderList.length = 0; if (_arg1.renderLayers){ for each (_local2 in _arg1.renderLayers) { _local2.updateBeforeRender(); }; } else { _containerSprite.updateBeforeRender(); }; _layerInstances = new Dictionary(true); } protected function onAddedToStage(_arg1:Event):void{ if (_autoScaleToStage){ setStageScaleMode(); }; stage.addEventListener(Event.RESIZE, onStageResize); onStageResize(); } public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=true):ViewportLayer{ return (containerSprite.getChildLayer(_arg1, _arg2, _arg3)); } public function hitTestPoint2D(_arg1:Point):RenderHitData{ var _local2:RenderableListItem; var _local3:RenderHitData; var _local4:IRenderListItem; var _local5:uint; renderHitData.clear(); if (interactive){ _local3 = renderHitData; _local5 = lastRenderList.length; while ((_local4 = lastRenderList[--_local5])) { if ((_local4 is RenderableListItem)){ _local2 = (_local4 as RenderableListItem); _local3 = _local2.hitTestPoint2D(_arg1, _local3); if (_local3.hasHit){ return (_local3); }; }; }; }; return (renderHitData); } public function get containerSprite():ViewportLayer{ return (_containerSprite); } public function set viewportWidth(_arg1:Number):void{ _width = _arg1; _hWidth = (_arg1 / 2); containerSprite.x = _hWidth; cullingRectangle.x = -(_hWidth); cullingRectangle.width = _arg1; sizeRectangle.width = _arg1; if (_autoClipping){ scrollRect = sizeRectangle; }; } public function get autoClipping():Boolean{ return (_autoClipping); } protected function setStageScaleMode():void{ if (!stageScaleModeSet){ PaperLogger.info("Viewport autoScaleToStage : Papervision has changed the Stage scale mode."); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stageScaleModeSet = true; }; } public function get viewportWidth():Number{ return (_width); } public function set autoScaleToStage(_arg1:Boolean):void{ _autoScaleToStage = _arg1; if (((_arg1) && (!((stage == null))))){ setStageScaleMode(); onStageResize(); }; } public function set viewportObjectFilter(_arg1:ViewportObjectFilter):void{ _viewportObjectFilter = _arg1; } public function set interactive(_arg1:Boolean):void{ if (_arg1 != _interactive){ if (((_interactive) && (interactiveSceneManager))){ interactiveSceneManager.destroy(); interactiveSceneManager = null; }; _interactive = _arg1; if (_arg1){ interactiveSceneManager = new InteractiveSceneManager(this); }; }; } public function set viewportHeight(_arg1:Number):void{ _height = _arg1; _hHeight = (_arg1 / 2); containerSprite.y = _hHeight; cullingRectangle.y = -(_hHeight); cullingRectangle.height = _arg1; sizeRectangle.height = _arg1; if (_autoClipping){ scrollRect = sizeRectangle; }; } public function get viewportObjectFilter():ViewportObjectFilter{ return (_viewportObjectFilter); } public function get autoScaleToStage():Boolean{ return (_autoScaleToStage); } public function get interactive():Boolean{ return (_interactive); } public function hitTestPointObject(_arg1:Point, _arg2:DisplayObject3D):RenderHitData{ var _local3:RenderableListItem; var _local4:RenderHitData; var _local5:IRenderListItem; var _local6:uint; if (interactive){ _local4 = new RenderHitData(); _local6 = lastRenderList.length; while ((_local5 = lastRenderList[--_local6])) { if ((_local5 is RenderableListItem)){ _local3 = (_local5 as RenderableListItem); if ((_local3.renderableInstance is Triangle3D)){ if (Triangle3D(_local3.renderableInstance).instance != _arg2){ continue; }; } else { continue; }; _local4 = _local3.hitTestPoint2D(_arg1, _local4); if (_local4.hasHit){ return (_local4); }; }; }; }; return (new RenderHitData()); } public function destroy():void{ if (interactiveSceneManager){ interactiveSceneManager.destroy(); interactiveSceneManager = null; }; lastRenderList = null; } } }//package org.papervision3d.view
Section 367
//Papervision3D (org.papervision3d.Papervision3D) package org.papervision3d { import org.papervision3d.core.log.*; public class Papervision3D { public static var useDEGREES:Boolean = true; public static var useRIGHTHANDED:Boolean = false; public static var PAPERLOGGER:PaperLogger = PaperLogger.getInstance(); public static var NAME:String = "Papervision3D"; public static var DATE:String = "December 3rd, 2008"; public static var AUTHOR:String = "(c) 2006-2008 Copyright by Carlos Ulloa | John Grden | Ralph Hauwert | Tim Knip | Andy Zupko"; public static var VERSION:String = "Public Beta 2.0 - Great White"; public static var usePERCENT:Boolean = false; } }//package org.papervision3d
Section 368
//BadCloudsTex (BadCloudsTex) package { import flash.display.*; public dynamic class BadCloudsTex extends BitmapData { public function BadCloudsTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 369
//BatBombSprite (BatBombSprite) package { import flash.display.*; public dynamic class BatBombSprite extends BitmapData { public function BatBombSprite(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 370
//BatTex (BatTex) package { import flash.display.*; public dynamic class BatTex extends BitmapData { public function BatTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 371
//BillBoard (BillBoard) package { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.objects.primitives.*; public class BillBoard extends Plane { public function BillBoard(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ super(_arg1, _arg2, _arg3, _arg4, _arg5); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ MathUtils.copyAndTranspose(_arg1.world, transform, true); transform.calculateMultiply3x3(transform, _arg2.camera.transform); return (super.project(_arg1, _arg2)); } } }//package
Section 372
//BlockSide2 (BlockSide2) package { import flash.display.*; public dynamic class BlockSide2 extends BitmapData { public function BlockSide2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 373
//BlockSide3 (BlockSide3) package { import flash.display.*; public dynamic class BlockSide3 extends BitmapData { public function BlockSide3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 374
//BlockTop2 (BlockTop2) package { import flash.display.*; public dynamic class BlockTop2 extends BitmapData { public function BlockTop2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 375
//BlockTop3 (BlockTop3) package { import flash.display.*; public dynamic class BlockTop3 extends BitmapData { public function BlockTop3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 376
//BombTex (BombTex) package { import flash.display.*; public dynamic class BombTex extends BitmapData { public function BombTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 377
//Car2d (Car2d) package { import flash.display.*; public dynamic class Car2d extends MovieClip { } }//package
Section 378
//CoinTex (CoinTex) package { import flash.display.*; public dynamic class CoinTex extends BitmapData { public function CoinTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 379
//CountdownNumber (CountdownNumber) package { import flash.display.*; import flash.text.*; public dynamic class CountdownNumber extends MovieClip { public var numberTx:TextField; } }//package
Section 380
//CpBeepSnd (CpBeepSnd) package { import flash.media.*; public dynamic class CpBeepSnd extends Sound { } }//package
Section 381
//DocTex (DocTex) package { import flash.display.*; public dynamic class DocTex extends BitmapData { public function DocTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 382
//DracTex (DracTex) package { import flash.display.*; public dynamic class DracTex extends BitmapData { public function DracTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 383
//ExplosionSnd (ExplosionSnd) package { import flash.media.*; public dynamic class ExplosionSnd extends Sound { } }//package
Section 384
//ExplosionTex (ExplosionTex) package { import flash.display.*; public dynamic class ExplosionTex extends BitmapData { public function ExplosionTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 385
//fBlockTexture (fBlockTexture) package { import flash.display.*; public dynamic class fBlockTexture extends BitmapData { public function fBlockTexture(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 386
//GameMusic (GameMusic) package { import flash.media.*; public dynamic class GameMusic extends Sound { } }//package
Section 387
//GrassTex (GrassTex) package { import flash.display.*; public dynamic class GrassTex extends BitmapData { public function GrassTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 388
//HitSnd (HitSnd) package { import flash.media.*; public dynamic class HitSnd extends Sound { } }//package
Section 389
//HulkTex (HulkTex) package { import flash.display.*; public dynamic class HulkTex extends BitmapData { public function HulkTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 390
//KartTex (KartTex) package { import flash.display.*; public dynamic class KartTex extends BitmapData { public function KartTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 391
//LightningCloudsTex (LightningCloudsTex) package { import flash.display.*; public dynamic class LightningCloudsTex extends BitmapData { public function LightningCloudsTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 392
//LightningSnd (LightningSnd) package { import flash.media.*; public dynamic class LightningSnd extends Sound { } }//package
Section 393
//Marker (Marker) package { import flash.display.*; public dynamic class Marker extends MovieClip { } }//package
Section 394
//MathUtils (MathUtils) package { import org.papervision3d.core.math.*; import org.papervision3d.objects.*; public final class MathUtils { public static function distanceToSquaredNumber3D(_arg1:Number3D, _arg2:Number3D):Number{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); _local5 = (_arg1.z - _arg2.z); return ((((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5))); } public static function randomNumber(_arg1:Number, _arg2:Number):Number{ return (((Math.random() * (_arg2 - _arg1)) + _arg1)); } public static function number3DMultiply(_arg1:Number3D, _arg2:Number):Number3D{ var _local3:Number3D; _local3 = new Number3D(_arg1.x, _arg1.y, _arg1.z); _local3.multiplyEq(_arg2); return (_local3); } public static function copyAndTranspose(_arg1:Matrix3D, _arg2:Matrix3D, _arg3:Boolean=false):void{ _arg2.n11 = _arg1.n11; _arg2.n12 = _arg1.n21; _arg2.n13 = _arg1.n31; _arg2.n21 = _arg1.n12; _arg2.n22 = _arg1.n22; _arg2.n23 = _arg1.n32; _arg2.n31 = _arg1.n13; _arg2.n32 = _arg1.n23; _arg2.n33 = _arg1.n33; _arg2.n41 = _arg1.n14; _arg2.n42 = _arg1.n24; _arg2.n43 = _arg1.n34; if (!_arg3){ _arg2.n14 = _arg1.n41; _arg2.n24 = _arg1.n42; _arg2.n34 = _arg1.n43; _arg2.n44 = _arg1.n44; }; } public static function distanceToMatrix3D(_arg1:Matrix3D, _arg2:Matrix3D):Number{ return (distanceToNumber3D(matrix3DPosition(_arg1), matrix3DPosition(_arg2))); } public static function distanceToNumber3D(_arg1:Number3D, _arg2:Number3D):Number{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); _local5 = (_arg1.z - _arg2.z); return (Math.sqrt((((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5)))); } public static function matrix3DPosition(_arg1:Matrix3D):Number3D{ return (new Number3D(_arg1.n14, _arg1.n24, _arg1.n34)); } public static function randomInt(_arg1:int, _arg2:int):int{ return (int(Math.round(((Math.random() * (_arg2 - _arg1)) + _arg1)))); } public static function setPosition(_arg1:Number3D, _arg2:DisplayObject3D):void{ _arg2.x = _arg1.x; _arg2.y = _arg1.y; _arg2.z = _arg1.z; } public static function translate(_arg1:Matrix3D, _arg2:Number, _arg3:Number3D):Number3D{ var _local4:Number3D; _local4 = _arg3.clone(); Matrix3D.rotateAxis(_arg1, _local4); return (new Number3D((_arg1.n14 + (_arg2 * _local4.x)), (_arg1.n24 + (_arg2 * _local4.y)), (_arg1.n34 + (_arg2 * _local4.z)))); } public static function getPosition(_arg1:DisplayObject3D):Number3D{ return (new Number3D(_arg1.x, _arg1.y, _arg1.z)); } } }//package
Section 395
//MummyTex (MummyTex) package { import flash.display.*; public dynamic class MummyTex extends BitmapData { public function MummyTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 396
//NPC_Label (NPC_Label) package { import flash.display.*; import flash.text.*; public dynamic class NPC_Label extends MovieClip { public var screenNameTx:TextField; } }//package
Section 397
//PowerUpSnd (PowerUpSnd) package { import flash.media.*; public dynamic class PowerUpSnd extends Sound { } }//package
Section 398
//RoadCorner (RoadCorner) package { import flash.display.*; public dynamic class RoadCorner extends BitmapData { public function RoadCorner(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 399
//RoadCorner2 (RoadCorner2) package { import flash.display.*; public dynamic class RoadCorner2 extends BitmapData { public function RoadCorner2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 400
//RoadCorner3 (RoadCorner3) package { import flash.display.*; public dynamic class RoadCorner3 extends BitmapData { public function RoadCorner3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 401
//RoadEmpty (RoadEmpty) package { import flash.display.*; public dynamic class RoadEmpty extends BitmapData { public function RoadEmpty(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 402
//RoadEmpty2 (RoadEmpty2) package { import flash.display.*; public dynamic class RoadEmpty2 extends BitmapData { public function RoadEmpty2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 403
//RoadEmpty3 (RoadEmpty3) package { import flash.display.*; public dynamic class RoadEmpty3 extends BitmapData { public function RoadEmpty3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 404
//RoadEnd (RoadEnd) package { import flash.display.*; public dynamic class RoadEnd extends BitmapData { public function RoadEnd(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 405
//RoadEnd2 (RoadEnd2) package { import flash.display.*; public dynamic class RoadEnd2 extends BitmapData { public function RoadEnd2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 406
//RoadEnd3 (RoadEnd3) package { import flash.display.*; public dynamic class RoadEnd3 extends BitmapData { public function RoadEnd3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 407
//RoadHoriz (RoadHoriz) package { import flash.display.*; public dynamic class RoadHoriz extends BitmapData { public function RoadHoriz(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 408
//RoadHoriz2 (RoadHoriz2) package { import flash.display.*; public dynamic class RoadHoriz2 extends BitmapData { public function RoadHoriz2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 409
//RoadHoriz3 (RoadHoriz3) package { import flash.display.*; public dynamic class RoadHoriz3 extends BitmapData { public function RoadHoriz3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 410
//RoadT (RoadT) package { import flash.display.*; public dynamic class RoadT extends BitmapData { public function RoadT(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 411
//RoadT2 (RoadT2) package { import flash.display.*; public dynamic class RoadT2 extends BitmapData { public function RoadT2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 412
//RoadT3 (RoadT3) package { import flash.display.*; public dynamic class RoadT3 extends BitmapData { public function RoadT3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 413
//RoadVert (RoadVert) package { import flash.display.*; public dynamic class RoadVert extends BitmapData { public function RoadVert(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 414
//RoadVert2 (RoadVert2) package { import flash.display.*; public dynamic class RoadVert2 extends BitmapData { public function RoadVert2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 415
//RoadVert3 (RoadVert3) package { import flash.display.*; public dynamic class RoadVert3 extends BitmapData { public function RoadVert3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 416
//SmallStarTex (SmallStarTex) package { import flash.display.*; public dynamic class SmallStarTex extends BitmapData { public function SmallStarTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 417
//SpeedUpSnd (SpeedUpSnd) package { import flash.media.*; public dynamic class SpeedUpSnd extends Sound { } }//package
Section 418
//SpeedUpTex (SpeedUpTex) package { import flash.display.*; public dynamic class SpeedUpTex extends BitmapData { public function SpeedUpTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 419
//SpeedUpTex2 (SpeedUpTex2) package { import flash.display.*; public dynamic class SpeedUpTex2 extends BitmapData { public function SpeedUpTex2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 420
//StarPowerUpSnd (StarPowerUpSnd) package { import flash.media.*; public dynamic class StarPowerUpSnd extends Sound { } }//package
Section 421
//StarTex (StarTex) package { import flash.display.*; public dynamic class StarTex extends BitmapData { public function StarTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 422
//SwampSludgeTex (SwampSludgeTex) package { import flash.display.*; public dynamic class SwampSludgeTex extends BitmapData { public function SwampSludgeTex(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 423
//woodFloorTexture (woodFloorTexture) package { import flash.display.*; public dynamic class woodFloorTexture extends BitmapData { public function woodFloorTexture(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package

Library Items

Symbol 1 Sound {StarPowerUpSnd}
Symbol 2 Sound {SpeedUpSnd}
Symbol 3 Sound {PowerUpSnd}
Symbol 4 Sound {LightningSnd}
Symbol 5 Sound {HitSnd}
Symbol 6 Sound {GameMusic}
Symbol 7 Sound {ExplosionSnd}
Symbol 8 Sound {CpBeepSnd}Used by:131 138
Symbol 9 Bitmap {woodFloorTexture}
Symbol 10 Bitmap {SwampSludgeTex}
Symbol 11 Bitmap {RoadVert3}
Symbol 12 Bitmap {RoadT3}
Symbol 13 Bitmap {RoadHoriz3}
Symbol 14 Bitmap {RoadEnd3}
Symbol 15 Bitmap {RoadCorner3}
Symbol 16 Bitmap {RoadEmpty3}
Symbol 17 Bitmap {BlockTop3}
Symbol 18 Bitmap {BlockSide3}
Symbol 19 Bitmap {SpeedUpTex}
Symbol 20 Bitmap {SmallStarTex}
Symbol 21 Bitmap {RoadVert}
Symbol 22 Bitmap {RoadT}
Symbol 23 Bitmap {RoadHoriz}
Symbol 24 Bitmap {RoadEnd}
Symbol 25 Bitmap {RoadCorner}
Symbol 26 Bitmap {MummyTex}
Symbol 27 Bitmap {KartTex}
Symbol 28 Bitmap {ExplosionTex}
Symbol 29 Bitmap {RoadVert2}
Symbol 30 Bitmap {RoadT2}
Symbol 31 Bitmap {RoadHoriz2}
Symbol 32 Bitmap {RoadEnd2}
Symbol 33 Bitmap {RoadCorner2}
Symbol 34 Bitmap {GrassTex}
Symbol 35 Bitmap {RoadEmpty2}
Symbol 36 Bitmap {BlockTop2}
Symbol 37 Bitmap {BlockSide2}
Symbol 38 Bitmap {HulkTex}
Symbol 39 Bitmap {SpeedUpTex2}
Symbol 40 Bitmap {fBlockTexture}
Symbol 41 Bitmap {RoadEmpty}
Symbol 42 Bitmap {DracTex}
Symbol 43 Bitmap {DocTex}
Symbol 44 Bitmap {CoinTex}
Symbol 45 Bitmap {BatBombSprite}
Symbol 46 Bitmap {BatTex}
Symbol 47 Bitmap {BadCloudsTex}
Symbol 48 GraphicUsed by:49 117
Symbol 49 MovieClipUses:48Used by:79
Symbol 50 BitmapUsed by:51
Symbol 51 GraphicUses:50Used by:52
Symbol 52 MovieClipUses:51Used by:79
Symbol 53 GraphicUsed by:54
Symbol 54 ButtonUses:53Used by:79
Symbol 55 BitmapUsed by:56
Symbol 56 GraphicUses:55Used by:57
Symbol 57 MovieClipUses:56Used by:79
Symbol 58 BitmapUsed by:59
Symbol 59 GraphicUses:58Used by:60
Symbol 60 MovieClipUses:59Used by:79
Symbol 61 BitmapUsed by:62
Symbol 62 GraphicUses:61Used by:63
Symbol 63 MovieClipUses:62Used by:79
Symbol 64 BitmapUsed by:65
Symbol 65 GraphicUses:64Used by:66
Symbol 66 MovieClipUses:65Used by:79
Symbol 67 BitmapUsed by:68
Symbol 68 GraphicUses:67Used by:69
Symbol 69 MovieClipUses:68Used by:79
Symbol 70 BitmapUsed by:71
Symbol 71 GraphicUses:70Used by:72
Symbol 72 MovieClipUses:71Used by:79
Symbol 73 BitmapUsed by:74
Symbol 74 GraphicUses:73Used by:75
Symbol 75 MovieClipUses:74Used by:79
Symbol 76 BitmapUsed by:77
Symbol 77 GraphicUses:76Used by:78
Symbol 78 MovieClipUses:77Used by:79
Symbol 79 MovieClip {com.sikids.syndicatedGameApiAs3.Preroll}Uses:49 52 54 57 60 63 66 69 72 75 78 SS1
Symbol 80 GraphicUsed by:81
Symbol 81 ButtonUses:80Used by:118
Symbol 82 BitmapUsed by:83
Symbol 83 GraphicUses:82Used by:84
Symbol 84 MovieClipUses:83Used by:118
Symbol 85 BitmapUsed by:86
Symbol 86 GraphicUses:85Used by:87
Symbol 87 ButtonUses:86Used by:118
Symbol 88 FontUsed by:89 90 106 123
Symbol 89 EditableTextUses:88Used by:118
Symbol 90 EditableTextUses:88Used by:118
Symbol 91 BitmapUsed by:92
Symbol 92 GraphicUses:91Used by:98
Symbol 93 BitmapUsed by:94
Symbol 94 GraphicUses:93Used by:98
Symbol 95 BitmapUsed by:96
Symbol 96 GraphicUses:95Used by:98
Symbol 97 GraphicUsed by:98 105
Symbol 98 ButtonUses:92 94 96 97Used by:118
Symbol 99 BitmapUsed by:100 102
Symbol 100 GraphicUses:99Used by:105
Symbol 101 BitmapUsed by:102
Symbol 102 GraphicUses:101 99Used by:105
Symbol 103 BitmapUsed by:104
Symbol 104 GraphicUses:103Used by:105
Symbol 105 ButtonUses:100 102 104 97Used by:118
Symbol 106 EditableTextUses:88Used by:118
Symbol 107 BitmapUsed by:108
Symbol 108 GraphicUses:107Used by:118
Symbol 109 BitmapUsed by:110
Symbol 110 GraphicUses:109Used by:118
Symbol 111 BitmapUsed by:112
Symbol 112 GraphicUses:111Used by:117
Symbol 113 BitmapUsed by:114
Symbol 114 GraphicUses:113Used by:117
Symbol 115 BitmapUsed by:116
Symbol 116 GraphicUses:115Used by:117
Symbol 117 ButtonUses:112 114 116 48Used by:118
Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox}Uses:81 84 87 89 90 98 105 106 108 110 117
Symbol 119 GraphicUsed by:120
Symbol 120 MovieClip {Car2d}Uses:119
Symbol 121 GraphicUsed by:122
Symbol 122 MovieClip {Marker}Uses:121
Symbol 123 EditableTextUses:88Used by:124
Symbol 124 MovieClip {NPC_Label}Uses:123
Symbol 125 FontUsed by:126 129 136 187 190 193 194 196 204 207 208 209 210 215 218 227 240 246 247 253 254 255 256 257 262 265 280 282 288 291 294
Symbol 126 EditableTextUses:125Used by:127
Symbol 127 MovieClip {CountdownNumber}Uses:126
Symbol 128 GraphicUsed by:131
Symbol 129 TextUses:125Used by:130 131
Symbol 130 MovieClipUses:129Used by:131
Symbol 131 Button {com.sikids.syndicatedGameApiAs3.HighscoreButton}Uses:128 130 129 8Used by:Timeline
Symbol 132 Bitmap {LightningCloudsTex}Used by:251  Timeline
Symbol 133 Bitmap {StarTex}Used by:251  Timeline
Symbol 134 Bitmap {BombTex}Used by:251  Timeline
Symbol 135 GraphicUsed by:138 242
Symbol 136 TextUses:125Used by:137 138
Symbol 137 MovieClipUses:136Used by:138
Symbol 138 Button {com.sikids.syndicatedGameApiAs3.MoreGamesButton}Uses:135 137 136 8Used by:Timeline
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClipUses:139Used by:144
Symbol 141 BitmapUsed by:142
Symbol 142 GraphicUses:141Used by:143
Symbol 143 MovieClip {com.google.analytics.components.Icon}Uses:142Used by:144
Symbol 144 MovieClip {com.google.analytics.components.FlashTracker}Uses:140 143Used by:Timeline
Symbol 145 GraphicUsed by:148
Symbol 146 GraphicUsed by:148
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClip {grMain_m_fla.BgBlock_1}Uses:145 146 147Used by:Timeline
Symbol 149 BitmapUsed by:150
Symbol 150 GraphicUses:149Used by:Timeline
Symbol 151 BitmapUsed by:152
Symbol 152 GraphicUses:151Used by:Timeline
Symbol 153 FontUsed by:154 156 158 159 178
Symbol 154 EditableTextUses:153Used by:Timeline
Symbol 155 GraphicUsed by:157 160
Symbol 156 TextUses:153Used by:157
Symbol 157 MovieClipUses:155 156Used by:Timeline
Symbol 158 EditableTextUses:153Used by:Timeline
Symbol 159 TextUses:153Used by:160
Symbol 160 MovieClipUses:155 159Used by:Timeline
Symbol 161 GraphicUsed by:167
Symbol 162 BitmapUsed by:164
Symbol 163 BitmapUsed by:164
Symbol 164 GraphicUses:162 163Used by:165
Symbol 165 MovieClipUses:164Used by:167 198
Symbol 166 GraphicUsed by:167 183 186 189 192 203 206 290 293 296
Symbol 167 MovieClip {grMain_m_fla.PreAnim_4}Uses:161 165 166Used by:Timeline
Symbol 168 GraphicUsed by:169
Symbol 169 MovieClipUses:168Used by:Timeline
Symbol 170 BitmapUsed by:171 172
Symbol 171 GraphicUses:170Used by:173
Symbol 172 GraphicUses:170Used by:173
Symbol 173 MovieClip {grMain_m_fla.SoundOnOff_Btn_7}Uses:171 172Used by:Timeline
Symbol 174 BitmapUsed by:175
Symbol 175 GraphicUses:174Used by:176 177
Symbol 176 MovieClipUses:175Used by:177
Symbol 177 MovieClip {grMain_m_fla.MusicOnOff_Btn_8}Uses:175 176Used by:Timeline
Symbol 178 TextUses:153Used by:Timeline
Symbol 179 BitmapUsed by:180
Symbol 180 GraphicUses:179Used by:Timeline
Symbol 181 GraphicUsed by:182 202
Symbol 182 MovieClipUses:181Used by:183
Symbol 183 MovieClip {grMain_m_fla.StartGame_10}Uses:166 182Used by:Timeline
Symbol 184 GraphicUsed by:185
Symbol 185 MovieClipUses:184Used by:186
Symbol 186 MovieClip {grMain_m_fla.PracticeBtn_12}Uses:166 185Used by:Timeline
Symbol 187 TextUses:125Used by:188
Symbol 188 MovieClipUses:187Used by:189
Symbol 189 MovieClip {grMain_m_fla.InstructionsBtn_14}Uses:166 188Used by:Timeline
Symbol 190 TextUses:125Used by:191
Symbol 191 MovieClipUses:190Used by:192
Symbol 192 MovieClip {grMain_m_fla.CreditsBtn_16}Uses:166 191Used by:Timeline
Symbol 193 TextUses:125Used by:Timeline
Symbol 194 TextUses:125Used by:195
Symbol 195 MovieClipUses:194Used by:Timeline
Symbol 196 TextUses:125Used by:197
Symbol 197 MovieClipUses:196Used by:Timeline
Symbol 198 MovieClipUses:165Used by:199
Symbol 199 MovieClip {grMain_m_fla.Kill5btn_20}Uses:198Used by:Timeline
Symbol 200 BitmapUsed by:201
Symbol 201 GraphicUses:200Used by:Timeline
Symbol 202 MovieClipUses:181Used by:203
Symbol 203 MovieClip {grMain_m_fla.OkBtn_24}Uses:166 202Used by:Timeline
Symbol 204 TextUses:125Used by:205
Symbol 205 MovieClipUses:204Used by:206
Symbol 206 MovieClip {grMain_m_fla.Backbtn_26}Uses:166 205Used by:Timeline
Symbol 207 TextUses:125Used by:Timeline
Symbol 208 TextUses:125Used by:Timeline
Symbol 209 TextUses:125Used by:Timeline
Symbol 210 TextUses:125Used by:Timeline
Symbol 211 BitmapUsed by:212
Symbol 212 GraphicUses:211Used by:Timeline
Symbol 213 BitmapUsed by:214
Symbol 214 GraphicUses:213Used by:Timeline
Symbol 215 TextUses:125Used by:Timeline
Symbol 216 BitmapUsed by:217
Symbol 217 GraphicUses:216Used by:Timeline
Symbol 218 EditableTextUses:125Used by:Timeline
Symbol 219 GraphicUsed by:220
Symbol 220 MovieClipUses:219Used by:Timeline
Symbol 221 GraphicUsed by:224
Symbol 222 GraphicUsed by:223
Symbol 223 MovieClipUses:222Used by:224
Symbol 224 MovieClipUses:221 223Used by:Timeline
Symbol 225 BitmapUsed by:226
Symbol 226 GraphicUses:225Used by:Timeline
Symbol 227 EditableTextUses:125Used by:Timeline
Symbol 228 BitmapUsed by:229
Symbol 229 GraphicUses:228Used by:230
Symbol 230 MovieClipUses:229Used by:231
Symbol 231 MovieClip {grMain_m_fla.WorldSelectBtn1_31}Uses:230Used by:Timeline
Symbol 232 BitmapUsed by:233
Symbol 233 GraphicUses:232Used by:234
Symbol 234 MovieClipUses:233Used by:235
Symbol 235 MovieClip {grMain_m_fla.WorldSelectBtn3_33}Uses:234Used by:Timeline
Symbol 236 BitmapUsed by:237
Symbol 237 GraphicUses:236Used by:238
Symbol 238 MovieClipUses:237Used by:239
Symbol 239 MovieClip {grMain_m_fla.WorldSelectBtn2_35}Uses:238Used by:Timeline
Symbol 240 EditableTextUses:125Used by:241
Symbol 241 MovieClip {grMain_m_fla.innerBtntx_38}Uses:240Used by:242
Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37}Uses:135 241Used by:Timeline
Symbol 243 BitmapUsed by:244
Symbol 244 GraphicUses:243Used by:Timeline
Symbol 245 MovieClipUsed by:Timeline
Symbol 246 EditableTextUses:125Used by:260
Symbol 247 EditableTextUses:125Used by:260
Symbol 248 BitmapUsed by:249
Symbol 249 GraphicUses:248Used by:250
Symbol 250 MovieClipUses:249Used by:252 283
Symbol 251 MovieClipUses:133 132 134Used by:252
Symbol 252 MovieClip {grMain_m_fla.PowerUpSelector_41}Uses:250 251Used by:260
Symbol 253 EditableTextUses:125Used by:260
Symbol 254 EditableTextUses:125Used by:260
Symbol 255 EditableTextUses:125Used by:260
Symbol 256 EditableTextUses:125Used by:260
Symbol 257 EditableTextUses:125Used by:260
Symbol 258 FontUsed by:259 281
Symbol 259 TextUses:258Used by:260
Symbol 260 MovieClip {grMain_m_fla.inGameUi_40}Uses:246 247 252 253 254 255 256 257 259Used by:Timeline
Symbol 261 GraphicUsed by:264 267
Symbol 262 TextUses:125Used by:263
Symbol 263 MovieClipUses:262Used by:264
Symbol 264 MovieClip {grMain_m_fla.SkipBtn_44}Uses:261 263Used by:Timeline
Symbol 265 TextUses:125Used by:266
Symbol 266 MovieClipUses:265Used by:267
Symbol 267 MovieClip {grMain_m_fla.RestartBtn_46}Uses:261 266Used by:Timeline
Symbol 268 BitmapUsed by:269
Symbol 269 GraphicUses:268Used by:270
Symbol 270 MovieClipUses:269Used by:Timeline
Symbol 271 BitmapUsed by:272
Symbol 272 GraphicUses:271Used by:279
Symbol 273 BitmapUsed by:274
Symbol 274 GraphicUses:273Used by:279
Symbol 275 BitmapUsed by:276
Symbol 276 GraphicUses:275Used by:279
Symbol 277 BitmapUsed by:278
Symbol 278 GraphicUses:277Used by:279
Symbol 279 MovieClip {grMain_m_fla.Portraits_51}Uses:272 274 276 278Used by:283
Symbol 280 EditableTextUses:125Used by:283
Symbol 281 EditableTextUses:258Used by:283
Symbol 282 EditableTextUses:125Used by:283
Symbol 283 MovieClip {grMain_m_fla.Profiles_50}Uses:250 279 280 281 282Used by:286
Symbol 284 BitmapUsed by:285
Symbol 285 GraphicUses:284Used by:286
Symbol 286 MovieClip {grMain_m_fla.Results_49}Uses:283 285Used by:Timeline
Symbol 287 GraphicUsed by:Timeline
Symbol 288 TextUses:125Used by:289
Symbol 289 MovieClipUses:288Used by:290
Symbol 290 MovieClip {grMain_m_fla.Replaybtn_52}Uses:166 289Used by:Timeline
Symbol 291 TextUses:125Used by:292
Symbol 292 MovieClipUses:291Used by:293
Symbol 293 MovieClip {grMain_m_fla.NextTrackBtn_54}Uses:166 292Used by:Timeline
Symbol 294 TextUses:125Used by:295
Symbol 295 MovieClipUses:294Used by:296
Symbol 296 MovieClip {grMain_m_fla.MenuBtn_56}Uses:166 295Used by:Timeline
Streaming Sound 1Used by:Symbol 79 MovieClip {com.sikids.syndicatedGameApiAs3.Preroll}

Instance Names

"tracker"Frame 1Symbol 144 MovieClip {com.google.analytics.components.FlashTracker}
"bgColor"Frame 7Symbol 148 MovieClip {grMain_m_fla.BgBlock_1}
"output"Frame 7Symbol 154 EditableText
"editModeBtn"Frame 7Symbol 157 MovieClip
"outputTx"Frame 7Symbol 158 EditableText
"outputBtn"Frame 7Symbol 160 MovieClip
"loaderBar"Frame 8Symbol 169 MovieClip
"soundBtn"Frame 13Symbol 173 MovieClip {grMain_m_fla.SoundOnOff_Btn_7}
"musicBtn"Frame 13Symbol 177 MovieClip {grMain_m_fla.MusicOnOff_Btn_8}
"startBtn"Frame 31Symbol 183 MovieClip {grMain_m_fla.StartGame_10}
"practiceBtn"Frame 31Symbol 186 MovieClip {grMain_m_fla.PracticeBtn_12}
"instructionsBtn"Frame 31Symbol 189 MovieClip {grMain_m_fla.InstructionsBtn_14}
"creditsBtn"Frame 31Symbol 192 MovieClip {grMain_m_fla.CreditsBtn_16}
"hiBtn"Frame 31Symbol 195 MovieClip
"lowBtn"Frame 31Symbol 197 MovieClip
"kill5LogoBtn"Frame 31Symbol 199 MovieClip {grMain_m_fla.Kill5btn_20}
"btnMoreGames"Frame 31Symbol 138 Button {com.sikids.syndicatedGameApiAs3.MoreGamesButton}
"startBtn"Frame 37Symbol 203 MovieClip {grMain_m_fla.OkBtn_24}
"backBtn"Frame 37Symbol 206 MovieClip {grMain_m_fla.Backbtn_26}
"hiBtn"Frame 47Symbol 195 MovieClip
"lowBtn"Frame 47Symbol 197 MovieClip
"startBtn"Frame 54Symbol 203 MovieClip {grMain_m_fla.OkBtn_24}
"backBtn"Frame 54Symbol 206 MovieClip {grMain_m_fla.Backbtn_26}
"screenNameTx"Frame 60Symbol 218 EditableText
"leftArrowBtn"Frame 60Symbol 224 MovieClip
"rightArrowBtn"Frame 60Symbol 224 MovieClip
"descriptionTx"Frame 72Symbol 227 EditableText
"world1SelectBtn"Frame 72Symbol 231 MovieClip {grMain_m_fla.WorldSelectBtn1_31}
"world2SelectBtn"Frame 72Symbol 235 MovieClip {grMain_m_fla.WorldSelectBtn3_33}
"world3SelectBtn"Frame 72Symbol 239 MovieClip {grMain_m_fla.WorldSelectBtn2_35}
"backWorldBtn"Frame 72Symbol 206 MovieClip {grMain_m_fla.Backbtn_26}
"level1Btn"Frame 82Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37}
"level2Btn"Frame 82Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37}
"level3Btn"Frame 82Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37}
"backBtn"Frame 82Symbol 206 MovieClip {grMain_m_fla.Backbtn_26}
"gameHolder"Frame 100Symbol 245 MovieClip
"onTop"Frame 100Symbol 245 MovieClip
"inGameUi"Frame 100Symbol 260 MovieClip {grMain_m_fla.inGameUi_40}
"skipBtn"Frame 100Symbol 264 MovieClip {grMain_m_fla.SkipBtn_44}
"endBtn"Frame 100Symbol 267 MovieClip {grMain_m_fla.RestartBtn_46}
"lightningBlast"Frame 100Symbol 270 MovieClip
"results"Frame 109Symbol 286 MovieClip {grMain_m_fla.Results_49}
"replayBtn"Frame 117Symbol 290 MovieClip {grMain_m_fla.Replaybtn_52}
"nextBtn"Frame 117Symbol 293 MovieClip {grMain_m_fla.NextTrackBtn_54}
"returnToMenuBtn"Frame 117Symbol 296 MovieClip {grMain_m_fla.MenuBtn_56}
"btnSubmitHighScore"Frame 117Symbol 131 Button {com.sikids.syndicatedGameApiAs3.HighscoreButton}
"btnMoreGames"Frame 117Symbol 138 Button {com.sikids.syndicatedGameApiAs3.MoreGamesButton}
"btnCover"Symbol 79 MovieClip {com.sikids.syndicatedGameApiAs3.Preroll} Frame 1Symbol 54 Button
"usernameText"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 1Symbol 89 EditableText
"scoreText"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 1Symbol 90 EditableText
"cancelButton"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 1Symbol 98 Button
"submitButton"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 1Symbol 105 Button
"okButton"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 23Symbol 117 Button
"screenNameTx"Symbol 124 MovieClip {NPC_Label} Frame 1Symbol 123 EditableText
"numberTx"Symbol 127 MovieClip {CountdownNumber} Frame 1Symbol 126 EditableText
"boundingBox_mc"Symbol 144 MovieClip {com.google.analytics.components.FlashTracker} Frame 1Symbol 140 MovieClip
"inner"Symbol 177 MovieClip {grMain_m_fla.MusicOnOff_Btn_8} Frame 10Symbol 176 MovieClip
"tx"Symbol 241 MovieClip {grMain_m_fla.innerBtntx_38} Frame 1Symbol 240 EditableText
"inner"Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37} Frame 1Symbol 241 MovieClip {grMain_m_fla.innerBtntx_38}
"icons"Symbol 252 MovieClip {grMain_m_fla.PowerUpSelector_41} Frame 1Symbol 251 MovieClip
"timer0Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 246 EditableText
"lapTx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 247 EditableText
"powerUpSelector"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 252 MovieClip {grMain_m_fla.PowerUpSelector_41}
"timer1Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 253 EditableText
"timer3Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 254 EditableText
"timer4Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 255 EditableText
"timer6Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 256 EditableText
"timer7Tx"Symbol 260 MovieClip {grMain_m_fla.inGameUi_40} Frame 1Symbol 257 EditableText
"portrait"Symbol 283 MovieClip {grMain_m_fla.Profiles_50} Frame 1Symbol 279 MovieClip {grMain_m_fla.Portraits_51}
"screenNameTx"Symbol 283 MovieClip {grMain_m_fla.Profiles_50} Frame 1Symbol 280 EditableText
"timeTx"Symbol 283 MovieClip {grMain_m_fla.Profiles_50} Frame 1Symbol 281 EditableText
"rankTx"Symbol 283 MovieClip {grMain_m_fla.Profiles_50} Frame 1Symbol 282 EditableText
"profile2"Symbol 286 MovieClip {grMain_m_fla.Results_49} Frame 1Symbol 283 MovieClip {grMain_m_fla.Profiles_50}
"profile1"Symbol 286 MovieClip {grMain_m_fla.Results_49} Frame 1Symbol 283 MovieClip {grMain_m_fla.Profiles_50}
"profile3"Symbol 286 MovieClip {grMain_m_fla.Results_49} Frame 1Symbol 283 MovieClip {grMain_m_fla.Profiles_50}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.

Labels

"models"Frame 1
"pre"Frame 8
"loaded"Frame 13
"menu"Frame 31
"instructions"Frame 37
"credits"Frame 54
"characterSelect"Frame 60
"worldSelect"Frame 72
"levelSelect"Frame 82
"game"Frame 100
"results"Frame 109
"raceOverOptions"Frame 117
"hiscores"Frame 126
"DONE"Symbol 79 MovieClip {com.sikids.syndicatedGameApiAs3.Preroll} Frame 150
"START"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 1
"SUBMIT"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 11
"USERNAME_ERROR"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 12
"SENDING"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 13
"SENT"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 23
"VANISH_ANIM"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 71
"FINISHED"Symbol 118 MovieClip {com.sikids.syndicatedGameApiAs3.HighscoreDialogBox} Frame 86
"on"Symbol 173 MovieClip {grMain_m_fla.SoundOnOff_Btn_7} Frame 1
"off"Symbol 173 MovieClip {grMain_m_fla.SoundOnOff_Btn_7} Frame 10
"on"Symbol 177 MovieClip {grMain_m_fla.MusicOnOff_Btn_8} Frame 2
"off"Symbol 177 MovieClip {grMain_m_fla.MusicOnOff_Btn_8} Frame 10
"out"Symbol 183 MovieClip {grMain_m_fla.StartGame_10} Frame 2
"over"Symbol 183 MovieClip {grMain_m_fla.StartGame_10} Frame 10
"out"Symbol 186 MovieClip {grMain_m_fla.PracticeBtn_12} Frame 2
"over"Symbol 186 MovieClip {grMain_m_fla.PracticeBtn_12} Frame 10
"out"Symbol 189 MovieClip {grMain_m_fla.InstructionsBtn_14} Frame 2
"over"Symbol 189 MovieClip {grMain_m_fla.InstructionsBtn_14} Frame 10
"out"Symbol 192 MovieClip {grMain_m_fla.CreditsBtn_16} Frame 2
"over"Symbol 192 MovieClip {grMain_m_fla.CreditsBtn_16} Frame 10
"out"Symbol 199 MovieClip {grMain_m_fla.Kill5btn_20} Frame 1
"over"Symbol 199 MovieClip {grMain_m_fla.Kill5btn_20} Frame 10
"out"Symbol 203 MovieClip {grMain_m_fla.OkBtn_24} Frame 2
"over"Symbol 203 MovieClip {grMain_m_fla.OkBtn_24} Frame 10
"out"Symbol 206 MovieClip {grMain_m_fla.Backbtn_26} Frame 2
"over"Symbol 206 MovieClip {grMain_m_fla.Backbtn_26} Frame 10
"out"Symbol 231 MovieClip {grMain_m_fla.WorldSelectBtn1_31} Frame 1
"over"Symbol 231 MovieClip {grMain_m_fla.WorldSelectBtn1_31} Frame 10
"out"Symbol 235 MovieClip {grMain_m_fla.WorldSelectBtn3_33} Frame 1
"over"Symbol 235 MovieClip {grMain_m_fla.WorldSelectBtn3_33} Frame 10
"out"Symbol 239 MovieClip {grMain_m_fla.WorldSelectBtn2_35} Frame 1
"over"Symbol 239 MovieClip {grMain_m_fla.WorldSelectBtn2_35} Frame 10
"out"Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37} Frame 1
"over"Symbol 242 MovieClip {grMain_m_fla.LevelSelect1Btn_37} Frame 10
"out"Symbol 264 MovieClip {grMain_m_fla.SkipBtn_44} Frame 2
"over"Symbol 264 MovieClip {grMain_m_fla.SkipBtn_44} Frame 10
"out"Symbol 267 MovieClip {grMain_m_fla.RestartBtn_46} Frame 2
"over"Symbol 267 MovieClip {grMain_m_fla.RestartBtn_46} Frame 10
"count"Symbol 279 MovieClip {grMain_m_fla.Portraits_51} Frame 1
"franky"Symbol 279 MovieClip {grMain_m_fla.Portraits_51} Frame 13
"professor"Symbol 279 MovieClip {grMain_m_fla.Portraits_51} Frame 23
"mummy"Symbol 279 MovieClip {grMain_m_fla.Portraits_51} Frame 35
"out"Symbol 290 MovieClip {grMain_m_fla.Replaybtn_52} Frame 2
"over"Symbol 290 MovieClip {grMain_m_fla.Replaybtn_52} Frame 10
"out"Symbol 293 MovieClip {grMain_m_fla.NextTrackBtn_54} Frame 2
"over"Symbol 293 MovieClip {grMain_m_fla.NextTrackBtn_54} Frame 10
"out"Symbol 296 MovieClip {grMain_m_fla.MenuBtn_56} Frame 2
"over"Symbol 296 MovieClip {grMain_m_fla.MenuBtn_56} Frame 10




http://swfchan.com/22/108032/info.shtml
Created: 15/3 -2019 22:56:31 Last modified: 15/3 -2019 22:56:31 Server time: 11/05 -2024 23:40:44