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

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

Xtreme Motor.swf

This is the info page for
Flash #63254

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


Text
function waiting (evt:Event):void {
if (intro.currentFrame==intro.totalFrames) {
removeEventListener("enterFrame", waiting);
nextFrame();
}
}

CODE:

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

I need more
photos!

FTW

Oh my god I can't

1

PAUSED

Skip Level

Quality is HIGH

Back to Menu

Reset Level

This is were the tutorial thing goes and we can read it

Continue

is loading...

v1.01P

PLEASE VISIT OUR SPONSOR

not

DOPPLER

not

DOPPLER

New Game

Select Level

Instructions

Back To Menu

Levels

Level Editor

Credits

Developed by:
James Prankard

Special Thanks:
My Family
Kim Farmer
ShinKi

Musician:
Fixd Music

Sponsored by:

Beta Testers:
Scuzzfest
Simon Cooper
Lauren Warner

Female Voice:
Cerise Panda

Instructions

LEFT and RIGHT arrow keys
to lean back and forth

UP and DOWN arrow keys
to accelerate and brake

SPACE to change direction

LEAN BACK to get up steep hills

YOU'RE EPIC!

Little Present?

Game Complete

YOU'RE EPIC!

Add this game to your site!

Add this game to your site!

Credits

More Games

-ads included
-less levels
-sponsor branded
-free

-your branding
-more levels
-links to your site
-no ads
-no sponsor branding
-small fee

h

g

u

o

r

t

y

b

download on

L

G

F

e

m

t

c

a

n

o

Bonus Version

Ad version

REMINDER: MUST SET ANGULAR DAMPENING FOR BOX2D WHEELS

2

00:47:12:00

<p align="left"><font face="Rockwell Extra Bold" size="20" color="#000000" letterSpacing="0.000000" kerning="1"><b>Mini-Loop</b></font></p>

I wish you were

I wish you were

YOUR PHOTOS

More Games

Menu

Continue

Retry

Congratulations

You've won a Bronze Medal

<p align="left"><font face="Tandelle" size="36" color="#ffffff" letterSpacing="5.000000" kerning="0">03:00:00</font></p>

00:00:00

00:00:00

s

e

go

