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

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

Galaxoball - deep space marble rolling racing game.swf

This is the info page for
Flash #90840

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


Text
Select Track

Button

1

2

3

4

5

Silverstain

fps

Quit and restart this race?

100 %

This game can only be played online - please
upload it to your website to play.
Thank you.

instructions >>

level templates

level movieclips

sounds

AbcdefgG !!!

hint

1000

BUMP

Coolbuddy.com

Awards

Back

Back

All levels
complete

Level 3 only
with no lives
lost

Level 4 only with
one or no lives
lost

12 Kinetroids
destroyed

50 000
points or
more

All levels
complete in
one go

Level 1
complete

Best Score 999999999

starburst

Developed by:

High
Scores

1
2
3
4
5
6
7
8
9
10

xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx

1234
1234
1234
1234
1234
1234
1234
1234
1234
1234

Boost

Coolbuddy.com

Message
message

QUIT

QUIT

RESTART

RESTART

Lap

0

Lap time

Best

Instructions:
Use the mouse to control your ball - move it and the
ball will follow.
Click the mouse to use your boost.  The bar at the top
left shows you how much boost you have left.
Your ball is always blue.

Level 1

Blurb

Are you sure you want to quit?

Yay!  You cleared all levels and saved all the sheep.  Your a Sheepy Shooting Superstar!

You have unlocked Multi Ghost Mode!  Race against other players' ghost laps and compete to get the best ghost lap of the day.  Supreme racers only.

congratulations

Enter your name:

Player 1

START

check1

check2

Select Play Mode

Race against the computer. Win all 5 races to unlock Multi-
Ghost mode.  Advanced racing skills required.

Race against your own ghost and compete on the Time-Trial
leaderboard.  A good place to start and learn the circuits.

Race against other players' ghost laps and compete to get the
best ghost lap of the day.  Supreme racers only.

CLICK TO
LAUNCH

Time Trial Hiscores