hold space to move grid

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ 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; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//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
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; 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; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; 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:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; 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:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int; public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.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.*; import Box2D.Common.Math.*; 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.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.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[int((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{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).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:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.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.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.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:b2Bound; var _local22:int; var _local23: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[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _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[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.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:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.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.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.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:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.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.Common.Math.*; import Box2D.Collision.Shapes.*; 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:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } 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.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _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:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); _local35 = 0; _local36 = 0; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; 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; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); _local10 = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; 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:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; _local19 = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//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._referenceEdge = (_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.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var friction:Number; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Collision.Shapes.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; 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; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; _local37 = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int; var _local8:int; _local7 = _arg3.m_type; _local8 = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.*; import Box2D.Common.Math.*; public class b2Manifold { public var points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//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 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; 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 = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; 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 22
//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 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.*; import Box2D.Common.Math.*; 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[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint; _local5 = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_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:b2BufferedPair; var _local2:int; var _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.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:b2BufferedPair; var _local4:b2Pair; _local4 = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.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 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//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 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local5:b2Vec2; 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; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Collision.Shapes.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):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:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//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 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } 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 referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 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 30
//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 GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } 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 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); 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 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 b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } 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 b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } 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 MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _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 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 b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } 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 b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); 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 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//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 LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } 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 CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(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 = Math.sqrt(((x * x) + (y * y))); 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 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var R:b2Mat22; public var position:b2Vec2; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!(_arg1)){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } 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 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; 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 IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):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_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 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]; _local6 = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _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:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local10.normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:int; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; 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:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; _local9 = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; 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:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local20.normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } 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:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * 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:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local19:int; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; 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:int; var _local38:Number; _local19 = 0; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; 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 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } 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 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//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_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma: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); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; 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; if (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; 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; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); _local10 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; 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; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//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_force: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:int; var _local3:int; var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); _local2 = _arg1.joint1.m_type; _local3 = _arg1.joint2.m_type; 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 (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } 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_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } 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; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//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 52
//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 53
//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_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; 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 b2JointEdge(); m_node2 = new b2JointEdge(); 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 InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():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 54
//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 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Dynamics.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; 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:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_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; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); 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_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ 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; var _local15:Number; var _local16:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _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 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//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 58
//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_limitForce:Number; public var m_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; 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); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } 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; var _local32: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_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local28 = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= 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:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_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; 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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } 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; var _local18:Number; var _local19: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 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//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_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4: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.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } 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; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.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)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _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_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.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); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.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); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_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; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; _local20 = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); 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); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); 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; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//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_limitForce:Number; public var m_motorForce:Number; public var m_pivotMass:b2Mat22; public var m_enableLimit:Boolean; public var m_limitState:int; 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_pivotForce:b2Vec2; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } 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; var _local26:Number; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local22 = tImpulse.x; _local23 = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local24 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= 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 SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } override public function InitVelocityConstraints(_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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } 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; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); _local15 = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _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 * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_xf:b2XForm; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_type:int; public var m_linearDamping:Number; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_shapeCount:int; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:b2Mat22; var _local4:b2Vec2; m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SynchronizeTransform():void{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SetMassFromShapes():void{ var _local1:b2Shape; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); _local5 = m_xf.R; _local6 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; _local7 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function GetJointList():b2JointEdge{ return (m_jointList); } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); _local4 = m_xf.R; _local5 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); _local6 = false; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); _local5 = true; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; _local5 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge; _local2 = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function DestroyShape(_arg1:b2Shape):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _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_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _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; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape1; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; 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; }; _local5 = _local2.m_body; _local6 = _local3.m_body; 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 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; 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 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.Math.*; import Box2D.Common.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_lineThickness:Number;// = 1 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawScale = 1; m_lineThickness = 1; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Dynamics.Contacts.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Collision.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies: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; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } 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 Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; _local6.m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } 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 SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Common.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; 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; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local5:b2Color; var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; _local5 = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Island; var _local9:int; var _local10:Array; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } 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.RefilterProxy(m_broadPhase, _local3.m_xf); _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.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; if (m_lock == true){ return (null); }; _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 SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2TimeStep; m_lock = true; _local3 = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//AuxFunctions (caurina.transitions.AuxFunctions) package caurina.transitions { public class AuxFunctions { public static function concatObjects(... _args):Object{ var _local2:Object; var _local3:Object; var _local4:int; var _local5:String; _local2 = {}; _local4 = 0; while (_local4 < _args.length) { _local3 = _args[_local4]; for (_local5 in _local3) { if (_local3[_local5] == null){ delete _local2[_local5]; } else { _local2[_local5] = _local3[_local5]; }; }; _local4++; }; return (_local2); } public static function numberToG(_arg1:Number):Number{ return (((_arg1 & 0xFF00) >> 8)); } public static function numberToR(_arg1:Number):Number{ return (((_arg1 & 0xFF0000) >> 16)); } public static function isInArray(_arg1:String, _arg2:Array):Boolean{ var _local3:uint; var _local4:uint; _local3 = _arg2.length; _local4 = 0; while (_local4 < _local3) { if (_arg2[_local4] == _arg1){ return (true); }; _local4++; }; return (false); } public static function getObjectLength(_arg1:Object):uint{ var _local2:uint; var _local3:String; _local2 = 0; for (_local3 in _arg1) { _local2++; }; return (_local2); } public static function numberToB(_arg1:Number):Number{ return ((_arg1 & 0xFF)); } } }//package caurina.transitions
Section 76
//Equations (caurina.transitions.Equations) package caurina.transitions { public class Equations { public function Equations(){ trace("Equations is a static class and should not be instantiated."); } public static function easeOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); if (_arg1 < (1 / 2.75)){ return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2)); }; if (_arg1 < (2 / 2.75)){ _arg1 = (_arg1 - (1.5 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2)); }; if (_arg1 < (2.5 / 2.75)){ _arg1 = (_arg1 - (2.25 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2)); }; _arg1 = (_arg1 - (2.625 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2)); } public static function easeInOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN, _arg6:Number=NaN):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 == 2){ return ((_arg2 + _arg3)); }; if (!(_arg6)){ _arg6 = (_arg4 * (0.3 * 1.5)); }; if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5))); }; if (_arg1 < 1){ _arg1 = (_arg1 - 1); return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2)); }; _arg1 = (_arg1 - 1); return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) * 0.5) + _arg3) + _arg2)); } public static function easeInOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } public static function easeInOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (((easeInBounce((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2)); }; return ((((easeOutBounce(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2)); } public static function easeInOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN):Number{ if (!(_arg5)){ _arg5 = 1.70158; }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } public static function easeOutInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutCubic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInCubic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN):Number{ if (!(_arg5)){ _arg5 = 1.70158; }; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeInOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2)); } public static function easeInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN):Number{ if (!(_arg5)){ _arg5 = 1.70158; }; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeOutInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuint((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInQuint(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeOutInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutBounce((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInBounce(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function init():void{ Tweener.registerTransition("easenone", easeNone); Tweener.registerTransition("linear", easeNone); Tweener.registerTransition("easeinquad", easeInQuad); Tweener.registerTransition("easeoutquad", easeOutQuad); Tweener.registerTransition("easeinoutquad", easeInOutQuad); Tweener.registerTransition("easeoutinquad", easeOutInQuad); Tweener.registerTransition("easeincubic", easeInCubic); Tweener.registerTransition("easeoutcubic", easeOutCubic); Tweener.registerTransition("easeinoutcubic", easeInOutCubic); Tweener.registerTransition("easeoutincubic", easeOutInCubic); Tweener.registerTransition("easeinquart", easeInQuart); Tweener.registerTransition("easeoutquart", easeOutQuart); Tweener.registerTransition("easeinoutquart", easeInOutQuart); Tweener.registerTransition("easeoutinquart", easeOutInQuart); Tweener.registerTransition("easeinquint", easeInQuint); Tweener.registerTransition("easeoutquint", easeOutQuint); Tweener.registerTransition("easeinoutquint", easeInOutQuint); Tweener.registerTransition("easeoutinquint", easeOutInQuint); Tweener.registerTransition("easeinsine", easeInSine); Tweener.registerTransition("easeoutsine", easeOutSine); Tweener.registerTransition("easeinoutsine", easeInOutSine); Tweener.registerTransition("easeoutinsine", easeOutInSine); Tweener.registerTransition("easeincirc", easeInCirc); Tweener.registerTransition("easeoutcirc", easeOutCirc); Tweener.registerTransition("easeinoutcirc", easeInOutCirc); Tweener.registerTransition("easeoutincirc", easeOutInCirc); Tweener.registerTransition("easeinexpo", easeInExpo); Tweener.registerTransition("easeoutexpo", easeOutExpo); Tweener.registerTransition("easeinoutexpo", easeInOutExpo); Tweener.registerTransition("easeoutinexpo", easeOutInExpo); Tweener.registerTransition("easeinelastic", easeInElastic); Tweener.registerTransition("easeoutelastic", easeOutElastic); Tweener.registerTransition("easeinoutelastic", easeInOutElastic); Tweener.registerTransition("easeoutinelastic", easeOutInElastic); Tweener.registerTransition("easeinback", easeInBack); Tweener.registerTransition("easeoutback", easeOutBack); Tweener.registerTransition("easeinoutback", easeInOutBack); Tweener.registerTransition("easeoutinback", easeOutInBack); Tweener.registerTransition("easeinbounce", easeInBounce); Tweener.registerTransition("easeoutbounce", easeOutBounce); Tweener.registerTransition("easeinoutbounce", easeInOutBounce); Tweener.registerTransition("easeoutinbounce", easeOutInBounce); } public static function easeOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==_arg4) ? (_arg2 + _arg3) : (((_arg3 * 1.001) * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2)); } public static function easeOutInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutBack((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInBack(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==0) ? _arg2 : (((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2) - (_arg3 * 0.001))); } public static function easeInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2)); } public static function easeInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg3 - easeOutBounce((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2)); } public static function easeOutInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutExpo((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInExpo(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2)); } public static function easeInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2)); } public static function easeInOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2)); } public static function easeOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeOutInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN, _arg6:Number=NaN):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutElastic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5, _arg6)); }; return (easeInElastic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5, _arg6)); } public static function easeInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN, _arg6:Number=NaN):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!(_arg6)){ _arg6 = (_arg4 * 0.3); }; if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5))); }; _arg1 = (_arg1 - 1); return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2)); } public static function easeOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeOutInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuad((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInQuad(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2)); } public static function easeInOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2)); } public static function easeInOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } public static function easeInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2)); } public static function easeOutInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutSine((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInSine(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeInOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 == 0){ return (_arg2); }; if (_arg1 == _arg4){ return ((_arg2 + _arg3)); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2) - (_arg3 * 0.0005))); }; --_arg1; return (((((_arg3 / 2) * 1.0005) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2)); } public static function easeOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=NaN, _arg6:Number=NaN):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!(_arg6)){ _arg6 = (_arg4 * 0.3); }; if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5))); }; return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) + _arg3) + _arg2)); } public static function easeOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2)); } public static function easeOutInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuart((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInQuart(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } public static function easeOutInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutCirc((_arg1 * 2), _arg2, (_arg3 / 2), _arg4)); }; return (easeInCirc(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4)); } } }//package caurina.transitions
Section 77
//PropertyInfoObj (caurina.transitions.PropertyInfoObj) package caurina.transitions { public class PropertyInfoObj { public var modifierParameters:Array; public var valueComplete:Number; public var modifierFunction:Function; public var hasModifier:Boolean; public var valueStart:Number; public function PropertyInfoObj(_arg1:Number, _arg2:Number, _arg3:Function, _arg4:Array){ valueStart = _arg1; valueComplete = _arg2; hasModifier = Boolean(_arg3); modifierFunction = _arg3; modifierParameters = _arg4; } public function toString():String{ var _local1:String; _local1 = "\n[PropertyInfoObj "; _local1 = (_local1 + ("valueStart:" + String(valueStart))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("valueComplete:" + String(valueComplete))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("modifierFunction:" + String(modifierFunction))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("modifierParameters:" + String(modifierParameters))); _local1 = (_local1 + "]\n"); return (_local1); } public function clone():PropertyInfoObj{ var _local1:PropertyInfoObj; _local1 = new PropertyInfoObj(valueStart, valueComplete, modifierFunction, modifierParameters); return (_local1); } } }//package caurina.transitions
Section 78
//SpecialPropertiesDefault (caurina.transitions.SpecialPropertiesDefault) package caurina.transitions { import flash.filters.*; import flash.media.*; import flash.geom.*; public class SpecialPropertiesDefault { public function SpecialPropertiesDefault(){ trace("SpecialProperties is a static class and should not be instantiated."); } public static function _sound_volume_get(_arg1:Object):Number{ return (_arg1.soundTransform.volume); } public static function _color_splitter(_arg1, _arg2:Array):Array{ var _local3:Array; _local3 = new Array(); if (_arg1 == null){ _local3.push({name:"_color_ra", value:1}); _local3.push({name:"_color_rb", value:0}); _local3.push({name:"_color_ga", value:1}); _local3.push({name:"_color_gb", value:0}); _local3.push({name:"_color_ba", value:1}); _local3.push({name:"_color_bb", value:0}); } else { _local3.push({name:"_color_ra", value:0}); _local3.push({name:"_color_rb", value:AuxFunctions.numberToR(_arg1)}); _local3.push({name:"_color_ga", value:0}); _local3.push({name:"_color_gb", value:AuxFunctions.numberToG(_arg1)}); _local3.push({name:"_color_ba", value:0}); _local3.push({name:"_color_bb", value:AuxFunctions.numberToB(_arg1)}); }; return (_local3); } public static function frame_get(_arg1:Object):Number{ return (_arg1.currentFrame); } public static function _sound_pan_get(_arg1:Object):Number{ return (_arg1.soundTransform.pan); } public static function _color_property_get(_arg1:Object, _arg2:Array):Number{ return (_arg1.transform.colorTransform[_arg2[0]]); } public static function _sound_volume_set(_arg1:Object, _arg2:Number):void{ var _local3:SoundTransform; _local3 = _arg1.soundTransform; _local3.volume = _arg2; _arg1.soundTransform = _local3; } public static function _autoAlpha_get(_arg1:Object):Number{ return (_arg1.alpha); } public static function _filter_splitter(_arg1:BitmapFilter, _arg2:Array):Array{ var _local3:Array; _local3 = new Array(); if ((_arg1 is BlurFilter)){ _local3.push({name:"_blur_blurX", value:BlurFilter(_arg1).blurX}); _local3.push({name:"_blur_blurY", value:BlurFilter(_arg1).blurY}); _local3.push({name:"_blur_quality", value:BlurFilter(_arg1).quality}); } else { trace("??"); }; return (_local3); } public static function init():void{ Tweener.registerSpecialProperty("_frame", frame_get, frame_set); Tweener.registerSpecialProperty("_sound_volume", _sound_volume_get, _sound_volume_set); Tweener.registerSpecialProperty("_sound_pan", _sound_pan_get, _sound_pan_set); Tweener.registerSpecialProperty("_color_ra", _color_property_get, _color_property_set, ["redMultiplier"]); Tweener.registerSpecialProperty("_color_rb", _color_property_get, _color_property_set, ["redOffset"]); Tweener.registerSpecialProperty("_color_ga", _color_property_get, _color_property_set, ["greenMultiplier"]); Tweener.registerSpecialProperty("_color_gb", _color_property_get, _color_property_set, ["greenOffset"]); Tweener.registerSpecialProperty("_color_ba", _color_property_get, _color_property_set, ["blueMultiplier"]); Tweener.registerSpecialProperty("_color_bb", _color_property_get, _color_property_set, ["blueOffset"]); Tweener.registerSpecialProperty("_color_aa", _color_property_get, _color_property_set, ["alphaMultiplier"]); Tweener.registerSpecialProperty("_color_ab", _color_property_get, _color_property_set, ["alphaOffset"]); Tweener.registerSpecialProperty("_autoAlpha", _autoAlpha_get, _autoAlpha_set); Tweener.registerSpecialPropertySplitter("_color", _color_splitter); Tweener.registerSpecialPropertySplitter("_colorTransform", _colorTransform_splitter); Tweener.registerSpecialPropertySplitter("_scale", _scale_splitter); Tweener.registerSpecialProperty("_blur_blurX", _filter_property_get, _filter_property_set, [BlurFilter, "blurX"]); Tweener.registerSpecialProperty("_blur_blurY", _filter_property_get, _filter_property_set, [BlurFilter, "blurY"]); Tweener.registerSpecialProperty("_blur_quality", _filter_property_get, _filter_property_set, [BlurFilter, "quality"]); Tweener.registerSpecialPropertySplitter("_filter", _filter_splitter); Tweener.registerSpecialPropertyModifier("_bezier", _bezier_modifier, _bezier_get); } public static function _sound_pan_set(_arg1:Object, _arg2:Number):void{ var _local3:SoundTransform; _local3 = _arg1.soundTransform; _local3.pan = _arg2; _arg1.soundTransform = _local3; } public static function _color_property_set(_arg1:Object, _arg2:Number, _arg3:Array):void{ var _local4:ColorTransform; _local4 = _arg1.transform.colorTransform; _local4[_arg3[0]] = _arg2; _arg1.transform.colorTransform = _local4; } public static function _filter_property_get(_arg1:Object, _arg2:Array):Number{ var _local3:Array; var _local4:uint; var _local5:Object; var _local6:String; var _local7:Object; _local3 = _arg1.filters; _local5 = _arg2[0]; _local6 = _arg2[1]; _local4 = 0; while (_local4 < _local3.length) { if ((((_local3[_local4] is BlurFilter)) && ((_local5 == BlurFilter)))){ return (_local3[_local4][_local6]); }; _local4++; }; switch (_local5){ case BlurFilter: _local7 = {blurX:0, blurY:0, quality:NaN}; break; }; return (_local7[_local6]); } public static function _bezier_get(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Array):Number{ var _local5:uint; var _local6:Number; var _local7:Number; var _local8:Number; if (_arg4.length == 1){ return ((_arg1 + (_arg3 * (((2 * (1 - _arg3)) * (_arg4[0] - _arg1)) + (_arg3 * (_arg2 - _arg1)))))); }; _local5 = Math.floor((_arg3 * _arg4.length)); _local6 = ((_arg3 - (_local5 * (1 / _arg4.length))) * _arg4.length); if (_local5 == 0){ _local7 = _arg1; _local8 = ((_arg4[0] + _arg4[1]) / 2); } else { if (_local5 == (_arg4.length - 1)){ _local7 = ((_arg4[(_local5 - 1)] + _arg4[_local5]) / 2); _local8 = _arg2; } else { _local7 = ((_arg4[(_local5 - 1)] + _arg4[_local5]) / 2); _local8 = ((_arg4[_local5] + _arg4[(_local5 + 1)]) / 2); }; }; return ((_local7 + (_local6 * (((2 * (1 - _local6)) * (_arg4[_local5] - _local7)) + (_local6 * (_local8 - _local7)))))); } public static function frame_set(_arg1:Object, _arg2:Number):void{ _arg1.gotoAndStop(Math.round(_arg2)); } public static function _filter_property_set(_arg1:Object, _arg2:Number, _arg3:Array):void{ var _local4:Array; var _local5:uint; var _local6:Object; var _local7:String; var _local8:BitmapFilter; _local4 = _arg1.filters; _local6 = _arg3[0]; _local7 = _arg3[1]; _local5 = 0; while (_local5 < _local4.length) { if ((((_local4[_local5] is BlurFilter)) && ((_local6 == BlurFilter)))){ _local4[_local5][_local7] = _arg2; _arg1.filters = _local4; return; }; _local5++; }; if (_local4 == null){ _local4 = new Array(); }; switch (_local6){ case BlurFilter: _local8 = new BlurFilter(0, 0); break; }; _local8[_local7] = _arg2; _local4.push(_local8); _arg1.filters = _local4; } public static function _autoAlpha_set(_arg1:Object, _arg2:Number):void{ _arg1.alpha = _arg2; _arg1.visible = (_arg2 > 0); } public static function _scale_splitter(_arg1:Number, _arg2:Array):Array{ var _local3:Array; _local3 = new Array(); _local3.push({name:"scaleX", value:_arg1}); _local3.push({name:"scaleY", value:_arg1}); return (_local3); } public static function _colorTransform_splitter(_arg1, _arg2:Array):Array{ var _local3:Array; _local3 = new Array(); if (_arg1 == null){ _local3.push({name:"_color_ra", value:1}); _local3.push({name:"_color_rb", value:0}); _local3.push({name:"_color_ga", value:1}); _local3.push({name:"_color_gb", value:0}); _local3.push({name:"_color_ba", value:1}); _local3.push({name:"_color_bb", value:0}); } else { if (_arg1.ra != undefined){ _local3.push({name:"_color_ra", value:_arg1.ra}); }; if (_arg1.rb != undefined){ _local3.push({name:"_color_rb", value:_arg1.rb}); }; if (_arg1.ga != undefined){ _local3.push({name:"_color_ba", value:_arg1.ba}); }; if (_arg1.gb != undefined){ _local3.push({name:"_color_bb", value:_arg1.bb}); }; if (_arg1.ba != undefined){ _local3.push({name:"_color_ga", value:_arg1.ga}); }; if (_arg1.bb != undefined){ _local3.push({name:"_color_gb", value:_arg1.gb}); }; if (_arg1.aa != undefined){ _local3.push({name:"_color_aa", value:_arg1.aa}); }; if (_arg1.ab != undefined){ _local3.push({name:"_color_ab", value:_arg1.ab}); }; }; return (_local3); } public static function _bezier_modifier(_arg1):Array{ var _local2:Array; var _local3:Array; var _local4:uint; var _local5:String; var _local6:Object; _local2 = []; if ((_arg1 is Array)){ _local3 = _arg1; } else { _local3 = [_arg1]; }; _local6 = {}; _local4 = 0; while (_local4 < _local3.length) { for (_local5 in _local3[_local4]) { if (_local6[_local5] == undefined){ _local6[_local5] = []; }; _local6[_local5].push(_local3[_local4][_local5]); }; _local4++; }; for (_local5 in _local6) { _local2.push({name:_local5, parameters:_local6[_local5]}); }; return (_local2); } } }//package caurina.transitions
Section 79
//SpecialProperty (caurina.transitions.SpecialProperty) package caurina.transitions { public class SpecialProperty { public var parameters:Array; public var getValue:Function; public var setValue:Function; public function SpecialProperty(_arg1:Function, _arg2:Function, _arg3:Array=null){ getValue = _arg1; setValue = _arg2; parameters = _arg3; } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + "[SpecialProperty "); _local1 = (_local1 + ("getValue:" + String(getValue))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("setValue:" + String(setValue))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("parameters:" + String(parameters))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 80
//SpecialPropertyModifier (caurina.transitions.SpecialPropertyModifier) package caurina.transitions { public class SpecialPropertyModifier { public var getValue:Function; public var modifyValues:Function; public function SpecialPropertyModifier(_arg1:Function, _arg2:Function){ modifyValues = _arg1; getValue = _arg2; } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + "[SpecialPropertyModifier "); _local1 = (_local1 + ("modifyValues:" + String(modifyValues))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("getValue:" + String(getValue))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 81
//SpecialPropertySplitter (caurina.transitions.SpecialPropertySplitter) package caurina.transitions { public class SpecialPropertySplitter { public var parameters:Array; public var splitValues:Function; public function SpecialPropertySplitter(_arg1:Function, _arg2:Array){ splitValues = _arg1; } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + "[SpecialPropertySplitter "); _local1 = (_local1 + ("splitValues:" + String(splitValues))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("parameters:" + String(parameters))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 82
//Tweener (caurina.transitions.Tweener) package caurina.transitions { import flash.display.*; import flash.events.*; import flash.utils.*; public class Tweener { private static var _timeScale:Number = 1; private static var _specialPropertySplitterList:Object; private static var _engineExists:Boolean = false; private static var _specialPropertyModifierList:Object; private static var _currentTime:Number; private static var _tweenList:Array; private static var _specialPropertyList:Object; private static var _transitionList:Object; private static var _inited:Boolean = false; private static var __tweener_controller__:MovieClip; public function Tweener(){ trace("Tweener is a static class and should not be instantiated."); } public static function registerSpecialPropertyModifier(_arg1:String, _arg2:Function, _arg3:Function):void{ var _local4:SpecialPropertyModifier; if (!(_inited)){ init(); }; _local4 = new SpecialPropertyModifier(_arg2, _arg3); _specialPropertyModifierList[_arg1] = _local4; } public static function registerSpecialProperty(_arg1:String, _arg2:Function, _arg3:Function, _arg4:Array=null):void{ var _local5:SpecialProperty; if (!(_inited)){ init(); }; _local5 = new SpecialProperty(_arg2, _arg3, _arg4); _specialPropertyList[_arg1] = _local5; } public static function addCaller(_arg1:Object=null, _arg2:Object=null):Boolean{ var _local4:Array; var _local5:Number; var _local6:Number; var _local7:Object; var _local8:Number; var _local9:Number; var _local10:Function; var _local11:TweenListObj; var _local12:Number; var _local13:String; if ((((arguments.length < 2)) || ((arguments[0] == undefined)))){ return (false); }; _local4 = new Array(); if ((arguments[0] is Array)){ _local5 = 0; while (_local5 < arguments[0].length) { _local4.push(arguments[0][_local5]); _local5++; }; } else { _local5 = 0; while (_local5 < (arguments.length - 1)) { _local4.push(arguments[_local5]); _local5++; }; }; _local7 = arguments[(arguments.length - 1)]; if (!(_inited)){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; _local8 = (isNaN(_local7.time)) ? 0 : _local7.time; _local9 = (isNaN(_local7.delay)) ? 0 : _local7.delay; if (typeof(_local7.transition) == "string"){ _local13 = _local7.transition.toLowerCase(); _local10 = _transitionList[_local13]; } else { _local10 = _local7.transition; }; if (!(Boolean(_local10))){ _local10 = _transitionList["easeoutexpo"]; }; _local5 = 0; while (_local5 < _local4.length) { _local11 = new TweenListObj(_local4[_local5], (_currentTime + ((_local9 * 1000) / _timeScale)), (_currentTime + (((_local9 * 1000) + (_local8 * 1000)) / _timeScale)), (_local7.useFrames == true), _local10); _local11.properties = null; _local11.onStart = _local7.onStart; _local11.onUpdate = _local7.onUpdate; _local11.onComplete = _local7.onComplete; _local11.onOverwrite = _local7.onOverwrite; _local11.onStartParams = _local7.onStartParams; _local11.onUpdateParams = _local7.onUpdateParams; _local11.onCompleteParams = _local7.onCompleteParams; _local11.onOverwriteParams = _local7.onOverwriteParams; _local11.isCaller = true; _local11.count = _local7.count; _local11.waitFrames = _local7.waitFrames; _tweenList.push(_local11); if ((((_local8 == 0)) && ((_local9 == 0)))){ _local12 = (_tweenList.length - 1); updateTweenByIndex(_local12); removeTweenByIndex(_local12); }; _local5++; }; return (true); } public static function init(_arg1=null):void{ _inited = true; _transitionList = new Object(); Equations.init(); _specialPropertyList = new Object(); _specialPropertyModifierList = new Object(); _specialPropertySplitterList = new Object(); SpecialPropertiesDefault.init(); } private static function updateTweens():Boolean{ var _local1:int; if (_tweenList.length == 0){ return (false); }; _local1 = 0; while (_local1 < _tweenList.length) { if ((((_tweenList[_local1] == undefined)) || (!(_tweenList[_local1].isPaused)))){ if (!(updateTweenByIndex(_local1))){ removeTweenByIndex(_local1); }; if (_tweenList[_local1] == null){ removeTweenByIndex(_local1, true); _local1--; }; }; _local1++; }; return (true); } public static function removeTweens(_arg1:Object, ... _args):Boolean{ var _local3:Array; var _local4:uint; _local3 = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && (!(AuxFunctions.isInArray(_args[_local4], _local3))))){ _local3.push(_args[_local4]); }; _local4++; }; return (affectTweens(removeTweenByIndex, _arg1, _local3)); } public static function pauseAllTweens():Boolean{ var _local1:Boolean; var _local2:uint; if (!(Boolean(_tweenList))){ return (false); }; _local1 = false; _local2 = 0; while (_local2 < _tweenList.length) { pauseTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } public static function splitTweens(_arg1:Number, _arg2:Array):uint{ var _local3:TweenListObj; var _local4:TweenListObj; var _local5:uint; var _local6:String; var _local7:Boolean; _local3 = _tweenList[_arg1]; _local4 = _local3.clone(false); _local5 = 0; while (_local5 < _arg2.length) { _local6 = _arg2[_local5]; if (Boolean(_local3.properties[_local6])){ _local3.properties[_local6] = undefined; delete _local3.properties[_local6]; }; _local5++; }; for (_local6 in _local4.properties) { _local7 = false; _local5 = 0; while (_local5 < _arg2.length) { if (_arg2[_local5] == _local6){ _local7 = true; break; }; _local5++; }; if (!(_local7)){ _local4.properties[_local6] = undefined; delete _local4.properties[_local6]; }; }; _tweenList.push(_local4); return ((_tweenList.length - 1)); } public static function resumeTweenByIndex(_arg1:Number):Boolean{ var _local2:TweenListObj; _local2 = _tweenList[_arg1]; if ((((_local2 == null)) || (!(_local2.isPaused)))){ return (false); }; _local2.timeStart = (_local2.timeStart + (_currentTime - _local2.timePaused)); _local2.timeComplete = (_local2.timeComplete + (_currentTime - _local2.timePaused)); _local2.timePaused = undefined; _local2.isPaused = false; return (true); } public static function debug_getList():String{ var _local1:String; var _local2:uint; var _local3:uint; _local1 = ""; _local2 = 0; while (_local2 < _tweenList.length) { _local1 = (_local1 + (("[" + _local2) + "] ::\n")); _local3 = 0; while (_local3 < _tweenList[_local2].properties.length) { _local1 = (_local1 + ((((" " + _tweenList[_local2].properties[_local3].name) + " -> ") + _tweenList[_local2].properties[_local3].valueComplete) + "\n")); _local3++; }; _local2++; }; return (_local1); } public static function getVersion():String{ return ("AS3 1.26.62"); } public static function onEnterFrame(_arg1:Event):void{ var _local2:Boolean; updateTime(); _local2 = false; _local2 = updateTweens(); if (!(_local2)){ stopEngine(); }; } public static function updateTime():void{ _currentTime = getTimer(); } private static function updateTweenByIndex(_arg1:Number):Boolean{ var tTweening:TweenListObj; var isOver:Boolean; var mustUpdate:Boolean; var nv:Number; var t:Number; var b:Number; var c:Number; var d:Number; var pName:String; var tScope:Object; var tProperty:Object; var pv:Number; var i = _arg1; tTweening = _tweenList[i]; if ((((tTweening == null)) || (!(Boolean(tTweening.scope))))){ return (false); }; isOver = false; if (_currentTime >= tTweening.timeStart){ tScope = tTweening.scope; if (tTweening.isCaller){ do { t = (((tTweening.timeComplete - tTweening.timeStart) / tTweening.count) * (tTweening.timesCalled + 1)); b = tTweening.timeStart; c = (tTweening.timeComplete - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d); } while (!(_currentTime >= nv)); } else { mustUpdate = (((((tTweening.skipUpdates < 1)) || (!(tTweening.skipUpdates)))) || ((tTweening.updatesSkipped >= tTweening.skipUpdates))); if (_currentTime >= tTweening.timeComplete){ isOver = true; mustUpdate = true; }; if (!(tTweening.hasStarted)){ if (Boolean(tTweening.onStart)){ try { tTweening.onStart.apply(tScope, tTweening.onStartParams); } catch(e:Error) { handleError(tTweening, e, "onStart"); }; }; for (pName in tTweening.properties) { pv = getPropertyValue(tScope, pName); tTweening.properties[pName].valueStart = (isNaN(pv)) ? tTweening.properties[pName].valueComplete : pv; }; mustUpdate = true; tTweening.hasStarted = true; }; if (mustUpdate){ for (pName in tTweening.properties) { tProperty = tTweening.properties[pName]; if (isOver){ nv = tProperty.valueComplete; } else { if (tProperty.hasModifier){ t = (_currentTime - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, 0, 1, d); nv = tProperty.modifierFunction(tProperty.valueStart, tProperty.valueComplete, nv, tProperty.modifierParameters); } else { t = (_currentTime - tTweening.timeStart); b = tProperty.valueStart; c = (tProperty.valueComplete - tProperty.valueStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d); }; }; if (tTweening.rounded){ nv = Math.round(nv); }; setPropertyValue(tScope, pName, nv); }; tTweening.updatesSkipped = 0; if (Boolean(tTweening.onUpdate)){ try { tTweening.onUpdate.apply(tScope, tTweening.onUpdateParams); } catch(e:Error) { handleError(tTweening, e, "onUpdate"); }; }; } else { tTweening.updatesSkipped++; }; }; if (((isOver) && (Boolean(tTweening.onComplete)))){ try { tTweening.onComplete.apply(tScope, tTweening.onCompleteParams); } catch(e:Error) { handleError(tTweening, e, "onComplete"); }; }; return (!(isOver)); }; return (true); } public static function setTimeScale(_arg1:Number):void{ var _local2:Number; if (isNaN(_arg1)){ _arg1 = 1; }; if (_arg1 < 1E-5){ _arg1 = 1E-5; }; if (_arg1 != _timeScale){ if (_tweenList != null){ _local2 = 0; while (_local2 < _tweenList.length) { _tweenList[_local2].timeStart = (_currentTime - (((_currentTime - _tweenList[_local2].timeStart) * _timeScale) / _arg1)); _tweenList[_local2].timeComplete = (_currentTime - (((_currentTime - _tweenList[_local2].timeComplete) * _timeScale) / _arg1)); if (_tweenList[_local2].timePaused != undefined){ _tweenList[_local2].timePaused = (_currentTime - (((_currentTime - _tweenList[_local2].timePaused) * _timeScale) / _arg1)); }; _local2++; }; }; _timeScale = _arg1; }; } public static function resumeAllTweens():Boolean{ var _local1:Boolean; var _local2:uint; if (!(Boolean(_tweenList))){ return (false); }; _local1 = false; _local2 = 0; while (_local2 < _tweenList.length) { resumeTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } private static function handleError(_arg1:TweenListObj, _arg2:Error, _arg3:String):void{ var pTweening = _arg1; var pError = _arg2; var pCallBackName = _arg3; if (((Boolean(pTweening.onError)) && ((pTweening.onError is Function)))){ try { pTweening.onError.apply(pTweening.scope, [pTweening.scope, pError]); } catch(metaError:Error) { trace("## [Tweener] Error:", pTweening.scope, "raised an error while executing the 'onError' handler. Original error:\n", pError.getStackTrace(), "\nonError error:", metaError.getStackTrace()); }; } else { if (!(Boolean(pTweening.onError))){ trace("## [Tweener] Error: :", pTweening.scope, (("raised an error while executing the'" + pCallBackName) + "'handler. \n"), pError.getStackTrace()); }; }; } private static function startEngine():void{ _engineExists = true; _tweenList = new Array(); __tweener_controller__ = new MovieClip(); __tweener_controller__.addEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); updateTime(); } public static function removeAllTweens():Boolean{ var _local1:Boolean; var _local2:uint; if (!(Boolean(_tweenList))){ return (false); }; _local1 = false; _local2 = 0; while (_local2 < _tweenList.length) { removeTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } public static function addTween(_arg1:Object=null, _arg2:Object=null):Boolean{ var _local4:Array; var _local5:Number; var _local6:Number; var _local7:String; var _local8:String; var _local9:Object; var _local10:Number; var _local11:Number; var _local12:Array; var _local13:Object; var _local14:Object; var _local15:Function; var _local16:Object; var _local17:TweenListObj; var _local18:Number; var _local19:Array; var _local20:Array; var _local21:String; if ((((arguments.length < 2)) || ((arguments[0] == undefined)))){ return (false); }; _local4 = new Array(); if ((arguments[0] is Array)){ _local5 = 0; while (_local5 < arguments[0].length) { _local4.push(arguments[0][_local5]); _local5++; }; } else { _local5 = 0; while (_local5 < (arguments.length - 1)) { _local4.push(arguments[_local5]); _local5++; }; }; _local9 = TweenListObj.makePropertiesChain(arguments[(arguments.length - 1)]); if (!(_inited)){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; _local10 = (isNaN(_local9.time)) ? 0 : _local9.time; _local11 = (isNaN(_local9.delay)) ? 0 : _local9.delay; _local12 = new Array(); _local13 = {time:true, delay:true, useFrames:true, skipUpdates:true, transition:true, onStart:true, onUpdate:true, onComplete:true, onOverwrite:true, rounded:true, onStartParams:true, onUpdateParams:true, onCompleteParams:true, onOverwriteParams:true}; _local14 = new Object(); for (_local7 in _local9) { if (!(_local13[_local7])){ if (_specialPropertySplitterList[_local7]){ _local19 = _specialPropertySplitterList[_local7].splitValues(_local9[_local7], _specialPropertySplitterList[_local7].parameters); _local5 = 0; while (_local5 < _local19.length) { _local12[_local19[_local5].name] = {valueStart:undefined, valueComplete:_local19[_local5].value}; _local5++; }; } else { if (_specialPropertyModifierList[_local7] != undefined){ _local20 = _specialPropertyModifierList[_local7].modifyValues(_local9[_local7]); _local5 = 0; while (_local5 < _local20.length) { _local14[_local20[_local5].name] = {modifierParameters:_local20[_local5].parameters, modifierFunction:_specialPropertyModifierList[_local7].getValue}; _local5++; }; } else { _local12[_local7] = {valueStart:undefined, valueComplete:_local9[_local7]}; }; }; }; }; for (_local7 in _local14) { if (_local12[_local7] != undefined){ _local12[_local7].modifierParameters = _local14[_local7].modifierParameters; _local12[_local7].modifierFunction = _local14[_local7].modifierFunction; }; }; if (typeof(_local9.transition) == "string"){ _local21 = _local9.transition.toLowerCase(); _local15 = _transitionList[_local21]; } else { _local15 = _local9.transition; }; if (!(Boolean(_local15))){ _local15 = _transitionList["easeoutexpo"]; }; _local5 = 0; while (_local5 < _local4.length) { _local16 = new Object(); for (_local7 in _local12) { _local16[_local7] = new PropertyInfoObj(_local12[_local7].valueStart, _local12[_local7].valueComplete, _local12[_local7].modifierFunction, _local12[_local7].modifierParameters); }; _local17 = new TweenListObj(_local4[_local5], (_currentTime + ((_local11 * 1000) / _timeScale)), (_currentTime + (((_local11 * 1000) + (_local10 * 1000)) / _timeScale)), (_local9.useFrames == true), _local15); _local17.properties = _local16; _local17.onStart = _local9.onStart; _local17.onUpdate = _local9.onUpdate; _local17.onComplete = _local9.onComplete; _local17.onOverwrite = _local9.onOverwrite; _local17.onError = _local9.onError; _local17.onStartParams = _local9.onStartParams; _local17.onUpdateParams = _local9.onUpdateParams; _local17.onCompleteParams = _local9.onCompleteParams; _local17.onOverwriteParams = _local9.onOverwriteParams; _local17.rounded = _local9.rounded; _local17.skipUpdates = _local9.skipUpdates; removeTweensByTime(_local17.scope, _local17.properties, _local17.timeStart, _local17.timeComplete); _tweenList.push(_local17); if ((((_local10 == 0)) && ((_local11 == 0)))){ _local18 = (_tweenList.length - 1); updateTweenByIndex(_local18); removeTweenByIndex(_local18); }; _local5++; }; return (true); } public static function registerTransition(_arg1:String, _arg2:Function):void{ if (!(_inited)){ init(); }; _transitionList[_arg1] = _arg2; } private static function affectTweens(_arg1:Function, _arg2:Object, _arg3:Array):Boolean{ var _local4:Boolean; var _local5:uint; var _local6:Array; var _local7:uint; var _local8:uint; var _local9:uint; _local4 = false; if (!(Boolean(_tweenList))){ return (false); }; _local5 = 0; while (_local5 < _tweenList.length) { if (((_tweenList[_local5]) && ((_tweenList[_local5].scope == _arg2)))){ if (_arg3.length == 0){ _arg1(_local5); _local4 = true; } else { _local6 = new Array(); _local7 = 0; while (_local7 < _arg3.length) { if (Boolean(_tweenList[_local5].properties[_arg3[_local7]])){ _local6.push(_arg3[_local7]); }; _local7++; }; if (_local6.length > 0){ _local8 = AuxFunctions.getObjectLength(_tweenList[_local5].properties); if (_local8 == _local6.length){ _arg1(_local5); _local4 = true; } else { _local9 = splitTweens(_local5, _local6); _arg1(_local9); _local4 = true; }; }; }; }; _local5++; }; return (_local4); } public static function getTweens(_arg1:Object):Array{ var _local2:uint; var _local3:String; var _local4:Array; if (!(Boolean(_tweenList))){ return ([]); }; _local4 = new Array(); _local2 = 0; while (_local2 < _tweenList.length) { if (_tweenList[_local2].scope == _arg1){ for (_local3 in _tweenList[_local2].properties) { _local4.push(_local3); }; }; _local2++; }; return (_local4); } private static function setPropertyValue(_arg1:Object, _arg2:String, _arg3:Number):void{ if (_specialPropertyList[_arg2] != undefined){ if (Boolean(_specialPropertyList[_arg2].parameters)){ _specialPropertyList[_arg2].setValue(_arg1, _arg3, _specialPropertyList[_arg2].parameters); } else { _specialPropertyList[_arg2].setValue(_arg1, _arg3); }; } else { _arg1[_arg2] = _arg3; }; } private static function getPropertyValue(_arg1:Object, _arg2:String):Number{ if (_specialPropertyList[_arg2] != undefined){ if (Boolean(_specialPropertyList[_arg2].parameters)){ return (_specialPropertyList[_arg2].getValue(_arg1, _specialPropertyList[_arg2].parameters)); }; return (_specialPropertyList[_arg2].getValue(_arg1)); //unresolved jump }; return (_arg1[_arg2]); } public static function isTweening(_arg1:Object):Boolean{ var _local2:uint; if (!(Boolean(_tweenList))){ return (false); }; _local2 = 0; while (_local2 < _tweenList.length) { if (_tweenList[_local2].scope == _arg1){ return (true); }; _local2++; }; return (false); } public static function getTweenCount(_arg1:Object):Number{ var _local2:uint; var _local3:Number; if (!(Boolean(_tweenList))){ return (0); }; _local3 = 0; _local2 = 0; while (_local2 < _tweenList.length) { if (_tweenList[_local2].scope == _arg1){ _local3 = (_local3 + AuxFunctions.getObjectLength(_tweenList[_local2].properties)); }; _local2++; }; return (_local3); } private static function stopEngine():void{ _engineExists = false; _tweenList = null; _currentTime = 0; __tweener_controller__.removeEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); __tweener_controller__ = null; } public static function pauseTweenByIndex(_arg1:Number):Boolean{ var _local2:TweenListObj; _local2 = _tweenList[_arg1]; if ((((_local2 == null)) || (_local2.isPaused))){ return (false); }; _local2.timePaused = _currentTime; _local2.isPaused = true; return (true); } public static function removeTweensByTime(_arg1:Object, _arg2:Object, _arg3:Number, _arg4:Number):Boolean{ var removed:Boolean; var removedLocally:Boolean; var i:uint; var tl:uint; var pName:String; var p_scope = _arg1; var p_properties = _arg2; var p_timeStart = _arg3; var p_timeComplete = _arg4; removed = false; tl = _tweenList.length; i = 0; while (i < tl) { if (((Boolean(_tweenList[i])) && ((p_scope == _tweenList[i].scope)))){ if ((((p_timeComplete > _tweenList[i].timeStart)) && ((p_timeStart < _tweenList[i].timeComplete)))){ removedLocally = false; for (pName in _tweenList[i].properties) { if (Boolean(p_properties[pName])){ if (Boolean(_tweenList[i].onOverwrite)){ try { _tweenList[i].onOverwrite.apply(_tweenList[i].scope, _tweenList[i].onOverwriteParams); } catch(e:Error) { handleError(_tweenList[i], e, "onOverwrite"); }; }; _tweenList[i].properties[pName] = undefined; delete _tweenList[i].properties[pName]; removedLocally = true; removed = true; }; }; if (removedLocally){ if (AuxFunctions.getObjectLength(_tweenList[i].properties) == 0){ removeTweenByIndex(i); }; }; }; }; i = (i + 1); }; return (removed); } public static function registerSpecialPropertySplitter(_arg1:String, _arg2:Function, _arg3:Array=null):void{ var _local4:SpecialPropertySplitter; if (!(_inited)){ init(); }; _local4 = new SpecialPropertySplitter(_arg2, _arg3); _specialPropertySplitterList[_arg1] = _local4; } public static function removeTweenByIndex(_arg1:Number, _arg2:Boolean=false):Boolean{ _tweenList[_arg1] = null; if (_arg2){ _tweenList.splice(_arg1, 1); }; return (true); } public static function resumeTweens(_arg1:Object, ... _args):Boolean{ var _local3:Array; var _local4:uint; _local3 = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && (!(AuxFunctions.isInArray(_args[_local4], _local3))))){ _local3.push(_args[_local4]); }; _local4++; }; return (affectTweens(resumeTweenByIndex, _arg1, _local3)); } public static function pauseTweens(_arg1:Object, ... _args):Boolean{ var _local3:Array; var _local4:uint; _local3 = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && (!(AuxFunctions.isInArray(_args[_local4], _local3))))){ _local3.push(_args[_local4]); }; _local4++; }; return (affectTweens(pauseTweenByIndex, _arg1, _local3)); } } }//package caurina.transitions
Section 83
//TweenListObj (caurina.transitions.TweenListObj) package caurina.transitions { public class TweenListObj { public var onUpdate:Function; public var useFrames:Boolean; public var hasStarted:Boolean; public var onOverwriteParams:Array; public var timeStart:Number; public var count:Number; public var auxProperties:Object; public var timeComplete:Number; public var onStartParams:Array; public var rounded:Boolean; public var properties:Object; public var onUpdateParams:Array; public var onComplete:Function; public var updatesSkipped:Number; public var onStart:Function; public var skipUpdates:Number; public var scope:Object; public var isCaller:Boolean; public var timePaused:Number; public var transition:Function; public var onCompleteParams:Array; public var onError:Function; public var timesCalled:Number; public var onOverwrite:Function; public var isPaused:Boolean; public var waitFrames:Boolean; public function TweenListObj(_arg1:Object, _arg2:Number, _arg3:Number, _arg4:Boolean, _arg5:Function){ scope = _arg1; timeStart = _arg2; timeComplete = _arg3; useFrames = _arg4; transition = _arg5; auxProperties = new Object(); properties = new Object(); isPaused = false; timePaused = undefined; isCaller = false; updatesSkipped = 0; timesCalled = 0; skipUpdates = 0; hasStarted = false; } public function clone(_arg1:Boolean):TweenListObj{ var _local2:TweenListObj; var _local3:String; _local2 = new TweenListObj(scope, timeStart, timeComplete, useFrames, transition); _local2.properties = new Array(); for (_local3 in properties) { _local2.properties[_local3] = properties[_local3].clone(); }; _local2.skipUpdates = skipUpdates; _local2.updatesSkipped = updatesSkipped; if (!(_arg1)){ _local2.onStart = onStart; _local2.onUpdate = onUpdate; _local2.onComplete = onComplete; _local2.onOverwrite = onOverwrite; _local2.onError = onError; _local2.onStartParams = onStartParams; _local2.onUpdateParams = onUpdateParams; _local2.onCompleteParams = onCompleteParams; _local2.onOverwriteParams = onOverwriteParams; }; _local2.rounded = rounded; _local2.isPaused = isPaused; _local2.timePaused = timePaused; _local2.isCaller = isCaller; _local2.count = count; _local2.timesCalled = timesCalled; _local2.waitFrames = waitFrames; _local2.hasStarted = hasStarted; return (_local2); } public function toString():String{ var _local1:String; var _local2:uint; _local1 = "\n[TweenListObj "; _local1 = (_local1 + ("scope:" + String(scope))); _local1 = (_local1 + ", properties:"); _local2 = 0; while (_local2 < properties.length) { if (_local2 > 0){ _local1 = (_local1 + ","); }; _local1 = (_local1 + ("[name:" + properties[_local2].name)); _local1 = (_local1 + (",valueStart:" + properties[_local2].valueStart)); _local1 = (_local1 + (",valueComplete:" + properties[_local2].valueComplete)); _local1 = (_local1 + "]"); _local2++; }; _local1 = (_local1 + (", timeStart:" + String(timeStart))); _local1 = (_local1 + (", timeComplete:" + String(timeComplete))); _local1 = (_local1 + (", useFrames:" + String(useFrames))); _local1 = (_local1 + (", transition:" + String(transition))); if (skipUpdates){ _local1 = (_local1 + (", skipUpdates:" + String(skipUpdates))); }; if (updatesSkipped){ _local1 = (_local1 + (", updatesSkipped:" + String(updatesSkipped))); }; if (Boolean(onStart)){ _local1 = (_local1 + (", onStart:" + String(onStart))); }; if (Boolean(onUpdate)){ _local1 = (_local1 + (", onUpdate:" + String(onUpdate))); }; if (Boolean(onComplete)){ _local1 = (_local1 + (", onComplete:" + String(onComplete))); }; if (Boolean(onOverwrite)){ _local1 = (_local1 + (", onOverwrite:" + String(onOverwrite))); }; if (Boolean(onError)){ _local1 = (_local1 + (", onError:" + String(onError))); }; if (onStartParams){ _local1 = (_local1 + (", onStartParams:" + String(onStartParams))); }; if (onUpdateParams){ _local1 = (_local1 + (", onUpdateParams:" + String(onUpdateParams))); }; if (onCompleteParams){ _local1 = (_local1 + (", onCompleteParams:" + String(onCompleteParams))); }; if (onOverwriteParams){ _local1 = (_local1 + (", onOverwriteParams:" + String(onOverwriteParams))); }; if (rounded){ _local1 = (_local1 + (", rounded:" + String(rounded))); }; if (isPaused){ _local1 = (_local1 + (", isPaused:" + String(isPaused))); }; if (timePaused){ _local1 = (_local1 + (", timePaused:" + String(timePaused))); }; if (isCaller){ _local1 = (_local1 + (", isCaller:" + String(isCaller))); }; if (count){ _local1 = (_local1 + (", count:" + String(count))); }; if (timesCalled){ _local1 = (_local1 + (", timesCalled:" + String(timesCalled))); }; if (waitFrames){ _local1 = (_local1 + (", waitFrames:" + String(waitFrames))); }; if (hasStarted){ _local1 = (_local1 + (", hasStarted:" + String(hasStarted))); }; _local1 = (_local1 + "]\n"); return (_local1); } public static function makePropertiesChain(_arg1:Object):Object{ var _local2:Object; var _local3:Object; var _local4:Object; var _local5:Object; var _local6:Number; var _local7:Number; var _local8:Number; _local2 = _arg1.base; if (_local2){ _local3 = {}; if ((_local2 is Array)){ _local4 = []; _local8 = 0; while (_local8 < _local2.length) { _local4.push(_local2[_local8]); _local8++; }; } else { _local4 = [_local2]; }; _local4.push(_arg1); _local6 = _local4.length; _local7 = 0; while (_local7 < _local6) { if (_local4[_local7]["base"]){ _local5 = AuxFunctions.concatObjects(makePropertiesChain(_local4[_local7]["base"]), _local4[_local7]); } else { _local5 = _local4[_local7]; }; _local3 = AuxFunctions.concatObjects(_local3, _local5); _local7++; }; if (_local3["base"]){ delete _local3["base"]; }; return (_local3); //unresolved jump }; return (_arg1); } } }//package caurina.transitions
Section 84
//AdLoader (com.notdoppler.AdLoader) package com.notdoppler { import flash.events.*; import flash.display.*; import flash.system.*; import flash.net.*; public class AdLoader extends Sprite { private var notdopplerString:String; private var notdopplerLoader:Loader; public static var movieURL:String; public function AdLoader(_arg1:String){ this.notdopplerString = _arg1; addEventListener(Event.ADDED, addedHandler); } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; removeEventListener(Event.ADDED, addedHandler); Security.allowDomain("notdoppler.com"); _local2 = parent; notdopplerLoader = new Loader(); notdopplerLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); notdopplerLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); notdopplerLoader.load(new URLRequest(notdopplerString)); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } public function unloadMovie():void{ notdopplerLoader.unload(); notdopplerLoader.contentLoaderInfo.removeEventListener(Event.INIT, dispatchHandler); notdopplerLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, dispatchHandler); removeChild(notdopplerLoader); } public function displayAd():void{ addChild(notdopplerLoader); } public function reloadAd():void{ notdopplerLoader = new Loader(); notdopplerLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); notdopplerLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); notdopplerLoader.load(new URLRequest(notdopplerString)); } } }//package com.notdoppler
Section 85
//OBO_ToolTip (com.onebyonedesign.utils.OBO_ToolTip) package com.onebyonedesign.utils { import flash.display.*; import flash.text.*; import flash.filters.*; import flash.events.*; public class OBO_ToolTip extends Sprite { private var _format:TextFormat; private var _tipText:TextField; private var _adv:Boolean; private var _ds:DropShadowFilter; private var _userTip:String; private var _root:DisplayObjectContainer; private var _orgY:int; private var _orgX:int; private var _tipAlpha:Number; private var _tipColor:uint; public static const SQUARE_TIP:String = "squareTip"; public static const ROUND_TIP:String = "roundTip"; private static var OBO_TT:OBO_ToolTip; public function OBO_ToolTip(_arg1:TipCreator, _arg2:DisplayObjectContainer, _arg3:Font, _arg4:uint=0xFFFFFF, _arg5:Number=1, _arg6:String="roundTip", _arg7:uint=0, _arg8:int=11, _arg9:Boolean=true){ if ((!(_arg1) is TipCreator)){ throw (new Error("OBO_ToolTip class must be instantiated with static method OBO_ToolTip.createToolTip() method.")); }; _root = _arg2; _tipColor = _arg4; _tipAlpha = _arg5; _userTip = _arg6; _adv = _arg9; _format = new TextFormat(_arg3.fontName, _arg8, _arg7); _ds = new DropShadowFilter(3, 45, 0, 0.7, 2, 2, 1, 3); this.mouseEnabled = false; } private function onTipMove(_arg1:MouseEvent):void{ this.x = Math.round(_arg1.stageX); this.y = Math.round((_arg1.stageY - 2)); if ((this.y - this.height) < 0){ this.scaleY = (_tipText.scaleY = -1); _tipText.y = ((_userTip)==ROUND_TIP) ? -18 : -16; this.y = Math.round((_arg1.stageY + 5)); } else { this.scaleY = (_tipText.scaleY = 1); _tipText.y = _orgY; }; if ((this.x - (this.width - 18)) < 0){ if (_userTip == ROUND_TIP){ this.scaleX = (_tipText.scaleX = -1); _tipText.x = 5; }; } else { this.scaleX = (_tipText.scaleX = 1); _tipText.x = _orgX; }; _arg1.updateAfterEvent(); } public function addTip(_arg1:String):void{ var _local2:Number; var _local3:Number; var _local4:Array; var _local5:int; var _local6:int; _root.addChild(this); _tipText = new TextField(); _tipText.mouseEnabled = false; _tipText.selectable = false; _tipText.defaultTextFormat = _format; _tipText.antiAliasType = (_adv) ? AntiAliasType.ADVANCED : AntiAliasType.NORMAL; _tipText.width = 1; _tipText.height = 1; _tipText.autoSize = TextFieldAutoSize.LEFT; _tipText.embedFonts = true; _tipText.multiline = true; _tipText.text = _arg1; _local2 = _tipText.textWidth; _local3 = _tipText.textHeight; switch (_userTip){ case ROUND_TIP: _local4 = [[0, -13.42], [0, -2], [10.52, -15.7], [13.02, -18.01, 13.02, -22.65], [13.02, (-16 - _local3)], [13.23, (-25.23 - _local3), 3.1, (-25.23 - _local3)], [-(_local2), (-25.23 - _local3)], [(-(_local2) - 7), (-25.23 - _local3), (-(_local2) - 7), (-16 - _local3)], [(-(_local2) - 7), -22.65], [(-(_local2) - 7), -13.42, -(_local2), -13.42]]; break; case SQUARE_TIP: _local4 = [[-(((_local2 / 2) + 5)), -16], [-(((_local2 / 2) + 5)), -(((18 + _local3) + 4))], [((_local2 / 2) + 5), -(((18 + _local3) + 4))], [((_local2 / 2) + 5), -16], [6, -16], [0, 0], [-6, -16], [-(((_local2 / 2) + 5)), -16]]; break; default: throw (new Error("Undefined tool tip shape in OBO_ToolTip!")); }; _local5 = _local4.length; this.graphics.beginFill(_tipColor, _tipAlpha); _local6 = 0; while (_local6 < _local5) { if (_local6 == 0){ this.graphics.moveTo(_local4[_local6][0], _local4[_local6][1]); } else { if (_local4[_local6].length == 2){ this.graphics.lineTo(_local4[_local6][0], _local4[_local6][1]); } else { if (_local4[_local6].length == 4){ this.graphics.curveTo(_local4[_local6][0], _local4[_local6][1], _local4[_local6][2], _local4[_local6][3]); }; }; }; _local6++; }; this.graphics.endFill(); this.x = stage.mouseX; this.y = stage.mouseY; this.filters = [_ds]; _tipText.x = ((_userTip)==ROUND_TIP) ? Math.round(-(_local2)) : (Math.round(-((_local2 / 2))) - 2); _orgX = _tipText.x; _tipText.y = Math.round((-21 - _local3)); _orgY = _tipText.y; this.addChild(_tipText); stage.addEventListener(MouseEvent.MOUSE_MOVE, onTipMove); } public function removeTip():void{ stage.removeEventListener(MouseEvent.MOUSE_MOVE, onTipMove); this.removeChild(_tipText); this.graphics.clear(); _root.removeChild(this); } public function set tipShape(_arg1:String):void{ if (((!((_arg1 == ROUND_TIP))) && (!((_arg1 == SQUARE_TIP))))){ throw (new Error((("Invalid tip shape \"" + _arg1) + "\" specified at OBO_ToolTip.tipShape."))); }; _userTip = _arg1; } public static function createToolTip(_arg1:DisplayObjectContainer, _arg2:Font, _arg3:uint=0xFFFFFF, _arg4:Number=1, _arg5:String="roundTip", _arg6:uint=0, _arg7:int=11, _arg8:Boolean=true):OBO_ToolTip{ if (OBO_TT == null){ OBO_TT = new OBO_ToolTip(new TipCreator(), _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); }; return (OBO_TT); } } }//package com.onebyonedesign.utils class TipCreator { private function TipCreator(){ } }
Section 86
//AdLoader2 (CPMStar.AdLoader2) package CPMStar { import flash.events.*; import flash.display.*; import flash.system.*; import flash.net.*; public class AdLoader2 extends Sprite { private var contentspotid:String; private var cpmstarLoader:Loader; public function AdLoader2(_arg1:String){ this.contentspotid = _arg1; addEventListener(Event.ADDED, addedHandler); } private function addedHandler(_arg1:Event):void{ var _local2:String; var _local3:DisplayObjectContainer; removeEventListener(Event.ADDED, addedHandler); Security.allowDomain("server.cpmstar.com"); _local2 = "http://server.cpmstar.com/adviewas3.swf"; _local3 = parent; cpmstarLoader = new Loader(); cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((_local2 + "?contentspotid=") + contentspotid))); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } public function unloadMovie():void{ cpmstarLoader.unload(); cpmstarLoader.contentLoaderInfo.removeEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, dispatchHandler); removeChild(cpmstarLoader); } public function displayAd():void{ trace(cpmstarLoader); addChild(cpmstarLoader); } public function reloadAd():void{ var _local1:String; cpmstarLoader = new Loader(); _local1 = "http://server.cpmstar.com/adviewas3.swf"; cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((_local1 + "?contentspotid=") + contentspotid))); } } }//package CPMStar
Section 87
//AdvertiementMove_10 (xtrememotor7_fla.AdvertiementMove_10) package xtrememotor7_fla { import flash.display.*; public dynamic class AdvertiementMove_10 extends MovieClip { public var advertisement:MovieClip; public var dopplerBtn:SimpleButton; } }//package xtrememotor7_fla
Section 88
//advertisement_11 (xtrememotor7_fla.advertisement_11) package xtrememotor7_fla { import flash.display.*; public dynamic class advertisement_11 extends MovieClip { public var adBox:MovieClip; public var notDopplerAd:MovieClip; } }//package xtrememotor7_fla
Section 89
//buttonBig_59 (xtrememotor7_fla.buttonBig_59) package xtrememotor7_fla { import flash.display.*; public dynamic class buttonBig_59 extends MovieClip { public function buttonBig_59(){ addFrameScript(4, frame5); } function frame5(){ stop(); } } }//package xtrememotor7_fla
Section 90
//buttonNew_39 (xtrememotor7_fla.buttonNew_39) package xtrememotor7_fla { import flash.display.*; public dynamic class buttonNew_39 extends MovieClip { public var powerBtn:SimpleButton; public function buttonNew_39(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 91
//char_71 (xtrememotor7_fla.char_71) package xtrememotor7_fla { import flash.display.*; public dynamic class char_71 extends MovieClip { public function char_71(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 92
//colour_61 (xtrememotor7_fla.colour_61) package xtrememotor7_fla { import flash.display.*; public dynamic class colour_61 extends MovieClip { public function colour_61(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 93
//completeSign_26 (xtrememotor7_fla.completeSign_26) package xtrememotor7_fla { import flash.display.*; import flash.text.*; public dynamic class completeSign_26 extends MovieClip { public var myBtn:ClickButton; public var status1:MovieClip; public var status2:MovieClip; public var myText:TextField; } }//package xtrememotor7_fla
Section 94
//HUD_35 (xtrememotor7_fla.HUD_35) package xtrememotor7_fla { import flash.text.*; import flash.display.*; public dynamic class HUD_35 extends MovieClip { public var timerText:TextField; public var levelName:TextField; public var remainText:TextField; } }//package xtrememotor7_fla
Section 95
//intro_20 (xtrememotor7_fla.intro_20) package xtrememotor7_fla { import flash.display.*; public dynamic class intro_20 extends MovieClip { public var menuClip:MovieClip; public function intro_20(){ addFrameScript(9, frame10); } function frame10(){ stop(); } } }//package xtrememotor7_fla
Section 96
//introClip_1 (xtrememotor7_fla.introClip_1) package xtrememotor7_fla { import flash.display.*; public dynamic class introClip_1 extends MovieClip { public var preloader:MovieClip; public function introClip_1(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 97
//introFlash_15 (xtrememotor7_fla.introFlash_15) package xtrememotor7_fla { import flash.display.*; public dynamic class introFlash_15 extends MovieClip { public function introFlash_15(){ addFrameScript(5, frame6); } function frame6(){ stop(); } } }//package xtrememotor7_fla
Section 98
//MainTimeline (xtrememotor7_fla.MainTimeline) package xtrememotor7_fla { import flash.net.*; import flash.events.*; import adobe.utils.*; import flash.accessibility.*; import flash.display.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.geom.*; import flash.media.*; import flash.printing.*; import flash.system.*; import flash.text.*; import flash.ui.*; import flash.utils.*; import flash.xml.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import caurina.transitions.*; import CPMStar.*; import com.notdoppler.*; import com.onebyonedesign.utils.*; public dynamic class MainTimeline extends MovieClip { public var hintArray:Array; public var insultsBounds:Array; public var myFont:Font; public var drawing:Boolean; public var varUp:Boolean; public var fineGrid:Sprite; public var mp3GUI:MovieClip; public var insults:Array; public var m_iterations:int; public var varDown:Boolean; public var faceRightEdit:Boolean; public var currentExitPosition:b2Vec2; public var lastX:Number; public var shapesArray:Array; public var frontWheelRef:b2Body; public var i:int; public var maxTorque; public var dbgDraw:b2DebugDraw; public var loopIdle:BikeIdle; public var drawingSprite:Sprite; public var bloodHUD:Sprite; public var CPMStarContentSpotID:String; public var codeBox:Code; public var lastY:Number; public var myResults:MovieClip; public var gameMode:String; public var currentTieRef:b2Body; public var constantChannel:SoundChannel; public var HUD:MovieClip; public var worldBox:b2AABB; public var minutes:int; public var totalPhotos:int; public var fps:TextField; public var myExit:MovieClip; public var myTimes:Array; public var PhotoSnap:MovieClip; public var Sky:MovieClip; public var SFXon:Boolean; public var photoRef:Array; public var frameTracker; public var userLevels:Array; public var bumConstraintRef:b2Body; public var myMenu:ContextMenu; public var frameRateSet:TextField; public var bikeRevSound; public var backWheelRef:b2Body; public var bottomRightButton:SimpleButton; public var myWorld:b2World; public var handConstraintRef:b2Body; public var frameRateCounter:TextField; public var myNull:Sprite; public var so2:SharedObject; public var frontTieRef:b2Body; public var frame:int; public var levels:Array; public var bloodPlayer:BloodSplat; public var currentLevel:int; public var tool:String; public var forTheWinSound; public var notDopplerAd:AdLoader; public var insultsnice:Array; public var currentShape:Array; public var backTieRef:b2Body; public var microMP3; public var mySiteLink:ContextMenuItem; public var imageArray:Array; public var startSprite:Sprite; public var faceRight:Boolean; public var myMP3:MP3Player; public var levelStage:Sprite; public var waitForGirlInt:int; public var newIntroPlay:MovieClip; public var drawThis:Sprite; public var remainPhotos:int; public var _toolTip2:OBO_ToolTip; public var _toolTip3:OBO_ToolTip; public var _toolTip4:OBO_ToolTip; public var _toolTip5:OBO_ToolTip; public var _toolTip1:OBO_ToolTip; public var varSpace:Boolean; public var gridNumber:Number; public var tweenAds:MovieClip; public var pauseCont:Sprite; public var musicPlaying; public var midTieRef:b2Body; public var turning:Boolean; public var hintCont:Sprite; public var so:SharedObject; public var gravity:b2Vec2; public var loopConstant:BikeConstant; public var currentSpeed:Number; public var intro:MovieClip; public var seconds:int; public var myListener:CoinContactListener; public var idleChannel:SoundChannel; public var myLevelStore:levelStore; public var breakSpeed:Number; public var startPos:b2Vec2; public var upperRight:b2Vec2; public var headRef:b2Body; public var lowerLeft:b2Vec2; public var _toolTip:OBO_ToolTip; public var currentStartPosition:b2Vec2; public var m_timeStep:Number; public var myMouse:Sprite; public var exitL:Sprite; public var exitR:Sprite; public var CPMStarPreloadContentSpotID:String; public var loadBox:Code; public var availSkip:int; public var myAd:AdLoader2; public var userDataGraphic:Sprite; public var varPause:Boolean; public var varRight:Boolean; public var notDopplerAdID:String; public var photoArray:Array; public var slowMoSound:SlowMo; public var bikeGraphicRef:int; public var grid:Sprite; public var char:MovieClip; public var toolBar:MovieClip; public var gravityDir:String; public var endPos:b2Vec2; public var startFaceRight:Boolean; public var currentAd:String; public var sponsorNameText:String; public var photoSprite:Sprite; public var endSprite:Sprite; public var varDelete:Boolean; public var startPolySprite:Sprite; public var fadingBike:Boolean; public var introPlay:MovieClip; public var myPreloadAd:AdLoader2; public var varLeft:Boolean; public var currentWheelRef:b2Body; public var introClip:MovieClip; public var bikeBodyDef:b2BodyDef; public var currentTime:int; public var sponsorURL:URLRequest; public function MainTimeline(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7); } public function helpBtnFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.prankard.com/xtrememotor"); navigateToURL(_local2, "_blank"); } public function saveLevel():void{ userLevels[(currentLevel - 1)][0] = new Array(shapesArray); userLevels[(currentLevel - 1)][1] = photoArray; userLevels[(currentLevel - 1)][2] = new Array(startPos.x, startPos.y); userLevels[(currentLevel - 1)][3] = new Array(endPos.x, endPos.y); userLevels[(currentLevel - 1)][4] = true; so2.data.levels[(currentLevel - 1)] = new Array(new Array(shapesArray), photoArray, new Array(startPos.x, startPos.y), new Array(endPos.x, endPos.y), faceRightEdit); so2.flush(); trace("saved level"); } public function levelClicker(_arg1:MouseEvent):void{ removeBtns(); microMP3.stop(); currentLevel = ((_arg1.target.parent.y / 30) + 1); nextFrame(); } public function checkAndAddHint():void{ var _local1:GirlHint; if (gameMode == "game"){ if (levels[(currentLevel - 1)][7] !== null){ if (levels[(currentLevel - 1)][7].length !== 0){ updateCamera(); updateGraphics(); removeEventListener("enterFrame", update); _local1 = new GirlHint(); GirlHint(_local1).myMC.mouseEnabled = true; GirlHint(_local1).myMC.addEventListener("click", hintHit); hintCont.addChild(_local1); hintArray = levels[(currentLevel - 1)][7]; GirlHint(_local1).textBox.text = String(hintArray.shift()); }; }; }; } public function clearCurrentDrawing():void{ if (drawing){ startPolySprite.graphics.clear(); drawingSprite.graphics.clear(); drawing = false; currentShape = new Array(); }; } public function exitBtnFtn(_arg1:MouseEvent):void{ toolBar.polyBtn.removeEventListener("click", polyBtnFtn); toolBar.startBtn.removeEventListener("click", startBtnFtn); toolBar.endBtn.removeEventListener("click", endBtnFtn); toolBar.photoBtn.removeEventListener("click", photoToolBtnFtn); toolBar.gridBtn.removeEventListener("click", gridBtnFtn); toolBar.goBtn.removeEventListener("click", goBtnFtn); toolBar.newBtn.removeEventListener("click", newBtnFtn); toolBar.exitBtn.removeEventListener("click", exitBtnFtn); toolBar.faceBtn.removeEventListener("click", faceBtnFtn); stage.removeEventListener("keyDown", keyDownsEditor); stage.removeEventListener("keyUp", keyUpsEditor); removeEventListener("enterFrame", everyFrame); myNull.removeEventListener(MouseEvent.CLICK, clicker); myNull.removeEventListener(MouseEvent.MOUSE_MOVE, mouseDowner); levelStage.visible = false; removeChild(toolBar); gotoAndStop("menu"); } public function intructionsFtn(_arg1:MouseEvent):void{ Tweener.addTween(introClip.menuClip, {x:(-(stage.stageWidth) * 2), time:0.5, transition:"easeOutBack"}); } public function clicker(_arg1:MouseEvent):void{ var _local2:Sprite; switch (tool){ case "polygon": if (drawing){ if (((!((currentShape[(currentShape.length - 1)][0] === myMouse.x))) || (!((currentShape[(currentShape.length - 1)][1] === myMouse.y))))){ trace(((("x:" + myMouse.x) + " y:") + myMouse.y)); if ((((currentShape[0][0] == myMouse.x)) && ((currentShape[0][1] == myMouse.y)))){ finishedShape(); } else { if (currentShape.length > 2){ drawingSprite.graphics.lineTo(myMouse.x, myMouse.y); currentShape.push(new Array(myMouse.x, myMouse.y)); drawingSprite.graphics.lineTo(currentShape[0][0], currentShape[0][1]); finishedShape(); } else { drawingSprite.graphics.lineTo(myMouse.x, myMouse.y); currentShape.push(new Array(myMouse.x, myMouse.y)); startPolySprite.graphics.beginFill(0xFF, 0.6); startPolySprite.graphics.drawCircle(myMouse.x, myMouse.y, 4); startPolySprite.graphics.endFill(); }; }; }; } else { startPolySprite.graphics.beginFill(0xFF0000, 0.6); startPolySprite.graphics.drawCircle(myMouse.x, myMouse.y, 4); startPolySprite.graphics.endFill(); currentShape = new Array(); drawingSprite.graphics.lineStyle(2, 0, 0.5); drawingSprite.graphics.beginFill(0xFF00, 0.5); drawingSprite.graphics.moveTo(myMouse.x, myMouse.y); currentShape.push(new Array(myMouse.x, myMouse.y)); drawing = true; trace(((("x:" + myMouse.x) + " y:") + myMouse.y)); }; break; case "select": break; case "start": startSprite.graphics.clear(); startSprite.graphics.beginFill(26163, 0.5); startSprite.graphics.drawCircle(myMouse.x, myMouse.y, 20); startPos = new b2Vec2(myMouse.x, myMouse.y); break; case "end": endSprite.graphics.clear(); endSprite.graphics.beginFill(0x990000, 0.5); endSprite.graphics.drawRect((myMouse.x - 18), (myMouse.y - 9), 36, 9); endPos = new b2Vec2(myMouse.x, myMouse.y); break; case "photo": _local2 = new Sprite(); _local2.graphics.beginFill(39423, 0.5); _local2.graphics.drawRoundRect((myMouse.x - 15), (myMouse.y - 15), 30, 30, 5); photoSprite.addChild(_local2); photoArray.push(new Array(myMouse.x, myMouse.y)); break; }; } public function createExit(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = ((_arg1.x * 30) / 6); _local3 = (((_arg1.y * 30) / 6) + 900); exitL.x = (_local2 - (2.1 * 30)); exitL.y = (_local3 - (1 * 30)); exitR.x = (_local2 + (2.1 * 30)); exitR.y = exitL.y; myExit.x = _local2; myExit.y = _local3; userDataGraphic.addChild(myExit); } public function removeBtns():void{ var _local1:int; _local1 = 0; while (_local1 < introClip.menuClip.scrollCrap.numChildren) { introClip.menuClip.scrollCrap.getChildAt(_local1).btn.removeEventListener("click", levelClicker); _local1++; }; while (introClip.menuClip.scrollCrap.numChildren > 0) { introClip.menuClip.scrollCrap.removeChildAt(0); }; introClip.menuClip.newGame.removeEventListener("click", newGameFtn); introClip.menuClip.selectLevel.removeEventListener("click", levelSelectFtn); introClip.menuClip.instructions.removeEventListener("click", intructionsFtn); introClip.menuClip.moreGames.removeEventListener("click", notDopplerLevelsBtn); introClip.menuClip.moreGames2.removeEventListener("click", playMoreBtnFtn); introClip.menuClip.levelEditor.removeEventListener("click", levelEditorFtn); introClip.menuClip.credits.removeEventListener("click", creditsFtn); introClip.menuClip.instructionsBackToMenu.removeEventListener("click", backToMenuFtn); introClip.menuClip.selectLevelBackToMenu.removeEventListener("click", backToMenuFtn); introClip.menuClip.creditsBackToMenu.removeEventListener("click", backToMenuFtn); introClip.menuClip.webmasterBtn.removeEventListener("click", webmasterFtn); introClip.menuClip.addDopplerGameBtn.removeEventListener("click", addDopplerGameFtn); introClip.menuClip.addPrankardGameBtn.removeEventListener("click", addPrankardGameFtn); introClip.menuClip.emailPrankardLicenseBtn.removeEventListener("click", emailPrankardLicenseFtn); introClip.menuClip.webmasterBackToMenu.removeEventListener("click", backToMenuFtn); introClip.menuClip.prankardSponsorBtn.removeEventListener("click", prankardBtnFtn); introClip.menuClip.notDopplerSponsorBtn.removeEventListener("click", playMoreBtnFtn); introClip.menuClip.creditSponsorBtn.removeEventListener("click", playMoreBtnFtn); introClip.menuClip.creditPrankardBtn.removeEventListener("click", prankardBtnFtn); introClip.menuClip.creditMusicBtn.removeEventListener("click", fixdBtnFtn); introClip.menuClip.creditVoiceBtn.removeEventListener("click", voiceBtnFtn); introClip.menuClip.completeSign.myBtn.removeEventListener("click", secretFtn); } public function gridBtnFtn(_arg1:MouseEvent):void{ if (gridNumber == 18){ gridNumber = 9; fineGrid.visible = true; } else { gridNumber = 18; fineGrid.visible = false; }; } public function polyBtnFtn(_arg1:MouseEvent):void{ tool = "polygon"; } function frame1(){ this.stop(); sponsorURL = new URLRequest("http://www.notdoppler.com/?ref=xtrememotor"); this.addEventListener("enterFrame", load_bar); sponsorNameText = "NotDoppler"; myMenu = new ContextMenu(); myMenu.hideBuiltInItems(); mySiteLink = new ContextMenuItem("Prankard"); myMenu.customItems.push(mySiteLink); this.contextMenu = myMenu; mySiteLink.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, prankardContextBtnFtn); SFXon = true; tweenAds.am.advertisement.notDopplerAd.visible = false; CPMStarPreloadContentSpotID = "370Q113768F2"; myPreloadAd = new AdLoader2(CPMStarPreloadContentSpotID); tweenAds.am.advertisement.adBox.addChild(myPreloadAd); myPreloadAd.displayAd(); trace(tweenAds); trace(tweenAds.am); trace(tweenAds.dopplerBtn); tweenAds.am.dopplerBtn.addEventListener("click", playMoreBtnFtn); } public function startBtnFtn(_arg1:MouseEvent):void{ tool = "start"; } function frame4(){ stop(); availSkip = 4; microMP3 = new MicroMP3Player(); microMP3.addSong(new Triple1()); microMP3.addSong(new Triple2()); microMP3.addSong(new Triple3()); microMP3.addSong(new Triple4()); microMP3.play(); addLevelBtns(); introClip.menuClip.newGame.addEventListener("click", newGameFtn); introClip.menuClip.selectLevel.addEventListener("click", levelSelectFtn); introClip.menuClip.instructions.addEventListener("click", intructionsFtn); introClip.menuClip.moreGames.addEventListener("click", notDopplerLevelsBtn); introClip.menuClip.moreGames2.addEventListener("click", playMoreBtnFtn); introClip.menuClip.levelEditor.addEventListener("click", levelEditorFtn); introClip.menuClip.credits.addEventListener("click", creditsFtn); introClip.menuClip.instructionsBackToMenu.addEventListener("click", backToMenuFtn); introClip.menuClip.selectLevelBackToMenu.addEventListener("click", backToMenuFtn); introClip.menuClip.prankardSponsorBtn.addEventListener("click", prankardBtnFtn); introClip.menuClip.notDopplerSponsorBtn.addEventListener("click", playMoreBtnFtn); introClip.menuClip.creditsBackToMenu.addEventListener("click", backToMenuFtn); introClip.menuClip.webmasterBtn.addEventListener("click", webmasterFtn); introClip.menuClip.addDopplerGameBtn.addEventListener("click", addDopplerGameFtn); introClip.menuClip.addPrankardGameBtn.addEventListener("click", addPrankardGameFtn); introClip.menuClip.emailPrankardLicenseBtn.addEventListener("click", emailPrankardLicenseFtn); introClip.menuClip.webmasterBackToMenu.addEventListener("click", backToMenuFtn); introClip.menuClip.creditSponsorBtn.addEventListener("click", playMoreBtnFtn); introClip.menuClip.creditPrankardBtn.addEventListener("click", prankardBtnFtn); introClip.menuClip.creditMusicBtn.addEventListener("click", fixdBtnFtn); introClip.menuClip.creditVoiceBtn.addEventListener("click", voiceBtnFtn); introClip.menuClip.sb.init(introClip.menuClip.scrollCrap, "easeOutBack", 2, false, 1.5); } function frame5(){ stop(); trace("before imports"); imageArray = new Array(); lowerLeft = new b2Vec2(); upperRight = new b2Vec2(); musicPlaying = true; loopIdle = new BikeIdle(); playIdle(); loopConstant = new BikeConstant(); bikeRevSound = new BikeRev(); slowMoSound = new SlowMo(); forTheWinSound = new ForTheWin(); Photo.importStage(this); myMP3 = new MP3Player(new WaitingForThis(), "Waiting For This", "Fixd Music", this); myMP3.addSong(new DirtyHigh(), "Dirty High (ERS REMIX)", "Fixd Music"); myMP3.play(); fps = new TextField(); addChild(fps); frameTracker = new frameRateKeeper(30, this); this.addChild(frameTracker); insults = new Array("Loser", "Failure", "Sucker", "Ouch", sponsorNameText, "You Suck", "Fail", "Ugly", "Sketchy", "Larry"); insultsnice = new Array("Sorry", sponsorNameText, "Try Again", "Oh dear", "Whoops", "Bad luck"); insultsBounds = new Array("Out of Bounds", "No Control", "Limited", "Border Patrol", "Outside the Box"); drawThis = new Sprite(); addChild(drawThis); userDataGraphic = new Sprite(); drawThis.addChild(userDataGraphic); bloodHUD = new Sprite(); addChild(bloodHUD); pauseCont = new Sprite(); addChild(pauseCont); setChildIndex(HUD, (numChildren - 1)); setChildIndex(PhotoSnap, (numChildren - 1)); setChildIndex(pauseCont, (numChildren - 1)); setChildIndex(mp3GUI, (numChildren - 1)); setChildIndex(myResults, (numChildren - 1)); hintCont = new Sprite(); addChild(hintCont); hintArray = new Array(); gravityDir = "down"; worldBox = new b2AABB(); worldBox.lowerBound.Set(-100, -100); worldBox.upperBound.Set(100, 100); gravity = new b2Vec2(0, 13); myWorld = new b2World(worldBox, gravity, true); dbgDraw = new b2DebugDraw(); dbgDraw.m_sprite = new Sprite(); addChild(dbgDraw.m_sprite); dbgDraw.m_drawScale = 30; dbgDraw.m_fillAlpha = 0.5; dbgDraw.m_lineThickness = 1; dbgDraw.m_drawFlags = b2DebugDraw.e_shapeBit; myWorld.SetDebugDraw(dbgDraw); m_timeStep = (1 / 30); m_iterations = 10; breakSpeed = 20; maxTorque = 30; bikeGraphicRef = 0; bloodPlayer = new BloodSplat(); fadingBike = false; varDown = false; varUp = false; varLeft = false; varRight = false; varSpace = false; stage.addEventListener("keyDown", keyDowns); stage.addEventListener("keyUp", keyUps); varPause = false; faceRight = true; turning = false; bikeBodyDef = new b2BodyDef(); myExit = new Exit(); createBike(new b2Vec2(0, 0)); photoRef = new Array(); exitL = new Sprite(); exitR = new Sprite(); userDataGraphic.addChild(exitL); userDataGraphic.addChild(exitR); myListener = new CoinContactListener(); currentWheelRef = backWheelRef; currentTieRef = backTieRef; userDataGraphic.x = (((-(midTieRef.GetWorldCenter().x) * 30) * userDataGraphic.scaleX) + (stage.stageWidth / 2)); userDataGraphic.y = (((-(midTieRef.GetWorldCenter().y) * 30) * userDataGraphic.scaleY) + (stage.stageHeight / 2)); frame = 0; seconds = 0; minutes = 0; currentStartPosition = new b2Vec2(); currentExitPosition = new b2Vec2(); startFaceRight = true; totalPhotos = 0; remainPhotos = 0; currentTime = 0; char = new MovieClip(); userDataGraphic.scaleX = (userDataGraphic.scaleY = 0.4); if (!(SFXon)){ mp3GUI.music.gotoAndStop(2); }; loadLevel(); addEventListener("enterFrame", update); checkAndAddHint(); mp3GUI.prevBtn.addEventListener(MouseEvent.CLICK, prevBtnFtn); mp3GUI.nextBtn.addEventListener(MouseEvent.CLICK, nextBtnFtn); mp3GUI.music.powerBtn.addEventListener("click", musicPwrFtn); mp3GUI.effects.powerBtn.addEventListener("click", effectsPwrFtn); waitForGirlInt = 0; currentAd = "none"; CPMStarContentSpotID = "370Q113768F2"; myAd = new AdLoader2(CPMStarContentSpotID); myResults.advertisement.adBox.addChild(myAd); notDopplerAdID = "http://notdoppler.com/feature/adbox-xtrememotor.swf"; notDopplerAd = new AdLoader(notDopplerAdID); myResults.advertisement.notDopplerAd.addChild(notDopplerAd); bottomRightButton.removeEventListener("click", playMoreBtnFtn); bottomRightButton.addEventListener("click", playMoreBtnFtn); setChildIndex(bottomRightButton, (getChildIndex(myResults) - 1)); } function frame7(){ stop(); setChildIndex(toolBar, (numChildren - 1)); setChildIndex(loadBox, (numChildren - 1)); setChildIndex(codeBox, (numChildren - 1)); codeBox.visible = false; loadBox.visible = false; trace("ran"); trace(codeBox.visible); addEventListener("enterFrame", everyFrame); myNull.addEventListener(MouseEvent.CLICK, clicker); myNull.addEventListener(MouseEvent.MOUSE_MOVE, mouseDowner); loadLevelEdit(); toolBar.faceGraphic.mouseEnabled = false; toolBar.selectBtn.addEventListener("click", selectBtnFtn); toolBar.polyBtn.addEventListener("click", polyBtnFtn); toolBar.startBtn.addEventListener("click", startBtnFtn); toolBar.endBtn.addEventListener("click", endBtnFtn); toolBar.photoBtn.addEventListener("click", photoToolBtnFtn); toolBar.gridBtn.addEventListener("click", gridBtnFtn); toolBar.goBtn.addEventListener("click", goBtnFtn); toolBar.helpBtn.addEventListener("click", helpBtnFtn); toolBar.newBtn.addEventListener("click", newBtnFtn); toolBar.exitBtn.addEventListener("click", exitBtnFtn); toolBar.faceBtn.addEventListener("click", faceBtnFtn); toolBar.load1.addEventListener("click", load1Ftn); toolBar.load2.addEventListener("click", load2Ftn); toolBar.load3.addEventListener("click", load3Ftn); toolBar.load4.addEventListener("click", load4Ftn); toolBar.load5.addEventListener("click", load5Ftn); varDelete = false; stage.addEventListener("keyDown", keyDownsEditor); stage.addEventListener("keyUp", keyUpsEditor); myFont = new Font1(); _toolTip = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.polyBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip); toolBar.polyBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip); _toolTip1 = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.startBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip1); toolBar.startBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip1); _toolTip2 = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.endBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip2); toolBar.endBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip2); _toolTip3 = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.photoBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip3); toolBar.photoBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip3); _toolTip4 = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.gridBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip4); toolBar.gridBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip4); _toolTip5 = OBO_ToolTip.createToolTip(this, myFont, 9397249, 0.8, OBO_ToolTip.ROUND_TIP, 0xFFFFFF, 16, false); toolBar.faceBtn.addEventListener(MouseEvent.ROLL_OVER, displayToolTip5); toolBar.faceBtn.addEventListener(MouseEvent.ROLL_OUT, removeToolTip5); } public function goBtnFtn(_arg1:MouseEvent):void{ toolBar.polyBtn.removeEventListener("click", polyBtnFtn); toolBar.startBtn.removeEventListener("click", startBtnFtn); toolBar.endBtn.removeEventListener("click", endBtnFtn); toolBar.photoBtn.removeEventListener("click", photoToolBtnFtn); toolBar.gridBtn.removeEventListener("click", gridBtnFtn); toolBar.goBtn.removeEventListener("click", goBtnFtn); toolBar.newBtn.removeEventListener("click", newBtnFtn); toolBar.exitBtn.removeEventListener("click", exitBtnFtn); toolBar.faceBtn.removeEventListener("click", faceBtnFtn); stage.removeEventListener("keyDown", keyDownsEditor); stage.removeEventListener("keyUp", keyUpsEditor); removeEventListener("enterFrame", everyFrame); myNull.removeEventListener(MouseEvent.CLICK, clicker); myNull.removeEventListener(MouseEvent.MOUSE_MOVE, mouseDowner); saveLevel(); levelStage.visible = false; removeChild(toolBar); gotoAndStop("game"); } function frame3(){ addEventListener("enterFrame", waitingAgain); myLevelStore = new levelStore(); levels = myLevelStore.levels; currentLevel = 1; myTimes = new Array(); userLevels = new Array(); so = SharedObject.getLocal("userData"); so2 = SharedObject.getLocal("userLevels"); loadData(); gameMode = new String("game"); } public function waitForHeli(_arg1:Event):void{ } function frame2(){ addEventListener("enterFrame", waitingAgainSponsor); newIntroPlay.button.addEventListener("click", playMoreBtnFtn); } public function prankardBtnFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.prankard.com/"); navigateToURL(_local2, "_blank"); } public function fadeBike(_arg1:Event):void{ backTieRef.m_userData.alpha = (backTieRef.m_userData.alpha - 0.2); backWheelRef.m_userData.alpha = (backWheelRef.m_userData.alpha - 0.2); frontWheelRef.m_userData.alpha = (frontWheelRef.m_userData.alpha - 0.2); if (frontWheelRef.m_userData.alpha <= 0.2){ backTieRef.m_userData.alpha = 1; backWheelRef.m_userData.alpha = 1; frontWheelRef.m_userData.alpha = 1; CoinContactListener.reset = false; resetLevel(); fadingBike = false; removeEventListener("enterFrame", fadeBike); }; } public function backToEditorFromResultsFtn(_arg1:MouseEvent):void{ var _local2:int; myResults.continueBtn.removeEventListener("click", continueBtnFtn); myResults.moreGamesBtn.removeEventListener("click", playMoreBtnFtn); myResults.retryBtn.removeEventListener("click", retryBtnFtn); myResults.menuBtn.removeEventListener("click", endGameFromResults); myResults.continueBtn.removeEventListener("click", backToEditorFromResultsFtn); _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; stage.removeEventListener("keyDown", keyDowns); stage.removeEventListener("keyUp", keyUps); while (userDataGraphic.numChildren > 0) { userDataGraphic.removeChildAt(0); }; removeChild(HUD); removeChild(PhotoSnap); removeChild(mp3GUI); removeChild(myResults); stopIdle(); stopConstant(); mp3GUI.prevBtn.removeEventListener("click", prevBtnFtn); mp3GUI.nextBtn.removeEventListener("click", nextBtnFtn); mp3GUI.music.powerBtn.removeEventListener("click", musicPwrFtn); mp3GUI.effects.powerBtn.removeEventListener("click", effectsPwrFtn); myMP3.stop(); bottomRightButton.removeEventListener("click", playMoreBtnFtn); gotoAndStop("editorStop"); levelStage.visible = true; } public function secretFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.prankard.com/xmcomplete/"); navigateToURL(_local2, "_blank"); } public function notDopplerLevelsBtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.notdoppler.com/xtrememotor.php"); navigateToURL(_local2, "_blank"); } public function musicPwrFtn(_arg1:MouseEvent):void{ if (myMP3.getPlaying()){ myMP3.stop(); mp3GUI.music.gotoAndStop(2); } else { myMP3.play(); mp3GUI.music.gotoAndStop(1); }; } public function stringPhoto(_arg1:Array):String{ var _local2:String; var _local3:int; _local2 = new String(); _local3 = 0; while (_local3 < _arg1.length) { if (_local2.length !== 0){ _local2 = (_local2 + ","); }; _local2 = (((((_local2 + "new b2Vec2(") + _arg1[_local3][0]) + ",") + _arg1[_local3][1]) + ")"); _local3++; }; return (_local2); } public function hintButton(_arg1:MouseEvent):void{ if (hintArray.length > 0){ GirlHint(hintCont.getChildAt(0)).textBox.text = hintArray.shift(); } else { GirlHint(hintCont.getChildAt(0)).myButton.removeEventListener("click", hintButton); hintCont.removeChildAt(0); addEventListener("enterFrame", update); }; } function frame6(){ gameMode = "edit"; currentLevel = 1; shapesArray = new Array(); startPos = new b2Vec2(); endPos = new b2Vec2(); photoArray = new Array(); faceRightEdit = true; drawing = false; myMouse = new Sprite(); myMouse.graphics.lineStyle(3, 0xFF0000); myMouse.graphics.moveTo(-7, -7); myMouse.graphics.lineTo(7, 7); myMouse.graphics.moveTo(7, -7); myMouse.graphics.lineTo(-7, 7); gridNumber = 18; levelStage = new Sprite(); tool = "polygon"; grid = new Sprite(); grid.graphics.lineStyle(2, 0xCCCCCC); i = -80; while (i <= 80) { if (Math.floor((i / 2)) == Math.ceil((i / 2))){ grid.graphics.lineStyle(2, 0xAAAAAA); } else { grid.graphics.lineStyle(2, 0xCCCCCC); }; grid.graphics.moveTo((i * 18), (-18 * 80)); grid.graphics.lineTo((i * 18), (18 * 80)); grid.graphics.moveTo((-18 * 80), (i * 18)); grid.graphics.lineTo((18 * 80), (i * 18)); i++; }; grid.graphics.lineStyle(3, 0x111111); grid.graphics.moveTo(0, (-18 * 80)); grid.graphics.lineTo(0, (18 * 80)); grid.graphics.moveTo((-18 * 80), 0); grid.graphics.lineTo((18 * 80), 0); fineGrid = new Sprite(); fineGrid.graphics.lineStyle(1, 0xCCCCCC); i = -80; while (i < 80) { fineGrid.graphics.moveTo(((i * 18) + 9), (-18 * 80)); fineGrid.graphics.lineTo(((i * 18) + 9), (18 * 80)); fineGrid.graphics.moveTo((-18 * 80), ((i * 18) + 9)); fineGrid.graphics.lineTo((18 * 80), ((i * 18) + 9)); i++; }; drawingSprite = new Sprite(); startPolySprite = new Sprite(); startSprite = new Sprite(); endSprite = new Sprite(); photoSprite = new Sprite(); myNull = new Sprite(); myNull.graphics.beginFill(0, 0.2); myNull.graphics.drawRect(((-18 * 80) - 5), ((-18 * 80) - 5), (((80 * 2) * 18) + 10), (((80 * 2) * 18) + 10)); myNull.graphics.endFill(); addChild(levelStage); levelStage.addChild(grid); levelStage.addChild(fineGrid); levelStage.addChild(myMouse); levelStage.addChild(drawingSprite); levelStage.addChild(startSprite); levelStage.addChild(endSprite); levelStage.addChild(photoSprite); levelStage.addChild(startPolySprite); levelStage.addChild(myNull); codeBox = new Code(); codeBox.x = 50; codeBox.y = 20; addChild(codeBox); loadBox = new Code(); loadBox.x = 50; loadBox.y = 20; addChild(loadBox); fineGrid.visible = false; currentShape = new Array(); } public function drawShape(_arg1:Array):void{ var _local2:int; var _local3:b2PolygonDef; var _local4:int; var _local5:b2BodyDef; var _local6:b2Body; _arg1 = _arg1[0]; _local2 = 0; while (_local2 < _arg1.length) { _local3 = new b2PolygonDef(); _local3.vertexCount = _arg1[_local2].length; _local4 = 0; while (_local4 < _arg1[_local2].length) { _local3.vertices[_local4].Set((_arg1[_local2][_local4][0] / 30), ((_arg1[_local2][_local4][1] / 30) + 30)); _local4++; }; _local5 = new b2BodyDef(); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local3); _local6.SetMassFromShapes(); _local2++; }; } public function addDopplerGameFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.notdoppler.com/webmasters.php?ref=xtrememotor"); navigateToURL(_local2, "_blank"); } public function stringArray(_arg1:Array):String{ var _local2:String; var _local3:int; var _local4:int; var _local5:*; _local2 = new String(); _local3 = 0; while (_local3 < _arg1.length) { _local4 = 0; while (_local4 < _arg1.length) { _local5 = (("[" + _arg1[_local3].join("],[")) + "]"); _local4++; }; if (_local2.length !== 0){ _local2 = (_local2 + ","); }; _local2 = (((_local2 + "[") + _local5) + "]"); _local3++; }; return (_local2); } public function update(_arg1:Event):void{ myWorld.Step(Photo.m_timeStep, m_iterations); if (CoinContactListener.reset){ if (!(fadingBike)){ addBlood(); fadingBike = true; addEventListener("enterFrame", fadeBike); }; }; updateCamera(); updateGraphics(); if (varUp){ if (faceRight){ if (backWheelRef.GetAngularVelocity() > maxTorque){ } else { backWheelRef.ApplyTorque(100); }; currentTieRef.ApplyTorque(-10); } else { if (frontWheelRef.GetAngularVelocity() < -(maxTorque)){ } else { frontWheelRef.ApplyTorque(-100); }; currentTieRef.ApplyTorque(10); }; }; if (currentSpeed < 0.05){ if ((((exitR.x < (frontWheelRef.GetUserData().x + 100))) && ((exitR.x > (frontWheelRef.GetUserData().x - 100))))){ if ((((exitR.y < (frontWheelRef.GetUserData().y + 20))) && ((exitR.y > (frontWheelRef.GetUserData().y - 20))))){ if ((((exitL.x < (backWheelRef.GetUserData().x + 100))) && ((exitL.x > (backWheelRef.GetUserData().x - 100))))){ if ((((exitL.y < (backWheelRef.GetUserData().y + 20))) && ((exitL.y > (backWheelRef.GetUserData().y - 20))))){ if (remainPhotos <= 0){ waitForGirl(); } else { char.gotoAndStop(2); }; }; } else { char.gotoAndStop(1); }; }; } else { char.gotoAndStop(1); }; }; if (varDown){ currentSpeed = backWheelRef.GetAngularVelocity(); if (currentSpeed > breakSpeed){ backWheelRef.SetAngularVelocity((currentSpeed - breakSpeed)); } else { if (currentSpeed < -(breakSpeed)){ backWheelRef.SetAngularVelocity((currentSpeed + breakSpeed)); } else { backWheelRef.SetAngularVelocity(0); }; }; currentSpeed = frontWheelRef.GetAngularVelocity(); if (currentSpeed > breakSpeed){ frontWheelRef.SetAngularVelocity((currentSpeed - breakSpeed)); } else { if (currentSpeed < -(breakSpeed)){ frontWheelRef.SetAngularVelocity((currentSpeed + breakSpeed)); } else { frontWheelRef.SetAngularVelocity(0); }; }; }; if (varRight){ currentTieRef.ApplyTorque(100); if (faceRight){ bikeBodyDef.userData.char.gotoAndStop(3); } else { bikeBodyDef.userData.char.gotoAndStop(2); }; }; if (varLeft){ currentTieRef.ApplyTorque(-100); if (faceRight){ bikeBodyDef.userData.char.gotoAndStop(2); } else { bikeBodyDef.userData.char.gotoAndStop(3); }; } else { if (((!(varLeft)) && (!(varRight)))){ bikeBodyDef.userData.char.gotoAndStop(1); }; }; if (Photo.beginSnap == true){ Photo.beginSnap = false; PhotoSnap.play(); remainPhotos--; HUD.remainText.text = remainPhotos; drawImage(); }; frame++; if (frame > 29){ frame = 0; seconds++; if (seconds > 59){ seconds = 0; minutes++; }; }; HUD.timerText.text = ((((stringTime(minutes) + ":") + stringTime(seconds)) + ":") + stringTime((frame * 3.3))); if ((((mouseX < 300)) && ((mouseY < 75)))){ if (mp3GUI.y < 0){ mp3GUI.y = (mp3GUI.y + 5); }; } else { if (mp3GUI.y > -75){ mp3GUI.y = (mp3GUI.y - 5); }; }; if ((((((((midTieRef.GetWorldCenter().x > 950)) || ((midTieRef.GetWorldCenter().x < -950)))) || ((midTieRef.GetWorldCenter().y > 950)))) || ((midTieRef.GetWorldCenter().x < -950)))){ trace("Out of Bounds"); resetLevel(); addBloodBounds(); }; } public function loopIdleFunction(_arg1:Event):void{ if (idleChannel != null){ idleChannel.removeEventListener(Event.SOUND_COMPLETE, loopIdleFunction); playIdle(); }; } public function drawScaleShape(_arg1:Array):void{ var _local2:Sprite; var _local3:SandTexture3; var _local4:int; var _local5:b2PolygonDef; var _local6:int; var _local7:b2BodyDef; var _local8:b2Body; _local2 = new Sprite(); _local2.y = 900; _local3 = new SandTexture3(0x0100, 0x0100); _local4 = 0; while (_local4 < _arg1.length) { _local2.graphics.beginBitmapFill(_local3, null, true, true); _local2.graphics.moveTo((_arg1[_local4][0][0] * 5), (_arg1[_local4][0][1] * 5)); _local5 = new b2PolygonDef(); _local5.vertexCount = _arg1[_local4].length; _local6 = 0; while (_local6 < _arg1[_local4].length) { _local5.vertices[_local6].Set(((_arg1[_local4][_local6][0] / 30) * 5), (((_arg1[_local4][_local6][1] / 30) * 5) + 30)); _local2.graphics.lineTo((_arg1[_local4][_local6][0] * 5), (_arg1[_local4][_local6][1] * 5)); _local6++; }; _local2.graphics.endFill(); _local7 = new b2BodyDef(); _local8 = myWorld.CreateBody(_local7); _local8.CreateShape(_local5); _local8.SetMassFromShapes(); _local4++; }; userDataGraphic.addChild(_local2); } public function displayToolTip(_arg1:MouseEvent):void{ _toolTip.addTip("Create Polygon Tool"); } public function continueBtnFtn(_arg1:MouseEvent):void{ var _local2:int; currentLevel++; myResults.continueBtn.removeEventListener("click", continueBtnFtn); myResults.moreGamesBtn.removeEventListener("click", playMoreBtnFtn); myResults.retryBtn.removeEventListener("click", retryBtnFtn); myResults.menuBtn.removeEventListener("click", endGameFromResults); myResults.continueBtn.removeEventListener("click", backToEditorFromResultsFtn); _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; loadLevel(); addEventListener("enterFrame", update); checkAndAddHint(); Tweener.addTween(myResults.imageSlider, {x:0, time:0.7, transition:"easeOutBack"}); Tweener.addTween(myResults, {y:400, time:0.7, transition:"easeOutBack"}); removeAdvertisement(); } public function photoToolBtnFtn(_arg1:MouseEvent):void{ tool = "photo"; } public function addPrankardGameFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.flashgamelicense.com/view_game.php?game_id=4023"); navigateToURL(_local2, "_blank"); } public function keyDowns(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == 37){ varLeft = true; }; if (_arg1.keyCode == 38){ if (varUp == false){ if (SFXon){ bikeRevSound.play(0, 0); stopConstant(); playConstant(); }; }; varUp = true; }; if (_arg1.keyCode == 39){ varRight = true; }; if (_arg1.keyCode == 40){ varDown = true; }; if (_arg1.keyCode == 32){ if (!(turning)){ twistBike(); }; varSpace = true; }; if (_arg1.keyCode == 82){ resetLevel(); }; if (_arg1.keyCode == 83){ }; } public function prankardContextBtnFtn(_arg1:ContextMenuEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.prankard.com/"); navigateToURL(_local2, "_blank"); } public function backToEditorFtn(_arg1:MouseEvent):void{ var _local2:int; _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; removeEventListener("enterFrame", update); stage.removeEventListener("keyDown", keyDowns); stage.removeEventListener("keyUp", keyUps); while (userDataGraphic.numChildren > 0) { userDataGraphic.removeChildAt(0); }; removeChild(HUD); removeChild(PhotoSnap); removeChild(mp3GUI); removeChild(myResults); stopIdle(); stopConstant(); PauseMenu(pauseCont.getChildAt(0)).resetLevel.removeEventListener("click", resetBtnFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", skipLevelFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", backToEditorFtn); PauseMenu(pauseCont.getChildAt(0)).qualityBtn.removeEventListener("click", qualityBtnFtn); PauseMenu(pauseCont.getChildAt(0)).menuBtn.removeEventListener("click", endGameFromPause); pauseCont.removeChildAt(0); mp3GUI.prevBtn.removeEventListener("click", prevBtnFtn); mp3GUI.nextBtn.removeEventListener("click", nextBtnFtn); mp3GUI.music.powerBtn.removeEventListener("click", musicPwrFtn); mp3GUI.effects.powerBtn.removeEventListener("click", effectsPwrFtn); myMP3.stop(); bottomRightButton.removeEventListener("click", playMoreBtnFtn); gotoAndStop("editorStop"); levelStage.visible = true; } public function siteLock():Boolean{ var _local1:String; var _local2:String; _local1 = "prankard.com"; _local2 = this.root.loaderInfo.url.split("/")[2]; return (false); } public function waitingAgain(_arg1:Event):void{ if (introPlay.currentFrame == introPlay.totalFrames){ removeEventListener("enterFrame", waitingAgain); nextFrame(); }; } public function keyDownsEditor(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == 37){ varLeft = true; }; if (_arg1.keyCode == 38){ varUp = true; }; if (_arg1.keyCode == 39){ varRight = true; }; if (_arg1.keyCode == 40){ varDown = true; }; if (_arg1.keyCode == 32){ varSpace = true; }; if (_arg1.keyCode == 82){ }; if (_arg1.keyCode == 46){ }; } public function playIdle():void{ if (SFXon){ idleChannel = loopIdle.play(); idleChannel.addEventListener(Event.SOUND_COMPLETE, loopIdleFunction); }; } public function fixdBtnFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://fixdmusic.com/"); navigateToURL(_local2, "_blank"); } public function voiceBtnFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.freewebs.com/cerisepanda/"); navigateToURL(_local2, "_blank"); } public function load_bar(_arg1:Event){ intro.preloader.lbar.scaleX = (this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal); if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal){ if (siteLock()){ this.addEventListener("enterFrame", keepLocked); } else { this.removeEventListener("enterFrame", load_bar); MochiBot.track(this, "a5ff5c97"); intro.preloader.wheelsCont.gotoAndStop(2); intro.preloader.wheelsCont.myButton.addEventListener("click", clickToPlay); }; }; } public function keyUpsEditor(_arg1:KeyboardEvent):void{ var _local2:Boolean; if (_arg1.keyCode == 37){ varLeft = false; }; if (_arg1.keyCode == 38){ varUp = false; }; if (_arg1.keyCode == 39){ varRight = false; }; if (_arg1.keyCode == 40){ varDown = false; }; if (_arg1.keyCode == 32){ varSpace = false; }; if (_arg1.keyCode == 46){ _local2 = false; i = 0; while (i < photoArray.length) { if (photoSprite.getChildAt(i).hitTestPoint(mouseX, mouseY)){ photoSprite.removeChildAt(i); photoArray.splice(i, 1); _local2 = true; break; }; i++; }; if (!(_local2)){ i = 0; while (i < shapesArray.length) { if (drawingSprite.getChildAt(i).hitTestPoint(mouseX, mouseY)){ drawingSprite.removeChildAt(i); shapesArray.splice(i, 1); break; }; i++; }; }; }; if (_arg1.keyCode == 27){ clearCurrentDrawing(); }; } public function saveLevels():void{ so2.data.levels = userLevels; so2.flush(); } public function updateCamera():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = (((-(midTieRef.GetWorldCenter().x) * 30) * userDataGraphic.scaleX) + (stage.stageWidth / 2)); _local2 = (((-(midTieRef.GetWorldCenter().y) * 30) * userDataGraphic.scaleY) + (stage.stageHeight / 2)); _local3 = Math.sqrt((((userDataGraphic.x - _local1) * (userDataGraphic.x - _local1)) + ((userDataGraphic.y - _local2) * (userDataGraphic.y - _local2)))); userDataGraphic.x = _local1; userDataGraphic.y = _local2; Sky.x = ((-(midTieRef.GetWorldCenter().x) / 4) - 100); Sky.y = ((-(midTieRef.GetWorldCenter().y) / 4) - 100); } public function removeToolTip1(_arg1:MouseEvent):void{ _toolTip1.removeTip(); } public function load1Ftn(_arg1:MouseEvent):void{ if (currentLevel == 1){ saveLevel(); } else { currentLevel = 1; loadLevelEdit(); }; } public function removeToolTip2(_arg1:MouseEvent):void{ _toolTip2.removeTip(); } public function removeToolTip3(_arg1:MouseEvent):void{ _toolTip3.removeTip(); } public function removeToolTip4(_arg1:MouseEvent):void{ _toolTip4.removeTip(); } public function removeToolTip5(_arg1:MouseEvent):void{ _toolTip5.removeTip(); } public function prevBtnFtn(_arg1:MouseEvent):void{ if (myMP3.getPlaying()){ myMP3.playPrevTrack(); } else { myMP3.prevTrack(); }; } public function lowerVolume():void{ if (SFXon){ slowMoSound.play(); }; myMP3.setVolume(0.2); } public function selectBtnFtn(_arg1:MouseEvent):void{ tool = "select"; } public function loadLevelEdit():void{ var i:int; var tempPhoto:Sprite; newLevel(); if (so2.data.levels[(currentLevel - 1)].length > 0){ shapesArray = so2.data.levels[(currentLevel - 1)][0][0]; } else { shapesArray = new Array(); }; photoArray = so2.data.levels[(currentLevel - 1)][1]; startPos = new b2Vec2(so2.data.levels[(currentLevel - 1)][2][0], so2.data.levels[(currentLevel - 1)][2][1]); trace(so2.data.levels[(currentLevel - 1)][2]); endPos = new b2Vec2(so2.data.levels[(currentLevel - 1)][3][0], so2.data.levels[(currentLevel - 1)][3][1]); faceRightEdit = so2.data.levels[(currentLevel - 1)][4]; try { i = 0; while (i < shapesArray.length) { drawingSprite.addChild(drawItem(shapesArray[i])); i = (i + 1); }; } catch(e:Error) { trace(e); }; if (faceRightEdit){ toolBar.faceGraphic.gotoAndStop(1); } else { toolBar.faceGraphic.gotoAndStop(2); }; startSprite.graphics.clear(); startSprite.graphics.beginFill(26163, 0.5); startSprite.graphics.drawCircle(startPos.x, startPos.y, 20); endSprite.graphics.clear(); endSprite.graphics.beginFill(0x990000, 0.5); endSprite.graphics.drawRect((endPos.x - 18), (endPos.y - 9), 36, 9); i = 0; while (i < photoArray.length) { tempPhoto = new Sprite(); tempPhoto.graphics.beginFill(39423, 0.5); tempPhoto.graphics.drawRoundRect((photoArray[i][0] - 15), (photoArray[i][1] - 15), 30, 30, 5); photoSprite.addChild(tempPhoto); i = (i + 1); }; trace("Begining to save"); saveLevel(); trace(("loaded level " + currentLevel)); } public function levelEditorFtn(_arg1:MouseEvent):void{ removeBtns(); microMP3.stop(); currentLevel = 1; gotoAndPlay("editor"); } public function advertisementCode():void{ var _local1:Number; _local1 = Math.random(); if (_local1 <= 0.25){ currentAd = "notDoppler"; notDopplerAd.displayAd(); } else { currentAd = "cpmStar"; myAd.displayAd(); }; trace(("AdType: " + currentAd)); trace(("Random Number: " + _local1)); } public function createCharacter(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; char = new Character(); _local2 = ((_arg1.x * 30) / 6); _local3 = (((_arg1.y * 30) / 6) + 900); char.x = _local2; char.y = _local3; userDataGraphic.addChild(char); char.gotoAndStop(1); } public function stringToNestedArray(_arg1:String):Array{ var _local2:Array; var _local3:int; var _local4:int; var _local5:int; var _local6:Array; _local2 = new Array(); while (_arg1.length > 0) { _local3 = _arg1.indexOf("["); _local4 = _arg1.indexOf("]"); _local5 = _arg1.indexOf(","); if (_local5 < _local3){ _local6 = new Array(); }; }; return (_local6); } public function loadData():void{ var _local1:Array; var _local2:int; var _local3:Array; if (so.size == 0){ _local1 = new Array(); _local2 = 0; while (_local2 < levels.length) { _local1.push(99999); _local2++; }; so.data.times = _local1; so.flush(); myTimes = _local1; } else { myTimes = so.data.times; if (myTimes.length < levels.length){ while (myTimes.length < levels.length) { myTimes.push(99999); }; so.data.times = myTimes; so.flush(); trace("made save larger"); }; }; if (so2.size == 0){ _local3 = new Array(); _local3.push(new Array(new Array(new Array()), new Array(), new Array(0, 0), new Array(0, 0), true)); _local3.push(new Array(new Array(new Array()), new Array(), new Array(0, 0), new Array(0, 0), true)); _local3.push(new Array(new Array(new Array()), new Array(), new Array(0, 0), new Array(0, 0), true)); _local3.push(new Array(new Array(new Array()), new Array(), new Array(0, 0), new Array(0, 0), true)); _local3.push(new Array(new Array(new Array()), new Array(), new Array(0, 0), new Array(0, 0), true)); so2.data.levels = _local3; so2.flush(); userLevels = _local3; } else { userLevels = so2.data.levels; }; } public function codeBtnFtn(_arg1:MouseEvent):void{ if (codeBox.visible){ codeBox.visible = false; } else { codeBox.code.text = (((((((((((((((((((((((((((((("drawShapes = new Array(" + stringArray(shapesArray)) + ");") + "\r") + "photoPos = new Array(") + stringPhoto(photoArray)) + ");") + "\r") + "startPos = new b2Vec2(") + startPos.x) + ", ") + startPos.y) + ");") + "\r") + "exitPos = new b2Vec2(") + endPos.x) + ", ") + endPos.y) + ");") + "\r") + "faceRight = true") + "\r") + "singleLevel = new Array(drawShapes, photoPos, startPos, exitPos, faceRight);") + "\r") + "levels.push(singleLevel);") + "\r") + "\r") + so2.data.levels[(currentLevel - 1)]) + "\r") + "\r") + returnCode()); codeBox.visible = true; }; trace((("drawShapes = new Array(" + stringArray(shapesArray)) + ");")); trace((("photoPos = new Array(" + stringPhoto(photoArray)) + ");")); trace((((("startPos = new b2Vec2(" + startPos.x) + ", ") + startPos.y) + ");")); trace((((("exitPos = new b2Vec2(" + endPos.x) + ", ") + endPos.y) + ");")); trace("faceRight = true"); trace("singleLevel = new Array(drawShapes, photoPos, startPos, exitPos, faceRight);"); trace("levels.push(singleLevel);"); } public function emailPrankardLicenseFtn(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("mailto:license@prankard.com"); navigateToURL(_local2, "_self"); } public function load2Ftn(_arg1:MouseEvent):void{ if (currentLevel == 2){ saveLevel(); } else { currentLevel = 2; loadLevelEdit(); }; } public function effectsPwrFtn(_arg1:MouseEvent):void{ if (SFXon){ SFXon = false; playIdle(); mp3GUI.effects.gotoAndStop(2); } else { SFXon = true; stopIdle(); stopConstant(); mp3GUI.effects.gotoAndStop(1); }; } public function stopConstant():void{ if (constantChannel != null){ removeEventListener("enterFrame", fadeConstant); constantChannel.stop(); constantChannel.removeEventListener(Event.SOUND_COMPLETE, loopConstantFunction); }; } public function resetBike(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; Photo.m_timeStep = (1 / 30); _local2 = ((_arg1.x / 30) * 5); _local3 = (((_arg1.y / 30) * 5) + (900 / 30)); backTieRef.PutToSleep(); midTieRef.PutToSleep(); frontTieRef.PutToSleep(); backWheelRef.PutToSleep(); frontWheelRef.PutToSleep(); headRef.PutToSleep(); backTieRef.SetXForm(new b2Vec2((_local2 - 1.6), (_local3 - 1)), 0); midTieRef.SetXForm(new b2Vec2(_local2, _local3), 0); frontTieRef.SetXForm(new b2Vec2((_local2 - 1.6), (_local3 - 1)), 0); backWheelRef.SetXForm(new b2Vec2((_local2 - 2.1), (_local3 + 0.5)), 0); frontWheelRef.SetXForm(new b2Vec2((_local2 + 2.1), (_local3 + 0.5)), 0); headRef.SetXForm(new b2Vec2(_local2, (_local3 - 3)), 0); backTieRef.WakeUp(); midTieRef.WakeUp(); frontTieRef.WakeUp(); backWheelRef.WakeUp(); frontWheelRef.WakeUp(); headRef.WakeUp(); if (turning){ removeEventListener("enterFrame", twistRight); removeEventListener("enterFrame", twistLeft); turning = false; }; if (startFaceRight){ bikeBodyDef.userData.gotoAndStop(1); } else { bikeBodyDef.userData.gotoAndStop(6); }; faceRight = startFaceRight; } public function addBlood():void{ bloodPlayer = new BloodSplat(); bloodPlayer.x = (stage.stageWidth / 2); bloodPlayer.y = (stage.stageHeight / 2); bloodPlayer.gotoAndPlay(2); bloodPlayer.deathText.text = insults[Math.floor((Math.random() * insults.length))]; bloodHUD.addChild(bloodPlayer); addEventListener("enterFrame", waitForBlood); } public function skipLevelFtn(_arg1:MouseEvent):void{ currentLevel++; loadLevel(); togglePause(); checkAndAddHint(); } public function newLevel():void{ clearCurrentDrawing(); while (drawingSprite.numChildren > 0) { drawingSprite.removeChildAt(0); }; shapesArray = new Array(); startSprite.graphics.clear(); startPos = new b2Vec2(0, 0); endSprite.graphics.clear(); endPos = new b2Vec2(0, 0); while (photoSprite.numChildren > 0) { photoSprite.removeChildAt(0); }; photoArray = new Array(); trace(("Blank slate for slot " + currentLevel)); } public function loadBtnFtn(_arg1:MouseEvent):void{ if (loadBox.visible){ loadBox.visible = false; } else { loadBox.code.text = ""; loadBox.visible = true; }; } public function addBloodBounds():void{ bloodPlayer = new BloodSplat(); bloodPlayer.x = (stage.stageWidth / 2); bloodPlayer.y = (stage.stageHeight / 2); bloodPlayer.gotoAndPlay(2); bloodPlayer.deathText.text = insultsBounds[Math.floor((Math.random() * insultsBounds.length))]; bloodHUD.addChild(bloodPlayer); addEventListener("enterFrame", waitForBlood); } public function mouseDowner(_arg1:MouseEvent):void{ var _local2:int; var _local3:int; var _local4:int; if (varSpace){ if (tool == "select"){ _local2 = 0; while (_local2 < shapesArray.length) { if (drawingSprite.getChildAt(_local2).hitTestPoint(mouseX, mouseY)){ _local3 = (Math.round(((mouseX - levelStage.x) / gridNumber)) * gridNumber); if (_local3 !== myMouse.x){ drawingSprite.getChildAt(_local2).x = (drawingSprite.getChildAt(_local2).x + (_local3 - myMouse.x)); shapesArray[_local2] = arrayPlusX(shapesArray[_local2], (_local3 - myMouse.x)); }; _local4 = (Math.round(((mouseY - levelStage.y) / gridNumber)) * gridNumber); if (_local4 !== myMouse.y){ drawingSprite.getChildAt(_local2).y = (drawingSprite.getChildAt(_local2).y + (_local4 - myMouse.y)); shapesArray[_local2] = arrayPlusY(shapesArray[_local2], (_local4 - myMouse.y)); }; break; }; _local2++; }; } else { levelStage.x = (levelStage.x + (lastX - mouseX)); levelStage.y = (levelStage.y + (lastY - mouseY)); }; }; } public function load3Ftn(_arg1:MouseEvent):void{ if (currentLevel == 3){ saveLevel(); } else { currentLevel = 3; loadLevelEdit(); }; } public function faceBtnFtn(_arg1:MouseEvent):void{ if (faceRightEdit){ faceRightEdit = false; toolBar.faceGraphic.gotoAndStop(2); } else { toolBar.faceGraphic.gotoAndStop(1); faceRightEdit = true; }; } public function retryBtnFtn(_arg1:MouseEvent):void{ var _local2:int; myResults.retryBtn.removeEventListener("click", retryBtnFtn); myResults.continueBtn.removeEventListener("click", continueBtnFtn); myResults.moreGamesBtn.removeEventListener("click", playMoreBtnFtn); myResults.menuBtn.removeEventListener("click", endGameFromResults); myResults.continueBtn.removeEventListener("click", backToEditorFromResultsFtn); _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; loadLevel(); addEventListener("enterFrame", update); checkAndAddHint(); Tweener.addTween(myResults.imageSlider, {x:0, time:0.7, transition:"easeOutBack"}); Tweener.addTween(myResults, {y:400, time:0.7, transition:"easeOutBack"}); removeAdvertisement(); } public function raiseVolume():void{ myMP3.setVolume(1); } public function photoBtnFtn(_arg1:MouseEvent):void{ Tweener.addTween(myResults.imageSlider, {x:(-(((_arg1.target.parent.x / 40) - 1)) * stage.stageWidth), time:0.7, transition:"easeOutBack"}); } public function nextBtnFtn(_arg1:MouseEvent):void{ if (myMP3.getPlaying()){ myMP3.playNextTrack(); } else { myMP3.nextTrack(); }; } public function loadLevel():void{ worldBox.lowerBound = new b2Vec2(-1000, -1000); worldBox.upperBound = new b2Vec2(1000, 1000); myWorld = new b2World(worldBox, gravity, true); while (userDataGraphic.numChildren > 0) { userDataGraphic.removeChildAt(0); }; if (gameMode == "game"){ HUD.levelName.visible = true; HUD.levelName.text = levels[(currentLevel - 1)][5]; createCharacter(levels[(currentLevel - 1)][3]); drawScaleShape(levels[(currentLevel - 1)][0]); drawPhotos(levels[(currentLevel - 1)][1]); currentStartPosition = levels[(currentLevel - 1)][2]; createBike(currentStartPosition); startFaceRight = levels[(currentLevel - 1)][4]; resetBike(currentStartPosition); createExit(levels[(currentLevel - 1)][3]); } else { if (gameMode == "edit"){ HUD.levelName.visible = false; createCharacter(new b2Vec2(userLevels[(currentLevel - 1)][3][0], userLevels[(currentLevel - 1)][3][1])); drawScaleShape(userLevels[(currentLevel - 1)][0][0]); drawPhotosArray(userLevels[(currentLevel - 1)][1]); currentStartPosition = new b2Vec2(userLevels[(currentLevel - 1)][2][0], userLevels[(currentLevel - 1)][2][1]); createBike(currentStartPosition); startFaceRight = userLevels[(currentLevel - 1)][4]; resetBike(currentStartPosition); createExit(new b2Vec2(userLevels[(currentLevel - 1)][3][0], userLevels[(currentLevel - 1)][3][1])); }; }; myWorld.SetContactListener(myListener); imageArray = new Array(); resetTimer(); } public function fadeConstant(_arg1:Event):void{ constantChannel.soundTransform = new SoundTransform((constantChannel.soundTransform.volume = (constantChannel.soundTransform.volume - 0.05)), 0); if (constantChannel.soundTransform.volume < 0.05){ stopConstant(); removeEventListener("enterFrame", fadeConstant); }; } public function newGameFtn(_arg1:MouseEvent):void{ removeBtns(); microMP3.stop(); currentLevel = 1; nextFrame(); } public function endBtnFtn(_arg1:MouseEvent):void{ tool = "end"; } public function pauseMenuBtnFtn(_arg1:MouseEvent):void{ } public function finishedShape():void{ var _local1:Number; var _local2:Array; drawingSprite.graphics.endFill(); drawingSprite.graphics.clear(); startPolySprite.graphics.clear(); drawing = false; _local1 = ((((((currentShape[0][0] * currentShape[1][1]) - (currentShape[0][1] * currentShape[1][0])) + (currentShape[0][1] * currentShape[2][0])) - (currentShape[0][0] * currentShape[2][1])) + (currentShape[1][0] * currentShape[2][1])) - (currentShape[2][0] * currentShape[1][1])); trace(_local1); if (_local1 < 0){ currentShape.reverse(); }; if (currentShape.length > 3){ _local2 = new Array(currentShape[0], currentShape[2], currentShape[3]); trace(_local2); trace(shapesArray); shapesArray.push(_local2); currentShape.pop(); drawingSprite.addChild(drawItem(_local2)); }; shapesArray.push(currentShape); drawingSprite.addChild(drawItem(currentShape)); } public function loopConstantFunction(_arg1:Event):void{ if (constantChannel != null){ constantChannel.removeEventListener(Event.SOUND_COMPLETE, loopConstantFunction); stopConstant(); playConstant(); }; } public function waiting(_arg1:Event):void{ if (intro.currentFrame == intro.totalFrames){ removeEventListener("enterFrame", waiting); myPreloadAd.unloadMovie(); tweenAds.am.dopplerBtn.removeEventListener("click", playMoreBtnFtn); nextFrame(); }; } public function creditsFtn(_arg1:MouseEvent):void{ Tweener.addTween(introClip.menuClip, {x:(-(stage.stageWidth) * 4), time:0.5, transition:"easeOutBack"}); } public function drawPhotosArray(_arg1:Array):void{ var _local2:int; totalPhotos = _arg1.length; remainPhotos = totalPhotos; HUD.remainText.text = remainPhotos; photoRef = new Array(); _local2 = 0; while (_local2 < _arg1.length) { createPhoto(new b2Vec2(_arg1[_local2][0], _arg1[_local2][1])); _local2++; }; } public function drawImage():void{ var _local1:*; var _local2:int; _local1 = new BitmapData(325, 200); _local2 = 0; while (_local2 < photoRef.length) { photoRef[_local2].visible = false; _local2++; }; _local1.draw(Sky, new Matrix(0.5, 0, 0, 0.5, (Sky.x * 0.5), (Sky.y * 0.5))); _local1.draw(drawThis, new Matrix(0.5, 0, 0, 0.5)); _local2 = 0; while (_local2 < photoRef.length) { photoRef[_local2].visible = true; _local2++; }; imageArray.push(_local1); } public function load4Ftn(_arg1:MouseEvent):void{ if (currentLevel == 4){ saveLevel(); } else { currentLevel = 4; loadLevelEdit(); }; } public function updateGraphics():void{ var _local1:b2Body; _local1 = myWorld.m_bodyList; while (_local1) { if ((_local1.m_userData is Sprite)){ _local1.m_userData.x = (_local1.GetPosition().x * 30); _local1.m_userData.y = (_local1.GetPosition().y * 30); _local1.m_userData.rotation = (_local1.GetAngle() * (180 / Math.PI)); }; _local1 = _local1.m_next; }; } public function stringTime(_arg1:int):String{ if (_arg1 < 10){ return (String(("0" + _arg1))); }; return (String(_arg1)); } public function waitingAgainSponsor(_arg1:Event):void{ if (newIntroPlay.currentFrame == newIntroPlay.totalFrames){ removeEventListener("enterFrame", waitingAgainSponsor); newIntroPlay.button.removeEventListener("click", playMoreBtnFtn); newIntroPlay.gotoAndStop(1); nextFrame(); }; } public function createPhoto(_arg1:b2Vec2):void{ var _local2:int; var _local3:int; var _local4:b2PolygonDef; var _local5:b2BodyDef; var _local6:b2Body; _local2 = ((_arg1.x / 30) * 5); _local3 = (((_arg1.y / 30) * 5) + (900 / 30)); _local4 = new b2PolygonDef(); _local4.SetAsBox(1.5, 1.5); _local4.isSensor = true; _local5 = new b2BodyDef(); _local5.userData = new Photo(); photoRef.push(_local5.userData); userDataGraphic.addChild(_local5.userData); _local5.position.Set(_local2, _local3); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); } public function drawItem(_arg1:Array):Sprite{ var _local2:Sprite; var _local3:int; _local2 = new Sprite(); _local2.graphics.beginFill(0xFF00, 0.5); _local2.graphics.lineStyle(0.5, 0); _local2.graphics.moveTo(_arg1[0][0], _arg1[0][1]); _local3 = 1; while (_local3 < _arg1.length) { _local2.graphics.lineTo(_arg1[_local3][0], _arg1[_local3][1]); _local3++; }; _local2.graphics.lineTo(_arg1[0][0], _arg1[0][1]); _local2.graphics.endFill(); return (_local2); } public function checkSkip():Boolean{ var _local1:Boolean; var _local2:int; var _local3:int; _local1 = false; _local2 = 4; _local3 = 0; while (_local3 < (currentLevel + 1)) { if (myTimes[_local3] == 99999){ _local2--; }; if ((((currentLevel == _local3)) && ((_local2 >= 0)))){ _local1 = true; }; _local3++; }; if (!(_local1)){ return (false); }; return (true); } public function keyUps(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == 37){ varLeft = false; }; if (_arg1.keyCode == 38){ if (varUp){ addEventListener("enterFrame", fadeConstant); }; varUp = false; }; if (_arg1.keyCode == 39){ varRight = false; }; if (_arg1.keyCode == 40){ varDown = false; }; if (_arg1.keyCode == 32){ varSpace = false; }; if (_arg1.keyCode == 27){ togglePause(); } else { if (_arg1.keyCode == 80){ togglePause(); }; }; } public function displayTime(_arg1:int):String{ var _local2:int; var _local3:int; var _local4:int; _local2 = 0; _local3 = 0; _local4 = 0; while (_arg1 > (60 * 30)) { _local2++; _arg1 = (_arg1 - (60 * 30)); }; while (_arg1 > 30) { _local3++; _arg1 = (_arg1 - 30); }; _local4 = (_arg1 * 3.3); return (((((stringTime(_local2) + ":") + stringTime(_local3)) + ":") + stringTime(_local4))); } public function removeToolTip(_arg1:MouseEvent):void{ _toolTip.removeTip(); } public function webmasterFtn(_arg1:MouseEvent):void{ Tweener.addTween(introClip.menuClip, {x:stage.stageWidth, time:0.5, transition:"easeOutBack"}); } public function waitForAnimation(_arg1:Event):void{ if (waitForGirlInt > 30){ endLevel(); removeEventListener("enterFrame", waitForAnimation); } else { waitForGirlInt++; }; } public function load5Ftn(_arg1:MouseEvent):void{ if (currentLevel == 5){ saveLevel(); } else { currentLevel = 5; loadLevelEdit(); }; } public function drawPhotos(_arg1:Array):void{ var _local2:int; totalPhotos = _arg1.length; remainPhotos = totalPhotos; HUD.remainText.text = remainPhotos; photoRef = new Array(); _local2 = 0; while (_local2 < _arg1.length) { createPhoto(_arg1[_local2]); _local2++; }; } public function keepLocked(_arg1:Event):void{ gotoAndStop("cheat"); } public function createBike(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; var _local4:b2CircleDef; var _local5:b2BodyDef; var _local6:b2Body; var _local7:b2DistanceJointDef; var _local8:b2PrismaticJointDef; var _local9:b2DistanceJointDef; var _local10:b2Vec2; _local2 = ((_arg1.x / 30) * 5); _local3 = (((_arg1.y / 30) * 5) + (900 / 30)); _local4 = new b2CircleDef(); _local4.filter.groupIndex = -1; _local4.radius = 0.5; _local4.density = 0.5; _local4.friction = 300; _local4.restitution = 0.5; _local5 = new b2BodyDef(); bikeBodyDef.userData = new BikeGraphic(); userDataGraphic.addChild(bikeBodyDef.userData); bikeBodyDef.position.Set((-1.6 + _local2), (-1 + _local3)); _local6 = myWorld.CreateBody(bikeBodyDef); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); backTieRef = _local6; _local5.userData = null; _local5.position.Set((0 + _local2), (0 + _local3)); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); midTieRef = _local6; _local5.position.Set((1.6 + _local2), (-1 + _local3)); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); frontTieRef = _local6; _local4.radius = 1; _local4.density = 0.5; _local4.friction = 300; _local4.restitution = 0.5; _local5.angularDamping = 0.1; _local5.userData = new WheelGraphic(); _local5.position.Set((-2.1 + _local2), (0.5 + _local3)); userDataGraphic.addChild(_local5.userData); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); backWheelRef = _local6; _local5.userData = new WheelGraphic(); _local5.position.Set((2.1 + _local2), (0.5 + _local3)); userDataGraphic.addChild(_local5.userData); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); frontWheelRef = _local6; _local4.radius = 1; _local4.density = 0.01; _local4.isSensor = true; _local5.userData = new String("HEAD"); _local5.position.Set((0 + _local2), (-3 + _local3)); _local6 = myWorld.CreateBody(_local5); _local6.CreateShape(_local4); _local6.SetMassFromShapes(); headRef = _local6; currentTieRef = backTieRef; _local7 = new b2DistanceJointDef(); _local8 = new b2PrismaticJointDef(); _local9 = new b2DistanceJointDef(); _local9.dampingRatio = 0.5; _local9.frequencyHz = 1.5; _local10 = new b2Vec2(1, 0); _local8.lowerTranslation = 0; _local8.upperTranslation = 0; _local8.enableLimit = true; _local7.Initialize(backTieRef, frontTieRef, backTieRef.GetWorldCenter(), frontTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local9.Initialize(backWheelRef, backTieRef, backWheelRef.GetWorldCenter(), backTieRef.GetWorldCenter()); myWorld.CreateJoint(_local9); _local8.Initialize(backTieRef, frontTieRef, backTieRef.GetWorldCenter(), _local10); myWorld.CreateJoint(_local8); _local9.Initialize(backWheelRef, frontWheelRef, backWheelRef.GetWorldCenter(), frontWheelRef.GetWorldCenter()); myWorld.CreateJoint(_local9); _local7.Initialize(backWheelRef, frontTieRef, backWheelRef.GetWorldCenter(), frontTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(backTieRef, frontWheelRef, backTieRef.GetWorldCenter(), frontWheelRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(backTieRef, midTieRef, backTieRef.GetWorldCenter(), midTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(frontTieRef, midTieRef, frontTieRef.GetWorldCenter(), midTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(backWheelRef, midTieRef, backWheelRef.GetWorldCenter(), midTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(frontWheelRef, midTieRef, frontWheelRef.GetWorldCenter(), midTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(frontTieRef, headRef, frontTieRef.GetWorldCenter(), headRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(headRef, backTieRef, headRef.GetWorldCenter(), backTieRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(frontWheelRef, headRef, frontWheelRef.GetWorldCenter(), headRef.GetWorldCenter()); myWorld.CreateJoint(_local7); _local7.Initialize(headRef, backWheelRef, headRef.GetWorldCenter(), backWheelRef.GetWorldCenter()); myWorld.CreateJoint(_local7); } public function togglePause():void{ var _local1:PauseMenu; if (varPause){ varPause = false; PauseMenu(pauseCont.getChildAt(0)).resetLevel.removeEventListener("click", resetBtnFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", skipLevelFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", backToEditorFtn); PauseMenu(pauseCont.getChildAt(0)).qualityBtn.removeEventListener("click", qualityBtnFtn); PauseMenu(pauseCont.getChildAt(0)).menuBtn.removeEventListener("click", endGameFromPause); pauseCont.removeChildAt(0); addEventListener("enterFrame", update); } else { varPause = true; _local1 = new PauseMenu(); if (gameMode == "game"){ _local1.skipLevelText.text = "Skip Level"; if (((checkSkip()) && (!((currentLevel === levels.length))))){ _local1.status.gotoAndStop(2); _local1.skipLevel.addEventListener("click", skipLevelFtn); } else { _local1.status.gotoAndStop(1); }; } else { if (gameMode == "edit"){ _local1.status.gotoAndStop(2); _local1.skipLevelText.text = "Back To Editor"; _local1.skipLevel.addEventListener("click", backToEditorFtn); }; }; _local1.skipLevelText.mouseEnabled = false; _local1.mouseEnabled = false; _local1.resetLevel.addEventListener("click", resetBtnFtn); _local1.qualityBtn.addEventListener("click", qualityBtnFtn); _local1.menuBtn.addEventListener("click", endGameFromPause); _local1.qualityTxt.mouseEnabled = false; _local1.qualityTxt.text = ("Quality is " + stage.quality); pauseCont.addChild(_local1); removeEventListener("enterFrame", update); }; } public function stopIdle():void{ if (idleChannel != null){ idleChannel.stop(); idleChannel.removeEventListener(Event.SOUND_COMPLETE, loopIdleFunction); }; } public function playConstant():void{ if (SFXon){ constantChannel = loopConstant.play(); constantChannel.soundTransform = new SoundTransform(0.5, 0); constantChannel.addEventListener(Event.SOUND_COMPLETE, loopConstantFunction); }; } public function everyFrame(_arg1:Event):void{ lastX = mouseX; lastY = mouseY; myMouse.x = (Math.round(((mouseX - levelStage.x) / gridNumber)) * gridNumber); myMouse.y = (Math.round(((mouseY - levelStage.y) / gridNumber)) * gridNumber); } public function arrayPlusX(_arg1:Array, _arg2:int):Array{ var _local3:int; _local3 = 0; while (_local3 < _arg1.length) { _arg1[_local3][0] = (_arg1[_local3][0] + _arg2); _local3++; }; return (_arg1); } public function arrayPlusY(_arg1:Array, _arg2:int):Array{ var _local3:int; _local3 = 0; while (_local3 < _arg1.length) { _arg1[_local3][1] = (_arg1[_local3][1] + _arg2); _local3++; }; return (_arg1); } public function newBtnFtn(_arg1:MouseEvent):void{ newLevel(); } public function resetTimer():void{ frame = 0; seconds = 0; minutes = 0; } public function endGameFromResults(_arg1:MouseEvent):void{ var _local2:int; myResults.continueBtn.removeEventListener("click", continueBtnFtn); myResults.moreGamesBtn.removeEventListener("click", playMoreBtnFtn); myResults.retryBtn.removeEventListener("click", retryBtnFtn); myResults.menuBtn.removeEventListener("click", endGameFromResults); myResults.continueBtn.removeEventListener("click", backToEditorFromResultsFtn); _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; stage.removeEventListener("keyDown", keyDowns); stage.removeEventListener("keyUp", keyUps); while (userDataGraphic.numChildren > 0) { userDataGraphic.removeChildAt(0); }; removeChild(HUD); removeChild(PhotoSnap); removeChild(mp3GUI); removeChild(myResults); stopIdle(); stopConstant(); mp3GUI.prevBtn.removeEventListener("click", prevBtnFtn); mp3GUI.nextBtn.removeEventListener("click", nextBtnFtn); mp3GUI.music.powerBtn.removeEventListener("click", musicPwrFtn); mp3GUI.effects.powerBtn.removeEventListener("click", effectsPwrFtn); myMP3.stop(); removeAdvertisement(); bottomRightButton.removeEventListener("click", playMoreBtnFtn); gotoAndStop("menu"); } public function qualityBtnFtn(_arg1:MouseEvent):void{ if (stage.quality == "HIGH"){ stage.quality = "MEDIUM"; } else { if (stage.quality == "MEDIUM"){ stage.quality = "LOW"; } else { if (stage.quality == "LOW"){ stage.quality = "HIGH"; }; }; }; PauseMenu(pauseCont.getChildAt(0)).qualityTxt.text = ("Quality is " + stage.quality); } public function twistRight(_arg1:Event):void{ bikeBodyDef.userData.prevFrame(); if (bikeBodyDef.userData.currentFrame == 3){ faceRight = true; } else { if (bikeBodyDef.userData.currentFrame == 1){ turning = false; removeEventListener("enterFrame", twistRight); }; }; } public function waitForBlood(_arg1:Event):void{ if (bloodPlayer.currentFrame == bloodPlayer.totalFrames){ bloodHUD.removeChild(bloodPlayer); removeEventListener("enterFrame", waitForBlood); }; } public function backToMenuFtn(_arg1:MouseEvent):void{ Tweener.addTween(introClip.menuClip, {x:0, time:0.5, transition:"easeOutBack"}); } public function endLevel():void{ var _local1:int; var _local2:MyButton2; var _local3:Bitmap; var _local4:int; Tweener.addTween(myResults, {y:0, time:1, transition:"easeOutBack"}); advertisementCode(); myResults.imageSlider.x = (-((imageArray.length - 1)) * stage.stageWidth); Tweener.addTween(myResults.imageSlider, {x:0, time:2, transition:"easeOutBack"}); _local1 = 0; while (_local1 < photoRef.length) { _local2 = new MyButton2(); _local2.y = 352.5; _local2.myString.text = String((_local1 + 1)); _local2.myString.mouseEnabled = false; _local2.x = ((_local1 + 1) * 40); myResults.buttons.addChild(_local2); _local2.btn.addEventListener("mouseOver", photoBtnFtn); _local1++; }; _local1 = 0; while (_local1 < imageArray.length) { _local3 = new Bitmap(imageArray[_local1]); _local3.y = 140; _local3.x = (5 + (_local1 * stage.stageWidth)); myResults.imageSlider.addChild(_local3); _local1++; }; myResults.medalCont.displayTime.text = ((((stringTime(minutes) + ":") + stringTime(seconds)) + ":") + stringTime((frame * 3.3))); if (gameMode == "game"){ _local4 = ((((minutes * 30) * 60) + (seconds * 30)) + frame); if (_local4 < myTimes[(currentLevel - 1)]){ trace("saved"); myTimes[(currentLevel - 1)] = _local4; so.data.times = myTimes; so.flush(); }; myResults.goldMdl.gotoAndStop(5); myResults.silverMdl.gotoAndStop(4); myResults.goldTime.text = displayTime(levels[(currentLevel - 1)][6][0]); myResults.silverTime.text = displayTime(levels[(currentLevel - 1)][6][1]); } else { myResults.goldMdl.gotoAndStop(2); myResults.silverMdl.gotoAndStop(2); myResults.goldTime.text = ""; myResults.silverTime.text = ""; }; myResults.continueText.mouseEnabled = false; if (gameMode == "game"){ if (currentLevel == levels.length){ myResults.continueBtn.visible = false; myResults.continueText.visible = false; } else { myResults.continueBtn.visible = true; myResults.continueText.text = "Continue"; myResults.continueBtn.addEventListener("click", continueBtnFtn); }; } else { if (gameMode == "edit"){ myResults.continueBtn.visible = true; myResults.continueText.visible = true; myResults.continueText.text = "Editor"; myResults.continueBtn.addEventListener("click", backToEditorFromResultsFtn); }; }; myResults.retryBtn.addEventListener("click", retryBtnFtn); myResults.moreGamesBtn.addEventListener("click", playMoreBtnFtn); myResults.menuBtn.addEventListener("click", endGameFromResults); if (gameMode == "game"){ myResults.medalCont.visible = true; if (_local4 > levels[(currentLevel - 1)][6][1]){ myResults.medalCont.medal.gotoAndStop(1); myResults.medalCont.medalText.text = "You've won a Bronze Medal"; } else { if (_local4 > levels[(currentLevel - 1)][6][0]){ myResults.medalCont.medal.gotoAndStop(2); myResults.medalCont.medalText.text = "You've won a Silver Medal"; } else { if (_local4 <= levels[(currentLevel - 1)][6][0]){ myResults.medalCont.medal.gotoAndStop(3); myResults.medalCont.medalText.text = "You've won a Gold Medal"; }; }; }; } else { if (gameMode == "edit"){ myResults.medalCont.visible = false; }; }; } public function returnCode():String{ return ((((((((((((((("[[" + stringArray(shapesArray)) + "],[") + stringPhoto(photoArray)) + "],[") + startPos.x) + ", ") + startPos.y) + "],[") + endPos.x) + ", ") + endPos.y) + "],[") + faceRightEdit) + "]]")); } public function playMoreBtnFtn(_arg1:MouseEvent):void{ navigateToURL(sponsorURL, "_blank"); } public function resetLevel():void{ var _local1:int; resetBike(currentStartPosition); _local1 = 0; while (_local1 < photoRef.length) { photoRef[_local1].reset(); _local1++; }; remainPhotos = totalPhotos; HUD.remainText.text = remainPhotos; resetTimer(); raiseVolume(); imageArray = new Array(); } public function endGameFromPause(_arg1:MouseEvent):void{ var _local2:int; _local2 = 0; while (_local2 < myResults.buttons.numChildren) { myResults.buttons.getChildAt(_local2).removeEventListener("mouseOver", photoBtnFtn); _local2++; }; while (myResults.buttons.numChildren > 0) { myResults.buttons.removeChildAt(0); }; while (myResults.imageSlider.numChildren > 0) { myResults.imageSlider.removeChildAt(0); }; removeEventListener("enterFrame", update); stage.removeEventListener("keyDown", keyDowns); stage.removeEventListener("keyUp", keyUps); while (userDataGraphic.numChildren > 0) { userDataGraphic.removeChildAt(0); }; removeChild(HUD); removeChild(PhotoSnap); removeChild(mp3GUI); removeChild(myResults); stopIdle(); stopConstant(); PauseMenu(pauseCont.getChildAt(0)).resetLevel.removeEventListener("click", resetBtnFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", skipLevelFtn); PauseMenu(pauseCont.getChildAt(0)).skipLevel.removeEventListener("click", backToEditorFtn); PauseMenu(pauseCont.getChildAt(0)).qualityBtn.removeEventListener("click", qualityBtnFtn); PauseMenu(pauseCont.getChildAt(0)).menuBtn.removeEventListener("click", endGameFromPause); pauseCont.removeChildAt(0); mp3GUI.prevBtn.removeEventListener("click", prevBtnFtn); mp3GUI.nextBtn.removeEventListener("click", nextBtnFtn); mp3GUI.music.powerBtn.removeEventListener("click", musicPwrFtn); mp3GUI.effects.powerBtn.removeEventListener("click", effectsPwrFtn); bottomRightButton.removeEventListener("click", playMoreBtnFtn); myMP3.stop(); gotoAndStop("menu"); } public function displayToolTip1(_arg1:MouseEvent):void{ _toolTip1.addTip("Set Start Position"); } public function displayToolTip2(_arg1:MouseEvent):void{ _toolTip2.addTip("Set End Position"); } public function hintHit(_arg1:Event):void{ if (GirlHint(hintCont.getChildAt(0)).myMC.hitTestPoint(mouseX, mouseY, true)){ if (hintArray.length > 0){ GirlHint(hintCont.getChildAt(0)).textBox.text = hintArray.shift(); } else { GirlHint(hintCont.getChildAt(0)).myMC.removeEventListener("click", hintHit); hintCont.removeChildAt(0); addEventListener("enterFrame", update); }; }; } public function displayToolTip5(_arg1:MouseEvent):void{ _toolTip5.addTip("Toggles bike direction"); } public function displayToolTip3(_arg1:MouseEvent):void{ _toolTip3.addTip("Adds a Photo"); } public function addLevelBtns():void{ var _local1:Boolean; var _local2:Boolean; var _local3:Boolean; var _local4:int; var _local5:int; var _local6:levelBtnMC; _local1 = true; _local2 = true; _local3 = true; _local4 = 4; while (_local5 < levels.length) { _local6 = new levelBtnMC(); if (_local5 < 3){ _local6.colour.gotoAndStop(1); } else { if (_local5 < 8){ _local6.colour.gotoAndStop(2); } else { if (_local5 < 16){ _local6.colour.gotoAndStop(3); } else { _local6.colour.gotoAndStop(4); }; }; }; _local6.colour.mouseEnabled = false; _local6.txt.text = levels[_local5][5]; _local6.status.mouseEnabled = false; trace(((_local5 + ": ") + myTimes[_local5])); if ((((myTimes[_local5] == 99999)) && ((_local4 > 0)))){ _local4--; _local6.status.gotoAndStop(2); _local3 = false; _local2 = false; _local1 = false; } else { if (myTimes[_local5] == 99999){ _local6.status.gotoAndStop(1); _local3 = false; _local2 = false; _local1 = false; } else { if (myTimes[_local5] > levels[_local5][6][1]){ _local6.status.gotoAndStop(3); _local3 = false; _local2 = false; } else { if (myTimes[_local5] > levels[_local5][6][0]){ _local6.status.gotoAndStop(4); _local3 = false; } else { if (myTimes[_local5] <= levels[_local5][6][0]){ _local6.status.gotoAndStop(5); }; }; }; }; }; _local6.txt.mouseEnabled = false; _local6.y = (_local5 * 30); _local6.x = 0; introClip.menuClip.scrollCrap.addChild(_local6); if (_local6.status.currentFrame !== 1){ _local6.btn.addEventListener("click", levelClicker); }; _local5++; }; availSkip = _local4; if (_local3){ introClip.menuClip.completeSign.visible = true; introClip.menuClip.completeSign.myBtn.visible = true; introClip.menuClip.completeSign.myBtn.addEventListener("click", secretFtn); introClip.menuClip.completeSign.status1.gotoAndStop(5); introClip.menuClip.completeSign.status2.gotoAndStop(5); introClip.menuClip.completeSign.myText.text = "Little Present?"; introClip.menuClip.completeSign.myText.mouseEnabled = false; } else { if (_local2){ introClip.menuClip.completeSign.visible = true; introClip.menuClip.completeSign.myBtn.visible = false; introClip.menuClip.completeSign.status1.gotoAndStop(4); introClip.menuClip.completeSign.status2.gotoAndStop(4); introClip.menuClip.completeSign.myText.text = "Silver? Meh! Go for Gold!"; } else { if (_local1){ introClip.menuClip.completeSign.visible = true; introClip.menuClip.completeSign.myBtn.visible = false; introClip.menuClip.completeSign.status1.gotoAndStop(3); introClip.menuClip.completeSign.status2.gotoAndStop(3); introClip.menuClip.completeSign.myText.text = "Bronze? Bah! Go for Gold!"; } else { introClip.menuClip.completeSign.visible = false; }; }; }; } public function levelSelectFtn(_arg1:MouseEvent):void{ Tweener.addTween(introClip.menuClip, {x:-(stage.stageWidth), time:0.5, transition:"easeOutBack"}); } public function twistBike():void{ turning = true; if (faceRight){ addEventListener("enterFrame", twistLeft); } else { addEventListener("enterFrame", twistRight); }; } public function resetBtnFtn(_arg1:MouseEvent):void{ resetLevel(); togglePause(); } public function displayToolTip4(_arg1:MouseEvent):void{ _toolTip4.addTip("Toggles fine-grid"); } public function waitForGirl():void{ waitForGirlInt = 0; char.gotoAndStop(3); if (SFXon){ forTheWinSound.play(); }; removeEventListener("enterFrame", update); addEventListener("enterFrame", waitForAnimation); } public function createRectangle(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{ var _local6:b2PolygonDef; var _local7:b2BodyDef; var _local8:b2Body; _local6 = new b2PolygonDef(); _local6.SetAsBox(_arg3, _arg4); _local6.friction = 1; _local7 = new b2BodyDef(); _local7.userData = new Sprite(); _local7.userData.width = 90; _local7.userData.height = 30; _local7.position.Set(_arg1, _arg2); _local7.angle = (_arg5 * 0.0174532925); _local8 = myWorld.CreateBody(_local7); _local8.CreateShape(_local6); _local8.SetMassFromShapes(); } public function twistLeft(_arg1:Event):void{ bikeBodyDef.userData.nextFrame(); if (bikeBodyDef.userData.currentFrame == 4){ faceRight = false; } else { if (bikeBodyDef.userData.currentFrame == 6){ turning = false; removeEventListener("enterFrame", twistLeft); }; }; } public function removeAdvertisement():void{ if (currentAd == "notDoppler"){ notDopplerAd.unloadMovie(); notDopplerAd.reloadAd(); } else { if (currentAd == "cpmStar"){ myAd.unloadMovie(); myAd.reloadAd(); }; }; } public function clickToPlay(_arg1:Event):void{ intro.play(); tweenAds.play(); this.addEventListener(Event.ENTER_FRAME, waiting); intro.preloader.wheelsCont.myButton.removeEventListener("click", clickToPlay); } } }//package xtrememotor7_fla
Section 99
//medalCont_49 (xtrememotor7_fla.medalCont_49) package xtrememotor7_fla { import flash.display.*; import flash.text.*; public dynamic class medalCont_49 extends MovieClip { public var medal:MovieClip; public var displayTime:TextField; public var medalText:TextField; } }//package xtrememotor7_fla
Section 100
//menu_21 (xtrememotor7_fla.menu_21) package xtrememotor7_fla { import flash.display.*; public dynamic class menu_21 extends MovieClip { public var creditPrankardBtn:SimpleButton; public var creditMusicBtn:SimpleButton; public var creditVoiceBtn:SimpleButton; public var levelEditor:ClickButton; public var selectLevelBackToMenu:ClickButton; public var notDopplerSponsorBtn:SimpleButton; public var scrollCrap:MovieClip; public var sb:Scrollbar; public var creditsBackToMenu:ClickButton; public var moreGames2:ClickButton; public var moreGames:ClickButton; public var prankardSponsorBtn:SimpleButton; public var webmasterBackToMenu:ClickButton; public var credits:ClickButton; public var completeSign:MovieClip; public var instructions:ClickButton; public var emailPrankardLicenseBtn:SimpleButton; public var creditSponsorBtn:SimpleButton; public var addDopplerGameBtn:SimpleButton; public var newGame:ClickButton; public var instructionsBackToMenu:ClickButton; public var webmasterBtn:SimpleButton; public var selectLevel:ClickButton; public var addPrankardGameBtn:SimpleButton; } }//package xtrememotor7_fla
Section 101
//Mp3Player_37 (xtrememotor7_fla.Mp3Player_37) package xtrememotor7_fla { import flash.display.*; import flash.text.*; public dynamic class Mp3Player_37 extends MovieClip { public var effects:MovieClip; public var music:MovieClip; public var prevBtn:SimpleButton; public var artist:TextField; public var nextBtn:SimpleButton; public var title:TextField; } }//package xtrememotor7_fla
Section 102
//notDoppler_intro_16 (xtrememotor7_fla.notDoppler_intro_16) package xtrememotor7_fla { import flash.display.*; public dynamic class notDoppler_intro_16 extends MovieClip { public var button:SimpleButton; } }//package xtrememotor7_fla
Section 103
//PhotoSnap_34 (xtrememotor7_fla.PhotoSnap_34) package xtrememotor7_fla { import flash.display.*; public dynamic class PhotoSnap_34 extends MovieClip { public function PhotoSnap_34(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 104
//Preloader_2 (xtrememotor7_fla.Preloader_2) package xtrememotor7_fla { import flash.display.*; public dynamic class Preloader_2 extends MovieClip { public var lbar:MovieClip; public var wheelsCont:MovieClip; } }//package xtrememotor7_fla
Section 105
//results_43 (xtrememotor7_fla.results_43) package xtrememotor7_fla { import flash.display.*; import flash.text.*; public dynamic class results_43 extends MovieClip { public var advertisement:MovieClip; public var imageSlider:MovieClip; public var goldMdl:MovieClip; public var continueBtn:SimpleButton; public var moreGamesBtn:SimpleButton; public var silverMdl:MovieClip; public var continueText:TextField; public var menuBtn:SimpleButton; public var buttons:MovieClip; public var goldTime:TextField; public var silverTime:TextField; public var retryBtn:SimpleButton; public var medalCont:MovieClip; } }//package xtrememotor7_fla
Section 106
//SoundHolderImport_19 (xtrememotor7_fla.SoundHolderImport_19) package xtrememotor7_fla { import flash.display.*; public dynamic class SoundHolderImport_19 extends MovieClip { public function SoundHolderImport_19(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 107
//toolBar_51 (xtrememotor7_fla.toolBar_51) package xtrememotor7_fla { import flash.display.*; public dynamic class toolBar_51 extends MovieClip { public var load1:MovieClip; public var load3:MovieClip; public var load4:MovieClip; public var load2:MovieClip; public var load5:MovieClip; public var gridBtn:MovieClip; public var goBtn:MovieClip; public var helpBtn:MovieClip; public var exitBtn:MovieClip; public var endBtn:MovieClip; public var startBtn:MovieClip; public var newBtn:MovieClip; public var photoBtn:MovieClip; public var faceBtn:MovieClip; public var selectBtn:MovieClip; public var faceGraphic:MovieClip; public var polyBtn:MovieClip; } }//package xtrememotor7_fla
Section 108
//tweenAds_9 (xtrememotor7_fla.tweenAds_9) package xtrememotor7_fla { import flash.display.*; public dynamic class tweenAds_9 extends MovieClip { public var am:MovieClip; public function tweenAds_9(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 109
//wheelscont_4 (xtrememotor7_fla.wheelscont_4) package xtrememotor7_fla { import flash.display.*; public dynamic class wheelscont_4 extends MovieClip { public var myButton:SimpleButton; public function wheelscont_4(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package xtrememotor7_fla
Section 110
//BikeConstant (BikeConstant) package { import flash.media.*; public dynamic class BikeConstant extends Sound { } }//package
Section 111
//BikeGraphic (BikeGraphic) package { import flash.display.*; public dynamic class BikeGraphic extends MovieClip { public var char:MovieClip; public function BikeGraphic(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 112
//BikeGraphicLeft (BikeGraphicLeft) package { import flash.display.*; public dynamic class BikeGraphicLeft extends MovieClip { } }//package
Section 113
//BikeIdle (BikeIdle) package { import flash.media.*; public dynamic class BikeIdle extends Sound { } }//package
Section 114
//BikeRev (BikeRev) package { import flash.media.*; public dynamic class BikeRev extends Sound { } }//package
Section 115
//BloodSplat (BloodSplat) package { import flash.text.*; import flash.display.*; public dynamic class BloodSplat extends MovieClip { public var deathText:TextField; public function BloodSplat(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 116
//Character (Character) package { import flash.display.*; public dynamic class Character extends MovieClip { } }//package
Section 117
//ClickButton (ClickButton) package { import flash.display.*; public dynamic class ClickButton extends SimpleButton { } }//package
Section 118
//Code (Code) package { import flash.text.*; import flash.display.*; public dynamic class Code extends MovieClip { public var code:TextField; } }//package
Section 119
//CoinClass (CoinClass) package { import flash.events.*; import flash.display.*; public class CoinClass extends Sprite { public var hit:Boolean;// = false public function CoinClass():void{ hit = false; super(); } public function fadeOut():void{ hit = true; addEventListener("enterFrame", fading); } private function fading(_arg1:Event):void{ this.alpha = (this.alpha - 0.05); if (this.alpha < 0.1){ removeEventListener("enterFrame", fading); }; } } }//package
Section 120
//CoinContactListener (CoinContactListener) package { import Box2D.Collision.*; import Box2D.Dynamics.*; public class CoinContactListener extends b2ContactListener { private var lExit:Boolean;// = false public static var atExit:Boolean = false; public static var reset:Boolean = false; public function CoinContactListener(){ lExit = false; super(); } override public function Persist(_arg1:b2ContactPoint):void{ } override public function Add(_arg1:b2ContactPoint):void{ if ((_arg1.shape1.GetBody().GetUserData() is CoinClass)){ if (!(_arg1.shape1.GetBody().GetUserData().hit)){ trace("OMG"); _arg1.shape1.GetBody().GetUserData().fadeOut(); }; } else { if ((_arg1.shape2.GetBody().GetUserData() is CoinClass)){ if (!(_arg1.shape2.GetBody().GetUserData().hit)){ trace("OMG"); _arg1.shape2.GetBody().GetUserData().fadeOut(); }; } else { if ((_arg1.shape2.GetBody().GetUserData() is GravityClass)){ if (!(_arg1.shape2.GetBody().GetUserData().hit)){ trace("ZOMG"); _arg1.shape2.GetBody().GetUserData().fadeOut(); }; } else { if ((_arg1.shape1.GetBody().GetUserData() is Photo)){ if (!(_arg1.shape1.GetBody().GetUserData().hit)){ _arg1.shape1.GetBody().GetUserData().fadeOut(); }; } else { if (_arg1.shape2.GetBody().GetUserData() == "HEAD"){ reset = true; }; }; }; }; }; } override public function Remove(_arg1:b2ContactPoint):void{ } } }//package
Section 121
//DirtyHigh (DirtyHigh) package { import flash.media.*; public dynamic class DirtyHigh extends Sound { } }//package
Section 122
//Door (Door) package { import flash.display.*; public dynamic class Door extends MovieClip { public function Door(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 123
//Exit (Exit) package { import flash.display.*; public dynamic class Exit extends MovieClip { } }//package
Section 124
//Font1 (Font1) package { import flash.text.*; public dynamic class Font1 extends Font { } }//package
Section 125
//ForTheWin (ForTheWin) package { import flash.media.*; public dynamic class ForTheWin extends Sound { } }//package
Section 126
//frameRateKeeper (frameRateKeeper) package { import flash.utils.*; import flash.display.*; public class frameRateKeeper extends MovieClip { var frameTracker;// = 0 var requestedFrameRate;// = 30 var secondTimer:Timer; var currentFrameRate;// = 30 var stageInstance; public function frameRateKeeper(_arg1, _arg2){ var num = _arg1; var sI = _arg2; requestedFrameRate = 30; frameTracker = 0; currentFrameRate = 30; secondTimer = new Timer(1000); super(); stageInstance = sI; requestedFrameRate = num; currentFrameRate = num; this.addEventListener("enterFrame", function (){ frameTracker = (frameTracker + 1); }); secondTimer.addEventListener("timer", adjustFrameRate); secondTimer.start(); } public function adjustFrameRate(_arg1){ var _local2:*; _local2 = frameTracker; if (_local2 > requestedFrameRate){ currentFrameRate--; stageInstance.frameRate = currentFrameRate; }; if ((((_local2 < requestedFrameRate)) && ((currentFrameRate < 90)))){ currentFrameRate = (currentFrameRate + (requestedFrameRate - _local2)); stageInstance.frameRate = currentFrameRate; }; frameTracker = 0; } } }//package
Section 127
//GirlHint (GirlHint) package { import flash.text.*; import flash.display.*; public dynamic class GirlHint extends MovieClip { public var textBox:TextField; public var myMC:MovieClip; } }//package
Section 128
//GravityClass (GravityClass) package { import flash.events.*; import flash.display.*; public class GravityClass extends Sprite { public var direction:String; public var hit:Boolean;// = false public function GravityClass(_arg1:String):void{ hit = false; super(); direction = _arg1; } public function fadeOut():void{ hit = true; addEventListener("enterFrame", fading); } private function fading(_arg1:Event):void{ this.alpha = (this.alpha - 0.05); if (this.alpha < 0.1){ removeEventListener("enterFrame", fading); }; } } }//package
Section 129
//levelBtnMC (levelBtnMC) package { import flash.text.*; import flash.display.*; public dynamic class levelBtnMC extends MovieClip { public var btn:ClickButton; public var txt:TextField; public var colour:MovieClip; public var status:MovieClip; } }//package
Section 130
//levelStore (levelStore) package { import Box2D.Common.Math.*; public class levelStore { public var levels:Array; public function levelStore():void{ var _local1:Array; var _local2:Array; var _local3:Array; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Boolean; var _local7:Array; var _local8:Array; var _local9:String; levels = new Array(); super(); _local1 = new Array(); _local2 = new Array(); _local3 = new Array(); _local6 = true; _local7 = new Array(); _local8 = new Array(); _local9 = new String(); _local2 = new Array([[-360, 0], [-180, -180], [-180, 0]], [[-360, 0], [-360, -180], [-180, -180]], [[-36, 0], [36, -18], [36, 0]], [[252, 0], [468, -180], [468, 0]], [[252, 0], [252, -180], [468, -180]], [[468, 0], [-360, 180], [-360, 0]], [[468, 0], [468, 180], [-360, 180]]); _local3 = new Array(new b2Vec2(54, -36)); _local4 = new b2Vec2(-126, -18); _local5 = new b2Vec2(225, 0); _local6 = true; _local9 = "Go!"; _local7 = [180, 210]; _local8 = new Array("Press UP and DOWN arrows to ACCELERATE and BRAKE", "COLLECT the PHOTO and brake at the EXIT by the CONES"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[-144, -36], [-72, 0], [-144, 0]], [[72, 0], [144, -36], [144, 0]], [[144, -36], [180, 0], [144, 0]], [[144, -36], [180, -36], [180, 0]], [[-144, 0], [-180, -36], [-144, -36]], [[-144, 0], [-180, 0], [-180, -36]], [[-180, 216], [-360, -216], [-180, -216]], [[-180, 216], [-360, 216], [-360, -216]], [[-180, 216], [180, 0], [180, 216]], [[-180, 216], [-180, 0], [180, 0]], [[180, -216], [360, 216], [180, 216]], [[180, -216], [360, -216], [360, 216]]); _local3 = new Array(new b2Vec2(-162, -54), new b2Vec2(162, -54)); _local4 = new b2Vec2(0, -18); _local5 = new b2Vec2(0, 0); _local6 = true; _local9 = "Twister"; _local7 = [285, 385]; _local8 = new Array("The SPACEBAR twists your bike to CHANGE DIRECTION"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[900, 0], [-324, 216], [-324, 0]], [[900, 0], [900, 216], [-324, 216]], [[324, -54], [324, 0], [288, -27]], [[252, -9], [288, -27], [324, 0]], [[180, 0], [252, -9], [324, 0]], [[324, -54], [360, -27], [324, 0]], [[360, -27], [396, -9], [324, 0]], [[324, 0], [396, -9], [468, 0]], [[846, 0], [936, -18], [1044, 0]], [[936, -18], [972, -36], [1044, 0]], [[1044, 0], [972, -36], [990, -54]], [[990, -54], [1008, -90], [1044, 0]], [[1008, -90], [1404, -324], [1404, 0]], [[1008, -90], [1008, -324], [1404, -324]], [[1044, 0], [1008, -90], [1404, 0]], [[1404, 0], [900, 216], [900, 0]], [[1404, 0], [1404, 216], [900, 216]], [[-36, -360], [-144, -144], [-324, 0]], [[-324, -360], [-36, -360], [-324, 0]], [[-144, -144], [-180, -54], [-324, 0]], [[-180, -54], [-180, 0], [-324, 0]], [[-324, 216], [-504, -360], [-324, -360]], [[-324, 216], [-504, 216], [-504, -360]]); _local3 = new Array(new b2Vec2(432, -126), new b2Vec2(216, -126), new b2Vec2(990, -198)); _local4 = new b2Vec2(-90, -18); _local5 = new b2Vec2(-90, 0); _local6 = true; _local9 = "Kicker"; _local7 = [690, 880]; _local8 = new Array("Use the LEFT and RIGHT arrows to LEAN back and forth"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[432, 162], [0, 0], [432, 0]], [[432, 162], [0, 162], [0, 0]], [[252, 0], [324, -18], [432, 0]], [[324, -18], [360, -36], [432, 0]], [[360, -36], [378, -54], [432, 0]], [[378, -54], [396, -90], [432, 0]], [[396, -90], [432, -180], [432, 0]], [[396, -90], [396, -108], [432, -180]], [[396, -108], [378, -144], [432, -180]], [[378, -144], [360, -162], [432, -180]], [[360, -162], [306, -180], [432, -180]], [[216, -180], [432, -216], [432, -180]], [[216, -180], [216, -216], [432, -216]], [[0, 162], [-216, -216], [0, -216]], [[0, 162], [-216, 162], [-216, -216]], [[0, 0], [0, -90], [18, 0]]); _local3 = new Array(new b2Vec2(234, -162)); _local4 = new b2Vec2(90, -18); _local5 = new b2Vec2(45, 0); _local6 = true; _local9 = "Lean Back"; _local7 = [230, 350]; _local8 = new Array("It's really important to LEAN BACK when going up STEEP walls", "If done right you can even go upside down"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[0, 36], [-54, 0], [54, 0]], [[0, 36], [-108, 36], [-54, 0]], [[0, 36], [54, 0], [126, 36]], [[-108, 36], [-126, -18], [-54, 0]], [[-162, -36], [-126, -18], [-108, 36]], [[-180, 36], [-180, -54], [-162, -36]], [[-198, 36], [-198, -90], [-180, -54]], [[-216, 36], [-198, -126], [-198, 36]], [[-216, 36], [-216, -126], [-198, -126]], [[-180, -54], [-180, 36], [-198, 36]], [[-180, 36], [-162, -36], [-108, 36]], [[54, 0], [144, -18], [126, 36]], [[180, -36], [126, 36], [144, -18]], [[180, -36], [198, -54], [198, 36]], [[198, -54], [216, -90], [216, 36]], [[216, 36], [198, 36], [198, -54]], [[126, 36], [180, -36], [198, 36]], [[216, 36], [234, -126], [234, 36]], [[216, 36], [216, -126], [234, -126]]); _local3 = new Array(new b2Vec2(-180, -180), new b2Vec2(198, -180)); _local4 = new b2Vec2(0, -18); _local5 = new b2Vec2(0, 0); _local6 = true; _local9 = "Halfpipe"; _local7 = [480, 540]; _local8 = new Array("Press P or ESC to pause the game", "From pause you can skip the level if it's too hard"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[-126, 36], [-90, -180], [-90, 36]], [[-126, 36], [-126, -180], [-90, -180]], [[72, 18], [0, 36], [36, 18]], [[72, 18], [72, 36], [0, 36]], [[0, 36], [0, 18], [36, 18]], [[-90, 0], [-72, -27], [-54, 9]], [[0, 36], [-54, 9], [0, 18]], [[-90, 36], [-54, 9], [0, 36]], [[-90, 36], [-90, 0], [-54, 9]], [[-90, 0], [-72, -36], [-72, -27]], [[-90, -54], [-63, -54], [-72, -36]], [[-90, -54], [-72, -36], [-90, 0]], [[-90, -54], [-45, -72], [-63, -54]], [[-90, -54], [-90, -72], [-45, -72]], [[0, -36], [72, -72], [72, -63]], [[0, -36], [-18, -36], [72, -72]], [[72, -72], [216, -108], [72, -63]], [[72, -72], [216, -117], [216, -108]], [[216, -117], [225, -117], [216, -108]], [[288, -72], [306, -99], [396, -144]], [[306, -99], [315, -135], [396, -144]], [[315, -135], [315, -153], [396, -144]], [[396, -144], [315, -153], [297, -180]], [[396, -144], [297, -180], [234, -207]], [[396, -144], [234, -360], [396, -360]], [[396, -144], [234, -207], [234, -360]], [[108, 18], [144, 9], [144, 18]], [[108, 18], [108, 9], [144, 9]], [[117, 9], [144, 0], [144, 9]], [[117, 9], [117, 0], [144, 0]], [[126, 0], [144, -9], [144, 0]], [[126, 0], [126, -9], [144, -9]], [[135, -9], [144, -18], [144, -9]], [[135, -9], [135, -18], [144, -18]], [[144, 36], [72, 18], [144, 18]], [[144, 36], [72, 36], [72, 18]], [[144, -18], [234, -27], [144, 18]], [[144, -18], [234, -54], [234, -27]], [[234, -54], [288, -72], [234, -27]], [[234, -207], [99, -360], [234, -360]], [[234, -207], [99, -171], [99, -360]], [[-9, -360], [99, -171], [-9, -117]], [[-9, -360], [99, -360], [99, -171]], [[-9, -360], [-45, -72], [-90, -72]], [[-9, -360], [-9, -117], [-45, -72]], [[-90, -72], [-90, -360], [-9, -360]], [[-90, -180], [-126, -360], [-90, -360]], [[-90, -180], [-126, -180], [-126, -360]], [[396, -144], [396, 36], [288, -72]], [[396, 36], [144, 18], [234, -27]], [[396, 36], [144, 36], [144, 18]], [[234, -27], [288, -72], [396, 36]], [[396, 36], [-126, 144], [-126, 36]], [[396, 36], [396, 144], [-126, 144]], [[-126, 144], [-288, -360], [-126, -360]], [[-126, 144], [-288, 144], [-288, -360]], [[396, -360], [576, 144], [396, 144]], [[396, -360], [576, -360], [576, 144]]); _local3 = new Array(new b2Vec2(-36, -54), new b2Vec2(252, -144)); _local4 = new b2Vec2(90, 0); _local5 = new b2Vec2(90, 18); _local6 = false; _local9 = "Mini-Loop"; _local7 = [350, 430]; _local8 = new Array("Press R to reset the bike", "Or select reset bike from the pause menu"); _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, _local8); levels.push(_local1); _local2 = new Array([[270, -126], [270, -117], [180, -90], [234, -126]], [[-108, -270], [-144, -252], [-108, -324]], [[-144, -252], [-162, -234], [-216, -324], [-108, -324]], [[-162, -234], [-180, -198], [-216, -324]], [[-180, -198], [-180, -180], [-216, -54], [-216, -324]], [[-180, -180], [-162, -144], [-216, -54]], [[-162, -144], [-126, -108], [-216, -54]], [[-126, -108], [-90, -90], [-216, -54]], [[-90, -90], [180, -90], [540, -54], [-216, -54]], [[540, -324], [540, -54], [522, -180], [522, -324]], [[522, -180], [540, -54], [504, -126]], [[504, -126], [540, -54], [432, -90]], [[432, -90], [540, -54], [342, -90]], [[540, -54], [180, -90], [342, -90]], [[342, -90], [180, -90], [270, -117]], [[-216, -54], [-540, -324], [-216, -324]], [[-216, -54], [-540, -54], [-540, -324]], [[-540, -324], [-108, -468], [-108, -324]], [[-540, -324], [-540, -468], [-108, -468]], [[540, -54], [-540, 144], [-540, -54]], [[540, -54], [540, 144], [-540, 144]], [[540, -324], [828, 144], [540, 144]], [[540, -324], [828, -324], [828, 144]]); _local3 = new Array(new b2Vec2(-48, -250), new b2Vec2(510, -280)); _local4 = new b2Vec2(50, -115); _local5 = new b2Vec2(50, -90); _local6 = true; _local9 = "Keep at it..."; _local7 = [690, 780]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-144, 0], [-54, -18], [-18, 0]], [[-144, 0], [-72, -54], [-54, -18]], [[-144, 0], [-72, -108], [-72, -54]], [[-144, 0], [-144, -108], [-72, -108]], [[1296, -288], [1440, 0], [1296, 0]], [[1296, -288], [1440, -288], [1440, 0]], [[1440, 0], [1440, 216], [-144, 216]], [[-144, 216], [-288, -108], [-144, -108]], [[-144, 216], [-288, 216], [-288, -108]], [[-288, -108], [-72, -396], [-72, -108]], [[-288, -108], [-288, -396], [-72, -396]], [[909, -36], [972, 0], [909, 0]], [[855, -36], [855, 0], [792, 0]], [[855, 0], [909, -36], [909, 0]], [[855, 0], [855, -36], [909, -36]], [[351, -162], [351, 0], [324, -99]], [[324, -99], [351, 0], [297, -72]], [[351, 0], [216, -36], [297, -72]], [[351, 0], [99, -18], [216, -36]], [[351, 0], [36, 0], [99, -18]], [[351, 0], [351, -162], [378, -99]], [[378, -99], [405, -72], [351, 0]], [[405, -72], [486, -36], [351, 0]], [[351, 0], [486, -36], [594, -18]], [[351, 0], [594, -18], [666, 0]], [[1296, 0], [1224, -63], [1251, -90]], [[1296, 0], [1251, -90], [1269, -135]], [[1179, -36], [1224, -63], [1296, 0]], [[1098, -18], [1179, -36], [1296, 0]], [[972, 0], [1098, -18], [1296, 0]], [[1296, 0], [1269, -135], [1278, -225]], [[1296, 0], [1278, -288], [1296, -288]], [[1296, 0], [1278, -225], [1278, -288]], [[1440, 0], [-144, 216], [-144, 0]], [[936, -288], [1440, -486], [1440, -288]], [[936, -288], [936, -486], [1440, -486]]); _local3 = new Array(new b2Vec2(351, -225), new b2Vec2(1233, -144), new b2Vec2(936, -81)); _local4 = new b2Vec2(0, -18); _local5 = new b2Vec2(882, -36); _local6 = true; _local9 = "Mini Park"; _local7 = [645, 800]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-198, -180], [-216, -144], [-216, -234]], [[-216, -234], [-180, -198], [-198, -180]], [[-216, -234], [-144, -216], [-180, -198]], [[-90, -216], [-216, -234], [36, -234]], [[-90, -216], [-144, -216], [-216, -234]], [[-90, -144], [-54, -72], [-108, -108]], [[-90, -144], [-54, -108], [-54, -72]], [[-54, -108], [-18, -54], [-54, -72]], [[-54, -108], [-18, -90], [-18, -54]], [[-18, -90], [72, -54], [-18, -54]], [[-18, -90], [72, -90], [72, -54]], [[72, -54], [36, -36], [-18, -54]], [[72, -90], [180, -72], [72, -54]], [[72, -90], [180, -108], [180, -72]], [[-216, -54], [-180, 0], [-216, 72]], [[-180, 0], [-18, 72], [-216, 72]], [[144, 72], [270, 18], [342, 72]], [[270, 18], [306, -36], [342, 72]], [[324, -126], [306, -162], [324, -234]], [[306, -162], [270, -198], [324, -234]], [[324, -234], [270, -198], [216, -216]], [[90, -180], [36, -234], [216, -216]], [[36, -234], [324, -234], [216, -216]], [[-90, -216], [36, -234], [-18, -180]], [[36, -234], [90, -180], [-18, -180]], [[324, -108], [342, 72], [306, -36]], [[324, -234], [342, -234], [324, -126]], [[324, -108], [342, -126], [342, 72]], [[324, -108], [324, -126], [342, -126]], [[324, -126], [342, -234], [342, -126]], [[-216, 198], [-360, -360], [-216, -360]], [[-216, 198], [-360, 198], [-360, -360]], [[342, -234], [486, -360], [486, -234]], [[342, -234], [342, -360], [486, -360]], [[342, -234], [486, 198], [342, 198]], [[342, -234], [486, -234], [486, 198]], [[342, 72], [342, 198], [-216, 198]], [[342, 72], [-216, 198], [-216, 72]], [[342, -360], [-216, -234], [-216, -360]], [[342, -360], [342, -234], [-216, -234]], [[54, 72], [90, 36], [126, 72]], [[-18, 72], [18, 36], [54, 72]]); _local3 = new Array(new b2Vec2(234, -180), new b2Vec2(-198, -90), new b2Vec2(-90, -198), new b2Vec2(54, 18)); _local4 = new b2Vec2(162, -126); _local5 = new b2Vec2(0, -90); _local6 = false; _local9 = "Indoor Loop"; _local7 = [600, 660]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-198, 0], [0, -72], [0, 0]], [[0, -54], [72, -36], [0, -36]], [[0, -54], [54, -54], [72, -36]], [[0, -36], [144, -18], [0, -18]], [[0, -36], [126, -36], [144, -18]], [[0, -18], [216, 0], [0, 0]], [[0, -18], [198, -18], [216, 0]], [[378, 0], [450, -18], [504, 0]], [[450, -18], [468, -36], [504, 0]], [[468, -36], [504, -90], [504, 0]], [[504, -72], [576, -54], [504, -54]], [[504, -72], [558, -72], [576, -54]], [[504, -54], [648, -36], [504, -36]], [[504, -54], [630, -54], [648, -36]], [[504, -36], [720, -18], [504, -18]], [[504, -36], [702, -36], [720, -18]], [[504, -18], [792, 0], [504, 0]], [[504, -18], [774, -18], [792, 0]], [[954, 0], [1008, 18], [954, 18]], [[954, 18], [1026, 54], [954, 54]], [[954, 18], [1008, 18], [1026, 54]], [[954, 54], [1008, 90], [954, 90]], [[954, 54], [1026, 54], [1008, 90]], [[1008, 90], [954, 108], [954, 90]], [[954, 0], [-486, 108], [-486, 0]], [[954, 0], [954, 108], [-486, 108]], [[900, 216], [846, 198], [900, 198]], [[900, 216], [810, 216], [846, 198]], [[900, 234], [738, 216], [900, 216]], [[900, 234], [702, 234], [738, 216]], [[900, 252], [630, 234], [900, 234]], [[900, 252], [594, 252], [630, 234]], [[900, 270], [522, 252], [900, 252]], [[900, 270], [486, 270], [522, 252]], [[900, 288], [450, 270], [900, 270]], [[900, 288], [414, 288], [450, 270]], [[126, 288], [180, 270], [252, 288]], [[126, 288], [162, 252], [180, 270]], [[126, 288], [126, 252], [162, 252]], [[126, 270], [54, 261], [126, 261]], [[126, 270], [54, 270], [54, 261]], [[126, 279], [-18, 270], [126, 270]], [[126, 279], [-18, 279], [-18, 270]], [[126, 288], [-90, 279], [126, 279]], [[126, 288], [-90, 288], [-90, 279]], [[1116, -54], [1116, 0], [1080, -36]], [[1116, -54], [1188, -72], [1242, -36]], [[1242, -36], [1134, 54], [1116, 0]], [[1242, -36], [1242, 36], [1134, 54]], [[1242, -36], [1116, 0], [1116, -54]], [[1116, 108], [1134, 54], [1224, 126]], [[1242, 36], [1224, 126], [1134, 54]], [[1116, 108], [1224, 126], [1080, 144]], [[1224, 126], [1026, 162], [1080, 144]], [[1224, 126], [1134, 216], [1026, 162]], [[1026, 162], [900, 288], [900, 198]], [[1026, 162], [1134, 216], [900, 288]], [[900, 288], [-270, 378], [-198, 288]], [[900, 288], [774, 378], [-270, 378]], [[-486, -162], [-630, 108], [-630, -162]], [[-486, -162], [-486, 108], [-630, 108]], [[-270, 324], [-198, 288], [-270, 378]], [[-288, 360], [-270, 324], [-270, 378]], [[-306, 270], [-342, 324], [-342, 270]], [[-396, 360], [-342, 324], [-342, 360]], [[-396, 360], [-396, 324], [-342, 324]], [[-342, 360], [-378, 396], [-396, 360]], [[-342, 360], [-324, 396], [-378, 396]], [[-324, 396], [-324, 450], [-378, 396]], [[-324, 396], [-306, 414], [-324, 450]], [[-306, 414], [-270, 450], [-324, 450]], [[-306, 414], [-270, 432], [-270, 450]], [[-270, 432], [-162, 450], [-270, 450]], [[-342, 324], [-378, 270], [-342, 270]], [[-342, 324], [-396, 324], [-378, 270]], [[-378, 270], [-342, 252], [-306, 270]], [[72, 450], [-198, 468], [-324, 450]], [[72, 450], [72, 468], [-198, 468]], [[72, 450], [90, 504], [72, 504]], [[90, 504], [72, 540], [72, 504]], [[90, 504], [108, 540], [72, 540]], [[72, 540], [198, 594], [72, 594]], [[72, 540], [198, 540], [198, 594]], [[198, 594], [342, 378], [342, 594]], [[198, 594], [198, 378], [342, 378]], [[-180, 468], [72, 468], [72, 594]], [[0, -54], [0, -72], [9, -54]]); _local3 = new Array(new b2Vec2(126, -108), new b2Vec2(54, 162), new b2Vec2(558, -198)); _local4 = new b2Vec2(-450, -18); _local5 = new b2Vec2(162, 540); _local6 = true; _local9 = "Fast and Furious"; _local7 = [960, 1050]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-522, -162], [-504, -180], [-468, -180]], [[-468, -180], [-414, -162], [-522, -162]], [[72, -162], [90, -180], [126, -162]], [[-108, -162], [-522, -54], [-522, -162]], [[-108, -162], [-108, -54], [-522, -54]], [[414, -162], [90, -54], [72, -162]], [[414, -162], [414, -54], [90, -54]], [[-198, -162], [-126, -180], [-108, -162]], [[-198, -162], [-162, -180], [-126, -180]], [[702, -162], [612, -144], [612, -198]], [[612, -198], [720, -216], [702, -162]], [[612, -198], [702, -270], [720, -216]], [[612, -198], [648, -288], [702, -270]], [[612, -198], [594, -288], [648, -288]], [[702, -162], [594, -54], [612, -144]], [[702, -162], [666, -54], [594, -54]], [[666, -54], [558, -18], [594, -54]], [[666, -54], [594, 18], [558, -18]], [[594, 18], [486, 18], [558, -18]], [[594, 18], [468, 72], [486, 18]], [[414, 72], [90, 162], [72, 72]], [[414, 72], [414, 162], [90, 162]], [[72, 72], [108, 54], [144, 72]], [[-90, 72], [-504, 162], [-540, 72]], [[-90, 72], [-108, 162], [-504, 162]], [[-540, 72], [-522, 54], [-468, 72]], [[-216, 72], [-108, 54], [-90, 72]], [[-216, 72], [-144, 54], [-108, 54]], [[-486, 342], [-450, 288], [-342, 324]], [[-342, 324], [-306, 288], [-252, 306]], [[-252, 306], [-198, 288], [-180, 324]], [[-180, 324], [-108, 306], [-72, 324]], [[-72, 324], [-36, 288], [54, 324]], [[54, 324], [72, 288], [144, 324]], [[144, 324], [162, 306], [216, 342]], [[216, 342], [252, 306], [288, 324]], [[288, 324], [414, 324], [414, 450]], [[288, 324], [216, 450], [216, 342]], [[216, 342], [144, 450], [144, 324]], [[144, 324], [-180, 450], [-180, 324]], [[144, 324], [144, 450], [-180, 450]], [[216, 342], [216, 450], [144, 450]], [[216, 450], [288, 324], [414, 450]], [[-180, 324], [-342, 324], [-252, 306]], [[-180, 324], [-342, 450], [-342, 324]], [[-180, 324], [-180, 450], [-342, 450]], [[-342, 324], [-486, 450], [-486, 342]], [[-342, 324], [-342, 450], [-486, 450]], [[288, -162], [378, -180], [414, -162]], [[378, -180], [414, -198], [414, -162]], [[522, -270], [468, -288], [594, -288]], [[522, -270], [468, -279], [468, -288]], [[567, -252], [522, -270], [594, -288]], [[594, -234], [567, -252], [594, -288]], [[612, -198], [594, -234], [594, -288]], [[-738, -18], [-630, -54], [-576, -18]], [[-576, -18], [-630, -9], [-738, -18]], [[-738, -18], [-630, -9], [-657, 9]], [[-657, 9], [-675, 36], [-738, -18]], [[-675, 36], [-684, 72], [-738, -18]], [[-756, 54], [-684, 72], [-684, 108]], [[-756, 54], [-738, -18], [-684, 72]], [[-684, 108], [-711, 198], [-756, 54]], [[-684, 108], [-666, 144], [-711, 198]], [[-666, 144], [-630, 171], [-711, 198]], [[-612, 252], [-711, 198], [-630, 171]], [[-612, 252], [-630, 171], [-522, 216]]); _local3 = new Array(new b2Vec2(-18, -234), new b2Vec2(0, 0), new b2Vec2(540, -216), new b2Vec2(-648, 72), new b2Vec2(0, 234)); _local4 = new b2Vec2(-396, -180); _local5 = new b2Vec2(360, 324); _local6 = true; _local9 = "Outdoor Terrain"; _local7 = [1150, 1400]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-198, 0], [0, -72], [0, 0]], [[0, -54], [72, -36], [0, -36]], [[0, -54], [54, -54], [72, -36]], [[0, -36], [144, -18], [0, -18]], [[0, -36], [126, -36], [144, -18]], [[0, -18], [216, 0], [0, 0]], [[0, -18], [198, -18], [216, 0]], [[378, 0], [450, -18], [504, 0]], [[450, -18], [468, -36], [504, 0]], [[504, -72], [576, -54], [504, -54]], [[504, -72], [558, -72], [576, -54]], [[504, -54], [648, -36], [504, -36]], [[504, -54], [630, -54], [648, -36]], [[504, -36], [720, -18], [504, -18]], [[504, -36], [702, -36], [720, -18]], [[504, -18], [792, 0], [504, 0]], [[504, -18], [774, -18], [792, 0]], [[954, 0], [1008, 18], [954, 18]], [[954, 18], [1026, 54], [954, 54]], [[954, 18], [1008, 18], [1026, 54]], [[954, 54], [1008, 90], [954, 90]], [[954, 54], [1026, 54], [1008, 90]], [[1008, 90], [954, 108], [954, 90]], [[954, 0], [-486, 108], [-486, 0]], [[954, 0], [954, 108], [-486, 108]], [[900, 216], [846, 198], [900, 198]], [[900, 216], [810, 216], [846, 198]], [[900, 234], [738, 216], [900, 216]], [[900, 234], [702, 234], [738, 216]], [[900, 252], [630, 234], [900, 234]], [[900, 252], [594, 252], [630, 234]], [[900, 270], [522, 252], [900, 252]], [[900, 270], [486, 270], [522, 252]], [[900, 288], [450, 270], [900, 270]], [[900, 288], [414, 288], [450, 270]], [[126, 288], [180, 270], [252, 288]], [[126, 288], [162, 252], [180, 270]], [[126, 288], [126, 252], [162, 252]], [[126, 270], [54, 261], [126, 261]], [[126, 270], [54, 270], [54, 261]], [[126, 279], [-18, 270], [126, 270]], [[126, 279], [-18, 279], [-18, 270]], [[126, 288], [-90, 279], [126, 279]], [[126, 288], [-90, 288], [-90, 279]], [[1116, -54], [1116, 0], [1080, -36]], [[1116, -54], [1188, -72], [1242, -36]], [[1242, -36], [1134, 54], [1116, 0]], [[1242, -36], [1242, 36], [1134, 54]], [[1242, -36], [1116, 0], [1116, -54]], [[1116, 108], [1134, 54], [1224, 126]], [[1242, 36], [1224, 126], [1134, 54]], [[1116, 108], [1224, 126], [1080, 144]], [[1224, 126], [1026, 162], [1080, 144]], [[1224, 126], [1134, 216], [1026, 162]], [[1026, 162], [900, 288], [900, 198]], [[1026, 162], [1134, 216], [900, 288]], [[900, 288], [-270, 378], [-198, 288]], [[900, 288], [774, 378], [-270, 378]], [[-486, -162], [-630, 108], [-630, -162]], [[-486, -162], [-486, 108], [-630, 108]], [[-270, 324], [-198, 288], [-270, 378]], [[-288, 360], [-270, 324], [-270, 378]], [[-306, 270], [-342, 324], [-342, 270]], [[-396, 360], [-342, 324], [-342, 360]], [[-396, 360], [-396, 324], [-342, 324]], [[-342, 360], [-378, 396], [-396, 360]], [[-342, 360], [-324, 396], [-378, 396]], [[-324, 396], [-324, 450], [-378, 396]], [[-324, 396], [-306, 414], [-324, 450]], [[-306, 414], [-270, 450], [-324, 450]], [[-306, 414], [-270, 432], [-270, 450]], [[-270, 432], [-162, 450], [-270, 450]], [[-342, 324], [-378, 270], [-342, 270]], [[-342, 324], [-396, 324], [-378, 270]], [[-378, 270], [-342, 252], [-306, 270]], [[72, 450], [-198, 468], [-324, 450]], [[72, 450], [72, 468], [-198, 468]], [[72, 450], [90, 504], [72, 504]], [[90, 504], [72, 540], [72, 504]], [[90, 504], [108, 540], [72, 540]], [[72, 540], [198, 594], [72, 594]], [[72, 540], [198, 540], [198, 594]], [[198, 594], [342, 378], [342, 594]], [[198, 594], [198, 378], [342, 378]], [[-180, 468], [72, 468], [72, 594]], [[0, -54], [0, -72], [9, -54]], [[468, -36], [504, -72], [504, 0]]); _local3 = new Array(new b2Vec2(-270, 270), new b2Vec2(1044, -36), new b2Vec2(108, -72)); _local4 = new b2Vec2(162, 522); _local5 = new b2Vec2(-450, 0); _local6 = false; _local7 = [1380, 1500]; _local9 = "Uphill Struggle"; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[216, 0], [288, -18], [360, 0]], [[288, -18], [360, -54], [360, 0]], [[360, 0], [0, 36], [0, 0]], [[360, 0], [324, 36], [0, 36]], [[684, -54], [684, 0], [648, -90]], [[756, -18], [684, 0], [684, -54]], [[684, 0], [756, -18], [828, 0]], [[549, 0], [504, 9], [495, 0]], [[549, 0], [540, 9], [504, 9]], [[549, 0], [567, -72], [585, -72]], [[459, -72], [477, -72], [495, 0]], [[720, 36], [972, 0], [972, 36]], [[720, 36], [684, 0], [972, 0]], [[360, -54], [396, -90], [360, 0]], [[648, 36], [684, 0], [720, 36]], [[576, 36], [612, 0], [648, 36]], [[324, 36], [360, 0], [396, 36]], [[468, 36], [540, 9], [576, 36]], [[468, 36], [504, 9], [540, 9]], [[468, 36], [432, 0], [441, -9]], [[396, 36], [432, 0], [468, 36]], [[468, 36], [468, 9], [468, 27]], [[468, 36], [459, -18], [468, 9]], [[468, 36], [468, 9], [477, -9]], [[405, -9], [414, 0], [396, 36]], [[387, -18], [396, -27], [396, 36]], [[378, -9], [378, 0], [360, 0]], [[576, 36], [567, 9], [576, -9]], [[576, 36], [585, 0], [603, -18]], [[648, 36], [630, 0], [639, 0]], [[648, 36], [648, -18], [657, -27]], [[684, 0], [666, 0], [666, -9]], [[-36, -18], [0, 0], [-108, 0]], [[-108, 0], [-54, -36], [-36, -18]], [[-63, -72], [-54, -36], [-108, 0]], [[-72, -90], [-63, -72], [-108, 0]], [[-90, -99], [-72, -90], [-108, 0]], [[-108, -99], [-90, -99], [-108, 0]], [[-108, 0], [-144, -99], [-108, -99]], [[-108, 0], [-144, 0], [-144, -99]], [[972, 0], [1080, -18], [1188, 0]], [[1080, -18], [1116, -36], [1188, 0]], [[1116, -36], [1134, -54], [1188, 0]], [[1134, -54], [1152, -90], [1188, 0]], [[1188, 0], [1152, -90], [1170, -162]], [[1188, 0], [1170, -288], [1188, -288]], [[1188, 0], [1170, -162], [1170, -288]], [[1188, -288], [1368, 36], [1188, 36]], [[1188, -288], [1368, -288], [1368, 36]], [[972, 36], [1188, 0], [1188, 36]], [[972, 36], [972, 0], [1188, 0]], [[1170, -288], [1368, -504], [1368, -288]], [[1170, -288], [1170, -504], [1368, -504]], [[-144, 0], [-324, -360], [-144, -360]], [[-144, 0], [-324, 0], [-324, -360]], [[0, 0], [-324, 36], [-324, 0]], [[0, 0], [0, 36], [-324, 36]], [[1368, 36], [-324, 180], [-324, 36]], [[1368, 36], [1368, 180], [-324, 180]], [[-144, -99], [-108, -288], [-108, -99]], [[-144, -99], [-144, -288], [-108, -288]]); _local3 = new Array(new b2Vec2(1152, -216), new b2Vec2(522, -171)); _local4 = new b2Vec2(-90, -108); _local5 = new b2Vec2(522, 0); _local6 = true; _local9 = "Hole in 2"; _local7 = [700, 850]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-126, -54], [-108, -36], [-162, 0]], [[-162, 0], [-108, -36], [-72, -18]], [[-162, 0], [-72, -18], [-18, 0]], [[-144, -90], [-126, -54], [-162, 0]], [[-162, -144], [-144, -90], [-162, 0]], [[144, 0], [18, 0], [72, -18]], [[144, 0], [72, -18], [108, -36]], [[144, 0], [108, -36], [126, -54]], [[144, 0], [126, -54], [144, -90]], [[144, 0], [144, -90], [162, -144]], [[162, -144], [162, 0], [144, 0]], [[162, -180], [144, -234], [162, -324]], [[144, -234], [126, -270], [162, -324]], [[126, -270], [108, -288], [162, -324]], [[162, -324], [108, -288], [72, -306]], [[162, -324], [72, -306], [18, -324]], [[-162, -324], [-18, -324], [-72, -306]], [[-162, -324], [-72, -306], [-108, -288]], [[-162, -324], [-108, -288], [-126, -270]], [[-162, -324], [-126, -270], [-144, -234]], [[-162, -324], [-144, -234], [-162, -180]], [[-198, -360], [-162, 0], [-198, 36]], [[-198, -360], [-162, -324], [-162, 0]], [[-198, 36], [162, 0], [198, 36]], [[-198, 36], [-162, 0], [162, 0]], [[198, 36], [162, -324], [198, -360]], [[198, 36], [162, 0], [162, -324]], [[198, -360], [-162, -324], [-198, -360]], [[198, -360], [162, -324], [-162, -324]], [[0, -162], [-27, -144], [-36, -162]], [[0, -162], [-18, -135], [-27, -144]], [[0, -162], [0, -126], [-18, -135]], [[0, -162], [18, -135], [0, -126]], [[0, -162], [27, -144], [18, -135]], [[0, -162], [36, -162], [27, -144]], [[0, -162], [27, -180], [36, -162]], [[0, -162], [18, -189], [27, -180]], [[0, -162], [0, -198], [18, -189]], [[0, -162], [-18, -189], [0, -198]], [[0, -162], [-27, -180], [-18, -189]], [[0, -162], [-36, -162], [-27, -180]]); _local3 = new Array(new b2Vec2(0, -306), new b2Vec2(108, -261), new b2Vec2(-108, -261)); _local4 = new b2Vec2(0, -18); _local5 = new b2Vec2(0, 0); _local6 = true; _local9 = "Loop di Loop"; _local7 = [300, 420]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-180, -108], [-144, -126], [-36, -108]], [[-180, -108], [-162, -144], [-144, -126]], [[-36, -108], [36, -18], [-162, -18]], [[-36, -108], [72, -72], [36, -18]], [[-198, -72], [-36, -108], [-162, -18]], [[-198, -72], [-180, -108], [-36, -108]], [[-288, -144], [-306, -117], [-324, -144]], [[-288, -144], [-297, -126], [-306, -117]], [[-306, -117], [-324, -108], [-324, -144]], [[-324, -108], [-504, -144], [-324, -144]], [[-324, -108], [-504, -108], [-504, -144]], [[-504, -108], [-531, -126], [-504, -144]], [[-504, -108], [-522, -117], [-531, -126]], [[-504, -144], [-531, -126], [-540, -144]], [[-648, -108], [-612, -126], [-621, -108]], [[-648, -108], [-630, -126], [-612, -126]], [[-621, -108], [-810, -45], [-819, -108]], [[-621, -108], [-657, -45], [-810, -45]], [[-936, -108], [-846, -144], [-819, -108]], [[-936, -108], [-900, -144], [-846, -144]], [[-810, -45], [-1008, -108], [-936, -108]], [[-810, -45], [-1026, -45], [-1008, -108]], [[-936, -108], [-819, -108], [-810, -45]], [[-1035, -108], [-1035, -117], [-1008, -108]], [[-1071, -108], [-1053, -126], [-1035, -117]], [[-1071, -108], [-1062, -135], [-1053, -126]], [[-1071, -153], [-1062, -135], [-1071, -108]], [[-1080, -180], [-1071, -153], [-1071, -108]], [[-1143, -189], [-1359, -234], [-1269, -234]], [[-1143, -189], [-1377, -189], [-1359, -234]], [[-1269, -234], [-1116, -234], [-1143, -189]], [[-1377, -189], [-1377, -324], [-1359, -234]], [[-1395, -189], [-1377, -360], [-1377, -189]], [[-1395, -189], [-1395, -360], [-1377, -360]], [[-1062, -45], [-1035, -117], [-1035, -45]], [[-1062, -45], [-1071, -108], [-1035, -117]], [[-1035, -45], [-1008, -108], [-1026, -45]], [[-1035, -45], [-1035, -108], [-1008, -108]], [[-990, -324], [-864, -261], [-990, -261]], [[-990, -324], [-864, -324], [-864, -261]], [[-1260, -234], [-1206, -252], [-1206, -234]], [[-1206, -252], [-1170, -234], [-1206, -234]], [[-1206, -252], [-1170, -270], [-1170, -234]], [[-1170, -270], [-1116, -234], [-1170, -234]], [[-1170, -270], [-1134, -270], [-1116, -234]], [[-864, -324], [-792, -306], [-864, -261]], [[-792, -306], [-792, -270], [-864, -261]], [[-792, -306], [-747, -324], [-792, -270]], [[-666, -306], [-648, -333], [-639, -333]], [[-666, -306], [-666, -324], [-648, -333]], [[-639, -333], [-594, -288], [-666, -306]], [[-639, -333], [-603, -315], [-594, -288]], [[-504, -324], [-594, -288], [-603, -315]], [[-504, -324], [-504, -297], [-594, -288]], [[-504, -324], [-468, -297], [-504, -297]], [[-504, -324], [-468, -342], [-468, -297]], [[-1044, -297], [-990, -324], [-990, -261]], [[-468, -342], [-450, -324], [-468, -297]], [[-324, -324], [-252, -324], [-216, -306]], [[-216, -306], [-288, -288], [-324, -324]], [[-216, -306], [-216, -288], [-288, -288]], [[-216, -306], [-144, -288], [-216, -288]], [[-216, -306], [-144, -306], [-144, -288]], [[-144, -306], [-117, -315], [-81, -306]], [[-81, -306], [-99, -324], [-90, -333]], [[-81, -306], [-117, -315], [-99, -324]], [[-90, -333], [-81, -351], [-81, -306]], [[-81, -351], [-72, -378], [-81, -306]], [[-72, -288], [-81, -306], [-72, -378]], [[-72, -288], [-144, -306], [-81, -306]], [[-72, -288], [-144, -288], [-144, -306]], [[-18, -414], [0, -432], [18, -414]], [[18, -414], [-9, -405], [-18, -414]], [[18, -414], [27, -405], [-9, -405]], [[27, -405], [99, -369], [36, -378]], [[27, -405], [99, -405], [99, -369]], [[36, -378], [-9, -405], [27, -405]], [[99, -405], [144, -360], [99, -369]], [[99, -405], [144, -396], [144, -360]], [[144, -396], [180, -369], [144, -360]], [[144, -396], [180, -405], [180, -369]], [[180, -405], [198, -387], [180, -369]], [[180, -405], [198, -432], [198, -387]], [[198, -531], [216, -405], [198, -387]], [[198, -531], [216, -531], [216, -405]], [[-216, -432], [-216, -459], [-90, -459]], [[198, -18], [216, -54], [252, -18]], [[252, -18], [216, 0], [198, -18]], [[252, -18], [288, 0], [216, 0]], [[432, 0], [270, 36], [216, 0]], [[432, 0], [396, 36], [270, 36]], [[432, 0], [450, 18], [396, 36]], [[432, 0], [468, -18], [450, 18]], [[468, -18], [486, 0], [450, 18]], [[468, -18], [486, -54], [486, 0]], [[486, -144], [504, -36], [486, 0]], [[486, -144], [504, -144], [504, -36]], [[-216, -432], [-333, -459], [-216, -459]], [[-333, -459], [-279, -468], [-243, -459]], [[-333, -459], [-297, -477], [-279, -468]], [[-333, -459], [-306, -486], [-297, -477]], [[-333, -459], [-315, -504], [-306, -486]], [[-333, -459], [-324, -540], [-315, -504]], [[-333, -612], [-324, -540], [-333, -459]], [[-333, -612], [-324, -612], [-324, -540]]); _local3 = new Array(new b2Vec2(144, -108), new b2Vec2(-414, -162), new b2Vec2(-1098, -270), new b2Vec2(-333, -396), new b2Vec2(-90, -495), new b2Vec2(-306, -576), new b2Vec2(-873, -225)); _local4 = new b2Vec2(468, -126); _local5 = new b2Vec2(-216, -459); _local6 = false; _local9 = "Outdoor Fun"; _local7 = [2100, 2400]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-198, -162], [-180, -72], [-198, -72]], [[-180, -72], [-144, -36], [-180, -36]], [[-144, -36], [-90, -18], [-144, -18]], [[-144, -18], [144, 0], [-144, 0]], [[-144, -18], [144, -18], [144, 0]], [[90, -18], [144, -36], [144, -18]], [[144, -36], [180, -72], [180, -36]], [[180, -72], [198, -162], [198, -72]], [[198, -162], [162, -198], [198, -198]], [[162, -198], [108, -216], [162, -216]], [[-198, -198], [-162, -198], [-198, -162]], [[-162, -216], [-108, -216], [-162, -198]], [[-126, -144], [0, -126], [-126, -126]], [[0, -126], [126, -144], [126, -126]], [[18, -144], [126, -144], [0, -126]], [[0, -216], [18, -144], [0, -126]], [[54, -144], [18, -144], [18, -162]], [[18, -162], [18, -144], [0, -216]], [[0, -252], [18, -252], [0, -216]], [[108, -216], [162, -234], [162, -216]], [[108, -216], [90, -216], [162, -234]], [[0, -216], [0, -126], [-18, -144]], [[-18, -144], [-18, -162], [0, -216]], [[-54, -144], [-18, -162], [-18, -144]], [[-18, -144], [0, -126], [-126, -144]], [[0, -216], [-18, -252], [0, -252]], [[-18, -252], [0, -270], [0, -252]], [[-18, -252], [-54, -270], [0, -270]], [[0, -270], [18, -252], [0, -252]], [[0, -270], [54, -270], [18, -252]], [[-162, -216], [-162, -234], [-108, -216]], [[-90, -216], [-108, -216], [-162, -234]], [[-198, -234], [-198, -288], [-180, -252]], [[-198, -288], [-198, -324], [-180, -324]], [[-198, -342], [-162, -342], [-180, -324]], [[162, -234], [180, -252], [180, -234]], [[180, -252], [198, -288], [198, -252]], [[198, -288], [180, -324], [198, -324]], [[180, -324], [162, -342], [198, -342]], [[54, -324], [126, -288], [54, -270]], [[-54, -324], [-54, -270], [-126, -288]], [[0, -306], [-54, -270], [-54, -324]], [[0, -306], [0, -270], [-54, -270]], [[54, -324], [0, -270], [0, -306]], [[54, -324], [54, -270], [0, -270]], [[-180, -252], [-162, -234], [-198, -234]], [[-162, -234], [-198, -198], [-198, -234]], [[-162, -234], [-162, -198], [-198, -198]], [[-180, -72], [-198, -36], [-198, -72]], [[-180, -72], [-180, -36], [-198, -36]], [[-144, -36], [-198, 0], [-198, -36]], [[-144, -36], [-144, 0], [-198, 0]], [[198, -36], [144, 0], [144, -36]], [[198, -36], [198, 0], [144, 0]], [[198, -36], [180, -72], [198, -72]], [[198, -36], [180, -36], [180, -72]], [[162, -198], [198, -234], [198, -198]], [[162, -198], [162, -234], [198, -234]], [[180, -234], [198, -252], [198, -234]], [[180, -234], [180, -252], [198, -252]], [[180, -324], [198, -342], [198, -324]], [[-198, -342], [-180, -324], [-198, -324]], [[-198, -378], [-162, -342], [-198, -342]], [[-198, -378], [-90, -378], [-162, -342]], [[198, -342], [90, -378], [198, -378]], [[198, -342], [162, -342], [90, -378]], [[90, -378], [198, -396], [198, -378]], [[90, -378], [0, -396], [198, -396]], [[0, -396], [-198, -378], [-198, -396]], [[0, -396], [-90, -378], [-198, -378]], [[-198, -396], [198, -432], [198, -396]], [[-198, -396], [-198, -432], [198, -432]], [[198, -432], [234, 0], [198, 0]], [[198, -432], [234, -432], [234, 0]], [[234, 0], [-234, 36], [-234, 0]], [[234, 0], [234, 36], [-234, 36]], [[-234, -432], [-198, 0], [-234, 0]], [[-234, -432], [-198, -432], [-198, 0]]); _local3 = new Array(new b2Vec2(0, -360), new b2Vec2(162, -162), new b2Vec2(-36, -216)); _local4 = new b2Vec2(0, -36); _local5 = new b2Vec2(0, -18); _local6 = true; _local9 = "Lingotto"; _local7 = [1650, 1770]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[0, 0], [18, -108], [36, -54]], [[0, 0], [36, -54], [54, -36]], [[0, 0], [54, -36], [90, -18]], [[0, 0], [90, -18], [162, 0]], [[-54, -36], [-36, -54], [0, 0]], [[0, 0], [-36, -54], [-18, -108]], [[-90, -18], [-54, -36], [0, 0]], [[0, 0], [-162, 0], [-90, -18]], [[0, 0], [-18, -108], [18, -108]], [[-54, -234], [18, -198], [-18, -198]], [[-54, -234], [54, -234], [18, -198]], [[198, 0], [270, -54], [270, 0]], [[270, 0], [342, -54], [342, 0]], [[270, -54], [342, -54], [270, 0]], [[324, -63], [288, -72], [324, -72]], [[324, -63], [288, -63], [288, -72]], [[315, -63], [297, -54], [297, -63]], [[315, -63], [315, -54], [297, -54]], [[558, 0], [522, -18], [540, -36]], [[558, 0], [540, -36], [558, -72]], [[558, -72], [666, 0], [558, 0]], [[558, -72], [666, -72], [666, 0]], [[666, -72], [810, 0], [666, 0]], [[486, 0], [522, -18], [558, 0]], [[342, 0], [342, -54], [414, 0]], [[1026, 0], [972, -36], [990, -54]], [[1026, 0], [990, -54], [1008, -90]], [[936, -18], [972, -36], [1026, 0]], [[882, 0], [936, -18], [1026, 0]], [[1026, 0], [1008, -90], [1026, -144]], [[1026, -378], [1062, 0], [1026, 0]], [[1026, -378], [1062, -378], [1062, 0]], [[1062, 0], [0, 234], [0, 0]], [[1062, 0], [1062, 234], [0, 234]], [[-378, 0], [-306, -18], [-234, 0]], [[-342, -36], [-306, -18], [-378, 0]], [[-360, -54], [-342, -36], [-378, 0]], [[-378, -90], [-360, -54], [-378, 0]], [[-396, -108], [-378, -90], [-378, 0]], [[-432, -126], [-396, -108], [-378, 0]], [[-378, 0], [-486, -36], [-477, -54]], [[-378, 0], [-513, -18], [-486, -36]], [[-378, 0], [-594, 0], [-513, -18]], [[-846, 0], [-846, -54], [-702, 0]], [[-846, -54], [-954, 0], [-954, -54]], [[-846, -54], [-846, 0], [-954, 0]], [[-1350, 0], [-1278, -18], [-1206, 0]], [[-1350, 0], [-1314, -36], [-1278, -18]], [[-1332, -54], [-1314, -36], [-1350, 0]], [[-1350, -90], [-1332, -54], [-1350, 0]], [[-1368, 0], [-1350, -90], [-1350, 0]], [[-1368, 0], [-1368, -162], [-1350, -90]], [[-1404, 0], [-1368, -342], [-1368, 0]], [[-1404, 0], [-1404, -342], [-1368, -342]], [[0, 0], [-1404, 198], [-1404, 0]], [[0, 0], [0, 198], [-1404, 198]], [[-630, -270], [-1206, -270], [-1278, -324]], [[-630, -270], [-882, -234], [-1206, -270]], [[-1278, -324], [-630, -342], [-630, -270]], [[-1278, -324], [-1368, -342], [-630, -342]], [[-630, -306], [-54, -342], [-54, -306]], [[-630, -306], [-630, -342], [-54, -342]], [[54, -342], [-54, -234], [-54, -342]], [[54, -342], [54, -234], [-54, -234]], [[-1404, -342], [0, -486], [0, -342]], [[-1404, -342], [-1404, -486], [0, -486]], [[270, -270], [54, -234], [54, -342]], [[54, -342], [558, -306], [270, -270]], [[54, -342], [558, -342], [558, -306]], [[558, -342], [846, -288], [558, -306]], [[558, -342], [918, -306], [846, -288]], [[558, -342], [954, -342], [918, -306]], [[0, -342], [1026, -486], [1026, -342]], [[0, -342], [0, -486], [1026, -486]], [[1062, -486], [1026, -378], [1026, -486]], [[1062, -486], [1062, -378], [1026, -378]], [[1062, -486], [1206, 234], [1062, 234]], [[1062, -486], [1206, -486], [1206, 234]], [[-1404, 198], [-1440, -486], [-1404, -486]], [[-1404, 198], [-1440, 198], [-1440, -486]], [[-630, -306], [-504, -288], [-630, -270]], [[-630, -306], [-468, -288], [-504, -288]], [[-630, -306], [-54, -306], [-468, -288]], [[-54, -306], [-270, -252], [-468, -288]], [[-54, -306], [-54, -234], [-270, -252]], [[-954, -36], [-981, -45], [-954, -45]], [[-954, -36], [-990, -36], [-981, -45]], [[-954, -27], [-1017, -36], [-954, -36]], [[-954, -27], [-1026, -27], [-1017, -36]], [[-954, -18], [-1053, -27], [-954, -27]], [[-954, -18], [-1062, -18], [-1053, -27]], [[-1098, -9], [-954, -18], [-954, -9]], [[-1098, -9], [-1089, -18], [-954, -18]], [[-1134, 0], [-954, -9], [-954, 0]], [[-1134, 0], [-1125, -9], [-954, -9]], [[-477, -54], [-459, -126], [-378, 0]], [[-459, -126], [-432, -126], [-378, 0]]); _local3 = new Array(new b2Vec2(-972, -108), new b2Vec2(-1332, -234), new b2Vec2(0, -180), new b2Vec2(306, -90), new b2Vec2(1008, -234), new b2Vec2(-432, -252), new b2Vec2(486, -144)); _local4 = new b2Vec2(-198, -18); _local5 = new b2Vec2(-198, 0); _local6 = true; _local9 = "Motor Park"; _local7 = [2000, 2600]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-18, 126], [18, 162], [-18, 162]], [[-18, 126], [18, 126], [18, 162]], [[18, 126], [90, 108], [90, 126]], [[90, 108], [126, 90], [126, 108]], [[126, 90], [144, 72], [144, 90]], [[144, 72], [162, 36], [162, 72]], [[162, 36], [180, -36], [180, 36]], [[216, -72], [180, -36], [180, -72]], [[216, -72], [216, -36], [180, -36]], [[-18, 162], [-36, 135], [-18, 126]], [[-18, 162], [-45, 144], [-36, 135]], [[-54, 162], [-45, 144], [-18, 162]], [[-90, 90], [-126, 108], [-126, 90]], [[-126, 108], [-144, 126], [-144, 108]], [[-144, 126], [-162, 162], [-162, 126]], [[-162, 162], [-198, 234], [-198, 162]], [[-162, 162], [-162, 234], [-198, 234]], [[-162, 234], [-144, 270], [-162, 270]], [[-144, 270], [-108, 288], [-144, 288]], [[-108, 288], [144, 324], [-126, 324]], [[-108, 288], [144, 288], [144, 324]], [[180, -72], [198, -108], [216, -72]], [[216, -72], [270, -36], [216, -36]], [[450, -36], [180, 36], [180, -36]], [[450, -36], [450, 36], [180, 36]], [[144, 216], [144, 288], [108, 288]], [[198, 180], [198, 216], [144, 216]], [[198, 180], [234, 126], [234, 180]], [[252, 99], [270, 90], [270, 126]], [[270, 126], [234, 126], [243, 108]], [[270, 126], [243, 108], [252, 99]], [[450, 90], [270, 126], [270, 90]], [[450, 90], [450, 126], [270, 126]], [[450, 90], [504, 72], [504, 90]], [[504, 72], [522, 90], [504, 90]], [[504, 72], [522, 54], [522, 90]], [[522, 54], [540, 90], [522, 90]], [[522, 54], [540, 18], [540, 90]], [[540, -18], [522, -54], [540, -54]], [[540, -54], [504, -72], [540, -72]], [[540, -54], [522, -54], [504, -72]], [[540, -72], [468, -90], [540, -108]], [[540, -72], [504, -72], [468, -90]], [[540, -108], [558, 126], [540, 126]], [[540, -108], [558, -108], [558, 126]], [[90, -90], [-72, -108], [90, -108]], [[90, -90], [-72, -90], [-72, -108]], [[342, -216], [396, -198], [270, -198]], [[90, -108], [126, -108], [90, -90]], [[90, -108], [126, -126], [126, -108]], [[126, -126], [144, -126], [126, -108]], [[126, -126], [144, -144], [144, -126]], [[-126, -180], [-108, -144], [-126, -144]], [[-108, -144], [-90, -126], [-108, -126]], [[-90, -126], [-54, -108], [-90, -108]], [[-126, -288], [-108, -288], [-126, -252]], [[-108, -306], [-90, -306], [-108, -288]], [[-90, -324], [-54, -324], [-90, -306]], [[-90, -126], [-198, 90], [-198, -126]], [[-90, -126], [-90, 90], [-198, 90]], [[-72, -108], [-90, -90], [-90, -108]], [[-72, -108], [-72, -90], [-90, -90]], [[-108, -126], [-198, -144], [-108, -144]], [[-108, -126], [-198, -126], [-198, -144]], [[-126, 108], [-198, 90], [-126, 90]], [[-126, 108], [-198, 108], [-198, 90]], [[-144, 108], [-198, 126], [-198, 108]], [[-144, 108], [-144, 126], [-198, 126]], [[-162, 126], [-198, 162], [-198, 126]], [[-162, 126], [-162, 162], [-198, 162]], [[-162, 234], [-198, 324], [-198, 234]], [[-162, 234], [-162, 270], [-198, 324]], [[-144, 288], [-126, 324], [-198, 324]], [[-144, 288], [-108, 288], [-126, 324]], [[-198, 324], [-144, 270], [-144, 288]], [[-198, 324], [-162, 270], [-144, 270]], [[-108, -306], [-126, -288], [-126, -342]], [[-108, -306], [-108, -288], [-126, -288]], [[-126, -342], [-90, -306], [-108, -306]], [[-126, -342], [-90, -324], [-90, -306]], [[-54, -342], [-90, -324], [-126, -342]], [[-54, -342], [-54, -324], [-90, -324]], [[-126, -414], [-198, -144], [-198, -414]], [[-126, -414], [-126, -144], [-198, -144]], [[-126, -414], [108, -342], [-126, -342]], [[-126, -414], [108, -414], [108, -342]], [[-54, -342], [108, -342], [-54, -324]], [[270, -342], [198, -306], [108, -342]], [[558, -342], [522, -324], [486, -342]], [[558, -342], [540, -306], [522, -324]], [[558, -342], [558, -270], [540, -306]], [[522, -144], [540, -162], [558, -126]], [[540, -162], [558, -198], [558, -126]], [[558, -126], [504, -126], [522, -144]], [[558, -126], [468, -108], [504, -126]], [[558, -126], [558, -108], [468, -108]], [[540, -108], [468, -90], [468, -108]], [[342, -216], [414, -198], [396, -198]], [[342, -216], [414, -234], [414, -198]], [[414, -234], [486, -216], [414, -198]], [[414, -234], [486, -234], [486, -216]], [[108, -342], [558, -414], [558, -342]], [[108, -342], [108, -414], [558, -414]], [[558, -414], [666, 126], [558, 126]], [[558, -414], [666, -414], [666, 126]], [[450, 126], [540, 90], [540, 126]], [[450, 126], [450, 90], [540, 90]], [[198, 36], [162, 72], [162, 36]], [[162, 72], [144, 90], [144, 72]], [[144, 90], [126, 108], [126, 90]], [[126, 108], [90, 126], [90, 108]], [[90, 126], [18, 162], [18, 126]], [[0, 180], [-45, 180], [-54, 162]], [[0, 180], [-27, 189], [-45, 180]], [[-54, 162], [18, 162], [0, 180]], [[144, 216], [198, 216], [144, 324]], [[198, 180], [234, 180], [198, 216]], [[234, 126], [342, 126], [234, 180]], [[450, -36], [459, 27], [450, 36]], [[450, -36], [459, -27], [459, 27]], [[144, 324], [-198, 486], [-198, 324]], [[144, 324], [144, 486], [-198, 486]], [[144, 486], [144, 324], [198, 216]], [[144, 486], [198, 216], [234, 180]], [[144, 486], [234, 180], [342, 126]], [[144, 486], [666, 126], [666, 486]], [[144, 486], [342, 126], [666, 126]], [[-198, -414], [666, -522], [666, -414]], [[-198, -414], [-198, -522], [666, -522]], [[-198, 486], [-306, -522], [-198, -522]], [[-198, 486], [-306, 486], [-306, -522]], [[-72, -180], [90, -198], [126, -180]], [[-72, -180], [-18, -198], [90, -198]]); _local3 = new Array(new b2Vec2(270, 72), new b2Vec2(288, -252), new b2Vec2(162, -108), new b2Vec2(-108, 144), new b2Vec2(144, -216)); _local4 = new b2Vec2(0, 108); _local5 = new b2Vec2(0, 126); _local6 = false; _local9 = "The Strange"; _local7 = [1200, 1500]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[0, 0], [-36, -18], [-18, -36]], [[0, 0], [-18, -36], [0, -72]], [[-72, 0], [-36, -18], [0, 0]], [[0, 0], [18, -36], [36, -18]], [[0, 0], [0, -72], [18, -36]], [[0, 0], [36, -18], [72, 0]], [[144, 0], [162, 108], [144, 126]], [[144, 0], [162, 18], [162, 108]], [[-144, 126], [-162, 18], [-144, 0]], [[-144, 126], [-162, 108], [-162, 18]], [[-144, 0], [144, 126], [-144, 126]], [[-144, 0], [144, 0], [144, 126]], [[198, 180], [216, 162], [252, 216]], [[216, 162], [234, 126], [252, 216]], [[252, 216], [162, 198], [198, 180]], [[252, -90], [216, -36], [198, -54]], [[234, 0], [216, -36], [252, -90]], [[252, -90], [198, -54], [162, -72]], [[252, 216], [234, 0], [252, -90]], [[252, 216], [234, 126], [234, 0]], [[-270, -90], [-216, -54], [-234, -36]], [[-270, -90], [-234, -36], [-252, 0]], [[-180, -72], [-216, -54], [-270, -90]], [[-234, 162], [-216, 180], [-270, 216]], [[-252, 126], [-234, 162], [-270, 216]], [[-270, 216], [-216, 180], [-180, 198]], [[-270, -90], [-252, 0], [-252, 126]], [[-270, 216], [162, 198], [252, 216]], [[-270, 216], [-180, 198], [162, 198]], [[0, -72], [-18, -108], [18, -108]], [[-18, -108], [-36, -126], [0, -144]], [[-36, -126], [-72, -144], [0, -144]], [[72, -144], [36, -126], [0, -144]], [[0, -144], [18, -108], [-18, -108]], [[0, -144], [36, -126], [18, -108]], [[-90, -90], [-90, -72], [-180, -72]], [[-90, -90], [-81, -81], [-90, -72]], [[-180, -72], [-270, -90], [-90, -90]], [[162, -72], [72, -72], [72, -90]], [[252, -90], [162, -72], [72, -90]], [[72, -72], [63, -81], [72, -90]], [[252, -162], [-270, -144], [-270, -162]], [[252, -162], [252, -144], [-270, -144]], [[-252, 126], [-270, 216], [-270, -90]], [[-270, 0], [-306, -72], [-270, -90]], [[-324, -54], [-306, -72], [-270, 0]], [[-342, -18], [-324, -54], [-270, 0]], [[-342, 0], [-342, -18], [-270, 0]], [[-270, 18], [-342, 9], [-270, 0]], [[-270, 36], [-342, 27], [-270, 18]], [[-270, 54], [-342, 45], [-270, 36]], [[-486, 36], [-468, 18], [-468, 54]], [[-468, 54], [-540, 54], [-486, 36]], [[-270, 54], [-738, 216], [-738, 54]], [[-270, 54], [-270, 216], [-738, 216]], [[-468, 54], [-459, 18], [-450, 54]], [[-450, 54], [-441, 18], [-432, 54]], [[-432, 54], [-423, 18], [-414, 54]], [[-414, 54], [-405, 27], [-396, 54]], [[-396, 54], [-387, 36], [-378, 54]], [[-378, 54], [-369, 36], [-360, 54]], [[-360, 54], [-351, 45], [-342, 54]], [[-702, 0], [-684, 18], [-738, 54]], [[-684, 18], [-648, 36], [-738, 54]], [[-648, 36], [-594, 54], [-738, 54]], [[-720, -36], [-702, 0], [-738, 54]], [[-738, -90], [-720, -36], [-738, 54]], [[-270, -162], [-522, -126], [-522, -144]], [[-270, -162], [-270, -144], [-522, -126]], [[-522, -126], [-540, -144], [-522, -144]], [[-522, -126], [-540, -126], [-540, -144]], [[-540, -126], [-576, -162], [-540, -144]], [[-540, -126], [-576, -126], [-576, -162]], [[-612, -144], [-594, -180], [-576, -162]], [[-612, -144], [-612, -162], [-594, -180]], [[-576, -162], [-594, -126], [-612, -144]], [[-576, -162], [-576, -126], [-594, -126]], [[-738, 216], [-954, 216], [-954, -486]], [[414, -18], [666, -27], [666, -18]], [[414, -18], [423, -27], [666, -27]], [[486, -27], [666, -36], [666, -27]], [[486, -27], [495, -36], [666, -36]], [[558, -36], [666, -45], [666, -36]], [[558, -36], [567, -45], [666, -45]], [[630, -45], [666, -54], [666, -45]], [[630, -45], [639, -54], [666, -54]], [[252, -90], [378, -18], [252, -18]], [[-18, -162], [18, -414], [18, -162]], [[-18, -162], [-18, -414], [18, -414]], [[666, -54], [738, -18], [666, -18]], [[666, -54], [738, -90], [738, -18]], [[738, -90], [756, -18], [738, -18]], [[738, -90], [756, -108], [756, -18]], [[756, -108], [774, -18], [756, -18]], [[756, -108], [774, -144], [774, -18]], [[774, -144], [828, -18], [774, -18]], [[774, -144], [828, -144], [828, -18]], [[828, -144], [846, -108], [846, -18]], [[846, -18], [828, -18], [828, -144]], [[846, -108], [864, -90], [846, -18]], [[864, -90], [936, -54], [846, -18]], [[846, -18], [936, -54], [1098, -54]], [[1098, -54], [1278, -342], [1278, -54]], [[1098, -54], [1098, -342], [1278, -342]], [[846, -18], [1098, -54], [1278, -18]], [[1098, -54], [1278, -54], [1278, -18]], [[252, 126], [1278, -18], [1278, 126]], [[252, 126], [252, -18], [1278, -18]], [[414, 126], [252, 378], [252, 126]], [[414, 126], [414, 378], [252, 378]], [[252, 378], [-522, 216], [252, 216]], [[252, 378], [-522, 378], [-522, 216]], [[252, -144], [252, -162], [261, -153]], [[-738, 216], [-954, -486], [-738, -486]], [[-738, -450], [-18, -306], [-738, -306]], [[-738, -450], [-18, -450], [-18, -306]], [[-504, -306], [-612, -297], [-738, -306]], [[-612, -297], [-648, -288], [-738, -306]], [[-648, -288], [-684, -270], [-738, -306]], [[-684, -270], [-702, -252], [-738, -306]], [[-702, -252], [-711, -234], [-738, -306]], [[-711, -234], [-720, -180], [-738, -306]], [[-720, -180], [-738, -90], [-738, -306]], [[-720, -180], [-720, -36], [-738, -90]]); _local3 = new Array(new b2Vec2(180, -36), new b2Vec2(522, -72), new b2Vec2(-648, -234), new b2Vec2(-414, -54)); _local4 = new b2Vec2(-36, -180); _local5 = new b2Vec2(801, -144); _local6 = false; _local9 = "Indoor Vert"; _local7 = [1200, 1450]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-90, 0], [-36, -90], [0, 0]], [[-90, 0], [-72, -54], [-36, -90]], [[0, 0], [0, -108], [36, -90]], [[0, 0], [-36, -90], [0, -108]], [[36, -90], [90, 0], [0, 0]], [[36, -90], [72, -54], [90, 0]], [[90, 0], [0, 36], [-90, 0]], [[-216, 108], [-180, 54], [-162, 72]], [[-198, 18], [-180, 54], [-216, 108]], [[-216, -18], [-198, 18], [-216, 108]], [[-216, -18], [-198, -18], [-198, 18]], [[-216, -18], [-180, -36], [-198, -18]], [[-216, -18], [-198, -54], [-180, -36]], [[-216, -18], [-216, -54], [-198, -54]], [[-216, -18], [-234, -36], [-216, -54]], [[-216, -18], [-270, -18], [-234, -36]], [[-216, 108], [-162, 72], [-162, 126]], [[-162, 126], [-216, 126], [-216, 108]], [[234, 126], [162, 72], [180, 54]], [[234, 126], [180, 54], [198, 18]], [[234, 126], [198, 18], [198, -18]], [[198, -18], [234, -18], [234, 126]], [[198, -18], [198, -54], [216, -54]], [[198, -18], [180, -36], [198, -54]], [[216, -54], [234, -36], [198, -18]], [[198, -18], [234, -36], [270, -18]], [[-216, -18], [-522, 126], [-522, -18]], [[-216, -18], [-216, 126], [-522, 126]], [[-36, 108], [-36, 126], [-162, 126]], [[-54, 99], [-27, 99], [-36, 108]], [[-54, 99], [-36, 90], [-27, 99]], [[-162, 126], [-162, 72], [-54, 99]], [[-54, 99], [-36, 108], [-162, 126]], [[36, 126], [36, 108], [234, 126]], [[36, 108], [36, 90], [54, 99]], [[36, 108], [27, 99], [36, 90]], [[162, 72], [234, 126], [54, 99]], [[234, 126], [36, 108], [54, 99]], [[-36, 126], [-54, 144], [-162, 126]], [[162, 126], [54, 144], [36, 126]], [[0, -198], [-54, -234], [54, -234]], [[-54, -234], [18, -252], [54, -234]], [[-54, -234], [-18, -252], [18, -252]], [[126, -234], [162, -198], [126, -198]], [[162, -198], [198, -180], [162, -180]], [[198, -180], [270, -162], [198, -162]], [[-126, -234], [-126, -198], [-162, -198]], [[-162, -180], [-198, -180], [-162, -198]], [[-198, -162], [-270, -162], [-198, -180]], [[-270, -162], [-270, -144], [-522, -144]], [[-270, -162], [-198, -162], [-270, -144]], [[-198, -180], [-162, -180], [-198, -162]], [[-162, -198], [-126, -198], [-162, -180]], [[162, -198], [162, -180], [126, -198]], [[198, -162], [162, -180], [198, -180]], [[270, -162], [270, -144], [198, -162]], [[-18, -252], [-27, -261], [-18, -261]], [[-18, -261], [-18, -270], [-9, -270]], [[-9, -270], [0, -279], [9, -270]], [[9, -270], [18, -270], [18, -261]], [[18, -261], [27, -261], [18, -252]], [[18, -252], [-18, -261], [18, -261]], [[18, -252], [-18, -252], [-18, -261]], [[-18, -261], [9, -270], [18, -261]], [[-18, -261], [-9, -270], [9, -270]], [[504, -162], [270, -144], [270, -162]], [[504, -162], [504, -144], [270, -144]], [[522, 198], [-486, 234], [-486, 198]], [[522, 198], [522, 234], [-486, 234]], [[1026, 90], [1008, 54], [1062, -18]], [[1008, 54], [990, 36], [1062, -18]], [[990, 36], [954, 18], [1062, -18]], [[1062, -18], [1026, 126], [1026, 90]], [[1062, -18], [1062, 234], [1026, 126]], [[1062, 234], [990, 180], [1008, 162]], [[1062, 234], [954, 198], [990, 180]], [[1062, 234], [1008, 162], [1026, 126]], [[936, 90], [954, 108], [936, 126]], [[954, 198], [522, 234], [522, 198]], [[954, 198], [1062, 234], [522, 234]], [[936, 90], [936, 126], [234, 126]], [[558, -18], [594, 0], [612, 90]], [[612, 90], [594, 0], [612, 18]], [[612, 90], [612, 18], [630, 54]], [[612, 90], [630, 54], [648, 72]], [[612, 90], [648, 72], [684, 90]], [[234, 90], [558, -18], [612, 90]], [[234, 90], [234, -18], [558, -18]], [[234, 126], [234, 90], [936, 90]], [[-666, 126], [-648, 162], [-666, 198]], [[-666, 198], [-648, 162], [-630, 180]], [[-666, 198], [-630, 180], [-594, 198]], [[-486, 198], [-666, 234], [-666, 198]], [[-486, 198], [-486, 234], [-666, 234]], [[-666, 18], [-648, 54], [-666, 90]], [[-648, 54], [-666, 18], [-630, 36]], [[-666, 18], [-594, 18], [-630, 36]], [[-558, 90], [-522, 108], [-594, 108]], [[-558, 90], [-540, 72], [-522, 108]], [[-522, 108], [-540, 72], [-522, 36]], [[-522, 0], [-540, -36], [-522, -72]], [[-558, -54], [-522, -72], [-540, -36]], [[-558, -54], [-594, -72], [-522, -72]], [[-666, 18], [-630, 0], [-594, 18]], [[-648, -18], [-630, 0], [-666, 18]], [[-666, -54], [-648, -18], [-666, 18]], [[-666, -90], [-666, -162], [-648, -126]], [[-666, -162], [-630, -144], [-648, -126]], [[-666, -162], [-594, -162], [-630, -144]], [[-522, -72], [-594, -72], [-558, -90]], [[-522, -72], [-558, -90], [-540, -108]], [[-522, -72], [-540, -108], [-522, -144]], [[-522, -144], [-504, -162], [-270, -162]], [[-666, 234], [-846, -162], [-666, -162]], [[-666, 234], [-846, 234], [-846, -162]], [[1206, 234], [-846, 342], [-846, 234]], [[1206, 234], [1206, 342], [-846, 342]], [[1206, 234], [1062, -18], [1206, -18]], [[1206, 234], [1062, 234], [1062, -18]], [[504, -162], [702, -180], [774, -162]], [[504, -162], [594, -180], [702, -180]], [[1206, -162], [504, -144], [504, -162]], [[1206, -162], [1206, -144], [504, -144]], [[1206, -162], [1170, -378], [1206, -378]], [[1206, -162], [1170, -162], [1170, -378]], [[-522, -144], [-504, -18], [-522, -18]], [[-522, -144], [-504, -144], [-504, -18]], [[-504, -36], [-468, -27], [-504, -18]], [[-504, -54], [-468, -45], [-504, -36]], [[-504, -72], [-468, -63], [-504, -54]], [[-504, -90], [-468, -81], [-504, -72]], [[-504, -108], [-468, -99], [-504, -90]], [[-504, -126], [-468, -117], [-504, -108]], [[-504, -144], [-468, -135], [-504, -126]], [[-522, 126], [-585, 117], [-522, 108]], [[-522, 126], [-567, 126], [-585, 117]], [[-522, 108], [-585, 117], [-594, 108]]); _local3 = new Array(new b2Vec2(0, -126), new b2Vec2(0, 108), new b2Vec2(0, -324)); _local4 = new b2Vec2(0, 180); _local5 = new b2Vec2(1008, -162); _local6 = true; _local9 = "Three Stories"; _local7 = [1750, 2100]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[18, -162], [-18, -162], [0, -270]], [[18, -162], [36, -234], [36, -162]], [[-36, -162], [-36, -234], [-18, -162]], [[-54, -162], [-54, -198], [-36, -162]], [[90, -126], [108, -108], [54, -108]], [[108, -108], [144, -90], [54, -108]], [[-270, -108], [-270, -126], [-198, -108]], [[-270, -108], [-324, -180], [-270, -126]], [[-270, -108], [-324, -108], [-324, -180]], [[-324, -108], [-378, -234], [-324, -180]], [[-324, -108], [-378, -108], [-378, -234]], [[-378, -108], [-450, -270], [-378, -234]], [[-378, -108], [-450, -108], [-450, -270]], [[-486, -108], [-450, -270], [-450, -108]], [[-486, -108], [-486, -270], [-450, -270]], [[-90, -162], [-54, -108], [-126, -126]], [[-72, -198], [-54, -108], [-90, -162]], [[198, -288], [252, -306], [252, -270]], [[342, -468], [360, -450], [288, -432]], [[360, -450], [432, -468], [432, -432]], [[468, -414], [468, -396], [432, -432]], [[360, -270], [378, -378], [396, -270]], [[324, -270], [342, -342], [360, -270]], [[468, -414], [576, -378], [468, -396]], [[468, -414], [576, -414], [576, -378]], [[396, -270], [396, -360], [450, -288]], [[396, -270], [450, -288], [486, -270]], [[252, -306], [306, -360], [324, -270]], [[72, -162], [90, -126], [54, -108]], [[216, -162], [234, -198], [234, -162]], [[234, -198], [198, -234], [234, -234]], [[72, -180], [72, -216], [90, -216]], [[270, -234], [378, -234], [270, -162]], [[72, -288], [198, -288], [144, -252]], [[198, -288], [198, -234], [144, -252]], [[144, -90], [54, -90], [54, -108]], [[270, -162], [144, -144], [126, -162]], [[270, -162], [252, -144], [144, -144]], [[252, -270], [252, -306], [324, -270]], [[252, -270], [198, -270], [198, -288]], [[198, -234], [594, -270], [594, -234]], [[198, -234], [198, -270], [594, -270]], [[270, -234], [234, -162], [234, -234]], [[270, -234], [270, -162], [234, -162]], [[360, -450], [342, -468], [432, -468]], [[432, -468], [468, -414], [432, -432]], [[432, -468], [468, -468], [468, -414]], [[576, -270], [666, -306], [666, -270]], [[810, -468], [810, -432], [756, -468]], [[846, -432], [846, -342], [810, -432]], [[702, -270], [666, -306], [702, -342]], [[612, -90], [630, -144], [648, -90]], [[594, -270], [666, -234], [594, -234]], [[594, -270], [702, -270], [666, -234]], [[504, -126], [594, -126], [612, -90]], [[-648, -108], [-486, -522], [-486, -108]], [[-648, -108], [-648, -522], [-486, -522]], [[504, -126], [504, -90], [342, -90]], [[504, -90], [504, -126], [612, -90]], [[648, -90], [666, -162], [702, -90]], [[702, -90], [702, -180], [738, -162]], [[738, -162], [774, -180], [702, -90]], [[774, -180], [846, -90], [702, -90]], [[846, -90], [774, -180], [846, -306]], [[846, -90], [54, 90], [54, -90]], [[846, -90], [846, 90], [54, 90]], [[846, -486], [1062, 90], [846, 90]], [[846, -486], [1062, -486], [1062, 90]], [[54, -108], [54, -108], [54, 90]], [[0, -108], [-648, -108], [54, -108]], [[-54, -108], [-198, -108], [-126, -126]], [[-54, -108], [54, -162], [54, -108]], [[-54, -108], [-54, -162], [54, -162]], [[54, -108], [54, -162], [72, -162]], [[54, -108], [54, 90], [-648, -108]], [[702, -468], [576, -414], [576, -468]], [[576, -468], [468, -414], [468, -468]], [[576, -468], [576, -414], [468, -414]], [[846, -468], [810, -432], [810, -468]], [[846, -468], [846, -432], [810, -432]], [[342, -468], [846, -486], [846, -468]], [[702, -270], [666, -270], [666, -306]], [[90, -216], [72, -216], [90, -234]], [[72, -162], [36, -162], [72, -216]], [[108, -234], [90, -216], [90, -234]], [[72, -288], [144, -252], [108, -234]], [[108, -234], [45, -288], [72, -288]], [[108, -234], [90, -234], [45, -288]]); _local3 = new Array(new b2Vec2(0, -306), new b2Vec2(360, -432), new b2Vec2(774, -432), new b2Vec2(630, -216)); _local4 = new b2Vec2(-468, -288); _local5 = new b2Vec2(162, -162); _local6 = true; _local9 = "E.P.I.C."; _local7 = [860, 1000]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-144, 198], [-36, 180], [-18, 216]], [[-126, 90], [-18, 36], [-18, 90]], [[-18, 36], [0, 0], [0, 36]], [[-18, -36], [-54, -54], [-18, -54]], [[18, 216], [-18, 270], [-18, 216]], [[18, 216], [18, 270], [-18, 270]], [[-378, 270], [-198, 234], [-90, 270]], [[378, 270], [-378, 450], [-378, 270]], [[378, 270], [378, 450], [-378, 450]], [[-378, 270], [-216, 198], [-198, 234]], [[-378, 270], [-378, 198], [-216, 198]], [[-378, 198], [-198, 162], [-216, 198]], [[-378, 198], [-378, 162], [-198, 162]], [[-378, 162], [-162, 144], [-198, 162]], [[-72, 144], [-162, 144], [-180, 126]], [[-162, 144], [-378, 126], [-180, 126]], [[-162, 144], [-378, 162], [-378, 126]], [[-378, 126], [-198, 90], [-180, 126]], [[-378, 54], [-180, 54], [-198, 90]], [[-378, 126], [-378, 54], [-198, 90]], [[-180, 54], [-378, 54], [-126, 36]], [[-378, 54], [-378, 0], [-126, 36]], [[-54, 0], [-126, 36], [-126, -18]], [[-126, 36], [-162, -36], [-126, -18]], [[-126, 36], [-378, 0], [-162, -36]], [[-378, 0], [-180, -72], [-162, -36]], [[-378, 0], [-378, -72], [-180, -72]], [[-378, -72], [-162, -108], [-180, -72]], [[-378, -72], [-378, -108], [-162, -108]], [[-378, -108], [-90, -126], [-162, -108]], [[-378, -108], [-378, -126], [-90, -126]], [[-378, -126], [414, -234], [414, -126]], [[-378, -126], [-378, -234], [414, -234]], [[-54, -54], [-126, -72], [0, -72]], [[0, 0], [36, -54], [18, 0]], [[18, 0], [54, -36], [36, 0]], [[36, 0], [72, -18], [36, 18]], [[36, 18], [90, 18], [36, 36]], [[306, -18], [162, 18], [162, -18]], [[162, 54], [162, 18], [198, 36]], [[468, -90], [414, -54], [414, -126]], [[36, 36], [72, 54], [36, 54]], [[90, 54], [99, 18], [108, 54]], [[108, 54], [117, 18], [126, 54]], [[126, 54], [135, 18], [144, 54]], [[144, 54], [153, 18], [162, 54]], [[72, 54], [81, 36], [90, 54]], [[198, 72], [198, 36], [216, 72]], [[360, 126], [342, 126], [360, 90]], [[126, 270], [126, 234], [198, 270]], [[126, 270], [117, 243], [126, 243]], [[126, 270], [117, 270], [117, 243]], [[117, 270], [108, 252], [117, 252]], [[117, 270], [108, 270], [108, 252]], [[108, 270], [99, 261], [108, 261]], [[108, 270], [99, 270], [99, 261]], [[270, 216], [198, 216], [234, 198]], [[198, 216], [216, 180], [234, 198]], [[198, 216], [162, 198], [216, 180]], [[162, 198], [198, 144], [216, 180]], [[162, 198], [144, 144], [198, 144]], [[144, 144], [198, 90], [198, 144]], [[144, 144], [126, 90], [198, 90]], [[162, 90], [0, 54], [162, 54]], [[162, 90], [0, 90], [0, 54]], [[162, 90], [198, 36], [198, 90]], [[162, 90], [162, 54], [198, 36]], [[216, 72], [198, 126], [198, 72]], [[216, 72], [216, 108], [198, 126]], [[288, 108], [234, 108], [234, 90]], [[216, 72], [234, 90], [216, 108]], [[234, 90], [234, 108], [216, 108]], [[-18, 216], [36, 180], [18, 216]], [[-18, 216], [-36, 180], [36, 180]], [[-36, 180], [54, 126], [36, 180]], [[-36, 180], [-18, 144], [54, 126]], [[72, 90], [-18, 144], [-36, 108]], [[72, 90], [54, 126], [-18, 144]], [[72, 90], [-36, 108], [-72, 90]], [[-18, 90], [0, 36], [0, 90]], [[-18, 90], [-18, 36], [0, 36]], [[0, 54], [36, 0], [36, 54]], [[0, 54], [0, 0], [36, 0]], [[558, -234], [414, -126], [414, -234]], [[558, -234], [558, -126], [414, -126]], [[558, -126], [468, -90], [414, -126]], [[558, -54], [468, -90], [558, -126]], [[468, -90], [558, -54], [414, -54]], [[360, 18], [396, -18], [558, 18]], [[558, -54], [396, -18], [414, -54]], [[558, -54], [558, 18], [396, -18]], [[360, 18], [360, 90], [306, 36]], [[360, 18], [558, 270], [360, 270]], [[360, 18], [558, 18], [558, 270]], [[558, 270], [378, 450], [378, 270]], [[558, 270], [558, 450], [378, 450]], [[342, 126], [360, 144], [324, 144]], [[360, 126], [360, 144], [342, 126]], [[324, 144], [324, 180], [288, 162]], [[288, 270], [324, 252], [360, 270]], [[324, 252], [342, 216], [360, 270]], [[342, 216], [324, 180], [360, 180]], [[324, 180], [360, 144], [360, 180]], [[324, 180], [324, 144], [360, 144]], [[360, 270], [342, 216], [360, 180]], [[198, 36], [162, 18], [306, -18]], [[0, -36], [0, 0], [-18, -36]], [[0, -36], [18, -45], [0, 0]], [[-18, -36], [9, -54], [0, -36]], [[-18, -54], [0, -63], [-18, -36]]); _local3 = new Array(new b2Vec2(), new b2Vec2(-162, 72), new b2Vec2(234, 162)); _local3[0].y = -72; _local3[0].x = 108; _local4 = new b2Vec2(-36, 252); _local5 = new b2Vec2(54, 270); _local6 = false; _local9 = "Tunnel of Love"; _local7 = [950, 1100]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-180, -36], [0, 0], [-180, 0]], [[-180, -36], [0, -36], [0, 0]], [[-36, -342], [-18, -378], [-18, -342]], [[-36, -342], [-36, -378], [-18, -378]], [[-306, -360], [-180, -360], [-234, -342]], [[-306, -342], [-306, -360], [-234, -342]], [[-270, -324], [-378, -342], [-306, -342]], [[-270, -324], [-378, -324], [-378, -342]], [[-234, -342], [-270, -324], [-306, -342]], [[-270, -324], [-288, -306], [-450, -324]], [[-450, -306], [-450, -324], [-288, -306]], [[-450, -270], [-450, -306], [-306, -270]], [[-450, -306], [-288, -306], [-306, -270]], [[-450, -270], [-522, -306], [-450, -306]], [[-450, -270], [-522, -270], [-522, -306]], [[-522, -270], [-594, -288], [-522, -288]], [[-522, -270], [-594, -270], [-594, -288]], [[-594, -270], [-306, -270], [-324, -216]], [[-594, -216], [-594, -270], [-324, -216]], [[-324, -180], [-594, -216], [-324, -216]], [[-324, -180], [-594, -180], [-594, -216]], [[-594, -126], [-324, -180], [-306, -126]], [[-594, -126], [-594, -180], [-324, -180]], [[-306, -126], [-594, -90], [-594, -126]], [[-306, -126], [-288, -90], [-594, -90]], [[-594, -72], [-288, -90], [-270, -72]], [[-594, -72], [-594, -90], [-288, -90]], [[-270, -72], [-594, -54], [-594, -72]], [[-270, -72], [-234, -54], [-594, -54]], [[-594, -36], [-234, -54], [-180, -36]], [[-594, -36], [-594, -54], [-234, -54]], [[-180, -36], [-594, 0], [-594, -36]], [[-180, -36], [-180, 0], [-594, 0]], [[-666, -306], [-594, -288], [-756, -288]], [[-738, -378], [-720, -342], [-756, -288]], [[-756, -288], [-720, -342], [-702, -324]], [[-756, -288], [-702, -324], [-666, -306]], [[-756, -432], [-738, -378], [-756, -288]], [[-756, -288], [-864, -432], [-756, -432]], [[-756, -288], [-864, -288], [-864, -432]], [[-774, -612], [-774, -558], [-792, -612]], [[-756, -612], [-756, -576], [-774, -612]], [[-738, -612], [-738, -594], [-756, -612]], [[-882, -594], [-882, -612], [-864, -612]], [[-846, -612], [-864, -576], [-864, -612]], [[-828, -612], [-846, -558], [-846, -612]], [[-828, -612], [-792, -612], [-810, -540]], [[-864, -432], [-864, -288], [-1062, -378]], [[-180, -198], [-126, -216], [-18, -198]], [[-126, -216], [-90, -234], [-18, -198]], [[-90, -234], [-72, -252], [-18, -198]], [[-18, -378], [-54, -432], [-18, -522]], [[-18, -378], [-36, -378], [-54, -432]], [[-54, -432], [-72, -468], [-18, -522]], [[-18, -522], [-72, -468], [-90, -486]], [[-18, -522], [-90, -486], [-126, -504]], [[-18, -522], [-126, -504], [-180, -522]], [[-18, -342], [-54, -288], [-36, -342]], [[-18, -342], [-18, -198], [-54, -288]], [[-18, -198], [-72, -252], [-54, -288]], [[-594, -288], [-594, 0], [-864, -288]], [[-702, -666], [-882, -612], [-918, -666]], [[-702, -666], [-738, -612], [-882, -612]], [[-180, -666], [-180, -522], [-702, -666]], [[-18, -666], [-180, -522], [-180, -666]], [[-18, -666], [-18, -522], [-180, -522]], [[-18, -666], [54, -342], [-18, -198]], [[-18, -666], [54, -522], [54, -342]], [[-1206, -540], [-1116, -558], [-1152, -540]], [[-1206, -540], [-1206, -558], [-1116, -558]], [[-1098, -486], [-1026, -540], [-1026, -504]], [[-1026, -540], [-1008, -504], [-1026, -504]], [[-1026, -540], [-1008, -594], [-1008, -504]], [[-1008, -594], [-990, -630], [-990, -522]], [[-990, -522], [-1008, -504], [-1008, -594]], [[-990, -630], [-954, -576], [-990, -522]], [[-990, -630], [-954, -666], [-954, -576]], [[-954, -666], [-918, -630], [-954, -576]], [[-954, -666], [-918, -666], [-918, -630]], [[-1206, -558], [-1062, -630], [-1116, -558]], [[-1206, -558], [-1206, -630], [-1062, -630]], [[-1206, -630], [-1062, -666], [-1062, -630]], [[-1206, -630], [-1206, -666], [-1062, -666]], [[-1206, -720], [-1062, -666], [-1206, -666]], [[-1206, -720], [-1008, -720], [-1062, -666]], [[-954, -666], [-900, -702], [-900, -666]], [[-900, -702], [-882, -666], [-900, -666]], [[-972, -756], [-972, -792], [-936, -774]], [[-918, -864], [-864, -864], [-918, -810]], [[-720, -702], [-720, -666], [-738, -666]], [[-720, -702], [-666, -666], [-720, -666]], [[-900, -702], [-873, -738], [-882, -666]], [[-747, -738], [-720, -702], [-738, -666]], [[-873, -666], [-864, -738], [-855, -666]], [[-765, -666], [-756, -738], [-747, -666]], [[-783, -666], [-774, -747], [-765, -666]], [[-855, -666], [-846, -747], [-837, -666]], [[-837, -666], [-828, -747], [-819, -666]], [[-801, -666], [-792, -747], [-783, -666]], [[-819, -666], [-810, -756], [-801, -666]], [[-702, -864], [-702, -810], [-756, -864]], [[-756, -864], [-810, -882], [-756, -882]], [[-810, -882], [-864, -864], [-864, -882]], [[-558, -666], [-504, -702], [-504, -666]], [[-504, -684], [-450, -666], [-504, -666]], [[-504, -684], [-450, -684], [-450, -666]], [[-306, -666], [-144, -864], [-144, -666]], [[-306, -666], [-306, -864], [-144, -864]], [[-918, -810], [-972, -792], [-972, -864]], [[-918, -810], [-936, -774], [-972, -792]], [[-918, -864], [-918, -810], [-972, -864]], [[-972, -882], [-864, -864], [-972, -864]], [[-972, -882], [-864, -882], [-864, -864]], [[-702, -882], [-756, -864], [-756, -882]], [[-702, -882], [-702, -864], [-756, -864]], [[-702, -882], [-972, -954], [-702, -954]], [[-702, -882], [-972, -882], [-972, -954]], [[-972, -756], [-1206, -720], [-1206, -756]], [[-972, -756], [-1008, -720], [-1206, -720]], [[-1206, -954], [-972, -756], [-1206, -756]], [[-1206, -954], [-972, -954], [-972, -756]], [[-702, -954], [-630, -810], [-702, -810]], [[-702, -954], [-630, -954], [-630, -810]], [[-630, -954], [-504, -846], [-630, -810]], [[-630, -954], [-504, -954], [-504, -846]], [[-504, -954], [-306, -864], [-504, -846]], [[-504, -954], [-306, -954], [-306, -864]], [[-144, -954], [-306, -864], [-306, -954]], [[-144, -954], [-144, -864], [-306, -864]], [[-1152, -540], [-1170, -504], [-1206, -540]], [[-1116, -342], [-1116, -396], [-1062, -378]], [[-1206, -432], [-1170, -504], [-1170, -468]], [[-1206, -432], [-1206, -540], [-1170, -504]], [[-1170, -468], [-1152, -432], [-1206, -432]], [[-1152, -432], [-1116, -396], [-1206, -432]], [[-1116, -396], [-1206, -270], [-1206, -432]], [[-1116, -396], [-1116, -342], [-1206, -270]], [[-1206, -270], [-1062, -378], [-1062, -270]], [[-1206, -270], [-1116, -342], [-1062, -378]], [[-1062, -378], [-864, -288], [-1062, -270]], [[-1206, -270], [-1314, -810], [-1206, -810]], [[-1206, -270], [-1314, -270], [-1314, -810]], [[0, 0], [198, -198], [198, 0]], [[0, 0], [0, -198], [198, -198]], [[54, -342], [0, -198], [-18, -198]], [[198, 0], [-558, 90], [-594, 0]], [[198, 0], [198, 90], [-558, 90]]); _local3 = new Array(new b2Vec2(-810, -504), new b2Vec2(-306, -198), new b2Vec2(-54, -360), new b2Vec2(-810, -810)); _local4 = new b2Vec2(-36, -54); _local5 = new b2Vec2(-396, -666); _local6 = false; _local9 = "Big"; _local7 = [1250, 1450]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[0, 0], [36, -72], [36, 0]], [[36, -72], [72, -108], [72, -72]], [[72, -108], [108, -180], [108, -108]], [[108, -180], [144, -216], [144, -180]], [[144, -216], [180, -288], [180, -216]], [[180, -288], [216, -324], [252, -288]], [[252, -288], [324, -270], [252, -270]], [[-72, -423], [-90, -414], [-90, -423]], [[-72, -423], [-72, -414], [-90, -414]], [[18, -414], [0, -423], [18, -423]], [[18, -414], [0, -414], [0, -423]], [[-108, -423], [36, -432], [36, -423]], [[-108, -423], [-108, -432], [36, -432]], [[-126, -369], [-180, -396], [-126, -423]], [[54, -423], [108, -396], [54, -369]], [[54, -414], [-126, -369], [-126, -414]], [[54, -414], [54, -369], [-126, -369]], [[36, -486], [54, -486], [36, -468]], [[-126, -486], [-108, -486], [-108, -468]], [[0, -486], [-18, -468], [-36, -486]], [[-72, -486], [-36, -486], [-54, -468]], [[36, -486], [18, -477], [0, -486]], [[-72, -486], [-90, -477], [-108, -486]], [[180, -288], [252, 90], [180, 90]], [[180, -288], [252, -288], [252, 90]], [[180, -216], [144, 90], [144, -216]], [[180, -216], [180, 90], [144, 90]], [[144, -180], [108, 126], [108, -180]], [[144, -180], [144, 126], [108, 126]], [[108, -108], [72, 162], [72, -108]], [[108, -108], [108, 162], [72, 162]], [[72, -72], [36, 162], [36, -72]], [[72, -72], [72, 162], [36, 162]], [[36, 0], [0, 162], [0, 0]], [[36, 0], [36, 162], [0, 162]], [[0, 0], [-450, 162], [-450, 0]], [[0, 0], [0, 162], [-450, 162]], [[702, -270], [252, -126], [252, -270]], [[702, -270], [702, -126], [252, -126]], [[594, -288], [612, -324], [702, -306]], [[594, -288], [702, -306], [702, -270]], [[702, -378], [612, -324], [594, -360]], [[612, -324], [702, -378], [702, -306]], [[522, -360], [504, -414], [558, -378]], [[558, -378], [666, -432], [594, -360]], [[558, -378], [504, -414], [666, -432]], [[594, -360], [666, -432], [702, -378]], [[702, -270], [558, -270], [594, -288]], [[-252, -306], [-342, -342], [-198, -360]], [[-414, -306], [-450, -378], [-342, -342]], [[-342, -522], [-342, -504], [-396, -522]], [[-378, -468], [-324, -450], [-324, -432]], [[-324, -450], [-252, -450], [-324, -432]], [[-324, -450], [-270, -468], [-252, -450]], [[18, -522], [36, -558], [54, -522]], [[-18, -522], [0, -558], [18, -522]], [[-90, -522], [-72, -558], [-54, -522]], [[-126, -522], [-108, -558], [-90, -522]], [[-18, -522], [-54, -522], [-36, -576]], [[-126, -558], [-126, -486], [-270, -468]], [[54, -558], [198, -468], [54, -486]], [[54, -522], [-126, -486], [-126, -522]], [[54, -522], [54, -486], [-126, -486]], [[-270, -468], [-126, -486], [-252, -450]], [[198, -468], [198, -450], [54, -486]], [[-126, -369], [-198, -360], [-180, -396]], [[-252, -306], [-198, -360], [-126, -369]], [[-414, -306], [-342, -342], [-252, -306]], [[-450, -378], [-558, -378], [-468, -432]], [[-414, -306], [-558, -378], [-450, -378]], [[-468, -432], [-558, -522], [-450, -486]], [[-468, -432], [-558, -378], [-558, -522]], [[-450, -486], [-558, -522], [-414, -522]], [[-558, -522], [-414, -576], [-342, -522]], [[-558, -522], [-558, -576], [-414, -576]], [[198, -468], [342, -414], [198, -450]], [[198, -468], [342, -450], [342, -414]], [[504, -414], [504, -432], [666, -432]], [[504, -468], [504, -432], [342, -450]], [[504, -414], [342, -450], [504, -432]], [[504, -414], [342, -414], [342, -450]], [[522, -360], [342, -414], [504, -414]], [[666, -432], [612, -441], [666, -450]], [[666, -450], [612, -459], [666, -468]], [[666, -468], [612, -477], [666, -486]], [[666, -486], [612, -495], [666, -504]], [[666, -504], [612, -513], [666, -522]], [[666, -522], [666, -540], [666, -531]], [[666, -522], [612, -531], [666, -540]], [[666, -540], [612, -549], [666, -558]], [[666, -558], [612, -567], [666, -576]], [[666, -576], [702, -378], [666, -432]], [[666, -576], [702, -585], [702, -378]], [[-378, -54], [-252, -126], [-234, -54]], [[-378, -54], [-378, -126], [-252, -126]], [[-378, -126], [-252, -306], [-252, -126]], [[-378, -126], [-414, -306], [-252, -306]], [[-414, 0], [-234, -54], [-198, 0]], [[-414, 0], [-378, -54], [-234, -54]]); _local3 = new Array(new b2Vec2(144, -270), new b2Vec2(-36, -450), new b2Vec2(522, -342), new b2Vec2(-36, -606)); _local4 = new b2Vec2(-180, -18); _local5 = new b2Vec2(540, -432); _local6 = true; _local9 = "No Cigar"; _local7 = [1440, 1650]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); _local2 = new Array([[-54, -72], [-36, -18], [-54, 0]], [[-54, -72], [-36, -54], [-36, -18]], [[-54, -162], [-36, -108], [-54, -90]], [[-54, -162], [-36, -144], [-36, -108]], [[-162, -144], [-54, -162], [-54, -90]], [[-162, -144], [-144, -162], [-54, -162]], [[-54, -90], [-162, -18], [-162, -144]], [[-54, -90], [-54, -72], [-162, -18]], [[-54, -72], [-144, 0], [-162, -18]], [[-54, -72], [-54, 0], [-144, 0]], [[-18, -90], [54, -108], [72, -90]], [[-18, -90], [0, -108], [54, -108]], [[72, -18], [0, 0], [-18, -18]], [[72, -18], [54, 0], [0, 0]], [[-18, -18], [72, -90], [72, -18]], [[-18, -18], [-18, -90], [72, -90]], [[90, -108], [144, -54], [126, -54]], [[90, -108], [180, -108], [144, -54]], [[144, -54], [90, 0], [126, -54]], [[144, -54], [180, 0], [90, 0]], [[225, -54], [225, -36], [216, -36]], [[225, -54], [234, -45], [225, -36]], [[225, -54], [243, -45], [234, -45]], [[225, -54], [252, -54], [243, -45]], [[252, -54], [252, -36], [243, -45]], [[252, -54], [261, -36], [252, -36]], [[261, -36], [216, -9], [252, -36]], [[261, -36], [225, -9], [216, -9]], [[261, -9], [216, 0], [216, -9]], [[261, -9], [261, 0], [216, 0]], [[306, -9], [270, 0], [270, -54]], [[306, -9], [297, 0], [270, 0]], [[306, -45], [270, -54], [297, -54]], [[306, -45], [306, -9], [270, -54]], [[378, -36], [450, -36], [414, -27]], [[432, -18], [414, -27], [450, -36]], [[441, -9], [432, -18], [450, -36]], [[450, 9], [441, -9], [450, -36]], [[441, 99], [450, 81], [450, 126]], [[450, 126], [432, 108], [441, 99]], [[414, 117], [432, 108], [450, 126]], [[378, 126], [414, 117], [450, 126]], [[450, 126], [558, -36], [558, 126]], [[450, 126], [450, -36], [558, -36]], [[360, 0], [378, 72], [360, 81]], [[360, 0], [378, 9], [378, 72]], [[-252, 81], [360, 0], [360, 81]], [[-252, 81], [-252, 0], [360, 0]], [[-252, 81], [-270, 9], [-252, 0]], [[-252, 81], [-270, 72], [-270, 9]], [[-306, 117], [-270, 126], [-342, 126]], [[-324, 108], [-306, 117], [-342, 126]], [[-342, 126], [-333, 99], [-324, 108]], [[-342, 126], [-342, 81], [-333, 99]], [[-342, -45], [-270, -45], [-306, -36]], [[-342, -45], [-306, -36], [-324, -27]], [[-342, -45], [-324, -27], [-333, -18]], [[-333, -18], [-342, 0], [-342, -45]], [[-342, -45], [-450, 126], [-450, -45]], [[-342, -45], [-342, 126], [-450, 126]], [[558, 126], [-450, 234], [-450, 126]], [[558, 126], [558, 234], [-450, 234]], [[378, -36], [558, -54], [558, -36]], [[378, -36], [396, -54], [558, -54]], [[-450, -45], [-297, -72], [-270, -45]], [[-450, -45], [-450, -72], [-297, -72]]); _local3 = new Array(new b2Vec2(432, 45), new b2Vec2(-324, 36), new b2Vec2(27, -126)); _local4 = new b2Vec2(-126, -180); _local5 = new b2Vec2(-198, 0); _local6 = true; _local9 = "Box 2d Fun"; _local7 = [640, 850]; _local1 = new Array(_local2, _local3, _local4, _local5, _local6, _local9, _local7, null); levels.push(_local1); } } }//package
Section 131
//MicroMP3Player (MicroMP3Player) package { import flash.media.*; import flash.events.*; public class MicroMP3Player { private var songs:Array; public var currentTrack;// = 0 private var trackPosition:int;// = 0 private var fadingNumber:Number; private var playing:Boolean;// = false private var currentVolume:Number;// = 1 private var constantChannel:SoundChannel; private static var stageInstance; public function MicroMP3Player(){ songs = new Array(); playing = false; currentTrack = 0; trackPosition = 0; currentVolume = 1; super(); } public function stop():void{ playing = false; if (constantChannel != null){ constantChannel.stop(); constantChannel.removeEventListener(Event.SOUND_COMPLETE, waitForFinish); }; } public function play():void{ playing = true; if (songs.length > 0){ constantChannel = songs[currentTrack].play(); constantChannel.addEventListener(Event.SOUND_COMPLETE, waitForFinish); }; } public function playNextTrack():void{ nextTrack(); stop(); play(); } private function waitForFinish(_arg1:Event):void{ if (constantChannel != null){ constantChannel.removeEventListener(Event.SOUND_COMPLETE, waitForFinish); nextTrack(); play(); }; } public function getVolume():Number{ return (new Number()); } public function playPrevTrack():void{ prevTrack(); stop(); play(); } public function addSong(_arg1:Sound):void{ songs.push(_arg1); } public function nextTrack(){ currentTrack++; if (currentTrack == songs.length){ currentTrack = 0; }; } public function playAndFade(_arg1:int):void{ fadingNumber = _arg1; currentVolume = 0; } public function setVolume(_arg1:Number):void{ constantChannel.soundTransform = new SoundTransform(_arg1, 0); } public function prevTrack(){ currentTrack--; if (currentTrack < 0){ currentTrack = (songs.length - 1); }; } private function fadingUp(_arg1:Event):void{ currentVolume = (currentVolume + fadingNumber); setVolume(currentVolume); } public function getPlaying():Boolean{ return (playing); } private function fadingDown(_arg1:Event):void{ currentVolume = (currentVolume - fadingNumber); setVolume(currentVolume); } } }//package
Section 132
//MochiBot (MochiBot) package { import flash.net.*; import flash.display.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 133
//MP3Player (MP3Player) package { import flash.media.*; import flash.events.*; public class MP3Player { private var artists:Array; private var songs:Array; public var currentTrack;// = 0 private var titles:Array; public var currentTitle:String; public var currentArtist:String; private var playing:Boolean;// = false private var constantChannel:SoundChannel; private static var stageInstance; public function MP3Player(_arg1:Sound, _arg2:String, _arg3:String, _arg4){ songs = new Array(); playing = false; currentTrack = 0; titles = new Array(); artists = new Array(); super(); stageInstance = _arg4; addSong(_arg1, _arg2, _arg3); updateGUI(); } public function stop():void{ playing = false; if (constantChannel != null){ constantChannel.stop(); constantChannel.removeEventListener(Event.SOUND_COMPLETE, waitForFinish); }; } public function playNextTrack():void{ nextTrack(); stop(); play(); } public function playPrevTrack():void{ prevTrack(); stop(); play(); } private function waitForFinish(_arg1:Event):void{ if (constantChannel != null){ constantChannel.removeEventListener(Event.SOUND_COMPLETE, waitForFinish); nextTrack(); play(); }; } public function addSong(_arg1:Sound, _arg2:String, _arg3:String):void{ songs.push(_arg1); titles.push(_arg2); artists.push(_arg3); } public function nextTrack(){ currentTrack++; if (currentTrack == songs.length){ currentTrack = 0; }; updateGUI(); } public function setVolume(_arg1:Number):void{ constantChannel.soundTransform = new SoundTransform(_arg1, 0); } public function prevTrack(){ currentTrack--; if (currentTrack < 0){ currentTrack = (songs.length - 1); }; updateGUI(); } private function updateGUI():void{ currentTitle = titles[currentTrack]; currentArtist = artists[currentTrack]; stageInstance.mp3GUI.title.text = currentTitle; stageInstance.mp3GUI.artist.text = currentArtist; } public function play():void{ playing = true; if (songs.length > 0){ constantChannel = songs[currentTrack].play(); constantChannel.addEventListener(Event.SOUND_COMPLETE, waitForFinish); }; } public function getPlaying():Boolean{ return (playing); } } }//package
Section 134
//MyButton (MyButton) package { import flash.display.*; public dynamic class MyButton extends SimpleButton { } }//package
Section 135
//MyButton2 (MyButton2) package { import flash.text.*; import flash.display.*; public dynamic class MyButton2 extends MovieClip { public var btn:MyButton; public var myString:TextField; } }//package
Section 136
//PauseMenu (PauseMenu) package { import flash.text.*; import flash.display.*; public dynamic class PauseMenu extends MovieClip { public var qualityTxt:TextField; public var skipLevelText:TextField; public var skipLevel:ClickButton; public var resetLevel:ClickButton; public var menuBtn:ClickButton; public var qualityBtn:ClickButton; public var status:MovieClip; } }//package
Section 137
//Photo (Photo) package { import flash.events.*; import flash.display.*; public class Photo extends Sprite { public var hit:Boolean;// = false public static var stageInstance; public static var beginSnap:Boolean = false; public static var m_timeStep:Number = 0.0333333333333333; public function Photo():void{ hit = false; super(); } public function fadeOut():void{ hit = true; stageInstance.lowerVolume(); beginSnap = true; m_timeStep = (1 / 150); addEventListener("enterFrame", fading); } private function fading(_arg1:Event):void{ this.alpha = (this.alpha - 0.03); if (this.alpha < 0.1){ this.alpha = 0; m_timeStep = (1 / 30); stageInstance.raiseVolume(); removeEventListener("enterFrame", fading); }; } public function reset():void{ hit = false; this.alpha = 1; removeEventListener("enterFrame", fading); } public static function importStage(_arg1):void{ stageInstance = _arg1; } } }//package
Section 138
//RockTexture (RockTexture) package { import flash.display.*; public dynamic class RockTexture extends BitmapData { public function RockTexture(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 139
//RockTexture2 (RockTexture2) package { import flash.display.*; public dynamic class RockTexture2 extends BitmapData { public function RockTexture2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 140
//SandTexture (SandTexture) package { import flash.display.*; public dynamic class SandTexture extends BitmapData { public function SandTexture(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 141
//SandTexture2 (SandTexture2) package { import flash.display.*; public dynamic class SandTexture2 extends BitmapData { public function SandTexture2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 142
//SandTexture3 (SandTexture3) package { import flash.display.*; public dynamic class SandTexture3 extends BitmapData { public function SandTexture3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 143
//Scrollbar (Scrollbar) package { import flash.events.*; import flash.display.*; import flash.geom.*; import caurina.transitions.*; public class Scrollbar extends MovieClip { private var isDown:Boolean; private var sRect:Rectangle; private var dragBot:Number; private var ratio:Number; private var bottom:Number; private var downArrowHt:Number; public var upArrow:MovieClip; private var range:Number; public var track:MovieClip; private var top:Number; private var timing:Number; private var ctrl:Number; public var downArrow:MovieClip; private var target:MovieClip; private var sBuffer:Number; private var trans:String; public var scroller:MovieClip; private var arrowMove:Number; private var isUp:Boolean; private var upArrowHt:Number; private var sPos:Number; private var isArrow:Boolean; public function Scrollbar():void{ scroller.addEventListener(MouseEvent.MOUSE_DOWN, dragScroll); stage.addEventListener(MouseEvent.MOUSE_UP, stopScroll); stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler); } public function init(_arg1:MovieClip, _arg2:String, _arg3:Number, _arg4:Boolean, _arg5:Number):void{ var _local6:Sprite; target = _arg1; trans = _arg2; timing = _arg3; isArrow = _arg4; sBuffer = _arg5; if (target.height <= track.height){ this.visible = false; }; upArrowHt = upArrow.height; downArrowHt = downArrow.height; if (isArrow){ top = scroller.y; dragBot = ((scroller.y + track.height) - scroller.height); bottom = (track.height - (scroller.height / sBuffer)); } else { top = scroller.y; dragBot = ((scroller.y + track.height) - scroller.height); bottom = (track.height - (scroller.height / sBuffer)); upArrowHt = 0; downArrowHt = 0; removeChild(upArrow); removeChild(downArrow); }; range = (bottom - top); sRect = new Rectangle(0, top, 0, dragBot); ctrl = target.y; isUp = false; isDown = false; arrowMove = 10; if (isArrow){ upArrow.addEventListener(Event.ENTER_FRAME, upArrowHandler); upArrow.addEventListener(MouseEvent.MOUSE_DOWN, upScroll); upArrow.addEventListener(MouseEvent.MOUSE_UP, stopScroll); downArrow.addEventListener(Event.ENTER_FRAME, downArrowHandler); downArrow.addEventListener(MouseEvent.MOUSE_DOWN, downScroll); downArrow.addEventListener(MouseEvent.MOUSE_UP, stopScroll); }; _local6 = new Sprite(); _local6.graphics.beginFill(0xFF0000); _local6.graphics.drawRect(target.x, target.y, (target.width + 5), ((track.height + upArrowHt) + downArrowHt)); parent.addChild(_local6); target.mask = _local6; } public function downScroll(_arg1:MouseEvent):void{ isDown = true; } public function dragScroll(_arg1:MouseEvent):void{ scroller.startDrag(false, sRect); stage.addEventListener(MouseEvent.MOUSE_MOVE, moveScroll); } public function upArrowHandler(_arg1:Event):void{ if (isUp){ if (scroller.y > top){ scroller.y = (scroller.y - arrowMove); if (scroller.y < top){ scroller.y = top; }; startScroll(); }; }; } public function upScroll(_arg1:MouseEvent):void{ isUp = true; } public function moveScroll(_arg1:MouseEvent):void{ startScroll(); } public function stopScroll(_arg1:MouseEvent):void{ isUp = false; isDown = false; scroller.stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveScroll); } public function downArrowHandler(_arg1:Event):void{ if (isDown){ if (scroller.y < dragBot){ scroller.y = (scroller.y + arrowMove); if (scroller.y > dragBot){ scroller.y = dragBot; }; startScroll(); }; }; } public function mouseWheelHandler(_arg1:MouseEvent):void{ if (_arg1.delta < 0){ if (scroller.y < dragBot){ scroller.y = (scroller.y - (_arg1.delta * 2)); if (scroller.y > dragBot){ scroller.y = dragBot; }; startScroll(); }; } else { if (scroller.y > top){ scroller.y = (scroller.y - (_arg1.delta * 2)); if (scroller.y < top){ scroller.y = top; }; startScroll(); }; }; } public function startScroll():void{ ratio = ((target.height - range) / range); sPos = ((scroller.y * ratio) - ctrl); Tweener.addTween(target, {y:-(sPos), time:timing, transition:trans}); } } }//package
Section 144
//SlowMo (SlowMo) package { import flash.media.*; public dynamic class SlowMo extends Sound { } }//package
Section 145
//Triple1 (Triple1) package { import flash.media.*; public dynamic class Triple1 extends Sound { } }//package
Section 146
//Triple2 (Triple2) package { import flash.media.*; public dynamic class Triple2 extends Sound { } }//package
Section 147
//Triple3 (Triple3) package { import flash.media.*; public dynamic class Triple3 extends Sound { } }//package
Section 148
//Triple4 (Triple4) package { import flash.media.*; public dynamic class Triple4 extends Sound { } }//package
Section 149
//WaitingForThis (WaitingForThis) package { import flash.media.*; public dynamic class WaitingForThis extends Sound { } }//package
Section 150
//WheelGraphic (WheelGraphic) package { import flash.display.*; public dynamic class WheelGraphic extends MovieClip { } }//package
Section 151
//xtremeMotorSound (xtremeMotorSound) package { import flash.media.*; public dynamic class xtremeMotorSound extends Sound { } }//package

Library Items

Symbol 1 Font {Font1}Used by:85 99 126 128 186 187 188 189 191 192 193 194 195 196 197 198 199 201 202 203 204 211 212 221 222 223 224 227 228 229 230 231 232 233 234 236 238 239 240 241 242 243 244 245 246 247 248 249 303 305 307 308 319 331 332 334 339
Symbol 2 Bitmap {RockTexture2}
Symbol 3 Bitmap {SandTexture3}Used by:250
Symbol 4 Bitmap {SandTexture2}
Symbol 5 Bitmap {SandTexture}
Symbol 6 Bitmap {RockTexture}
Symbol 7 GraphicUsed by:12
Symbol 8 FontUsed by:9
Symbol 9 EditableTextUses:8Used by:12
Symbol 10 FontUsed by:11
Symbol 11 EditableTextUses:10Used by:12
Symbol 12 MovieClip {Code}Uses:7 9 11
Symbol 13 GraphicUsed by:28
Symbol 14 GraphicUsed by:22
Symbol 15 GraphicUsed by:22
Symbol 16 GraphicUsed by:22
Symbol 17 GraphicUsed by:22
Symbol 18 GraphicUsed by:22
Symbol 19 GraphicUsed by:22
Symbol 20 GraphicUsed by:22
Symbol 21 GraphicUsed by:22
Symbol 22 MovieClip {xtrememotor7_fla.char_71}Uses:14 15 16 17 18 19 20 21Used by:28
Symbol 23 GraphicUsed by:28
Symbol 24 GraphicUsed by:28
Symbol 25 GraphicUsed by:28
Symbol 26 GraphicUsed by:28
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClip {BikeGraphic}Uses:13 22 23 24 25 26 27
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClip {CoinClass}Uses:29
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClip {BikeGraphicLeft}Uses:31
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClip {GravityClass}Uses:33
Symbol 35 GraphicUsed by:37
Symbol 36 GraphicUsed by:37
Symbol 37 MovieClip {Exit}Uses:35 36
Symbol 38 FontUsed by:39 70 225 226
Symbol 39 EditableTextUses:38Used by:46
Symbol 40 ShapeTweeningUsed by:46
Symbol 41 GraphicUsed by:46
Symbol 42 ShapeTweeningUsed by:46
Symbol 43 ShapeTweeningUsed by:46
Symbol 44 SoundUsed by:46
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClip {BloodSplat}Uses:39 40 41 42 43 44 45
Symbol 47 GraphicUsed by:49
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClip {Door}Uses:47 48
Symbol 50 GraphicUsed by:60
Symbol 51 GraphicUsed by:60
Symbol 52 GraphicUsed by:53
Symbol 53 MovieClipUses:52Used by:60
Symbol 54 GraphicUsed by:60
Symbol 55 GraphicUsed by:60
Symbol 56 FontUsed by:57 59
Symbol 57 TextUses:56Used by:60
Symbol 58 GraphicUsed by:60
Symbol 59 TextUses:56Used by:60
Symbol 60 MovieClip {Character}Uses:50 51 53 54 55 57 58 59
Symbol 61 GraphicUsed by:64 96
Symbol 62 GraphicUsed by:64
Symbol 63 GraphicUsed by:64
Symbol 64 Button {ClickButton}Uses:61 62 63Used by:78 94 214 251
Symbol 65 GraphicUsed by:69
Symbol 66 GraphicUsed by:69
Symbol 67 GraphicUsed by:69
Symbol 68 GraphicUsed by:69
Symbol 69 MovieClip {xtrememotor7_fla.colour_61}Uses:65 66 67 68Used by:78
Symbol 70 EditableTextUses:38Used by:78
Symbol 71 GraphicUsed by:77
Symbol 72 GraphicUsed by:77
Symbol 73 GraphicUsed by:74
Symbol 74 MovieClipUses:73Used by:77 129 318
Symbol 75 GraphicUsed by:77
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClipUses:71 72 74 75 76Used by:78 94 214 326
Symbol 78 MovieClip {levelBtnMC}Uses:64 69 70 77
Symbol 79 GraphicUsed by:84
Symbol 80 ShapeTweeningUsed by:82
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClip {xtrememotor7_fla.buttonBig_59}Uses:80 81Used by:84
Symbol 83 GraphicUsed by:84 295 304 306 309
Symbol 84 Button {MyButton}Uses:79 82 83Used by:86
Symbol 85 EditableTextUses:1Used by:86
Symbol 86 MovieClip {MyButton2}Uses:84 85
Symbol 87 GraphicUsed by:94
Symbol 88 FontUsed by:89 90 91 92 93 136 270 302
Symbol 89 TextUses:88Used by:94
Symbol 90 EditableTextUses:88Used by:94
Symbol 91 EditableTextUses:88Used by:94
Symbol 92 TextUses:88Used by:94
Symbol 93 TextUses:88Used by:94
Symbol 94 MovieClip {PauseMenu}Uses:87 89 64 90 77 91 92 93
Symbol 95 GraphicUsed by:100
Symbol 96 MovieClipUses:61Used by:100
Symbol 97 FontUsed by:98 200 210 213
Symbol 98 EditableTextUses:97Used by:100
Symbol 99 TextUses:1Used by:100
Symbol 100 MovieClip {GirlHint}Uses:95 96 98 99
Symbol 101 GraphicUsed by:102
Symbol 102 MovieClip {Photo}Uses:101Used by:275
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:103Used by:111
Symbol 105 GraphicUsed by:106
Symbol 106 MovieClipUses:105Used by:111
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClipUses:107Used by:111
Symbol 109 GraphicUsed by:110
Symbol 110 MovieClipUses:109Used by:111
Symbol 111 MovieClip {Scrollbar}Uses:104 106 108 110Used by:251
Symbol 112 GraphicUsed by:113 115
Symbol 113 MovieClipUses:112Used by:115
Symbol 114 GraphicUsed by:115
Symbol 115 MovieClip {WheelGraphic}Uses:112 113 114Used by:123 251
Symbol 116 BitmapUsed by:117
Symbol 117 GraphicUses:116Used by:Timeline
Symbol 118 GraphicUsed by:119 326
Symbol 119 MovieClipUses:118Used by:129
Symbol 120 GraphicUsed by:121 288
Symbol 121 ButtonUses:120Used by:123 251 289
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClip {xtrememotor7_fla.wheelscont_4}Uses:115 121 122Used by:129
Symbol 124 GraphicUsed by:129
Symbol 125 GraphicUsed by:129
Symbol 126 TextUses:1Used by:129
Symbol 127 GraphicUsed by:129
Symbol 128 TextUses:1Used by:129
Symbol 129 MovieClip {xtrememotor7_fla.Preloader_2}Uses:119 123 124 74 125 126 127 128Used by:130
Symbol 130 MovieClip {xtrememotor7_fla.introClip_1}Uses:129Used by:Timeline
Symbol 131 GraphicUsed by:137
Symbol 132 MovieClipUsed by:137
Symbol 133 MovieClipUsed by:137
Symbol 134 GraphicUsed by:137
Symbol 135 GraphicUsed by:137
Symbol 136 TextUses:88Used by:137
Symbol 137 MovieClip {xtrememotor7_fla.advertisement_11}Uses:131 132 133 134 135 136Used by:147 326
Symbol 138 FontUsed by:139 140 160 161
Symbol 139 TextUses:138Used by:147 251
Symbol 140 TextUses:138Used by:147 251
Symbol 141 GraphicUsed by:147
Symbol 142 GraphicUsed by:146 293
Symbol 143 ShapeTweeningUsed by:145 146
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClip {xtrememotor7_fla.introFlash_15}Uses:143 144Used by:146 293
Symbol 146 ButtonUses:142 145 143Used by:147 164
Symbol 147 MovieClip {xtrememotor7_fla.AdvertiementMove_10}Uses:137 139 140 141 146Used by:148
Symbol 148 MovieClip {xtrememotor7_fla.tweenAds_9}Uses:147Used by:Timeline
Symbol 149 ShapeTweeningUsed by:164
Symbol 150 GraphicUsed by:164
Symbol 151 GraphicUsed by:164
Symbol 152 ShapeTweeningUsed by:164
Symbol 153 GraphicUsed by:164
Symbol 154 ShapeTweeningUsed by:164
Symbol 155 GraphicUsed by:164
Symbol 156 ShapeTweeningUsed by:164
Symbol 157 GraphicUsed by:164 268
Symbol 158 ShapeTweeningUsed by:164
Symbol 159 GraphicUsed by:164
Symbol 160 TextUses:138Used by:162
Symbol 161 TextUses:138Used by:162
Symbol 162 MovieClipUses:160 161Used by:164
Symbol 163 ShapeTweeningUsed by:164
Symbol 164 MovieClip {xtrememotor7_fla.notDoppler_intro_16}Uses:149 146 150 151 152 153 154 155 156 157 158 159 162 163 SS1Used by:Timeline
Symbol 165 VideoUsed by:168
Symbol 166 SoundUsed by:168
Symbol 167 Sound {xtremeMotorSound}Used by:168 180
Symbol 168 MovieClipUses:165 166 167Used by:Timeline
Symbol 169 Sound {BikeConstant}Used by:180
Symbol 170 Sound {BikeIdle}Used by:180
Symbol 171 Sound {BikeRev}Used by:180
Symbol 172 Sound {WaitingForThis}Used by:180
Symbol 173 Sound {DirtyHigh}Used by:180
Symbol 174 Sound {Triple1}Used by:180
Symbol 175 Sound {Triple2}Used by:180
Symbol 176 Sound {Triple3}Used by:180
Symbol 177 Sound {Triple4}Used by:180
Symbol 178 Sound {SlowMo}Used by:180
Symbol 179 Sound {ForTheWin}Used by:180
Symbol 180 MovieClip {xtrememotor7_fla.SoundHolderImport_19}Uses:169 170 171 172 173 174 175 176 177 178 167 179Used by:Timeline
Symbol 181 BitmapUsed by:182
Symbol 182 GraphicUses:181Used by:Timeline
Symbol 183 GraphicUsed by:184 190
Symbol 184 MovieClipUses:183Used by:251
Symbol 185 MovieClipUsed by:251
Symbol 186 TextUses:1Used by:251
Symbol 187 TextUses:1Used by:251
Symbol 188 TextUses:1Used by:251
Symbol 189 TextUses:1Used by:251
Symbol 190 MovieClipUses:183Used by:251
Symbol 191 TextUses:1Used by:251
Symbol 192 TextUses:1Used by:251
Symbol 193 TextUses:1Used by:251
Symbol 194 TextUses:1Used by:251
Symbol 195 TextUses:1Used by:251
Symbol 196 TextUses:1Used by:251
Symbol 197 TextUses:1Used by:251
Symbol 198 TextUses:1Used by:251
Symbol 199 TextUses:1Used by:251
Symbol 200 TextUses:97Used by:251
Symbol 201 TextUses:1Used by:251
Symbol 202 TextUses:1Used by:251
Symbol 203 TextUses:1Used by:251
Symbol 204 TextUses:1Used by:251
Symbol 205 GraphicUsed by:251
Symbol 206 GraphicUsed by:251
Symbol 207 GraphicUsed by:251
Symbol 208 GraphicUsed by:251
Symbol 209 GraphicUsed by:251
Symbol 210 TextUses:97Used by:214
Symbol 211 EditableTextUses:1Used by:214
Symbol 212 TextUses:1Used by:214
Symbol 213 TextUses:97Used by:214
Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26}Uses:77 64 210 211 212 213Used by:251
Symbol 215 GraphicUsed by:251
Symbol 216 GraphicUsed by:251
Symbol 217 GraphicUsed by:251
Symbol 218 BitmapUsed by:219
Symbol 219 GraphicUses:218Used by:251
Symbol 220 GraphicUsed by:251
Symbol 221 TextUses:1Used by:251
Symbol 222 TextUses:1Used by:251
Symbol 223 TextUses:1Used by:251
Symbol 224 TextUses:1Used by:251
Symbol 225 TextUses:38Used by:251
Symbol 226 TextUses:38Used by:251
Symbol 227 TextUses:1Used by:251
Symbol 228 TextUses:1Used by:251
Symbol 229 TextUses:1Used by:251
Symbol 230 TextUses:1Used by:251
Symbol 231 TextUses:1Used by:251
Symbol 232 TextUses:1Used by:251
Symbol 233 TextUses:1Used by:251
Symbol 234 TextUses:1Used by:251
Symbol 235 GraphicUsed by:251
Symbol 236 TextUses:1Used by:251
Symbol 237 GraphicUsed by:251
Symbol 238 TextUses:1Used by:251
Symbol 239 TextUses:1Used by:251
Symbol 240 TextUses:1Used by:251
Symbol 241 TextUses:1Used by:251
Symbol 242 TextUses:1Used by:251
Symbol 243 TextUses:1Used by:251
Symbol 244 TextUses:1Used by:251
Symbol 245 TextUses:1Used by:251
Symbol 246 TextUses:1Used by:251
Symbol 247 TextUses:1Used by:251
Symbol 248 TextUses:1Used by:251
Symbol 249 TextUses:1Used by:251
Symbol 250 GraphicUses:3Used by:251
Symbol 251 MovieClip {xtrememotor7_fla.menu_21}Uses:184 64 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 115 205 206 207 208 209 214 121 215 139 140 216 217 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 111 250Used by:252
Symbol 252 MovieClip {xtrememotor7_fla.intro_20}Uses:251Used by:Timeline
Symbol 253 FontUsed by:254
Symbol 254 EditableTextUses:253Used by:Timeline
Symbol 255 GraphicUsed by:Timeline
Symbol 256 BitmapUsed by:257
Symbol 257 GraphicUses:256Used by:258
Symbol 258 MovieClipUses:257Used by:Timeline
Symbol 259 ShapeTweeningUsed by:268
Symbol 260 ShapeTweeningUsed by:268
Symbol 261 SoundUsed by:268
Symbol 262 GraphicUsed by:268
Symbol 263 GraphicUsed by:268
Symbol 264 GraphicUsed by:268
Symbol 265 ShapeTweeningUsed by:268
Symbol 266 ShapeTweeningUsed by:268
Symbol 267 GraphicUsed by:268
Symbol 268 MovieClip {xtrememotor7_fla.PhotoSnap_34}Uses:259 260 261 262 263 157 264 265 266 267Used by:Timeline
Symbol 269 GraphicUsed by:275
Symbol 270 EditableTextUses:88Used by:275
Symbol 271 FontUsed by:272 276 277 322 324 325
Symbol 272 EditableTextUses:271Used by:275
Symbol 273 FontUsed by:274
Symbol 274 EditableTextUses:273Used by:275
Symbol 275 MovieClip {xtrememotor7_fla.HUD_35}Uses:102 269 270 272 274Used by:Timeline
Symbol 276 EditableTextUses:271Used by:Timeline
Symbol 277 EditableTextUses:271Used by:Timeline
Symbol 278 BitmapUsed by:280
Symbol 279 BitmapUsed by:280
Symbol 280 GraphicUses:278 279Used by:290
Symbol 281 FontUsed by:282 283
Symbol 282 EditableTextUses:281Used by:290
Symbol 283 EditableTextUses:281Used by:290
Symbol 284 GraphicUsed by:285
Symbol 285 ButtonUses:284Used by:290
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClipUses:286Used by:289
Symbol 288 MovieClipUses:120Used by:289
Symbol 289 MovieClip {xtrememotor7_fla.buttonNew_39}Uses:287 121 288Used by:290
Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37}Uses:280 282 283 285 289Used by:Timeline
Symbol 291 GraphicUsed by:293
Symbol 292 GraphicUsed by:293
Symbol 293 ButtonUses:142 291 145 292Used by:Timeline
Symbol 294 GraphicUsed by:326
Symbol 295 ButtonUses:83Used by:326
Symbol 296 BitmapUsed by:297
Symbol 297 GraphicUses:296Used by:326
Symbol 298 GraphicUsed by:326
Symbol 299 BitmapUsed by:300
Symbol 300 GraphicUses:299Used by:326
Symbol 301 GraphicUsed by:326
Symbol 302 TextUses:88Used by:326
Symbol 303 TextUses:1Used by:304
Symbol 304 ButtonUses:83 303Used by:326
Symbol 305 TextUses:1Used by:306
Symbol 306 ButtonUses:83 305Used by:326
Symbol 307 EditableTextUses:1Used by:326
Symbol 308 TextUses:1Used by:309
Symbol 309 ButtonUses:83 308Used by:326
Symbol 310 MovieClipUsed by:326
Symbol 311 GraphicUsed by:318
Symbol 312 GraphicUsed by:318
Symbol 313 GraphicUsed by:318
Symbol 314 GraphicUsed by:318
Symbol 315 GraphicUsed by:318
Symbol 316 GraphicUsed by:318
Symbol 317 GraphicUsed by:318
Symbol 318 MovieClipUses:311 312 313 74 314 315 316 317Used by:323
Symbol 319 TextUses:1Used by:323
Symbol 320 FontUsed by:321
Symbol 321 EditableTextUses:320Used by:323
Symbol 322 EditableTextUses:271Used by:323
Symbol 323 MovieClip {xtrememotor7_fla.medalCont_49}Uses:318 319 321 322Used by:326
Symbol 324 EditableTextUses:271Used by:326
Symbol 325 EditableTextUses:271Used by:326
Symbol 326 MovieClip {xtrememotor7_fla.results_43}Uses:294 295 118 297 298 300 301 302 304 306 307 309 310 137 323 77 324 325Used by:Timeline
Symbol 327 GraphicUsed by:345
Symbol 328 GraphicUsed by:329
Symbol 329 MovieClipUses:328Used by:345
Symbol 330 GraphicUsed by:345
Symbol 331 TextUses:1Used by:345
Symbol 332 TextUses:1Used by:345
Symbol 333 GraphicUsed by:345
Symbol 334 TextUses:1Used by:345
Symbol 335 GraphicUsed by:345
Symbol 336 GraphicUsed by:345
Symbol 337 GraphicUsed by:345
Symbol 338 GraphicUsed by:345
Symbol 339 TextUses:1Used by:345
Symbol 340 GraphicUsed by:345
Symbol 341 GraphicUsed by:343
Symbol 342 GraphicUsed by:343
Symbol 343 MovieClipUses:341 342Used by:345
Symbol 344 GraphicUsed by:345
Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51}Uses:327 329 330 331 332 333 334 335 336 337 338 339 340 343 344Used by:Timeline
Symbol 346 GraphicUsed by:Timeline
Streaming Sound 1Used by:Symbol 164 MovieClip {xtrememotor7_fla.notDoppler_intro_16}