Select leaderboard to view

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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1: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.Collision.Shapes.*; import Box2D.Common.Math.*; 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; 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.Math.*; import Box2D.Common.*; 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.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; 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 = 2; 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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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]; _local8.GetManifolds()[_local9].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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; 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]; _local6.points[_local18].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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; 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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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.Dynamics.*; import Box2D.Common.*; 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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; 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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import flash.display.*; import Box2D.Dynamics.Contacts.*; 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.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; 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.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; 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]; m_bodies[_local5].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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; 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]; _local8.m_contacts[_local17].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
//AdLoader (CPMStar.AdLoader) package CPMStar { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class AdLoader extends Sprite { private var contentspotid:String; private var cpmstarLoader:Loader; public function AdLoader(_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))); addChild(cpmstarLoader); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } } }//package CPMStar
Section 76
//None (fl.transitions.easing.None) package fl.transitions.easing { public class None { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } } }//package fl.transitions.easing
Section 77
//Tween (fl.transitions.Tween) package fl.transitions { import flash.display.*; import flash.events.*; import flash.utils.*; public class Tween extends EventDispatcher { private var _position:Number;// = NAN public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var isPlaying:Boolean;// = false public var begin:Number;// = NAN private var _fps:Number;// = NAN private var _time:Number;// = NAN public var change:Number;// = NAN private var _finish:Number;// = NAN public var looping:Boolean;// = false private var _intervalID:uint;// = 0 public var func:Function; private var _timer:Timer;// = null private var _startTime:Number;// = NAN public var prop:String;// = "" private var _duration:Number;// = NAN public var obj:Object;// = null public var useSeconds:Boolean;// = false protected static var _mc:MovieClip = new MovieClip(); public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ isPlaying = false; obj = null; prop = ""; func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; begin = NaN; change = NaN; useSeconds = false; prevTime = NaN; prevPos = NaN; looping = false; _duration = NaN; _time = NaN; _fps = NaN; _position = NaN; _startTime = NaN; _intervalID = 0; _finish = NaN; _timer = null; super(); if (!arguments.length){ return; }; this.obj = _arg1; this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } public function set FPS(_arg1:Number):void{ var _local2:Boolean; _local2 = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get finish():Number{ return ((this.begin + this.change)); } public function get duration():Number{ return (this._duration); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function fforward():void{ this.time = this._duration; this.fixTime(); } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } public function get position():Number{ return (this.getPosition(this._time)); } public function yoyo():void{ this.continueTo(this.begin, this.time); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function get FPS():Number{ return (this._fps); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function get time():Number{ return (this._time); } private function update():void{ this.setPosition(this.getPosition(this._time)); } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } } }//package fl.transitions
Section 78
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_LOOP:String = "motionLoop"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_RESUME:String = "motionResume"; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){ time = NaN; position = NaN; super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 79
//andromedusIntro_mc_10 (galaxoball_fla.andromedusIntro_mc_10) package galaxoball_fla { import flash.display.*; public dynamic class andromedusIntro_mc_10 extends MovieClip { public function andromedusIntro_mc_10(){ addFrameScript(150, frame151); } function frame151(){ MovieClip(parent).nextFrame(); } } }//package galaxoball_fla
Section 80
//bumperLight_46 (galaxoball_fla.bumperLight_46) package galaxoball_fla { import flash.display.*; public dynamic class bumperLight_46 extends MovieClip { public function bumperLight_46(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package galaxoball_fla
Section 81
//CB_button_mc_1 (galaxoball_fla.CB_button_mc_1) package galaxoball_fla { import flash.display.*; import flash.text.*; public dynamic class CB_button_mc_1 extends MovieClip { public var char:String; public var txt:String; public var n:uint; public var buttonText:TextField; public var newText:String; public function CB_button_mc_1(){ addFrameScript(0, frame1); } function frame1(){ stop(); txt = this.name; newText = ""; n = 0; while (n < txt.length) { char = txt.charAt(n); if (char == "_"){ newText = (newText + " "); } else { if (char == "$"){ newText = (newText + "."); } else { newText = (newText + char); }; }; n++; }; buttonText.text = newText; buttonText.mouseEnabled = false; } } }//package galaxoball_fla
Section 82
//credits_mc_69 (galaxoball_fla.credits_mc_69) package galaxoball_fla { import flash.display.*; public dynamic class credits_mc_69 extends MovieClip { public var andromedus:SimpleButton; public var _Close_:MovieClip; } }//package galaxoball_fla
Section 83
//help_mc_81 (galaxoball_fla.help_mc_81) package galaxoball_fla { import flash.display.*; public dynamic class help_mc_81 extends MovieClip { public var _OK_:MovieClip; } }//package galaxoball_fla
Section 84
//hiscoreSelectButtonHolder_mc_232 (galaxoball_fla.hiscoreSelectButtonHolder_mc_232) package galaxoball_fla { import flash.display.*; public dynamic class hiscoreSelectButtonHolder_mc_232 extends MovieClip { public var _Crux_:MovieClip; public var _Pegasus_:MovieClip; public var _Andromeda_:MovieClip; public var _Aquila_:MovieClip; public var _Orion_:MovieClip; } }//package galaxoball_fla
Section 85
//levelButtonHolder_mc_237 (galaxoball_fla.levelButtonHolder_mc_237) package galaxoball_fla { import flash.display.*; public dynamic class levelButtonHolder_mc_237 extends MovieClip { public var level1:levelThumb; public var level2:levelThumb; public var level4:levelThumb; public var level5:levelThumb; public var level3:levelThumb; } }//package galaxoball_fla
Section 86
//MainTimeline (galaxoball_fla.MainTimeline) package galaxoball_fla { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; import flash.display.*; import flash.events.*; import Box2D.Dynamics.Contacts.*; import fl.transitions.*; import fl.transitions.easing.*; import includes.*; import mochi.as3.*; import heyzap.as3.*; import flash.net.*; import flash.utils.*; import flash.media.*; import CPMStar.*; import flash.text.*; import flash.geom.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public var buttonDistToTarget:Number; public var raceWon:Boolean; public var m_physScale:Number; public var menuMusic; public var holdTextTimer:uint; public var textScale:Number; public var bonus:int; public var stageAssets:MovieClip; public var ad:DisplayObject; public var check1:MovieClip; public var bonusTweenArray:Array; public var myPreloader:preloader_mc; public var currentWord:uint; public var buttonSpeed:Number; public var ballCanvas:Sprite; public var recordAI:Boolean; public var retrying:Boolean; public var highscores:highscores_mc; public var m_iterations:int; public var check2:MovieClip; public var textPhase:uint; public var aiLap:uint; public var contacts:MyContactListener; public var _Coolbuddy$com_:MovieClip; public var g:uint; public var h:uint; public var waitForMouseUp:Boolean; public var raceStarted:Boolean; public var check1Crossed:Boolean; public var tickerSection:uint; public var modeSelect:MovieClip; public var upKeyDown:Boolean; public var startLineCrossed:Boolean; public var finished:Boolean; public var bg1:MovieClip; public var numberOfLevels; public var bg3:MovieClip; public var downKeyDown:Boolean; public var onKong:Boolean; public var CPMStarContentSpotID:String; public var bg2:MovieClip; public var cleaned:Boolean; public var batteryArray:Array; public var shimmerSound:shimmer; public var launchButton:launchButton_bt; public var wpRadius:Number; public var aiStartLineCrossed:Boolean; public var submitSuccess:Boolean; public var fpsCounter:Number; public var ghostMode:Boolean; public var cameraCanvas:Sprite; public var wpCounter:uint; public var fps:Number; public var boostOn:Boolean; public var aiSpeed:Array; public var gameoverSound:gameover; public var hsLoader:URLLoader; public var lives:int; public var message1:MovieClip; public var bestLap:uint; public var ghostArray:Array; public var cameraScale:Number; public var aiCheck1Crossed:Boolean; public var confirmQuit:confirmQuit_mc; public var boosts:Number; public var ghostBall:MovieClip; public var currentURL:String; public var gui:gui_mc; public var securityOn:Boolean; public var soundToggle:soundToggle_mc; public var highestLevel:uint; public var letterWidth:Number; public var blackScreen:blackScreen_mc; public var gameMusic; public var check2Crossed:Boolean; public var m_world:b2World; public var menu:menu_mc; public var timeLoader:URLLoader; public var menuMusicPlaying:Boolean; public var gameRunning:Boolean; public var wordArray:Array; public var tickerArray:Array; public var multiModeUnlocked:Boolean; public var ballSpeed:uint; public var currentLevel:uint; public var lastButtonPressed:String; public var lap:uint; public var levelSelect:levelSelect_mc; public var leftKeyDown:Boolean; public var awards:awards_mc; public var currentURL2:String; public var fpsElapsedTime:Number; public var hintBox:hintBox_mc; public var startLives:int; public var numParticles:uint; public var counterMax:uint; public var projectCanvas:Sprite; public var shadowOffset:Number; public var letterArray:Array; public var trailCounter1:uint; public var frameTimer:uint; public var lastBody1:b2Body; public var lastBody2:b2Body; public var myBall:b2Body; public var rightKeyDown:Boolean; public var musicToggle:musicToggle_mc; public var aiMode:Boolean; public var mouseIsDown:Boolean; public var adjusting:Boolean; public var counter:uint; public var trailCounter2:uint; public var alwaysUnlocked:uint; public var bestGhostArray:Array; public var fadeInTween:Tween; public var levelButtonStart:Number; public var myBallRadius:uint; public var menuStars:MovieClip; public var helpShown:Boolean; public var numberOfHintBoxes:uint; public var online:Boolean; public var tickerPresent:Boolean; public var levelInfo:levelInfo_mc; public var so:SharedObject; public var aiBall:b2Body; public var grav:Number; public var debug:debug_mc; public var fadeOutTween:Tween; public var lapTimer:uint; public var boostSpeed:uint; public var confirmReset:confirmReset_mc; public var allowedURL2:String; public var intro:MovieClip; public var yOffset:uint; public var multiMode:Boolean; public var trackCanvas:Sprite; public var trackName:Array; public var hiscoreSelect:MovieClip; public var textEffectAdded:Boolean; public var dotArray:Array; public var score:uint; public var winSound:win; public var disableMouse:Boolean; public var trailArray1:Array; public var hint:Array; public var dummyArray:Array; public var allowedLocal:String; public var allowedURL:String; public var adBox:MovieClip; public var tweenArray:Array; public var trailArray2:Array; public var trackScale:Number; public var menuMusicVolume:Number; public var m_timeStep:Number; public var musicTransform:SoundTransform; public var blackOut:blackScreen_mc; public var wp:uint; public var musicOn:Boolean; public var waypointArray:Array; public var trail1:Sprite; public var numLaps:Array; public var hintBoxArray:Array; public var _Continue_:MovieClip; public var trail2:Sprite; public var bestScore:uint; public var ticker:ticker_mc; public var musicChannel:SoundChannel; public var origin:Point; public var levelCompleted:Boolean; public var testingSendSuccess:Boolean; public var boostSound:constant; public var hintBoxExists:Boolean; public var gameWon:Boolean; public var disableReset:Boolean; public var currentDay:uint; public var fpsNewTime:Number; public var fpsStartTime:Number; public var ballRadius:uint; public var startLine:MovieClip; public var tickerStart:Number; public var launched:Boolean; public var globalDataObject:Object; public var overrideMultiLock:Boolean; public var vel:b2Vec2; public var maxBoosts:uint; public var frameCounter:uint; public var menuStarsAdded:Boolean; public var boostChannel:SoundChannel; public var hsMC:MovieClip; public var gameOver:Boolean; public var gameOverScreen:gameOverScreen_mc; public var line:MovieClip; public var bonusTweenNumber:uint; public var gameCanvas:Sprite; public function MainTimeline(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4); } public function removeMenu():void{ menu._Credits_.removeEventListener(MouseEvent.MOUSE_DOWN, showCredits); menu.removeEventListener(Event.ENTER_FRAME, runTextEffect); menu._Play_.removeEventListener(MouseEvent.MOUSE_DOWN, showModeSelect); menu._Coolbuddy$com_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); menu._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); cleanTextEffect(); projectCanvas.removeChild(menu); } public function makeWaypoint(_arg1:Number, _arg2:Number):void{ waypointArray[currentLevel].push(Math.round((_arg1 * trackScale))); waypointArray[currentLevel].push(Math.round((_arg2 * trackScale))); } public function soundUp(_arg1:MouseEvent):void{ if (SuperGlobals.soundOn == true){ soundToggle.gotoAndStop("onUp"); } else { soundToggle.gotoAndStop("offUp"); }; } public function loader(_arg1:Event){ var _local2:Number; var _local3:*; var _local4:*; var _local5:*; if (counter < counterMax){ counter++; } else { counter = counterMax; }; _local2 = ((100 * counter) / counterMax); _local3 = stage.loaderInfo.bytesTotal; _local4 = stage.loaderInfo.bytesLoaded; _local5 = Math.round(((_local4 * 100) / _local3)); myPreloader.loadingBar.width = (2 * (_local5 + _local2)); myPreloader.loadingText.text = (("Loading: " + String(Math.round(((_local5 + _local2) / 2)))) + "%"); if ((((((_local4 >= _local3)) && ((finished == false)))) && ((counter >= counterMax)))){ myPreloader.loadingText.text = "Loading: 100%"; finished = true; end_preload(); }; } public function fadeToMenu(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(showMenu, 500); setTimeout(removeModeSelect, 501); } public function dataCheckedHandler(_arg1:Object){ HeyzapTools.removeEventListener("globalGameData", dataCheckedHandler); globalDataObject = new Object(); globalDataObject = _arg1.global_game_data; if ((((bestLap < globalDataObject.myArray[(currentLevel - 1)].t)) || ((currentDay > globalDataObject.myArray[(currentLevel - 1)].d)))){ setGlobalGhostData(currentLevel, gameOverScreen.submitGhost.playerName.text, bestLap, currentDay, bestGhostArray[currentLevel]); setTimeout(sendFailed, 10000); testingSendSuccess = true; } else { gameOverScreen.submitGhost.message.text = "Sorry - your lap time has just been beaten and is no longer the fastest for this track. Try again!"; }; } public function fadeInModeSelect(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(showModeSelect, 500); setTimeout(removeMenu, 501); } public function deflate(_arg1:Array):Array{ var _local2:Array; var _local3:uint; _local2 = new Array(); _local2[0] = _arg1[0]; _local2[1] = _arg1[1]; _local3 = 2; while (_local3 < (_arg1.length - 2)) { _local2.push(_arg1[_local3]); _local2.push(_arg1[(_local3 + 1)]); _local3 = (_local3 + 4); }; _local2.push(_arg1[(_arg1.length - 2)]); _local2.push(_arg1[(_arg1.length - 1)]); if ((_arg1.length / 4) == int((Array.length / 4))){ _local2.push(0); } else { _local2.push(1); }; return (_local2); } public function displayGameOverMessages():void{ if (aiMode == true){ if (raceWon == false){ gameOverScreen.message1.text = "Unlucky - You Lost!"; gameOverScreen.cup1.visible = false; gameOverScreen.cup2.visible = false; if (SuperGlobals.soundOn == true){ gameoverSound.play(); }; gameOverScreen.message3.text = ""; } else { gameOverScreen.message3.text = ""; if (currentLevel != numberOfLevels){ gameOverScreen._Next_Track_.visible = true; gameOverScreen._Next_Track_.addEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Try_Again_.visible = false; gameOverScreen._Try_Again_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); }; gameOverScreen.message1.text = "Congratulations - You Won!"; gameOverScreen.cup1.visible = true; gameOverScreen.cup2.visible = true; if (SuperGlobals.soundOn == true){ winSound.play(); shimmerSound.play(); }; if (currentLevel == numberOfLevels){ multiModeUnlocked = true; so.data.multiModeUnlocked = true; gameOverScreen.message3.text = "You have unlocked Multi Ghost Mode! Race against other players' ghost laps and compete to get the best ghost lap of the day. Supreme racers only."; gameOverScreen._Next_Track_.y = 352; gameOverScreen._Try_Again_.y = 352; gameOverScreen._More_Games_.y = 102; gameOverScreen._Multi_Ghost_.visible = true; gameOverScreen._Multi_Ghost_.addEventListener(MouseEvent.MOUSE_DOWN, gotoMultiGhost); } else { if (currentLevel == highestLevel){ highestLevel = (currentLevel + 1); so.data.highestLevel = highestLevel; gameOverScreen.message3.text = (("You have unlocked track: " + trackName[(currentLevel + 1)]) + "."); }; }; if (currentLevel != numberOfLevels){ currentLevel++; }; }; }; if (ghostMode == true){ gameOverScreen.message1.text = "Time Trial Over"; gameOverScreen.cup1.visible = false; gameOverScreen.cup2.visible = false; gameOverScreen.message3.text = "Click submit to enter your lap onto the leaderboard"; }; if (multiMode == true){ gameOverScreen.message1.text = "Congratulation - you set the best ghost lap of the day!"; gameOverScreen.cup1.visible = true; gameOverScreen.cup2.visible = true; if (SuperGlobals.soundOn == true){ winSound.play(); shimmerSound.play(); }; gameOverScreen.message3.text = "Click submit to save your lap for others to compete against"; }; if (bestLap < 1000000){ gameOverScreen.message2.text = (("Fastest lap: " + String(bestLap)) + " Galaxosecs"); } else { gameOverScreen.message2.text = "No lap time was recorded."; gameOverScreen.message3.text = ""; gameOverScreen._Submit_.visible = false; }; } public function resetBoostColor():void{ gui.boostBar.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0); } public function removeModeSelect():void{ modeSelect.modeHolder.removeEventListener(MouseEvent.MOUSE_DOWN, selectMode); modeSelect._Back_.removeEventListener(MouseEvent.MOUSE_DOWN, fadeToMenu); modeSelect._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); projectCanvas.removeChild(modeSelect); } public function getGlobalGhostData():void{ HeyzapTools.send("getGlobalGameData"); levelInfo.infoText.text = "Connecting to Heyzap server ..."; HeyzapTools.addEventListener("globalGameData", dataReceivedHandler); } public function fadeInMenuMusic(_arg1:Event):void{ var _local2:SoundTransform; menuMusicVolume = (menuMusicVolume + 0.05); if (musicOn == true){ _local2 = new SoundTransform(menuMusicVolume, 0); musicChannel.soundTransform = _local2; } else { musicChannel.soundTransform = musicTransform; }; if (menuMusicVolume >= 1){ menuMusicVolume = 0; stage.removeEventListener(Event.ENTER_FRAME, fadeInMenuMusic); }; } public function cleanTextEffect():void{ var _local1:uint; _local1 = 0; while (_local1 < dotArray.length) { projectCanvas.removeChild(dotArray[_local1]); dotArray[_local1] = null; _local1++; }; dotArray = new Array(); stage.removeEventListener(Event.ENTER_FRAME, runTextEffect); textEffectAdded = false; currentWord = 0; textPhase = 0; } public function scrollTicker(_arg1:Event):void{ ticker.mc.textField.x = (ticker.mc.textField.x - 3); if (ticker.mc.textField.x < (tickerStart - ticker.mc.textField.width)){ ticker.mc.textField.x = (tickerStart + 600); tickerSection++; if (tickerSection >= tickerArray.length){ tickerSection = 0; }; ticker.mc.textField.text = tickerArray[tickerSection]; ticker.mc.textField.autoSize = TextFieldAutoSize.LEFT; }; } public function initWord():void{ var _local1:String; var _local2:uint; var _local3:uint; var _local4:String; var _local5:uint; var _local6:uint; var _local7:MovieClip; var _local8:Number; var _local9:uint; _local1 = wordArray[currentWord]; _local2 = 0; dotArray.sort(shuffle); _local3 = 0; while (_local3 < _local1.length) { _local4 = _local1.charAt(_local3).toLowerCase(); if (_local4 != " "){ _local5 = (_local4.charCodeAt(0) - 97); _local6 = 0; while (_local6 < letterArray[_local5].arrayLength) { if (_local2 >= dotArray.length){ _local7 = new dot_mc(); projectCanvas.addChild(_local7); _local8 = (1 - (Math.random() * 0.6)); _local7.transform.colorTransform = new ColorTransform((_local8 - 0.25), (_local8 - 0.15), _local8, 1, 0, 0, 0, 0); _local7.width = (_local7.width * textScale); _local7.height = (_local7.height * textScale); _local7.x = (Math.random() * 640); _local7.y = (Math.random() * -200); _local7.vx = ((Math.random() * 2) - 1); _local7.vy = ((Math.random() * 2) - 1); dotArray.push(_local7); } else { _local7 = dotArray[_local2]; _local7.vx = ((Math.random() * 2) - 1); _local7.vy = ((Math.random() * 2) - 1); }; _local7.targetX = ((((640 / 2) - (((_local1.length * letterWidth) * textScale) / 2)) + (letterArray[_local5][_local6].x * textScale)) + ((_local3 * letterWidth) * textScale)); _local7.targetY = (yOffset + (letterArray[_local5][_local6].y * textScale)); _local2++; _local6++; }; }; _local3++; }; if (_local2 < dotArray.length){ _local9 = _local2; while (_local9 < dotArray.length) { dotArray[_local9].targetX = (Math.random() * 640); dotArray[_local9].targetY = -40; _local9++; }; }; textPhase = 1; } public function createCheck1(_arg1:Number, _arg2:Number):void{ check1 = new check1_tm(); gameCanvas.addChild(check1); check1.x = (_arg1 * trackScale); check1.y = (_arg2 * trackScale); check1.alpha = 0; check1.width = (check1.width * trackScale); check1.height = (check1.height * trackScale); } function frame2(){ stop(); } function frame3(){ play(); stageAssets.visible = false; } public function removeHiscoreSelect():void{ hiscoreSelect.hiscoreSelectButtonHolder.removeEventListener(MouseEvent.CLICK, showScores); hiscoreSelect._Back_.removeEventListener(MouseEvent.CLICK, fadeHiscoreSelectToMenu); projectCanvas.removeChild(hiscoreSelect); } function frame1(){ stop(); currentURL2 = stage.loaderInfo.url; online = false; if (currentURL2.indexOf("http", 0) != -1){ online = true; }; if (online == true){ message1.visible = false; allowedURL2 = "kongregate.com"; onKong = false; if (currentURL2.indexOf(allowedURL2, 0) != -1){ onKong = true; }; HeyzapTools.load({game_key:"6b009e2adaa48ed5e0d82ac75797e3e5", clip:stage}); hsMC = new MovieClip(); stage.addChild(hsMC); MochiServices.connect("5f41becf4be70ee6", hsMC, onConnectError); MochiBot.track(this, "1c97b961"); _Continue_.visible = false; stage.frameRate = 30; if (onKong == false){ CPMStarContentSpotID = "2160QEE4CFC57"; ad = new AdLoader(CPMStarContentSpotID); adBox.addChild(ad); } else { adBox.visible = false; _Coolbuddy$com_.y = (_Coolbuddy$com_.y + 170); line.y = (line.y + 170); }; _Coolbuddy$com_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); finished = false; addEventListener(Event.ENTER_FRAME, loader); counter = 0; counterMax = 300; } else { message1.visible = true; _Continue_.visible = false; }; } public function createArrow(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Number):void{ var _local5:MovieClip; if (_arg3 == "l"){ _local5 = new arrowSignL_mc(); } else { _local5 = new arrowSignR_mc(); }; gameCanvas.addChild(_local5); _local5.x = (_arg1 * trackScale); _local5.y = (_arg2 * trackScale); _local5.width = (_local5.width * (trackScale / 3)); _local5.height = (_local5.height * (trackScale / 3)); _local5.rotation = _arg4; } public function showGameOverScreen():void{ gameRunning = false; gameOverScreen = new gameOverScreen_mc(); projectCanvas.addChild(gameOverScreen); gameOverScreen.submitGhost.visible = false; gameOverScreen._Quit_to_Menu_.addEventListener(MouseEvent.MOUSE_DOWN, removeGameOverScreen); if ((((ghostMode == true)) || ((multiMode == true)))){ gameOverScreen._Submit_.addEventListener(MouseEvent.MOUSE_DOWN, submitScore); } else { gameOverScreen._Submit_.visible = false; }; gameOverScreen._Try_Again_.addEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Next_Track_.visible = false; gameOverScreen._Multi_Ghost_.visible = false; displayGameOverMessages(); gameOverScreen._More_Games_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Coolbuddy$com_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Facebook_.addEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } public function createCheck2(_arg1:Number, _arg2:Number):void{ check2 = new check2_tm(); gameCanvas.addChild(check2); check2.x = (_arg1 * trackScale); check2.y = (_arg2 * trackScale); check2.alpha = 0; check2.width = (check2.width * trackScale); check2.height = (check2.height * trackScale); } public function updateBoost():void{ var _local1:uint; var _local2:*; var _local3:annihilationEffect_mc; if (aiMode == true){ _local1 = 0; while (_local1 < batteryArray.length) { _local2 = batteryArray[_local1]; if ((((myBall.m_userData.hitTestObject(_local2) == true)) && ((_local2.visible == true)))){ _local2.visible = false; if ((((currentLevel == 1)) || ((currentLevel == 2)))){ boosts = (boosts + 100); }; if ((((currentLevel == 3)) || ((currentLevel == 4)))){ boosts = (boosts + 120); }; if (currentLevel == 5){ boosts = (boosts + 250); }; if (SuperGlobals.soundOn == true){ shimmerSound.play(); }; _local3 = new annihilationEffect_mc(); ballCanvas.addChild(_local3); _local3.x = myBall.m_userData.x; _local3.y = myBall.m_userData.y; gui.boostBar.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 200, 200, -200, 0); setTimeout(resetBoostColor, 2000); if (boosts > maxBoosts){ boosts = maxBoosts; }; }; _local1++; }; }; } public function gotoLevelComplete():void{ levelComplete(); } public function holdWord():void{ holdTextTimer++; if (holdTextTimer >= 50){ textPhase = 0; holdTextTimer = 0; currentWord++; if (currentWord >= wordArray.length){ currentWord = 0; }; }; } public function keyDownHandler(_arg1:KeyboardEvent):void{ if ((((_arg1.keyCode == Keyboard.LEFT)) || ((_arg1.keyCode == 65)))){ leftKeyDown = true; }; if ((((_arg1.keyCode == Keyboard.RIGHT)) || ((_arg1.keyCode == 68)))){ rightKeyDown = true; }; if ((((_arg1.keyCode == Keyboard.UP)) || ((_arg1.keyCode == 87)))){ upKeyDown = true; }; if ((((_arg1.keyCode == Keyboard.DOWN)) || ((_arg1.keyCode == 83)))){ downKeyDown = true; }; } public function keyUpHandler(_arg1:KeyboardEvent):void{ if ((((_arg1.keyCode == Keyboard.LEFT)) || ((_arg1.keyCode == 65)))){ leftKeyDown = false; }; if ((((_arg1.keyCode == Keyboard.RIGHT)) || ((_arg1.keyCode == 68)))){ rightKeyDown = false; }; if ((((_arg1.keyCode == Keyboard.UP)) || ((_arg1.keyCode == 87)))){ upKeyDown = false; }; if ((((_arg1.keyCode == Keyboard.DOWN)) || ((_arg1.keyCode == 83)))){ downKeyDown = false; }; } public function musicOver(_arg1:MouseEvent):void{ if (musicOn == true){ musicToggle.gotoAndStop("onOver"); } else { musicToggle.gotoAndStop("offOver"); }; } function frame4(){ stop(); fps = 0; fpsStartTime = 0; fpsNewTime = 0; fpsElapsedTime = 0; fpsCounter = 0; grav = 0; levelButtonStart = 0; buttonSpeed = 0; buttonDistToTarget = 0; tickerStart = 0; trackScale = 2; shadowOffset = 100; lapTimer = 0; bestLap = 1000000; menuMusicVolume = 0; wpRadius = 60; cameraScale = 0.85; numberOfLevels = 5; currentLevel = 1; highestLevel = 1; lives = 0; startLives = 3; bonus = 0; bonusTweenNumber = 0; tickerSection = 0; numberOfHintBoxes = 0; myBallRadius = 16; ballRadius = myBallRadius; lap = 0; aiLap = 0; frameTimer = 0; frameCounter = 0; wpCounter = 0; wp = 0; currentDay = 0; boosts = 0; maxBoosts = 500; ballSpeed = (3.5 / cameraScale); boostSpeed = (5.5 / cameraScale); so = SharedObject.getLocal("highestLevel"); if (((!((so.data.highestLevel == undefined))) && (!((so.data.highestLevel == null))))){ highestLevel = so.data.highestLevel; }; if (highestLevel < 1){ highestLevel = 1; }; alwaysUnlocked = 1; score = 0; bestScore = 0; if (((!((so.data.bestScore == undefined))) && (!((so.data.bestScore == null))))){ bestScore = so.data.bestScore; }; if (bestScore < 0){ bestScore = 0; }; multiModeUnlocked = false; if (((!((so.data.multiModeUnlocked == undefined))) && (!((so.data.multiModeUnlocked == null))))){ multiModeUnlocked = so.data.multiModeUnlocked; }; lastButtonPressed = ""; gameRunning = false; gameOver = false; gameWon = false; submitSuccess = false; adjusting = false; leftKeyDown = false; rightKeyDown = false; upKeyDown = false; downKeyDown = false; mouseIsDown = false; cleaned = false; musicOn = true; disableReset = false; securityOn = false; tickerPresent = false; disableMouse = false; levelCompleted = false; waitForMouseUp = false; retrying = false; hintBoxExists = false; startLineCrossed = false; check1Crossed = false; aiStartLineCrossed = false; aiCheck1Crossed = false; check2Crossed = false; raceStarted = false; menuStarsAdded = false; menuMusicPlaying = false; ghostMode = false; recordAI = false; aiMode = false; multiMode = false; launched = false; helpShown = false; raceWon = false; testingSendSuccess = false; boostOn = false; overrideMultiLock = false; wordArray = new Array(); letterArray = new Array(); dotArray = new Array(); currentWord = 0; textPhase = 0; origin = new Point((stage.stageWidth / 2), (stage.stageHeight / 2)); holdTextTimer = 0; textScale = 0.7; letterWidth = 60; yOffset = 90; textEffectAdded = false; wordArray[0] = "GALAXOBALL"; wordArray[1] = "LETS ROLL"; wordArray[2] = "DEVELOPED BY"; wordArray[3] = "ANDROMEDUS"; wordArray[4] = "CODING BY"; wordArray[5] = "RIC"; wordArray[6] = "ARTWORK BY"; wordArray[7] = "THE HOD"; wordArray[8] = "MUSIC BY"; wordArray[9] = "BISHOP ODO"; wordArray[10] = "THANKS TO"; wordArray[11] = "ERIN CATTO"; wordArray[12] = "SKATEHEAD"; wordArray[13] = "SPONSORED BY"; wordArray[14] = "COOLBUDDY"; m_physScale = 0.07; m_timeStep = (1 / 60); m_iterations = 20; tweenArray = new Array(); hintBoxArray = new Array(); hint = new Array(); bonusTweenArray = new Array(); tickerArray = new Array(); ghostArray = new Array(); bestGhostArray = new Array(); numLaps = new Array(); g = 0; while (g <= numberOfLevels) { bestGhostArray[g] = new Array(); g++; }; waypointArray = new Array(); h = 0; while (h <= numberOfLevels) { waypointArray[h] = new Array(); h++; }; dummyArray = new Array(); tickerArray[0] = "*** It's time for ... !! ***"; tickerArray[1] = "*** A game developed by -ANDROMEDUS.COM- ***"; tickerArray[2] = "*** Coding and Design by -RIC- ***"; tickerArray[3] = "*** Sponsored by - ? - ***"; tickerArray[4] = "*** Artwork by -THE HOD- ***"; tickerArray[5] = "*** Music courtesy of ... ***"; tickerArray[6] = "*** Thanks to -ERIN CATTO- and -SKATEHEAD- ***"; tickerArray[7] = "*** Don't forget to check out more great games at - MAXGAMES.COM - ***"; trackName = new Array(); trackName[1] = "Orion"; trackName[2] = "Andromeda"; trackName[3] = "Pegasus"; trackName[4] = "Crux"; trackName[5] = "Aquila"; batteryArray = new Array(); aiSpeed = new Array(); musicChannel = new SoundChannel(); musicTransform = musicChannel.soundTransform; menuMusic = new menuWav(); gameMusic = new gameWav(); gameoverSound = new gameover(); shimmerSound = new shimmer(); winSound = new win(); boostChannel = new SoundChannel(); boostSound = new constant(); currentURL = stage.loaderInfo.url; allowedURL = "andromedus.com"; allowedLocal = "Richard/Documents/"; trailCounter1 = 0; trailCounter2 = 0; numParticles = 15; initialise(); } public function selectMode(_arg1:MouseEvent):void{ var _local2:String; _local2 = _arg1.target.parent.name; if (_local2 == "_Versus_"){ aiMode = true; ghostMode = false; multiMode = false; }; if (_local2 == "_Time_Trial_"){ aiMode = false; ghostMode = true; multiMode = false; }; if (_local2 == "_Multi_Ghost_"){ aiMode = false; ghostMode = false; multiMode = true; }; if ((((((multiMode == false)) || ((multiModeUnlocked == true)))) || ((overrideMultiLock == true)))){ fadeInLevelSelect(); }; } public function removeHintBox():void{ if (hintBoxExists == true){ projectCanvas.removeChild(hintBox); hintBoxExists = false; }; } public function createStart(_arg1:Number, _arg2:Number):void{ startLine = new start_mc(); gameCanvas.addChild(startLine); startLine.x = (_arg1 * trackScale); startLine.y = (_arg2 * trackScale); startLine.width = (startLine.width * trackScale); startLine.height = (startLine.height * trackScale); } public function makeTrail():void{ var _local1:uint; var _local2:MovieClip; var _local3:uint; var _local4:*; trail1 = new Sprite(); trailArray1 = new Array(); trailCounter1 = 0; _local1 = 0; while (_local1 < numParticles) { _local4 = new circleSprite_mc(); trail1.addChild(_local4); trailArray1.push(_local4); _local1++; }; ballCanvas.addChild(trail1); trail2 = new Sprite(); trailArray2 = new Array(); trailCounter2 = 0; _local3 = 0; while (_local3 < numParticles) { if (aiMode == true){ _local2 = new circleSprite2_mc(); } else { _local2 = new circleSprite3_mc(); }; trail2.addChild(_local2); trailArray2.push(_local2); _local3++; }; ballCanvas.addChild(trail2); if (ghostMode == true){ trail2.visible = false; }; } public function recordGhost():void{ if ((((((lap > 0)) && ((ghostMode == true)))) || ((multiMode == true)))){ ghostArray.push(Math.round(myBall.m_userData.x)); ghostArray.push(Math.round(myBall.m_userData.y)); }; } public function addGUI():void{ gui = new gui_mc(); projectCanvas.addChild(gui); gui.lap.text = String(lap); gui.bestLap.text = "--:--"; gui.lapTime.text = "--:--"; gui.message.text = ""; launchButton = new launchButton_bt(); projectCanvas.addChild(launchButton); launchButton.addEventListener(MouseEvent.MOUSE_DOWN, launch); if (helpShown == false){ gui.help._OK_.addEventListener(MouseEvent.CLICK, hideHelp); helpShown = true; launchButton.visible = false; } else { gui.help.visible = false; }; gui.coolbuddy.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); } public function hideIcon(_arg1:MouseEvent):void{ hideAllIcons(); } public function makeEdge(_arg1, _arg2, _arg3:Array):void{ var _local4:b2BodyDef; var _local5:*; var _local6:uint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2PolygonDef; _local4 = new b2BodyDef(); _local4.position.Set((m_physScale * _arg1), (m_physScale * _arg2)); _local5 = m_world.CreateBody(_local4); _local6 = 0; while (_local6 < (_arg3.length - 2)) { _local7 = _arg3[_local6]; _local8 = _arg3[(_local6 + 1)]; _local9 = _arg3[(_local6 + 2)]; _local10 = _arg3[(_local6 + 3)]; _local11 = new b2PolygonDef(); _local11.vertexCount = 2; _local11.vertices[0].Set(_local7, _local8); _local11.vertices[1].Set(_local9, _local10); _local11.friction = 0.5; _local11.restitution = 0; _local5.CreateShape(_local11); _local6 = (_local6 + 2); }; } public function deleteBonusDisplay(_arg1:bonusDisplay_mc):void{ stage.removeChild(_arg1); } public function levelComplete():void{ gameRunning = false; currentLevel++; if (currentLevel > numberOfLevels){ gameWon = true; currentLevel = numberOfLevels; }; if (currentLevel > highestLevel){ highestLevel = currentLevel; so.data.highestLevel = highestLevel; }; if (score > bestScore){ bestScore = score; so.data.bestScore = bestScore; }; fadeInOut(); if (gameWon == false){ setTimeout(cleanUp, 500); setTimeout(showInfo, 501); } else { setTimeout(showGameOverScreen, 500); }; } public function makeBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String):void{ } public function displayFPS():void{ var _local1:Date; _local1 = new Date(); fpsNewTime = _local1.getTime(); fpsElapsedTime = (fpsNewTime - fpsStartTime); fpsCounter++; if (fpsCounter == 99){ fpsCounter = 0; fps = int((100 / (fpsElapsedTime / 1000))); fpsStartTime = fpsNewTime; }; } public function gotoAndromedusWebsite(_arg1:MouseEvent):void{ var _local2:String; var _local3:URLRequest; _local2 = "http://www.andromedus.com"; _local3 = new URLRequest(_local2); navigateToURL(_local3); } public function enableMouse():void{ disableMouse = false; } public function hideCredits(_arg1:MouseEvent):void{ menu.credits.andromedus.removeEventListener(MouseEvent.MOUSE_DOWN, gotoAndromedus); menu.credits._Close_.removeEventListener(MouseEvent.MOUSE_DOWN, hideCredits); menu.credits.visible = false; } public function checkGameOver():void{ if (gameOver == true){ showGameOverScreen(); if (SuperGlobals.soundOn == true){ }; }; } public function dataReceivedHandler(_arg1:Object){ var _local2:uint; HeyzapTools.removeEventListener("globalGameData", dataReceivedHandler); globalDataObject = new Object(); globalDataObject = _arg1.global_game_data; levelInfo.infoText.text = ("Current record holder: " + globalDataObject.myArray[(currentLevel - 1)].n); levelInfo.infoText.appendText(("\nLap time: " + String(globalDataObject.myArray[(currentLevel - 1)].t))); _local2 = (currentDay - globalDataObject.myArray[(currentLevel - 1)].d); if (_local2 == 0){ levelInfo.infoText.appendText("\nDate: Today"); }; if (_local2 == 1){ levelInfo.infoText.appendText("\nDate: Yesterday"); }; if (_local2 > 1){ levelInfo.infoText.appendText((("\nDate: " + String(_local2)) + " days ago")); }; bestGhostArray[currentLevel] = inflate(globalDataObject.myArray[(currentLevel - 1)].data); } public function createHintBox(_arg1:Number, _arg2:Number, _arg3:MovieClip):void{ var _local4:MovieClip; numberOfHintBoxes++; _local4 = new hintBox_mc(); hintBoxArray[numberOfHintBoxes] = _local4; gameCanvas.addChild(hintBoxArray[numberOfHintBoxes]); hintBoxArray[numberOfHintBoxes].mouseEnabled = false; hintBoxArray[numberOfHintBoxes].mouseChildren = false; hintBoxExists = true; hintBoxArray[numberOfHintBoxes].x = _arg1; hintBoxArray[numberOfHintBoxes].y = _arg2; hintBoxArray[numberOfHintBoxes].width = 300; hintBoxArray[numberOfHintBoxes].height = 200; hintBoxArray[numberOfHintBoxes].alpha = 1; hintBoxArray[numberOfHintBoxes].message.text = _arg3.hint1.text; } public function showConfirmResetLevel(_arg1:MouseEvent):void{ if ((((((disableReset == false)) && ((gameOver == false)))) && ((gameRunning == true)))){ disableReset = true; gui.resetButton.removeEventListener(MouseEvent.MOUSE_DOWN, showConfirmResetLevel); gameRunning = false; confirmReset = new confirmReset_mc(); projectCanvas.addChild(confirmReset); confirmReset._Yes_.addEventListener(MouseEvent.MOUSE_DOWN, resetLevel); confirmReset._No_.addEventListener(MouseEvent.MOUSE_DOWN, resumeGame2); }; } public function resetGUIMessage():void{ gui.message.text = ""; } public function continueGame(_arg1:MouseEvent):void{ gameRunning = true; stage.removeEventListener(MouseEvent.MOUSE_DOWN, continueGame); gui.message.visible = false; myBall.SetXForm(new b2Vec2(myBall.m_userData.x, myBall.m_userData.y), 0); } public function gotoFacebook(_arg1:MouseEvent):void{ var _local2:String; var _local3:URLRequest; _local2 = "http://www.facebook.com/pages/Coolbuddy-Games/177306910591"; _local3 = new URLRequest(_local2); navigateToURL(_local3); } public function updatePhysics():void{ var _local1:b2Body; var _local2:*; var _local3:*; var _local4:*; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:*; var _local10:*; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:*; m_world.Step(m_timeStep, m_iterations); _local1 = m_world.m_bodyList; while (_local1) { if ((_local1.m_userData is Sprite)){ _local1.m_userData.x = (_local1.GetPosition().x / m_physScale); _local1.m_userData.y = (_local1.GetPosition().y / m_physScale); if (((((!((_local1.m_userData.id == "wall"))) && (!((_local1.m_userData.id == "puck"))))) && (!((_local1.m_userData.id == "myBall"))))){ }; if (_local1.m_userData.hasOwnProperty("spotHolder") == true){ _local2 = _local1.m_userData.spotHolder; _local3 = _local1.m_userData.rotator; _local4 = _local1.m_userData.spot; _local3.rotation = 0; _local3.height = ballRadius; _local3.width = ballRadius; _local4.rotation = 0; _local4.width = (ballRadius * 1.2); _local4.height = (ballRadius * 1.2); _local2.rotation = 0; _local2.x = _local1.m_userData.x; _local2.y = _local1.m_userData.y; _local5 = _local1.GetAngle(); _local6 = 0.1; _local7 = 0.1; _local8 = 0; vel = _local1.GetLinearVelocity(); _local9 = (((vel.x * _local6) * Math.sin(-(_local5))) + ((vel.y * _local6) * Math.cos(_local5))); _local10 = (((vel.x * _local7) * Math.cos(-(_local5))) + ((vel.y * _local7) * Math.sin(_local5))); _local3.x = (_local3.x + _local10); _local3.y = (_local3.y + _local9); _local11 = ((_local3.x * _local3.x) + (_local3.y * _local3.y)); _local12 = ((180 / Math.PI) * Math.atan2(_local3.y, _local3.x)); _local4.rotation = -(_local12); _local3.rotation = _local12; _local13 = (_local11 / (ballRadius * ballRadius)); _local3.scaleX = (1 - _local13); _local3.scaleY = 1; _local2.rotation = ((_local5 * 180) / Math.PI); if (_local11 > (ballRadius * ballRadius)){ _local3.x = (_local3.x * -1); _local3.y = (_local3.y * -1); _local3.x = (_local3.x + _local10); _local3.y = (_local3.y + _local9); }; }; if (_local1.m_userData.hasOwnProperty("roundShadow") == true){ _local1.m_userData.roundShadow.x = (_local1.GetPosition().x / m_physScale); _local1.m_userData.roundShadow.x = (_local1.m_userData.roundShadow.x + (_local1.m_userData.roundShadow.x / shadowOffset)); _local1.m_userData.roundShadow.y = (_local1.GetPosition().y / m_physScale); _local1.m_userData.roundShadow.y = (_local1.m_userData.roundShadow.y + (_local1.m_userData.roundShadow.y / shadowOffset)); }; if (_local1.m_userData.hasOwnProperty("shading") == true){ _local1.m_userData.shading.x = _local1.m_userData.x; _local1.m_userData.shading.y = _local1.m_userData.y; }; if (_local1.m_userData.hasOwnProperty("highlight") == true){ _local1.m_userData.highlight.x = _local1.m_userData.x; _local1.m_userData.highlight.x = (_local1.m_userData.highlight.x - (_local1.m_userData.highlight.x / 120)); _local1.m_userData.highlight.y = _local1.m_userData.y; _local1.m_userData.highlight.y = (_local1.m_userData.highlight.y - (_local1.m_userData.highlight.y / 120)); _local14 = 7; if (_local1.m_userData.highlight.x > (_local1.m_userData.x + _local14)){ _local1.m_userData.highlight.x = (_local1.m_userData.x + _local14); }; if (_local1.m_userData.highlight.x < (_local1.m_userData.x - _local14)){ _local1.m_userData.highlight.x = (_local1.m_userData.x - _local14); }; if (_local1.m_userData.highlight.y > (_local1.m_userData.y + _local14)){ _local1.m_userData.highlight.y = (_local1.m_userData.y + _local14); }; if (_local1.m_userData.highlight.y < (_local1.m_userData.y - _local14)){ _local1.m_userData.highlight.y = (_local1.m_userData.y - _local14); }; }; }; _local1 = _local1.m_next; }; } public function submitScore(_arg1:MouseEvent):void{ var leaderboardID:Array; var o:Object; var boardID:String; var e = _arg1; gameOverScreen._Submit_.visible = false; if (ghostMode == true){ if (currentLevel == 1){ leaderboardID = [11, 7, 3, 10, 7, 14, 5, 5, 1, 13, 6, 4, 15, 6, 12, 12]; }; if (currentLevel == 2){ leaderboardID = [12, 9, 5, 6, 9, 13, 14, 11, 0, 11, 15, 14, 13, 13, 7, 7]; }; if (currentLevel == 3){ leaderboardID = [15, 2, 7, 3, 0, 9, 4, 2, 13, 3, 9, 4, 9, 0, 2, 4]; }; if (currentLevel == 4){ leaderboardID = [3, 3, 7, 6, 10, 5, 9, 3, 1, 2, 3, 1, 5, 9, 0, 6]; }; if (currentLevel == 5){ leaderboardID = [11, 3, 5, 1, 3, 11, 7, 1, 6, 11, 10, 13, 4, 6, 9, 5]; }; o = {n:leaderboardID, f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID, score:bestLap}); }; if (multiMode == true){ gameOverScreen.submitGhost.visible = true; gameOverScreen.submitGhost.playerName.addEventListener(MouseEvent.CLICK, clearTextInput); gameOverScreen.submitGhost._Save_.addEventListener(MouseEvent.CLICK, sendGhost); gameOverScreen.submitGhost._Back_.addEventListener(MouseEvent.CLICK, removeSubmitGhost); }; } public function hideAllIcons():void{ levelSelect.i1.visible = false; levelSelect.i2.visible = false; levelSelect.i3.visible = false; levelSelect.i4.visible = false; levelSelect.i5.visible = false; levelSelect.trackName.text = ""; } public function showInfo():void{ levelInfo = new levelInfo_mc(); projectCanvas.addChild(levelInfo); levelInfo.level.text = (("Level " + String(currentLevel)) + " "); if (aiMode == true){ levelInfo.infoText.text = (("Head to head race over " + String(numLaps[currentLevel])) + " laps. Pick up boost packs to replenish your boost level. Your remaining boost is shown at the top left."); }; if (ghostMode == true){ levelInfo.infoText.text = "3 laps against the ghost of your best lap.\nUnlimited boost available.\nSelect quit at any time to submit your score to leaderboard."; }; if (multiMode == true){ levelInfo.infoText.text = ""; getGlobalGhostData(); }; levelInfo._Continue_.addEventListener(MouseEvent.MOUSE_DOWN, fadeInfoOut); levelInfo._Back_.addEventListener(MouseEvent.MOUSE_DOWN, fadeInfoToLevelSelect); levelInfo._More_Games_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); } public function makeWall(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:squareShadow_mc; var _local14:*; _local6 = 0; if ((((_arg5 < 0)) && ((_arg5 >= -90)))){ _local6 = ((Math.PI / 180) * Math.abs(_arg5)); } else { if ((((_arg5 < -90)) && ((_arg5 >= -180)))){ _local6 = ((Math.PI / 180) * (180 - Math.abs(_arg5))); } else { if ((((_arg5 > 90)) && ((_arg5 <= 180)))){ _local6 = ((Math.PI / 180) * (360 - Math.abs(_arg5))); } else { _local6 = ((Math.PI / 180) * Math.abs(_arg5)); }; }; }; _local7 = Math.cos(_local6); _local8 = Math.sin(_local6); _local9 = _arg3; _local10 = _arg4; _arg4 = (((_local10 * _local7) - (_local9 * _local8)) / ((_local7 * _local7) - (_local8 * _local8))); _arg3 = ((_local9 - (_arg4 * _local8)) / _local7); _local11 = new b2BodyDef(); _local12 = new b2PolygonDef(); _local12.SetAsBox(((m_physScale * _arg3) / 2), ((m_physScale * _arg4) / 2)); _local12.friction = 0.97; _local12.restitution = 0.2; _local12.density = 0; _local11.position.Set((m_physScale * _arg1), (m_physScale * _arg2)); _local11.angle = ((_arg5 * Math.PI) / 180); _local11.userData = new wall_mc(); _local11.userData.width = _arg3; _local11.userData.height = _arg4; _local11.userData.x = _arg1; _local11.userData.y = _arg2; _local11.userData.rotation = (_local11.angle * (180 / Math.PI)); _local11.userData.id = "wall"; gameCanvas.addChild(_local11.userData); _local11.userData.squareShadow = new squareShadow_mc(); _local11.userData.squareShadow.width = _arg3; _local11.userData.squareShadow.height = _arg4; _local11.userData.squareShadow.x = _arg1; _local11.userData.squareShadow.y = _arg2; _local11.userData.squareShadow.rotation = (_local11.angle * (180 / Math.PI)); _local14 = m_world.CreateBody(_local11); _local14.CreateShape(_local12); } public function moveBall():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Point; var _local10:Point; if (launched == true){ if (((mouseIsDown) && ((boosts > 0)))){ trail1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0xFF, 0xFF, -255, 0); _local1 = boostSpeed; if (aiMode == true){ boosts--; }; if (boostOn == false){ boostOn = true; if (SuperGlobals.soundOn == true){ boostChannel = boostSound.play(0, 1000); }; }; } else { _local1 = ballSpeed; }; if (boosts <= 0){ boosts = 0; boostOn = false; boostChannel.stop(); trail1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0); }; _local3 = (gameCanvas.mouseY - myBall.m_userData.y); _local4 = (gameCanvas.mouseX - myBall.m_userData.x); _local5 = (((gameCanvas.mouseX - myBall.m_userData.x) * _local4) + (_local3 * _local3)); if (_local5 > 100){ _local2 = _local1; } else { _local2 = 0; }; _local6 = Math.atan2(_local4, _local3); _local7 = (_local2 * Math.cos(_local6)); _local8 = (_local2 * Math.sin(_local6)); myBall.ApplyForce(new b2Vec2(_local8, _local7), myBall.GetPosition()); } else { if (aiMode == true){ _local9 = new Point(((myBall.m_userData.x + aiBall.m_userData.x) / 2), myBall.m_userData.y); } else { _local9 = new Point(myBall.m_userData.x, myBall.m_userData.y); }; _local10 = ballCanvas.localToGlobal(_local9); launchButton.x = _local10.x; launchButton.y = (_local10.y - 30); }; } public function gotoAndromedus(_arg1:MouseEvent):void{ var _local2:String; var _local3:URLRequest; _local2 = "http://www.andromedus.com"; _local3 = new URLRequest(_local2); navigateToURL(_local3); } public function playIntroMusic():void{ } public function createBattery(_arg1:Number, _arg2:Number):void{ var _local3:battery_mc; if (aiMode == true){ _local3 = new battery_mc(); gameCanvas.addChild(_local3); _local3.x = (_arg1 * trackScale); _local3.y = (_arg2 * trackScale); _local3.visible = false; batteryArray.push(_local3); }; } public function showIcon(_arg1:MouseEvent):void{ var _local2:*; _local2 = parseInt(_arg1.target.name.substring("level".length)); if (_local2 == 1){ hideAllIcons(); levelSelect.i1.visible = true; levelSelect.trackName.text = "1. Orion"; }; if (_local2 == 2){ hideAllIcons(); levelSelect.i2.visible = true; levelSelect.trackName.text = "2. Andromeda"; }; if (_local2 == 3){ hideAllIcons(); levelSelect.i3.visible = true; levelSelect.trackName.text = "3. Pegasus"; }; if (_local2 == 4){ hideAllIcons(); levelSelect.i4.visible = true; levelSelect.trackName.text = "4. Crux"; }; if (_local2 == 5){ hideAllIcons(); levelSelect.i5.visible = true; levelSelect.trackName.text = "5. Aquila"; }; } public function makeMyBall(_arg1:Number, _arg2:Number){ var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:Sprite; var _local8:Sprite; var _local9:*; var _local10:ballMask_mc; var _local11:roundShadow_mc; var _local12:ballShading_mc; var _local13:highlight_mc; _arg1 = (_arg1 * trackScale); _arg2 = (_arg2 * trackScale); _local3 = (myBallRadius * 2); _local4 = (myBallRadius * 2); _local5 = new b2BodyDef(); _local6 = new b2CircleDef(); _local6.radius = ((m_physScale * _local3) / 2); _local6.friction = 20; _local6.density = 0.005; _local6.restitution = 0.4; _local5.userData = new myBall_mc(); _local5.userData.id = "myBall"; _local5.userData.startX = _arg1; _local5.userData.startY = _arg2; _local5.userData.hasCollided = true; _local5.userData.rotating = false; _local5.linearDamping = 3; _local5.angularDamping = 10; _local5.position.Set((m_physScale * _arg1), (m_physScale * _arg2)); _local5.userData.x = _arg1; _local5.userData.y = _arg2; _local5.userData.width = (myBallRadius * 2); _local5.userData.height = (myBallRadius * 2); _local7 = new Sprite(); _local7.x = _arg1; _local7.y = _arg2; _local5.userData.spotHolder = _local7; _local8 = new Sprite(); _local7.addChild(_local8); _local8.x = (((Math.random() * myBallRadius) / 2) - (myBallRadius / 2)); _local8.y = (((Math.random() * myBallRadius) / 2) - (myBallRadius / 2)); _local5.userData.rotator = _local8; _local9 = new ballSpot_mc(); _local8.addChild(_local9); _local5.userData.spot = _local9; _local9.width = myBallRadius; _local9.height = myBallRadius; _local10 = new ballMask_mc(); _local7.addChild(_local10); _local10.width = (myBallRadius * 2); _local10.height = (myBallRadius * 2); _local9.mask = _local10; _local5.userData.roundShadow = new roundShadow2_mc(); _local5.userData.roundShadow.alpha = 1; _local5.userData.roundShadow.width = (myBallRadius * 2.2); _local5.userData.roundShadow.height = (myBallRadius * 2.2); ballCanvas.addChildAt(_local5.userData.roundShadow, 0); ballCanvas.addChild(_local5.userData); ballCanvas.addChild(_local7); _local5.userData.shading = new ballShading_mc(); ballCanvas.addChild(_local5.userData.shading); _local5.userData.shading.width = (2 * myBallRadius); _local5.userData.shading.height = (2 * myBallRadius); _local5.userData.highlight = new highlight_mc(); _local5.userData.highlight.width = (myBallRadius * 0.7); _local5.userData.highlight.height = (myBallRadius * 0.7); _local5.userData.highlight.alpha = 1; ballCanvas.addChild(_local5.userData.highlight); _local5.isBullet = true; _local5.userData.body = m_world.CreateBody(_local5); _local5.userData.body.CreateShape(_local6); myBall = _local5.userData.body; _local5.userData.body.SetMassFromShapes(); _local5.userData.body.IsDynamic(); } public function mouseUpHandler(_arg1:MouseEvent):void{ mouseIsDown = false; waitForMouseUp = false; boostOn = false; boostChannel.stop(); trail1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0); } public function timeFailed(_arg1:IOErrorEvent):void{ timeLoader.removeEventListener(Event.COMPLETE, timeRetrieved); timeLoader.removeEventListener(IOErrorEvent.IO_ERROR, timeFailed); currentDay = 1000000; } public function showScores(_arg1:MouseEvent):void{ var track:String; var leaderboardID:Array; var o:Object; var boardID:String; var e = _arg1; track = e.target.parent.name; if (track == "_Orion_"){ leaderboardID = [11, 7, 3, 10, 7, 14, 5, 5, 1, 13, 6, 4, 15, 6, 12, 12]; }; if (track == "_Andromeda_"){ leaderboardID = [12, 9, 5, 6, 9, 13, 14, 11, 0, 11, 15, 14, 13, 13, 7, 7]; }; if (track == "_Pegasus_"){ leaderboardID = [15, 2, 7, 3, 0, 9, 4, 2, 13, 3, 9, 4, 9, 0, 2, 4]; }; if (track == "_Crux_"){ leaderboardID = [3, 3, 7, 6, 10, 5, 9, 3, 1, 2, 3, 1, 5, 9, 0, 6]; }; if (track == "_Aquila_"){ leaderboardID = [11, 3, 5, 1, 3, 11, 7, 1, 6, 11, 10, 13, 4, 6, 9, 5]; }; o = {n:leaderboardID, f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID}); } public function flashScoreOff():void{ gui.lives.visible = false; } public function processGameFunctions():void{ displayFPS(); updateTime(); moveBall(); drawTrail(); moveAI(); updatePhysics(); moveCamera(); recordGhost(); playGhost(); checkLapComplete(); moveBackground(); updateGUI(); checkLevelWon(); checkGameOver(); updateBoost(); } public function removeGameOverScreen(_arg1:MouseEvent):void{ submitSuccess = false; gameOverScreen._Quit_to_Menu_.removeEventListener(MouseEvent.MOUSE_DOWN, removeGameOverScreen); gameOverScreen._Submit_.removeEventListener(MouseEvent.MOUSE_DOWN, submitScore); gameOverScreen._Try_Again_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Coolbuddy$com_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Facebook_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); setTimeout(removeGameOverScreenPartTwo, 1000); exitGame(); } public function fadeInfoOut(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(removeInfo, 500); setTimeout(initialiseGame, 501); } public function setGlobalGhostData(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Array):void{ var _local6:Object; _arg5 = deflate(_arg5); _local6 = new Object(); _local6 = {n:_arg2, t:_arg3, d:_arg4, data:_arg5}; globalDataObject.myArray[(_arg1 - 1)] = _local6; HeyzapTools.send("setGlobalGameData", {global_game_data:globalDataObject}); HeyzapTools.addEventListener("globalGameDataSaved", dataSentHandler); } public function makeAIBall(_arg1:Number, _arg2:Number){ var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:Sprite; var _local8:Sprite; var _local9:*; var _local10:ballMask_mc; var _local11:roundShadow_mc; var _local12:ballShading_mc; var _local13:highlight_mc; _arg1 = (_arg1 * trackScale); _arg2 = (_arg2 * trackScale); _local3 = (myBallRadius * 2); _local4 = (myBallRadius * 2); _local5 = new b2BodyDef(); _local6 = new b2CircleDef(); _local6.radius = ((m_physScale * _local3) / 2); _local6.friction = 20; _local6.density = 0.005; _local6.restitution = 0.4; _local5.userData = new aiBall_mc(); _local5.userData.id = "aiBall"; _local5.userData.startX = _arg1; _local5.userData.startY = _arg2; _local5.userData.hasCollided = true; _local5.userData.rotating = false; _local5.linearDamping = 3; _local5.angularDamping = 10; _local5.position.Set((m_physScale * _arg1), (m_physScale * _arg2)); _local5.userData.x = _arg1; _local5.userData.y = _arg2; _local5.userData.width = (myBallRadius * 2); _local5.userData.height = (myBallRadius * 2); _local7 = new Sprite(); _local7.x = _arg1; _local7.y = _arg2; _local5.userData.spotHolder = _local7; _local8 = new Sprite(); _local7.addChild(_local8); _local8.x = (((Math.random() * myBallRadius) / 2) - (myBallRadius / 2)); _local8.y = (((Math.random() * myBallRadius) / 2) - (myBallRadius / 2)); _local5.userData.rotator = _local8; _local9 = new ballSpot_mc(); _local8.addChild(_local9); _local5.userData.spot = _local9; _local9.width = myBallRadius; _local9.height = myBallRadius; _local10 = new ballMask_mc(); _local7.addChild(_local10); _local10.width = (myBallRadius * 2); _local10.height = (myBallRadius * 2); _local9.mask = _local10; _local5.userData.roundShadow = new roundShadow2_mc(); _local5.userData.roundShadow.alpha = 1; _local5.userData.roundShadow.width = (myBallRadius * 2.2); _local5.userData.roundShadow.height = (myBallRadius * 2.2); ballCanvas.addChildAt(_local5.userData.roundShadow, 0); ballCanvas.addChild(_local5.userData); ballCanvas.addChild(_local7); _local5.userData.shading = new ballShading_mc(); ballCanvas.addChild(_local5.userData.shading); _local5.userData.shading.width = (2 * myBallRadius); _local5.userData.shading.height = (2 * myBallRadius); _local5.userData.highlight = new highlight_mc(); _local5.userData.highlight.width = (myBallRadius * 0.7); _local5.userData.highlight.height = (myBallRadius * 0.7); _local5.userData.highlight.alpha = 1; ballCanvas.addChild(_local5.userData.highlight); _local5.isBullet = true; _local5.userData.body = m_world.CreateBody(_local5); _local5.userData.body.CreateShape(_local6); aiBall = _local5.userData.body; _local5.userData.body.SetMassFromShapes(); _local5.userData.body.IsDynamic(); } public function gameLoop(_arg1:Event):void{ if (gameRunning == true){ processGameFunctions(); }; } public function disableControls():void{ stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler); stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } public function checkLapComplete():void{ var _local1:Boolean; if (aiMode == true){ if ((((((((startLine.hitzone.hitTestObject(aiBall.m_userData) == true)) && ((aiStartLineCrossed == false)))) && ((aiCheck1Crossed == true)))) && ((launched == true)))){ aiStartLineCrossed = true; aiCheck1Crossed = false; aiLap++; if (aiLap > numLaps[currentLevel]){ showGameOverScreen(); }; }; if ((((check1.hitTestObject(aiBall.m_userData) == true)) && ((aiCheck1Crossed == false)))){ aiCheck1Crossed = true; aiStartLineCrossed = false; }; }; if ((((((((((startLine.hitzone.hitTestObject(myBall.m_userData) == true)) && ((startLineCrossed == false)))) && ((check1Crossed == true)))) && ((check2Crossed == true)))) && ((launched == true)))){ if (raceStarted == false){ raceStarted = true; }; if (lap <= (batteryArray.length - 1)){ batteryArray[lap].visible = true; }; startLineCrossed = true; check1Crossed = false; check2Crossed = false; lap++; if (multiMode == false){ gui.lap.text = ((String(lap) + " / ") + String(numLaps[currentLevel])); } else { gui.lap.text = String(lap); }; frameCounter = 0; _local1 = false; if ((((lap == 2)) || ((((lap > 2)) && ((lapTimer < bestLap)))))){ _local1 = true; }; if (_local1 == true){ bestLap = lapTimer; gui.bestLap.text = gui.lapTime.text; if (ghostMode == true){ bestGhostArray[currentLevel] = ghostArray; }; gui.message.appendText("New Fastest Lap!"); }; if ((((multiMode == true)) && ((lap > 1)))){ if ((((bestLap < globalDataObject.myArray[(currentLevel - 1)].t)) || ((currentDay > globalDataObject.myArray[(currentLevel - 1)].d)))){ bestGhostArray[currentLevel] = ghostArray; showGameOverScreen(); }; }; if ((((aiMode == true)) && ((lap == numLaps[currentLevel])))){ gui.message.appendText("\nLast Lap"); }; if ((((aiMode == true)) && ((lap > numLaps[currentLevel])))){ raceWon = true; showGameOverScreen(); }; if ((((ghostMode == true)) && ((lap > 3)))){ showGameOverScreen(); }; lapTimer = 0; ghostArray = new Array(); if (recordAI == true){ trace(waypointArray[currentLevel]); waypointArray[currentLevel] = new Array(); trace("\n\nEnd of data\n\n"); }; if ((((lap > 1)) && ((ghostMode == true)))){ trail2.visible = true; }; setTimeout(resetGUIMessage, 2000); }; if ((((check1.hitTestObject(myBall.m_userData) == true)) && ((check1Crossed == false)))){ check1Crossed = true; }; if ((((((check2.hitTestObject(myBall.m_userData) == true)) && ((check2Crossed == false)))) && ((check1Crossed == true)))){ check2Crossed = true; startLineCrossed = false; }; } public function resumeGame(_arg1:MouseEvent):void{ disableReset = false; gameRunning = true; projectCanvas.removeChild(confirmQuit); confirmQuit._Yes_.removeEventListener(MouseEvent.MOUSE_DOWN, quitGame); confirmQuit._No_.removeEventListener(MouseEvent.MOUSE_DOWN, resumeGame); gui.quitButton.addEventListener(MouseEvent.MOUSE_DOWN, showConfirmQuit); stage.focus = stage; disableMouse = true; setTimeout(enableMouse, 500); } public function retryLevel(_arg1:MouseEvent):void{ if (ghostMode == false){ submitSuccess = false; gameOverScreen._Try_Again_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Next_Track_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Quit_to_Menu_.removeEventListener(MouseEvent.MOUSE_DOWN, removeGameOverScreen); gameOverScreen._Submit_.removeEventListener(MouseEvent.MOUSE_DOWN, submitScore); gameOverScreen._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Coolbuddy$com_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Facebook_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); projectCanvas.removeChild(gameOverScreen); cleanUp(); setInitialVariables(); retrying = true; showInfo(); } else { gameOverScreen._Try_Again_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Next_Track_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Quit_to_Menu_.removeEventListener(MouseEvent.MOUSE_DOWN, removeGameOverScreen); gameOverScreen._Submit_.removeEventListener(MouseEvent.MOUSE_DOWN, submitScore); gameOverScreen._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Coolbuddy$com_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Facebook_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); gameRunning = false; fadeInOut(); setTimeout(removeGameOverScreenPartTwo, 500); setTimeout(cleanUp, 501); gameWon = false; setTimeout(showModeSelect, 502); }; } public function fadeInAwards(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(removeMenu, 500); setTimeout(showAwards, 501); } public function deleteBody(_arg1):void{ if (cleaned == false){ if (_arg1.hasOwnProperty("m_userData")){ if (_arg1.m_userData != null){ if (_arg1.m_userData.hasOwnProperty("roundShadow")){ gameCanvas.removeChild(_arg1.m_userData.roundShadow); }; if (_arg1.m_userData.hasOwnProperty("squareShadow")){ gameCanvas.removeChild(_arg1.m_userData.squareShadow); }; if (_arg1.m_userData.hasOwnProperty("highlight")){ gameCanvas.removeChild(_arg1.m_userData.highlight); }; gameCanvas.removeChild(_arg1.m_userData); _arg1.m_userData = null; m_world.DestroyBody(_arg1); }; }; }; } public function scrollMenuStars(_arg1:Event):void{ var _local2:*; var _local3:*; var _local4:MovieClip; var _local5:uint; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:*; var _local12:*; var _local13:*; _local2 = menuStars.bg1; _local3 = menuStars.bg2; _local2.y = (_local2.y + 0.6); _local3.y = (_local3.y + 0.9); _local5 = 1; while (_local5 <= 2) { if (_local5 == 1){ _local4 = _local2; }; if (_local5 == 2){ _local4 = _local3; }; _local6 = new Point(_local4.a.x, _local4.a.y); _local7 = _local4.localToGlobal(_local6); _local8 = new Point(_local4.b.x, _local4.b.y); _local9 = _local4.localToGlobal(_local8); _local10 = new Point(_local4.c.x, _local4.c.y); _local11 = _local4.localToGlobal(_local10); _local12 = new Point(_local4.d.x, _local4.d.y); _local13 = _local4.localToGlobal(_local12); if (_local7.x < -640){ _local4.a.x = (_local4.b.x + 640); _local4.c.x = (_local4.d.x + 640); }; if (_local7.x > 640){ _local4.a.x = (_local4.b.x - 640); _local4.c.x = (_local4.d.x - 640); }; if (_local9.x < -640){ _local4.b.x = (_local4.a.x + 640); _local4.d.x = (_local4.c.x + 640); }; if (_local9.x > 640){ _local4.b.x = (_local4.a.x - 640); _local4.d.x = (_local4.c.x - 640); }; if (_local7.y < -480){ _local4.a.y = (_local4.c.y + 480); _local4.b.y = (_local4.d.y + 480); }; if (_local7.y > 480){ _local4.a.y = (_local4.c.y - 480); _local4.b.y = (_local4.d.y - 480); }; if (_local11.y < -480){ _local4.c.y = (_local4.a.y + 480); _local4.d.y = (_local4.b.y + 480); }; if (_local11.y > 480){ _local4.c.y = (_local4.a.y - 480); _local4.d.y = (_local4.b.y - 480); }; _local5++; }; } public function loseBlack():void{ stage.removeChild(blackScreen); } public function sendFailed():void{ if (testingSendSuccess == true){ gameOverScreen.submitGhost.message.text = "Saving failed. Please try again,"; gameOverScreen.submitGhost._Save_.addEventListener(MouseEvent.CLICK, sendGhost); gameOverScreen.submitGhost._Save_.alpha = 1; testingSendSuccess = false; }; } public function showConfirmQuit(_arg1:MouseEvent):void{ if ((((disableReset == false)) && ((gameOver == false)))){ disableReset = true; gameRunning = false; gui.quitButton.removeEventListener(MouseEvent.MOUSE_DOWN, showConfirmQuit); if (ghostMode == false){ confirmQuit = new confirmQuit_mc(); projectCanvas.addChild(confirmQuit); confirmQuit._Yes_.addEventListener(MouseEvent.MOUSE_DOWN, quitGame); confirmQuit._No_.addEventListener(MouseEvent.MOUSE_DOWN, resumeGame); } else { showGameOverScreen(); }; }; } public function inflate(_arg1:Array):Array{ var _local2:Array; var _local3:uint; var _local4:int; var _local5:int; _local2 = new Array(); _local2[0] = _arg1[0]; _local2[1] = _arg1[1]; _local3 = 2; while (_local3 < (_arg1.length - 2)) { if (((!((_local3 == (_arg1.length - 3)))) || ((_arg1[(_arg1.length - 1)] == 1)))){ _local4 = ((_arg1[_local3] + _arg1[(_local3 - 2)]) / 2); _local5 = ((_arg1[(_local3 + 1)] + _arg1[(_local3 - 1)]) / 2); _local2.push(_local4); _local2.push(_local5); }; _local2.push(_arg1[_local3]); _local2.push(_arg1[(_local3 + 1)]); _local3 = (_local3 + 2); }; return (_local2); } public function flashScoreOn():void{ gui.lives.visible = true; } public function showMenu():void{ var _local1:SoundTransform; soundToggle.x = 608; soundToggle.y = 450; musicToggle.x = 13; musicToggle.y = 443; if (menuMusicPlaying == false){ musicChannel.stop(); menuMusicPlaying = true; musicChannel = menuMusic.play(0, 100); _local1 = new SoundTransform(0, 0); musicChannel.soundTransform = _local1; stage.addEventListener(Event.ENTER_FRAME, fadeInMenuMusic); }; if (menuStarsAdded == false){ addMenuStars(); }; menu = new menu_mc(); projectCanvas.addChild(menu); menu.credits.visible = false; if (securityOn == true){ if (((!((currentURL.indexOf(allowedURL, 0) == -1))) || (!((currentURL.indexOf(allowedLocal, 0) == -1))))){ menu._Play_.addEventListener(MouseEvent.MOUSE_DOWN, fadeInModeSelect); } else { menu.warningMessage.text = "Please go to Andromedus.com to play this game"; }; } else { menu._Play_.addEventListener(MouseEvent.MOUSE_DOWN, fadeInModeSelect); }; menu._Hiscores_.addEventListener(MouseEvent.MOUSE_DOWN, fadeInHiscoreSelect); menu._Coolbuddy$com_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); menu._More_Games_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); menu._Credits_.addEventListener(MouseEvent.MOUSE_DOWN, showCredits); if (textEffectAdded == false){ stage.addEventListener(Event.ENTER_FRAME, runTextEffect); textEffectAdded = true; }; } public function initialiseSoundToggle():void{ soundToggle.addEventListener(MouseEvent.MOUSE_OVER, soundOver); soundToggle.addEventListener(MouseEvent.MOUSE_OUT, soundUp); soundToggle.addEventListener(MouseEvent.MOUSE_DOWN, toggleSound); } public function runTextEffect(_arg1:Event):void{ if (textPhase == 0){ initWord(); }; if (textPhase == 1){ displayWord(); }; if (textPhase == 2){ holdWord(); }; } public function setupArrays(){ numLaps[1] = 3; numLaps[2] = 3; numLaps[3] = 4; numLaps[4] = 5; numLaps[5] = 4; aiSpeed[1] = 4; aiSpeed[2] = 4.5; aiSpeed[3] = 4.5; aiSpeed[4] = 5; aiSpeed[5] = 5; } public function removeMenuStars():void{ stage.removeEventListener(Event.ENTER_FRAME, scrollMenuStars); projectCanvas.removeChild(menuStars); menuStars = null; menuStarsAdded = false; } public function toggleSound(_arg1:MouseEvent):void{ if (SuperGlobals.soundOn == true){ SuperGlobals.soundOn = false; soundToggle.gotoAndStop("offOver"); } else { SuperGlobals.soundOn = true; soundToggle.gotoAndStop("onOver"); }; } public function fadeInLevelSelect():void{ fadeInOut(); setTimeout(removeModeSelect, 500); setTimeout(showLevelSelect, 501); } public function removeBlackScreen(_arg1:TweenEvent):void{ fadeOutTween.removeEventListener(TweenEvent.MOTION_FINISH, removeBlackScreen); stage.removeChild(blackScreen); } public function exitGame():void{ gameRunning = false; fadeInOut(); setTimeout(cleanUp, 500); gameWon = false; setTimeout(showMenu, 501); } public function removeSubmitGhost(_arg1:MouseEvent):void{ gameOverScreen.submitGhost.visible = false; gameOverScreen.submitGhost._Back_.removeEventListener(MouseEvent.CLICK, removeSubmitGhost); testingSendSuccess = false; } public function moveCamera():void{ var _local1:*; var _local2:*; _local1 = (-(myBall.m_userData.x) + (320 / cameraScale)); _local2 = (-(myBall.m_userData.y) + (240 / cameraScale)); gameCanvas.x = (gameCanvas.x + ((_local1 - gameCanvas.x) / 4)); gameCanvas.y = (gameCanvas.y + ((_local2 - gameCanvas.y) / 4)); ballCanvas.x = gameCanvas.x; ballCanvas.y = gameCanvas.y; } public function createSection(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String):void{ var _local6:String; var _local7:Class; var _local8:*; var _local9:Array; var _local10:MovieClip; var _local11:vertex_mc; var _local12:Point; var _local13:Point; var _local14:*; var _local15:*; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:*; var _local21:*; var _local22:*; var _local23:*; var _local24:*; var _local25:*; _local6 = (_arg5 + "_mc"); _local7 = (getDefinitionByName(_local6) as Class); _local8 = new (_local7); if ((((_arg5 == "h")) && ((_arg3 > _local8.width)))){ _local16 = Math.round((_arg3 / _local8.width)); _local17 = 0; while (_local17 < _local16) { _local8 = new h_mc(); trackCanvas.addChild(_local8); _local8.x = (((_arg1 + (_local8.width * _local17)) - ((_local8.width * (_local16 - 1)) / 2)) * trackScale); _local8.y = (_arg2 * trackScale); _local8.width = (_local8.width * trackScale); _local8.height = (_local8.height * trackScale); _local17++; }; } else { if ((((_arg5 == "v")) && ((_arg4 > _local8.height)))){ _local18 = Math.round((_arg4 / _local8.height)); _local19 = 0; while (_local19 < _local18) { _local8 = new v_mc(); trackCanvas.addChild(_local8); _local8.x = (_arg1 * trackScale); _local8.y = (((_arg2 + (_local8.height * _local19)) - ((_local8.height * (_local18 - 1)) / 2)) * trackScale); _local8.width = (_local8.width * trackScale); _local8.height = (_local8.height * trackScale); _local19++; }; } else { trackCanvas.addChild(_local8); _local8.x = (_arg1 * trackScale); _local8.y = (_arg2 * trackScale); _local8.width = (_local8.width * trackScale); _local8.height = (_local8.height * trackScale); }; }; _local9 = new Array(); if (_arg5 == "s7"){ _local10 = new c90_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "s9"){ _local10 = new c90_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); _local10.rotation = 90; }; if (_arg5 == "s3"){ _local10 = new c90_phys(); _local10.rotation = 180; _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "s1"){ _local10 = new c90_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); _local10.rotation = 270; }; if (_arg5 == "v"){ _local10 = new str_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "x"){ _local10 = new x_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "d45"){ _local10 = new d_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "d135"){ _local10 = new d_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = 90; }; if (_arg5 == "h"){ _local10 = new str_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = 90; }; if (_arg5 == "s74"){ _local10 = new c45_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "s78"){ _local10 = new c135_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = -90; }; if (_arg5 == "s98"){ _local10 = new c45_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = 90; }; if (_arg5 == "s96"){ _local10 = new c135_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); }; if (_arg5 == "s36"){ _local10 = new c45_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); _local10.rotation = 180; }; if (_arg5 == "s32"){ _local10 = new c135_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = 90; }; if (_arg5 == "s12"){ _local10 = new c45_phys(); _local10.height = (_arg3 * trackScale); _local10.width = (_arg4 * trackScale); _local10.rotation = -90; }; if (_arg5 == "s14"){ _local10 = new c135_phys(); _local10.height = (_arg4 * trackScale); _local10.width = (_arg3 * trackScale); _local10.rotation = 180; }; _local10.x = (_arg1 * trackScale); _local10.y = (_arg2 * trackScale); _local14 = 0; while (_local14 < _local10.a.numChildren) { _local20 = _local10.a.getChildAt(_local14); _local12 = new Point(_local20.x, _local20.y); _local13 = _local10.a.localToGlobal(_local12); _local9.push((m_physScale * _local13.x)); _local9.push((m_physScale * _local13.y)); _local14++; }; makeEdge(0, 0, _local9); _local9 = new Array(); _local15 = 0; while (_local15 < _local10.b.numChildren) { _local21 = _local10.b.getChildAt(_local15); _local12 = new Point(_local21.x, _local21.y); _local13 = _local10.b.localToGlobal(_local12); _local9.push((m_physScale * _local13.x)); _local9.push((m_physScale * _local13.y)); _local15++; }; makeEdge(0, 0, _local9); if (_arg5 == "x"){ _local9 = new Array(); _local22 = 0; while (_local22 < _local10.c.numChildren) { _local24 = _local10.c.getChildAt(_local22); _local12 = new Point(_local24.x, _local24.y); _local13 = _local10.c.localToGlobal(_local12); _local9.push((m_physScale * _local13.x)); _local9.push((m_physScale * _local13.y)); _local22++; }; makeEdge(0, 0, _local9); _local9 = new Array(); _local23 = 0; while (_local23 < _local10.d.numChildren) { _local25 = _local10.d.getChildAt(_local23); _local12 = new Point(_local25.x, _local25.y); _local13 = _local10.d.localToGlobal(_local12); _local9.push((m_physScale * _local13.x)); _local9.push((m_physScale * _local13.y)); _local23++; }; makeEdge(0, 0, _local9); }; } public function resumeGame2(_arg1:MouseEvent):void{ disableReset = false; gameRunning = true; projectCanvas.removeChild(confirmReset); confirmReset._Yes_.removeEventListener(MouseEvent.MOUSE_DOWN, resetLevel); confirmReset._No_.removeEventListener(MouseEvent.MOUSE_DOWN, resumeGame2); gui.resetButton.addEventListener(MouseEvent.MOUSE_DOWN, showConfirmResetLevel); stage.focus = stage; disableMouse = true; setTimeout(enableMouse, 500); } public function setGameOver():void{ gameOver = true; } public function storeHints():void{ hint[1] = "Use the mouse to aim and fire bullets at objects on the screen."; hint[2] = "Use the left and right arrow keys (or A and D) to move your cannon left or right"; hint[3] = ""; hint[4] = "Watch out for Kinetroids - they will try to push your puck over the blue lines!"; hint[5] = "Use the up arrow (or W) to increase the vertical speed"; hint[6] = "Get more points for firing less discs"; hint[7] = "Get each puck to the target with the same colour."; hint[8] = "Get a new life for every 4000 points"; hint[9] = "There are 30 levels - can you clear them all?"; hint[30] = "Final level !!"; } public function lockLevels():void{ var _local1:int; var _local2:String; var _local3:*; var _local4:DisplayObject; var _local5:padlock_mc; var _local6:DropShadowFilter; _local1 = 0; _local3 = 0; while (_local3 < levelSelect.levelButtonHolder.numChildren) { _local4 = levelSelect.levelButtonHolder.getChildAt(_local3); if ((_local4 is levelThumb)){ _local1++; if ((((((_local1 > alwaysUnlocked)) && ((_local1 > highestLevel)))) && ((_local4.visible == true)))){ _local5 = new padlock_mc(); levelSelect.levelButtonHolder.addChild(_local5); _local6 = new DropShadowFilter(); _local6.distance = 3; _local6.angle = 45; _local6.strength = 0.8; _local5.filters = [_local6]; _local5.mouseEnabled = false; _local5.x = (_local4.x - 5); _local5.y = (_local4.y - 5); }; }; _local3++; }; } public function soundOver(_arg1:MouseEvent):void{ if (SuperGlobals.soundOn == true){ soundToggle.gotoAndStop("onOver"); } else { soundToggle.gotoAndStop("offOver"); }; } public function removeLevelSelect():void{ levelSelect._Back_.removeEventListener(MouseEvent.MOUSE_DOWN, removeLevelSelect); levelSelect.levelButtonHolder.removeEventListener(MouseEvent.MOUSE_DOWN, selectLevel); levelSelect.levelButtonHolder.removeEventListener(MouseEvent.MOUSE_OVER, showIcon); levelSelect.levelButtonHolder.removeEventListener(MouseEvent.MOUSE_OUT, hideIcon); levelSelect._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); projectCanvas.removeChild(levelSelect); } public function showLevelSelect():void{ levelSelect = new levelSelect_mc(); projectCanvas.addChild(levelSelect); hideAllIcons(); levelSelect.i1.visible = true; levelSelect.trackName.text = "1. Orion"; if (aiMode == true){ lockLevels(); }; levelSelect._Back_.addEventListener(MouseEvent.MOUSE_DOWN, backToModeSelect); levelSelect.levelButtonHolder.addEventListener(MouseEvent.MOUSE_DOWN, selectLevel); levelSelect.levelButtonHolder.addEventListener(MouseEvent.MOUSE_OVER, showIcon); levelSelect.levelButtonHolder.addEventListener(MouseEvent.MOUSE_OUT, hideIcon); levelSelect._More_Games_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); } public function addMenuStars():void{ menuStars = new menuStars_mc(); projectCanvas.addChild(menuStars); stage.addEventListener(Event.ENTER_FRAME, scrollMenuStars); menuStarsAdded = true; } public function end_preload():void{ removeEventListener(Event.ENTER_FRAME, loader); _Continue_.visible = true; if (onKong == false){ _Continue_.addEventListener(MouseEvent.MOUSE_DOWN, removeAd); } else { gotoAndPlay(2); }; } public function initialiseMusicToggle():void{ musicToggle.addEventListener(MouseEvent.MOUSE_OVER, musicOver); musicToggle.addEventListener(MouseEvent.MOUSE_OUT, musicUp); musicToggle.addEventListener(MouseEvent.MOUSE_DOWN, toggleMusic); } public function initialiseControls():void{ stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); stage.focus = stage; } public function gotoMultiGhost(_arg1:MouseEvent):void{ gameOverScreen._Try_Again_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Next_Track_.removeEventListener(MouseEvent.MOUSE_DOWN, retryLevel); gameOverScreen._Quit_to_Menu_.removeEventListener(MouseEvent.MOUSE_DOWN, removeGameOverScreen); gameOverScreen._Submit_.removeEventListener(MouseEvent.MOUSE_DOWN, submitScore); gameOverScreen._Multi_Ghost_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoMultiGhost); gameOverScreen._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Coolbuddy$com_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gameOverScreen._Facebook_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); cleanUp(); aiMode = false; ghostMode = false; multiMode = true; fadeInOut(); setTimeout(removeGameOverScreenPartTwo, 500); setTimeout(showLevelSelect, 501); } public function showHiscoreSelect():void{ hiscoreSelect = new hiscoreSelect_mc(); projectCanvas.addChild(hiscoreSelect); hiscoreSelect.hiscoreSelectButtonHolder.addEventListener(MouseEvent.CLICK, showScores); hiscoreSelect._Back_.addEventListener(MouseEvent.CLICK, fadeHiscoreSelectToMenu); } public function dataSentHandler(_arg1:Object){ HeyzapTools.removeEventListener("globalGameDataSaved", dataSentHandler); gameOverScreen.submitGhost.message.text = "Data sent"; testingSendSuccess = false; } public function fadeOutBlackScreen(_arg1:TweenEvent):void{ fadeInTween.removeEventListener(TweenEvent.MOTION_FINISH, fadeOutBlackScreen); removeLevelSelect(); setInitialVariables(); showInfo(); fadeOutTween = new Tween(blackScreen, "alpha", None.easeNone, 1, 0, 0.5, true); fadeOutTween.addEventListener(TweenEvent.MOTION_FINISH, removeBlackScreen); } public function onConnectError(_arg1:String):void{ trace(("mochi hs error: " + _arg1)); } public function cleanUp():void{ var _local1:Array; var _local2:uint; cleaned = true; cleanPhysics(); projectCanvas.removeChild(bg1); projectCanvas.removeChild(bg2); projectCanvas.removeChild(bg3); stage.removeEventListener(Event.ENTER_FRAME, gameLoop); gui.coolbuddy.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); gui.resetButton.removeEventListener(MouseEvent.MOUSE_DOWN, resetLevel); gui.quitButton.removeEventListener(MouseEvent.MOUSE_DOWN, showConfirmQuit); projectCanvas.removeChild(gui); projectCanvas.removeChild(cameraCanvas); gameWon = false; projectCanvas.removeChild(debug); disableControls(); numberOfHintBoxes = 0; hintBoxArray = new Array(); tweenArray = new Array(); mouseIsDown = false; disableMouse = false; levelCompleted = false; waitForMouseUp = false; retrying = false; hintBoxExists = false; lap = 0; aiLap = 0; frameTimer = 0; lapTimer = 0; raceStarted = false; ghostArray = new Array(); bestGhostArray = new Array(); frameCounter = 0; wp = 0; _local1 = new Array(); _local2 = 0; while (_local2 < numberOfLevels) { _local1[_local2] = new Array(); _local2++; }; disableReset = false; launched = false; raceWon = false; bestLap = 1000000; boostOn = false; batteryArray = new Array(); } public function fadeInOut():void{ var _local1:Tween; blackScreen = new blackScreen_mc(); blackScreen.alpha = 0; stage.addChild(blackScreen); _local1 = new Tween(blackScreen, "alpha", None.easeNone, 0, 1, 0.5, true); setTimeout(fadeOut, 600); } public function clearTextInput(_arg1:MouseEvent):void{ gameOverScreen.submitGhost.playerName.text = ""; gameOverScreen.submitGhost.playerName.removeEventListener(MouseEvent.CLICK, clearTextInput); } public function mouseDownHandler(_arg1:MouseEvent):void{ mouseIsDown = true; } public function showCredits(_arg1:MouseEvent):void{ menu.credits.visible = true; menu.credits.andromedus.addEventListener(MouseEvent.MOUSE_DOWN, gotoAndromedus); menu.credits._Close_.addEventListener(MouseEvent.MOUSE_DOWN, hideCredits); } public function quitGame(_arg1:MouseEvent):void{ projectCanvas.removeChild(confirmQuit); confirmQuit._Yes_.removeEventListener(MouseEvent.MOUSE_DOWN, quitGame); confirmQuit._No_.removeEventListener(MouseEvent.MOUSE_DOWN, resumeGame); exitGame(); } public function removeGameOverScreenPartTwo():void{ projectCanvas.removeChild(gameOverScreen); } public function gotoCoolbuddy(_arg1:MouseEvent):void{ var _local2:String; var _local3:URLRequest; _local2 = "http://www.coolbuddy.com/?cid=219"; _local3 = new URLRequest(_local2); navigateToURL(_local3); } public function initialise():void{ var _local1:frame_mc; getCurrentDay(); projectCanvas = new Sprite(); stage.addChild(projectCanvas); stage.addChild(hsMC); _local1 = new frame_mc(); stage.addChild(_local1); _local1.mouseEnabled = false; setupArrays(); soundToggle = new soundToggle_mc(); stage.addChild(soundToggle); musicToggle = new musicToggle_mc(); stage.addChild(musicToggle); showMenu(); initialiseSoundToggle(); initialiseMusicToggle(); storeHints(); setupTextEffect(); } public function shuffle(_arg1, _arg2){ var _local3:int; _local3 = (Math.round((Math.random() * 2)) - 1); return (_local3); } public function fadeInfoToLevelSelect(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(removeInfo, 500); setTimeout(showLevelSelect, 501); } public function displayWord():void{ var _local1:uint; var _local2:uint; var _local3:MovieClip; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; _local1 = 0; _local2 = 0; while (_local2 < dotArray.length) { _local3 = dotArray[_local2]; _local4 = (_local3.targetX - _local3.x); _local5 = (_local3.targetY - _local3.y); _local6 = ((_local4 * _local4) + (_local5 * _local5)); _local7 = 100000; _local8 = (_local7 / _local6); if (_local8 > 3){ _local8 = 3; }; _local9 = Math.atan2((_local3.targetX - _local3.x), (_local3.targetY - _local3.y)); _local10 = (_local8 * Math.sin(_local9)); _local11 = (_local8 * Math.cos(_local9)); _local3.vx = (_local3.vx + _local10); _local3.vy = (_local3.vy + _local11); _local12 = 3; if (_local3.vx > _local12){ _local3.vx = _local12; }; if (_local3.vx < -(_local12)){ _local3.vx = -(_local12); }; if (_local3.vy > _local12){ _local3.vy = _local12; }; if (_local3.vy < -(_local12)){ _local3.vy = -(_local12); }; _local3.x = (_local3.x + _local3.vx); _local3.y = (_local3.y + _local3.vy); if ((((Math.abs((_local3.targetX - _local3.x)) < 3)) && ((Math.abs((_local3.targetY - _local3.y)) < 3)))){ _local3.x = _local3.targetX; _local3.y = _local3.targetY; _local1++; }; _local2++; }; if (_local1 == dotArray.length){ textPhase = 2; }; } public function addTicker():void{ tickerPresent = true; tickerSection = 0; ticker = new ticker_mc(); stage.addChild(ticker); ticker.x = 0; ticker.y = 394; ticker.width = 600; tickerStart = ticker.mc.textField.x; ticker.mc.textField.x = (tickerStart + 600); ticker.mc.textField.text = tickerArray[tickerSection]; ticker.mc.textField.autoSize = TextFieldAutoSize.LEFT; ticker.addEventListener(Event.ENTER_FRAME, scrollTicker); } public function showAwards():void{ } public function setInitialVariables():void{ score = 0; lives = startLives; } public function showHighscores(){ } public function drawTrail():void{ var _local1:*; var _local2:uint; var _local3:*; var _local4:uint; var _local5:*; var _local6:uint; trailArray1[trailCounter1].x = myBall.m_userData.x; trailArray1[trailCounter1].y = myBall.m_userData.y; _local1 = trailCounter1; _local2 = 0; while (_local2 < numParticles) { trailArray1[_local1].alpha = ((1 - (_local2 / numParticles)) / 3); trailArray1[_local1].width = ((myBallRadius * 6) * (1 - (_local2 / numParticles))); trailArray1[_local1].height = ((myBallRadius * 6) * (1 - (_local2 / numParticles))); _local1--; if (_local1 < 0){ _local1 = (numParticles - 1); }; _local2++; }; trailCounter1++; if (trailCounter1 >= numParticles){ trailCounter1 = 0; }; if (aiMode == true){ trailArray2[trailCounter2].x = aiBall.m_userData.x; trailArray2[trailCounter2].y = aiBall.m_userData.y; _local3 = trailCounter2; _local4 = 0; while (_local4 < numParticles) { trailArray2[_local3].alpha = ((1 - (_local4 / numParticles)) / 3); trailArray2[_local3].width = ((myBallRadius * 6) * (1 - (_local4 / numParticles))); trailArray2[_local3].height = ((myBallRadius * 6) * (1 - (_local4 / numParticles))); _local3--; if (_local3 < 0){ _local3 = (numParticles - 1); }; _local4++; }; trailCounter2++; if (trailCounter2 >= numParticles){ trailCounter2 = 0; }; } else { if ((((lap > 1)) || ((multiMode == true)))){ trailArray2[trailCounter2].x = ghostBall.x; trailArray2[trailCounter2].y = ghostBall.y; _local5 = trailCounter2; _local6 = 0; while (_local6 < numParticles) { trailArray2[_local5].alpha = ((1 - (_local6 / numParticles)) / 3); trailArray2[_local5].width = ((myBallRadius * 6) * (1 - (_local6 / numParticles))); trailArray2[_local5].height = ((myBallRadius * 6) * (1 - (_local6 / numParticles))); --_local5; if (_local5 < 0){ _local5 = (numParticles - 1); }; _local6++; }; trailCounter2++; if (trailCounter2 >= numParticles){ trailCounter2 = 0; }; }; }; } public function toggleMusic(_arg1:MouseEvent):void{ if (musicOn == true){ musicOn = false; musicToggle.gotoAndStop("offOver"); musicTransform.volume = 0; musicChannel.soundTransform = musicTransform; } else { musicOn = true; musicToggle.gotoAndStop("onOver"); musicTransform.volume = 1; musicChannel.soundTransform = musicTransform; }; } public function fadeOut():void{ fadeOutTween = new Tween(blackScreen, "alpha", None.easeNone, 1, 0, 0.5, true); fadeOutTween.addEventListener(TweenEvent.MOTION_FINISH, removeBlackScreen); } public function clearInfoBox():void{ gui.infoBox.text = "---"; } public function updateTime():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; if (raceStarted == true){ frameTimer++; _local1 = int((frameTimer / 100)); _local2 = int(((frameTimer - (_local1 * 100)) / 10)); _local3 = ((frameTimer - (_local1 * 100)) - (_local2 * 10)); lapTimer++; _local4 = int((lapTimer / 100)); _local5 = int(((lapTimer - (_local4 * 100)) / 10)); _local6 = ((lapTimer - (_local4 * 100)) - (_local5 * 10)); if ((((lapTimer > 100)) || ((lap < 2)))){ gui.lapTime.text = String(lapTimer); }; }; } public function recordWaypoints():void{ } public function initialiseGame():void{ var _local1:Date; if (menuStarsAdded == true){ removeMenuStars(); }; menuMusicPlaying = false; musicChannel.stop(); musicChannel = gameMusic.play(0, 100); musicChannel.soundTransform = musicTransform; stage.removeEventListener(Event.ENTER_FRAME, fadeInMenuMusic); bg1 = new bg1_mc(); projectCanvas.addChild(bg1); if (currentLevel == 2){ bg1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, -20, -20, 20, 0); }; if (currentLevel == 3){ bg1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 20, -20, -20, 0); }; if (currentLevel == 4){ bg1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, -20, 20, -20, 0); }; if (currentLevel == 5){ bg1.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 20, -20, 20, 0); }; bg2 = new bg2_mc(); projectCanvas.addChild(bg2); bg2.blendMode = BlendMode.ADD; bg3 = new bg3_mc(); projectCanvas.addChild(bg3); bg3.blendMode = BlendMode.ADD; cameraCanvas = new Sprite(); projectCanvas.addChild(cameraCanvas); gameCanvas = new Sprite(); cameraCanvas.addChild(gameCanvas); trackCanvas = new Sprite(); gameCanvas.addChild(trackCanvas); ballCanvas = new Sprite(); cameraCanvas.addChild(ballCanvas); makeTrail(); initialisePhysics(); createLevel(currentLevel, 0); if ((((ghostMode == true)) || ((multiMode == true)))){ ghostBall = new ghostBall_mc(); ballCanvas.addChild(ghostBall); ghostBall.x = -10000; ghostBall.y = -10000; ghostBall.width = myBall.m_userData.width; ghostBall.height = myBall.m_userData.height; }; trackCanvas.cacheAsBitmap = true; addGUI(); debug = new debug_mc(); projectCanvas.addChild(debug); debug.visible = false; debug.x = 457; debug.y = 34; gui.quitButton.addEventListener(MouseEvent.MOUSE_DOWN, showConfirmQuit); gui.resetButton.addEventListener(MouseEvent.MOUSE_DOWN, showConfirmResetLevel); startLineCrossed = false; check1Crossed = true; check2Crossed = true; if (aiMode == true){ aiStartLineCrossed = false; aiCheck1Crossed = true; }; _local1 = new Date(); fpsStartTime = _local1.getTime(); stage.addEventListener(Event.ENTER_FRAME, gameLoop, false, 0, true); gameRunning = true; initialiseControls(); cleaned = false; disableMouse = true; setTimeout(enableMouse, 500); if (aiMode == true){ if (currentLevel == 1){ boosts = 110; }; if (currentLevel == 2){ boosts = 400; }; if (currentLevel == 3){ boosts = 500; }; if (currentLevel == 4){ boosts = 500; }; if (currentLevel == 5){ boosts = 500; }; } else { boosts = maxBoosts; }; cameraCanvas.scaleX = cameraScale; cameraCanvas.scaleY = cameraScale; } public function fadeHiscoreSelectToMenu(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(removeHiscoreSelect, 500); setTimeout(showMenu, 501); } public function fadeInHiscoreSelect(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(removeMenu, 501); setTimeout(showHiscoreSelect, 501); } public function removeInfo():void{ levelInfo._Continue_.removeEventListener(MouseEvent.MOUSE_DOWN, fadeInfoOut); levelInfo._Back_.removeEventListener(MouseEvent.MOUSE_DOWN, fadeInfoToLevelSelect); levelInfo._More_Games_.removeEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); projectCanvas.removeChild(levelInfo); } public function getCurrentDay():void{ var _local1:URLRequest; _local1 = new URLRequest(("http://www.andromedus.com/get_time.php?n=" + String(Math.random()))); timeLoader = new URLLoader(_local1); timeLoader.addEventListener(Event.COMPLETE, timeRetrieved); timeLoader.addEventListener(IOErrorEvent.IO_ERROR, timeFailed); } public function removeAwards():void{ awards.menuButton.removeEventListener(MouseEvent.MOUSE_DOWN, fadeOutAwards); projectCanvas.removeChild(awards); showMenu(); } public function timeRetrieved(_arg1:Event):void{ var _local2:String; _local2 = _arg1.target.data; if (_local2 != null){ currentDay = Math.floor((int(_local2) / 86400)); } else { timeLoader.removeEventListener(Event.COMPLETE, timeRetrieved); timeLoader.removeEventListener(IOErrorEvent.IO_ERROR, timeFailed); }; } public function wrapvalue(_arg1:Number):Number{ if (_arg1 < 0){ _arg1 = (_arg1 + (2 * Math.PI)); }; if (_arg1 > (2 * Math.PI)){ _arg1 = (_arg1 - (2 * Math.PI)); }; return (_arg1); } public function showModeSelect():void{ modeSelect = new modeSelect_mc(); projectCanvas.addChild(modeSelect); if (multiModeUnlocked == true){ modeSelect.padlock.visible = false; }; modeSelect.modeHolder.addEventListener(MouseEvent.MOUSE_DOWN, selectMode); modeSelect._Back_.addEventListener(MouseEvent.MOUSE_DOWN, fadeToMenu); modeSelect._More_Games_.addEventListener(MouseEvent.MOUSE_DOWN, gotoCoolbuddy); } public function resetLevel(_arg1:MouseEvent):void{ projectCanvas.removeChild(confirmReset); confirmReset._Yes_.removeEventListener(MouseEvent.MOUSE_DOWN, resetLevel); confirmReset._No_.removeEventListener(MouseEvent.MOUSE_DOWN, resumeGame2); gameRunning = false; fadeInOut(); setTimeout(cleanUp, 500); gameWon = false; setTimeout(showInfo, 501); } public function setupTextEffect():void{ var _local1:MovieClip; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:*; _local1 = new letters_mc(); _local2 = 0; while (_local2 < 26) { letterArray[_local2] = _local1.getChildAt(_local2); _local3 = 0; _local4 = 0; while (_local4 < letterArray[_local2].numChildren) { _local5 = letterArray[_local2].getChildAt(_local4); if ((_local5 is dot_mc)){ letterArray[_local2][_local3] = new Point(_local5.x, _local5.y); _local3++; }; _local4++; }; letterArray[_local2].arrayLength = _local3; _local2++; }; _local1 = null; currentWord = 0; } public function hideWord():void{ var _local1:uint; var _local2:uint; var _local3:MovieClip; var _local4:uint; _local1 = 0; _local2 = 0; while (_local2 < dotArray.length) { _local3 = dotArray[_local2]; _local3.x = (_local3.x + ((origin.x - _local3.x) / 10)); _local3.y = (_local3.y + ((origin.y - _local3.y) / 10)); if ((((Math.abs((origin.x - _local3.x)) < 2)) && ((Math.abs((origin.y - _local3.y)) < 2)))){ _local1++; }; _local2++; }; if (_local1 == dotArray.length){ textPhase = 0; currentWord++; if (currentWord >= wordArray.length){ currentWord = 0; }; _local4 = 0; while (_local4 < dotArray.length) { projectCanvas.removeChild(dotArray[_local4]); dotArray[_local4] = null; _local4++; }; }; } public function fadeOutAwards(_arg1:MouseEvent):void{ awards.menuButton.removeEventListener(MouseEvent.MOUSE_DOWN, fadeOutAwards); fadeInOut(); setTimeout(removeAwards, 500); } public function checkLevelWon():void{ } public function initialisePhysics():void{ var _local1:b2AABB; var _local2:b2Vec2; var _local3:Boolean; _local1 = new b2AABB(); _local1.lowerBound.Set((-3000 * m_physScale), (-3000 * m_physScale)); _local1.upperBound.Set((3000 * m_physScale), (3000 * m_physScale)); _local2 = new b2Vec2(0, grav); _local3 = true; m_world = new b2World(_local1, _local2, _local3); contacts = new MyContactListener(); m_world.SetContactListener(contacts); } public function musicUp(_arg1:MouseEvent):void{ if (musicOn == true){ musicToggle.gotoAndStop("onUp"); } else { musicToggle.gotoAndStop("offUp"); }; } public function hideHelp(_arg1:MouseEvent):void{ gui.help.visible = false; gui.help._OK_.removeEventListener(MouseEvent.CLICK, hideHelp); launchButton.visible = true; } public function fadeHintBox(){ var _local1:Tween; if (hintBoxExists == true){ _local1 = new Tween(hintBox, "alpha", None.easeNone, 0.7, 0, 2, true); setTimeout(removeHintBox, 2500); tweenArray.push(_local1); }; } public function showHighscoresOnClick(_arg1:MouseEvent):void{ showHighscores(); } public function launch(_arg1:MouseEvent):void{ launchButton.removeEventListener(MouseEvent.MOUSE_DOWN, launch); projectCanvas.removeChild(launchButton); launched = true; } public function differenceBetweenBearings(_arg1:Number, _arg2:Number){ var _local3:Number; _local3 = (wrapvalue(((_arg1 + Math.PI) - _arg2)) - Math.PI); return (_local3); } public function cleanPhysics():void{ var _local1:b2Body; var _local2:*; var _local3:b2Body; var _local4:*; _local1 = m_world.m_bodyList; _local2 = m_world.m_bodyCount; _local4 = 0; while (_local4 < (_local2 - 1)) { _local3 = _local1; _local1 = _local1.m_next; m_world.DestroyBody(_local3); if ((((_local3.hasOwnProperty("m_userData") == true)) && (!((_local3.m_userData == null))))){ _local3.m_userData = null; }; _local4++; }; } public function updateGUI():void{ gui.boostBar.width = ((boosts / maxBoosts) * 60); } public function removeAd(_arg1:MouseEvent):void{ removeChild(adBox); _Continue_.removeEventListener(MouseEvent.MOUSE_DOWN, end_preload); gotoAndPlay(2); } public function moveAI():void{ var _local1:Number; var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; if (aiMode == true){ if (raceStarted == true){ _local2 = waypointArray[currentLevel][wp]; _local3 = waypointArray[currentLevel][(wp + 1)]; _local4 = (_local2 - aiBall.m_userData.x); _local5 = (_local3 - aiBall.m_userData.y); _local6 = ((_local4 * _local4) + (_local5 * _local5)); if (_local6 > 100){ _local1 = aiSpeed[currentLevel]; } else { _local1 = 0; }; if (_local6 < ((wpRadius * wpRadius) * trackScale)){ wp = (wp + 2); if (wp > (waypointArray[currentLevel].length - 1)){ wp = 0; }; _local2 = waypointArray[currentLevel][wp]; _local3 = waypointArray[currentLevel][(wp + 1)]; _local4 = (_local2 - aiBall.m_userData.x); _local5 = (_local3 - aiBall.m_userData.y); }; _local7 = Math.atan2(_local4, _local5); _local8 = (_local1 * Math.cos(_local7)); _local9 = (_local1 * Math.sin(_local7)); aiBall.ApplyForce(new b2Vec2(_local9, _local8), aiBall.GetPosition()); }; }; } public function playGhost():void{ if ((((((lap > 1)) && ((ghostMode == true)))) || ((((multiMode == true)) && ((launched == true)))))){ if (frameCounter < bestGhostArray[currentLevel].length){ ghostBall.x = bestGhostArray[currentLevel][(frameCounter * 2)]; ghostBall.y = bestGhostArray[currentLevel][((frameCounter * 2) + 1)]; }; frameCounter++; }; } public function moveBackground():void{ var _local1:MovieClip; var _local2:uint; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; bg1.x = (gameCanvas.x / 10); bg1.y = (gameCanvas.y / 10); bg2.x = (gameCanvas.x / 7); bg2.y = (gameCanvas.y / 7); bg3.x = (gameCanvas.x / 4); bg3.y = (gameCanvas.y / 4); _local2 = 1; while (_local2 <= 3) { if (_local2 == 1){ _local1 = bg1; }; if (_local2 == 2){ _local1 = bg2; }; if (_local2 == 3){ _local1 = bg3; }; _local3 = new Point(_local1.a.x, _local1.a.y); _local4 = _local1.localToGlobal(_local3); _local5 = new Point(_local1.b.x, _local1.b.y); _local6 = _local1.localToGlobal(_local5); _local7 = new Point(_local1.c.x, _local1.c.y); _local8 = _local1.localToGlobal(_local7); _local9 = new Point(_local1.d.x, _local1.d.y); _local10 = _local1.localToGlobal(_local9); if (_local4.x < -640){ _local1.a.x = (_local1.b.x + 640); _local1.c.x = (_local1.d.x + 640); }; if (_local4.x > 640){ _local1.a.x = (_local1.b.x - 640); _local1.c.x = (_local1.d.x - 640); }; if (_local6.x < -640){ _local1.b.x = (_local1.a.x + 640); _local1.d.x = (_local1.c.x + 640); }; if (_local6.x > 640){ _local1.b.x = (_local1.a.x - 640); _local1.d.x = (_local1.c.x - 640); }; if (_local4.y < -480){ _local1.a.y = (_local1.c.y + 480); _local1.b.y = (_local1.d.y + 480); }; if (_local4.y > 480){ _local1.a.y = (_local1.c.y - 480); _local1.b.y = (_local1.d.y - 480); }; if (_local8.y < -480){ _local1.c.y = (_local1.a.y + 480); _local1.d.y = (_local1.b.y + 480); }; if (_local8.y > 480){ _local1.c.y = (_local1.a.y - 480); _local1.d.y = (_local1.b.y - 480); }; _local2++; }; } public function sendGhost(_arg1:MouseEvent):void{ gameOverScreen.submitGhost._Save_.removeEventListener(MouseEvent.CLICK, sendGhost); gameOverScreen.submitGhost._Save_.alpha = 0.3; gameOverScreen.submitGhost.message.text = "Connecting - please wait ....."; if (gameOverScreen.submitGhost.playerName.text == ""){ gameOverScreen.submitGhost.playerName.text = "Player1"; }; setGlobalGhostData(currentLevel, gameOverScreen.submitGhost.playerName.text, bestLap, currentDay, bestGhostArray[currentLevel]); setTimeout(sendFailed, 10000); testingSendSuccess = true; } public function selectLevel(_arg1:MouseEvent):void{ currentLevel = parseInt(_arg1.target.name.substring("level".length)); trace(currentLevel); if ((((((currentLevel <= alwaysUnlocked)) || ((currentLevel <= highestLevel)))) || ((aiMode == false)))){ levelSelect.levelButtonHolder.removeEventListener(MouseEvent.MOUSE_DOWN, selectLevel); blackScreen = new blackScreen_mc(); blackScreen.alpha = 0; stage.addChild(blackScreen); fadeInTween = new Tween(blackScreen, "alpha", None.easeNone, 0, 1, 0.5, true); fadeInTween.addEventListener(TweenEvent.MOTION_FINISH, fadeOutBlackScreen); }; } public function backToModeSelect(_arg1:MouseEvent):void{ fadeInOut(); setTimeout(showModeSelect, 500); setTimeout(removeLevelSelect, 501); } public function createLevel(_arg1:uint, _arg2):void{ var _local3:levelContainer_mc; var _local4:*; var _local5:*; var _local6:DisplayObject; var _local7:Array; var _local8:*; var _local9:*; var _local10:*; _local3 = new levelContainer_mc(); _local4 = _local3.getChildAt((_arg1 - 1)); _local5 = 0; while (_local5 < _local4.numChildren) { _local6 = _local4.getChildAt(_local5); if ((_local6 is myBall_template)){ makeMyBall(_local6.x, _local6.y); }; if ((((_local6 is aiBall_template)) && ((aiMode == true)))){ makeAIBall(_local6.x, _local6.y); }; if ((((_local6 is waypoint_mc)) && ((aiMode == true)))){ makeWaypoint(_local6.x, _local6.y); }; if ((((_local6 is wallH_template)) || ((_local6 is wallV_template)))){ makeWall(_local6.x, (_local6.y + _arg2), _local6.width, _local6.height, _local6.rotation); }; if ((_local6 is hintBox_template)){ createHintBox(_local6.x, (_local6.y + _arg2), _local4); }; if ((_local6 is edge_mc)){ _local7 = new Array(); _local8 = new edge_mc(); _local9 = 0; while (_local9 < _local8.numChildren) { _local10 = _local8.getChildAt(_local9); _local7.push((m_physScale * _local10.x)); _local7.push((m_physScale * _local10.y)); _local9++; }; makeEdge(_local6.x, _local6.y, _local7); }; if ((_local6 is s1_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s1"); }; if ((_local6 is s7_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s7"); }; if ((_local6 is s9_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s9"); }; if ((_local6 is s3_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s3"); }; if ((_local6 is s12_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s12"); }; if ((_local6 is s14_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s14"); }; if ((_local6 is s74_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s74"); }; if ((_local6 is s78_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s78"); }; if ((_local6 is s98_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s98"); }; if ((_local6 is s96_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s96"); }; if ((_local6 is s36_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s36"); }; if ((_local6 is s32_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "s32"); }; if ((_local6 is h_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "h"); }; if ((_local6 is d45_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "d45"); }; if ((_local6 is d135_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "d135"); }; if ((_local6 is v_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "v"); }; if ((_local6 is x_tm)){ createSection(_local6.x, _local6.y, _local6.width, _local6.height, "x"); }; if ((_local6 is start_tm)){ createStart(_local6.x, _local6.y); }; if ((_local6 is arrowSignL_mc)){ createArrow(_local6.x, _local6.y, "l", _local6.rotation); }; if ((_local6 is arrowSignR_mc)){ createArrow(_local6.x, _local6.y, "r", _local6.rotation); }; if ((_local6 is check1_tm)){ createCheck1(_local6.x, _local6.y); }; if ((_local6 is check2_tm)){ createCheck2(_local6.x, _local6.y); }; if ((_local6 is battery_mc)){ createBattery(_local6.x, _local6.y); }; _local5++; }; } } }//package galaxoball_fla
Section 87
//menuLines_mc_65 (galaxoball_fla.menuLines_mc_65) package galaxoball_fla { import flash.display.*; public dynamic class menuLines_mc_65 extends MovieClip { public function menuLines_mc_65(){ addFrameScript(49, frame50); } function frame50(){ stop(); } } }//package galaxoball_fla
Section 88
//modeButtonHolder_mc_222 (galaxoball_fla.modeButtonHolder_mc_222) package galaxoball_fla { import flash.display.*; public dynamic class modeButtonHolder_mc_222 extends MovieClip { public var _Time_Trial_:MovieClip; public var _Multi_Ghost_:MovieClip; public var _Versus_:MovieClip; } }//package galaxoball_fla
Section 89
//submissionScreen_mc_86 (galaxoball_fla.submissionScreen_mc_86) package galaxoball_fla { import flash.display.*; import flash.text.*; public dynamic class submissionScreen_mc_86 extends MovieClip { public var message:TextField; public var playerName:TextField; public var _Back_:MovieClip; public var _Save_:MovieClip; } }//package galaxoball_fla
Section 90
//textField_mc_35 (galaxoball_fla.textField_mc_35) package galaxoball_fla { import flash.display.*; import flash.text.*; public dynamic class textField_mc_35 extends MovieClip { public var textField:TextField; } }//package galaxoball_fla
Section 91
//HeyzapTools (heyzap.as3.HeyzapTools) package heyzap.as3 { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class HeyzapTools { private var container:MovieClip; private var messageQueue:Array; public var gameKey:String; public var clip:DisplayObjectContainer; private var sendingLC:LocalConnection; private var loader:Loader; private var rlcName:String; private var slcName:String; private var receivingLC:LocalConnection; public var baseUrl:String; private var tools:MovieClip; private var ready:Boolean; static var callbackList:Object; static var lastOptions:Object; static var instance:HeyzapTools; static var cb:String; public function HeyzapTools(_arg1:Object){ var url:String; var options = _arg1; super(); ready = false; messageQueue = []; gameKey = options["game_key"]; clip = options["clip"]; if (options["base_server"]){ baseUrl = options["base_server"]; } else { baseUrl = "http://tools.heyzap.com"; }; container = new MovieClip(); clip.addChild(container); container.visible = false; slcName = ("_s" + randomString()); rlcName = ("_r" + randomString()); url = buildUrl((baseUrl + "/external/tools/v3.swf"), {cb:cb, slc_name:slcName, rlc_name:rlcName, game_key:gameKey, swf_url:clip.root.loaderInfo.loaderURL, as_version:3, library_version:version()}); loader = new Loader(); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); loader.load(new URLRequest(url)); container.addChild(loader); receivingLC = new LocalConnection(); receivingLC.allowDomain("www.heyzap.com", "tools.heyzap.com", "localhost"); receivingLC.allowInsecureDomain("www.heyzap.com", "tools.heyzap.com", "localhost"); receivingLC.client = container; container["widgetReady"] = widgetReady; container["fireClientCallback"] = fireClientCallback; container["destroyInstance"] = destroyInstance; sendingLC = new LocalConnection(); sendingLC.addEventListener(StatusEvent.STATUS, function (_arg1:StatusEvent):void{ if (_arg1.level == "error"){ trace(("[Heyzap] Game -> Widget LocalConnection sending failed: " + _arg1.code)); }; }, false, 0, true); sendingLC.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent):void{ trace(("[Heyzap] Security error: " + _arg1.text)); }, false, 0, true); } private function fireClientCallback(_arg1:String, _arg2:Object):void{ var _local3:Number; clip.setChildIndex(container, (clip.numChildren - 1)); if (callbackList[_arg1]){ _local3 = 0; while (_local3 < callbackList[_arg1].length) { if (typeof(callbackList[_arg1][_local3]) == "function"){ var _local4 = callbackList[_arg1]; _local4[_local3](_arg2); }; _local3++; }; }; } private function completeHandler(_arg1:Event):void{ receivingLC.connect(rlcName); } private function sendMessage(_arg1:String, _arg2:Object):void{ if (ready){ sendingLC.send(slcName, _arg1, _arg2); } else { messageQueue.push({name:_arg1, args:_arg2}); }; } private function destroyInstance():void{ instance.destroy(false); instance = null; } private function flushMessages():void{ var _local1:String; var _local2:Object; for (_local1 in messageQueue) { _local2 = messageQueue[_local1]; sendingLC.send(slcName, _local2.name, _local2.args); }; } private function ioErrorHandler(_arg1:Event):void{ trace("[Heyzap] Failed to load heyzap tools swf."); } private function destroy(_arg1:Object):void{ var i:String; var unloadAndStop:Function; var clearSettings = _arg1; if (clearSettings){ lastOptions = undefined; }; receivingLC.close(); receivingLC = undefined; sendingLC = undefined; for (i in container) { if (typeof(container[i]) == "function"){ delete container[i]; }; }; loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler); container.removeChild(loader); clip.removeChild(container); try { unloadAndStop = (loader["unloadAndStop"] as Function); unloadAndStop(); } catch(err:Error) { loader.unload(); }; } private function widgetReady():void{ container.visible = true; flushMessages(); ready = true; } private static function buildUrl(_arg1:String, _arg2:Object):String{ var _local3:Boolean; var _local4:String; _local3 = true; for (_local4 in _arg2) { if (_arg2[_local4]){ _arg1 = (_arg1 + ((((_local3) ? "?" : "&" + escape(_local4)) + "=") + escape(_arg2[_local4]))); if (_local3){ _local3 = false; }; }; }; return (_arg1); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Number; if (((callbackList) && (callbackList[_arg1]))){ while (_local3 < callbackList[_arg1]) { if (callbackList[_arg1][_local3] === _arg2){ delete callbackList[_arg1][_local3]; break; }; _local3++; }; }; } public static function addEventListener(_arg1:String, _arg2:Function):void{ if (!callbackList){ callbackList = {}; }; if (!callbackList[_arg1]){ callbackList[_arg1] = []; }; callbackList[_arg1].push(_arg2); } public static function send(_arg1:String, _arg2:Object=null):void{ if (!instance){ if (lastOptions){ instance = new HeyzapTools(lastOptions); } else { throw (new Error("[Heyzap] Error: You must call import heyzap.as3.*; HeyzapTools.load({game_key: \"yourgamekeyhere\"}) first.")); }; }; instance.sendMessage(_arg1, _arg2); } private static function randomString():String{ return (((new Date().getTime() + "_") + Math.floor((Math.random() * 99999)))); } public static function version():String{ return ("3.2.0"); } public static function load(_arg1:Object):void{ var _local2:Array; var _local3:int; if (_arg1.game_key == undefined){ throw (new Error("[Heyzap] You must provide your 'game_key' as a parameter.")); }; if (_arg1.clip == undefined){ throw (new Error("[Heyzap] You must provide a 'clip' as a parameter (usually root).")); }; if (!instance){ cb = randomString(); _local2 = ["localhost", "heyzap.com", "www.heyzap.com", "tools.heyzap.com", "*"]; _local3 = 0; while (_local3 < _local2.length) { Security.allowDomain(_local2[_local3]); Security.allowInsecureDomain(_local2[_local3]); _local3++; }; } else { if ((((((_arg1.game_key == instance.gameKey)) && ((_arg1.clip == instance.clip)))) && ((_arg1.base_server == instance.baseUrl)))){ return; }; instance.destroy(true); instance = undefined; }; lastOptions = _arg1; instance = new HeyzapTools(_arg1); } } }//package heyzap.as3
Section 92
//MyContactListener (includes.MyContactListener) package includes { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class MyContactListener extends b2ContactListener { override public function Remove(_arg1:b2ContactPoint):void{ } override public function Add(_arg1:b2ContactPoint):void{ var _local2:b2Body; var _local3:b2Body; _local2 = _arg1.shape1.GetBody(); _local3 = _arg1.shape2.GetBody(); if (SuperGlobals.soundOn == true){ }; } private function preventSticking(_arg1:b2ContactPoint, _arg2:b2Body, _arg3:b2Body):void{ var _local4:b2Body; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:Number; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; if ((((((_arg2.GetUserData().id == "ball")) && ((_arg3.GetUserData().id == "wall")))) || ((((_arg3.GetUserData().id == "ball")) && ((_arg2.GetUserData().id == "wall")))))){ if (_arg2.GetUserData().id == "ball"){ _local4 = _arg2; } else { _local4 = _arg3; }; _local5 = _arg1.position; _local6 = new b2Vec2((_local5.x - _local4.GetPosition().x), (_local5.y - _local4.GetPosition().y)); _local7 = _local6.Length(); _local8 = _local4.GetLinearVelocity(); _local9 = _local8.Length(); _local10 = (_local6.x / _local7); _local11 = (_local6.y / _local7); _local12 = new b2Vec2(_local10, _local11); if (_local9 < 2){ _local4.ApplyImpulse(new b2Vec2((_local10 * 1.5), (_local11 * 1.5)), _local4.GetPosition()); } else { if (Math.abs(_local10) > 0){ _local4.SetLinearVelocity(new b2Vec2((_local8.x * 0.9), _local8.y)); }; if (Math.abs(_local11) > 0){ _local4.SetLinearVelocity(new b2Vec2(_local8.x, (_local8.y * 0.9))); }; }; }; } function applySpin(_arg1:b2ContactResult, _arg2:b2Body, _arg3:b2Body):void{ var _local4:b2Body; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:int; if ((((_arg2.GetUserData().id == "ball")) && ((_arg3.GetUserData().id == "ball")))){ if ((((_arg2.GetUserData().color == "white")) || ((_arg3.GetUserData().color == "white")))){ if (_arg2.GetUserData().color == "white"){ _local4 = _arg2; } else { _local4 = _arg3; }; if ((((_local4.GetUserData().spinApplied == false)) && ((_arg2.GetUserData().active == true)))){ _local4.GetUserData().spinApplied = true; _local5 = _arg1.normal; _local6 = new b2Vec2(-(_arg1.normal.y), _arg1.normal.x); _local7 = ((0.2 * _arg1.normalImpulse) * _local4.GetUserData().spinX); _local8 = (((-0.4 * 830) * Math.pow((_arg1.normalImpulse / 830), 1.5)) * _local4.GetUserData().spinY); _local5.Multiply(_local8); _local6.Multiply(_local7); _local4.GetUserData().impulseX = _local6; _local4.GetUserData().impulseY = _local5; _local4.GetUserData().impulseXApplied = false; _local4.GetUserData().impulseYApplied = false; _local9 = Math.round((_local4.GetUserData().impulseY.Length() / 100)); if (_local9 < 13){ _local9 = 1; }; _local4.GetUserData().steps = _local9; _local4.GetUserData().deltaImpulseY = new b2Vec2((_local4.GetUserData().impulseY.x / Math.pow(_local9, 1.1)), (_local4.GetUserData().impulseY.y / Math.pow(_local9, 1.1))); }; }; }; } override public function Persist(_arg1:b2ContactPoint):void{ } private function checkPockets(_arg1:b2Body, _arg2:b2Body):void{ if (_arg1.GetUserData().id == "pocket"){ _arg1.GetUserData().detection = true; _arg1.GetUserData().ballDetected = _arg2; }; if (_arg2.GetUserData().id == "pocket"){ _arg2.GetUserData().detection = true; _arg2.GetUserData().ballDetected = _arg1; }; } private function playSound(_arg1:b2ContactPoint, _arg2:b2Body, _arg3:b2Body):void{ var _local4:Number; var _local5:Number; _local4 = _arg1.velocity.Length(); _local5 = (_local4 / 150); if (_local5 > 1){ _local5 = 1; }; } override public function Result(_arg1:b2ContactResult):void{ var _local2:b2Body; var _local3:b2Body; _local2 = _arg1.shape1.GetBody(); _local3 = _arg1.shape2.GetBody(); } function storeContact(_arg1:b2Body, _arg2:b2Body):void{ if (_arg1.GetUserData().id == "myBall"){ if (_arg1.GetUserData().hasCollided == false){ _arg1.GetUserData().hasCollided = true; _arg1.GetUserData().rotating = false; _arg1.GetUserData().rotation = 0; _arg1.GetUserData().gotoAndStop(1); }; }; if (_arg2.GetUserData().id == "myBall"){ if (_arg2.GetUserData().hasCollided == false){ _arg2.GetUserData().hasCollided = true; _arg2.GetUserData().rotating = false; _arg2.GetUserData().rotation = 0; _arg2.GetUserData().gotoAndStop(1); }; }; } } }//package includes
Section 93
//SuperGlobals (includes.SuperGlobals) package includes { public class SuperGlobals { public static var soundOn:Boolean = true; } }//package includes
Section 94
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const LOGGED_IN:String = "LoggedIn"; public static const STORE_ITEMS:String = "StoreItems"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const ITEM_NEW:String = "ItemNew"; public static const USER_INFO:String = "UserInfo"; public static const IO_ERROR:String = "IOError"; public static const ITEM_OWNED:String = "ItemOwned"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const ERROR:String = "Error"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_HIDE:String = "LoginHide"; public static const LOGIN_SHOW:String = "LoginShow"; public static const STORE_SHOW:String = "StoreShow"; public static const PROFILE_HIDE:String = "ProfileHide"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("coins_saveUserProperties", _arg1); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showStore(_arg1:Object=null):void{ MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } } }//package mochi.as3
Section 95
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 96
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3
Section 97
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { import flash.display.*; public class MochiEvents { public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var gameStart:Number; private static var levelStart:Number; public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{ var _local3:Object; var _local4:Object; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function endGame():void{ var _local1:Number; _local1 = (new Date().time - gameStart); trigger("end_game", {time:_local1}); } public static function startGame():void{ gameStart = new Date().time; trigger("start_game"); } public static function trigger(_arg1:String, _arg2:Object=null):void{ if (_arg2 == null){ _arg2 = {}; } else { if (_arg2["kind"] != undefined){ trace("WARNING: optional arguements package contains key 'id', it will be overwritten"); _arg2["kind"] = _arg1; }; }; MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startLevel():void{ levelStart = new Date().time; trigger("start_level"); } public static function endLevel():void{ var _local1:Number; _local1 = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 98
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ delete options.clip; MochiServices.setContainer(); MochiServices.bringToTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'")); } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite")); } else { if (Math.floor(n) != n){ trace((("WARNING: Submitted score '" + options.score) + "' will be truncated")); }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.warnID(options.boardID, true); trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal"); MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local2:Object; var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; _local2 = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'")); } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite")); } else { if (Math.floor(_arg1) != _arg1){ trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated")); }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiServices.warnID(_arg1, true); MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi.as3
Section 99
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.geom.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; public static var servicesSync:MochiSync = new MochiSync(); private static var _clip:MovieClip; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _loader:Loader; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = _clip._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _clip._callbacks[cb]; } public static function get childClip():Object{ return (_clip); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; vars = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); s = "?"; i = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function warnID(_arg1:String, _arg2:Boolean):void{ var _local3:Number; _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; _local3 = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.3 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_clip._queue))){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String; var _local3:String; _local2 = _arg1.target; _local3 = _arg1.event; switch (_local2){ case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "sync": servicesSync.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_clip._queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var mochiLCURL:String; var req:URLRequest; var complete:Function; var clip = _arg1; loader = new Loader(); mochiLCURL = (_servURL + _mochiLC); req = new URLRequest(mochiLCURL); complete = function (_arg1:Object):void{ _mochiLocalConnection = MovieClip(loader.content); listen(); }; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); loader.load(req); clip.addChild(loader); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String; var _local4:String; var _local5:URLRequest; var _local6:URLVariables; _local3 = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; _local4 = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local4 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local4); _clip = createEmptyMovieClip(_arg2, _local3, 10336, false); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local5 = new URLRequest(_local4); _local6 = new URLVariables(); _local6.listenLC = _listenChannelName; _local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local6.api_version = getVersion(); if (widget){ _local6.widget = true; }; _local5.data = _local6; _loader.load(_local5); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if ((clip is DisplayObject)){ if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var mc:MovieClip; var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; mc = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 100
//MochiSync (mochi.as3.MochiSync) package mochi.as3 { import flash.utils.*; public dynamic class MochiSync extends Proxy { private var _syncContainer:Object; public static var SYNC_PROPERTY:String = "UpdateProperty"; public static var SYNC_REQUEST:String = "SyncRequest"; public function MochiSync():void{ _syncContainer = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case SYNC_REQUEST: MochiServices.send("sync_syncronize", _syncContainer); break; case SYNC_PROPERTY: _syncContainer[_arg2.name] = _arg2.value; break; }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:String; if (_syncContainer[_arg1] == _arg2){ return; }; _local3 = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } } }//package mochi.as3
Section 101
//aiBall_mc (aiBall_mc) package { import flash.display.*; public dynamic class aiBall_mc extends MovieClip { } }//package
Section 102
//aiBall_template (aiBall_template) package { import flash.display.*; public dynamic class aiBall_template extends MovieClip { } }//package
Section 103
//annihilationEffect_mc (annihilationEffect_mc) package { import flash.display.*; public dynamic class annihilationEffect_mc extends MovieClip { public function annihilationEffect_mc(){ addFrameScript(34, frame35); } function frame35(){ stop(); this.parent.removeChild(this); } } }//package
Section 104
//arrowSignL_mc (arrowSignL_mc) package { import flash.display.*; public dynamic class arrowSignL_mc extends MovieClip { } }//package
Section 105
//arrowSignR_mc (arrowSignR_mc) package { import flash.display.*; public dynamic class arrowSignR_mc extends MovieClip { } }//package
Section 106
//awards_mc (awards_mc) package { import flash.display.*; import flash.text.*; public dynamic class awards_mc extends MovieClip { public var bestScore:TextField; public var menuButton:SimpleButton; } }//package
Section 107
//ballMask_mc (ballMask_mc) package { import flash.display.*; public dynamic class ballMask_mc extends MovieClip { } }//package
Section 108
//ballShading_mc (ballShading_mc) package { import flash.display.*; public dynamic class ballShading_mc extends MovieClip { } }//package
Section 109
//ballSpot_mc (ballSpot_mc) package { import flash.display.*; public dynamic class ballSpot_mc extends MovieClip { public var graphic:MovieClip; } }//package
Section 110
//battery_mc (battery_mc) package { import flash.display.*; public dynamic class battery_mc extends MovieClip { } }//package
Section 111
//bg1_mc (bg1_mc) package { import flash.display.*; public dynamic class bg1_mc extends MovieClip { public var c:MovieClip; public var b:MovieClip; public var d:MovieClip; public var a:MovieClip; } }//package
Section 112
//bg2_mc (bg2_mc) package { import flash.display.*; public dynamic class bg2_mc extends MovieClip { public var c:MovieClip; public var b:MovieClip; public var d:MovieClip; public var a:MovieClip; } }//package
Section 113
//bg3_mc (bg3_mc) package { import flash.display.*; public dynamic class bg3_mc extends MovieClip { public var c:MovieClip; public var b:MovieClip; public var d:MovieClip; public var a:MovieClip; } }//package
Section 114
//blackScreen_mc (blackScreen_mc) package { import flash.display.*; public dynamic class blackScreen_mc extends MovieClip { } }//package
Section 115
//blueGradient_mc (blueGradient_mc) package { import flash.display.*; public dynamic class blueGradient_mc extends MovieClip { public var bg2:bg3_mc; public var bg1:bg2_mc; } }//package
Section 116
//bonusDisplay_mc (bonusDisplay_mc) package { import flash.display.*; import flash.text.*; public dynamic class bonusDisplay_mc extends MovieClip { public var textField:TextField; public function bonusDisplay_mc(){ addFrameScript(74, frame75); } function frame75(){ stop(); this.parent.removeChild(this); } } }//package
Section 117
//bumper_mc (bumper_mc) package { import flash.display.*; public dynamic class bumper_mc extends MovieClip { public var light:MovieClip; } }//package
Section 118
//bumper_template (bumper_template) package { import flash.display.*; public dynamic class bumper_template extends MovieClip { } }//package
Section 119
//c135_phys (c135_phys) package { import flash.display.*; public dynamic class c135_phys extends MovieClip { public var b:MovieClip; public var a:MovieClip; } }//package
Section 120
//c45_phys (c45_phys) package { import flash.display.*; public dynamic class c45_phys extends MovieClip { public var b:MovieClip; public var a:MovieClip; } }//package
Section 121
//c90_phys (c90_phys) package { import flash.display.*; public dynamic class c90_phys extends MovieClip { public var b:MovieClip; public var a:MovieClip; } }//package
Section 122
//check1_tm (check1_tm) package { import flash.display.*; public dynamic class check1_tm extends MovieClip { } }//package
Section 123
//check2_tm (check2_tm) package { import flash.display.*; public dynamic class check2_tm extends MovieClip { } }//package
Section 124
//circleSprite_mc (circleSprite_mc) package { import flash.display.*; public dynamic class circleSprite_mc extends MovieClip { } }//package
Section 125
//circleSprite2_mc (circleSprite2_mc) package { import flash.display.*; public dynamic class circleSprite2_mc extends MovieClip { } }//package
Section 126
//circleSprite3_mc (circleSprite3_mc) package { import flash.display.*; public dynamic class circleSprite3_mc extends MovieClip { } }//package
Section 127
//confirmQuit_mc (confirmQuit_mc) package { import flash.display.*; public dynamic class confirmQuit_mc extends MovieClip { public var _Yes_:MovieClip; public var _No_:MovieClip; } }//package
Section 128
//confirmReset_mc (confirmReset_mc) package { import flash.display.*; public dynamic class confirmReset_mc extends MovieClip { public var _Yes_:MovieClip; public var _No_:MovieClip; } }//package
Section 129
//constant (constant) package { import flash.media.*; public dynamic class constant extends Sound { } }//package
Section 130
//crosshairs_mc (crosshairs_mc) package { import flash.display.*; public dynamic class crosshairs_mc extends MovieClip { } }//package
Section 131
//curve45_mc (curve45_mc) package { import flash.display.*; public dynamic class curve45_mc extends MovieClip { } }//package
Section 132
//d_phys (d_phys) package { import flash.display.*; public dynamic class d_phys extends MovieClip { public var b:MovieClip; public var a:MovieClip; } }//package
Section 133
//d135_mc (d135_mc) package { import flash.display.*; public dynamic class d135_mc extends MovieClip { } }//package
Section 134
//d135_tm (d135_tm) package { import flash.display.*; public dynamic class d135_tm extends MovieClip { } }//package
Section 135
//d45_mc (d45_mc) package { import flash.display.*; public dynamic class d45_mc extends MovieClip { } }//package
Section 136
//d45_tm (d45_tm) package { import flash.display.*; public dynamic class d45_tm extends MovieClip { } }//package
Section 137
//debug_mc (debug_mc) package { import flash.display.*; import flash.text.*; public dynamic class debug_mc extends MovieClip { public var txt:TextField; } }//package
Section 138
//dot_mc (dot_mc) package { import flash.display.*; public dynamic class dot_mc extends MovieClip { } }//package
Section 139
//edge_mc (edge_mc) package { import flash.display.*; public dynamic class edge_mc extends MovieClip { } }//package
Section 140
//explosion_mc (explosion_mc) package { import flash.display.*; public dynamic class explosion_mc extends MovieClip { public function explosion_mc(){ addFrameScript(30, frame31); } function frame31(){ stop(); this.parent.removeChild(this); } } }//package
Section 141
//frame_mc (frame_mc) package { import flash.display.*; public dynamic class frame_mc extends MovieClip { } }//package
Section 142
//gameCanvas_mc (gameCanvas_mc) package { import flash.display.*; public dynamic class gameCanvas_mc extends MovieClip { } }//package
Section 143
//gameover (gameover) package { import flash.media.*; public dynamic class gameover extends Sound { } }//package
Section 144
//gameOverScreen_mc (gameOverScreen_mc) package { import flash.display.*; import flash.text.*; public dynamic class gameOverScreen_mc extends MovieClip { public var message2:TextField; public var message3:TextField; public var message1:TextField; public var _More_Games_:MovieClip; public var submitGhost:MovieClip; public var _Coolbuddy$com_:MovieClip; public var _Next_Track_:MovieClip; public var _Multi_Ghost_:MovieClip; public var cup1:MovieClip; public var _Facebook_:MovieClip; public var cup2:MovieClip; public var _Quit_to_Menu_:MovieClip; public var _Submit_:MovieClip; public var _Try_Again_:MovieClip; } }//package
Section 145
//gameWav (gameWav) package { import flash.media.*; public dynamic class gameWav extends Sound { } }//package
Section 146
//ghostBall_mc (ghostBall_mc) package { import flash.display.*; public dynamic class ghostBall_mc extends MovieClip { } }//package
Section 147
//gui_mc (gui_mc) package { import flash.display.*; import flash.text.*; public dynamic class gui_mc extends MovieClip { public var lapTime:TextField; public var message:TextField; public var bestLap:TextField; public var coolbuddy:SimpleButton; public var help:MovieClip; public var quitButton:SimpleButton; public var boostBar:MovieClip; public var resetButton:SimpleButton; public var lap:TextField; } }//package
Section 148
//h_mc (h_mc) package { import flash.display.*; public dynamic class h_mc extends MovieClip { } }//package
Section 149
//h_tm (h_tm) package { import flash.display.*; public dynamic class h_tm extends MovieClip { } }//package
Section 150
//highlight_mc (highlight_mc) package { import flash.display.*; public dynamic class highlight_mc extends MovieClip { } }//package
Section 151
//highscores_mc (highscores_mc) package { import flash.display.*; import flash.text.*; public dynamic class highscores_mc extends MovieClip { public var nameDisplay:TextField; public var scoreDisplay:TextField; public var connectingDisplay:TextField; public var rankDisplay:TextField; } }//package
Section 152
//hintBox_mc (hintBox_mc) package { import flash.display.*; import flash.text.*; public dynamic class hintBox_mc extends MovieClip { public var message:TextField; } }//package
Section 153
//hintBox_template (hintBox_template) package { import flash.display.*; public dynamic class hintBox_template extends MovieClip { } }//package
Section 154
//hiscoreSelect_mc (hiscoreSelect_mc) package { import flash.display.*; public dynamic class hiscoreSelect_mc extends MovieClip { public var i5:icon5_mc; public var i4:icon4_mc; public var _Back_:MovieClip; public var hiscoreSelectButtonHolder:MovieClip; public var i1:icon1_mc; public var i2:icon2_mc; public var i3:icon3_mc; } }//package
Section 155
//icon1_mc (icon1_mc) package { import flash.display.*; public dynamic class icon1_mc extends MovieClip { } }//package
Section 156
//icon2_mc (icon2_mc) package { import flash.display.*; public dynamic class icon2_mc extends MovieClip { } }//package
Section 157
//icon3_mc (icon3_mc) package { import flash.display.*; public dynamic class icon3_mc extends MovieClip { } }//package
Section 158
//icon4_mc (icon4_mc) package { import flash.display.*; public dynamic class icon4_mc extends MovieClip { } }//package
Section 159
//icon5_mc (icon5_mc) package { import flash.display.*; public dynamic class icon5_mc extends MovieClip { } }//package
Section 160
//launchButton_bt (launchButton_bt) package { import flash.display.*; public dynamic class launchButton_bt extends SimpleButton { } }//package
Section 161
//letters_mc (letters_mc) package { import flash.display.*; public dynamic class letters_mc extends MovieClip { public var _p:MovieClip; public var _t:MovieClip; public var _v:MovieClip; public var _y:MovieClip; public var _r:MovieClip; public var _j:MovieClip; public var _o:MovieClip; public var _i:MovieClip; public var _m:MovieClip; public var _n:MovieClip; public var _k:MovieClip; public var _b:MovieClip; public var _q:MovieClip; public var _s:MovieClip; public var _a:MovieClip; public var _c:MovieClip; public var _z:MovieClip; public var _d:MovieClip; public var _e:MovieClip; public var _h:MovieClip; public var _l:MovieClip; public var _f:MovieClip; public var _g:MovieClip; public var _x:MovieClip; public var _u:MovieClip; public var _w:MovieClip; } }//package
Section 162
//levelContainer_mc (levelContainer_mc) package { import flash.display.*; public dynamic class levelContainer_mc extends MovieClip { } }//package
Section 163
//levelInfo_mc (levelInfo_mc) package { import flash.display.*; import flash.text.*; public dynamic class levelInfo_mc extends MovieClip { public var _More_Games_:MovieClip; public var _Back_:MovieClip; public var infoText:TextField; public var level:TextField; public var _Continue_:MovieClip; } }//package
Section 164
//levelSelect_mc (levelSelect_mc) package { import flash.display.*; import flash.text.*; public dynamic class levelSelect_mc extends MovieClip { public var i5:icon5_mc; public var i4:icon4_mc; public var levelButtonHolder:MovieClip; public var _More_Games_:MovieClip; public var _Back_:MovieClip; public var trackName:TextField; public var i1:icon1_mc; public var i2:icon2_mc; public var i3:icon3_mc; } }//package
Section 165
//levelThumb (levelThumb) package { import flash.display.*; public dynamic class levelThumb extends SimpleButton { } }//package
Section 166
//menu_mc (menu_mc) package { import flash.display.*; public dynamic class menu_mc extends MovieClip { public var _More_Games_:MovieClip; public var _Coolbuddy$com_:MovieClip; public var _Credits_:MovieClip; public var credits:MovieClip; public var _Hiscores_:MovieClip; public var _Play_:MovieClip; public function menu_mc(){ addFrameScript(0, frame1); } function frame1(){ } } }//package
Section 167
//menuStars_mc (menuStars_mc) package { import flash.display.*; public dynamic class menuStars_mc extends MovieClip { public var bg2:bg3_mc; public var bg1:bg2_mc; } }//package
Section 168
//menuWav (menuWav) package { import flash.media.*; public dynamic class menuWav extends Sound { } }//package
Section 169
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; 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 170
//modeSelect_mc (modeSelect_mc) package { import flash.display.*; public dynamic class modeSelect_mc extends MovieClip { public var _More_Games_:MovieClip; public var modeHolder:MovieClip; public var padlock:padlock_mc; public var _Back_:MovieClip; } }//package
Section 171
//musicToggle_mc (musicToggle_mc) package { import flash.display.*; public dynamic class musicToggle_mc extends MovieClip { public function musicToggle_mc(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 172
//myBall_mc (myBall_mc) package { import flash.display.*; public dynamic class myBall_mc extends MovieClip { } }//package
Section 173
//myBall_template (myBall_template) package { import flash.display.*; public dynamic class myBall_template extends MovieClip { } }//package
Section 174
//padlock_mc (padlock_mc) package { import flash.display.*; public dynamic class padlock_mc extends MovieClip { } }//package
Section 175
//pivotV_mc (pivotV_mc) package { import flash.display.*; public dynamic class pivotV_mc extends MovieClip { } }//package
Section 176
//pivotV_template (pivotV_template) package { import flash.display.*; public dynamic class pivotV_template extends MovieClip { } }//package
Section 177
//preloader_mc (preloader_mc) package { import flash.display.*; import flash.text.*; public dynamic class preloader_mc extends MovieClip { public var loadingBar:MovieClip; public var loadingText:TextField; } }//package
Section 178
//puckBlue_mc (puckBlue_mc) package { import flash.display.*; public dynamic class puckBlue_mc extends MovieClip { } }//package
Section 179
//puckBlue_template (puckBlue_template) package { import flash.display.*; public dynamic class puckBlue_template extends MovieClip { } }//package
Section 180
//rotator_mc (rotator_mc) package { import flash.display.*; public dynamic class rotator_mc extends MovieClip { } }//package
Section 181
//rotator_template (rotator_template) package { import flash.display.*; public dynamic class rotator_template extends MovieClip { } }//package
Section 182
//rotatorLong_mc (rotatorLong_mc) package { import flash.display.*; public dynamic class rotatorLong_mc extends MovieClip { } }//package
Section 183
//rotatorLongC_template (rotatorLongC_template) package { import flash.display.*; public dynamic class rotatorLongC_template extends MovieClip { } }//package
Section 184
//rotatorLongCC_template (rotatorLongCC_template) package { import flash.display.*; public dynamic class rotatorLongCC_template extends MovieClip { } }//package
Section 185
//roundShadow_mc (roundShadow_mc) package { import flash.display.*; public dynamic class roundShadow_mc extends MovieClip { } }//package
Section 186
//roundShadow2_mc (roundShadow2_mc) package { import flash.display.*; public dynamic class roundShadow2_mc extends MovieClip { } }//package
Section 187
//s1_mc (s1_mc) package { import flash.display.*; public dynamic class s1_mc extends MovieClip { } }//package
Section 188
//s1_tm (s1_tm) package { import flash.display.*; public dynamic class s1_tm extends MovieClip { } }//package
Section 189
//s12_mc (s12_mc) package { import flash.display.*; public dynamic class s12_mc extends MovieClip { } }//package
Section 190
//s12_tm (s12_tm) package { import flash.display.*; public dynamic class s12_tm extends MovieClip { } }//package
Section 191
//s14_mc (s14_mc) package { import flash.display.*; public dynamic class s14_mc extends MovieClip { } }//package
Section 192
//s14_tm (s14_tm) package { import flash.display.*; public dynamic class s14_tm extends MovieClip { } }//package
Section 193
//s3_mc (s3_mc) package { import flash.display.*; public dynamic class s3_mc extends MovieClip { } }//package
Section 194
//s3_tm (s3_tm) package { import flash.display.*; public dynamic class s3_tm extends MovieClip { } }//package
Section 195
//s32_mc (s32_mc) package { import flash.display.*; public dynamic class s32_mc extends MovieClip { } }//package
Section 196
//s32_tm (s32_tm) package { import flash.display.*; public dynamic class s32_tm extends MovieClip { } }//package
Section 197
//s36_mc (s36_mc) package { import flash.display.*; public dynamic class s36_mc extends MovieClip { } }//package
Section 198
//s36_tm (s36_tm) package { import flash.display.*; public dynamic class s36_tm extends MovieClip { } }//package
Section 199
//s7_mc (s7_mc) package { import flash.display.*; public dynamic class s7_mc extends MovieClip { } }//package
Section 200
//s7_tm (s7_tm) package { import flash.display.*; public dynamic class s7_tm extends MovieClip { } }//package
Section 201
//s74_mc (s74_mc) package { import flash.display.*; public dynamic class s74_mc extends MovieClip { } }//package
Section 202
//s74_tm (s74_tm) package { import flash.display.*; public dynamic class s74_tm extends MovieClip { } }//package
Section 203
//s78_mc (s78_mc) package { import flash.display.*; public dynamic class s78_mc extends MovieClip { } }//package
Section 204
//s78_tm (s78_tm) package { import flash.display.*; public dynamic class s78_tm extends MovieClip { } }//package
Section 205
//s9_mc (s9_mc) package { import flash.display.*; public dynamic class s9_mc extends MovieClip { } }//package
Section 206
//s9_tm (s9_tm) package { import flash.display.*; public dynamic class s9_tm extends MovieClip { } }//package
Section 207
//s96_mc (s96_mc) package { import flash.display.*; public dynamic class s96_mc extends MovieClip { } }//package
Section 208
//s96_tm (s96_tm) package { import flash.display.*; public dynamic class s96_tm extends MovieClip { } }//package
Section 209
//s98_mc (s98_mc) package { import flash.display.*; public dynamic class s98_mc extends MovieClip { } }//package
Section 210
//s98_tm (s98_tm) package { import flash.display.*; public dynamic class s98_tm extends MovieClip { } }//package
Section 211
//shimmer (shimmer) package { import flash.media.*; public dynamic class shimmer extends Sound { } }//package
Section 212
//soundToggle_mc (soundToggle_mc) package { import flash.display.*; public dynamic class soundToggle_mc extends MovieClip { public function soundToggle_mc(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 213
//squareShadow_mc (squareShadow_mc) package { import flash.display.*; public dynamic class squareShadow_mc extends MovieClip { } }//package
Section 214
//star_mc (star_mc) package { import flash.display.*; public dynamic class star_mc extends MovieClip { } }//package
Section 215
//starburst_mc (starburst_mc) package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.media.*; import flash.text.*; import flash.geom.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class starburst_mc extends MovieClip { public var label:TextField; public var gravity:Number; public var numberOfSplatters:uint; public var splatterArray:Array; public function starburst_mc(){ addFrameScript(0, frame1); } function frame1(){ label.visible = false; splatterArray = new Array(); numberOfSplatters = 40; gravity = 0.2; spawnSplatters("medium"); this.addEventListener(Event.ENTER_FRAME, moveSplatters); setTimeout(removeThis, 2500); } public function spawnSplatters(_arg1:String):void{ var _local2:*; var _local3:*; _local2 = 1; while (_local2 <= numberOfSplatters) { _local3 = new star_mc(); splatterArray[_local2] = _local3; if (_arg1 == "medium"){ splatterArray[_local2].height = (splatterArray[_local2].height * 0.2); splatterArray[_local2].width = (splatterArray[_local2].width * 0.2); }; if (_arg1 == "small"){ splatterArray[_local2].height = (splatterArray[_local2].height * 0.1); splatterArray[_local2].width = (splatterArray[_local2].width * 0.1); }; this.addChild(splatterArray[_local2]); splatterArray[_local2].splatSpeedY = (-3 - (Math.random() * 3)); splatterArray[_local2].splatSpeedX = (-3 + (Math.random() * 6)); splatterArray[_local2].dead = false; _local2++; }; } public function removeThis():void{ this.removeEventListener(Event.ENTER_FRAME, moveSplatters); this.parent.removeChild(this); } public function moveSplatters(_arg1:Event):void{ var _local2:*; _local2 = 1; while (_local2 <= numberOfSplatters) { if (((!((splatterArray[_local2] == undefined))) && (!((splatterArray[_local2] == 0))))){ if (splatterArray[_local2].dead == false){ splatterArray[_local2].x = (splatterArray[_local2].x + splatterArray[_local2].splatSpeedX); splatterArray[_local2].y = (splatterArray[_local2].y + splatterArray[_local2].splatSpeedY); splatterArray[_local2].splatSpeedY = (splatterArray[_local2].splatSpeedY + gravity); splatterArray[_local2].rotation = ((-180 / Math.PI) * Math.atan2(splatterArray[_local2].splatSpeedX, splatterArray[_local2].splatSpeedY)); splatterArray[_local2].alpha = (splatterArray[_local2].alpha - 0.015); }; if (splatterArray[_local2].y > 35){ splatterArray[_local2].dead = true; splatterArray[_local2].visible = false; }; }; _local2++; }; } } }//package
Section 216
//start_mc (start_mc) package { import flash.display.*; public dynamic class start_mc extends MovieClip { public var hitzone:MovieClip; } }//package
Section 217
//start_tm (start_tm) package { import flash.display.*; public dynamic class start_tm extends MovieClip { } }//package
Section 218
//str_phys (str_phys) package { import flash.display.*; public dynamic class str_phys extends MovieClip { public var b:MovieClip; public var a:MovieClip; } }//package
Section 219
//ticker_mc (ticker_mc) package { import flash.display.*; public dynamic class ticker_mc extends MovieClip { public var mc:MovieClip; } }//package
Section 220
//v_mc (v_mc) package { import flash.display.*; public dynamic class v_mc extends MovieClip { } }//package
Section 221
//v_tm (v_tm) package { import flash.display.*; public dynamic class v_tm extends MovieClip { } }//package
Section 222
//wall_mc (wall_mc) package { import flash.display.*; public dynamic class wall_mc extends MovieClip { } }//package
Section 223
//wallH_template (wallH_template) package { import flash.display.*; public dynamic class wallH_template extends MovieClip { } }//package
Section 224
//wallV_template (wallV_template) package { import flash.display.*; public dynamic class wallV_template extends MovieClip { } }//package
Section 225
//waypoint_mc (waypoint_mc) package { import flash.display.*; public dynamic class waypoint_mc extends MovieClip { } }//package
Section 226
//vertex_mc (vertex_mc) package { import flash.display.*; public dynamic class vertex_mc extends MovieClip { } }//package
Section 227
//win (win) package { import flash.media.*; public dynamic class win extends Sound { } }//package
Section 228
//x_mc (x_mc) package { import flash.display.*; public dynamic class x_mc extends MovieClip { } }//package
Section 229
//x_phys (x_phys) package { import flash.display.*; public dynamic class x_phys extends MovieClip { public var c:MovieClip; public var b:MovieClip; public var d:MovieClip; public var a:MovieClip; } }//package
Section 230
//x_tm (x_tm) package { import flash.display.*; public dynamic class x_tm extends MovieClip { } }//package

Library Items

Symbol 1 GraphicUsed by:64 440 463
Symbol 2 FontUsed by:3 9 75 248 277 280 287 289 435 460
Symbol 3 TextUses:2Used by:64
Symbol 4 GraphicUsed by:7 8
Symbol 5 GraphicUsed by:6 8
Symbol 6 MovieClipUses:5Used by:7
Symbol 7 MovieClipUses:4 6Used by:8
Symbol 8 ButtonUses:7 4 5Used by:10
Symbol 9 EditableTextUses:2Used by:10
Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}Uses:8 9Used by:64 76 231 232 274 279 281 295 296 436 440 462 463  Timeline
Symbol 11 GraphicUsed by:12 21
Symbol 12 MovieClip {myBall_mc}Uses:11Used by:20 212 464
Symbol 13 GraphicUsed by:14 21
Symbol 14 MovieClip {ballShading_mc}Uses:13Used by:20 464
Symbol 15 BitmapUsed by:16
Symbol 16 GraphicUses:15Used by:17 21
Symbol 17 MovieClip {highlight_mc}Uses:16Used by:20 179 181 464
Symbol 18 GraphicUsed by:19 21
Symbol 19 MovieClipUses:18Used by:20 361
Symbol 20 MovieClipUses:12 14 17 19Used by:21
Symbol 21 Button {levelThumb}Uses:20 11 13 16 18Used by:28
Symbol 22 FontUsed by:23 24 25 26 27 292
Symbol 23 TextUses:22Used by:28
Symbol 24 TextUses:22Used by:28
Symbol 25 TextUses:22Used by:28
Symbol 26 TextUses:22Used by:28
Symbol 27 TextUses:22Used by:28
Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237}Uses:21 23 24 25 26 27Used by:64
Symbol 29 GraphicUsed by:64
Symbol 30 FontUsed by:31 65 77 199 200 245 246 266 267 268 269 270 271 273 285 294 455 461
Symbol 31 EditableTextUses:30Used by:64
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClip {s1_tm}Uses:32Used by:43 54 59 60 63 314 315 316 317 318 464
Symbol 34 GraphicUsed by:35
Symbol 35 MovieClip {s3_tm}Uses:34Used by:43 54 59 60 63 314 315 316 317 318 464
Symbol 36 GraphicUsed by:37
Symbol 37 MovieClip {s7_tm}Uses:36Used by:43 54 59 60 63 314 315 316 317 318 464
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClip {s9_tm}Uses:38Used by:43 54 59 60 63 314 315 316 317 318 464
Symbol 40 GraphicUsed by:41 42
Symbol 41 MovieClip {v_tm}Uses:40Used by:43 44 54 59 60 63 314 315 316 317 318 464
Symbol 42 MovieClip {h_tm}Uses:40Used by:43 54 59 60 63 314 315 316 317 318 464
Symbol 43 MovieClip {icon1_mc}Uses:33 35 37 39 41 42Used by:64 463 464
Symbol 44 MovieClip {x_tm}Uses:41Used by:54 60 315 317 464
Symbol 45 GraphicUsed by:48
Symbol 46 GraphicUsed by:47 82 91 92 102 296  Timeline
Symbol 47 MovieClipUses:46Used by:48 51 350 358 379 392 397
Symbol 48 MovieClipUses:45 47Used by:49 53 55 56 57 58 61 62
Symbol 49 MovieClip {s14_tm}Uses:48Used by:54 59 63 315 316 318 464
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClip {d45_tm}Uses:50 47Used by:52 59 63 316 318 464
Symbol 52 MovieClip {d135_tm}Uses:51Used by:54 63 315 318 464
Symbol 53 MovieClip {s96_tm}Uses:48Used by:54 59 63 315 316 318 464
Symbol 54 MovieClip {icon2_mc}Uses:44 42 41 37 33 39 35 49 52 53Used by:64 463 464
Symbol 55 MovieClip {s36_tm}Uses:48Used by:59 63 316 318 464
Symbol 56 MovieClip {s74_tm}Uses:48Used by:59 63 316 318 464
Symbol 57 MovieClip {s32_tm}Uses:48Used by:59 63 316 318 464
Symbol 58 MovieClip {s78_tm}Uses:48Used by:59 63 316 318 464
Symbol 59 MovieClip {icon3_mc}Uses:33 35 39 37 42 41 49 55 53 51 56 57 58Used by:64 463 464
Symbol 60 MovieClip {icon4_mc}Uses:44 42 41 37 33 39 35Used by:64 463 464
Symbol 61 MovieClip {s98_tm}Uses:48Used by:63 318 464
Symbol 62 MovieClip {s12_tm}Uses:48Used by:63 318 464
Symbol 63 MovieClip {icon5_mc}Uses:33 35 42 41 56 51 55 53 52 61 58 57 49 62 39 37Used by:64 463 464
Symbol 64 MovieClip {levelSelect_mc}Uses:1 3 10 28 29 31 43 54 59 60 63
Symbol 65 EditableTextUses:30Used by:66
Symbol 66 MovieClip {debug_mc}Uses:65
Symbol 67 GraphicUsed by:68 308
Symbol 68 MovieClip {aiBall_mc}Uses:67Used by:464
Symbol 69 GraphicUsed by:70
Symbol 70 MovieClipUses:69Used by:71
Symbol 71 MovieClip {dot_mc}Uses:70Used by:400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
Symbol 72 GraphicUsed by:73
Symbol 73 MovieClip {puckBlue_mc}Uses:72Used by:322 464
Symbol 74 GraphicUsed by:76 281
Symbol 75 TextUses:2Used by:76
Symbol 76 MovieClip {confirmReset_mc}Uses:74 10 75Used by:464
Symbol 77 EditableTextUses:30Used by:81
Symbol 78 GraphicUsed by:79
Symbol 79 MovieClipUses:78Used by:81
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClip {preloader_mc}Uses:77 79 80Used by:Timeline
Symbol 82 MovieClipUses:46Used by:Timeline
Symbol 83 BitmapUsed by:84 99 217 220
Symbol 84 GraphicUses:83Used by:85
Symbol 85 MovieClipUses:84Used by:Timeline
Symbol 86 FontUsed by:87 230 278 286 437 438 439
Symbol 87 TextUses:86Used by:91
Symbol 88 BitmapUsed by:90
Symbol 89 BitmapUsed by:90 93
Symbol 90 GraphicUses:88 89Used by:91
Symbol 91 MovieClipUses:46 87 90Used by:Timeline
Symbol 92 MovieClipUses:46Used by:101
Symbol 93 GraphicUses:89Used by:94
Symbol 94 MovieClipUses:93Used by:95 101
Symbol 95 MovieClipUses:94Used by:101
Symbol 96 BitmapUsed by:97
Symbol 97 GraphicUses:96Used by:98
Symbol 98 MovieClipUses:97Used by:101
Symbol 99 GraphicUses:83Used by:100
Symbol 100 MovieClipUses:99Used by:101
Symbol 101 MovieClip {galaxoball_fla.andromedusIntro_mc_10}Uses:92 95 98 100 94Used by:Timeline
Symbol 102 MovieClip {blackScreen_mc}Uses:46Used by:464  Timeline
Symbol 103 FontUsed by:104 198 210 252 256 261 264 298 300 302
Symbol 104 TextUses:103Used by:Timeline
Symbol 105 GraphicUsed by:464
Symbol 106 FontUsed by:107 108 215 236 237 238 239
Symbol 107 TextUses:106Used by:464
Symbol 108 TextUses:106Used by:464
Symbol 109 BitmapUsed by:110
Symbol 110 GraphicUses:109Used by:111
Symbol 111 MovieClip {padlock_mc}Uses:110Used by:440 464
Symbol 112 MovieClip {gameCanvas_mc}Used by:464
Symbol 113 GraphicUsed by:114
Symbol 114 MovieClip {crosshairs_mc}Uses:113Used by:464
Symbol 115 GraphicUsed by:116
Symbol 116 MovieClip {pivotV_mc}Uses:115Used by:117 464
Symbol 117 MovieClip {pivotV_template}Uses:116Used by:464
Symbol 118 GraphicUsed by:119 120 121
Symbol 119 MovieClip {wallH_template}Uses:118Used by:464
Symbol 120 MovieClip {wallV_template}Uses:118Used by:464
Symbol 121 MovieClipUses:118Used by:122
Symbol 122 MovieClip {wall_mc}Uses:121Used by:464
Symbol 123 FontUsed by:124 178
Symbol 124 EditableTextUses:123Used by:131
Symbol 125 Sound {constant}Used by:131
Symbol 126 Sound {shimmer}Used by:131
Symbol 127 Sound {win}Used by:131
Symbol 128 Sound {gameover}Used by:131
Symbol 129 Sound {gameWav}Used by:131
Symbol 130 Sound {menuWav}Used by:131
Symbol 131 MovieClipUses:124 125 126 127 128 129 130Used by:464
Symbol 132 BitmapUsed by:133
Symbol 133 GraphicUses:132Used by:134
Symbol 134 MovieClipUses:133Used by:142
Symbol 135 BitmapUsed by:136
Symbol 136 GraphicUses:135Used by:142
Symbol 137 BitmapUsed by:138
Symbol 138 GraphicUses:137Used by:139
Symbol 139 MovieClipUses:138Used by:142
Symbol 140 BitmapUsed by:141
Symbol 141 GraphicUses:140Used by:142
Symbol 142 MovieClip {soundToggle_mc}Uses:134 136 139 141Used by:464
Symbol 143 BitmapUsed by:144
Symbol 144 GraphicUses:143Used by:145
Symbol 145 MovieClipUses:144Used by:153
Symbol 146 BitmapUsed by:147
Symbol 147 GraphicUses:146Used by:153
Symbol 148 BitmapUsed by:149
Symbol 149 GraphicUses:148Used by:150
Symbol 150 MovieClipUses:149Used by:153
Symbol 151 BitmapUsed by:152
Symbol 152 GraphicUses:151Used by:153
Symbol 153 MovieClip {musicToggle_mc}Uses:145 147 150 152Used by:464
Symbol 154 GraphicUsed by:155 372
Symbol 155 MovieClipUses:154Used by:158
Symbol 156 FontUsed by:157 164
Symbol 157 EditableTextUses:156Used by:158
Symbol 158 MovieClip {galaxoball_fla.textField_mc_35}Uses:155 157Used by:159
Symbol 159 MovieClip {ticker_mc}Uses:158Used by:464
Symbol 160 FontUsed by:161
Symbol 161 EditableTextUses:160Used by:162
Symbol 162 MovieClip {hintBox_mc}Uses:161Used by:163 464
Symbol 163 MovieClip {hintBox_template}Uses:162Used by:464
Symbol 164 EditableTextUses:156Used by:165
Symbol 165 MovieClip {bonusDisplay_mc}Uses:164Used by:464
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClipUses:166Used by:168
Symbol 168 MovieClip {annihilationEffect_mc}Uses:167Used by:464
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClipUses:169Used by:171
Symbol 171 MovieClip {roundShadow_mc}Uses:170Used by:179 181 464
Symbol 172 GraphicUsed by:179
Symbol 173 GraphicUsed by:175
Symbol 174 GraphicUsed by:175
Symbol 175 MovieClip {galaxoball_fla.bumperLight_46}Uses:173 174Used by:179
Symbol 176 GraphicUsed by:177
Symbol 177 MovieClipUses:176Used by:179 181
Symbol 178 TextUses:123Used by:179
Symbol 179 MovieClip {bumper_mc}Uses:171 172 175 177 17 178Used by:464
Symbol 180 GraphicUsed by:181
Symbol 181 MovieClip {bumper_template}Uses:171 180 177 17Used by:464
Symbol 182 GraphicUsed by:183
Symbol 183 MovieClip {rotatorLong_mc}Uses:182Used by:464
Symbol 184 GraphicUsed by:185
Symbol 185 MovieClip {rotatorLongC_template}Uses:184Used by:464
Symbol 186 GraphicUsed by:187
Symbol 187 MovieClip {rotatorLongCC_template}Uses:186Used by:464
Symbol 188 BitmapUsed by:189 194 365
Symbol 189 GraphicUses:188Used by:192
Symbol 190 FontUsed by:191
Symbol 191 TextUses:190Used by:192
Symbol 192 MovieClipUses:189 191Used by:193
Symbol 193 MovieClip {bg2_mc}Uses:192Used by:197 427 464
Symbol 194 GraphicUses:188Used by:195
Symbol 195 MovieClipUses:194Used by:196
Symbol 196 MovieClip {bg3_mc}Uses:195Used by:197 427 464
Symbol 197 MovieClip {blueGradient_mc}Uses:193 196Used by:211 464
Symbol 198 TextUses:103Used by:211
Symbol 199 TextUses:30Used by:201
Symbol 200 TextUses:30Used by:201
Symbol 201 ButtonUses:199 200Used by:211
Symbol 202 FontUsed by:203 204 205 206 207 208 209
Symbol 203 TextUses:202Used by:211
Symbol 204 TextUses:202Used by:211
Symbol 205 TextUses:202Used by:211
Symbol 206 TextUses:202Used by:211
Symbol 207 TextUses:202Used by:211
Symbol 208 TextUses:202Used by:211
Symbol 209 TextUses:202Used by:211
Symbol 210 EditableTextUses:103Used by:211
Symbol 211 MovieClip {awards_mc}Uses:197 198 201 203 204 205 206 207 208 209 210Used by:464
Symbol 212 MovieClip {myBall_template}Uses:12Used by:314 315 316 317 318 464
Symbol 213 GraphicUsed by:214
Symbol 214 MovieClip {star_mc}Uses:213Used by:464
Symbol 215 EditableTextUses:106Used by:216
Symbol 216 MovieClip {starburst_mc}Uses:215Used by:464
Symbol 217 GraphicUses:83Used by:218
Symbol 218 MovieClipUses:217Used by:219
Symbol 219 MovieClip {galaxoball_fla.menuLines_mc_65}Uses:218Used by:232
Symbol 220 GraphicUses:83Used by:232
Symbol 221 GraphicUsed by:222
Symbol 222 MovieClipUses:221Used by:223
Symbol 223 MovieClipUses:222Used by:232
Symbol 224 GraphicUsed by:225
Symbol 225 MovieClipUses:224Used by:231
Symbol 226 BitmapUsed by:227
Symbol 227 GraphicUses:226Used by:228 229
Symbol 228 MovieClipUses:227Used by:229
Symbol 229 ButtonUses:228 227Used by:231
Symbol 230 TextUses:86Used by:231
Symbol 231 MovieClip {galaxoball_fla.credits_mc_69}Uses:225 10 229 230Used by:232
Symbol 232 MovieClip {menu_mc}Uses:219 220 10 223 231Used by:464
Symbol 233 FontUsed by:234
Symbol 234 TextUses:233Used by:240
Symbol 235 GraphicUsed by:240
Symbol 236 EditableTextUses:106Used by:240
Symbol 237 EditableTextUses:106Used by:240
Symbol 238 EditableTextUses:106Used by:240
Symbol 239 EditableTextUses:106Used by:240
Symbol 240 MovieClip {highscores_mc}Uses:234 235 236 237 238 239Used by:464
Symbol 241 BitmapUsed by:242
Symbol 242 GraphicUses:241Used by:275
Symbol 243 GraphicUsed by:244
Symbol 244 MovieClipUses:243Used by:275
Symbol 245 TextUses:30Used by:275
Symbol 246 TextUses:30Used by:247
Symbol 247 ButtonUses:246Used by:275
Symbol 248 EditableTextUses:2Used by:275
Symbol 249 BitmapUsed by:250
Symbol 250 GraphicUses:249Used by:251
Symbol 251 MovieClipUses:250Used by:257
Symbol 252 TextUses:103Used by:257
Symbol 253 GraphicUsed by:257 265
Symbol 254 BitmapUsed by:255
Symbol 255 GraphicUses:254Used by:257
Symbol 256 TextUses:103Used by:257
Symbol 257 ButtonUses:251 252 253 255 256Used by:275
Symbol 258 BitmapUsed by:259
Symbol 259 GraphicUses:258Used by:260
Symbol 260 MovieClipUses:259Used by:265
Symbol 261 TextUses:103Used by:265
Symbol 262 BitmapUsed by:263
Symbol 263 GraphicUses:262Used by:265
Symbol 264 TextUses:103Used by:265
Symbol 265 ButtonUses:260 261 253 263 264Used by:275
Symbol 266 TextUses:30Used by:275
Symbol 267 EditableTextUses:30Used by:275
Symbol 268 EditableTextUses:30Used by:275
Symbol 269 TextUses:30Used by:275
Symbol 270 EditableTextUses:30Used by:275
Symbol 271 TextUses:30Used by:275
Symbol 272 GraphicUsed by:274
Symbol 273 TextUses:30Used by:274
Symbol 274 MovieClip {galaxoball_fla.help_mc_81}Uses:272 10 273Used by:275
Symbol 275 MovieClip {gui_mc}Uses:242 244 245 247 248 257 265 266 267 268 269 270 271 274Used by:464
Symbol 276 GraphicUsed by:279
Symbol 277 EditableTextUses:2Used by:279
Symbol 278 EditableTextUses:86Used by:279
Symbol 279 MovieClip {levelInfo_mc}Uses:276 10 277 278Used by:464
Symbol 280 TextUses:2Used by:281
Symbol 281 MovieClip {confirmQuit_mc}Uses:74 10 280Used by:464
Symbol 282 BitmapUsed by:283
Symbol 283 GraphicUses:282Used by:284
Symbol 284 MovieClipUses:283Used by:296
Symbol 285 EditableTextUses:30Used by:296
Symbol 286 EditableTextUses:86Used by:296
Symbol 287 EditableTextUses:2Used by:296
Symbol 288 GraphicUsed by:295
Symbol 289 TextUses:2Used by:295
Symbol 290 GraphicUsed by:291 320
Symbol 291 MovieClipUses:290Used by:295
Symbol 292 EditableTextUses:22Used by:295
Symbol 293 GraphicUsed by:295
Symbol 294 EditableTextUses:30Used by:295
Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86}Uses:288 289 10 291 292 293 294Used by:296
Symbol 296 MovieClip {gameOverScreen_mc}Uses:46 10 284 285 286 287 295Used by:464
Symbol 297 GraphicUsed by:299 301 303
Symbol 298 TextUses:103Used by:299
Symbol 299 MovieClip {start_tm}Uses:297 298Used by:314 315 316 317 318 464
Symbol 300 TextUses:103Used by:301
Symbol 301 MovieClip {check1_tm}Uses:297 300Used by:314 315 316 317 318 464
Symbol 302 TextUses:103Used by:303
Symbol 303 MovieClip {check2_tm}Uses:297 302Used by:314 315 316 317 318 464
Symbol 304 GraphicUsed by:305
Symbol 305 MovieClip {arrowSignR_mc}Uses:304Used by:314 315 316 318 464
Symbol 306 GraphicUsed by:307
Symbol 307 MovieClip {arrowSignL_mc}Uses:306Used by:314 315 316 318 464
Symbol 308 MovieClip {aiBall_template}Uses:67Used by:314 315 316 317 318 464
Symbol 309 GraphicUsed by:310
Symbol 310 MovieClip {waypoint_mc}Uses:309Used by:314 315 316 317 318 464
Symbol 311 GraphicUsed by:312
Symbol 312 MovieClipUses:311Used by:313
Symbol 313 MovieClip {battery_mc}Uses:312Used by:314 315 316 317 318 464
Symbol 314 MovieClipUses:33 35 37 39 41 42 299 301 303 305 307 212 308 310 313Used by:319
Symbol 315 MovieClipUses:44 42 41 37 33 39 35 49 52 53 301 303 299 305 307 212 308 310 313Used by:319
Symbol 316 MovieClipUses:33 35 39 37 42 41 49 55 53 51 56 57 58 299 301 303 212 308 307 305 310 313Used by:319
Symbol 317 MovieClipUses:44 42 41 37 33 39 35 301 303 299 212 308 310 313Used by:319
Symbol 318 MovieClipUses:33 35 42 41 56 51 55 53 52 61 58 57 49 62 39 37 299 301 303 212 308 307 305 313 310Used by:319
Symbol 319 MovieClip {levelContainer_mc}Uses:314 315 316 317 318Used by:464
Symbol 320 MovieClipUses:290Used by:321
Symbol 321 MovieClip {squareShadow_mc}Uses:320Used by:464
Symbol 322 MovieClip {puckBlue_template}Uses:73Used by:464
Symbol 323 GraphicUsed by:324
Symbol 324 MovieClipUses:323Used by:329
Symbol 325 GraphicUsed by:326
Symbol 326 MovieClipUses:325Used by:329
Symbol 327 GraphicUsed by:328
Symbol 328 MovieClipUses:327Used by:329
Symbol 329 MovieClip {explosion_mc}Uses:324 326 328Used by:464
Symbol 330 GraphicUsed by:331
Symbol 331 MovieClip {rotator_template}Uses:330Used by:464
Symbol 332 GraphicUsed by:333
Symbol 333 MovieClip {rotator_mc}Uses:332Used by:464
Symbol 334 GraphicUsed by:335
Symbol 335 MovieClip {vertex_mc}Uses:334Used by:336 339 340 353 354 388 389 393 394 430 431 432 433 464
Symbol 336 MovieClip {edge_mc}Uses:335Used by:464
Symbol 337 GraphicUsed by:338
Symbol 338 MovieClipUses:337Used by:341 342 343 344 345
Symbol 339 MovieClipUses:335Used by:341
Symbol 340 MovieClipUses:335Used by:341
Symbol 341 MovieClip {c90_phys}Uses:338 339 340Used by:464
Symbol 342 MovieClip {s1_mc}Uses:338Used by:464
Symbol 343 MovieClip {s3_mc}Uses:338Used by:464
Symbol 344 MovieClip {s7_mc}Uses:338Used by:464
Symbol 345 MovieClip {s9_mc}Uses:338Used by:464
Symbol 346 GraphicUsed by:350
Symbol 347 GraphicUsed by:350
Symbol 348 GraphicUsed by:349
Symbol 349 MovieClipUses:348Used by:350 358 379 392 397
Symbol 350 MovieClip {h_mc}Uses:346 47 347 349Used by:429 434 464
Symbol 351 GraphicUsed by:352
Symbol 352 MovieClipUses:351Used by:355
Symbol 353 MovieClipUses:335Used by:355
Symbol 354 MovieClipUses:335Used by:355
Symbol 355 MovieClip {str_phys}Uses:352 353 354Used by:464
Symbol 356 GraphicUsed by:358
Symbol 357 GraphicUsed by:358
Symbol 358 MovieClip {v_mc}Uses:356 47 357 349Used by:429 434 464
Symbol 359 GraphicUsed by:360
Symbol 360 MovieClip {ballMask_mc}Uses:359Used by:464
Symbol 361 MovieClip {ballSpot_mc}Uses:19Used by:464
Symbol 362 GraphicUsed by:363
Symbol 363 MovieClipUses:362Used by:364
Symbol 364 MovieClip {roundShadow2_mc}Uses:363Used by:464
Symbol 365 GraphicUses:188Used by:369
Symbol 366 BitmapUsed by:367
Symbol 367 GraphicUses:366Used by:368
Symbol 368 MovieClipUses:367Used by:369
Symbol 369 MovieClipUses:365 368Used by:370
Symbol 370 MovieClip {bg1_mc}Uses:369Used by:464
Symbol 371 GraphicUsed by:373
Symbol 372 MovieClipUses:154Used by:373
Symbol 373 MovieClip {start_mc}Uses:371 372Used by:464
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClip {ghostBall_mc}Uses:374Used by:464
Symbol 376 GraphicUsed by:379
Symbol 377 GraphicUsed by:379
Symbol 378 GraphicUsed by:379
Symbol 379 MovieClip {curve45_mc}Uses:376 47 377 349 378Used by:380 381 382 383 384 385 386 387 390 398
Symbol 380 MovieClip {s12_mc}Uses:379Used by:464
Symbol 381 MovieClip {s14_mc}Uses:379Used by:464
Symbol 382 MovieClip {s32_mc}Uses:379Used by:464
Symbol 383 MovieClip {s36_mc}Uses:379Used by:464
Symbol 384 MovieClip {s74_mc}Uses:379Used by:464
Symbol 385 MovieClip {s78_mc}Uses:379Used by:464
Symbol 386 MovieClip {s96_mc}Uses:379Used by:464
Symbol 387 MovieClip {s98_mc}Uses:379Used by:464
Symbol 388 MovieClipUses:335Used by:390 398
Symbol 389 MovieClipUses:335Used by:390 398
Symbol 390 MovieClip {c45_phys}Uses:379 388 389Used by:464
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClip {d45_mc}Uses:391 47 349Used by:395 464
Symbol 393 MovieClipUses:335Used by:395
Symbol 394 MovieClipUses:335Used by:395
Symbol 395 MovieClip {d_phys}Uses:392 393 394Used by:464
Symbol 396 GraphicUsed by:397
Symbol 397 MovieClip {d135_mc}Uses:396 47 349Used by:464
Symbol 398 MovieClip {c135_phys}Uses:379 388 389Used by:464
Symbol 399 GraphicUsed by:400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
Symbol 400 MovieClipUses:399 71Used by:426
Symbol 401 MovieClipUses:399 71Used by:426
Symbol 402 MovieClipUses:399 71Used by:426
Symbol 403 MovieClipUses:399 71Used by:426
Symbol 404 MovieClipUses:399 71Used by:426
Symbol 405 MovieClipUses:399 71Used by:426
Symbol 406 MovieClipUses:399 71Used by:426
Symbol 407 MovieClipUses:399 71Used by:426
Symbol 408 MovieClipUses:399 71Used by:426
Symbol 409 MovieClipUses:399 71Used by:426
Symbol 410 MovieClipUses:399 71Used by:426
Symbol 411 MovieClipUses:399 71Used by:426
Symbol 412 MovieClipUses:399 71Used by:426
Symbol 413 MovieClipUses:399 71Used by:426
Symbol 414 MovieClipUses:399 71Used by:426
Symbol 415 MovieClipUses:399 71Used by:426
Symbol 416 MovieClipUses:399 71Used by:426
Symbol 417 MovieClipUses:399 71Used by:426
Symbol 418 MovieClipUses:399 71Used by:426
Symbol 419 MovieClipUses:399 71Used by:426
Symbol 420 MovieClipUses:399 71Used by:426
Symbol 421 MovieClipUses:399 71Used by:426
Symbol 422 MovieClipUses:399 71Used by:426
Symbol 423 MovieClipUses:399 71Used by:426
Symbol 424 MovieClipUses:399 71Used by:426
Symbol 425 MovieClipUses:399 71Used by:426
Symbol 426 MovieClip {letters_mc}Uses:400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425Used by:464
Symbol 427 MovieClip {menuStars_mc}Uses:193 196Used by:464
Symbol 428 GraphicUsed by:429 434
Symbol 429 MovieClip {x_mc}Uses:358 350 428Used by:464
Symbol 430 MovieClipUses:335Used by:434
Symbol 431 MovieClipUses:335Used by:434
Symbol 432 MovieClipUses:335Used by:434
Symbol 433 MovieClipUses:335Used by:434
Symbol 434 MovieClip {x_phys}Uses:358 350 428 430 431 432 433Used by:464
Symbol 435 TextUses:2Used by:440
Symbol 436 MovieClip {galaxoball_fla.modeButtonHolder_mc_222}Uses:10Used by:440
Symbol 437 TextUses:86Used by:440
Symbol 438 TextUses:86Used by:440
Symbol 439 TextUses:86Used by:440
Symbol 440 MovieClip {modeSelect_mc}Uses:1 435 10 436 437 438 439 111Used by:464
Symbol 441 GraphicUsed by:442
Symbol 442 MovieClip {frame_mc}Uses:441Used by:464
Symbol 443 BitmapUsed by:444
Symbol 444 GraphicUses:443Used by:445
Symbol 445 MovieClip {circleSprite_mc}Uses:444Used by:464
Symbol 446 BitmapUsed by:447
Symbol 447 GraphicUses:446Used by:448
Symbol 448 MovieClip {circleSprite2_mc}Uses:447Used by:464
Symbol 449 BitmapUsed by:450
Symbol 450 GraphicUses:449Used by:451
Symbol 451 MovieClip {circleSprite3_mc}Uses:450Used by:464
Symbol 452 GraphicUsed by:456
Symbol 453 GraphicUsed by:454 459
Symbol 454 MovieClipUses:453Used by:456 458
Symbol 455 TextUses:30Used by:456 458 459
Symbol 456 MovieClipUses:452 454 455Used by:459
Symbol 457 GraphicUsed by:458 459
Symbol 458 MovieClipUses:457 454 455Used by:459
Symbol 459 Button {launchButton_bt}Uses:456 458 457 453 455Used by:464
Symbol 460 TextUses:2Used by:463
Symbol 461 TextUses:30Used by:463
Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232}Uses:10Used by:463
Symbol 463 MovieClip {hiscoreSelect_mc}Uses:1 460 461 10 43 54 59 60 63 462Used by:464
Symbol 464 MovieClipUses:105 107 108 111 112 114 116 117 119 120 122 131 142 153 159 162 163 165 76 168 179 181 183 185 187 211 12 212 197 214 216 232 240 275 279 281 296 319 321 171 17 322 73 329 331 333 102 336 341 342 343 344 345 33 35 37 39 335 350 355 42 41 358 360 14 361 364 370 193 196 299 373 301 303 375 380 62 381 49 382 57 383 55 384 56 385 58 386 53 387 61 390 392 51 395 52 397 398 426 427 429 434 44 68 308 310 43 54 59 60 63 440 442 445 448 451 459 463 305 307 313Used by:Timeline