Instance Names

"intro"Frame 1Symbol 130 MovieClip {xtrememotor7_fla.introClip_1}
"tweenAds"Frame 1Symbol 148 MovieClip {xtrememotor7_fla.tweenAds_9}
"newIntroPlay"Frame 2Symbol 164 MovieClip {xtrememotor7_fla.notDoppler_intro_16}
"introPlay"Frame 3Symbol 168 MovieClip
"introClip"Frame 4Symbol 252 MovieClip {xtrememotor7_fla.intro_20}
"Sky"Frame 5Symbol 258 MovieClip
"PhotoSnap"Frame 5Symbol 268 MovieClip {xtrememotor7_fla.PhotoSnap_34}
"HUD"Frame 5Symbol 275 MovieClip {xtrememotor7_fla.HUD_35}
"frameRateCounter"Frame 5Symbol 276 EditableText
"frameRateSet"Frame 5Symbol 277 EditableText
"mp3GUI"Frame 5Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37}
"bottomRightButton"Frame 5Symbol 293 Button
"myResults"Frame 5Symbol 326 MovieClip {xtrememotor7_fla.results_43}
"toolBar"Frame 7Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51}
"code"Symbol 12 MovieClip {Code} Frame 1Symbol 9 EditableText
"char"Symbol 28 MovieClip {BikeGraphic} Frame 1Symbol 22 MovieClip {xtrememotor7_fla.char_71}
"deathText"Symbol 46 MovieClip {BloodSplat} Frame 1Symbol 39 EditableText
"btn"Symbol 78 MovieClip {levelBtnMC} Frame 1Symbol 64 Button {ClickButton}
"colour"Symbol 78 MovieClip {levelBtnMC} Frame 1Symbol 69 MovieClip {xtrememotor7_fla.colour_61}
"txt"Symbol 78 MovieClip {levelBtnMC} Frame 1Symbol 70 EditableText
"status"Symbol 78 MovieClip {levelBtnMC} Frame 1Symbol 77 MovieClip
"btn"Symbol 86 MovieClip {MyButton2} Frame 1Symbol 84 Button {MyButton}
"myString"Symbol 86 MovieClip {MyButton2} Frame 1Symbol 85 EditableText
"resetLevel"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 64 Button {ClickButton}
"qualityBtn"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 64 Button {ClickButton}
"menuBtn"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 64 Button {ClickButton}
"skipLevel"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 64 Button {ClickButton}
"skipLevelText"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 90 EditableText
"status"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 77 MovieClip
"qualityTxt"Symbol 94 MovieClip {PauseMenu} Frame 1Symbol 91 EditableText
"myMC"Symbol 100 MovieClip {GirlHint} Frame 1Symbol 96 MovieClip
"textBox"Symbol 100 MovieClip {GirlHint} Frame 1Symbol 98 EditableText
"track"Symbol 111 MovieClip {Scrollbar} Frame 1Symbol 104 MovieClip
"scroller"Symbol 111 MovieClip {Scrollbar} Frame 1Symbol 106 MovieClip
"upArrow"Symbol 111 MovieClip {Scrollbar} Frame 1Symbol 108 MovieClip
"downArrow"Symbol 111 MovieClip {Scrollbar} Frame 1Symbol 110 MovieClip
"myButton"Symbol 123 MovieClip {xtrememotor7_fla.wheelscont_4} Frame 1Symbol 121 Button
"lbar"Symbol 129 MovieClip {xtrememotor7_fla.Preloader_2} Frame 1Symbol 119 MovieClip
"wheelsCont"Symbol 129 MovieClip {xtrememotor7_fla.Preloader_2} Frame 1Symbol 123 MovieClip {xtrememotor7_fla.wheelscont_4}
"preloader"Symbol 130 MovieClip {xtrememotor7_fla.introClip_1} Frame 1Symbol 129 MovieClip {xtrememotor7_fla.Preloader_2}
"notDopplerAd"Symbol 137 MovieClip {xtrememotor7_fla.advertisement_11} Frame 1Symbol 132 MovieClip
"adBox"Symbol 137 MovieClip {xtrememotor7_fla.advertisement_11} Frame 1Symbol 133 MovieClip
"advertisement"Symbol 147 MovieClip {xtrememotor7_fla.AdvertiementMove_10} Frame 1Symbol 137 MovieClip {xtrememotor7_fla.advertisement_11}
"dopplerBtn"Symbol 147 MovieClip {xtrememotor7_fla.AdvertiementMove_10} Frame 1Symbol 146 Button
"am"Symbol 148 MovieClip {xtrememotor7_fla.tweenAds_9} Frame 1Symbol 147 MovieClip {xtrememotor7_fla.AdvertiementMove_10}
"button"Symbol 164 MovieClip {xtrememotor7_fla.notDoppler_intro_16} Frame 1Symbol 146 Button
"status1"Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26} Frame 1Symbol 77 MovieClip
"status2"Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26} Frame 1Symbol 77 MovieClip
"myBtn"Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26} Frame 1Symbol 64 Button {ClickButton}
"myText"Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26} Frame 1Symbol 211 EditableText
"selectLevel"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"credits"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"scrollCrap"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 185 MovieClip
"moreGames"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"newGame"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"instructions"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"instructionsBackToMenu"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"selectLevelBackToMenu"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"creditsBackToMenu"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"levelEditor"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"completeSign"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 214 MovieClip {xtrememotor7_fla.completeSign_26}
"creditPrankardBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"creditVoiceBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"creditMusicBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"creditSponsorBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"notDopplerSponsorBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"prankardSponsorBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"moreGames2"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"webmasterBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"emailPrankardLicenseBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"addPrankardGameBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"webmasterBackToMenu"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 64 Button {ClickButton}
"addDopplerGameBtn"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 121 Button
"sb"Symbol 251 MovieClip {xtrememotor7_fla.menu_21} Frame 1Symbol 111 MovieClip {Scrollbar}
"menuClip"Symbol 252 MovieClip {xtrememotor7_fla.intro_20} Frame 1Symbol 251 MovieClip {xtrememotor7_fla.menu_21}
"remainText"Symbol 275 MovieClip {xtrememotor7_fla.HUD_35} Frame 1Symbol 270 EditableText
"timerText"Symbol 275 MovieClip {xtrememotor7_fla.HUD_35} Frame 1Symbol 272 EditableText
"levelName"Symbol 275 MovieClip {xtrememotor7_fla.HUD_35} Frame 1Symbol 274 EditableText
"powerBtn"Symbol 289 MovieClip {xtrememotor7_fla.buttonNew_39} Frame 1Symbol 121 Button
"title"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 282 EditableText
"artist"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 283 EditableText
"prevBtn"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 285 Button
"nextBtn"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 285 Button
"music"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 289 MovieClip {xtrememotor7_fla.buttonNew_39}
"effects"Symbol 290 MovieClip {xtrememotor7_fla.Mp3Player_37} Frame 1Symbol 289 MovieClip {xtrememotor7_fla.buttonNew_39}
"medal"Symbol 323 MovieClip {xtrememotor7_fla.medalCont_49} Frame 1Symbol 318 MovieClip
"medalText"Symbol 323 MovieClip {xtrememotor7_fla.medalCont_49} Frame 1Symbol 321 EditableText
"displayTime"Symbol 323 MovieClip {xtrememotor7_fla.medalCont_49} Frame 1Symbol 322 EditableText
"continueBtn"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 295 Button
"moreGamesBtn"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 304 Button
"menuBtn"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 306 Button
"continueText"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 307 EditableText
"retryBtn"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 309 Button
"imageSlider"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 310 MovieClip
"advertisement"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 137 MovieClip {xtrememotor7_fla.advertisement_11}
"buttons"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 310 MovieClip
"medalCont"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 323 MovieClip {xtrememotor7_fla.medalCont_49}
"goldMdl"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 77 MovieClip
"silverMdl"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 77 MovieClip
"goldTime"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 324 EditableText
"silverTime"Symbol 326 MovieClip {xtrememotor7_fla.results_43} Frame 1Symbol 325 EditableText
"polyBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"startBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"endBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"photoBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"faceBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"goBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"helpBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"selectBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"load1"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"load2"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"load3"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"load4"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"load5"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"newBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"exitBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"gridBtn"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 329 MovieClip
"faceGraphic"Symbol 345 MovieClip {xtrememotor7_fla.toolBar_51} Frame 1Symbol 343 MovieClip

Special Tags

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

Labels

"menu"Frame 3
"game"Frame 5
"editor"Frame 6
"editorStop"Frame 7
"cheat"Frame 8




http://swfchan.com/13/63254/info.shtml
Created: 13/4 -2019 19:55:06 Last modified: 13/4 -2019 19:55:06 Server time: 18/01 -2025 09:20:56