Instance Names

"_Continue_"Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"myPreloader"Frame 1Symbol 81 MovieClip {preloader_mc}
"adBox"Frame 1Symbol 82 MovieClip
"line"Frame 1Symbol 85 MovieClip
"_Coolbuddy$com_"Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"message1"Frame 1Symbol 91 MovieClip
"intro"Frame 2Symbol 101 MovieClip {galaxoball_fla.andromedusIntro_mc_10}
"blackOut"Frame 3Symbol 102 MovieClip {blackScreen_mc}
"stageAssets"Frame 3Symbol 464 MovieClip
"buttonText"Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1} Frame 1Symbol 9 EditableText
"level1"Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237} Frame 1Symbol 21 Button {levelThumb}
"level2"Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237} Frame 1Symbol 21 Button {levelThumb}
"level3"Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237} Frame 1Symbol 21 Button {levelThumb}
"level4"Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237} Frame 1Symbol 21 Button {levelThumb}
"level5"Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237} Frame 1Symbol 21 Button {levelThumb}
"_Back_"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_More_Games_"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"levelButtonHolder"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 28 MovieClip {galaxoball_fla.levelButtonHolder_mc_237}
"trackName"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 31 EditableText
"i1"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 43 MovieClip {icon1_mc}
"i2"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 54 MovieClip {icon2_mc}
"i3"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 59 MovieClip {icon3_mc}
"i4"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 60 MovieClip {icon4_mc}
"i5"Symbol 64 MovieClip {levelSelect_mc} Frame 1Symbol 63 MovieClip {icon5_mc}
"txt"Symbol 66 MovieClip {debug_mc} Frame 1Symbol 65 EditableText
"_Yes_"Symbol 76 MovieClip {confirmReset_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_No_"Symbol 76 MovieClip {confirmReset_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"loadingText"Symbol 81 MovieClip {preloader_mc} Frame 1Symbol 77 EditableText
"loadingBar"Symbol 81 MovieClip {preloader_mc} Frame 1Symbol 79 MovieClip
"textField"Symbol 158 MovieClip {galaxoball_fla.textField_mc_35} Frame 1Symbol 157 EditableText
"mc"Symbol 159 MovieClip {ticker_mc} Frame 1Symbol 158 MovieClip {galaxoball_fla.textField_mc_35}
"message"Symbol 162 MovieClip {hintBox_mc} Frame 1Symbol 161 EditableText
"textField"Symbol 165 MovieClip {bonusDisplay_mc} Frame 1Symbol 164 EditableText
"light"Symbol 179 MovieClip {bumper_mc} Frame 1Symbol 175 MovieClip {galaxoball_fla.bumperLight_46}
"a"Symbol 193 MovieClip {bg2_mc} Frame 1Symbol 192 MovieClip
"b"Symbol 193 MovieClip {bg2_mc} Frame 1Symbol 192 MovieClip
"c"Symbol 193 MovieClip {bg2_mc} Frame 1Symbol 192 MovieClip
"d"Symbol 193 MovieClip {bg2_mc} Frame 1Symbol 192 MovieClip
"a"Symbol 196 MovieClip {bg3_mc} Frame 1Symbol 195 MovieClip
"b"Symbol 196 MovieClip {bg3_mc} Frame 1Symbol 195 MovieClip
"c"Symbol 196 MovieClip {bg3_mc} Frame 1Symbol 195 MovieClip
"d"Symbol 196 MovieClip {bg3_mc} Frame 1Symbol 195 MovieClip
"bg1"Symbol 197 MovieClip {blueGradient_mc} Frame 1Symbol 193 MovieClip {bg2_mc}
"bg2"Symbol 197 MovieClip {blueGradient_mc} Frame 1Symbol 196 MovieClip {bg3_mc}
"menuButton"Symbol 211 MovieClip {awards_mc} Frame 1Symbol 201 Button
"bestScore"Symbol 211 MovieClip {awards_mc} Frame 1Symbol 210 EditableText
"label"Symbol 216 MovieClip {starburst_mc} Frame 1Symbol 215 EditableText
"_Close_"Symbol 231 MovieClip {galaxoball_fla.credits_mc_69} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"andromedus"Symbol 231 MovieClip {galaxoball_fla.credits_mc_69} Frame 1Symbol 229 Button
"_Play_"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_More_Games_"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Hiscores_"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Credits_"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Coolbuddy$com_"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"credits"Symbol 232 MovieClip {menu_mc} Frame 1Symbol 231 MovieClip {galaxoball_fla.credits_mc_69}
"rankDisplay"Symbol 240 MovieClip {highscores_mc} Frame 1Symbol 236 EditableText
"nameDisplay"Symbol 240 MovieClip {highscores_mc} Frame 1Symbol 237 EditableText
"scoreDisplay"Symbol 240 MovieClip {highscores_mc} Frame 1Symbol 238 EditableText
"connectingDisplay"Symbol 240 MovieClip {highscores_mc} Frame 1Symbol 239 EditableText
"_OK_"Symbol 274 MovieClip {galaxoball_fla.help_mc_81} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"boostBar"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 244 MovieClip
"coolbuddy"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 247 Button
"message"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 248 EditableText
"quitButton"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 257 Button
"resetButton"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 265 Button
"lap"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 267 EditableText
"lapTime"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 268 EditableText
"bestLap"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 270 EditableText
"help"Symbol 275 MovieClip {gui_mc} Frame 1Symbol 274 MovieClip {galaxoball_fla.help_mc_81}
"_Continue_"Symbol 279 MovieClip {levelInfo_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Back_"Symbol 279 MovieClip {levelInfo_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_More_Games_"Symbol 279 MovieClip {levelInfo_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"level"Symbol 279 MovieClip {levelInfo_mc} Frame 1Symbol 277 EditableText
"infoText"Symbol 279 MovieClip {levelInfo_mc} Frame 1Symbol 278 EditableText
"_Yes_"Symbol 281 MovieClip {confirmQuit_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_No_"Symbol 281 MovieClip {confirmQuit_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Back_"Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"playerName"Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86} Frame 1Symbol 292 EditableText
"_Save_"Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"message"Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86} Frame 1Symbol 294 EditableText
"_Try_Again_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Quit_to_Menu_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Submit_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Facebook_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Coolbuddy$com_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_More_Games_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Multi_Ghost_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Next_Track_"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"cup1"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 284 MovieClip
"cup2"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 284 MovieClip
"message2"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 285 EditableText
"message3"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 286 EditableText
"message1"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 287 EditableText
"submitGhost"Symbol 296 MovieClip {gameOverScreen_mc} Frame 1Symbol 295 MovieClip {galaxoball_fla.submissionScreen_mc_86}
"a"Symbol 341 MovieClip {c90_phys} Frame 1Symbol 339 MovieClip
"b"Symbol 341 MovieClip {c90_phys} Frame 1Symbol 340 MovieClip
"a"Symbol 355 MovieClip {str_phys} Frame 1Symbol 353 MovieClip
"b"Symbol 355 MovieClip {str_phys} Frame 1Symbol 354 MovieClip
"graphic"Symbol 361 MovieClip {ballSpot_mc} Frame 1Symbol 19 MovieClip
"a"Symbol 370 MovieClip {bg1_mc} Frame 1Symbol 369 MovieClip
"b"Symbol 370 MovieClip {bg1_mc} Frame 1Symbol 369 MovieClip
"c"Symbol 370 MovieClip {bg1_mc} Frame 1Symbol 369 MovieClip
"d"Symbol 370 MovieClip {bg1_mc} Frame 1Symbol 369 MovieClip
"hitzone"Symbol 373 MovieClip {start_mc} Frame 1Symbol 372 MovieClip
"a"Symbol 390 MovieClip {c45_phys} Frame 1Symbol 388 MovieClip
"b"Symbol 390 MovieClip {c45_phys} Frame 1Symbol 389 MovieClip
"a"Symbol 395 MovieClip {d_phys} Frame 1Symbol 393 MovieClip
"b"Symbol 395 MovieClip {d_phys} Frame 1Symbol 394 MovieClip
"a"Symbol 398 MovieClip {c135_phys} Frame 1Symbol 388 MovieClip
"b"Symbol 398 MovieClip {c135_phys} Frame 1Symbol 389 MovieClip
"_a"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 400 MovieClip
"_b"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 401 MovieClip
"_c"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 402 MovieClip
"_d"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 403 MovieClip
"_e"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 404 MovieClip
"_f"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 405 MovieClip
"_g"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 406 MovieClip
"_h"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 407 MovieClip
"_i"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 408 MovieClip
"_j"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 409 MovieClip
"_k"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 410 MovieClip
"_l"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 411 MovieClip
"_m"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 412 MovieClip
"_n"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 413 MovieClip
"_o"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 414 MovieClip
"_p"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 415 MovieClip
"_q"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 416 MovieClip
"_r"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 417 MovieClip
"_s"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 418 MovieClip
"_t"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 419 MovieClip
"_u"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 420 MovieClip
"_v"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 421 MovieClip
"_w"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 422 MovieClip
"_x"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 423 MovieClip
"_y"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 424 MovieClip
"_z"Symbol 426 MovieClip {letters_mc} Frame 1Symbol 425 MovieClip
"bg1"Symbol 427 MovieClip {menuStars_mc} Frame 1Symbol 193 MovieClip {bg2_mc}
"bg2"Symbol 427 MovieClip {menuStars_mc} Frame 1Symbol 196 MovieClip {bg3_mc}
"a"Symbol 434 MovieClip {x_phys} Frame 1Symbol 430 MovieClip
"b"Symbol 434 MovieClip {x_phys} Frame 1Symbol 431 MovieClip
"c"Symbol 434 MovieClip {x_phys} Frame 1Symbol 432 MovieClip
"d"Symbol 434 MovieClip {x_phys} Frame 1Symbol 433 MovieClip
"_Versus_"Symbol 436 MovieClip {galaxoball_fla.modeButtonHolder_mc_222} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Time_Trial_"Symbol 436 MovieClip {galaxoball_fla.modeButtonHolder_mc_222} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Multi_Ghost_"Symbol 436 MovieClip {galaxoball_fla.modeButtonHolder_mc_222} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Back_"Symbol 440 MovieClip {modeSelect_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"modeHolder"Symbol 440 MovieClip {modeSelect_mc} Frame 1Symbol 436 MovieClip {galaxoball_fla.modeButtonHolder_mc_222}
"_More_Games_"Symbol 440 MovieClip {modeSelect_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"padlock"Symbol 440 MovieClip {modeSelect_mc} Frame 1Symbol 111 MovieClip {padlock_mc}
"_Orion_"Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Andromeda_"Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Pegasus_"Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Crux_"Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Aquila_"Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"_Back_"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 10 MovieClip {galaxoball_fla.CB_button_mc_1}
"i1"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 43 MovieClip {icon1_mc}
"i2"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 54 MovieClip {icon2_mc}
"i3"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 59 MovieClip {icon3_mc}
"i4"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 60 MovieClip {icon4_mc}
"i5"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 63 MovieClip {icon5_mc}
"hiscoreSelectButtonHolder"Symbol 463 MovieClip {hiscoreSelect_mc} Frame 1Symbol 462 MovieClip {galaxoball_fla.hiscoreSelectButtonHolder_mc_232}

Special Tags

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

Labels

"onUp"Symbol 142 MovieClip {soundToggle_mc} Frame 1
"onOver"Symbol 142 MovieClip {soundToggle_mc} Frame 3
"offUp"Symbol 142 MovieClip {soundToggle_mc} Frame 5
"offOver"Symbol 142 MovieClip {soundToggle_mc} Frame 7
"onUp"Symbol 153 MovieClip {musicToggle_mc} Frame 1
"onOver"Symbol 153 MovieClip {musicToggle_mc} Frame 3
"offUp"Symbol 153 MovieClip {musicToggle_mc} Frame 5
"offOver"Symbol 153 MovieClip {musicToggle_mc} Frame 7




http://swfchan.com/19/90840/info.shtml
Created: 28/3 -2019 05:28:02 Last modified: 28/3 -2019 05:28:02 Server time: 02/05 -2024 17:45:12