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

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

Pirates SOS.swf

This is the info page for
Flash #207349

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


Text
Start

fun lil´web games!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

18

19

20

21

22

23

24

25

26

27

28

17

You can break it!

Free pirate's soul!

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">MUSIC</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">OFF</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">MUSIC</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">OFF</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">MUSIC</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">ON</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">MUSIC</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">ON</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">SOUND</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">OFF</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">SOUND</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">OFF</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">SOUND</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">ON</font></p>

<p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">SOUND</font></p><p align="center"><font face="Comics" size="18" color="#3f3d32" letterSpacing="0.000000" kerning="1">ON</font></p>

Save Our Souls

More games

Add to site

<p align="center"><font face="BlackCastleMF" size="27" color="#302f6b" letterSpacing="0.000000" kerning="1">22</font></p>

<p align="center"><font face="BlackCastleMF" size="27" color="#302f6b" letterSpacing="0.000000" kerning="1">1000</font></p>

Score:

Lvl:

levels

help

retry

X

<p align="left"><font face="BlackCastleMF" size="27" color="#302f6b" letterSpacing="0.000000" kerning="1"> 20</font></p>

Out of ammo

Retry

Levels

Help

Next level

Next level

Your score:

<p align="left"><font face="BlackCastleMF" size="12" color="#471b02" letterSpacing="0.000000" kerning="1">19500</font></p>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<p align="center"><font face="Commons" size="12" color="#bbc9d0" letterSpacing="0.000000" kerning="1">28000</font></p>

<p align="center"><font face="Comics" size="12" color="#bbc9d0" letterSpacing="0.000000" kerning="1">YOUR SCORE</font></p>

HIGHSCORES

Main menu

1

1

2

Next

Next

<p align="center"><font face="Comics" size="12" color="#d2e9f7" letterSpacing="0.000000" kerning="1">TRUE FALSE</font></p>

ActionScript [AS3]

Section 1
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { b2internal var m_p:b2Vec2; public function b2CircleShape(_arg1:Number=0){ m_p = new b2Vec2(); super(); m_type = e_circleShape; m_radius = _arg1; } override public function Copy():b2Shape{ var _local1:b2Shape = new b2CircleShape(); _local1.Set(this); return (_local1); } override public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; super.Set(_arg1); if ((_arg1 is b2CircleShape)){ _local2 = (_arg1 as b2CircleShape); m_p.SetV(_local2.m_p); }; } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local8:Number; var _local4:b2Mat22 = _arg3.R; var _local5:Number = (_arg3.position.x + ((_local4.col1.x * m_p.x) + (_local4.col2.x * m_p.y))); var _local6:Number = (_arg3.position.y + ((_local4.col1.y * m_p.x) + (_local4.col2.y * m_p.y))); var _local7:Number = (_arg2.p1.x - _local5); _local8 = (_arg2.p1.y - _local6); var _local9:Number = (((_local7 * _local7) + (_local8 * _local8)) - (m_radius * m_radius)); var _local10:Number = (_arg2.p2.x - _arg2.p1.x); var _local11:Number = (_arg2.p2.y - _arg2.p1.y); var _local12:Number = ((_local7 * _local10) + (_local8 * _local11)); var _local13:Number = ((_local10 * _local10) + (_local11 * _local11)); var _local14:Number = ((_local12 * _local12) - (_local13 * _local9)); if ((((_local14 < 0)) || ((_local13 < Number.MIN_VALUE)))){ return (false); }; var _local15:Number = -((_local12 + Math.sqrt(_local14))); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local13))))){ _local15 = (_local15 / _local13); _arg1.fraction = _local15; _arg1.normal.x = (_local7 + (_local15 * _local10)); _arg1.normal.y = (_local8 + (_local15 * _local11)); _arg1.normal.Normalize(); return (true); }; return (false); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_p.x) + (_local3.col2.x * m_p.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_p.x) + (_local3.col2.y * m_p.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = (((_arg2 * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_p); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_p.x * m_p.x) + (m_p.y * m_p.y)))); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local9:Number; var _local5:b2Vec2 = b2Math.MulX(_arg3, m_p); var _local6:Number = -((b2Math.Dot(_arg1, _local5) - _arg2)); if (_local6 < (-(m_radius) + Number.MIN_VALUE)){ return (0); }; if (_local6 > m_radius){ _arg4.SetV(_local5); return (((Math.PI * m_radius) * m_radius)); }; var _local7:Number = (m_radius * m_radius); var _local8:Number = (_local6 * _local6); _local9 = ((_local7 * (Math.asin((_local6 / m_radius)) + (Math.PI / 2))) + (_local6 * Math.sqrt((_local7 - _local8)))); var _local10:Number = (((-2 / 3) * Math.pow((_local7 - _local8), 1.5)) / _local9); _arg4.x = (_local5.x + (_arg1.x * _local10)); _arg4.y = (_local5.y + (_arg1.y * _local10)); return (_local9); } public function GetLocalPosition():b2Vec2{ return (m_p); } public function SetLocalPosition(_arg1:b2Vec2):void{ m_p.SetV(_arg1); } public function GetRadius():Number{ return (m_radius); } public function SetRadius(_arg1:Number):void{ m_radius = _arg1; } } }//package Box2D.Collision.Shapes
Section 2
//b2EdgeShape (Box2D.Collision.Shapes.b2EdgeShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeShape extends b2Shape { private var s_supportVec:b2Vec2; b2internal var m_v1:b2Vec2; b2internal var m_v2:b2Vec2; b2internal var m_coreV1:b2Vec2; b2internal var m_coreV2:b2Vec2; b2internal var m_length:Number; b2internal var m_normal:b2Vec2; b2internal var m_direction:b2Vec2; b2internal var m_cornerDir1:b2Vec2; b2internal var m_cornerDir2:b2Vec2; b2internal var m_cornerConvex1:Boolean; b2internal var m_cornerConvex2:Boolean; b2internal var m_nextEdge:b2EdgeShape; b2internal var m_prevEdge:b2EdgeShape; public function b2EdgeShape(_arg1:b2Vec2, _arg2:b2Vec2){ s_supportVec = new b2Vec2(); m_v1 = new b2Vec2(); m_v2 = new b2Vec2(); m_coreV1 = new b2Vec2(); m_coreV2 = new b2Vec2(); m_normal = new b2Vec2(); m_direction = new b2Vec2(); m_cornerDir1 = new b2Vec2(); m_cornerDir2 = new b2Vec2(); super(); m_type = e_edgeShape; m_prevEdge = null; m_nextEdge = null; m_v1 = _arg1; m_v2 = _arg2; m_direction.Set((m_v2.x - m_v1.x), (m_v2.y - m_v1.y)); m_length = m_direction.Normalize(); m_normal.Set(m_direction.y, -(m_direction.x)); m_coreV1.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x - m_direction.x)) + m_v1.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y - m_direction.y)) + m_v1.y)); m_coreV2.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x + m_direction.x)) + m_v2.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y + m_direction.y)) + m_v2.y)); m_cornerDir1 = m_normal; m_cornerDir2.Set(-(m_normal.x), -(m_normal.y)); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local4:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local5:Number = (_arg2.p2.x - _arg2.p1.x); var _local6:Number = (_arg2.p2.y - _arg2.p1.y); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_v1.x) + (_local4.col2.x * m_v1.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_v1.x) + (_local4.col2.y * m_v1.y))); var _local9:Number = ((_arg3.position.y + ((_local4.col1.y * m_v2.x) + (_local4.col2.y * m_v2.y))) - _local8); var _local10:Number = -(((_arg3.position.x + ((_local4.col1.x * m_v2.x) + (_local4.col2.x * m_v2.y))) - _local7)); var _local11:Number = (100 * Number.MIN_VALUE); var _local12:Number = -(((_local5 * _local9) + (_local6 * _local10))); if (_local12 > _local11){ _local13 = (_arg2.p1.x - _local7); _local14 = (_arg2.p1.y - _local8); _local15 = ((_local13 * _local9) + (_local14 * _local10)); if ((((0 <= _local15)) && ((_local15 <= (_arg2.maxFraction * _local12))))){ _local16 = ((-(_local5) * _local14) + (_local6 * _local13)); if (((((-(_local11) * _local12) <= _local16)) && ((_local16 <= (_local12 * (1 + _local11)))))){ _local15 = (_local15 / _local12); _arg1.fraction = _local15; _local17 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _arg1.normal.x = (_local9 / _local17); _arg1.normal.y = (_local10 / _local17); return (true); }; }; }; return (false); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local3:b2Mat22 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_v1.x) + (_local3.col2.x * m_v1.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_v1.x) + (_local3.col2.y * m_v1.y))); _local6 = (_arg2.position.x + ((_local3.col1.x * m_v2.x) + (_local3.col2.x * m_v2.y))); _local7 = (_arg2.position.y + ((_local3.col1.y * m_v2.x) + (_local3.col2.y * m_v2.y))); if (_local4 < _local6){ _arg1.lowerBound.x = _local4; _arg1.upperBound.x = _local6; } else { _arg1.lowerBound.x = _local6; _arg1.upperBound.x = _local4; }; if (_local5 < _local7){ _arg1.lowerBound.y = _local5; _arg1.upperBound.y = _local7; } else { _arg1.lowerBound.y = _local7; _arg1.upperBound.y = _local5; }; } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ _arg1.mass = 0; _arg1.center.SetV(m_v1); _arg1.I = 0; } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local5:b2Vec2 = new b2Vec2((_arg1.x * _arg2), (_arg1.y * _arg2)); var _local6:b2Vec2 = b2Math.MulX(_arg3, m_v1); var _local7:b2Vec2 = b2Math.MulX(_arg3, m_v2); var _local8:Number = (b2Math.Dot(_arg1, _local6) - _arg2); var _local9:Number = (b2Math.Dot(_arg1, _local7) - _arg2); if (_local8 > 0){ if (_local9 > 0){ return (0); }; _local6.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local6.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); } else { if (_local9 > 0){ _local7.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local7.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); }; }; _arg4.x = (((_local5.x + _local6.x) + _local7.x) / 3); _arg4.y = (((_local5.y + _local6.y) + _local7.y) / 3); return ((0.5 * (((_local6.x - _local5.x) * (_local7.y - _local5.y)) - ((_local6.y - _local5.y) * (_local7.x - _local5.x))))); } public function GetLength():Number{ return (m_length); } public function GetVertex1():b2Vec2{ return (m_v1); } public function GetVertex2():b2Vec2{ return (m_v2); } public function GetCoreVertex1():b2Vec2{ return (m_coreV1); } public function GetCoreVertex2():b2Vec2{ return (m_coreV2); } public function GetNormalVector():b2Vec2{ return (m_normal); } public function GetDirectionVector():b2Vec2{ return (m_direction); } public function GetCorner1Vector():b2Vec2{ return (m_cornerDir1); } public function GetCorner2Vector():b2Vec2{ return (m_cornerDir2); } public function Corner1IsConvex():Boolean{ return (m_cornerConvex1); } public function Corner2IsConvex():Boolean{ return (m_cornerConvex2); } public function GetFirstVertex(_arg1:b2Transform):b2Vec2{ var _local2:b2Mat22 = _arg1.R; return (new b2Vec2((_arg1.position.x + ((_local2.col1.x * m_coreV1.x) + (_local2.col2.x * m_coreV1.y))), (_arg1.position.y + ((_local2.col1.y * m_coreV1.x) + (_local2.col2.y * m_coreV1.y))))); } public function GetNextEdge():b2EdgeShape{ return (m_nextEdge); } public function GetPrevEdge():b2EdgeShape{ return (m_prevEdge); } public function Support(_arg1:b2Transform, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV1.x) + (_local4.col2.x * m_coreV1.y))); var _local6:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV1.x) + (_local4.col2.y * m_coreV1.y))); var _local7:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV2.x) + (_local4.col2.x * m_coreV2.y))); var _local8:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV2.x) + (_local4.col2.y * m_coreV2.y))); if (((_local5 * _arg2) + (_local6 * _arg3)) > ((_local7 * _arg2) + (_local8 * _arg3))){ s_supportVec.x = _local5; s_supportVec.y = _local6; } else { s_supportVec.x = _local7; s_supportVec.y = _local8; }; return (s_supportVec); } b2internal function SetPrevEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_prevEdge = _arg1; m_coreV1 = _arg2; m_cornerDir1 = _arg3; m_cornerConvex1 = _arg4; } b2internal function SetNextEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_nextEdge = _arg1; m_coreV2 = _arg2; m_cornerDir2 = _arg3; m_cornerConvex2 = _arg4; } } }//package Box2D.Collision.Shapes
Section 3
//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(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 4
//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 { b2internal var m_centroid:b2Vec2; b2internal var m_vertices:Array; b2internal var m_normals:Array; b2internal var m_vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonShape(){ m_type = e_polygonShape; m_centroid = new b2Vec2(); m_vertices = new Array(); m_normals = new Array(); } override public function Copy():b2Shape{ var _local1:b2PolygonShape = new b2PolygonShape(); _local1.Set(this); return (_local1); } override public function Set(_arg1:b2Shape):void{ var _local2:b2PolygonShape; var _local3:int; super.Set(_arg1); if ((_arg1 is b2PolygonShape)){ _local2 = (_arg1 as b2PolygonShape); m_centroid.SetV(_local2.m_centroid); m_vertexCount = _local2.m_vertexCount; Reserve(m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_local2.m_vertices[_local3]); m_normals[_local3].SetV(_local2.m_normals[_local3]); _local3++; }; }; } public function SetAsArray(_arg1:Array, _arg2:Number=0):void{ var _local4:b2Vec2; var _local3:Array = new Array(); for each (_local4 in _arg1) { _local3.push(_local4); }; SetAsVector(_local3, _arg2); } public function SetAsVector(_arg1:Array, _arg2:Number=0):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:b2Vec2; if (_arg2 == 0){ _arg2 = _arg1.length; }; b2Settings.b2Assert((2 <= _arg2)); m_vertexCount = _arg2; Reserve(_arg2); _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3].SetV(_arg1[_local3]); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = b2Math.SubtractVV(m_vertices[_local5], m_vertices[_local4]); b2Settings.b2Assert((_local6.LengthSquared() > Number.MIN_VALUE)); m_normals[_local3].SetV(b2Math.CrossVF(_local6, 1)); m_normals[_local3].Normalize(); _local3++; }; m_centroid = ComputeCentroid(m_vertices, m_vertexCount); } public function SetAsBox(_arg1:Number, _arg2:Number):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid.SetZero(); } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ m_vertexCount = 4; Reserve(4); m_vertices[0].Set(-(_arg1), -(_arg2)); m_vertices[1].Set(_arg1, -(_arg2)); m_vertices[2].Set(_arg1, _arg2); m_vertices[3].Set(-(_arg1), _arg2); m_normals[0].Set(0, -1); m_normals[1].Set(1, 0); m_normals[2].Set(0, 1); m_normals[3].Set(-1, 0); m_centroid = _arg3; var _local5:b2Transform = new b2Transform(); _local5.position = _arg3; _local5.R.Set(_arg4); var _local6:int; while (_local6 < m_vertexCount) { m_vertices[_local6] = b2Math.MulX(_local5, m_vertices[_local6]); m_normals[_local6] = b2Math.MulMV(_local5.R, m_normals[_local6]); _local6++; }; } public function SetAsEdge(_arg1:b2Vec2, _arg2:b2Vec2):void{ m_vertexCount = 2; Reserve(2); m_vertices[0].SetV(_arg1); m_vertices[1].SetV(_arg2); m_centroid.x = (0.5 * (_arg1.x + _arg2.x)); m_centroid.y = (0.5 * (_arg1.y + _arg2.y)); m_normals[0] = b2Math.CrossVF(b2Math.SubtractVV(_arg2, _arg1), 1); m_normals[0].Normalize(); m_normals[1].x = -(m_normals[0].x); m_normals[1].y = -(m_normals[0].y); } override public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; 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); } override public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ var _local6:Number; var _local7:Number; var _local8:b2Mat22; var _local9:b2Vec2; var _local18:Number; var _local19:Number; var _local4:Number = 0; var _local5:Number = _arg2.maxFraction; _local6 = (_arg2.p1.x - _arg3.position.x); _local7 = (_arg2.p1.y - _arg3.position.y); _local8 = _arg3.R; var _local10:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local11:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); _local6 = (_arg2.p2.x - _arg3.position.x); _local7 = (_arg2.p2.y - _arg3.position.y); _local8 = _arg3.R; var _local12:Number = ((_local6 * _local8.col1.x) + (_local7 * _local8.col1.y)); var _local13:Number = ((_local6 * _local8.col2.x) + (_local7 * _local8.col2.y)); var _local14:Number = (_local12 - _local10); var _local15:Number = (_local13 - _local11); var _local16 = -1; var _local17:int; while (_local17 < m_vertexCount) { _local9 = m_vertices[_local17]; _local6 = (_local9.x - _local10); _local7 = (_local9.y - _local11); _local9 = m_normals[_local17]; _local18 = ((_local9.x * _local6) + (_local9.y * _local7)); _local19 = ((_local9.x * _local14) + (_local9.y * _local15)); if (_local19 == 0){ if (_local18 < 0){ return (false); }; } else { if ((((_local19 < 0)) && ((_local18 < (_local4 * _local19))))){ _local4 = (_local18 / _local19); _local16 = _local17; } else { if ((((_local19 > 0)) && ((_local18 < (_local5 * _local19))))){ _local5 = (_local18 / _local19); }; }; }; if (_local5 < (_local4 - Number.MIN_VALUE)){ return (false); }; _local17++; }; if (_local16 >= 0){ _arg1.fraction = _local4; _local8 = _arg3.R; _local9 = m_normals[_local16]; _arg1.normal.x = ((_local8.col1.x * _local9.x) + (_local8.col2.x * _local9.y)); _arg1.normal.y = ((_local8.col1.y * _local9.x) + (_local8.col2.y * _local9.y)); return (true); }; return (false); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ var _local10:Number; var _local11:Number; var _local3:b2Mat22 = _arg2.R; var _local4:b2Vec2 = m_vertices[0]; var _local5:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local6:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); var _local7:Number = _local5; var _local8:Number = _local6; var _local9 = 1; while (_local9 < m_vertexCount) { _local4 = m_vertices[_local9]; _local10 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local11 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _local5 = ((_local5 < _local10)) ? _local5 : _local10; _local6 = ((_local6 < _local11)) ? _local6 : _local11; _local7 = ((_local7 > _local10)) ? _local7 : _local10; _local8 = ((_local8 > _local11)) ? _local8 : _local11; _local9++; }; _arg1.lowerBound.x = (_local5 - m_radius); _arg1.lowerBound.y = (_local6 - m_radius); _arg1.upperBound.x = (_local7 + m_radius); _arg1.upperBound.y = (_local8 + m_radius); } override public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ var _local11:b2Vec2; var _local12:b2Vec2; 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; if (m_vertexCount == 2){ _arg1.center.x = (0.5 * (m_vertices[0].x + m_vertices[1].x)); _arg1.center.y = (0.5 * (m_vertices[0].y + m_vertices[1].y)); _arg1.mass = 0; _arg1.I = 0; return; }; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = 0; var _local9:Number = (1 / 3); var _local10:int; while (_local10 < m_vertexCount) { _local11 = m_vertices[_local10]; _local12 = (((_local10 + 1) < m_vertexCount)) ? m_vertices[int((_local10 + 1))] : m_vertices[0]; _local13 = (_local11.x - _local7); _local14 = (_local11.y - _local8); _local15 = (_local12.x - _local7); _local16 = (_local12.y - _local8); _local17 = ((_local13 * _local16) - (_local14 * _local15)); _local18 = (0.5 * _local17); _local5 = (_local5 + _local18); _local3 = (_local3 + ((_local18 * _local9) * ((_local7 + _local11.x) + _local12.x))); _local4 = (_local4 + ((_local18 * _local9) * ((_local8 + _local11.y) + _local12.y))); _local19 = _local7; _local20 = _local8; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = _local16; _local25 = ((_local9 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local26 = ((_local9 * ((0.25 * (((_local22 * _local22) + (_local24 * _local22)) + (_local24 * _local24))) + ((_local20 * _local22) + (_local20 * _local24)))) + ((0.5 * _local20) * _local20)); _local6 = (_local6 + (_local17 * (_local25 + _local26))); _local10++; }; _arg1.mass = (_arg2 * _local5); _local3 = (_local3 * (1 / _local5)); _local4 = (_local4 * (1 / _local5)); _arg1.center.Set(_local3, _local4); _arg1.I = (_arg2 * _local6); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ var _local12:int; var _local22:b2Vec2; var _local23:Boolean; var _local24:b2MassData; var _local25:Number; var _local5:b2Vec2 = b2Math.MulTMV(_arg3.R, _arg1); var _local6:Number = (_arg2 - b2Math.Dot(_arg1, _arg3.position)); var _local7:Array = new Array(); var _local8:int; var _local9 = -1; var _local10 = -1; var _local11:Boolean; _local12 = 0; while (_local12 < m_vertexCount) { _local7[_local12] = (b2Math.Dot(_local5, m_vertices[_local12]) - _local6); _local23 = (_local7[_local12] < -(Number.MIN_VALUE)); if (_local12 > 0){ if (_local23){ if (!_local11){ _local9 = (_local12 - 1); _local8++; }; } else { if (_local11){ _local10 = (_local12 - 1); _local8++; }; }; }; _local11 = _local23; _local12++; }; switch (_local8){ case 0: if (_local11){ _local24 = new b2MassData(); ComputeMass(_local24, 1); _arg4.SetV(b2Math.MulX(_arg3, _local24.center)); return (_local24.mass); }; return (0); case 1: if (_local9 == -1){ _local9 = (m_vertexCount - 1); } else { _local10 = (m_vertexCount - 1); }; break; }; var _local13:int = ((_local9 + 1) % m_vertexCount); var _local14:int = ((_local10 + 1) % m_vertexCount); var _local15:Number = ((0 - _local7[_local9]) / (_local7[_local13] - _local7[_local9])); var _local16:Number = ((0 - _local7[_local10]) / (_local7[_local14] - _local7[_local10])); var _local17:b2Vec2 = new b2Vec2(((m_vertices[_local9].x * (1 - _local15)) + (m_vertices[_local13].x * _local15)), ((m_vertices[_local9].y * (1 - _local15)) + (m_vertices[_local13].y * _local15))); var _local18:b2Vec2 = new b2Vec2(((m_vertices[_local10].x * (1 - _local16)) + (m_vertices[_local14].x * _local16)), ((m_vertices[_local10].y * (1 - _local16)) + (m_vertices[_local14].y * _local16))); var _local19:Number = 0; var _local20:b2Vec2 = new b2Vec2(); var _local21:b2Vec2 = m_vertices[_local13]; _local12 = _local13; while (_local12 != _local14) { _local12 = ((_local12 + 1) % m_vertexCount); if (_local12 == _local14){ _local22 = _local18; } else { _local22 = m_vertices[_local12]; }; _local25 = (0.5 * (((_local21.x - _local17.x) * (_local22.y - _local17.y)) - ((_local21.y - _local17.y) * (_local22.x - _local17.x)))); _local19 = (_local19 + _local25); _local20.x = (_local20.x + ((_local25 * ((_local17.x + _local21.x) + _local22.x)) / 3)); _local20.y = (_local20.y + ((_local25 * ((_local17.y + _local21.y) + _local22.y)) / 3)); _local21 = _local22; }; _local20.Multiply((1 / _local19)); _arg4.SetV(b2Math.MulX(_arg3, _local20)); return (_local19); } public function GetVertexCount():int{ return (m_vertexCount); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetSupport(_arg1:b2Vec2):int{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_vertexCount) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } private function Validate():Boolean{ return (false); } private function Reserve(_arg1:int):void{ var _local2:int = m_vertices.length; while (_local2 < _arg1) { m_vertices[_local2] = new b2Vec2(); m_normals[_local2] = new b2Vec2(); _local2++; }; } public static function AsArray(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsArray(_arg1, _arg2); return (_local3); } public static function AsVector(_arg1:Array, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsVector(_arg1, _arg2); return (_local3); } public static function AsBox(_arg1:Number, _arg2:Number):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsBox(_arg1, _arg2); return (_local3); } public static function AsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):b2PolygonShape{ var _local5:b2PolygonShape = new (b2PolygonShape); _local5.SetAsOrientedBox(_arg1, _arg2, _arg3, _arg4); return (_local5); } public static function AsEdge(_arg1:b2Vec2, _arg2:b2Vec2):b2PolygonShape{ var _local3:b2PolygonShape = new (b2PolygonShape); _local3.SetAsEdge(_arg1, _arg2); return (_local3); } public static function ComputeCentroid(_arg1:Array, _arg2:uint):b2Vec2{ var _local3:b2Vec2; var _local7:Number; 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(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; 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); } b2internal static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; 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; var _local5:Array = new Array((_arg3 + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = 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 5
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Shape { b2internal var m_type:int; b2internal var m_radius:Number; b2internal static const e_unknownShape:int = -1; b2internal static const e_circleShape:int = 0; b2internal static const e_polygonShape:int = 1; b2internal static const e_edgeShape:int = 2; b2internal static const e_shapeTypeCount:int = 3; public static const e_hitCollide:int = 1; public static const e_missCollide:int = 0; public static const e_startsInsideCollide:int = -1; public function b2Shape(){ m_type = e_unknownShape; m_radius = b2Settings.b2_linearSlop; } public function Copy():b2Shape{ return (null); } public function Set(_arg1:b2Shape):void{ m_radius = _arg1.m_radius; } public function GetType():int{ return (m_type); } public function TestPoint(_arg1:b2Transform, _arg2:b2Vec2):Boolean{ return (false); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput, _arg3:b2Transform):Boolean{ return (false); } public function ComputeAABB(_arg1:b2AABB, _arg2:b2Transform):void{ } public function ComputeMass(_arg1:b2MassData, _arg2:Number):void{ } public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2Transform, _arg4:b2Vec2):Number{ return (0); } public static function TestOverlap(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Shape, _arg4:b2Transform):Boolean{ var _local5:b2DistanceInput = new b2DistanceInput(); _local5.proxyA = new b2DistanceProxy(); _local5.proxyA.Set(_arg1); _local5.proxyB = new b2DistanceProxy(); _local5.proxyB.Set(_arg3); _local5.transformA = _arg2; _local5.transformB = _arg4; _local5.useRadii = true; var _local6:b2SimplexCache = new b2SimplexCache(); _local6.count = 0; var _local7:b2DistanceOutput = new b2DistanceOutput(); b2Distance.Distance(_local7, _local6, _local5); return ((_local7.distance < (10 * Number.MIN_VALUE))); } } }//package Box2D.Collision.Shapes
Section 6
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var lowerBound:b2Vec2; public var upperBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } public function GetCenter():b2Vec2{ return (new b2Vec2(((lowerBound.x + upperBound.x) / 2), ((lowerBound.y + upperBound.y) / 2))); } public function GetExtents():b2Vec2{ return (new b2Vec2(((upperBound.x - lowerBound.x) / 2), ((upperBound.y - lowerBound.y) / 2))); } public function Contains(_arg1:b2AABB):Boolean{ var _local2:Boolean; _local2 = ((_local2) && ((lowerBound.x <= _arg1.lowerBound.x))); _local2 = ((_local2) && ((lowerBound.y <= _arg1.lowerBound.y))); _local2 = ((_local2) && ((_arg1.upperBound.x <= upperBound.x))); _local2 = ((_local2) && ((_arg1.upperBound.y <= upperBound.y))); return (_local2); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local3:Number = -(Number.MAX_VALUE); var _local4:Number = Number.MAX_VALUE; var _local5:Number = _arg2.p1.x; var _local6:Number = _arg2.p1.y; var _local7:Number = (_arg2.p2.x - _arg2.p1.x); var _local8:Number = (_arg2.p2.y - _arg2.p1.y); var _local9:Number = Math.abs(_local7); var _local10:Number = Math.abs(_local8); _local11 = _arg1.normal; if (_local9 < Number.MIN_VALUE){ if ((((_local5 < lowerBound.x)) || ((upperBound.x < _local5)))){ return (false); }; } else { _local12 = (1 / _local7); _local13 = ((lowerBound.x - _local5) * _local12); _local14 = ((upperBound.x - _local5) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.x = _local16; _local11.y = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; if (_local10 < Number.MIN_VALUE){ if ((((_local6 < lowerBound.y)) || ((upperBound.y < _local6)))){ return (false); }; } else { _local12 = (1 / _local8); _local13 = ((lowerBound.y - _local6) * _local12); _local14 = ((upperBound.y - _local6) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.y = _local16; _local11.x = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return (false); }; }; _arg1.fraction = _local3; return (true); } public function TestOverlap(_arg1:b2AABB):Boolean{ var _local2:Number = (_arg1.lowerBound.x - upperBound.x); var _local3:Number = (_arg1.lowerBound.y - upperBound.y); var _local4:Number = (lowerBound.x - _arg1.upperBound.x); var _local5:Number = (lowerBound.y - _arg1.upperBound.y); if ((((_local2 > 0)) || ((_local3 > 0)))){ return (false); }; if ((((_local4 > 0)) || ((_local5 > 0)))){ return (false); }; return (true); } public function Combine(_arg1:b2AABB, _arg2:b2AABB):void{ lowerBound.x = Math.min(_arg1.lowerBound.x, _arg2.lowerBound.x); lowerBound.y = Math.min(_arg1.lowerBound.y, _arg2.lowerBound.y); upperBound.x = Math.max(_arg1.upperBound.x, _arg2.upperBound.x); upperBound.y = Math.max(_arg1.upperBound.y, _arg2.upperBound.y); } public static function Combine(_arg1:b2AABB, _arg2:b2AABB):b2AABB{ var _local3:b2AABB = new (b2AABB); _local3.Combine(_arg1, _arg2); return (_local3); } } }//package Box2D.Collision
Section 7
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var s_incidentEdge:Array = MakeClipPointVector(); private static var s_clipPoints1:Array = MakeClipPointVector(); private static var s_clipPoints2:Array = MakeClipPointVector(); private static var s_edgeAO:Array = new Array(1); private static var s_edgeBO:Array = new Array(1); private static var s_localTangent:b2Vec2 = new b2Vec2(); private static var s_localNormal:b2Vec2 = new b2Vec2(); private static var s_planePoint:b2Vec2 = new b2Vec2(); private static var s_normal:b2Vec2 = new b2Vec2(); private static var s_tangent:b2Vec2 = new b2Vec2(); private static var s_tangent2:b2Vec2 = new b2Vec2(); private static var s_v11:b2Vec2 = new b2Vec2(); private static var s_v12:b2Vec2 = new b2Vec2(); private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; var _local8:b2Vec2 = _local5.v; _local9 = (((_arg3.x * _local7.x) + (_arg3.y * _local7.y)) - _arg4); var _local10:Number = (((_arg3.x * _local8.x) + (_arg3.y * _local8.y)) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); _arg1[_temp1].Set(_arg2[0]); }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _arg1[_temp2].Set(_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 EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2Transform, _arg3:int, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; 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; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_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)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); 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 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:int, _arg5:b2PolygonShape, _arg6:b2Transform):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_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; } private static function MakeClipPointVector():Array{ var _local1:Array = new Array(2); _local1[0] = new ClipVertex(); _local1[1] = new ClipVertex(); return (_local1); } public static function CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2PolygonShape, _arg5:b2Transform):void{ var _local6:ClipVertex; var _local12:b2PolygonShape; var _local13:b2PolygonShape; var _local14:b2Transform; var _local15:b2Transform; var _local16:int; var _local17:uint; var _local20:b2Mat22; var _local25:b2Vec2; var _local39:int; var _local42:Number; var _local43:b2ManifoldPoint; var _local44:Number; var _local45:Number; _arg1.m_pointCount = 0; var _local7:Number = (_arg2.m_radius + _arg4.m_radius); var _local8:int; s_edgeAO[0] = _local8; var _local9:Number = FindMaxSeparation(s_edgeAO, _arg2, _arg3, _arg4, _arg5); _local8 = s_edgeAO[0]; if (_local9 > _local7){ return; }; var _local10:int; s_edgeBO[0] = _local10; var _local11:Number = FindMaxSeparation(s_edgeBO, _arg4, _arg5, _arg2, _arg3); _local10 = s_edgeBO[0]; if (_local11 > _local7){ return; }; var _local18:Number = 0.98; var _local19:Number = 0.001; if (_local11 > ((_local18 * _local9) + _local19)){ _local12 = _arg4; _local13 = _arg2; _local14 = _arg5; _local15 = _arg3; _local16 = _local10; _arg1.m_type = b2Manifold.e_faceB; _local17 = 1; } else { _local12 = _arg2; _local13 = _arg4; _local14 = _arg3; _local15 = _arg5; _local16 = _local8; _arg1.m_type = b2Manifold.e_faceA; _local17 = 0; }; var _local21:Array = s_incidentEdge; FindIncidentEdge(_local21, _local12, _local14, _local16, _local13, _local15); var _local22:int = _local12.m_vertexCount; var _local23:Array = _local12.m_vertices; var _local24:b2Vec2 = _local23[_local16]; if ((_local16 + 1) < _local22){ _local25 = _local23[int((_local16 + 1))]; } else { _local25 = _local23[0]; }; var _local26:b2Vec2 = s_localTangent; _local26.Set((_local25.x - _local24.x), (_local25.y - _local24.y)); _local26.Normalize(); var _local27:b2Vec2 = s_localNormal; _local27.x = _local26.y; _local27.y = -(_local26.x); var _local28:b2Vec2 = s_planePoint; _local28.Set((0.5 * (_local24.x + _local25.x)), (0.5 * (_local24.y + _local25.y))); var _local29:b2Vec2 = s_tangent; _local20 = _local14.R; _local29.x = ((_local20.col1.x * _local26.x) + (_local20.col2.x * _local26.y)); _local29.y = ((_local20.col1.y * _local26.x) + (_local20.col2.y * _local26.y)); var _local30:b2Vec2 = s_tangent2; _local30.x = -(_local29.x); _local30.y = -(_local29.y); var _local31:b2Vec2 = s_normal; _local31.x = _local29.y; _local31.y = -(_local29.x); var _local32:b2Vec2 = s_v11; var _local33:b2Vec2 = s_v12; _local32.x = (_local14.position.x + ((_local20.col1.x * _local24.x) + (_local20.col2.x * _local24.y))); _local32.y = (_local14.position.y + ((_local20.col1.y * _local24.x) + (_local20.col2.y * _local24.y))); _local33.x = (_local14.position.x + ((_local20.col1.x * _local25.x) + (_local20.col2.x * _local25.y))); _local33.y = (_local14.position.y + ((_local20.col1.y * _local25.x) + (_local20.col2.y * _local25.y))); var _local34:Number = ((_local31.x * _local32.x) + (_local31.y * _local32.y)); var _local35:Number = (((-(_local29.x) * _local32.x) - (_local29.y * _local32.y)) + _local7); var _local36:Number = (((_local29.x * _local33.x) + (_local29.y * _local33.y)) + _local7); var _local37:Array = s_clipPoints1; var _local38:Array = s_clipPoints2; _local39 = ClipSegmentToLine(_local37, _local21, _local30, _local35); if (_local39 < 2){ return; }; _local39 = ClipSegmentToLine(_local38, _local37, _local29, _local36); if (_local39 < 2){ return; }; _arg1.m_localPlaneNormal.SetV(_local27); _arg1.m_localPoint.SetV(_local28); var _local40:int; var _local41:int; while (_local41 < b2Settings.b2_maxManifoldPoints) { _local6 = _local38[_local41]; _local42 = (((_local31.x * _local6.v.x) + (_local31.y * _local6.v.y)) - _local34); if (_local42 <= _local7){ _local43 = _arg1.m_points[_local40]; _local20 = _local15.R; _local44 = (_local6.v.x - _local15.position.x); _local45 = (_local6.v.y - _local15.position.y); _local43.m_localPoint.x = ((_local44 * _local20.col1.x) + (_local45 * _local20.col1.y)); _local43.m_localPoint.y = ((_local44 * _local20.col2.x) + (_local45 * _local20.col2.y)); _local43.m_id.Set(_local6.id); _local43.m_id.features.flip = _local17; _local40++; }; _local41++; }; _arg1.m_pointCount = _local40; } public static function CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2Mat22; var _local7:b2Vec2; _arg1.m_pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_p; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_p; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = (_arg2.m_radius + _arg4.m_radius); if (_local14 > (_local15 * _local15)){ return; }; _arg1.m_type = b2Manifold.e_circles; _arg1.m_localPoint.SetV(_arg2.m_p); _arg1.m_localPlaneNormal.SetZero(); _arg1.m_pointCount = 1; _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } public static function CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local31:Number; var _local32:Number; var _local33:Number; _arg1.m_pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_p; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_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; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = (_arg2.m_radius + _arg4.m_radius); var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local31 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local31 > _local20){ return; }; if (_local31 > _local19){ _local19 = _local31; _local18 = _local24; }; _local24++; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; var _local27:b2Vec2 = _local22[_local25]; var _local28:b2Vec2 = _local22[_local26]; if (_local19 < Number.MIN_VALUE){ _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.SetV(_local23[_local18]); _arg1.m_localPoint.x = (0.5 * (_local27.x + _local28.x)); _arg1.m_localPoint.y = (0.5 * (_local27.y + _local28.y)); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; return; }; var _local29:Number = (((_local15 - _local27.x) * (_local28.x - _local27.x)) + ((_local16 - _local27.y) * (_local28.y - _local27.y))); var _local30:Number = (((_local15 - _local28.x) * (_local27.x - _local28.x)) + ((_local16 - _local28.y) * (_local27.y - _local28.y))); if (_local29 <= 0){ if ((((_local15 - _local27.x) * (_local15 - _local27.x)) + ((_local16 - _local27.y) * (_local16 - _local27.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local27.x); _arg1.m_localPlaneNormal.y = (_local16 - _local27.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local27); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { if (_local30 <= 0){ if ((((_local15 - _local28.x) * (_local15 - _local28.x)) + ((_local16 - _local28.y) * (_local16 - _local28.y))) > (_local20 * _local20)){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = (_local15 - _local28.x); _arg1.m_localPlaneNormal.y = (_local16 - _local28.y); _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.SetV(_local28); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; } else { _local32 = (0.5 * (_local27.x + _local28.x)); _local33 = (0.5 * (_local27.y + _local28.y)); _local19 = (((_local15 - _local32) * _local23[_local25].x) + ((_local16 - _local33) * _local23[_local25].y)); if (_local19 > _local20){ return; }; _arg1.m_pointCount = 1; _arg1.m_type = b2Manifold.e_faceA; _arg1.m_localPlaneNormal.x = _local23[_local25].x; _arg1.m_localPlaneNormal.y = _local23[_local25].y; _arg1.m_localPlaneNormal.Normalize(); _arg1.m_localPoint.Set(_local32, _local33); _arg1.m_points[0].m_localPoint.SetV(_arg4.m_p); _arg1.m_points[0].m_id.key = 0; }; }; } public static function TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } } }//package Box2D.Collision
Section 8
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { import Box2D.Common.*; public class b2ContactID { public var features:Features; b2internal var _key:uint; 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 = 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 9
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var shape1:b2Shape; public var shape2:b2Shape; public var position:b2Vec2; public var velocity:b2Vec2; public var normal:b2Vec2; public var separation:Number; public var friction:Number; public var restitution:Number; public var id:b2ContactID; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 10
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var b2_gjkCalls:int; private static var b2_gjkIters:int; private static var b2_gjkMaxIters:int; private static var s_simplex:b2Simplex = new b2Simplex(); private static var s_saveA:Array = new Array(3); private static var s_saveB:Array = new Array(3); public static function Distance(_arg1:b2DistanceOutput, _arg2:b2SimplexCache, _arg3:b2DistanceInput):void{ var _local17:int; var _local18:b2Vec2; var _local20:b2Vec2; var _local21:b2SimplexVertex; var _local22:Boolean; var _local23:Number; var _local24:Number; var _local25:b2Vec2; b2_gjkCalls++; var _local4:b2DistanceProxy = _arg3.proxyA; var _local5:b2DistanceProxy = _arg3.proxyB; var _local6:b2Transform = _arg3.transformA; var _local7:b2Transform = _arg3.transformB; var _local8:b2Simplex = s_simplex; _local8.ReadCache(_arg2, _local4, _local6, _local5, _local7); var _local9:Array = _local8.m_vertices; var _local10 = 20; var _local11:Array = s_saveA; var _local12:Array = s_saveB; var _local13:int; var _local14:b2Vec2 = _local8.GetClosestPoint(); var _local15:Number = _local14.LengthSquared(); var _local16:Number = _local15; var _local19:int; while (_local19 < _local10) { _local13 = _local8.m_count; _local17 = 0; while (_local17 < _local13) { _local11[_local17] = _local9[_local17].indexA; _local12[_local17] = _local9[_local17].indexB; _local17++; }; switch (_local8.m_count){ case 1: break; case 2: _local8.Solve2(); break; case 3: _local8.Solve3(); break; default: b2Settings.b2Assert(false); }; if (_local8.m_count == 3){ break; }; _local18 = _local8.GetClosestPoint(); _local16 = _local18.LengthSquared(); if (_local16 > _local15){ }; _local15 = _local16; _local20 = _local8.GetSearchDirection(); if (_local20.LengthSquared() < (Number.MIN_VALUE * Number.MIN_VALUE)){ break; }; _local21 = _local9[_local8.m_count]; _local21.indexA = _local4.GetSupport(b2Math.MulTMV(_local6.R, _local20.GetNegative())); _local21.wA = b2Math.MulX(_local6, _local4.GetVertex(_local21.indexA)); _local21.indexB = _local5.GetSupport(b2Math.MulTMV(_local7.R, _local20)); _local21.wB = b2Math.MulX(_local7, _local5.GetVertex(_local21.indexB)); _local21.w = b2Math.SubtractVV(_local21.wB, _local21.wA); _local19++; b2_gjkIters++; _local22 = false; _local17 = 0; while (_local17 < _local13) { if ((((_local21.indexA == _local11[_local17])) && ((_local21.indexB == _local12[_local17])))){ _local22 = true; break; }; _local17++; }; if (_local22){ break; }; _local8.m_count++; }; b2_gjkMaxIters = b2Math.Max(b2_gjkMaxIters, _local19); _local8.GetWitnessPoints(_arg1.pointA, _arg1.pointB); _arg1.distance = b2Math.SubtractVV(_arg1.pointA, _arg1.pointB).Length(); _arg1.iterations = _local19; _local8.WriteCache(_arg2); if (_arg3.useRadii){ _local23 = _local4.m_radius; _local24 = _local5.m_radius; if ((((_arg1.distance > (_local23 + _local24))) && ((_arg1.distance > Number.MIN_VALUE)))){ _arg1.distance = (_arg1.distance - (_local23 + _local24)); _local25 = b2Math.SubtractVV(_arg1.pointB, _arg1.pointA); _local25.Normalize(); _arg1.pointA.x = (_arg1.pointA.x + (_local23 * _local25.x)); _arg1.pointA.y = (_arg1.pointA.y + (_local23 * _local25.y)); _arg1.pointB.x = (_arg1.pointB.x - (_local24 * _local25.x)); _arg1.pointB.y = (_arg1.pointB.y - (_local24 * _local25.y)); } else { _local18 = new b2Vec2(); _local18.x = (0.5 * (_arg1.pointA.x + _arg1.pointB.x)); _local18.y = (0.5 * (_arg1.pointA.y + _arg1.pointB.y)); _arg1.pointA.x = (_arg1.pointB.x = _local18.x); _arg1.pointA.y = (_arg1.pointB.y = _local18.y); _arg1.distance = 0; }; }; } } }//package Box2D.Collision
Section 11
//b2DistanceInput (Box2D.Collision.b2DistanceInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var transformA:b2Transform; public var transformB:b2Transform; public var useRadii:Boolean; } }//package Box2D.Collision
Section 12
//b2DistanceOutput (Box2D.Collision.b2DistanceOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DistanceOutput { public var pointA:b2Vec2; public var pointB:b2Vec2; public var distance:Number; public var iterations:int; public function b2DistanceOutput(){ pointA = new b2Vec2(); pointB = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 13
//b2DistanceProxy (Box2D.Collision.b2DistanceProxy) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2DistanceProxy { public var m_vertices:Array; public var m_count:int; public var m_radius:Number; public function Set(_arg1:b2Shape):void{ var _local2:b2CircleShape; var _local3:b2PolygonShape; switch (_arg1.GetType()){ case b2Shape.e_circleShape: _local2 = (_arg1 as b2CircleShape); m_vertices = new Array(1, true); m_vertices[0] = _local2.m_p; m_count = 1; m_radius = _local2.m_radius; break; case b2Shape.e_polygonShape: _local3 = (_arg1 as b2PolygonShape); m_vertices = _local3.m_vertices; m_count = _local3.m_vertexCount; m_radius = _local3.m_radius; break; default: b2Settings.b2Assert(false); }; } public function GetSupport(_arg1:b2Vec2):Number{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (_local2); } public function GetSupportVertex(_arg1:b2Vec2):b2Vec2{ var _local5:Number; var _local2:int; var _local3:Number = ((m_vertices[0].x * _arg1.x) + (m_vertices[0].y * _arg1.y)); var _local4 = 1; while (_local4 < m_count) { _local5 = ((m_vertices[_local4].x * _arg1.x) + (m_vertices[_local4].y * _arg1.y)); if (_local5 > _local3){ _local2 = _local4; _local3 = _local5; }; _local4++; }; return (m_vertices[_local2]); } public function GetVertexCount():int{ return (m_count); } public function GetVertex(_arg1:int):b2Vec2{ b2Settings.b2Assert((((0 <= _arg1)) && ((_arg1 < m_count)))); return (m_vertices[_arg1]); } } }//package Box2D.Collision
Section 14
//b2DynamicTree (Box2D.Collision.b2DynamicTree) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DynamicTree { private var m_root:b2DynamicTreeNode; private var m_freeList:b2DynamicTreeNode; private var m_path:uint; private var m_insertionCount:int; public function b2DynamicTree(){ m_root = null; m_freeList = null; m_path = 0; m_insertionCount = 0; } public function CreateProxy(_arg1:b2AABB, _arg2):b2DynamicTreeNode{ var _local3:b2DynamicTreeNode; var _local4:Number; var _local5:Number; _local3 = AllocateNode(); _local4 = b2Settings.b2_aabbExtension; _local5 = b2Settings.b2_aabbExtension; _local3.aabb.lowerBound.x = (_arg1.lowerBound.x - _local4); _local3.aabb.lowerBound.y = (_arg1.lowerBound.y - _local5); _local3.aabb.upperBound.x = (_arg1.upperBound.x + _local4); _local3.aabb.upperBound.y = (_arg1.upperBound.y + _local5); _local3.userData = _arg2; InsertLeaf(_local3); return (_local3); } public function DestroyProxy(_arg1:b2DynamicTreeNode):void{ RemoveLeaf(_arg1); FreeNode(_arg1); } public function MoveProxy(_arg1:b2DynamicTreeNode, _arg2:b2AABB, _arg3:b2Vec2):Boolean{ var _local4:Number; var _local5:Number; b2Settings.b2Assert(_arg1.IsLeaf()); if (_arg1.aabb.Contains(_arg2)){ return (false); }; RemoveLeaf(_arg1); _local4 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.x > 0)) ? _arg3.x : -(_arg3.x))); _local5 = (b2Settings.b2_aabbExtension + (b2Settings.b2_aabbMultiplier * ((_arg3.y > 0)) ? _arg3.y : -(_arg3.y))); _arg1.aabb.lowerBound.x = (_arg2.lowerBound.x - _local4); _arg1.aabb.lowerBound.y = (_arg2.lowerBound.y - _local5); _arg1.aabb.upperBound.x = (_arg2.upperBound.x + _local4); _arg1.aabb.upperBound.y = (_arg2.upperBound.y + _local5); InsertLeaf(_arg1); return (true); } public function Rebalance(_arg1:int):void{ var _local3:b2DynamicTreeNode; var _local4:uint; if (m_root == null){ return; }; var _local2:int; while (_local2 < _arg1) { _local3 = m_root; _local4 = 0; while (_local3.IsLeaf() == false) { _local3 = (((m_path >> _local4) & 1)) ? _local3.child2 : _local3.child1; _local4 = ((_local4 + 1) & 31); }; m_path++; RemoveLeaf(_local3); InsertLeaf(_local3); _local2++; }; } public function GetFatAABB(_arg1:b2DynamicTreeNode):b2AABB{ return (_arg1.aabb); } public function GetUserData(_arg1:b2DynamicTreeNode){ return (_arg1.userData); } public function Query(_arg1:Function, _arg2:b2AABB):void{ var _local5:b2DynamicTreeNode; var _local6:Boolean; if (m_root == null){ return; }; var _local3:Array = new Array(); var _local4:int; var _temp1 = _local4; _local4 = (_local4 + 1); var _local7 = _temp1; _local3[_local7] = m_root; while (_local4 > 0) { --_local4; _local5 = _local3[_local4]; if (_local5.aabb.TestOverlap(_arg2)){ if (_local5.IsLeaf()){ _local6 = _arg1(_local5); if (!_local6){ return; }; } else { var _temp2 = _local4; _local4 = (_local4 + 1); var _local8 = _temp2; _local3[_local8] = _local5.child1; var _temp3 = _local4; _local4 = (_local4 + 1); var _local9 = _temp3; _local3[_local9] = _local5.child2; }; }; }; } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ var _local3:b2Vec2; var _local9:b2AABB; var _local10:Number; var _local11:Number; var _local14:b2DynamicTreeNode; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:Number; var _local18:b2RayCastInput; if (m_root == null){ return; }; _local3 = _arg2.p1; var _local4:b2Vec2 = _arg2.p2; var _local5:b2Vec2 = b2Math.SubtractVV(_local3, _local4); _local5.Normalize(); var _local6:b2Vec2 = b2Math.CrossFV(1, _local5); var _local7:b2Vec2 = b2Math.AbsV(_local6); var _local8:Number = _arg2.maxFraction; _local9 = new b2AABB(); _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); var _local12:Array = new Array(); var _local13:int; var _temp1 = _local13; _local13 = (_local13 + 1); var _local19 = _temp1; _local12[_local19] = m_root; while (_local13 > 0) { --_local13; _local14 = _local12[_local13]; if (_local14.aabb.TestOverlap(_local9) == false){ } else { _local15 = _local14.aabb.GetCenter(); _local16 = _local14.aabb.GetExtents(); _local17 = ((Math.abs(((_local6.x * (_local3.x - _local15.x)) + (_local6.y * (_local3.y - _local15.y)))) - (_local7.x * _local16.x)) - (_local7.y * _local16.y)); if (_local17 > 0){ } else { if (_local14.IsLeaf()){ _local18 = new b2RayCastInput(); _local18.p1 = _arg2.p1; _local18.p2 = _arg2.p2; _local18.maxFraction = _arg2.maxFraction; _local8 = _arg1(_local18, _local14); if (_local8 == 0){ return; }; _local10 = (_local3.x + (_local8 * (_local4.x - _local3.x))); _local11 = (_local3.y + (_local8 * (_local4.y - _local3.y))); _local9.lowerBound.x = Math.min(_local3.x, _local10); _local9.lowerBound.y = Math.min(_local3.y, _local11); _local9.upperBound.x = Math.max(_local3.x, _local10); _local9.upperBound.y = Math.max(_local3.y, _local11); } else { var _temp2 = _local13; _local13 = (_local13 + 1); var _local20 = _temp2; _local12[_local20] = _local14.child1; var _temp3 = _local13; _local13 = (_local13 + 1); var _local21 = _temp3; _local12[_local21] = _local14.child2; }; }; }; }; } private function AllocateNode():b2DynamicTreeNode{ var _local1:b2DynamicTreeNode; if (m_freeList){ _local1 = m_freeList; m_freeList = _local1.parent; _local1.parent = null; _local1.child1 = null; _local1.child2 = null; return (_local1); }; return (new b2DynamicTreeNode()); } private function FreeNode(_arg1:b2DynamicTreeNode):void{ _arg1.parent = m_freeList; m_freeList = _arg1; } private function InsertLeaf(_arg1:b2DynamicTreeNode):void{ var _local6:b2DynamicTreeNode; var _local7:b2DynamicTreeNode; var _local8:Number; var _local9:Number; m_insertionCount++; if (m_root == null){ m_root = _arg1; m_root.parent = null; return; }; var _local2:b2Vec2 = _arg1.aabb.GetCenter(); var _local3:b2DynamicTreeNode = m_root; if (_local3.IsLeaf() == false){ do { _local6 = _local3.child1; _local7 = _local3.child2; _local8 = (Math.abs((((_local6.aabb.lowerBound.x + _local6.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local6.aabb.lowerBound.y + _local6.aabb.upperBound.y) / 2) - _local2.y))); _local9 = (Math.abs((((_local7.aabb.lowerBound.x + _local7.aabb.upperBound.x) / 2) - _local2.x)) + Math.abs((((_local7.aabb.lowerBound.y + _local7.aabb.upperBound.y) / 2) - _local2.y))); if (_local8 < _local9){ _local3 = _local6; } else { _local3 = _local7; }; } while (_local3.IsLeaf() == false); }; var _local4:b2DynamicTreeNode = _local3.parent; var _local5:b2DynamicTreeNode = AllocateNode(); _local5.parent = _local4; _local5.userData = null; _local5.aabb.Combine(_arg1.aabb, _local3.aabb); if (_local4){ if (_local3.parent.child1 == _local3){ _local4.child1 = _local5; } else { _local4.child2 = _local5; }; _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; do { } while (!(_local4.aabb.Contains(_local5.aabb))); } else { _local5.child1 = _local3; _local5.child2 = _arg1; _local3.parent = _local5; _arg1.parent = _local5; m_root = _local5; }; } private function RemoveLeaf(_arg1:b2DynamicTreeNode):void{ var _local4:b2DynamicTreeNode; var _local5:b2AABB; if (_arg1 == m_root){ m_root = null; return; }; var _local2:b2DynamicTreeNode = _arg1.parent; var _local3:b2DynamicTreeNode = _local2.parent; if (_local2.child1 == _arg1){ _local4 = _local2.child2; } else { _local4 = _local2.child1; }; if (_local3){ if (_local3.child1 == _local2){ _local3.child1 = _local4; } else { _local3.child2 = _local4; }; _local4.parent = _local3; FreeNode(_local2); while (_local3) { _local5 = _local3.aabb; _local3.aabb = b2AABB.Combine(_local3.child1.aabb, _local3.child2.aabb); if (_local5.Contains(_local3.aabb)){ break; }; _local3 = _local3.parent; }; } else { m_root = _local4; _local4.parent = null; FreeNode(_local2); }; } } }//package Box2D.Collision
Section 15
//b2DynamicTreeBroadPhase (Box2D.Collision.b2DynamicTreeBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public class b2DynamicTreeBroadPhase implements IBroadPhase { private var m_tree:b2DynamicTree; private var m_proxyCount:int; private var m_moveBuffer:Array; private var m_pairBuffer:Array; private var m_pairCount:int;// = 0 public function b2DynamicTreeBroadPhase(){ m_tree = new b2DynamicTree(); m_moveBuffer = new Array(); m_pairBuffer = new Array(); super(); } public function CreateProxy(_arg1:b2AABB, _arg2){ var _local3:b2DynamicTreeNode = m_tree.CreateProxy(_arg1, _arg2); m_proxyCount++; BufferMove(_local3); return (_local3); } public function DestroyProxy(_arg1):void{ UnBufferMove(_arg1); m_proxyCount--; m_tree.DestroyProxy(_arg1); } public function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void{ var _local4:Boolean = m_tree.MoveProxy(_arg1, _arg2, _arg3); if (_local4){ BufferMove(_arg1); }; } public function TestOverlap(_arg1, _arg2):Boolean{ var _local3:b2AABB = m_tree.GetFatAABB(_arg1); var _local4:b2AABB = m_tree.GetFatAABB(_arg2); return (_local3.TestOverlap(_local4)); } public function GetUserData(_arg1){ return (m_tree.GetUserData(_arg1)); } public function GetFatAABB(_arg1):b2AABB{ return (m_tree.GetFatAABB(_arg1)); } public function GetProxyCount():int{ return (m_proxyCount); } public function UpdatePairs(_arg1:Function):void{ var queryProxy:b2DynamicTreeNode; var i:int; var fatAABB:b2AABB; var primaryPair:b2DynamicTreePair; var userDataA:*; var userDataB:*; var pair:b2DynamicTreePair; var callback = _arg1; m_pairCount = 0; for each (queryProxy in m_moveBuffer) { var QueryCallback:Function = function (_arg1:b2DynamicTreeNode):Boolean{ if (_arg1 == queryProxy){ return (true); }; if (m_pairCount == m_pairBuffer.length){ m_pairBuffer[m_pairCount] = new b2DynamicTreePair(); }; var _local2:b2DynamicTreePair = m_pairBuffer[m_pairCount]; _local2.proxyA = ((_arg1 < queryProxy)) ? _arg1 : queryProxy; _local2.proxyB = ((_arg1 >= queryProxy)) ? _arg1 : queryProxy; m_pairCount++; return (true); }; fatAABB = m_tree.GetFatAABB(queryProxy); m_tree.Query(QueryCallback, fatAABB); }; m_moveBuffer.length = 0; i = 0; while (i < m_pairCount) { primaryPair = m_pairBuffer[i]; userDataA = m_tree.GetUserData(primaryPair.proxyA); userDataB = m_tree.GetUserData(primaryPair.proxyB); callback(userDataA, userDataB); i = (i + 1); while (i < m_pairCount) { pair = m_pairBuffer[i]; if (((!((pair.proxyA == primaryPair.proxyA))) || (!((pair.proxyB == primaryPair.proxyB))))){ break; }; i = (i + 1); }; }; } public function Query(_arg1:Function, _arg2:b2AABB):void{ m_tree.Query(_arg1, _arg2); } public function RayCast(_arg1:Function, _arg2:b2RayCastInput):void{ m_tree.RayCast(_arg1, _arg2); } public function Validate():void{ } public function Rebalance(_arg1:int):void{ m_tree.Rebalance(_arg1); } private function BufferMove(_arg1:b2DynamicTreeNode):void{ m_moveBuffer[m_moveBuffer.length] = _arg1; } private function UnBufferMove(_arg1:b2DynamicTreeNode):void{ var _local2:int = m_moveBuffer.indexOf(_arg1); m_moveBuffer.splice(_local2, 1); } private function ComparePairs(_arg1:b2DynamicTreePair, _arg2:b2DynamicTreePair):int{ return (0); } } }//package Box2D.Collision
Section 16
//b2DynamicTreeNode (Box2D.Collision.b2DynamicTreeNode) package Box2D.Collision { public class b2DynamicTreeNode { public var userData; public var aabb:b2AABB; public var parent:b2DynamicTreeNode; public var child1:b2DynamicTreeNode; public var child2:b2DynamicTreeNode; public function b2DynamicTreeNode(){ aabb = new b2AABB(); super(); } public function IsLeaf():Boolean{ return ((child1 == null)); } } }//package Box2D.Collision
Section 17
//b2DynamicTreePair (Box2D.Collision.b2DynamicTreePair) package Box2D.Collision { public class b2DynamicTreePair { public var proxyA:b2DynamicTreeNode; public var proxyB:b2DynamicTreeNode; } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var m_points:Array; public var m_localPlaneNormal:b2Vec2; public var m_localPoint:b2Vec2; public var m_type:int; public var m_pointCount:int;// = 0 public static const e_circles:int = 1; public static const e_faceA:int = 2; public static const e_faceB:int = 4; public function b2Manifold(){ m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2ManifoldPoint(); _local1++; }; m_localPlaneNormal = new b2Vec2(); m_localPoint = new b2Vec2(); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (m_points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; m_localPlaneNormal.SetZero(); m_localPoint.SetZero(); m_type = 0; m_pointCount = 0; } public function Set(_arg1:b2Manifold):void{ m_pointCount = _arg1.m_pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (m_points[_local2] as b2ManifoldPoint).Set(_arg1.m_points[_local2]); _local2++; }; m_localPlaneNormal.SetV(_arg1.m_localPlaneNormal); m_localPoint.SetV(_arg1.m_localPoint); m_type = _arg1.m_type; } public function Copy():b2Manifold{ var _local1:b2Manifold = new b2Manifold(); _local1.Set(this); return (_local1); } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var m_localPoint:b2Vec2; public var m_normalImpulse:Number; public var m_tangentImpulse:Number; public var m_id:b2ContactID; public function b2ManifoldPoint(){ m_localPoint = new b2Vec2(); m_id = new b2ContactID(); super(); Reset(); } public function Reset():void{ m_localPoint.SetZero(); m_normalImpulse = 0; m_tangentImpulse = 0; m_id.key = 0; } public function Set(_arg1:b2ManifoldPoint):void{ m_localPoint.SetV(_arg1.m_localPoint); m_normalImpulse = _arg1.m_normalImpulse; m_tangentImpulse = _arg1.m_tangentImpulse; m_id.Set(_arg1.m_id); } } }//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
//b2RayCastInput (Box2D.Collision.b2RayCastInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastInput { public var p1:b2Vec2; public var p2:b2Vec2; public var maxFraction:Number; public function b2RayCastInput(_arg1:b2Vec2=null, _arg2:b2Vec2=null, _arg3:Number=1){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); if (_arg1){ this.p1.SetV(_arg1); }; if (_arg2){ this.p2.SetV(_arg2); }; this.maxFraction = _arg3; } } }//package Box2D.Collision
Section 22
//b2RayCastOutput (Box2D.Collision.b2RayCastOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastOutput { public var normal:b2Vec2; public var fraction:Number; public function b2RayCastOutput(){ normal = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 23
//b2SeparationFunction (Box2D.Collision.b2SeparationFunction) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; class b2SeparationFunction { public var m_proxyA:b2DistanceProxy; public var m_proxyB:b2DistanceProxy; public var m_type:int; public var m_localPoint:b2Vec2; public var m_axis:b2Vec2; public static const e_points:int = 1; public static const e_faceA:int = 2; public static const e_faceB:int = 4; function b2SeparationFunction(){ m_localPoint = new b2Vec2(); m_axis = new b2Vec2(); super(); } public function Initialize(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Mat22; var _local20:b2Vec2; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:b2Vec2; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; m_proxyA = _arg2; m_proxyB = _arg4; var _local6:int = _arg1.count; b2Settings.b2Assert((((0 < _local6)) && ((_local6 < 3)))); if (_local6 == 1){ m_type = e_points; _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); m_axis.x = (_local15 - _local13); m_axis.y = (_local16 - _local14); m_axis.Normalize(); } else { if (_arg1.indexB[0] == _arg1.indexB[1]){ m_type = e_faceA; _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local10 = m_proxyB.GetVertex(_arg1.indexB[0]); m_localPoint.x = (0.5 * (_local8.x + _local9.x)); m_localPoint.y = (0.5 * (_local8.y + _local9.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { if (_arg1.indexA[0] == _arg1.indexA[0]){ m_type = e_faceB; _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local7 = m_proxyA.GetVertex(_arg1.indexA[0]); m_localPoint.x = (0.5 * (_local11.x + _local12.x)); m_localPoint.y = (0.5 * (_local11.y + _local12.y)); m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_axis.Normalize(); _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local21 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { _local8 = m_proxyA.GetVertex(_arg1.indexA[0]); _local9 = m_proxyA.GetVertex(_arg1.indexA[1]); _local11 = m_proxyB.GetVertex(_arg1.indexB[0]); _local12 = m_proxyB.GetVertex(_arg1.indexB[1]); _local23 = b2Math.MulX(_arg3, _local7); _local24 = b2Math.MulMV(_arg3.R, b2Math.SubtractVV(_local9, _local8)); _local25 = b2Math.MulX(_arg5, _local10); _local26 = b2Math.MulMV(_arg5.R, b2Math.SubtractVV(_local12, _local11)); _local27 = ((_local24.x * _local24.x) + (_local24.y * _local24.y)); _local28 = ((_local26.x * _local26.x) + (_local26.y * _local26.y)); _local29 = b2Math.SubtractVV(_local26, _local24); _local30 = ((_local24.x * _local29.x) + (_local24.y * _local29.y)); _local31 = ((_local26.x * _local29.x) + (_local26.y * _local29.y)); _local32 = ((_local24.x * _local26.x) + (_local24.y * _local26.y)); _local33 = ((_local27 * _local28) - (_local32 * _local32)); _local21 = 0; if (_local33 != 0){ _local21 = b2Math.Clamp((((_local32 * _local31) - (_local30 * _local28)) / _local33), 0, 1); }; _local34 = (((_local32 * _local21) + _local31) / _local28); if (_local34 < 0){ _local34 = 0; _local21 = b2Math.Clamp(((_local32 - _local30) / _local27), 0, 1); }; _local7 = new b2Vec2(); _local7.x = (_local8.x + (_local21 * (_local9.x - _local8.x))); _local7.y = (_local8.y + (_local21 * (_local9.y - _local8.y))); _local10 = new b2Vec2(); _local10.x = (_local11.x + (_local21 * (_local12.x - _local11.x))); _local10.y = (_local11.y + (_local21 * (_local12.y - _local11.y))); if ((((_local21 == 0)) || ((_local21 == 1)))){ m_type = e_faceB; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local12, _local11), 1); m_axis.Normalize(); m_localPoint = _local10; _local20 = m_axis; _local19 = _arg5.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local7; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local13 - _local15) * _local17) + ((_local14 - _local16) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; } else { m_type = e_faceA; m_axis = b2Math.CrossVF(b2Math.SubtractVV(_local9, _local8), 1); m_localPoint = _local7; _local20 = m_axis; _local19 = _arg3.R; _local17 = ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y)); _local18 = ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y)); _local20 = m_localPoint; _local19 = _arg3.R; _local13 = (_arg3.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local14 = (_arg3.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local20 = _local10; _local19 = _arg5.R; _local15 = (_arg5.position.x + ((_local19.col1.x * _local20.x) + (_local19.col2.x * _local20.y))); _local16 = (_arg5.position.y + ((_local19.col1.y * _local20.x) + (_local19.col2.y * _local20.y))); _local22 = (((_local15 - _local13) * _local17) + ((_local16 - _local14) * _local18)); if (_local21 < 0){ m_axis.NegativeSelf(); }; }; }; }; }; } public function Evaluate(_arg1:b2Transform, _arg2:b2Transform):Number{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:b2Vec2; switch (m_type){ case e_points: _local3 = b2Math.MulTMV(_arg1.R, m_axis); _local4 = b2Math.MulTMV(_arg2.R, m_axis.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local6 = m_proxyB.GetSupportVertex(_local4); _local7 = b2Math.MulX(_arg1, _local5); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * m_axis.x) + ((_local8.y - _local7.y) * m_axis.y)); return (_local9); case e_faceA: _local10 = b2Math.MulMV(_arg1.R, m_axis); _local7 = b2Math.MulX(_arg1, m_localPoint); _local4 = b2Math.MulTMV(_arg2.R, _local10.GetNegative()); _local6 = m_proxyB.GetSupportVertex(_local4); _local8 = b2Math.MulX(_arg2, _local6); _local9 = (((_local8.x - _local7.x) * _local10.x) + ((_local8.y - _local7.y) * _local10.y)); return (_local9); case e_faceB: _local10 = b2Math.MulMV(_arg2.R, m_axis); _local8 = b2Math.MulX(_arg2, m_localPoint); _local3 = b2Math.MulTMV(_arg1.R, _local10.GetNegative()); _local5 = m_proxyA.GetSupportVertex(_local3); _local7 = b2Math.MulX(_arg1, _local5); _local9 = (((_local7.x - _local8.x) * _local10.x) + ((_local7.y - _local8.y) * _local10.y)); return (_local9); default: b2Settings.b2Assert(false); return (0); }; } } }//package Box2D.Collision
Section 24
//b2Simplex (Box2D.Collision.b2Simplex) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; class b2Simplex { public var m_v1:b2SimplexVertex; public var m_v2:b2SimplexVertex; public var m_v3:b2SimplexVertex; public var m_vertices:Array; public var m_count:int; function b2Simplex(){ m_v1 = new b2SimplexVertex(); m_v2 = new b2SimplexVertex(); m_v3 = new b2SimplexVertex(); m_vertices = new Array(3); super(); m_vertices[0] = m_v1; m_vertices[1] = m_v2; m_vertices[2] = m_v3; } public function ReadCache(_arg1:b2SimplexCache, _arg2:b2DistanceProxy, _arg3:b2Transform, _arg4:b2DistanceProxy, _arg5:b2Transform):void{ var _local6:b2Vec2; var _local7:b2Vec2; var _local10:b2SimplexVertex; var _local11:Number; var _local12:Number; b2Settings.b2Assert((((0 <= _arg1.count)) && ((_arg1.count <= 3)))); m_count = _arg1.count; var _local8:Array = m_vertices; var _local9:int; while (_local9 < m_count) { _local10 = _local8[_local9]; _local10.indexA = _arg1.indexA[_local9]; _local10.indexB = _arg1.indexB[_local9]; _local6 = _arg2.GetVertex(_local10.indexA); _local7 = _arg4.GetVertex(_local10.indexB); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local7); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); _local10.a = 0; _local9++; }; if (m_count > 1){ _local11 = _arg1.metric; _local12 = GetMetric(); if ((((((_local12 < (0.5 * _local11))) || (((2 * _local11) < _local12)))) || ((_local12 < Number.MIN_VALUE)))){ m_count = 0; }; }; if (m_count == 0){ _local10 = _local8[0]; _local10.indexA = 0; _local10.indexB = 0; _local6 = _arg2.GetVertex(0); _local7 = _arg4.GetVertex(0); _local10.wA = b2Math.MulX(_arg3, _local6); _local10.wB = b2Math.MulX(_arg5, _local7); _local10.w = b2Math.SubtractVV(_local10.wB, _local10.wA); m_count = 1; }; } public function WriteCache(_arg1:b2SimplexCache):void{ _arg1.metric = GetMetric(); _arg1.count = uint(m_count); var _local2:Array = m_vertices; var _local3:int; while (_local3 < m_count) { _arg1.indexA[_local3] = uint(_local2[_local3].indexA); _arg1.indexB[_local3] = uint(_local2[_local3].indexB); _local3++; }; } public function GetSearchDirection():b2Vec2{ var _local1:b2Vec2; var _local2:Number; switch (m_count){ case 1: return (m_v1.w.GetNegative()); case 2: _local1 = b2Math.SubtractVV(m_v2.w, m_v1.w); _local2 = b2Math.CrossVV(_local1, m_v1.w.GetNegative()); if (_local2 > 0){ return (b2Math.CrossFV(1, _local1)); }; return (b2Math.CrossVF(_local1, 1)); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } public function GetClosestPoint():b2Vec2{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (new b2Vec2()); case 1: return (m_v1.w); case 2: return (new b2Vec2(((m_v1.a * m_v1.w.x) + (m_v2.a * m_v2.w.x)), ((m_v1.a * m_v1.w.y) + (m_v2.a * m_v2.w.y)))); default: b2Settings.b2Assert(false); return (new b2Vec2()); }; } public function GetWitnessPoints(_arg1:b2Vec2, _arg2:b2Vec2):void{ switch (m_count){ case 0: b2Settings.b2Assert(false); break; case 1: _arg1.SetV(m_v1.wA); _arg2.SetV(m_v1.wB); break; case 2: _arg1.x = ((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)); _arg1.y = ((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)); _arg2.x = ((m_v1.a * m_v1.wB.x) + (m_v2.a * m_v2.wB.x)); _arg2.y = ((m_v1.a * m_v1.wB.y) + (m_v2.a * m_v2.wB.y)); break; case 3: _arg2.x = (_arg1.x = (((m_v1.a * m_v1.wA.x) + (m_v2.a * m_v2.wA.x)) + (m_v3.a * m_v3.wA.x))); _arg2.y = (_arg1.y = (((m_v1.a * m_v1.wA.y) + (m_v2.a * m_v2.wA.y)) + (m_v3.a * m_v3.wA.y))); break; default: b2Settings.b2Assert(false); break; }; } public function GetMetric():Number{ switch (m_count){ case 0: b2Settings.b2Assert(false); return (0); case 1: return (0); case 2: return (b2Math.SubtractVV(m_v1.w, m_v2.w).Length()); case 3: return (b2Math.CrossVV(b2Math.SubtractVV(m_v2.w, m_v1.w), b2Math.SubtractVV(m_v3.w, m_v1.w))); default: b2Settings.b2Assert(false); return (0); }; } public function Solve2():void{ var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local4:Number = -(((_local1.x * _local3.x) + (_local1.y * _local3.y))); if (_local4 <= 0){ m_v1.a = 1; m_count = 1; return; }; var _local5:Number = ((_local2.x * _local3.x) + (_local2.y * _local3.y)); if (_local5 <= 0){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; var _local6:Number = (1 / (_local5 + _local4)); m_v1.a = (_local5 * _local6); m_v2.a = (_local4 * _local6); m_count = 2; } public function Solve3():void{ var _local24:Number; var _local25:Number; var _local26:Number; var _local1:b2Vec2 = m_v1.w; var _local2:b2Vec2 = m_v2.w; var _local3:b2Vec2 = m_v3.w; var _local4:b2Vec2 = b2Math.SubtractVV(_local2, _local1); var _local5:Number = b2Math.Dot(_local1, _local4); var _local6:Number = b2Math.Dot(_local2, _local4); var _local7:Number = _local6; var _local8:Number = -(_local5); var _local9:b2Vec2 = b2Math.SubtractVV(_local3, _local1); var _local10:Number = b2Math.Dot(_local1, _local9); var _local11:Number = b2Math.Dot(_local3, _local9); var _local12:Number = _local11; var _local13:Number = -(_local10); var _local14:b2Vec2 = b2Math.SubtractVV(_local3, _local2); var _local15:Number = b2Math.Dot(_local2, _local14); var _local16:Number = b2Math.Dot(_local3, _local14); var _local17:Number = _local16; var _local18:Number = -(_local15); var _local19:Number = b2Math.CrossVV(_local4, _local9); var _local20:Number = (_local19 * b2Math.CrossVV(_local2, _local3)); var _local21:Number = (_local19 * b2Math.CrossVV(_local3, _local1)); var _local22:Number = (_local19 * b2Math.CrossVV(_local1, _local2)); if ((((_local8 <= 0)) && ((_local13 <= 0)))){ m_v1.a = 1; m_count = 1; return; }; if ((((((_local7 > 0)) && ((_local8 > 0)))) && ((_local22 <= 0)))){ _local24 = (1 / (_local7 + _local8)); m_v1.a = (_local7 * _local24); m_v2.a = (_local8 * _local24); m_count = 2; return; }; if ((((((_local12 > 0)) && ((_local13 > 0)))) && ((_local21 <= 0)))){ _local25 = (1 / (_local12 + _local13)); m_v1.a = (_local12 * _local25); m_v3.a = (_local13 * _local25); m_count = 2; m_v2.Set(m_v3); return; }; if ((((_local7 <= 0)) && ((_local18 <= 0)))){ m_v2.a = 1; m_count = 1; m_v1.Set(m_v2); return; }; if ((((_local12 <= 0)) && ((_local17 <= 0)))){ m_v3.a = 1; m_count = 1; m_v1.Set(m_v3); return; }; if ((((((_local17 > 0)) && ((_local18 > 0)))) && ((_local20 <= 0)))){ _local26 = (1 / (_local17 + _local18)); m_v2.a = (_local17 * _local26); m_v3.a = (_local18 * _local26); m_count = 2; m_v1.Set(m_v3); return; }; var _local23:Number = (1 / ((_local20 + _local21) + _local22)); m_v1.a = (_local20 * _local23); m_v2.a = (_local21 * _local23); m_v3.a = (_local22 * _local23); m_count = 3; } } }//package Box2D.Collision
Section 25
//b2SimplexCache (Box2D.Collision.b2SimplexCache) package Box2D.Collision { public class b2SimplexCache { public var metric:Number; public var count:uint; public var indexA:Array; public var indexB:Array; public function b2SimplexCache(){ indexA = new Array(3); indexB = new Array(3); super(); } } }//package Box2D.Collision
Section 26
//b2SimplexVertex (Box2D.Collision.b2SimplexVertex) package Box2D.Collision { import Box2D.Common.Math.*; class b2SimplexVertex { public var wA:b2Vec2; public var wB:b2Vec2; public var w:b2Vec2; public var a:Number; public var indexA:int; public var indexB:int; public function Set(_arg1:b2SimplexVertex):void{ wA.SetV(_arg1.wA); wB.SetV(_arg1.wB); w.SetV(_arg1.w); a = _arg1.a; indexA = _arg1.indexA; indexB = _arg1.indexB; } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { private static var b2_toiCalls:int = 0; private static var b2_toiIters:int = 0; private static var b2_toiMaxIters:int = 0; private static var b2_toiRootIters:int = 0; private static var b2_toiMaxRootIters:int = 0; private static var s_cache:b2SimplexCache = new b2SimplexCache(); private static var s_distanceInput:b2DistanceInput = new b2DistanceInput(); private static var s_xfA:b2Transform = new b2Transform(); private static var s_xfB:b2Transform = new b2Transform(); private static var s_fcn:b2SeparationFunction = new b2SeparationFunction(); private static var s_distanceOutput:b2DistanceOutput = new b2DistanceOutput(); public static function TimeOfImpact(_arg1:b2TOIInput):Number{ var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; b2_toiCalls++; var _local2:b2DistanceProxy = _arg1.proxyA; var _local3:b2DistanceProxy = _arg1.proxyB; var _local4:b2Sweep = _arg1.sweepA; var _local5:b2Sweep = _arg1.sweepB; b2Settings.b2Assert((_local4.t0 == _local5.t0)); b2Settings.b2Assert(((1 - _local4.t0) > Number.MIN_VALUE)); var _local6:Number = (_local2.m_radius + _local3.m_radius); var _local7:Number = _arg1.tolerance; var _local8:Number = 0; var _local9 = 1000; var _local10:int; var _local11:Number = 0; s_cache.count = 0; s_distanceInput.useRadii = false; while (true) { _local4.GetTransform(s_xfA, _local8); _local5.GetTransform(s_xfB, _local8); s_distanceInput.proxyA = _local2; s_distanceInput.proxyB = _local3; s_distanceInput.transformA = s_xfA; s_distanceInput.transformB = s_xfB; b2Distance.Distance(s_distanceOutput, s_cache, s_distanceInput); if (s_distanceOutput.distance <= 0){ _local8 = 1; break; }; s_fcn.Initialize(s_cache, _local2, s_xfA, _local3, s_xfB); _local12 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local12 <= 0){ _local8 = 1; break; }; if (_local10 == 0){ if (_local12 > _local6){ _local11 = b2Math.Max((_local6 - _local7), (0.75 * _local6)); } else { _local11 = b2Math.Max((_local12 - _local7), (0.02 * _local6)); }; }; if ((_local12 - _local11) < (0.5 * _local7)){ if (_local10 == 0){ _local8 = 1; break; }; break; }; _local13 = _local8; _local14 = _local8; _local15 = 1; _local16 = _local12; _local4.GetTransform(s_xfA, _local15); _local5.GetTransform(s_xfB, _local15); _local17 = s_fcn.Evaluate(s_xfA, s_xfB); if (_local17 >= _local11){ _local8 = 1; break; }; _local18 = 0; while (true) { if ((_local18 & 1)){ _local19 = (_local14 + (((_local11 - _local16) * (_local15 - _local14)) / (_local17 - _local16))); } else { _local19 = (0.5 * (_local14 + _local15)); }; _local4.GetTransform(s_xfA, _local19); _local5.GetTransform(s_xfB, _local19); _local20 = s_fcn.Evaluate(s_xfA, s_xfB); if (b2Math.Abs((_local20 - _local11)) < (0.025 * _local7)){ _local13 = _local19; break; }; if (_local20 > _local11){ _local14 = _local19; _local16 = _local20; } else { _local15 = _local19; _local17 = _local20; }; _local18++; b2_toiRootIters++; if (_local18 == 50){ break; }; }; b2_toiMaxRootIters = b2Math.Max(b2_toiMaxRootIters, _local18); if (_local13 < ((1 + (100 * Number.MIN_VALUE)) * _local8)){ break; }; _local8 = _local13; _local10++; b2_toiIters++; if (_local10 == _local9){ break; }; }; b2_toiMaxIters = b2Math.Max(b2_toiMaxIters, _local10); return (_local8); } } }//package Box2D.Collision
Section 28
//b2TOIInput (Box2D.Collision.b2TOIInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2TOIInput { public var proxyA:b2DistanceProxy; public var proxyB:b2DistanceProxy; public var sweepA:b2Sweep; public var sweepB:b2Sweep; public var tolerance:Number; public function b2TOIInput(){ proxyA = new b2DistanceProxy(); proxyB = new b2DistanceProxy(); sweepA = new b2Sweep(); sweepB = new b2Sweep(); super(); } } }//package Box2D.Collision
Section 29
//b2WorldManifold (Box2D.Collision.b2WorldManifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2WorldManifold { public var m_normal:b2Vec2; public var m_points:Array; public function b2WorldManifold(){ m_normal = new b2Vec2(); super(); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2Manifold, _arg2:b2Transform, _arg3:Number, _arg4:b2Transform, _arg5:Number):void{ var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; 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; if (_arg1.m_pointCount == 0){ return; }; switch (_arg1.m_type){ case b2Manifold.e_circles: _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local15 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local16 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_points[0].m_localPoint; _local17 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local18 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local21 = ((_local19 * _local19) + (_local20 * _local20)); if (_local21 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local26 = Math.sqrt(_local21); m_normal.x = (_local19 / _local26); m_normal.y = (_local20 / _local26); } else { m_normal.x = 1; m_normal.y = 0; }; _local22 = (_local15 + (_arg3 * m_normal.x)); _local23 = (_local16 + (_arg3 * m_normal.y)); _local24 = (_local17 - (_arg5 * m_normal.x)); _local25 = (_local18 - (_arg5 * m_normal.y)); m_points[0].x = (0.5 * (_local22 + _local24)); m_points[0].y = (0.5 * (_local23 + _local25)); break; case b2Manifold.e_faceA: _local8 = _arg2.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg2.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = _local9; m_normal.y = _local10; _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg4.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg3 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg5)) * _local10)); _local6++; }; break; case b2Manifold.e_faceB: _local8 = _arg4.R; _local7 = _arg1.m_localPlaneNormal; _local9 = ((_local8.col1.x * _local7.x) + (_local8.col2.x * _local7.y)); _local10 = ((_local8.col1.y * _local7.x) + (_local8.col2.y * _local7.y)); _local8 = _arg4.R; _local7 = _arg1.m_localPoint; _local11 = ((_arg4.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local12 = ((_arg4.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_normal.x = -(_local9); m_normal.y = -(_local10); _local6 = 0; while (_local6 < _arg1.m_pointCount) { _local8 = _arg2.R; _local7 = _arg1.m_points[_local6].m_localPoint; _local13 = ((_arg2.position.x + (_local8.col1.x * _local7.x)) + (_local8.col2.x * _local7.y)); _local14 = ((_arg2.position.y + (_local8.col1.y * _local7.x)) + (_local8.col2.y * _local7.y)); m_points[_local6].x = (_local13 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local9)); m_points[_local6].y = (_local14 + ((0.5 * (((_arg5 - ((_local13 - _local11) * _local9)) - ((_local14 - _local12) * _local10)) - _arg3)) * _local10)); _local6++; }; break; }; } } }//package Box2D.Collision
Section 30
//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(); } public function Set(_arg1:ClipVertex):void{ v.SetV(_arg1.v); id.Set(_arg1.id); } } }//package Box2D.Collision
Section 31
//Features (Box2D.Collision.Features) package Box2D.Collision { import Box2D.Common.*; public class Features { b2internal var _referenceEdge:int; b2internal var _incidentEdge:int; b2internal var _incidentVertex:int; b2internal var _flip:int; b2internal var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentEdge():int{ return (_incidentEdge); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } public function get incidentVertex():int{ return (_incidentVertex); } 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 set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } } }//package Box2D.Collision
Section 32
//IBroadPhase (Box2D.Collision.IBroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; public interface IBroadPhase { function CreateProxy(_arg1:b2AABB, _arg2); function DestroyProxy(_arg1):void; function MoveProxy(_arg1, _arg2:b2AABB, _arg3:b2Vec2):void; function TestOverlap(_arg1, _arg2):Boolean; function GetUserData(_arg1); function GetFatAABB(_arg1):b2AABB; function GetProxyCount():int; function UpdatePairs(_arg1:Function):void; function Query(_arg1:Function, _arg2:b2AABB):void; function RayCast(_arg1:Function, _arg2:b2RayCastInput):void; function Validate():void; function Rebalance(_arg1:int):void; } }//package Box2D.Collision
Section 33
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(){ col1 = new b2Vec2(); col2 = new b2Vec2(); super(); col1.x = (col2.y = 1); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = 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 Copy():b2Mat22{ var _local1:b2Mat22 = new b2Mat22(); _local1.SetM(this); return (_local1); } 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 SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function GetInverse(_arg1:b2Mat22):b2Mat22{ var _local3:Number; var _local6:Number; var _local2:Number = col1.x; _local3 = col2.x; var _local4:Number = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); if (_local6 != 0){ _local6 = (1 / _local6); }; _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function Abs():void{ col1.Abs(); col2.Abs(); } public static function FromAngle(_arg1:Number):b2Mat22{ var _local2:b2Mat22 = new (b2Mat22); _local2.Set(_arg1); return (_local2); } public static function FromVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Mat22{ var _local3:b2Mat22 = new (b2Mat22); _local3.SetVV(_arg1, _arg2); return (_local3); } } }//package Box2D.Common.Math
Section 34
//b2Mat33 (Box2D.Common.Math.b2Mat33) package Box2D.Common.Math { public class b2Mat33 { public var col1:b2Vec3; public var col2:b2Vec3; public var col3:b2Vec3; public function b2Mat33(_arg1:b2Vec3=null, _arg2:b2Vec3=null, _arg3:b2Vec3=null){ col1 = new b2Vec3(); col2 = new b2Vec3(); col3 = new b2Vec3(); super(); if (((((!(_arg1)) && (!(_arg2)))) && (!(_arg3)))){ col1.SetZero(); col2.SetZero(); col3.SetZero(); } else { col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); }; } public function SetVVV(_arg1:b2Vec3, _arg2:b2Vec3, _arg3:b2Vec3):void{ col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); } public function Copy():b2Mat33{ return (new b2Mat33(col1, col2, col3)); } public function SetM(_arg1:b2Mat33):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); col3.SetV(_arg1.col3); } public function AddM(_arg1:b2Mat33):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col1.z = (col1.z + _arg1.col1.z); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); col2.z = (col2.z + _arg1.col2.z); col3.x = (col3.x + _arg1.col3.x); col3.y = (col3.y + _arg1.col3.y); col3.z = (col3.z + _arg1.col3.z); } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 1; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 1; } public function SetZero():void{ col1.x = 0; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 0; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 0; } public function Solve22(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local6:Number; _local4 = col1.x; var _local5:Number = col2.x; _local6 = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); if (_local8 != 0){ _local8 = (1 / _local8); }; _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function Solve33(_arg1:b2Vec3, _arg2:Number, _arg3:Number, _arg4:Number):b2Vec3{ var _local5:Number = col1.x; var _local6:Number = col1.y; var _local7:Number = col1.z; var _local8:Number = col2.x; var _local9:Number = col2.y; var _local10:Number = col2.z; var _local11:Number = col3.x; var _local12:Number = col3.y; var _local13:Number = col3.z; var _local14:Number = (((_local5 * ((_local9 * _local13) - (_local10 * _local12))) + (_local6 * ((_local10 * _local11) - (_local8 * _local13)))) + (_local7 * ((_local8 * _local12) - (_local9 * _local11)))); if (_local14 != 0){ _local14 = (1 / _local14); }; _arg1.x = (_local14 * (((_arg2 * ((_local9 * _local13) - (_local10 * _local12))) + (_arg3 * ((_local10 * _local11) - (_local8 * _local13)))) + (_arg4 * ((_local8 * _local12) - (_local9 * _local11))))); _arg1.y = (_local14 * (((_local5 * ((_arg3 * _local13) - (_arg4 * _local12))) + (_local6 * ((_arg4 * _local11) - (_arg2 * _local13)))) + (_local7 * ((_arg2 * _local12) - (_arg3 * _local11))))); _arg1.z = (_local14 * (((_local5 * ((_local9 * _arg4) - (_local10 * _arg3))) + (_local6 * ((_local10 * _arg2) - (_local8 * _arg4)))) + (_local7 * ((_local8 * _arg3) - (_local9 * _arg2))))); return (_arg1); } } }//package Box2D.Common.Math
Section 35
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static const b2Mat22_identity:b2Mat22 = b2Mat22.FromVV(new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2Transform_identity:b2Transform = new b2Transform(b2Vec2_zero, b2Mat22_identity); public static function IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } public static function MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg2, _arg1.col1), Dot(_arg2, _arg1.col2)); return (_local3); } public static function MulX(_arg1:b2Transform, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function MulXT(_arg1:b2Transform, _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 AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = b2Mat22.FromVV(MulMV(_arg1, _arg2.col1), MulMV(_arg1, _arg2.col2)); return (_local3); } public static function MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col1), Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(Dot(_arg1.col1, _arg2.col2), Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = b2Mat22.FromVV(_local3, _local4); return (_local5); } public static function Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(Abs(_arg1.x), Abs(_arg1.y)); return (_local2); } public static function AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = b2Mat22.FromVV(AbsV(_arg1.col1), AbsV(_arg1.col2)); return (_local2); } public static function Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Min(_arg1.x, _arg2.x), Min(_arg1.y, _arg2.y)); return (_local3); } public static function Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(Max(_arg1.x, _arg2.x), Max(_arg1.y, _arg2.y)); return (_local3); } public static function Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (((_arg1 < _arg2)) ? _arg2 : ((_arg1 > _arg3)) ? _arg3 : _arg1); } public static function ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (MaxV(_arg2, MinV(_arg1, _arg3))); } public static function Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function Random():Number{ return (((Math.random() * 2) - 1)); } public static function RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function NextPowerOfTwo(_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 IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } } }//package Box2D.Common.Math
Section 36
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c0:b2Vec2; public var c:b2Vec2; public var a0:Number; public var a:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Set(_arg1:b2Sweep):void{ localCenter.SetV(_arg1.localCenter); c0.SetV(_arg1.c0); c.SetV(_arg1.c); a0 = _arg1.a0; a = _arg1.a; t0 = _arg1.t0; } public function Copy():b2Sweep{ var _local1:b2Sweep = new b2Sweep(); _local1.localCenter.SetV(localCenter); _local1.c0.SetV(c0); _local1.c.SetV(c); _local1.a0 = a0; _local1.a = a; _local1.t0 = t0; return (_local1); } public function GetTransform(_arg1:b2Transform, _arg2:Number):void{ _arg1.position.x = (((1 - _arg2) * c0.x) + (_arg2 * c.x)); _arg1.position.y = (((1 - _arg2) * c0.y) + (_arg2 * c.y)); var _local3:Number = (((1 - _arg2) * a0) + (_arg2 * a)); _arg1.R.Set(_local3); var _local4:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local4.col1.x * localCenter.x) + (_local4.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local4.col1.y * localCenter.x) + (_local4.col2.y * localCenter.y))); } 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; }; } } }//package Box2D.Common.Math
Section 37
//b2Transform (Box2D.Common.Math.b2Transform) package Box2D.Common.Math { public class b2Transform { public var position:b2Vec2; public var R:b2Mat22; public function b2Transform(_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 SetIdentity():void{ position.SetZero(); R.SetIdentity(); } public function Set(_arg1:b2Transform):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function GetAngle():Number{ return (Math.atan2(R.col1.y, R.col1.x)); } } }//package Box2D.Common.Math
Section 38
//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 SetZero():void{ x = 0; y = 0; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function GetNegative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function NegativeSelf():void{ x = -(x); y = -(y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.Dot(this, _arg1.col1); y = b2Math.Dot(this, _arg1.col2); x = _local2; } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.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 Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function IsValid():Boolean{ return (((b2Math.IsValid(x)) && (b2Math.IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 39
//b2Vec3 (Box2D.Common.Math.b2Vec3) package Box2D.Common.Math { public class b2Vec3 { public var x:Number; public var y:Number; public var z:Number; public function b2Vec3(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function SetZero():void{ x = (y = (z = 0)); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function SetV(_arg1:b2Vec3):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public function GetNegative():b2Vec3{ return (new b2Vec3(-(x), -(y), -(z))); } public function NegativeSelf():void{ x = -(x); y = -(y); z = -(z); } public function Copy():b2Vec3{ return (new b2Vec3(x, y, z)); } public function Add(_arg1:b2Vec3):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function Subtract(_arg1:b2Vec3):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } } }//package Box2D.Common.Math
Section 40
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.Clamp(_arg3, 0, 1))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.Clamp(_arg1, 0, 1))); } public function get color():uint{ return ((((_r << 16) | (_g << 8)) | _b)); } } }//package Box2D.Common
Section 41
//b2internal (Box2D.Common.b2internal) package Box2D.Common { public namespace b2internal = "http://www.box2d.org/ns/b2internal"; }//package Box2D.Common
Section 42
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { public class b2Settings { public static const VERSION:String = "2.1alpha"; public static const USHRT_MAX:int = 0xFFFF; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxManifoldPoints:int = 2; public static const b2_aabbExtension:Number = 0.1; public static const b2_aabbMultiplier:Number = 2; public static const b2_polygonRadius:Number = (2 * b2_linearSlop); public static const b2_linearSlop:Number = 0.005; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_toiSlop:Number = 0.04; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_maxTOIJointsPerIsland:int = 32; public static const b2_velocityThreshold:Number = 1; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const b2_maxTranslation:Number = 2; public static const b2_maxTranslationSquared:Number = 4; public static const b2_maxRotation:Number = 1.5707963267949; public static const b2_maxRotationSquared:Number = 2.46740110027234; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_timeToSleep:Number = 0.5; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSleepTolerance:Number = 0.0349065850398866; public static function b2MixFriction(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt((_arg1 * _arg2))); } public static function b2MixRestitution(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2Assert(_arg1:Boolean):void{ if (!_arg1){ throw ("Assertion Failed"); }; } } }//package Box2D.Common
Section 43
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollideCircles(m_manifold, (m_fixtureA.GetShape() as b2CircleShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public static function Create(_arg1):b2Contact{ return (new (b2CircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 44
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { b2internal var m_flags:uint; b2internal var m_prev:b2Contact; b2internal var m_next:b2Contact; b2internal var m_nodeA:b2ContactEdge; b2internal var m_nodeB:b2ContactEdge; b2internal var m_fixtureA:b2Fixture; b2internal var m_fixtureB:b2Fixture; b2internal var m_manifold:b2Manifold; b2internal var m_oldManifold:b2Manifold; b2internal var m_toi:Number; b2internal static var e_sensorFlag:uint = 1; b2internal static var e_continuousFlag:uint = 2; b2internal static var e_islandFlag:uint = 4; b2internal static var e_toiFlag:uint = 8; b2internal static var e_touchingFlag:uint = 16; b2internal static var e_enabledFlag:uint = 32; b2internal static var e_filterFlag:uint = 64; private static var s_input:b2TOIInput = new b2TOIInput(); public function b2Contact(){ m_nodeA = new b2ContactEdge(); m_nodeB = new b2ContactEdge(); m_manifold = new b2Manifold(); m_oldManifold = new b2Manifold(); super(); } public function GetManifold():b2Manifold{ return (m_manifold); } public function GetWorldManifold(_arg1:b2WorldManifold):void{ var _local2:b2Body = m_fixtureA.GetBody(); var _local3:b2Body = m_fixtureB.GetBody(); var _local4:b2Shape = m_fixtureA.GetShape(); var _local5:b2Shape = m_fixtureB.GetShape(); _arg1.Initialize(m_manifold, _local2.GetTransform(), _local4.m_radius, _local3.GetTransform(), _local5.m_radius); } public function IsTouching():Boolean{ return (((m_flags & e_touchingFlag) == e_touchingFlag)); } public function IsContinuous():Boolean{ return (((m_flags & e_continuousFlag) == e_continuousFlag)); } public function SetSensor(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_sensorFlag); } else { m_flags = (m_flags & ~(e_sensorFlag)); }; } public function IsSensor():Boolean{ return (((m_flags & e_sensorFlag) == e_sensorFlag)); } public function SetEnabled(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_enabledFlag); } else { m_flags = (m_flags & ~(e_enabledFlag)); }; } public function IsEnabled():Boolean{ return (((m_flags & e_enabledFlag) == e_enabledFlag)); } public function GetNext():b2Contact{ return (m_next); } public function GetFixtureA():b2Fixture{ return (m_fixtureA); } public function GetFixtureB():b2Fixture{ return (m_fixtureB); } public function FlagForFiltering():void{ m_flags = (m_flags | e_filterFlag); } b2internal function Reset(_arg1:b2Fixture=null, _arg2:b2Fixture=null):void{ m_flags = e_enabledFlag; if (((!(_arg1)) || (!(_arg2)))){ m_fixtureA = null; m_fixtureB = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_sensorFlag); }; var _local3:b2Body = _arg1.GetBody(); var _local4:b2Body = _arg2.GetBody(); if (((((((!((_local3.GetType() == b2Body.b2_dynamicBody))) || (_local3.IsBullet()))) || (!((_local4.GetType() == b2Body.b2_dynamicBody))))) || (_local4.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); }; m_fixtureA = _arg1; m_fixtureB = _arg2; m_manifold.m_pointCount = 0; m_prev = null; m_next = null; m_nodeA.contact = null; m_nodeA.prev = null; m_nodeA.next = null; m_nodeA.other = null; m_nodeB.contact = null; m_nodeB.prev = null; m_nodeB.next = null; m_nodeB.other = null; } b2internal function Update(_arg1:b2ContactListener):void{ var _local8:b2Shape; var _local9:b2Shape; var _local10:b2Transform; var _local11:b2Transform; var _local12:int; var _local13:b2ManifoldPoint; var _local14:b2ContactID; var _local15:int; var _local16:b2ManifoldPoint; var _local2:b2Manifold = m_oldManifold; m_oldManifold = m_manifold; m_manifold = _local2; m_flags = (m_flags | e_enabledFlag); var _local3:Boolean; var _local4 = ((m_flags & e_touchingFlag) == e_touchingFlag); var _local5:b2Body = m_fixtureA.m_body; var _local6:b2Body = m_fixtureB.m_body; var _local7:Boolean = m_fixtureA.m_aabb.TestOverlap(m_fixtureB.m_aabb); if ((m_flags & e_sensorFlag)){ if (_local7){ _local8 = m_fixtureA.GetShape(); _local9 = m_fixtureB.GetShape(); _local10 = _local5.GetTransform(); _local11 = _local6.GetTransform(); _local3 = b2Shape.TestOverlap(_local8, _local10, _local9, _local11); }; m_manifold.m_pointCount = 0; } else { if (((((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || (_local5.IsBullet()))) || (!((_local6.GetType() == b2Body.b2_dynamicBody))))) || (_local6.IsBullet()))){ m_flags = (m_flags | e_continuousFlag); } else { m_flags = (m_flags & ~(e_continuousFlag)); }; if (_local7){ Evaluate(); _local3 = (m_manifold.m_pointCount > 0); _local12 = 0; while (_local12 < m_manifold.m_pointCount) { _local13 = m_manifold.m_points[_local12]; _local13.m_normalImpulse = 0; _local13.m_tangentImpulse = 0; _local14 = _local13.m_id; _local15 = 0; while (_local15 < m_oldManifold.m_pointCount) { _local16 = m_oldManifold.m_points[_local15]; if (_local16.m_id.key == _local14.key){ _local13.m_normalImpulse = _local16.m_normalImpulse; _local13.m_tangentImpulse = _local16.m_tangentImpulse; break; }; _local15++; }; _local12++; }; } else { m_manifold.m_pointCount = 0; }; if (_local3 != _local4){ _local5.SetAwake(true); _local6.SetAwake(true); }; }; if (_local3){ m_flags = (m_flags | e_touchingFlag); } else { m_flags = (m_flags & ~(e_touchingFlag)); }; if ((((_local4 == false)) && ((_local3 == true)))){ _arg1.BeginContact(this); }; if ((((_local4 == true)) && ((_local3 == false)))){ _arg1.EndContact(this); }; if ((m_flags & e_sensorFlag) == 0){ _arg1.PreSolve(this, m_oldManifold); }; } b2internal function Evaluate():void{ } b2internal function ComputeTOI(_arg1:b2Sweep, _arg2:b2Sweep):Number{ s_input.proxyA.Set(m_fixtureA.GetShape()); s_input.proxyB.Set(m_fixtureB.GetShape()); s_input.sweepA = _arg1; s_input.sweepB = _arg2; s_input.tolerance = b2Settings.b2_linearSlop; return (b2TimeOfImpact.TimeOfImpact(s_input)); } } }//package Box2D.Dynamics.Contacts
Section 45
//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 localPlaneNormal:b2Vec2; public var localPoint:b2Vec2; public var normal:b2Vec2; public var normalMass:b2Mat22; public var K:b2Mat22; public var bodyA:b2Body; public var bodyB:b2Body; public var type:int; public var radius:Number; public var friction:Number; public var restitution:Number; public var pointCount:int; public var manifold:b2Manifold; public function b2ContactConstraint(){ localPlaneNormal = new b2Vec2(); localPoint = new b2Vec2(); normal = new b2Vec2(); normalMass = new b2Mat22(); K = new b2Mat22(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 46
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var localPoint:b2Vec2; public var rA:b2Vec2; public var rB:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var normalMass:Number; public var tangentMass:Number; public var equalizedMass:Number; public var velocityBias:Number; public function b2ContactConstraintPoint(){ localPoint = new b2Vec2(); rA = new b2Vec2(); rB = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 48
//b2ContactFactory (Box2D.Dynamics.Contacts.b2ContactFactory) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2ContactFactory { private var m_registers:Array; private var m_allocator; public function b2ContactFactory(_arg1){ m_allocator = _arg1; InitializeRegisters(); } b2internal function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ m_registers[_arg3][_arg4].createFcn = _arg1; m_registers[_arg3][_arg4].destroyFcn = _arg2; m_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ m_registers[_arg4][_arg3].createFcn = _arg1; m_registers[_arg4][_arg3].destroyFcn = _arg2; m_registers[_arg4][_arg3].primary = false; }; } b2internal function InitializeRegisters():void{ var _local2:int; m_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { m_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { m_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); AddType(b2EdgeAndCircleContact.Create, b2EdgeAndCircleContact.Destroy, b2Shape.e_edgeShape, b2Shape.e_circleShape); AddType(b2PolyAndEdgeContact.Create, b2PolyAndEdgeContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_edgeShape); } public function Create(_arg1:b2Fixture, _arg2:b2Fixture):b2Contact{ var _local6:b2Contact; var _local3:int = _arg1.GetType(); var _local4:int = _arg2.GetType(); var _local5:b2ContactRegister = m_registers[_local3][_local4]; if (_local5.pool){ _local6 = _local5.pool; _local5.pool = _local6.m_next; _local5.poolCount--; _local6.Reset(_arg1, _arg2); return (_local6); }; var _local7:Function = _local5.createFcn; if (_local7 != null){ if (_local5.primary){ _local6 = _local7(m_allocator); _local6.Reset(_arg1, _arg2); return (_local6); }; _local6 = _local7(m_allocator); _local6.Reset(_arg2, _arg1); return (_local6); //unresolved jump }; return (null); } public function Destroy(_arg1:b2Contact):void{ if (_arg1.m_manifold.m_pointCount > 0){ _arg1.m_fixtureA.m_body.SetAwake(true); _arg1.m_fixtureB.m_body.SetAwake(true); }; var _local2:int = _arg1.m_fixtureA.GetType(); var _local3:int = _arg1.m_fixtureB.GetType(); var _local4:b2ContactRegister = m_registers[_local2][_local3]; _local4.poolCount++; _arg1.m_next = _local4.pool; _local4.pool = _arg1; var _local5:Function = _local4.destroyFcn; _local5(_arg1, m_allocator); } } }//package Box2D.Dynamics.Contacts
Section 49
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var createFcn:Function; public var destroyFcn:Function; public var primary:Boolean; public var pool:b2Contact; public var poolCount:int; } }//package Box2D.Dynamics.Contacts
Section 50
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2ContactSolver { private var m_step:b2TimeStep; private var m_allocator; b2internal var m_constraints:Array; private var m_constraintCount:int; private static var s_worldManifold:b2WorldManifold = new b2WorldManifold(); private static var s_psm:b2PositionSolverManifold = new b2PositionSolverManifold(); public function b2ContactSolver(){ m_step = new b2TimeStep(); m_constraints = new Array(); super(); } public function Initialize(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4):void{ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:b2Fixture; var _local10:b2Fixture; var _local11:b2Shape; var _local12:b2Shape; var _local13:Number; var _local14:Number; var _local15:b2Body; var _local16:b2Body; var _local17:b2Manifold; 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:b2ContactConstraint; var _local29:uint; var _local30:b2ManifoldPoint; var _local31:b2ContactConstraintPoint; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:b2ContactConstraintPoint; var _local49:b2ContactConstraintPoint; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local58:Number; var _local59:Number; var _local60:Number; var _local61:Number; m_step.Set(_arg1); m_allocator = _arg4; m_constraintCount = _arg3; while (m_constraints.length < m_constraintCount) { m_constraints[m_constraints.length] = new b2ContactConstraint(); }; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local9 = _local5.m_fixtureA; _local10 = _local5.m_fixtureB; _local11 = _local9.m_shape; _local12 = _local10.m_shape; _local13 = _local11.m_radius; _local14 = _local12.m_radius; _local15 = _local9.m_body; _local16 = _local10.m_body; _local17 = _local5.GetManifold(); _local18 = b2Settings.b2MixFriction(_local9.GetFriction(), _local10.GetFriction()); _local19 = b2Settings.b2MixRestitution(_local9.GetRestitution(), _local10.GetRestitution()); _local20 = _local15.m_linearVelocity.x; _local21 = _local15.m_linearVelocity.y; _local22 = _local16.m_linearVelocity.x; _local23 = _local16.m_linearVelocity.y; _local24 = _local15.m_angularVelocity; _local25 = _local16.m_angularVelocity; b2Settings.b2Assert((_local17.m_pointCount > 0)); s_worldManifold.Initialize(_local17, _local15.m_xf, _local13, _local16.m_xf, _local14); _local26 = s_worldManifold.m_normal.x; _local27 = s_worldManifold.m_normal.y; _local28 = m_constraints[_local6]; _local28.bodyA = _local15; _local28.bodyB = _local16; _local28.manifold = _local17; _local28.normal.x = _local26; _local28.normal.y = _local27; _local28.pointCount = _local17.m_pointCount; _local28.friction = _local18; _local28.restitution = _local19; _local28.localPlaneNormal.x = _local17.m_localPlaneNormal.x; _local28.localPlaneNormal.y = _local17.m_localPlaneNormal.y; _local28.localPoint.x = _local17.m_localPoint.x; _local28.localPoint.y = _local17.m_localPoint.y; _local28.radius = (_local13 + _local14); _local28.type = _local17.m_type; _local29 = 0; while (_local29 < _local28.pointCount) { _local30 = _local17.m_points[_local29]; _local31 = _local28.points[_local29]; _local31.normalImpulse = _local30.m_normalImpulse; _local31.tangentImpulse = _local30.m_tangentImpulse; _local31.localPoint.SetV(_local30.m_localPoint); _local32 = (_local31.rA.x = (s_worldManifold.m_points[_local29].x - _local15.m_sweep.c.x)); _local33 = (_local31.rA.y = (s_worldManifold.m_points[_local29].y - _local15.m_sweep.c.y)); _local34 = (_local31.rB.x = (s_worldManifold.m_points[_local29].x - _local16.m_sweep.c.x)); _local35 = (_local31.rB.y = (s_worldManifold.m_points[_local29].y - _local16.m_sweep.c.y)); _local36 = ((_local32 * _local27) - (_local33 * _local26)); _local37 = ((_local34 * _local27) - (_local35 * _local26)); _local36 = (_local36 * _local36); _local37 = (_local37 * _local37); _local38 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local36)) + (_local16.m_invI * _local37)); _local31.normalMass = (1 / _local38); _local39 = ((_local15.m_mass * _local15.m_invMass) + (_local16.m_mass * _local16.m_invMass)); _local39 = (_local39 + (((_local15.m_mass * _local15.m_invI) * _local36) + ((_local16.m_mass * _local16.m_invI) * _local37))); _local31.equalizedMass = (1 / _local39); _local40 = _local27; _local41 = -(_local26); _local42 = ((_local32 * _local41) - (_local33 * _local40)); _local43 = ((_local34 * _local41) - (_local35 * _local40)); _local42 = (_local42 * _local42); _local43 = (_local43 * _local43); _local44 = (((_local15.m_invMass + _local16.m_invMass) + (_local15.m_invI * _local42)) + (_local16.m_invI * _local43)); _local31.tangentMass = (1 / _local44); _local31.velocityBias = 0; _local45 = (((_local22 + (-(_local25) * _local35)) - _local20) - (-(_local24) * _local33)); _local46 = (((_local23 + (_local25 * _local34)) - _local21) - (_local24 * _local32)); _local47 = ((_local28.normal.x * _local45) + (_local28.normal.y * _local46)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local31.velocityBias = (_local31.velocityBias + (-(_local28.restitution) * _local47)); }; _local29++; }; if (_local28.pointCount == 2){ _local48 = _local28.points[0]; _local49 = _local28.points[1]; _local50 = _local15.m_invMass; _local51 = _local15.m_invI; _local52 = _local16.m_invMass; _local53 = _local16.m_invI; _local54 = ((_local48.rA.x * _local27) - (_local48.rA.y * _local26)); _local55 = ((_local48.rB.x * _local27) - (_local48.rB.y * _local26)); _local56 = ((_local49.rA.x * _local27) - (_local49.rA.y * _local26)); _local57 = ((_local49.rB.x * _local27) - (_local49.rB.y * _local26)); _local58 = (((_local50 + _local52) + ((_local51 * _local54) * _local54)) + ((_local53 * _local55) * _local55)); _local59 = (((_local50 + _local52) + ((_local51 * _local56) * _local56)) + ((_local53 * _local57) * _local57)); _local60 = (((_local50 + _local52) + ((_local51 * _local54) * _local56)) + ((_local53 * _local55) * _local57)); _local61 = 100; if ((_local58 * _local58) < (_local61 * ((_local58 * _local59) - (_local60 * _local60)))){ _local28.K.col1.Set(_local58, _local60); _local28.K.col2.Set(_local60, _local59); _local28.K.GetInverse(_local28.normalMass); } else { _local28.pointCount = 1; }; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; 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; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.bodyA; _local8 = _local6.bodyB; _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.rA.x * _local22) - (_local20.rA.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.rB.x * _local22) - (_local20.rB.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 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:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:b2Mat22; var _local23:b2Vec2; var _local25:b2ContactConstraint; var _local26:b2Body; var _local27:b2Body; var _local28:Number; var _local29:Number; var _local30:b2Vec2; var _local31:b2Vec2; 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:int; var _local43:b2ContactConstraintPoint; var _local44:b2ContactConstraintPoint; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:Number; var _local49:Number; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local24:int; while (_local24 < m_constraintCount) { _local25 = m_constraints[_local24]; _local26 = _local25.bodyA; _local27 = _local25.bodyB; _local28 = _local26.m_angularVelocity; _local29 = _local27.m_angularVelocity; _local30 = _local26.m_linearVelocity; _local31 = _local27.m_linearVelocity; _local32 = _local26.m_invMass; _local33 = _local26.m_invI; _local34 = _local27.m_invMass; _local35 = _local27.m_invI; _local36 = _local25.normal.x; _local37 = _local25.normal.y; _local38 = _local37; _local39 = -(_local36); _local40 = _local25.friction; _local1 = 0; while (_local1 < _local25.pointCount) { _local2 = _local25.points[_local1]; _local7 = (((_local31.x - (_local29 * _local2.rB.y)) - _local30.x) + (_local28 * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local10 = ((_local7 * _local38) + (_local8 * _local39)); _local11 = (_local2.tangentMass * -(_local10)); _local12 = (_local40 * _local2.normalImpulse); _local13 = b2Math.Clamp((_local2.tangentImpulse + _local11), -(_local12), _local12); _local11 = (_local13 - _local2.tangentImpulse); _local14 = (_local11 * _local38); _local15 = (_local11 * _local39); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.tangentImpulse = _local13; _local1++; }; _local42 = _local25.pointCount; if (_local25.pointCount == 1){ _local2 = _local25.points[0]; _local7 = (((_local31.x + (-(_local29) * _local2.rB.y)) - _local30.x) - (-(_local28) * _local2.rA.y)); _local8 = (((_local31.y + (_local29 * _local2.rB.x)) - _local30.y) - (_local28 * _local2.rA.x)); _local9 = ((_local7 * _local36) + (_local8 * _local37)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local13 = (_local2.normalImpulse + _local11); _local13 = ((_local13 > 0)) ? _local13 : 0; _local11 = (_local13 - _local2.normalImpulse); _local14 = (_local11 * _local36); _local15 = (_local11 * _local37); _local30.x = (_local30.x - (_local32 * _local14)); _local30.y = (_local30.y - (_local32 * _local15)); _local28 = (_local28 - (_local33 * ((_local2.rA.x * _local15) - (_local2.rA.y * _local14)))); _local31.x = (_local31.x + (_local34 * _local14)); _local31.y = (_local31.y + (_local34 * _local15)); _local29 = (_local29 + (_local35 * ((_local2.rB.x * _local15) - (_local2.rB.y * _local14)))); _local2.normalImpulse = _local13; } else { _local43 = _local25.points[0]; _local44 = _local25.points[1]; _local45 = _local43.normalImpulse; _local46 = _local44.normalImpulse; _local47 = (((_local31.x - (_local29 * _local43.rB.y)) - _local30.x) + (_local28 * _local43.rA.y)); _local48 = (((_local31.y + (_local29 * _local43.rB.x)) - _local30.y) - (_local28 * _local43.rA.x)); _local49 = (((_local31.x - (_local29 * _local44.rB.y)) - _local30.x) + (_local28 * _local44.rA.y)); _local50 = (((_local31.y + (_local29 * _local44.rB.x)) - _local30.y) - (_local28 * _local44.rA.x)); _local51 = ((_local47 * _local36) + (_local48 * _local37)); _local52 = ((_local49 * _local36) + (_local50 * _local37)); _local53 = (_local51 - _local43.velocityBias); _local54 = (_local52 - _local44.velocityBias); _local22 = _local25.K; _local53 = (_local53 - ((_local22.col1.x * _local45) + (_local22.col2.x * _local46))); _local54 = (_local54 - ((_local22.col1.y * _local45) + (_local22.col2.y * _local46))); _local55 = 0.001; while (true) { _local22 = _local25.normalMass; _local56 = -(((_local22.col1.x * _local53) + (_local22.col2.x * _local54))); _local57 = -(((_local22.col1.y * _local53) + (_local22.col2.y * _local54))); if ((((_local56 >= 0)) && ((_local57 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = (-(_local43.normalMass) * _local53); _local57 = 0; _local51 = 0; _local52 = ((_local25.K.col1.y * _local56) + _local54); if ((((_local56 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = (-(_local44.normalMass) * _local54); _local51 = ((_local25.K.col2.x * _local57) + _local53); _local52 = 0; if ((((_local57 >= 0)) && ((_local51 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; _local56 = 0; _local57 = 0; _local51 = _local53; _local52 = _local54; if ((((_local51 >= 0)) && ((_local52 >= 0)))){ _local16 = (_local56 - _local45); _local17 = (_local57 - _local46); _local18 = (_local16 * _local36); _local19 = (_local16 * _local37); _local20 = (_local17 * _local36); _local21 = (_local17 * _local37); _local30.x = (_local30.x - (_local32 * (_local18 + _local20))); _local30.y = (_local30.y - (_local32 * (_local19 + _local21))); _local28 = (_local28 - (_local33 * ((((_local43.rA.x * _local19) - (_local43.rA.y * _local18)) + (_local44.rA.x * _local21)) - (_local44.rA.y * _local20)))); _local31.x = (_local31.x + (_local34 * (_local18 + _local20))); _local31.y = (_local31.y + (_local34 * (_local19 + _local21))); _local29 = (_local29 + (_local35 * ((((_local43.rB.x * _local19) - (_local43.rB.y * _local18)) + (_local44.rB.x * _local21)) - (_local44.rB.y * _local20)))); _local43.normalImpulse = _local56; _local44.normalImpulse = _local57; break; }; break; }; }; _local26.m_angularVelocity = _local28; _local27.m_angularVelocity = _local29; _local24++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.m_points[_local4]; _local6 = _local2.points[_local4]; _local5.m_normalImpulse = _local6.normalImpulse; _local5.m_tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2ContactConstraint; var _local5:b2Body; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:int; var _local13:b2ContactConstraintPoint; 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 _local2:Number = 0; var _local3:int; while (_local3 < m_constraintCount) { _local4 = m_constraints[_local3]; _local5 = _local4.bodyA; _local6 = _local4.bodyB; _local7 = (_local5.m_mass * _local5.m_invMass); _local8 = (_local5.m_mass * _local5.m_invI); _local9 = (_local6.m_mass * _local6.m_invMass); _local10 = (_local6.m_mass * _local6.m_invI); s_psm.Initialize(_local4); _local11 = s_psm.m_normal; _local12 = 0; while (_local12 < _local4.pointCount) { _local13 = _local4.points[_local12]; _local14 = s_psm.m_points[_local12]; _local15 = s_psm.m_separations[_local12]; _local16 = (_local14.x - _local5.m_sweep.c.x); _local17 = (_local14.y - _local5.m_sweep.c.y); _local18 = (_local14.x - _local6.m_sweep.c.x); _local19 = (_local14.y - _local6.m_sweep.c.y); _local2 = ((_local2 < _local15)) ? _local2 : _local15; _local20 = b2Math.Clamp((_arg1 * (_local15 + b2Settings.b2_linearSlop)), -(b2Settings.b2_maxLinearCorrection), 0); _local21 = (-(_local13.equalizedMass) * _local20); _local22 = (_local21 * _local11.x); _local23 = (_local21 * _local11.y); _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local7 * _local22)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local7 * _local23)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local8 * ((_local16 * _local23) - (_local17 * _local22)))); _local5.SynchronizeTransform(); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local9 * _local22)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local9 * _local23)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local10 * ((_local18 * _local23) - (_local19 * _local22)))); _local6.SynchronizeTransform(); _local12++; }; _local3++; }; return ((_local2 > (-1.5 * b2Settings.b2_linearSlop))); } } }//package Box2D.Dynamics.Contacts
Section 51
//b2EdgeAndCircleContact (Box2D.Dynamics.Contacts.b2EdgeAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2EdgeAndCircleContact extends b2Contact { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollideEdgeAndCircle(m_manifold, (m_fixtureA.GetShape() as b2EdgeShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } private function b2CollideEdgeAndCircle(_arg1:b2Manifold, _arg2:b2EdgeShape, _arg3:b2Transform, _arg4:b2CircleShape, _arg5:b2Transform):void{ } public static function Create(_arg1):b2Contact{ return (new (b2EdgeAndCircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 52
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_circleShape)); } override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.m_body; var _local2:b2Body = m_fixtureB.m_body; b2Collision.CollidePolygonAndCircle(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2CircleShape), _local2.m_xf); } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndCircleContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 53
//b2PolyAndEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndEdgeContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndEdgeContact extends b2Contact { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); b2Settings.b2Assert((_arg1.GetType() == b2Shape.e_polygonShape)); b2Settings.b2Assert((_arg2.GetType() == b2Shape.e_edgeShape)); } override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2CollidePolyAndEdge(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2EdgeShape), _local2.m_xf); } private function b2CollidePolyAndEdge(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2Transform, _arg4:b2EdgeShape, _arg5:b2Transform):void{ } public static function Create(_arg1):b2Contact{ return (new (b2PolyAndEdgeContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 54
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { public function Reset(_arg1:b2Fixture, _arg2:b2Fixture):void{ super.Reset(_arg1, _arg2); } override b2internal function Evaluate():void{ var _local1:b2Body = m_fixtureA.GetBody(); var _local2:b2Body = m_fixtureB.GetBody(); b2Collision.CollidePolygons(m_manifold, (m_fixtureA.GetShape() as b2PolygonShape), _local1.m_xf, (m_fixtureB.GetShape() as b2PolygonShape), _local2.m_xf); } public static function Create(_arg1):b2Contact{ return (new (b2PolygonContact)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 55
//b2PositionSolverManifold (Box2D.Dynamics.Contacts.b2PositionSolverManifold) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; class b2PositionSolverManifold { public var m_normal:b2Vec2; public var m_points:Array; public var m_separations:Array; private static var circlePointA:b2Vec2 = new b2Vec2(); private static var circlePointB:b2Vec2 = new b2Vec2(); function b2PositionSolverManifold(){ m_normal = new b2Vec2(); m_separations = new Array(b2Settings.b2_maxManifoldPoints); m_points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { m_points[_local1] = new b2Vec2(); _local1++; }; } public function Initialize(_arg1:b2ContactConstraint):void{ var _local2:int; var _local3:Number; var _local4:Number; var _local5:b2Mat22; var _local6:b2Vec2; 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; b2Settings.b2Assert((_arg1.pointCount > 0)); switch (_arg1.type){ case b2Manifold.e_circles: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local9 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local10 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.points[0].localPoint; _local11 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local12 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local16 = Math.sqrt(_local15); m_normal.x = (_local13 / _local16); m_normal.y = (_local14 / _local16); } else { m_normal.x = 1; m_normal.y = 0; }; m_points[0].x = (0.5 * (_local9 + _local11)); m_points[0].y = (0.5 * (_local10 + _local12)); m_separations[0] = (((_local13 * m_normal.x) + (_local14 * m_normal.y)) - _arg1.radius); break; case b2Manifold.e_faceA: _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyA.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyB.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].x = _local3; m_points[_local2].y = _local4; _local2++; }; break; case b2Manifold.e_faceB: _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPlaneNormal; m_normal.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_normal.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); _local5 = _arg1.bodyB.m_xf.R; _local6 = _arg1.localPoint; _local7 = (_arg1.bodyB.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local8 = (_arg1.bodyB.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); _local5 = _arg1.bodyA.m_xf.R; _local2 = 0; while (_local2 < _arg1.pointCount) { _local6 = _arg1.points[_local2].localPoint; _local3 = (_arg1.bodyA.m_xf.position.x + ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y))); _local4 = (_arg1.bodyA.m_xf.position.y + ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y))); m_separations[_local2] = ((((_local3 - _local7) * m_normal.x) + ((_local4 - _local8) * m_normal.y)) - _arg1.radius); m_points[_local2].Set(_local3, _local4); _local2++; }; m_normal.x = (m_normal.x * -1); m_normal.y = (m_normal.y * -1); break; }; } } }//package Box2D.Dynamics.Contacts
Section 56
//b2BuoyancyController (Box2D.Dynamics.Controllers.b2BuoyancyController) package Box2D.Dynamics.Controllers { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2BuoyancyController extends b2Controller { public var normal:b2Vec2; public var offset:Number;// = 0 public var density:Number;// = 0 public var velocity:b2Vec2; public var linearDrag:Number;// = 2 public var angularDrag:Number;// = 1 public var useDensity:Boolean;// = false public var useWorldGravity:Boolean;// = true public var gravity:b2Vec2;// = null public function b2BuoyancyController(){ normal = new b2Vec2(0, -1); velocity = new b2Vec2(0, 0); super(); } override public function Step(_arg1:b2TimeStep):void{ var _local3:b2Body; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Fixture; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; if (!m_bodyList){ return; }; if (useWorldGravity){ gravity = GetWorld().GetGravity().Copy(); }; var _local2:b2ControllerEdge = m_bodyList; while (_local2) { _local3 = _local2.body; if (_local3.IsAwake() == false){ } else { _local4 = new b2Vec2(); _local5 = new b2Vec2(); _local6 = 0; _local7 = 0; _local8 = _local3.GetFixtureList(); while (_local8) { _local11 = new b2Vec2(); _local12 = _local8.GetShape().ComputeSubmergedArea(normal, offset, _local3.GetTransform(), _local11); _local6 = (_local6 + _local12); _local4.x = (_local4.x + (_local12 * _local11.x)); _local4.y = (_local4.y + (_local12 * _local11.y)); if (useDensity){ _local13 = 1; } else { _local13 = 1; }; _local7 = (_local7 + (_local12 * _local13)); _local5.x = (_local5.x + ((_local12 * _local11.x) * _local13)); _local5.y = (_local5.y + ((_local12 * _local11.y) * _local13)); _local8 = _local8.GetNext(); }; _local4.x = (_local4.x / _local6); _local4.y = (_local4.y / _local6); _local5.x = (_local5.x / _local7); _local5.y = (_local5.y / _local7); if (_local6 < Number.MIN_VALUE){ } else { _local9 = gravity.GetNegative(); _local9.Multiply((density * _local6)); _local3.ApplyForce(_local9, _local5); _local10 = _local3.GetLinearVelocityFromWorldPoint(_local4); _local10.Subtract(velocity); _local10.Multiply((-(linearDrag) * _local6)); _local3.ApplyForce(_local10, _local4); _local3.ApplyTorque(((((-(_local3.GetInertia()) / _local3.GetMass()) * _local6) * _local3.GetAngularVelocity()) * angularDrag)); }; }; _local2 = _local2.nextBody; }; } override public function Draw(_arg1:b2DebugDraw):void{ var _local3:b2Vec2; var _local4:b2Vec2; var _local2:Number = 1000; _local3 = new b2Vec2(); _local4 = new b2Vec2(); _local3.x = ((normal.x * offset) + (normal.y * _local2)); _local3.y = ((normal.y * offset) - (normal.x * _local2)); _local4.x = ((normal.x * offset) - (normal.y * _local2)); _local4.y = ((normal.y * offset) + (normal.x * _local2)); var _local5:b2Color = new b2Color(0, 0, 1); _arg1.DrawSegment(_local3, _local4, _local5); } } }//package Box2D.Dynamics.Controllers
Section 57
//b2ConstantAccelController (Box2D.Dynamics.Controllers.b2ConstantAccelController) package Box2D.Dynamics.Controllers { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2ConstantAccelController extends b2Controller { public var A:b2Vec2; public function b2ConstantAccelController(){ A = new b2Vec2(0, 0); super(); } override public function Step(_arg1:b2TimeStep):void{ var _local4:b2Body; var _local2:b2Vec2 = new b2Vec2((A.x * _arg1.dt), (A.y * _arg1.dt)); var _local3:b2ControllerEdge = m_bodyList; while (_local3) { _local4 = _local3.body; if (!_local4.IsAwake()){ } else { _local4.SetLinearVelocity(new b2Vec2((_local4.GetLinearVelocity().x + _local2.x), (_local4.GetLinearVelocity().y + _local2.y))); }; _local3 = _local3.nextBody; }; } } }//package Box2D.Dynamics.Controllers
Section 58
//b2Controller (Box2D.Dynamics.Controllers.b2Controller) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Controller { b2internal var m_next:b2Controller; b2internal var m_prev:b2Controller; protected var m_bodyList:b2ControllerEdge; protected var m_bodyCount:int; b2internal var m_world:b2World; public function Step(_arg1:b2TimeStep):void{ } public function Draw(_arg1:b2DebugDraw):void{ } public function AddBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = new b2ControllerEdge(); _local2.controller = this; _local2.body = _arg1; _local2.nextBody = m_bodyList; _local2.prevBody = null; m_bodyList = _local2; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2; }; m_bodyCount++; _local2.nextController = _arg1.m_controllerList; _local2.prevController = null; _arg1.m_controllerList = _local2; if (_local2.nextController){ _local2.nextController.prevController = _local2; }; _arg1.m_controllerCount++; } public function RemoveBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = _arg1.m_controllerList; while (((_local2) && (!((_local2.controller == this))))) { _local2 = _local2.nextController; }; if (_local2.prevBody){ _local2.prevBody.nextBody = _local2.nextBody; }; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2.prevBody; }; if (_local2.nextController){ _local2.nextController.prevController = _local2.prevController; }; if (_local2.prevController){ _local2.prevController.nextController = _local2.nextController; }; if (m_bodyList == _local2){ m_bodyList = _local2.nextBody; }; if (_arg1.m_controllerList == _local2){ _arg1.m_controllerList = _local2.nextController; }; _arg1.m_controllerCount--; m_bodyCount--; } public function Clear():void{ while (m_bodyList) { RemoveBody(m_bodyList.body); }; } public function GetNext():b2Controller{ return (m_next); } public function GetWorld():b2World{ return (m_world); } public function GetBodyList():b2ControllerEdge{ return (m_bodyList); } } }//package Box2D.Dynamics.Controllers
Section 59
//b2ControllerEdge (Box2D.Dynamics.Controllers.b2ControllerEdge) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; public class b2ControllerEdge { public var controller:b2Controller; public var body:b2Body; public var prevBody:b2ControllerEdge; public var nextBody:b2ControllerEdge; public var prevController:b2ControllerEdge; public var nextController:b2ControllerEdge; } }//package Box2D.Dynamics.Controllers
Section 60
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_u:b2Vec2; private var m_frequencyHz:Number; private var m_dampingRatio:Number; private var m_gamma:Number; private var m_bias:Number; private var m_impulse:Number; private var m_mass:Number; private 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.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u.x), ((_arg1 * m_impulse) * m_u.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetLength():Number{ return (m_length); } public function SetLength(_arg1:Number):void{ m_length = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetDampingRatio():Number{ return (m_dampingRatio); } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local7:Number; var _local9:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (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; var _local8:Number = (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); var _local10:Number = 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(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = ((_local13)!=0) ? (1 / _local13) : 0; 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 = (_arg1.dt * (_local16 + (_arg1.dt * _local17))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (_local13 + m_gamma); m_mass = ((m_mass)!=0) ? (1 / m_mass) : 0; }; 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 b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (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; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_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)))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (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; var _local10:Number = (((_local4.m_sweep.c.x + _local8) - _local3.m_sweep.c.x) - _local5); var _local11:Number = (((_local4.m_sweep.c.y + _local9) - _local3.m_sweep.c.y) - _local6); var _local12:Number = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local12); _local11 = (_local11 / _local12); var _local13:Number = (_local12 - m_length); _local13 = b2Math.Clamp(_local13, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local14:Number = (-(m_mass) * _local13); m_u.Set(_local10, _local11); var _local15:Number = (_local14 * m_u.x); var _local16:Number = (_local14 * m_u.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local5 * _local16) - (_local6 * _local15)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local15)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local16)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((b2Math.Abs(_local13) < b2Settings.b2_linearSlop)); } } }//package Box2D.Dynamics.Joints
Section 61
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var length:Number; public var frequencyHz:Number; public var dampingRatio:Number; public function b2DistanceJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = 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{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 62
//b2FrictionJoint (Box2D.Dynamics.Joints.b2FrictionJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2FrictionJoint extends b2Joint { private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; public var m_linearMass:b2Mat22; public var m_angularMass:Number; private var m_linearImpulse:b2Vec2; private var m_angularImpulse:Number; private var m_maxForce:Number; private var m_maxTorque:Number; public function b2FrictionJoint(_arg1:b2FrictionJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_linearMass = new b2Mat22(); m_linearImpulse = new b2Vec2(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_linearMass.SetZero(); m_angularMass = 0; m_linearImpulse.SetZero(); m_angularImpulse = 0; m_maxForce = _arg1.maxForce; m_maxTorque = _arg1.maxTorque; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_linearImpulse.x), (_arg1 * m_linearImpulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_angularImpulse)); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function GetMaxForce():Number{ return (m_maxForce); } public function SetMaxTorque(_arg1:Number):void{ m_maxTorque = _arg1; } public function GetMaxTorque():Number{ return (m_maxTorque); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local10:Number; var _local12:Number; var _local13:Number; var _local14:b2Mat22; var _local15:b2Vec2; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.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_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.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; _local10 = _local4.m_invMass; var _local11:Number = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; _local14 = new b2Mat22(); _local14.col1.x = (_local10 + _local11); _local14.col2.x = 0; _local14.col1.y = 0; _local14.col2.y = (_local10 + _local11); _local14.col1.x = (_local14.col1.x + ((_local12 * _local7) * _local7)); _local14.col2.x = (_local14.col2.x + ((-(_local12) * _local6) * _local7)); _local14.col1.y = (_local14.col1.y + ((-(_local12) * _local6) * _local7)); _local14.col2.y = (_local14.col2.y + ((_local12 * _local6) * _local6)); _local14.col1.x = (_local14.col1.x + ((_local13 * _local9) * _local9)); _local14.col2.x = (_local14.col2.x + ((-(_local13) * _local8) * _local9)); _local14.col1.y = (_local14.col1.y + ((-(_local13) * _local8) * _local9)); _local14.col2.y = (_local14.col2.y + ((_local13 * _local8) * _local8)); _local14.GetInverse(m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > 0){ m_angularMass = (1 / m_angularMass); }; if (_arg1.warmStarting){ m_linearImpulse.x = (m_linearImpulse.x * _arg1.dtRatio); m_linearImpulse.y = (m_linearImpulse.y * _arg1.dtRatio); m_angularImpulse = (m_angularImpulse * _arg1.dtRatio); _local15 = m_linearImpulse; _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * _local15.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * _local15.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * _local15.y) - (_local7 * _local15.x)) + m_angularImpulse))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * _local15.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * _local15.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * _local15.y) - (_local9 * _local15.x)) + m_angularImpulse))); } else { m_linearImpulse.SetZero(); m_angularImpulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local18:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local19:Number = (_local9 - _local7); var _local20:Number = (-(m_angularMass) * _local19); var _local21:Number = m_angularImpulse; _local18 = (_arg1.dt * m_maxTorque); m_angularImpulse = b2Math.Clamp((m_angularImpulse + _local20), -(_local18), _local18); _local20 = (m_angularImpulse - _local21); _local7 = (_local7 - (_local12 * _local20)); _local9 = (_local9 + (_local13 * _local20)); var _local22:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local23:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local24:b2Vec2 = b2Math.MulMV(m_linearMass, new b2Vec2(-(_local22), -(_local23))); var _local25:b2Vec2 = m_linearImpulse.Copy(); m_linearImpulse.Add(_local24); _local18 = (_arg1.dt * m_maxForce); if (m_linearImpulse.LengthSquared() > (_local18 * _local18)){ m_linearImpulse.Normalize(); m_linearImpulse.Multiply(_local18); }; _local24 = b2Math.SubtractVV(m_linearImpulse, _local25); _local6.x = (_local6.x - (_local10 * _local24.x)); _local6.y = (_local6.y - (_local10 * _local24.y)); _local7 = (_local7 - (_local12 * ((_local14 * _local24.y) - (_local15 * _local24.x)))); _local8.x = (_local8.x + (_local11 * _local24.x)); _local8.y = (_local8.y + (_local11 * _local24.y)); _local9 = (_local9 + (_local13 * ((_local16 * _local24.y) - (_local17 * _local24.x)))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } } }//package Box2D.Dynamics.Joints
Section 63
//b2FrictionJointDef (Box2D.Dynamics.Joints.b2FrictionJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2FrictionJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var maxForce:Number; public var maxTorque:Number; public function b2FrictionJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_frictionJoint; maxForce = 0; maxTorque = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); } } }//package Box2D.Dynamics.Joints
Section 64
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { private var m_ground1:b2Body; private var m_ground2:b2Body; private var m_revolute1:b2RevoluteJoint; private var m_prismatic1:b2PrismaticJoint; private var m_revolute2:b2RevoluteJoint; private var m_prismatic2:b2PrismaticJoint; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_J:b2Jacobian; private var m_constant:Number; private var m_ratio:Number; private var m_mass:Number; private var m_impulse:Number; public function b2GearJoint(_arg1:b2GearJointDef){ 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); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.GetBodyA(); m_bodyA = _arg1.joint1.GetBodyB(); 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.GetBodyA(); m_bodyB = _arg1.joint2.GetBodyB(); 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_impulse = 0; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_J.linearB.x), ((_arg1 * m_impulse) * m_J.linearB.y))); } override public function GetReactionTorque(_arg1:Number):Number{ var _local2:b2Mat22 = m_bodyB.m_xf.R; var _local3:Number = (m_localAnchor1.x - m_bodyB.m_sweep.localCenter.x); var _local4:Number = (m_localAnchor1.y - m_bodyB.m_sweep.localCenter.y); var _local5:Number = ((_local2.col1.x * _local3) + (_local2.col2.x * _local4)); _local4 = ((_local2.col1.y * _local3) + (_local2.col2.y * _local4)); _local3 = _local5; var _local6:Number = (m_impulse * m_J.linearB.x); var _local7:Number = (m_impulse * m_J.linearB.y); return ((_arg1 * (((m_impulse * m_J.angularB) - (_local3 * _local7)) + (_local4 * _local6)))); } public function GetRatio():Number{ return (m_ratio); } public function SetRatio(_arg1:Number):void{ m_ratio = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4: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 _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; _local4 = m_bodyA; var _local5:b2Body = m_bodyB; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angularA = -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.linearA.Set(-(_local6), -(_local7)); m_J.angularA = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angularB = -(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.linearB.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angularB = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = ((_local14 > 0)) ? (1 / _local14) : 0; if (_arg1.warmStarting){ _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * m_impulse) * m_J.linearA.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * m_impulse) * m_J.linearA.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * m_impulse) * m_J.angularA)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * m_impulse) * m_J.linearB.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * m_impulse) * m_J.linearB.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * m_impulse) * m_J.angularB)); } else { m_impulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = (-(m_mass) * _local4); m_impulse = (m_impulse + _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local5) * m_J.linearA.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local5) * m_J.linearA.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local5) * m_J.angularA)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local5) * m_J.linearB.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local5) * m_J.linearB.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local5) * m_J.angularB)); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local5:Number; var _local6:Number; var _local2:Number = 0; var _local3:b2Body = m_bodyA; var _local4:b2Body = m_bodyB; if (m_revolute1){ _local5 = m_revolute1.GetJointAngle(); } else { _local5 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local6 = m_revolute2.GetJointAngle(); } else { _local6 = m_prismatic2.GetJointTranslation(); }; var _local7:Number = (m_constant - (_local5 + (m_ratio * _local6))); var _local8:Number = (-(m_mass) * _local7); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local8) * m_J.linearA.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local8) * m_J.linearA.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local8) * m_J.angularA)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local4.m_invMass * _local8) * m_J.linearB.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local4.m_invMass * _local8) * m_J.linearB.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local4.m_invI * _local8) * m_J.angularB)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((_local2 < b2Settings.b2_linearSlop)); } } }//package Box2D.Dynamics.Joints
Section 65
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 66
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linearA:b2Vec2; public var angularA:Number; public var linearB:b2Vec2; public var angularB:Number; public function b2Jacobian(){ linearA = new b2Vec2(); linearB = new b2Vec2(); super(); } public function SetZero():void{ linearA.SetZero(); angularA = 0; linearB.SetZero(); angularB = 0; } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linearA.SetV(_arg1); angularA = _arg2; linearB.SetV(_arg3); angularB = _arg4; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linearA.x * _arg1.x) + (linearA.y * _arg1.y)) + (angularA * _arg2)) + ((linearB.x * _arg3.x) + (linearB.y * _arg3.y))) + (angularB * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 67
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Joint { b2internal var m_type:int; b2internal var m_prev:b2Joint; b2internal var m_next:b2Joint; b2internal var m_edgeA:b2JointEdge; b2internal var m_edgeB:b2JointEdge; b2internal var m_bodyA:b2Body; b2internal var m_bodyB:b2Body; b2internal var m_islandFlag:Boolean; b2internal var m_collideConnected:Boolean; private var m_userData; b2internal var m_localCenterA:b2Vec2; b2internal var m_localCenterB:b2Vec2; b2internal var m_invMassA:Number; b2internal var m_invMassB:Number; b2internal var m_invIA:Number; b2internal var m_invIB:Number; b2internal static const e_unknownJoint:int = 0; b2internal static const e_revoluteJoint:int = 1; b2internal static const e_prismaticJoint:int = 2; b2internal static const e_distanceJoint:int = 3; b2internal static const e_pulleyJoint:int = 4; b2internal static const e_mouseJoint:int = 5; b2internal static const e_gearJoint:int = 6; b2internal static const e_lineJoint:int = 7; b2internal static const e_weldJoint:int = 8; b2internal static const e_frictionJoint:int = 9; b2internal static const e_inactiveLimit:int = 0; b2internal static const e_atLowerLimit:int = 1; b2internal static const e_atUpperLimit:int = 2; b2internal static const e_equalLimits:int = 3; public function b2Joint(_arg1:b2JointDef){ m_edgeA = new b2JointEdge(); m_edgeB = new b2JointEdge(); m_localCenterA = new b2Vec2(); m_localCenterB = new b2Vec2(); super(); b2Settings.b2Assert(!((_arg1.bodyA == _arg1.bodyB))); m_type = _arg1.type; m_prev = null; m_next = null; m_bodyA = _arg1.bodyA; m_bodyB = _arg1.bodyB; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetType():int{ return (m_type); } public function GetAnchorA():b2Vec2{ return (null); } public function GetAnchorB():b2Vec2{ return (null); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetBodyA():b2Body{ return (m_bodyA); } public function GetBodyB():b2Body{ return (m_bodyB); } public function GetNext():b2Joint{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function IsActive():Boolean{ return (((m_bodyA.IsActive()) && (m_bodyB.IsActive()))); } b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal function FinalizeVelocityConstraints():void{ } b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (false); } b2internal static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; 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; case e_lineJoint: _local3 = new b2LineJoint((_arg1 as b2LineJointDef)); break; case e_weldJoint: _local3 = new b2WeldJoint((_arg1 as b2WeldJointDef)); break; case e_frictionJoint: _local3 = new b2FrictionJoint((_arg1 as b2FrictionJointDef)); break; default: break; }; return (_local3); } b2internal static function Destroy(_arg1:b2Joint, _arg2):void{ } } }//package Box2D.Dynamics.Joints
Section 68
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var type:int; public var userData; public var bodyA:b2Body; public var bodyB:b2Body; public var collideConnected:Boolean; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; bodyA = null; bodyB = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 69
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var joint:b2Joint; public var prev:b2JointEdge; public var next:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 70
//b2LineJoint (Box2D.Dynamics.Joints.b2LineJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2LineJoint extends b2Joint { b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; b2internal var m_localXAxis1:b2Vec2; private var m_localYAxis1:b2Vec2; private var m_axis:b2Vec2; private var m_perp:b2Vec2; private var m_s1:Number; private var m_s2:Number; private var m_a1:Number; private var m_a2:Number; private var m_K:b2Mat22; private var m_impulse:b2Vec2; private var m_motorMass:Number; private var m_motorImpulse:Number; private var m_lowerTranslation:Number; private var m_upperTranslation:Number; private var m_maxMotorForce:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_enableMotor:Boolean; private var m_limitState:int; public function b2LineJoint(_arg1:b2LineJointDef){ 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_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat22(); m_impulse = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 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; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y))))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (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; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_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 IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function GetMaxMotorForce():Number{ return (m_maxMotorForce); } public function GetMotorForce():Number{ return (m_motorImpulse); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); m_motorMass = ((m_motorMass > Number.MIN_VALUE)) ? (1 / m_motorMass) : 0; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.y = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.y = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.y = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y)); _local21 = ((m_impulse.x * m_s1) + ((m_motorImpulse + m_impulse.y) * m_a1)); _local22 = ((m_impulse.x * m_s2) + ((m_motorImpulse + m_impulse.y) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:b2Vec2; var _local19:b2Vec2; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local13 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local14 = (m_motorMass * (m_motorSpeed - _local13)); _local15 = m_motorImpulse; _local16 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local14), -(_local16), _local16); _local14 = (m_motorImpulse - _local15); _local8 = (_local14 * m_axis.x); _local9 = (_local14 * m_axis.y); _local10 = (_local14 * m_a1); _local11 = (_local14 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local17 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local18 = m_impulse.Copy(); _local19 = m_K.Solve(new b2Vec2(), -(_local12), -(_local17)); m_impulse.Add(_local19); if (m_limitState == e_atLowerLimit){ m_impulse.y = b2Math.Max(m_impulse.y, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.y = b2Math.Min(m_impulse.y, 0); }; }; _local20 = (-(_local12) - ((m_impulse.y - _local18.y) * m_K.col2.x)); if (m_K.col1.x != 0){ _local21 = ((_local20 / m_K.col1.x) + _local18.x); } else { _local21 = _local18.x; }; m_impulse.x = _local21; _local19.x = (m_impulse.x - _local18.x); _local19.y = (m_impulse.y - _local18.y); _local8 = ((_local19.x * m_perp.x) + (_local19.y * m_axis.x)); _local9 = ((_local19.x * m_perp.y) + (_local19.y * m_axis.y)); _local10 = ((_local19.x * m_s1) + (_local19.y * m_a1)); _local11 = ((_local19.x * m_s2) + (_local19.y * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { if (m_K.col1.x != 0){ _local22 = (-(_local12) / m_K.col1.x); } else { _local22 = 0; }; m_impulse.x = (m_impulse.x + _local22); _local8 = (_local22 * m_perp.x); _local9 = (_local22 * m_perp.y); _local10 = (_local22 * m_s1); _local11 = (_local22 * m_s2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local34 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local34, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local34); _local18 = true; } else { if (_local34 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local34 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local34); _local18 = true; } else { if (_local34 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local34 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local34 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec2 = new b2Vec2(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = 0; if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve(_local28, -(_local29), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local35 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); if (_local35 != 0){ _local36 = (-(_local29) / _local35); } else { _local36 = 0; }; _local28.x = _local36; _local28.y = 0; }; var _local30:Number = ((_local28.x * m_perp.x) + (_local28.y * m_axis.x)); var _local31:Number = ((_local28.x * m_perp.y) + (_local28.y * m_axis.y)); var _local32:Number = ((_local28.x * m_s1) + (_local28.y * m_a1)); var _local33:Number = ((_local28.x * m_s2) + (_local28.y * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local30)); _local6.y = (_local6.y - (m_invMassA * _local31)); _local7 = (_local7 - (m_invIA * _local32)); _local8.x = (_local8.x + (m_invMassB * _local30)); _local8.y = (_local8.y + (m_invMassB * _local31)); _local9 = (_local9 + (m_invIB * _local33)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } } }//package Box2D.Dynamics.Joints
Section 71
//b2LineJointDef (Box2D.Dynamics.Joints.b2LineJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2LineJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var localAxisA:b2Vec2; public var enableLimit:Boolean; public var lowerTranslation:Number; public var upperTranslation:Number; public var enableMotor:Boolean; public var maxMotorForce:Number; public var motorSpeed:Number; public function b2LineJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_lineJoint; localAxisA.Set(1, 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{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); } } }//package Box2D.Dynamics.Joints
Section 72
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; private var m_localAnchor:b2Vec2; private var m_target:b2Vec2; private var m_impulse:b2Vec2; private var m_mass:b2Mat22; private var m_C:b2Vec2; private var m_maxForce:Number; private var m_frequencyHz:Number; private var m_dampingRatio:Number; private var m_beta:Number; private var m_gamma:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local4:b2Mat22; 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_bodyB.m_xf.position.x); var _local3:Number = (m_target.y - m_bodyB.m_xf.position.y); _local4 = m_bodyB.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(); m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_beta = 0; m_gamma = 0; } override public function GetAnchorA():b2Vec2{ return (m_target); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetTarget():b2Vec2{ return (m_target); } public function SetTarget(_arg1:b2Vec2):void{ if (m_bodyB.IsAwake() == false){ m_bodyB.SetAwake(true); }; m_target = _arg1; } public function GetMaxForce():Number{ return (m_maxForce); } public function SetMaxForce(_arg1:Number):void{ m_maxForce = _arg1; } public function GetFrequency():Number{ return (m_frequencyHz); } public function SetFrequency(_arg1:Number):void{ m_frequencyHz = _arg1; } public function GetDampingRatio():Number{ return (m_dampingRatio); } public function SetDampingRatio(_arg1:Number):void{ m_dampingRatio = _arg1; } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local7:b2Mat22; var _local11:Number; var _local12:Number; var _local2:b2Body = m_bodyB; var _local3:Number = _local2.GetMass(); var _local4:Number = ((2 * Math.PI) * m_frequencyHz); var _local5:Number = (((2 * _local3) * m_dampingRatio) * _local4); var _local6:Number = ((_local3 * _local4) * _local4); m_gamma = (_arg1.dt * (_local5 + (_arg1.dt * _local6))); m_gamma = ((m_gamma)!=0) ? (1 / m_gamma) : 0; m_beta = ((_arg1.dt * _local6) * m_gamma); _local7 = _local2.m_xf.R; var _local8:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local10:Number = ((_local7.col1.x * _local8) + (_local7.col2.x * _local9)); _local9 = ((_local7.col1.y * _local8) + (_local7.col2.y * _local9)); _local8 = _local10; _local11 = _local2.m_invMass; _local12 = _local2.m_invI; K1.col1.x = _local11; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local11; K2.col1.x = ((_local12 * _local9) * _local9); K2.col2.x = ((-(_local12) * _local8) * _local9); K2.col1.y = ((-(_local12) * _local8) * _local9); K2.col2.y = ((_local12 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.GetInverse(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local8) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local9) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local11 * m_impulse.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local11 * m_impulse.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * ((_local8 * m_impulse.y) - (_local9 * m_impulse.x)))); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_bodyB; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (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; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + (m_beta * m_C.x)) + (m_gamma * m_impulse.x)); _local5 = ((_local9 + (m_beta * m_C.y)) + (m_gamma * m_impulse.y)); var _local10:Number = -(((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = -(((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = (_arg1.dt * m_maxForce); if (m_impulse.LengthSquared() > (_local14 * _local14)){ m_impulse.Multiply((_local14 / m_impulse.Length())); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local10)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local11)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local11) - (_local7 * _local10)))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } } }//package Box2D.Dynamics.Joints
Section 73
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var target:b2Vec2; public var maxForce:Number; public var frequencyHz:Number; public var dampingRatio:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; } } }//package Box2D.Dynamics.Joints
Section 74
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; b2internal var m_localXAxis1:b2Vec2; private var m_localYAxis1:b2Vec2; private var m_refAngle:Number; private var m_axis:b2Vec2; private var m_perp:b2Vec2; private var m_s1:Number; private var m_s2:Number; private var m_a1:Number; private var m_a2:Number; private var m_K:b2Mat33; private var m_impulse:b2Vec3; private var m_motorMass:Number; private var m_motorImpulse:Number; private var m_lowerTranslation:Number; private var m_upperTranslation:Number; private var m_maxMotorForce:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_enableMotor:Boolean; private var m_limitState:int; 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_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat33(); m_impulse = new b2Vec3(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_localXAxis1.SetV(_arg1.localAxisA); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 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; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y))))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_bodyA; var _local2:b2Body = m_bodyB; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (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; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_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 IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorForce(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_maxMotorForce = _arg1; } public function GetMotorForce():Number{ return (m_motorImpulse); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; m_localCenterA.SetV(_local2.GetLocalCenter()); m_localCenterB.SetV(_local3.GetLocalCenter()); var _local6:b2Transform = _local2.GetTransform(); var _local7:b2Transform = _local3.GetTransform(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - m_localCenterA.x); var _local9:Number = (m_localAnchor1.y - m_localCenterA.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - m_localCenterB.x); var _local11:Number = (m_localAnchor2.y - m_localCenterB.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMassA = _local2.m_invMass; m_invMassB = _local3.m_invMass; m_invIA = _local2.m_invI; m_invIB = _local3.m_invI; m_axis.SetV(b2Math.MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMassA + m_invMassB) + ((m_invIA * m_a1) * m_a1)) + ((m_invIB * m_a2) * m_a2)); if (m_motorMass > Number.MIN_VALUE){ m_motorMass = (1 / m_motorMass); }; m_perp.SetV(b2Math.MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMassA; var _local15:Number = m_invMassB; var _local16:Number = m_invIA; var _local17:Number = m_invIB; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = ((_local16 * m_s1) + (_local17 * m_s2)); m_K.col1.z = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local16 + _local17); m_K.col2.z = ((_local16 * m_a1) + (_local17 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.z = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.z = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y)); _local21 = (((m_impulse.x * m_s1) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a1)); _local22 = (((m_impulse.x * m_s2) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMassA * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMassA * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invIA * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMassB * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMassB * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invIB * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Vec3; var _local20:b2Vec3; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local14 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local15 = (m_motorMass * (m_motorSpeed - _local14)); _local16 = m_motorImpulse; _local17 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local15), -(_local17), _local17); _local15 = (m_motorImpulse - _local16); _local8 = (_local15 * m_axis.x); _local9 = (_local15 * m_axis.y); _local10 = (_local15 * m_a1); _local11 = (_local15 * m_a2); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); var _local13:Number = (_local7 - _local5); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local19 = m_impulse.Copy(); _local20 = m_K.Solve33(new b2Vec3(), -(_local12), -(_local13), -(_local18)); m_impulse.Add(_local20); if (m_limitState == e_atLowerLimit){ m_impulse.z = b2Math.Max(m_impulse.z, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.z = b2Math.Min(m_impulse.z, 0); }; }; _local21 = (-(_local12) - ((m_impulse.z - _local19.z) * m_K.col3.x)); _local22 = (-(_local13) - ((m_impulse.z - _local19.z) * m_K.col3.y)); _local23 = m_K.Solve22(new b2Vec2(), _local21, _local22); m_K.Solve22(new b2Vec2(), _local21, _local22).x = (_local23.x + _local19.x); _local23.y = (_local23.y + _local19.y); m_impulse.x = _local23.x; m_impulse.y = _local23.y; _local20.x = (m_impulse.x - _local19.x); _local20.y = (m_impulse.y - _local19.y); _local20.z = (m_impulse.z - _local19.z); _local8 = ((_local20.x * m_perp.x) + (_local20.z * m_axis.x)); _local9 = ((_local20.x * m_perp.y) + (_local20.z * m_axis.y)); _local10 = (((_local20.x * m_s1) + _local20.y) + (_local20.z * m_a1)); _local11 = (((_local20.x * m_s2) + _local20.y) + (_local20.z * m_a2)); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); } else { _local24 = m_K.Solve22(new b2Vec2(), -(_local12), -(_local13)); m_impulse.x = (m_impulse.x + _local24.x); m_impulse.y = (m_impulse.y + _local24.y); _local8 = (_local24.x * m_perp.x); _local9 = (_local24.x * m_perp.y); _local10 = ((_local24.x * m_s1) + _local24.y); _local11 = ((_local24.x * m_s2) + _local24.y); _local4.x = (_local4.x - (m_invMassA * _local8)); _local4.y = (_local4.y - (m_invMassA * _local9)); _local5 = (_local5 - (m_invIA * _local10)); _local6.x = (_local6.x + (m_invMassB * _local8)); _local6.y = (_local6.y + (m_invMassB * _local9)); _local7 = (_local7 + (m_invIB * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:b2Vec2; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = b2Mat22.FromAngle(_local7); var _local21:b2Mat22 = b2Mat22.FromAngle(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenterA.x); var _local23:Number = (m_localAnchor1.y - m_localCenterA.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenterB.x); var _local25:Number = (m_localAnchor2.y - m_localCenterB.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local35 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.Clamp(_local35, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.Abs(_local35); _local18 = true; } else { if (_local35 <= m_lowerTranslation){ _local19 = b2Math.Clamp(((_local35 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local35); _local18 = true; } else { if (_local35 >= m_upperTranslation){ _local19 = b2Math.Clamp(((_local35 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local35 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec3 = new b2Vec3(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); var _local30:Number = ((_local9 - _local7) - m_refAngle); _local16 = b2Math.Max(_local16, b2Math.Abs(_local29)); _local17 = b2Math.Abs(_local30); if (_local18){ _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = ((_local14 * m_s1) + (_local15 * m_s2)); m_K.col1.z = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local14 + _local15); m_K.col2.z = ((_local14 * m_a1) + (_local15 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve33(_local28, -(_local29), -(_local30), -(_local19)); } else { _local12 = m_invMassA; _local13 = m_invMassB; _local14 = m_invIA; _local15 = m_invIB; _local36 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); _local37 = ((_local14 * m_s1) + (_local15 * m_s2)); _local38 = (_local14 + _local15); m_K.col1.Set(_local36, _local37, 0); m_K.col2.Set(_local37, _local38, 0); _local39 = m_K.Solve22(new b2Vec2(), -(_local29), -(_local30)); _local28.x = _local39.x; _local28.y = _local39.y; _local28.z = 0; }; var _local31:Number = ((_local28.x * m_perp.x) + (_local28.z * m_axis.x)); var _local32:Number = ((_local28.x * m_perp.y) + (_local28.z * m_axis.y)); var _local33:Number = (((_local28.x * m_s1) + _local28.y) + (_local28.z * m_a1)); var _local34:Number = (((_local28.x * m_s2) + _local28.y) + (_local28.z * m_a2)); _local6.x = (_local6.x - (m_invMassA * _local31)); _local6.y = (_local6.y - (m_invMassA * _local32)); _local7 = (_local7 - (m_invIA * _local33)); _local8.x = (_local8.x + (m_invMassB * _local31)); _local8.y = (_local8.y + (m_invMassB * _local32)); _local9 = (_local9 + (m_invIB * _local34)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } } }//package Box2D.Dynamics.Joints
Section 75
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var localAxisA:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerTranslation:Number; public var upperTranslation:Number; public var enableMotor:Boolean; public var maxMotorForce:Number; public var motorSpeed:Number; public function b2PrismaticJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); localAxisA = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxisA.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{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); localAxisA = bodyA.GetLocalVector(_arg4); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 76
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { private var m_ground:b2Body; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_u1:b2Vec2; private var m_u2:b2Vec2; private var m_constant:Number; private var m_ratio:Number; private var m_maxLength1:Number; private var m_maxLength2:Number; private var m_pulleyMass:Number; private var m_limitMass1:Number; private var m_limitMass2:Number; private var m_impulse:Number; private var m_limitImpulse1:Number; private var m_limitImpulse2:Number; private var m_state:int; private var m_limitState1:int; private var m_limitState2:int; b2internal 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_bodyA.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchorA.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchorA.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchorB.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchorB.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_ratio = _arg1.ratio; m_constant = (_arg1.lengthA + (m_ratio * _arg1.lengthB)); m_maxLength1 = b2Math.Min(_arg1.maxLengthA, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.Min(_arg1.maxLengthB, ((m_constant - b2_minPulleyLength) / m_ratio)); m_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u2.x), ((_arg1 * m_impulse) * m_u2.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetGroundAnchorA():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } public function GetGroundAnchorB():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } public function GetLength1():Number{ var _local1:b2Vec2 = m_bodyA.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_bodyB.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetRatio():Number{ return (m_ratio); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local6:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_bodyA; _local3 = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (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; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = 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(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_impulse = 0; } else { m_state = e_atUpperLimit; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitImpulse1 = 0; } else { m_limitState1 = e_atUpperLimit; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitImpulse2 = 0; } else { m_limitState2 = e_atUpperLimit; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_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){ m_impulse = (m_impulse * _arg1.dtRatio); m_limitImpulse1 = (m_limitImpulse1 * _arg1.dtRatio); m_limitImpulse2 = (m_limitImpulse2 * _arg1.dtRatio); _local23 = ((-(m_impulse) - m_limitImpulse1) * m_u1.x); _local24 = ((-(m_impulse) - m_limitImpulse1) * m_u1.y); _local25 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.x); _local26 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * 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_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4: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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (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 = (m_pulleyMass * -(_local18)); _local20 = m_impulse; m_impulse = b2Math.Max(0, (m_impulse + _local19)); _local19 = (m_impulse - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local16 = ((-(m_ratio) * _local19) * m_u2.x); _local17 = ((-(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 = (-(m_limitMass1) * _local18); _local20 = m_limitImpulse1; m_limitImpulse1 = b2Math.Max(0, (m_limitImpulse1 + _local19)); _local19 = (m_limitImpulse1 - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_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 = (-(m_limitMass2) * _local18); _local20 = m_limitImpulse2; m_limitImpulse2 = b2Math.Max(0, (m_limitImpulse2 + _local19)); _local19 = (m_limitImpulse2 - _local20); _local16 = (-(_local19) * m_u2.x); _local17 = (-(_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)))); }; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2Mat22; 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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local5:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local6:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local7:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local8:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local24:Number = 0; if (m_state == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u1.Set((_local13 - _local5), (_local14 - _local6)); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local17 = m_u1.Length(); _local18 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local17)); } else { m_u1.SetZero(); }; if (_local18 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local18)); } else { m_u2.SetZero(); }; _local19 = ((m_constant - _local17) - (m_ratio * _local18)); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_pulleyMass) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local15 = ((-(m_ratio) * _local20) * m_u2.x); _local16 = ((-(m_ratio) * _local20) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); m_u1.Set((_local13 - _local5), (_local14 - _local6)); _local17 = m_u1.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local17)); m_u1.y = (m_u1.y * (1 / _local17)); } else { m_u1.SetZero(); }; _local19 = (m_maxLength1 - _local17); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass1) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local2.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local18 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local18)); m_u2.y = (m_u2.y * (1 / _local18)); } else { m_u2.SetZero(); }; _local19 = (m_maxLength2 - _local18); _local24 = b2Math.Max(_local24, -(_local19)); _local19 = b2Math.Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass2) * _local19); _local15 = (-(_local20) * m_u2.x); _local16 = (-(_local20) * m_u2.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local3.SynchronizeTransform(); }; return ((_local24 < b2Settings.b2_linearSlop)); } } }//package Box2D.Dynamics.Joints
Section 77
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var groundAnchorA:b2Vec2; public var groundAnchorB:b2Vec2; public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var lengthA:Number; public var maxLengthA:Number; public var lengthB:Number; public var maxLengthB:Number; public var ratio:Number; public function b2PulleyJointDef(){ groundAnchorA = new b2Vec2(); groundAnchorB = new b2Vec2(); localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchorA.Set(-1, 1); groundAnchorB.Set(1, 1); localAnchorA.Set(-1, 0); localAnchorB.Set(1, 0); lengthA = 0; maxLengthA = 0; lengthB = 0; maxLengthB = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ bodyA = _arg1; bodyB = _arg2; groundAnchorA.SetV(_arg3); groundAnchorB.SetV(_arg4); localAnchorA = bodyA.GetLocalPoint(_arg5); localAnchorB = bodyB.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); lengthA = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); lengthB = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (lengthA + (ratio * lengthB)); maxLengthA = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLengthB = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 78
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { private var K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var impulse3:b2Vec3; private var impulse2:b2Vec2; private var reduced:b2Vec2; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_impulse:b2Vec3; private var m_motorImpulse:Number; private var m_mass:b2Mat33; private var m_motorMass:Number; private var m_enableMotor:Boolean; private var m_maxMotorTorque:Number; private var m_motorSpeed:Number; private var m_enableLimit:Boolean; private var m_referenceAngle:Number; private var m_lowerAngle:Number; private var m_upperAngle:Number; private var m_limitState:int; private static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); impulse3 = new b2Vec3(); impulse2 = new b2Vec2(); reduced = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchorA); m_localAnchor2.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorImpulse = 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; m_limitState = e_inactiveLimit; } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchor1)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } public function GetJointAngle():Number{ return (((m_bodyB.m_sweep.a - m_bodyA.m_sweep.a) - m_referenceAngle)); } public function GetJointSpeed():Number{ return ((m_bodyB.m_angularVelocity - m_bodyA.m_angularVelocity)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function IsMotorEnabled():Boolean{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_bodyA.SetAwake(true); m_bodyB.SetAwake(true); m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetMotorTorque():Number{ return (m_maxMotorTorque); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_bodyA; _local3 = m_bodyB; if (((m_enableMotor) || (m_enableLimit))){ }; _local4 = _local2.m_xf.R; var _local6:Number = (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; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (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; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorImpulse = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_impulse.z = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_impulse.z = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local15 = m_impulse.x; _local16 = m_impulse.y; _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local10 * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local10 * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local12 * ((((_local6 * _local16) - (_local7 * _local15)) + m_motorImpulse) + m_impulse.z))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * ((((_local8 * _local16) - (_local9 * _local15)) + m_motorImpulse) + m_impulse.z))); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10: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 _local2:b2Body = m_bodyA; var _local3:b2Body = m_bodyB; var _local11:b2Vec2 = _local2.m_linearVelocity; var _local12:Number = _local2.m_angularVelocity; var _local13:b2Vec2 = _local3.m_linearVelocity; var _local14:Number = _local3.m_angularVelocity; var _local15:Number = _local2.m_invMass; var _local16:Number = _local3.m_invMass; var _local17:Number = _local2.m_invI; var _local18:Number = _local3.m_invI; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local19 = ((_local14 - _local12) - m_motorSpeed); _local20 = (m_motorMass * -(_local19)); _local21 = m_motorImpulse; _local22 = (_arg1.dt * m_maxMotorTorque); m_motorImpulse = b2Math.Clamp((m_motorImpulse + _local20), -(_local22), _local22); _local20 = (m_motorImpulse - _local21); _local12 = (_local12 - (_local17 * _local20)); _local14 = (_local14 + (_local18 * _local20)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local23 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local24 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); _local25 = (_local14 - _local12); m_mass.Solve33(impulse3, -(_local23), -(_local24), -(_local25)); if (m_limitState == e_equalLimits){ m_impulse.Add(impulse3); } else { if (m_limitState == e_atLowerLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 < 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; } else { if (m_limitState == e_atUpperLimit){ _local6 = (m_impulse.z + impulse3.z); if (_local6 > 0){ m_mass.Solve22(reduced, -(_local23), -(_local24)); impulse3.x = reduced.x; impulse3.y = reduced.y; impulse3.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + reduced.x); m_impulse.y = (m_impulse.y + reduced.y); m_impulse.z = 0; }; }; }; }; _local11.x = (_local11.x - (_local15 * impulse3.x)); _local11.y = (_local11.y - (_local15 * impulse3.y)); _local12 = (_local12 - (_local17 * (((_local7 * impulse3.y) - (_local8 * impulse3.x)) + impulse3.z))); _local13.x = (_local13.x + (_local16 * impulse3.x)); _local13.y = (_local13.y + (_local16 * impulse3.y)); _local14 = (_local14 + (_local18 * (((_local9 * impulse3.y) - (_local10 * impulse3.x)) + impulse3.z))); } else { _local4 = _local2.m_xf.R; _local7 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local7) + (_local4.col2.x * _local8)); _local8 = ((_local4.col1.y * _local7) + (_local4.col2.y * _local8)); _local7 = _local5; _local4 = _local3.m_xf.R; _local9 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local10 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local5; _local26 = (((_local13.x + (-(_local14) * _local10)) - _local11.x) - (-(_local12) * _local8)); _local27 = (((_local13.y + (_local14 * _local9)) - _local11.y) - (_local12 * _local7)); m_mass.Solve22(impulse2, -(_local26), -(_local27)); m_impulse.x = (m_impulse.x + impulse2.x); m_impulse.y = (m_impulse.y + impulse2.y); _local11.x = (_local11.x - (_local15 * impulse2.x)); _local11.y = (_local11.y - (_local15 * impulse2.y)); _local12 = (_local12 - (_local17 * ((_local7 * impulse2.y) - (_local8 * impulse2.x)))); _local13.x = (_local13.x + (_local16 * impulse2.x)); _local13.y = (_local13.y + (_local16 * impulse2.y)); _local14 = (_local14 + (_local18 * ((_local9 * impulse2.y) - (_local10 * impulse2.x)))); }; _local2.m_linearVelocity.SetV(_local11); _local2.m_angularVelocity = _local12; _local3.m_linearVelocity.SetV(_local13); _local3.m_angularVelocity = _local14; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local5:b2Body = m_bodyA; var _local6:b2Body = m_bodyB; var _local7:Number = 0; var _local8:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local6.m_sweep.a - _local5.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local3 = b2Math.Clamp((_local25 - m_lowerAngle), -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); _local7 = b2Math.Abs(_local3); } else { if (m_limitState == e_atLowerLimit){ _local3 = (_local25 - m_lowerAngle); _local7 = -(_local3); _local3 = b2Math.Clamp((_local3 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local3); } else { if (m_limitState == e_atUpperLimit){ _local3 = (_local25 - m_upperAngle); _local7 = _local3; _local3 = b2Math.Clamp((_local3 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); }; }; }; _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * _local26)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * _local26)); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); }; _local4 = _local5.m_xf.R; var _local12:Number = (m_localAnchor1.x - _local5.m_sweep.localCenter.x); var _local13:Number = (m_localAnchor1.y - _local5.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local12) + (_local4.col2.x * _local13)); _local13 = ((_local4.col1.y * _local12) + (_local4.col2.y * _local13)); _local12 = _local9; _local4 = _local6.m_xf.R; var _local14:Number = (m_localAnchor2.x - _local6.m_sweep.localCenter.x); var _local15:Number = (m_localAnchor2.y - _local6.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local14) + (_local4.col2.x * _local15)); _local15 = ((_local4.col1.y * _local14) + (_local4.col2.y * _local15)); _local14 = _local9; var _local16:Number = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); var _local17:Number = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); var _local18:Number = ((_local16 * _local16) + (_local17 * _local17)); var _local19:Number = Math.sqrt(_local18); _local8 = _local19; var _local20:Number = _local5.m_invMass; var _local21:Number = _local6.m_invMass; var _local22:Number = _local5.m_invI; var _local23:Number = _local6.m_invI; var _local24:Number = (10 * b2Settings.b2_linearSlop); if (_local18 > (_local24 * _local24)){ _local27 = (_local16 / _local19); _local28 = (_local17 / _local19); _local29 = (_local20 + _local21); _local30 = (1 / _local29); _local10 = (_local30 * -(_local16)); _local11 = (_local30 * -(_local17)); _local31 = 0.5; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - ((_local31 * _local20) * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - ((_local31 * _local20) * _local11)); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + ((_local31 * _local21) * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + ((_local31 * _local21) * _local11)); _local16 = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); _local17 = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); }; K1.col1.x = (_local20 + _local21); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local20 + _local21); K2.col1.x = ((_local22 * _local13) * _local13); K2.col2.x = ((-(_local22) * _local12) * _local13); K2.col1.y = ((-(_local22) * _local12) * _local13); K2.col2.y = ((_local22 * _local12) * _local12); K3.col1.x = ((_local23 * _local15) * _local15); K3.col2.x = ((-(_local23) * _local14) * _local15); K3.col1.y = ((-(_local23) * _local14) * _local15); K3.col2.y = ((_local23 * _local14) * _local14); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local10 = tImpulse.x; _local11 = tImpulse.y; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local5.m_invMass * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local5.m_invMass * _local11)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * ((_local12 * _local11) - (_local13 * _local10)))); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local6.m_invMass * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local6.m_invMass * _local11)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * ((_local14 * _local11) - (_local15 * _local10)))); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); return ((((_local8 <= b2Settings.b2_linearSlop)) && ((_local7 <= b2Settings.b2_angularSlop)))); } } }//package Box2D.Dynamics.Joints
Section 79
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerAngle:Number; public var upperAngle:Number; public var enableMotor:Boolean; public var motorSpeed:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchorA.Set(0, 0); localAnchorB.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{ bodyA = _arg1; bodyB = _arg2; localAnchorA = bodyA.GetLocalPoint(_arg3); localAnchorB = bodyB.GetLocalPoint(_arg3); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 80
//b2WeldJoint (Box2D.Dynamics.Joints.b2WeldJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2WeldJoint extends b2Joint { private var m_localAnchorA:b2Vec2; private var m_localAnchorB:b2Vec2; private var m_referenceAngle:Number; private var m_impulse:b2Vec3; private var m_mass:b2Mat33; public function b2WeldJoint(_arg1:b2WeldJointDef){ m_localAnchorA = new b2Vec2(); m_localAnchorB = new b2Vec2(); m_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchorA.SetV(_arg1.localAnchorA); m_localAnchorB.SetV(_arg1.localAnchorB); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_mass = new b2Mat33(); } override public function GetAnchorA():b2Vec2{ return (m_bodyA.GetWorldPoint(m_localAnchorA)); } override public function GetAnchorB():b2Vec2{ return (m_bodyB.GetWorldPoint(m_localAnchorB)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } override b2internal 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; _local4 = m_bodyA; _local5 = m_bodyB; _local2 = _local4.m_xf.R; _local6 = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchorA.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_localAnchorB.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchorB.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; _local10 = _local4.m_invMass; _local11 = _local5.m_invMass; _local12 = _local4.m_invI; _local13 = _local5.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_impulse.z = (m_impulse.z * _arg1.dtRatio); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local10 * m_impulse.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local10 * m_impulse.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local12 * (((_local6 * m_impulse.y) - (_local7 * m_impulse.x)) + m_impulse.z))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local11 * m_impulse.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local11 * m_impulse.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local13 * (((_local8 * m_impulse.y) - (_local9 * m_impulse.x)) + m_impulse.z))); } else { m_impulse.SetZero(); }; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; var _local6:b2Vec2 = _local4.m_linearVelocity; var _local7:Number = _local4.m_angularVelocity; var _local8:b2Vec2 = _local5.m_linearVelocity; var _local9:Number = _local5.m_angularVelocity; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; _local2 = _local4.m_xf.R; var _local14:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local15:Number = (m_localAnchorA.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local14) + (_local2.col2.x * _local15)); _local15 = ((_local2.col1.y * _local14) + (_local2.col2.y * _local15)); _local14 = _local3; _local2 = _local5.m_xf.R; var _local16:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local17:Number = (m_localAnchorB.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local16) + (_local2.col2.x * _local17)); _local17 = ((_local2.col1.y * _local16) + (_local2.col2.y * _local17)); _local16 = _local3; var _local18:Number = (((_local8.x - (_local9 * _local17)) - _local6.x) + (_local7 * _local15)); var _local19:Number = (((_local8.y + (_local9 * _local16)) - _local6.y) - (_local7 * _local14)); var _local20:Number = (_local9 - _local7); var _local21:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local21, -(_local18), -(_local19), -(_local20)); m_impulse.Add(_local21); _local6.x = (_local6.x - (_local10 * _local21.x)); _local6.y = (_local6.y - (_local10 * _local21.y)); _local7 = (_local7 - (_local12 * (((_local14 * _local21.y) - (_local15 * _local21.x)) + _local21.z))); _local8.x = (_local8.x + (_local11 * _local21.x)); _local8.y = (_local8.y + (_local11 * _local21.y)); _local9 = (_local9 + (_local13 * (((_local16 * _local21.y) - (_local17 * _local21.x)) + _local21.z))); _local4.m_angularVelocity = _local7; _local5.m_angularVelocity = _local9; } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body = m_bodyA; var _local5:b2Body = m_bodyB; _local2 = _local4.m_xf.R; var _local6:Number = (m_localAnchorA.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchorA.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; var _local8:Number = (m_localAnchorB.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchorB.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; var _local10:Number = _local4.m_invMass; var _local11:Number = _local5.m_invMass; var _local12:Number = _local4.m_invI; var _local13:Number = _local5.m_invI; var _local14:Number = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); var _local15:Number = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local16:Number = ((_local5.m_sweep.a - _local4.m_sweep.a) - m_referenceAngle); var _local17:Number = (10 * b2Settings.b2_linearSlop); var _local18:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); var _local19:Number = b2Math.Abs(_local16); if (_local18 > _local17){ _local12 = (_local12 * 1); _local13 = (_local13 * 1); }; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); var _local20:b2Vec3 = new b2Vec3(); m_mass.Solve33(_local20, -(_local14), -(_local15), -(_local16)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x - (_local10 * _local20.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y - (_local10 * _local20.y)); _local4.m_sweep.a = (_local4.m_sweep.a - (_local12 * (((_local6 * _local20.y) - (_local7 * _local20.x)) + _local20.z))); _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_local11 * _local20.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_local11 * _local20.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_local13 * (((_local8 * _local20.y) - (_local9 * _local20.x)) + _local20.z))); _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local18 <= b2Settings.b2_linearSlop)) && ((_local19 <= b2Settings.b2_angularSlop)))); } } }//package Box2D.Dynamics.Joints
Section 81
//b2WeldJointDef (Box2D.Dynamics.Joints.b2WeldJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2WeldJointDef extends b2JointDef { public var localAnchorA:b2Vec2; public var localAnchorB:b2Vec2; public var referenceAngle:Number; public function b2WeldJointDef(){ localAnchorA = new b2Vec2(); localAnchorB = new b2Vec2(); super(); type = b2Joint.e_weldJoint; referenceAngle = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ bodyA = _arg1; bodyB = _arg2; localAnchorA.SetV(bodyA.GetLocalPoint(_arg3)); localAnchorB.SetV(bodyB.GetLocalPoint(_arg3)); referenceAngle = (bodyB.GetAngle() - bodyA.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 82
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Body { b2internal var m_flags:uint; b2internal var m_type:int; b2internal var m_islandIndex:int; b2internal var m_xf:b2Transform; b2internal var m_sweep:b2Sweep; b2internal var m_linearVelocity:b2Vec2; b2internal var m_angularVelocity:Number; b2internal var m_force:b2Vec2; b2internal var m_torque:Number; b2internal var m_world:b2World; b2internal var m_prev:b2Body; b2internal var m_next:b2Body; b2internal var m_fixtureList:b2Fixture; b2internal var m_fixtureCount:int; b2internal var m_controllerList:b2ControllerEdge; b2internal var m_controllerCount:int; b2internal var m_jointList:b2JointEdge; b2internal var m_contactList:b2ContactEdge; b2internal var m_mass:Number; b2internal var m_invMass:Number; b2internal var m_I:Number; b2internal var m_invI:Number; b2internal var m_inertiaScale:Number; b2internal var m_linearDamping:Number; b2internal var m_angularDamping:Number; b2internal var m_sleepTime:Number; private var m_userData; private static var s_xf1:b2Transform = new b2Transform(); b2internal static var e_islandFlag:uint = 1; b2internal static var e_awakeFlag:uint = 2; b2internal static var e_allowSleepFlag:uint = 4; b2internal static var e_bulletFlag:uint = 8; b2internal static var e_fixedRotationFlag:uint = 16; b2internal static var e_activeFlag:uint = 32; public static var b2_staticBody:uint = 0; public static var b2_kinematicBody:uint = 1; public static var b2_dynamicBody:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2Transform(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.bullet){ 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.awake){ m_flags = (m_flags | e_awakeFlag); }; if (_arg1.active){ m_flags = (m_flags | e_activeFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetZero(); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = 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_controllerList = null; m_contactList = null; m_controllerCount = 0; m_prev = null; m_next = null; m_linearVelocity.SetV(_arg1.linearVelocity); m_angularVelocity = _arg1.angularVelocity; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_sleepTime = 0; m_type = _arg1.type; if (m_type == b2_dynamicBody){ m_mass = 1; m_invMass = 1; } else { m_mass = 0; m_invMass = 0; }; m_I = 0; m_invI = 0; m_inertiaScale = _arg1.inertiaScale; m_userData = _arg1.userData; m_fixtureList = null; m_fixtureCount = 0; } private function connectEdges(_arg1:b2EdgeShape, _arg2:b2EdgeShape, _arg3:Number):Number{ var _local4:Number = Math.atan2(_arg2.GetDirectionVector().y, _arg2.GetDirectionVector().x); var _local5:Number = Math.tan(((_local4 - _arg3) * 0.5)); var _local6:b2Vec2 = b2Math.MulFV(_local5, _arg2.GetDirectionVector()); _local6 = b2Math.SubtractVV(_local6, _arg2.GetNormalVector()); _local6 = b2Math.MulFV(b2Settings.b2_toiSlop, _local6); _local6 = b2Math.AddVV(_local6, _arg2.GetVertex1()); var _local7:b2Vec2 = b2Math.AddVV(_arg1.GetDirectionVector(), _arg2.GetDirectionVector()); _local7.Normalize(); var _local8 = (b2Math.Dot(_arg1.GetDirectionVector(), _arg2.GetNormalVector()) > 0); _arg1.SetNextEdge(_arg2, _local6, _local7, _local8); _arg2.SetPrevEdge(_arg1, _local6, _local7, _local8); return (_local4); } public function CreateFixture(_arg1:b2FixtureDef):b2Fixture{ var _local3:IBroadPhase; if (m_world.IsLocked() == true){ return (null); }; var _local2:b2Fixture = new b2Fixture(); _local2.Create(this, m_xf, _arg1); if ((m_flags & e_activeFlag)){ _local3 = m_world.m_contactManager.m_broadPhase; _local2.CreateProxy(_local3, m_xf); }; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = this; if (_local2.m_density > 0){ ResetMassData(); }; m_world.m_flags = (m_world.m_flags | b2World.e_newFixture); return (_local2); } public function CreateFixture2(_arg1:b2Shape, _arg2:Number=0):b2Fixture{ var _local3:b2FixtureDef = new b2FixtureDef(); _local3.shape = _arg1; _local3.density = _arg2; return (CreateFixture(_local3)); } public function DestroyFixture(_arg1:b2Fixture):void{ var _local6:b2Contact; var _local7:b2Fixture; var _local8:b2Fixture; var _local9:IBroadPhase; if (m_world.IsLocked() == true){ return; }; var _local2:b2Fixture = m_fixtureList; var _local3:b2Fixture; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_fixtureList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; var _local5:b2ContactEdge = m_contactList; while (_local5) { _local6 = _local5.contact; _local5 = _local5.next; _local7 = _local6.GetFixtureA(); _local8 = _local6.GetFixtureB(); if ((((_arg1 == _local7)) || ((_arg1 == _local8)))){ m_world.m_contactManager.Destroy(_local6); }; }; if ((m_flags & e_activeFlag)){ _local9 = m_world.m_contactManager.m_broadPhase; _arg1.DestroyProxy(_local9); }; _arg1.Destroy(); _arg1.m_body = null; _arg1.m_next = null; m_fixtureCount--; ResetMassData(); } public function SetPositionAndAngle(_arg1:b2Vec2, _arg2:Number):void{ var _local3:b2Fixture; if (m_world.IsLocked() == true){ return; }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = 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); var _local6:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.Synchronize(_local6, m_xf, m_xf); _local3 = _local3.m_next; }; m_world.m_contactManager.FindNewContacts(); } public function SetTransform(_arg1:b2Transform):void{ SetPositionAndAngle(_arg1.position, _arg1.GetAngle()); } public function GetTransform():b2Transform{ return (m_xf); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function SetPosition(_arg1:b2Vec2):void{ SetPositionAndAngle(_arg1, GetAngle()); } public function GetAngle():Number{ return (m_sweep.a); } public function SetAngle(_arg1:Number):void{ SetPositionAndAngle(GetPosition(), _arg1); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetLinearVelocity(_arg1:b2Vec2):void{ if (m_type == b2_staticBody){ return; }; m_linearVelocity.SetV(_arg1); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SetAngularVelocity(_arg1:Number):void{ if (m_type == b2_staticBody){ return; }; m_angularVelocity = _arg1; } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function GetDefinition():b2BodyDef{ var _local1:b2BodyDef = new b2BodyDef(); _local1.type = GetType(); _local1.allowSleep = ((m_flags & e_allowSleepFlag) == e_allowSleepFlag); _local1.angle = GetAngle(); _local1.angularDamping = m_angularDamping; _local1.angularVelocity = m_angularVelocity; _local1.fixedRotation = ((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag); _local1.bullet = ((m_flags & e_bulletFlag) == e_bulletFlag); _local1.awake = ((m_flags & e_awakeFlag) == e_awakeFlag); _local1.linearDamping = m_linearDamping; _local1.linearVelocity.SetV(GetLinearVelocity()); _local1.position = GetPosition(); _local1.userData = GetUserData(); return (_local1); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; 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 ApplyTorque(_arg1:Number):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; m_torque = (m_torque + _arg1); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (m_type != b2_dynamicBody){ return; }; if (IsAwake() == false){ SetAwake(true); }; 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 Split(_arg1:Function):b2Body{ var _local7:b2Fixture; var _local13:b2Fixture; var _local2:b2Vec2 = GetLinearVelocity().Copy(); var _local3:Number = GetAngularVelocity(); var _local4:b2Vec2 = GetWorldCenter(); var _local5:b2Body = this; var _local6:b2Body = m_world.CreateBody(GetDefinition()); var _local8:b2Fixture = _local5.m_fixtureList; while (_local8) { if (_arg1(_local8)){ _local13 = _local8.m_next; if (_local7){ _local7.m_next = _local13; } else { _local5.m_fixtureList = _local13; }; _local5.m_fixtureCount--; _local8.m_next = _local6.m_fixtureList; _local6.m_fixtureList = _local8; _local6.m_fixtureCount++; _local8.m_body = _local6; _local8 = _local13; } else { _local7 = _local8; _local8 = _local8.m_next; }; }; _local5.ResetMassData(); _local6.ResetMassData(); var _local9:b2Vec2 = _local5.GetWorldCenter(); var _local10:b2Vec2 = _local6.GetWorldCenter(); var _local11:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local9, _local4))); var _local12:b2Vec2 = b2Math.AddVV(_local2, b2Math.CrossFV(_local3, b2Math.SubtractVV(_local10, _local4))); _local5.SetLinearVelocity(_local11); _local6.SetLinearVelocity(_local12); _local5.SetAngularVelocity(_local3); _local6.SetAngularVelocity(_local3); _local5.SynchronizeFixtures(); _local6.SynchronizeFixtures(); return (_local6); } public function Merge(_arg1:b2Body):void{ var _local2:b2Fixture; var _local3:b2Body; var _local4:b2Body; var _local11:b2Fixture; _local2 = _arg1.m_fixtureList; while (_local2) { _local11 = _local2.m_next; _arg1.m_fixtureCount--; _local2.m_next = m_fixtureList; m_fixtureList = _local2; m_fixtureCount++; _local2.m_body = _local4; _local2 = _local11; }; _local3.m_fixtureCount = 0; _local3 = this; _local4 = _arg1; var _local5:b2Vec2 = _local3.GetWorldCenter(); var _local6:b2Vec2 = _local4.GetWorldCenter(); var _local7:b2Vec2 = _local3.GetLinearVelocity().Copy(); var _local8:b2Vec2 = _local4.GetLinearVelocity().Copy(); var _local9:Number = _local3.GetAngularVelocity(); var _local10:Number = _local4.GetAngularVelocity(); _local3.ResetMassData(); SynchronizeFixtures(); } public function GetMass():Number{ return (m_mass); } public function GetInertia():Number{ return (m_I); } public function GetMassData(_arg1:b2MassData):void{ _arg1.mass = m_mass; _arg1.I = m_I; _arg1.center.SetV(m_sweep.localCenter); } public function SetMassData(_arg1:b2MassData):void{ b2Settings.b2Assert((m_world.IsLocked() == false)); if (m_world.IsLocked() == true){ return; }; if (m_type != b2_dynamicBody){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass <= 0){ m_mass = 1; }; m_invMass = (1 / m_mass); if ((((_arg1.I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (_arg1.I - (m_mass * ((_arg1.center.x * _arg1.center.x) + (_arg1.center.y * _arg1.center.y)))); m_invI = (1 / m_I); }; var _local2:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_arg1.center); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local2.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local2.x))); } public function ResetMassData():void{ var _local4:b2MassData; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_sweep.localCenter.SetZero(); if ((((m_type == b2_staticBody)) || ((m_type == b2_kinematicBody)))){ return; }; var _local1:b2Vec2 = b2Vec2.Make(0, 0); var _local2:b2Fixture = m_fixtureList; while (_local2) { if (_local2.m_density == 0){ } else { _local4 = _local2.GetMassData(); m_mass = (m_mass + _local4.mass); _local1.x = (_local1.x + (_local4.center.x * _local4.mass)); _local1.y = (_local1.y + (_local4.center.y * _local4.mass)); m_I = (m_I + _local4.I); }; _local2 = _local2.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local1.x = (_local1.x * m_invMass); _local1.y = (_local1.y * m_invMass); } else { m_mass = 1; m_invMass = 1; }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local1.x * _local1.x) + (_local1.y * _local1.y)))); m_I = (m_I * m_inertiaScale); b2Settings.b2Assert((m_I > 0)); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; var _local3:b2Vec2 = m_sweep.c.Copy(); m_sweep.localCenter.SetV(_local1); m_sweep.c0.SetV(b2Math.MulX(m_xf, m_sweep.localCenter)); m_sweep.c.SetV(m_sweep.c0); m_linearVelocity.x = (m_linearVelocity.x + (m_angularVelocity * -((m_sweep.c.y - _local3.y)))); m_linearVelocity.y = (m_linearVelocity.y + (m_angularVelocity * (m_sweep.c.x - _local3.x))); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = 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 GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulMV(m_xf.R, _arg1)); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulXT(m_xf, _arg1)); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.MulTMV(m_xf.R, _arg1)); } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = 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.y + (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetLinearDamping():Number{ return (m_linearDamping); } public function SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } public function GetAngularDamping():Number{ return (m_angularDamping); } public function SetAngularDamping(_arg1:Number):void{ m_angularDamping = _arg1; } public function SetType(_arg1:uint):void{ if (m_type == _arg1){ return; }; m_type = _arg1; ResetMassData(); if (m_type == b2_staticBody){ m_linearVelocity.SetZero(); m_angularVelocity = 0; }; SetAwake(true); m_force.SetZero(); m_torque = 0; var _local2:b2ContactEdge = m_contactList; while (_local2) { _local2.contact.FlagForFiltering(); _local2 = _local2.next; }; } public function GetType():uint{ return (m_type); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function SetSleepingAllowed(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); SetAwake(true); }; } public function SetAwake(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_awakeFlag); m_sleepTime = 0; } else { m_flags = (m_flags & ~(e_awakeFlag)); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; }; } public function IsAwake():Boolean{ return (((m_flags & e_awakeFlag) == e_awakeFlag)); } public function SetFixedRotation(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_fixedRotationFlag); } else { m_flags = (m_flags & ~(e_fixedRotationFlag)); }; ResetMassData(); } public function IsFixedRotation():Boolean{ return (((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag)); } public function SetActive(_arg1:Boolean):void{ var _local2:IBroadPhase; var _local3:b2Fixture; var _local4:b2ContactEdge; var _local5:b2ContactEdge; if (_arg1 == IsActive()){ return; }; if (_arg1){ m_flags = (m_flags | e_activeFlag); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.CreateProxy(_local2, m_xf); _local3 = _local3.m_next; }; } else { m_flags = (m_flags & ~(e_activeFlag)); _local2 = m_world.m_contactManager.m_broadPhase; _local3 = m_fixtureList; while (_local3) { _local3.DestroyProxy(_local2); _local3 = _local3.m_next; }; _local4 = m_contactList; while (_local4) { _local5 = _local4; _local4 = _local4.next; m_world.m_contactManager.Destroy(_local5.contact); }; m_contactList = null; }; } public function IsActive():Boolean{ return (((m_flags & e_activeFlag) == e_activeFlag)); } public function IsSleepingAllowed():Boolean{ return (((m_flags & e_allowSleepFlag) == e_allowSleepFlag)); } public function GetFixtureList():b2Fixture{ return (m_fixtureList); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetControllerList():b2ControllerEdge{ return (m_controllerList); } public function GetContactList():b2ContactEdge{ return (m_contactList); } public function GetNext():b2Body{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetWorld():b2World{ return (m_world); } b2internal function SynchronizeFixtures():void{ var _local4:b2Fixture; var _local1:b2Transform = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = 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))); var _local5:IBroadPhase = m_world.m_contactManager.m_broadPhase; _local4 = m_fixtureList; while (_local4) { _local4.Synchronize(_local5, _local1, m_xf); _local4 = _local4.m_next; }; } b2internal function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = 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))); } b2internal function ShouldCollide(_arg1:b2Body):Boolean{ if (((!((m_type == b2_dynamicBody))) && (!((_arg1.m_type == b2_dynamicBody))))){ return (false); }; var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ if (_local2.joint.m_collideConnected == false){ return (false); }; }; _local2 = _local2.next; }; return (true); } b2internal function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } } }//package Box2D.Dynamics
Section 83
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; public class b2BodyDef { public var type:uint; public var position:b2Vec2; public var angle:Number; public var linearVelocity:b2Vec2; public var angularVelocity:Number; public var linearDamping:Number; public var angularDamping:Number; public var allowSleep:Boolean; public var awake:Boolean; public var fixedRotation:Boolean; public var bullet:Boolean; public var active:Boolean; public var userData; public var inertiaScale:Number; public function b2BodyDef(){ position = new b2Vec2(); linearVelocity = new b2Vec2(); super(); userData = null; position.Set(0, 0); angle = 0; linearVelocity.Set(0, 0); angularVelocity = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; awake = true; fixedRotation = false; bullet = false; type = b2Body.b2_staticBody; active = true; inertiaScale = 1; } } }//package Box2D.Dynamics
Section 84
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactFilter { b2internal static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Fixture, _arg2:b2Fixture):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } public function RayCollide(_arg1, _arg2:b2Fixture):Boolean{ if (!_arg1){ return (true); }; return (ShouldCollide((_arg1 as b2Fixture), _arg2)); } } }//package Box2D.Dynamics
Section 85
//b2ContactImpulse (Box2D.Dynamics.b2ContactImpulse) package Box2D.Dynamics { import Box2D.Common.*; public class b2ContactImpulse { public var normalImpulses:Array; public var tangentImpulses:Array; public function b2ContactImpulse(){ normalImpulses = new Array(b2Settings.b2_maxManifoldPoints); tangentImpulses = new Array(b2Settings.b2_maxManifoldPoints); super(); } } }//package Box2D.Dynamics
Section 86
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactListener { b2internal static var b2_defaultListener:b2ContactListener = new (b2ContactListener); ; public function BeginContact(_arg1:b2Contact):void{ } public function EndContact(_arg1:b2Contact):void{ } public function PreSolve(_arg1:b2Contact, _arg2:b2Manifold):void{ } public function PostSolve(_arg1:b2Contact, _arg2:b2ContactImpulse):void{ } } }//package Box2D.Dynamics
Section 87
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2ContactManager { b2internal var m_world:b2World; b2internal var m_broadPhase:IBroadPhase; b2internal var m_contactList:b2Contact; b2internal var m_contactCount:int; b2internal var m_contactFilter:b2ContactFilter; b2internal var m_contactListener:b2ContactListener; b2internal var m_contactFactory:b2ContactFactory; b2internal var m_allocator; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_world = null; m_contactCount = 0; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = b2ContactListener.b2_defaultListener; m_contactFactory = new b2ContactFactory(m_allocator); m_broadPhase = new b2DynamicTreeBroadPhase(); } public function AddPair(_arg1, _arg2):void{ var _local9:b2Fixture; var _local10:b2Fixture; var _local3:b2Fixture = (_arg1 as b2Fixture); var _local4:b2Fixture = (_arg2 as b2Fixture); var _local5:b2Body = _local3.GetBody(); var _local6:b2Body = _local4.GetBody(); if (_local5 == _local6){ return; }; var _local7:b2ContactEdge = _local6.GetContactList(); while (_local7) { if (_local7.other == _local5){ _local9 = _local7.contact.GetFixtureA(); _local10 = _local7.contact.GetFixtureB(); if ((((_local9 == _local3)) && ((_local10 == _local4)))){ return; }; if ((((_local9 == _local4)) && ((_local10 == _local3)))){ return; }; }; _local7 = _local7.next; }; if (_local6.ShouldCollide(_local5) == false){ return; }; if (m_contactFilter.ShouldCollide(_local3, _local4) == false){ return; }; var _local8:b2Contact = m_contactFactory.Create(_local3, _local4); _local3 = _local8.GetFixtureA(); _local4 = _local8.GetFixtureB(); _local5 = _local3.m_body; _local6 = _local4.m_body; _local8.m_prev = null; _local8.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local8; }; m_world.m_contactList = _local8; _local8.m_nodeA.contact = _local8; _local8.m_nodeA.other = _local6; _local8.m_nodeA.prev = null; _local8.m_nodeA.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local8.m_nodeA; }; _local5.m_contactList = _local8.m_nodeA; _local8.m_nodeB.contact = _local8; _local8.m_nodeB.other = _local5; _local8.m_nodeB.prev = null; _local8.m_nodeB.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local8.m_nodeB; }; _local6.m_contactList = _local8.m_nodeB; m_world.m_contactCount++; } public function FindNewContacts():void{ m_broadPhase.UpdatePairs(AddPair); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Fixture = _arg1.GetFixtureA(); var _local3:b2Fixture = _arg1.GetFixtureB(); var _local4:b2Body = _local2.GetBody(); var _local5:b2Body = _local3.GetBody(); if (_arg1.IsTouching()){ m_contactListener.EndContact(_arg1); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; if (_arg1.m_nodeA.prev){ _arg1.m_nodeA.prev.next = _arg1.m_nodeA.next; }; if (_arg1.m_nodeA.next){ _arg1.m_nodeA.next.prev = _arg1.m_nodeA.prev; }; if (_arg1.m_nodeA == _local4.m_contactList){ _local4.m_contactList = _arg1.m_nodeA.next; }; if (_arg1.m_nodeB.prev){ _arg1.m_nodeB.prev.next = _arg1.m_nodeB.next; }; if (_arg1.m_nodeB.next){ _arg1.m_nodeB.next.prev = _arg1.m_nodeB.prev; }; if (_arg1.m_nodeB == _local5.m_contactList){ _local5.m_contactList = _arg1.m_nodeB.next; }; m_contactFactory.Destroy(_arg1); m_contactCount--; } public function Collide():void{ var _local2:b2Fixture; var _local3:b2Fixture; var _local4:b2Body; var _local5:b2Body; var _local6:*; var _local7:*; var _local8:Boolean; var _local9:b2Contact; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.GetFixtureA(); _local3 = _local1.GetFixtureB(); _local4 = _local2.GetBody(); _local5 = _local3.GetBody(); if ((((_local4.IsAwake() == false)) && ((_local5.IsAwake() == false)))){ _local1 = _local1.GetNext(); } else { if ((_local1.m_flags & b2Contact.e_filterFlag)){ if (_local5.ShouldCollide(_local4) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; if (m_contactFilter.ShouldCollide(_local2, _local3) == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); continue; }; _local1.m_flags = (_local1.m_flags & ~(b2Contact.e_filterFlag)); }; _local6 = _local2.m_proxy; _local7 = _local3.m_proxy; _local8 = m_broadPhase.TestOverlap(_local6, _local7); if (_local8 == false){ _local9 = _local1; _local1 = _local9.GetNext(); Destroy(_local9); } else { _local1.Update(m_contactListener); _local1 = _local1.GetNext(); }; }; }; } } }//package Box2D.Dynamics
Section 88
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import flash.display.*; public class b2DebugDraw { private var m_drawFlags:uint; b2internal var m_sprite:Sprite; private var m_drawScale:Number;// = 1 private var m_lineThickness:Number;// = 1 private var m_alpha:Number;// = 1 private var m_fillAlpha:Number;// = 1 private var m_xformScale:Number;// = 1 public static var e_shapeBit:uint = 1; public static var e_jointBit:uint = 2; public static var e_aabbBit:uint = 4; public static var e_pairBit:uint = 8; public static var e_centerOfMassBit:uint = 16; public static var e_controllerBit:uint = 32; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function SetSprite(_arg1:Sprite):void{ m_sprite = _arg1; } public function GetSprite():Sprite{ return (m_sprite); } public function SetDrawScale(_arg1:Number):void{ m_drawScale = _arg1; } public function GetDrawScale():Number{ return (m_drawScale); } public function SetLineThickness(_arg1:Number):void{ m_lineThickness = _arg1; } public function GetLineThickness():Number{ return (m_lineThickness); } public function SetAlpha(_arg1:Number):void{ m_alpha = _arg1; } public function GetAlpha():Number{ return (m_alpha); } public function SetFillAlpha(_arg1:Number):void{ m_fillAlpha = _arg1; } public function GetFillAlpha():Number{ return (m_fillAlpha); } public function SetXFormScale(_arg1:Number):void{ m_xformScale = _arg1; } public function GetXFormScale():Number{ return (m_xformScale); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _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)); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ 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); var _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 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 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 DrawTransform(_arg1:b2Transform):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)); } } }//package Box2D.Dynamics
Section 89
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeFixture(_arg1:b2Fixture):void{ } } }//package Box2D.Dynamics
Section 90
//b2FilterData (Box2D.Dynamics.b2FilterData) package Box2D.Dynamics { public class b2FilterData { public var categoryBits:uint;// = 1 public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Dynamics
Section 91
//b2Fixture (Box2D.Dynamics.b2Fixture) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Fixture { private var m_massData:b2MassData; b2internal var m_aabb:b2AABB; b2internal var m_density:Number; b2internal var m_next:b2Fixture; b2internal var m_body:b2Body; b2internal var m_shape:b2Shape; b2internal var m_friction:Number; b2internal var m_restitution:Number; b2internal var m_proxy; b2internal var m_filter:b2FilterData; b2internal var m_isSensor:Boolean; b2internal var m_userData; public function b2Fixture(){ m_filter = new b2FilterData(); super(); m_aabb = new b2AABB(); m_userData = null; m_body = null; m_next = null; m_shape = null; m_density = 0; m_friction = 0; m_restitution = 0; } public function GetType():int{ return (m_shape.GetType()); } public function GetShape():b2Shape{ return (m_shape); } public function SetSensor(_arg1:Boolean):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; if (m_isSensor == _arg1){ return; }; m_isSensor = _arg1; if (m_body == null){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.SetSensor(((_local4.IsSensor()) || (_local5.IsSensor()))); }; _local2 = _local2.next; }; } public function IsSensor():Boolean{ return (m_isSensor); } public function SetFilterData(_arg1:b2FilterData):void{ var _local3:b2Contact; var _local4:b2Fixture; var _local5:b2Fixture; m_filter = _arg1.Copy(); if (m_body){ return; }; var _local2:b2ContactEdge = m_body.GetContactList(); while (_local2) { _local3 = _local2.contact; _local4 = _local3.GetFixtureA(); _local5 = _local3.GetFixtureB(); if ((((_local4 == this)) || ((_local5 == this)))){ _local3.FlagForFiltering(); }; _local2 = _local2.next; }; } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function GetBody():b2Body{ return (m_body); } public function GetNext():b2Fixture{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function TestPoint(_arg1:b2Vec2):Boolean{ return (m_shape.TestPoint(m_body.GetTransform(), _arg1)); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):Boolean{ return (m_shape.RayCast(_arg1, _arg2, m_body.GetTransform())); } public function GetMassData(_arg1:b2MassData=null):b2MassData{ if (_arg1 == null){ _arg1 = new b2MassData(); }; m_shape.ComputeMass(_arg1, m_density); return (_arg1); } public function SetDensity(_arg1:Number):void{ m_density = _arg1; } public function GetDensity():Number{ return (m_density); } public function GetFriction():Number{ return (m_friction); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } public function GetRestitution():Number{ return (m_restitution); } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetAABB():b2AABB{ return (m_aabb); } b2internal function Create(_arg1:b2Body, _arg2:b2Transform, _arg3:b2FixtureDef):void{ m_userData = _arg3.userData; m_friction = _arg3.friction; m_restitution = _arg3.restitution; m_body = _arg1; m_next = null; m_filter = _arg3.filter.Copy(); m_isSensor = _arg3.isSensor; m_shape = _arg3.shape.Copy(); m_density = _arg3.density; } b2internal function Destroy():void{ m_shape = null; } b2internal function CreateProxy(_arg1:IBroadPhase, _arg2:b2Transform):void{ m_shape.ComputeAABB(m_aabb, _arg2); m_proxy = _arg1.CreateProxy(m_aabb, this); } b2internal function DestroyProxy(_arg1:IBroadPhase):void{ if (m_proxy == null){ return; }; _arg1.DestroyProxy(m_proxy); m_proxy = null; } b2internal function Synchronize(_arg1:IBroadPhase, _arg2:b2Transform, _arg3:b2Transform):void{ if (!m_proxy){ return; }; var _local4:b2AABB = new b2AABB(); var _local5:b2AABB = new b2AABB(); m_shape.ComputeAABB(_local4, _arg2); m_shape.ComputeAABB(_local5, _arg3); m_aabb.Combine(_local4, _local5); var _local6:b2Vec2 = b2Math.SubtractVV(_arg3.position, _arg2.position); _arg1.MoveProxy(m_proxy, m_aabb, _local6); } } }//package Box2D.Dynamics
Section 92
//b2FixtureDef (Box2D.Dynamics.b2FixtureDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2FixtureDef { public var shape:b2Shape; public var userData; public var friction:Number; public var restitution:Number; public var density:Number; public var isSensor:Boolean; public var filter:b2FilterData; public function b2FixtureDef(){ filter = new b2FilterData(); super(); shape = null; userData = null; friction = 0.2; restitution = 0; density = 0; filter.categoryBits = 1; filter.maskBits = 0xFFFF; filter.groupIndex = 0; isSensor = false; } } }//package Box2D.Dynamics
Section 93
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Island { private var m_allocator; private var m_listener:b2ContactListener; private var m_contactSolver:b2ContactSolver; b2internal var m_bodies:Array; b2internal var m_contacts:Array; b2internal var m_joints:Array; b2internal var m_bodyCount:int; b2internal var m_jointCount:int; b2internal var m_contactCount:int; private var m_bodyCapacity:int; b2internal var m_contactCapacity:int; b2internal var m_jointCapacity:int; private static var s_impulse:b2ContactImpulse = new b2ContactImpulse(); public function b2Island(){ m_bodies = new Array(); m_contacts = new Array(); m_joints = new Array(); } public function Initialize(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener, _arg6:b2ContactSolver):void{ var _local7:int; 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_contactSolver = _arg6; _local7 = m_bodies.length; while (_local7 < _arg1) { m_bodies[_local7] = null; _local7++; }; _local7 = m_contacts.length; while (_local7 < _arg2) { m_contacts[_local7] = null; _local7++; }; _local7 = m_joints.length; while (_local7 < _arg3) { m_joints[_local7] = null; _local7++; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Boolean; var _local13:Boolean; var _local14:Boolean; var _local15:Number; var _local16:Number; var _local17:Number; _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() != b2Body.b2_dynamicBody){ } 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_linearVelocity.Multiply(b2Math.Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); }; _local4++; }; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local8:b2ContactSolver = m_contactSolver; _local8.InitVelocityConstraints(_arg1); _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.InitVelocityConstraints(_arg1); _local4++; }; _local4 = 0; while (_local4 < _arg1.velocityIterations) { _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.SolveVelocityConstraints(_arg1); _local5++; }; _local8.SolveVelocityConstraints(); _local4++; }; _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.FinalizeVelocityConstraints(); _local4++; }; _local8.FinalizeVelocityConstraints(); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local9 = (_arg1.dt * _local6.m_linearVelocity.x); _local10 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local9 * _local9) + (_local10 * _local10)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local11 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local11) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _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(); }; _local4++; }; _local4 = 0; while (_local4 < _arg1.positionIterations) { _local12 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local14 = _local7.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local13 = ((_local13) && (_local14)); _local5++; }; if (((_local12) && (_local13))){ break; }; _local4++; }; Report(_local8.m_constraints); if (_arg3){ _local15 = Number.MAX_VALUE; _local16 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local17 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local15 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local17)))) || ((b2Math.Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local16)))){ _local6.m_sleepTime = 0; _local15 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local15 = b2Math.Min(_local15, _local6.m_sleepTime); }; }; _local4++; }; if (_local15 >= b2Settings.b2_timeToSleep){ _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; _local6.SetAwake(false); _local4++; }; }; }; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:int; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; m_contactSolver.Initialize(_arg1, m_contacts, m_contactCount, m_allocator); var _local4:b2ContactSolver = m_contactSolver; _local2 = 0; while (_local2 < m_jointCount) { m_joints[_local2].InitVelocityConstraints(_arg1); _local2++; }; _local2 = 0; while (_local2 < _arg1.velocityIterations) { _local4.SolveVelocityConstraints(); _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].SolveVelocityConstraints(_arg1); _local3++; }; _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local6 = m_bodies[_local2]; if (_local6.GetType() == b2Body.b2_staticBody){ } else { _local7 = (_arg1.dt * _local6.m_linearVelocity.x); _local8 = (_arg1.dt * _local6.m_linearVelocity.y); if (((_local7 * _local7) + (_local8 * _local8)) > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local9 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local9) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _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(); }; _local2++; }; var _local5:Number = 0.75; _local2 = 0; while (_local2 < _arg1.positionIterations) { _local10 = _local4.SolvePositionConstraints(_local5); _local11 = true; _local3 = 0; while (_local3 < m_jointCount) { _local12 = m_joints[_local3].SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = ((_local11) && (_local12)); _local3++; }; if (((_local10) && (_local11))){ break; }; _local2++; }; Report(_local4.m_constraints); } public function Report(_arg1:Array):void{ var _local3:b2Contact; var _local4:b2ContactConstraint; var _local5:int; if (m_listener == null){ return; }; var _local2:int; while (_local2 < m_contactCount) { _local3 = m_contacts[_local2]; _local4 = _arg1[_local2]; _local5 = 0; while (_local5 < _local4.pointCount) { s_impulse.normalImpulses[_local5] = _local4.points[_local5].normalImpulse; s_impulse.tangentImpulses[_local5] = _local4.points[_local5].tangentImpulse; _local5++; }; m_listener.PostSolve(_local3, s_impulse); _local2++; }; } public function AddBody(_arg1:b2Body):void{ _arg1.m_islandIndex = m_bodyCount; var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } } }//package Box2D.Dynamics
Section 94
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var dt:Number; public var inv_dt:Number; public var dtRatio:Number; public var velocityIterations:int; public var positionIterations:int; public var warmStarting:Boolean; public function Set(_arg1:b2TimeStep):void{ dt = _arg1.dt; inv_dt = _arg1.inv_dt; positionIterations = _arg1.positionIterations; velocityIterations = _arg1.velocityIterations; warmStarting = _arg1.warmStarting; } } }//package Box2D.Dynamics
Section 95
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; public class b2World { private var s_stack:Array; b2internal var m_flags:int; b2internal var m_contactManager:b2ContactManager; private var m_contactSolver:b2ContactSolver; private var m_island:b2Island; b2internal var m_bodyList:b2Body; private var m_jointList:b2Joint; b2internal var m_contactList:b2Contact; private var m_bodyCount:int; b2internal var m_contactCount:int; private var m_jointCount:int; private var m_controllerList:b2Controller; private var m_controllerCount:int; private var m_gravity:b2Vec2; private var m_allowSleep:Boolean; b2internal var m_groundBody:b2Body; private var m_destructionListener:b2DestructionListener; private var m_debugDraw:b2DebugDraw; private var m_inv_dt0:Number; public static const e_newFixture:int = 1; public static const e_locked:int = 2; private static var s_timestep2:b2TimeStep = new b2TimeStep(); private static var s_xf:b2Transform = new b2Transform(); private static var s_backupA:b2Sweep = new b2Sweep(); private static var s_backupB:b2Sweep = new b2Sweep(); private static var s_timestep:b2TimeStep = new b2TimeStep(); private static var s_queue:Array = new Array(); private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); private static var m_warmStarting:Boolean; private static var m_continuousPhysics:Boolean; public function b2World(_arg1:b2Vec2, _arg2:Boolean){ s_stack = new Array(); m_contactManager = new b2ContactManager(); m_contactSolver = new b2ContactSolver(); m_island = new b2Island(); super(); m_destructionListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_controllerList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_controllerCount = 0; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg2; m_gravity = _arg1; m_inv_dt0 = 0; m_contactManager.m_world = this; var _local3:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local3); } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactManager.m_contactFilter = _arg1; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactManager.m_contactListener = _arg1; } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetBroadPhase(_arg1:IBroadPhase):void{ var _local4:b2Fixture; var _local2:IBroadPhase = m_contactManager.m_broadPhase; m_contactManager.m_broadPhase = _arg1; var _local3:b2Body = m_bodyList; while (_local3) { _local4 = _local3.m_fixtureList; while (_local4) { _local4.m_proxy = _arg1.CreateProxy(_local2.GetFatAABB(_local4.m_proxy), _local4); _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; } public function Validate():void{ m_contactManager.m_broadPhase.Validate(); } public function GetProxyCount():int{ return (m_contactManager.m_broadPhase.GetProxyCount()); } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (IsLocked() == true){ return (null); }; var _local2:b2Body = 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 DestroyBody(_arg1:b2Body):void{ var _local6:b2JointEdge; var _local7:b2ControllerEdge; var _local8:b2ContactEdge; var _local9:b2Fixture; if (IsLocked() == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local6 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local6.joint); }; DestroyJoint(_local6.joint); }; var _local3:b2ControllerEdge = _arg1.m_controllerList; while (_local3) { _local7 = _local3; _local3 = _local3.nextController; _local7.controller.RemoveBody(_arg1); }; var _local4:b2ContactEdge = _arg1.m_contactList; while (_local4) { _local8 = _local4; _local4 = _local4.next; m_contactManager.Destroy(_local8.contact); }; _arg1.m_contactList = null; var _local5:b2Fixture = _arg1.m_fixtureList; while (_local5) { _local9 = _local5; _local5 = _local5.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeFixture(_local9); }; _local9.DestroyProxy(m_contactManager.m_broadPhase); _local9.Destroy(); }; _arg1.m_fixtureList = null; _arg1.m_fixtureCount = 0; 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 CreateJoint(_arg1:b2JointDef):b2Joint{ var _local5:b2ContactEdge; var _local2:b2Joint = b2Joint.Create(_arg1, null); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_edgeA.joint = _local2; _local2.m_edgeA.other = _local2.m_bodyB; _local2.m_edgeA.prev = null; _local2.m_edgeA.next = _local2.m_bodyA.m_jointList; if (_local2.m_bodyA.m_jointList){ _local2.m_bodyA.m_jointList.prev = _local2.m_edgeA; }; _local2.m_bodyA.m_jointList = _local2.m_edgeA; _local2.m_edgeB.joint = _local2; _local2.m_edgeB.other = _local2.m_bodyA; _local2.m_edgeB.prev = null; _local2.m_edgeB.next = _local2.m_bodyB.m_jointList; if (_local2.m_bodyB.m_jointList){ _local2.m_bodyB.m_jointList.prev = _local2.m_edgeB; }; _local2.m_bodyB.m_jointList = _local2.m_edgeB; var _local3:b2Body = _arg1.bodyA; var _local4:b2Body = _arg1.bodyB; if (_arg1.collideConnected == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2ContactEdge; var _local2:Boolean = _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; }; var _local3:b2Body = _arg1.m_bodyA; var _local4:b2Body = _arg1.m_bodyB; _local3.SetAwake(true); _local4.SetAwake(true); if (_arg1.m_edgeA.prev){ _arg1.m_edgeA.prev.next = _arg1.m_edgeA.next; }; if (_arg1.m_edgeA.next){ _arg1.m_edgeA.next.prev = _arg1.m_edgeA.prev; }; if (_arg1.m_edgeA == _local3.m_jointList){ _local3.m_jointList = _arg1.m_edgeA.next; }; _arg1.m_edgeA.prev = null; _arg1.m_edgeA.next = null; if (_arg1.m_edgeB.prev){ _arg1.m_edgeB.prev.next = _arg1.m_edgeB.next; }; if (_arg1.m_edgeB.next){ _arg1.m_edgeB.next.prev = _arg1.m_edgeB.prev; }; if (_arg1.m_edgeB == _local4.m_jointList){ _local4.m_jointList = _arg1.m_edgeB.next; }; _arg1.m_edgeB.prev = null; _arg1.m_edgeB.next = null; b2Joint.Destroy(_arg1, null); m_jointCount--; if (_local2 == false){ _local5 = _local4.GetContactList(); while (_local5) { if (_local5.other == _local3){ _local5.contact.FlagForFiltering(); }; _local5 = _local5.next; }; }; } public function AddController(_arg1:b2Controller):b2Controller{ _arg1.m_next = m_controllerList; _arg1.m_prev = null; m_controllerList = _arg1; _arg1.m_world = this; m_controllerCount++; return (_arg1); } public function RemoveController(_arg1:b2Controller):void{ 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 (m_controllerList == _arg1){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } public function CreateController(_arg1:b2Controller):b2Controller{ if (_arg1.m_world != this){ throw (new Error("Controller can only be a member of one world")); }; _arg1.m_next = m_controllerList; _arg1.m_prev = null; if (m_controllerList){ m_controllerList.m_prev = _arg1; }; m_controllerList = _arg1; m_controllerCount++; _arg1.m_world = this; return (_arg1); } public function DestroyController(_arg1:b2Controller):void{ _arg1.Clear(); if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1 == m_controllerList){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } public function GetContactCount():int{ return (m_contactCount); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function GetGravity():b2Vec2{ return (m_gravity); } public function GetGroundBody():b2Body{ return (m_groundBody); } public function Step(_arg1:Number, _arg2:int, _arg3:int):void{ if ((m_flags & e_newFixture)){ m_contactManager.FindNewContacts(); m_flags = (m_flags & ~(e_newFixture)); }; m_flags = (m_flags | e_locked); var _local4:b2TimeStep = s_timestep2; _local4.dt = _arg1; _local4.velocityIterations = _arg2; _local4.positionIterations = _arg3; if (_arg1 > 0){ _local4.inv_dt = (1 / _arg1); } else { _local4.inv_dt = 0; }; _local4.dtRatio = (m_inv_dt0 * _arg1); _local4.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local4.dt > 0){ Solve(_local4); }; if (((m_continuousPhysics) && ((_local4.dt > 0)))){ SolveTOI(_local4); }; if (_local4.dt > 0){ m_inv_dt0 = _local4.inv_dt; }; m_flags = (m_flags & ~(e_locked)); } public function ClearForces():void{ var _local1:b2Body = m_bodyList; while (_local1) { _local1.m_force.SetZero(); _local1.m_torque = 0; _local1 = _local1.m_next; }; } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Fixture; var _local5:b2Shape; var _local6:b2Joint; var _local7:IBroadPhase; var _local11:b2Transform; var _local16:b2Controller; var _local17:b2Contact; var _local18:b2Fixture; var _local19:b2Fixture; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2AABB; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Vec2 = new b2Vec2(); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; var _local15:b2Color = new b2Color(0, 0, 0); if ((_local1 & b2DebugDraw.e_shapeBit)){ _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetFixtureList(); while (_local4) { _local5 = _local4.GetShape(); if (_local3.IsActive() == false){ _local15.Set(0.5, 0.5, 0.3); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_staticBody){ _local15.Set(0.5, 0.9, 0.5); DrawShape(_local5, _local11, _local15); } else { if (_local3.GetType() == b2Body.b2_kinematicBody){ _local15.Set(0.5, 0.5, 0.9); DrawShape(_local5, _local11, _local15); } else { if (_local3.IsAwake() == false){ _local15.Set(0.6, 0.6, 0.6); DrawShape(_local5, _local11, _local15); } else { _local15.Set(0.9, 0.7, 0.7); DrawShape(_local5, _local11, _local15); }; }; }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local6 = m_jointList; while (_local6) { DrawJoint(_local6); _local6 = _local6.m_next; }; }; if ((_local1 & b2DebugDraw.e_controllerBit)){ _local16 = m_controllerList; while (_local16) { _local16.Draw(m_debugDraw); _local16 = _local16.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local15.Set(0.3, 0.9, 0.9); _local17 = m_contactManager.m_contactList; while (_local17) { _local18 = _local17.GetFixtureA(); _local19 = _local17.GetFixtureB(); _local20 = _local18.GetAABB().GetCenter(); _local21 = _local19.GetAABB().GetCenter(); m_debugDraw.DrawSegment(_local20, _local21, _local15); _local17 = _local17.GetNext(); }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local7 = m_contactManager.m_broadPhase; _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; _local3 = m_bodyList; while (_local3) { if (_local3.IsActive() == false){ } else { _local4 = _local3.GetFixtureList(); while (_local4) { _local22 = _local7.GetFatAABB(_local4.m_proxy); _local14[0].Set(_local22.lowerBound.x, _local22.lowerBound.y); _local14[1].Set(_local22.upperBound.x, _local22.lowerBound.y); _local14[2].Set(_local22.upperBound.x, _local22.upperBound.y); _local14[3].Set(_local22.lowerBound.x, _local22.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local15); _local4 = _local4.GetNext(); }; }; _local3 = _local3.GetNext(); }; }; 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.DrawTransform(_local11); _local3 = _local3.m_next; }; }; } public function QueryAABB(_arg1:Function, _arg2:b2AABB):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var aabb = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ return (callback(broadPhase.GetUserData(_arg1))); }; broadPhase = m_contactManager.m_broadPhase; broadPhase.Query(WorldQueryWrapper, aabb); } public function QueryShape(_arg1:Function, _arg2:b2Shape, _arg3:b2Transform=null):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var shape = _arg2; var transform = _arg3; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (b2Shape.TestOverlap(shape, transform, _local2.GetShape(), _local2.GetBody().GetTransform())){ return (callback(_local2)); }; return (true); }; if (transform == null){ transform = new b2Transform(); transform.SetIdentity(); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); shape.ComputeAABB(aabb, transform); broadPhase.Query(WorldQueryWrapper, aabb); } public function QueryPoint(_arg1:Function, _arg2:b2Vec2):void{ var broadPhase:IBroadPhase; var WorldQueryWrapper:Function; var callback = _arg1; var p = _arg2; WorldQueryWrapper = function (_arg1):Boolean{ var _local2:b2Fixture = (broadPhase.GetUserData(_arg1) as b2Fixture); if (_local2.TestPoint(p)){ return (callback(_local2)); }; return (true); }; broadPhase = m_contactManager.m_broadPhase; var aabb:b2AABB = new b2AABB(); aabb.lowerBound.Set((p.x - b2Settings.b2_linearSlop), (p.y - b2Settings.b2_linearSlop)); aabb.upperBound.Set((p.x + b2Settings.b2_linearSlop), (p.y + b2Settings.b2_linearSlop)); broadPhase.Query(WorldQueryWrapper, aabb); } public function RayCast(_arg1:Function, _arg2:b2Vec2, _arg3:b2Vec2):void{ var broadPhase:IBroadPhase; var output:b2RayCastOutput; var RayCastWrapper:Function; var callback = _arg1; var point1 = _arg2; var point2 = _arg3; RayCastWrapper = function (_arg1:b2RayCastInput, _arg2):Number{ var _local6:Number; var _local7:b2Vec2; var _local3:* = broadPhase.GetUserData(_arg2); var _local4:b2Fixture = (_local3 as b2Fixture); var _local5:Boolean = _local4.RayCast(output, _arg1); if (_local5){ _local6 = output.fraction; _local7 = new b2Vec2((((1 - _local6) * point1.x) + (_local6 * point2.x)), (((1 - _local6) * point1.y) + (_local6 * point2.y))); return (callback(_local4, _local7, output.normal, _local6)); }; return (_arg1.maxFraction); }; broadPhase = m_contactManager.m_broadPhase; output = new b2RayCastOutput(); var input:b2RayCastInput = new b2RayCastInput(point1, point2); broadPhase.RayCast(RayCastWrapper, input); } public function RayCastOne(_arg1:b2Vec2, _arg2:b2Vec2):b2Fixture{ var result:b2Fixture; var RayCastOneWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastOneWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result = _arg1; return (_arg4); }; RayCast(RayCastOneWrapper, point1, point2); return (result); } public function RayCastAll(_arg1:b2Vec2, _arg2:b2Vec2):Array{ var result:Array; var RayCastAllWrapper:Function; var point1 = _arg1; var point2 = _arg2; RayCastAllWrapper = function (_arg1:b2Fixture, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):Number{ result[result.length] = _arg1; return (1); }; result = new Array(); RayCast(RayCastAllWrapper, point1, point2); return (result); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetJointList():b2Joint{ return (m_jointList); } public function GetContactList():b2Contact{ return (m_contactList); } public function IsLocked():Boolean{ return (((m_flags & e_locked) > 0)); } b2internal function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local10:int; var _local11:int; var _local12:b2Body; var _local13:b2ContactEdge; var _local14:b2JointEdge; var _local3:b2Controller = m_controllerList; while (_local3) { _local3.Step(_arg1); _local3 = _local3.m_next; }; var _local4:b2Island = m_island; _local4.Initialize(m_bodyCount, m_contactCount, m_jointCount, null, m_contactManager.m_contactListener, m_contactSolver); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local5:b2Contact = m_contactList; while (_local5) { _local5.m_flags = (_local5.m_flags & ~(b2Contact.e_islandFlag)); _local5 = _local5.m_next; }; var _local6:b2Joint = m_jointList; while (_local6) { _local6.m_islandFlag = false; _local6 = _local6.m_next; }; var _local7:int = m_bodyCount; var _local8:Array = s_stack; var _local9:b2Body = m_bodyList; while (_local9) { if ((_local9.m_flags & b2Body.e_islandFlag)){ } else { if ((((_local9.IsAwake() == false)) || ((_local9.IsActive() == false)))){ } else { if (_local9.GetType() == b2Body.b2_staticBody){ } else { _local4.Clear(); _local10 = 0; var _temp1 = _local10; _local10 = (_local10 + 1); var _local15 = _temp1; _local8[_local15] = _local9; _local9.m_flags = (_local9.m_flags | b2Body.e_islandFlag); while (_local10 > 0) { --_local10; _local2 = _local8[_local10]; _local4.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local13 = _local2.m_contactList; while (_local13) { if ((_local13.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local13.contact.IsSensor() == true)) || ((_local13.contact.IsEnabled() == false)))) || ((_local13.contact.IsTouching() == false)))){ } else { _local4.AddContact(_local13.contact); _local13.contact.m_flags = (_local13.contact.m_flags | b2Contact.e_islandFlag); _local12 = _local13.other; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local10; _local10 = (_local10 + 1); var _local16 = _temp2; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local13 = _local13.next; }; _local14 = _local2.m_jointList; while (_local14) { if (_local14.joint.m_islandFlag == true){ } else { _local12 = _local14.other; if (_local12.IsActive() == false){ } else { _local4.AddJoint(_local14.joint); _local14.joint.m_islandFlag = true; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local10; _local10 = (_local10 + 1); _local16 = _temp3; _local8[_local16] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local14 = _local14.next; }; }; }; _local4.Solve(_arg1, m_gravity, m_allowSleep); _local11 = 0; while (_local11 < _local4.m_bodyCount) { _local2 = _local4.m_bodies[_local11]; if (_local2.GetType() == b2Body.b2_staticBody){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local11++; }; }; }; }; _local9 = _local9.m_next; }; _local11 = 0; while (_local11 < _local8.length) { if (!_local8[_local11]){ break; }; _local8[_local11] = null; _local11++; }; _local2 = m_bodyList; while (_local2) { if ((((_local2.IsAwake() == false)) || ((_local2.IsActive() == false)))){ } else { if (_local2.GetType() == b2Body.b2_staticBody){ } else { _local2.SynchronizeFixtures(); }; }; _local2 = _local2.m_next; }; m_contactManager.FindNewContacts(); } b2internal function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Fixture; var _local4:b2Fixture; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Joint; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:int; var _local17:b2TimeStep; var _local18:int; var _local19:Number; var _local20:Number; var _local21:b2JointEdge; var _local22:b2Body; var _local9:b2Island = m_island; _local9.Initialize(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, b2Settings.b2_maxTOIJointsPerIsland, null, m_contactManager.m_contactListener, m_contactSolver); var _local10:Array = s_queue; _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; }; _local8 = m_jointList; while (_local8) { _local8.m_islandFlag = false; _local8 = _local8.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((((((_local11.IsSensor() == true)) || ((_local11.IsEnabled() == false)))) || ((_local11.IsContinuous() == false)))){ } else { _local19 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local19 = _local11.m_toi; } else { _local3 = _local11.m_fixtureA; _local4 = _local11.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((!((_local5.GetType() == b2Body.b2_dynamicBody))) || ((_local5.IsAwake() == false)))) && (((!((_local6.GetType() == b2Body.b2_dynamicBody))) || ((_local6.IsAwake() == false)))))){ continue; }; _local20 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local20 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local20); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local20 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local20); }; }; _local19 = _local11.ComputeTOI(_local5.m_sweep, _local6.m_sweep); b2Settings.b2Assert((((0 <= _local19)) && ((_local19 <= 1)))); if ((((_local19 > 0)) && ((_local19 < 1)))){ _local19 = (((1 - _local19) * _local20) + _local19); if (_local19 > 1){ _local19 = 1; }; }; _local11.m_toi = _local19; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local19)) && ((_local19 < _local13)))){ _local12 = _local11; _local13 = _local19; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_fixtureA; _local4 = _local12.m_fixtureB; _local5 = _local3.m_body; _local6 = _local4.m_body; s_backupA.Set(_local5.m_sweep); s_backupB.Set(_local6.m_sweep); _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactManager.m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if ((((_local12.IsSensor() == true)) || ((_local12.IsEnabled() == false)))){ _local5.m_sweep.Set(s_backupA); _local6.m_sweep.Set(s_backupB); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); } else { if (_local12.IsTouching() == false){ } else { _local14 = _local5; if (_local14.GetType() != b2Body.b2_dynamicBody){ _local14 = _local6; }; _local9.Clear(); _local15 = 0; _local16 = 0; var _temp1 = _local16; _local16 = (_local16 + 1); _local10[(_local15 + _temp1)] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local16 > 0) { var _temp2 = _local15; _local15 = (_local15 + 1); _local2 = _local10[_temp2]; _local16--; _local9.AddBody(_local2); if (_local2.IsAwake() == false){ _local2.SetAwake(true); }; if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local9.m_contactCount == _local9.m_contactCapacity){ break; }; if ((_local7.contact.m_flags & b2Contact.e_islandFlag)){ } else { if ((((((_local7.contact.IsSensor() == true)) || ((_local7.contact.IsEnabled() == false)))) || ((_local7.contact.IsTouching() == false)))){ } else { _local9.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local22 = _local7.other; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; _local7 = _local7.next; }; _local21 = _local2.m_jointList; while (_local21) { if (_local9.m_jointCount == _local9.m_jointCapacity){ } else { if (_local21.joint.m_islandFlag == true){ } else { _local22 = _local21.other; if (_local22.IsActive() == false){ } else { _local9.AddJoint(_local21.joint); _local21.joint.m_islandFlag = true; if ((_local22.m_flags & b2Body.e_islandFlag)){ } else { if (_local22.GetType() != b2Body.b2_staticBody){ _local22.Advance(_local13); _local22.SetAwake(true); }; _local10[(_local15 + _local16)] = _local22; _local16++; _local22.m_flags = (_local22.m_flags | b2Body.e_islandFlag); }; }; }; }; _local21 = _local21.next; }; }; }; _local17 = s_timestep; _local17.warmStarting = false; _local17.dt = ((1 - _local13) * _arg1.dt); _local17.inv_dt = (1 / _local17.dt); _local17.dtRatio = 0; _local17.velocityIterations = _arg1.velocityIterations; _local17.positionIterations = _arg1.positionIterations; _local9.SolveTOI(_local17); _local18 = 0; while (_local18 < _local9.m_bodyCount) { _local2 = _local9.m_bodies[_local18]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if (_local2.IsAwake() == false){ } else { if (_local2.GetType() != b2Body.b2_dynamicBody){ } else { _local2.SynchronizeFixtures(); _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local18++; }; _local18 = 0; while (_local18 < _local9.m_contactCount) { _local11 = _local9.m_contacts[_local18]; _local9.m_contacts[_local18].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local18++; }; _local18 = 0; while (_local18 < _local9.m_jointCount) { _local8 = _local9.m_joints[_local18]; _local8.m_islandFlag = false; _local18++; }; m_contactManager.FindNewContacts(); }; }; }; } b2internal function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.GetBodyA(); var _local3:b2Body = _arg1.GetBodyB(); var _local4:b2Transform = _local2.m_xf; var _local5:b2Transform = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchorA(); var _local9:b2Vec2 = _arg1.GetAnchorB(); var _local10:b2Color = 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.GetGroundAnchorA(); _local13 = _local11.GetGroundAnchorB(); 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); }; }; } b2internal function DrawShape(_arg1:b2Shape, _arg2:b2Transform, _arg3:b2Color):void{ var _local4:b2CircleShape; var _local5:b2Vec2; var _local6:Number; var _local7:b2Vec2; var _local8:int; var _local9:b2PolygonShape; var _local10:int; var _local11:Array; var _local12:Array; var _local13:b2EdgeShape; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local4 = (_arg1 as b2CircleShape); _local5 = b2Math.MulX(_arg2, _local4.m_p); _local6 = _local4.m_radius; _local7 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local5, _local6, _local7, _arg3); break; case b2Shape.e_polygonShape: _local9 = (_arg1 as b2PolygonShape); _local10 = _local9.GetVertexCount(); _local11 = _local9.GetVertices(); _local12 = new Array(_local10); _local8 = 0; while (_local8 < _local10) { _local12[_local8] = b2Math.MulX(_arg2, _local11[_local8]); _local8++; }; m_debugDraw.DrawSolidPolygon(_local12, _local10, _arg3); break; case b2Shape.e_edgeShape: _local13 = (_arg1 as b2EdgeShape); m_debugDraw.DrawSegment(b2Math.MulX(_arg2, _local13.GetVertex1()), b2Math.MulX(_arg2, _local13.GetVertex2()), _arg3); break; }; } } }//package Box2D.Dynamics
Section 96
//PropTween (com.greensock.core.PropTween) package com.greensock.core { public final class PropTween { public var target:Object; public var property:String; public var start:Number; public var change:Number; public var name:String; public var priority:int; public var isPlugin:Boolean; public var nextNode:PropTween; public var prevNode:PropTween; public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null, _arg8:int=0){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; if (_arg7){ _arg7.prevNode = this; this.nextNode = _arg7; }; this.priority = _arg8; } } }//package com.greensock.core
Section 97
//SimpleTimeline (com.greensock.core.SimpleTimeline) package com.greensock.core { public class SimpleTimeline extends TweenCore { protected var _firstChild:TweenCore; protected var _lastChild:TweenCore; public var autoRemoveChildren:Boolean; public function SimpleTimeline(_arg1:Object=null){ super(0, _arg1); } public function insert(_arg1:TweenCore, _arg2=0):TweenCore{ var _local3:SimpleTimeline = _arg1.timeline; if (((!(_arg1.cachedOrphan)) && (_local3))){ _local3.remove(_arg1, true); }; _arg1.timeline = this; _arg1.cachedStartTime = (Number(_arg2) + _arg1.delay); if (_arg1.gc){ _arg1.setEnabled(true, true); }; if (((_arg1.cachedPaused) && (!((_local3 == this))))){ _arg1.cachedPauseTime = (_arg1.cachedStartTime + ((this.rawTime - _arg1.cachedStartTime) / _arg1.cachedTimeScale)); }; if (_lastChild){ _lastChild.nextNode = _arg1; } else { _firstChild = _arg1; }; _arg1.prevNode = _lastChild; _lastChild = _arg1; _arg1.nextNode = null; _arg1.cachedOrphan = false; return (_arg1); } public function remove(_arg1:TweenCore, _arg2:Boolean=false):void{ if (_arg1.cachedOrphan){ return; }; if (!_arg2){ _arg1.setEnabled(false, true); }; if (_arg1.nextNode){ _arg1.nextNode.prevNode = _arg1.prevNode; } else { if (_lastChild == _arg1){ _lastChild = _arg1.prevNode; }; }; if (_arg1.prevNode){ _arg1.prevNode.nextNode = _arg1.nextNode; } else { if (_firstChild == _arg1){ _firstChild = _arg1.nextNode; }; }; _arg1.cachedOrphan = true; } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local5:Number; var _local6:TweenCore; var _local4:TweenCore = _firstChild; this.cachedTotalTime = _arg1; this.cachedTime = _arg1; while (_local4) { _local6 = _local4.nextNode; if (((_local4.active) || ((((((_arg1 >= _local4.cachedStartTime)) && (!(_local4.cachedPaused)))) && (!(_local4.gc)))))){ if (!_local4.cachedReversed){ _local4.renderTime(((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale), _arg2, false); } else { _local5 = (_local4.cacheIsDirty) ? _local4.totalDuration : _local4.cachedTotalDuration; _local4.renderTime((_local5 - ((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale)), _arg2, false); }; }; _local4 = _local6; }; } public function get rawTime():Number{ return (this.cachedTotalTime); } } }//package com.greensock.core
Section 98
//TweenCore (com.greensock.core.TweenCore) package com.greensock.core { import com.greensock.*; public class TweenCore { protected var _delay:Number; protected var _hasUpdate:Boolean; protected var _rawPrevTime:Number;// = -1 public var vars:Object; public var active:Boolean; public var gc:Boolean; public var initted:Boolean; public var timeline:SimpleTimeline; public var cachedStartTime:Number; public var cachedTime:Number; public var cachedTotalTime:Number; public var cachedDuration:Number; public var cachedTotalDuration:Number; public var cachedTimeScale:Number; public var cachedPauseTime:Number; public var cachedReversed:Boolean; public var nextNode:TweenCore; public var prevNode:TweenCore; public var cachedOrphan:Boolean; public var cacheIsDirty:Boolean; public var cachedPaused:Boolean; public var data; public static const version:Number = 1.693; protected static var _classInitted:Boolean; public function TweenCore(_arg1:Number=0, _arg2:Object=null){ this.vars = ((_arg2)!=null) ? _arg2 : {}; if (this.vars.isGSVars){ this.vars = this.vars.vars; }; this.cachedDuration = (this.cachedTotalDuration = _arg1); _delay = (this.vars.delay) ? Number(this.vars.delay) : 0; this.cachedTimeScale = (this.vars.timeScale) ? Number(this.vars.timeScale) : 1; this.active = Boolean((((((_arg1 == 0)) && ((_delay == 0)))) && (!((this.vars.immediateRender == false))))); this.cachedTotalTime = (this.cachedTime = 0); this.data = this.vars.data; if (!_classInitted){ if (isNaN(TweenLite.rootFrame)){ TweenLite.initClass(); _classInitted = true; } else { return; }; }; var _local3:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline; _local3.insert(this, _local3.cachedTotalTime); if (this.vars.reversed){ this.cachedReversed = true; }; if (this.vars.paused){ this.paused = true; }; } public function play():void{ this.reversed = false; this.paused = false; } public function pause():void{ this.paused = true; } public function resume():void{ this.paused = false; } public function restart(_arg1:Boolean=false, _arg2:Boolean=true):void{ this.reversed = false; this.paused = false; this.setTotalTime((_arg1) ? -(_delay) : 0, _arg2); } public function reverse(_arg1:Boolean=true):void{ this.reversed = true; if (_arg1){ this.paused = false; } else { if (this.gc){ this.setEnabled(true, false); }; }; } public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ } public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{ if (!_arg1){ renderTime(this.totalDuration, _arg2, false); return; }; if (this.timeline.autoRemoveChildren){ this.setEnabled(false, false); } else { this.active = false; }; if (!_arg2){ if (((((this.vars.onComplete) && ((this.cachedTotalTime >= this.cachedTotalDuration)))) && (!(this.cachedReversed)))){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); } else { if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (this.vars.onReverseComplete))){ this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams); }; }; }; } public function invalidate():void{ } public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ this.gc = !(_arg1); if (_arg1){ this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); if (((!(_arg2)) && (this.cachedOrphan))){ this.timeline.insert(this, (this.cachedStartTime - _delay)); }; } else { this.active = false; if (((!(_arg2)) && (!(this.cachedOrphan)))){ this.timeline.remove(this, true); }; }; return (false); } public function kill():void{ setEnabled(false, false); } protected function setDirtyCache(_arg1:Boolean=true):void{ var _local2:TweenCore = (_arg1) ? this : this.timeline; while (_local2) { _local2.cacheIsDirty = true; _local2 = _local2.timeline; }; } protected function setTotalTime(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; var _local4:Number; if (this.timeline){ _local3 = (this.cachedPaused) ? this.cachedPauseTime : this.timeline.cachedTotalTime; if (this.cachedReversed){ _local4 = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration; this.cachedStartTime = (_local3 - ((_local4 - _arg1) / this.cachedTimeScale)); } else { this.cachedStartTime = (_local3 - (_arg1 / this.cachedTimeScale)); }; if (!this.timeline.cacheIsDirty){ setDirtyCache(false); }; if (this.cachedTotalTime != _arg1){ renderTime(_arg1, _arg2, false); }; }; } public function get delay():Number{ return (_delay); } public function set delay(_arg1:Number):void{ this.startTime = (this.startTime + (_arg1 - _delay)); _delay = _arg1; } public function get duration():Number{ return (this.cachedDuration); } public function set duration(_arg1:Number):void{ var _local2:Number = (_arg1 / this.cachedDuration); this.cachedDuration = (this.cachedTotalDuration = _arg1); setDirtyCache(true); if (((((this.active) && (!(this.cachedPaused)))) && (!((_arg1 == 0))))){ this.setTotalTime((this.cachedTotalTime * _local2), true); }; } public function get totalDuration():Number{ return (this.cachedTotalDuration); } public function set totalDuration(_arg1:Number):void{ this.duration = _arg1; } public function get currentTime():Number{ return (this.cachedTime); } public function set currentTime(_arg1:Number):void{ setTotalTime(_arg1, false); } public function get totalTime():Number{ return (this.cachedTotalTime); } public function set totalTime(_arg1:Number):void{ setTotalTime(_arg1, false); } public function get startTime():Number{ return (this.cachedStartTime); } public function set startTime(_arg1:Number):void{ if (((!((this.timeline == null))) && (((!((_arg1 == this.cachedStartTime))) || (this.gc))))){ this.timeline.insert(this, (_arg1 - _delay)); } else { this.cachedStartTime = _arg1; }; } public function get reversed():Boolean{ return (this.cachedReversed); } public function set reversed(_arg1:Boolean):void{ if (_arg1 != this.cachedReversed){ this.cachedReversed = _arg1; setTotalTime(this.cachedTotalTime, true); }; } public function get paused():Boolean{ return (this.cachedPaused); } public function set paused(_arg1:Boolean):void{ if (((!((_arg1 == this.cachedPaused))) && (this.timeline))){ if (_arg1){ this.cachedPauseTime = this.timeline.rawTime; } else { this.cachedStartTime = (this.cachedStartTime + (this.timeline.rawTime - this.cachedPauseTime)); this.cachedPauseTime = NaN; setDirtyCache(false); }; this.cachedPaused = _arg1; this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); }; if (((!(_arg1)) && (this.gc))){ this.setEnabled(true, false); }; } } }//package com.greensock.core
Section 99
//TweenLite (com.greensock.TweenLite) package com.greensock { import flash.events.*; import com.greensock.core.*; import flash.display.*; import flash.utils.*; import com.greensock.plugins.*; public class TweenLite extends TweenCore { public var target:Object; public var propTweenLookup:Object; public var ratio:Number;// = 0 public var cachedPT1:PropTween; protected var _ease:Function; protected var _overwrite:int; protected var _overwrittenProps:Object; protected var _hasPlugins:Boolean; protected var _notifyPluginsOfEnabled:Boolean; public static const version:Number = 11.698; public static var plugins:Object = {}; public static var fastEaseLookup:Dictionary = new Dictionary(false); public static var onPluginEvent:Function; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; public static var defaultEase:Function = TweenLite.easeOut; public static var overwriteManager:Object; public static var rootFrame:Number; public static var rootTimeline:SimpleTimeline; public static var rootFramesTimeline:SimpleTimeline; public static var masterList:Dictionary = new Dictionary(false); private static var _shape:Shape = new Shape(); protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onStart:1, onStartParams:1, onInit:1, onInitParams:1, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1, reversed:1}; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ var _local5:TweenLite; super(_arg2, _arg3); if (_arg1 == null){ throw (new Error("Cannot tween a null object.")); }; this.target = _arg1; if ((((this.target is TweenCore)) && (this.vars.timeScale))){ this.cachedTimeScale = 1; }; propTweenLookup = {}; _ease = defaultEase; _overwrite = (((!((Number(_arg3.overwrite) > -1))) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); var _local4:Array = masterList[_arg1]; if (!_local4){ masterList[_arg1] = [this]; } else { if (_overwrite == 1){ for each (_local5 in _local4) { if (!_local5.gc){ _local5.setEnabled(false, false); }; }; masterList[_arg1] = [this]; } else { _local4[_local4.length] = this; }; }; if (((this.active) || (this.vars.immediateRender))){ renderTime(0, false, true); }; } protected function init():void{ var _local1:String; var _local2:int; var _local3:*; var _local4:Boolean; var _local5:Array; var _local6:PropTween; if (this.vars.onInit){ this.vars.onInit.apply(null, this.vars.onInitParams); }; if (typeof(this.vars.ease) == "function"){ _ease = this.vars.ease; }; if (this.vars.easeParams){ this.vars.proxiedEase = _ease; _ease = easeProxy; }; this.cachedPT1 = null; this.propTweenLookup = {}; for (_local1 in this.vars) { if ((((_local1 in _reservedProps)) && (!((((_local1 == "timeScale")) && ((this.target is TweenCore))))))){ } else { if ((((_local1 in plugins)) && (new ((plugins[_local1] as Class)).onInitTween(this.target, this.vars[_local1], this)))){ this.cachedPT1 = new PropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1); if (this.cachedPT1.name == "_MULTIPLE_"){ _local2 = _local3.overwriteProps.length; while (--_local2 > -1) { this.propTweenLookup[_local3.overwriteProps[_local2]] = this.cachedPT1; }; } else { this.propTweenLookup[this.cachedPT1.name] = this.cachedPT1; }; if (_local3.priority){ this.cachedPT1.priority = _local3.priority; _local4 = true; }; if (((_local3.onDisable) || (_local3.onEnable))){ _notifyPluginsOfEnabled = true; }; _hasPlugins = true; } else { this.cachedPT1 = new PropTween(this.target, _local1, Number(this.target[_local1]), ((typeof(this.vars[_local1]))=="number") ? (Number(this.vars[_local1]) - this.target[_local1]) : Number(this.vars[_local1]), _local1, false, this.cachedPT1); this.propTweenLookup[_local1] = this.cachedPT1; }; }; }; if (_local4){ onPluginEvent("onInitAllProps", this); }; if (this.vars.runBackwards){ _local6 = this.cachedPT1; while (_local6) { _local6.start = (_local6.start + _local6.change); _local6.change = -(_local6.change); _local6 = _local6.nextNode; }; }; _hasUpdate = Boolean(!((this.vars.onUpdate == null))); if (_overwrittenProps){ killVars(_overwrittenProps); if (this.cachedPT1 == null){ this.setEnabled(false, false); }; }; if ((((((((_overwrite > 1)) && (this.cachedPT1))) && (masterList[this.target]))) && ((_local5.length > 1)))){ if (overwriteManager.manageOverwrites(this, this.propTweenLookup, _local5, _overwrite)){ init(); }; }; this.initted = true; } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local4:Boolean; var _local5:Number = this.cachedTime; if (_arg1 >= this.cachedDuration){ this.cachedTotalTime = (this.cachedTime = this.cachedDuration); this.ratio = 1; _local4 = !(this.cachedReversed); if (this.cachedDuration == 0){ if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){ _arg3 = true; }; _rawPrevTime = _arg1; }; } else { if (_arg1 <= 0){ this.cachedTotalTime = (this.cachedTime = (this.ratio = 0)); if (_arg1 < 0){ this.active = false; if (this.cachedDuration == 0){ if (_rawPrevTime >= 0){ _arg3 = true; _local4 = (_rawPrevTime > 0); }; _rawPrevTime = _arg1; }; }; if (((this.cachedReversed) && (!((_local5 == 0))))){ _local4 = true; }; } else { this.cachedTotalTime = (this.cachedTime = _arg1); this.ratio = _ease(_arg1, 0, 1, this.cachedDuration); }; }; if ((((this.cachedTime == _local5)) && (!(_arg3)))){ return; }; if (!this.initted){ init(); if (((!(_local4)) && (this.cachedTime))){ this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration); }; }; if (((!(this.active)) && (!(this.cachedPaused)))){ this.active = true; }; if ((((((((_local5 == 0)) && (this.vars.onStart))) && (((!((this.cachedTime == 0))) || ((this.cachedDuration == 0)))))) && (!(_arg2)))){ this.vars.onStart.apply(null, this.vars.onStartParams); }; var _local6:PropTween = this.cachedPT1; while (_local6) { _local6.target[_local6.property] = (_local6.start + (this.ratio * _local6.change)); _local6 = _local6.nextNode; }; if (((_hasUpdate) && (!(_arg2)))){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (((_local4) && (!(this.gc)))){ if (((_hasPlugins) && (this.cachedPT1))){ onPluginEvent("onComplete", this); }; complete(true, _arg2); }; } public function killVars(_arg1:Object, _arg2:Boolean=true):Boolean{ var _local3:String; var _local4:PropTween; var _local5:Boolean; if (_overwrittenProps == null){ _overwrittenProps = {}; }; for (_local3 in _arg1) { if ((_local3 in propTweenLookup)){ _local4 = propTweenLookup[_local3]; if (((_local4.isPlugin) && ((_local4.name == "_MULTIPLE_")))){ _local4.target.killProps(_arg1); if (_local4.target.overwriteProps.length == 0){ _local4.name = ""; }; if (((!((_local3 == _local4.target.propName))) || ((_local4.name == "")))){ delete propTweenLookup[_local3]; }; }; if (_local4.name != "_MULTIPLE_"){ if (_local4.nextNode){ _local4.nextNode.prevNode = _local4.prevNode; }; if (_local4.prevNode){ _local4.prevNode.nextNode = _local4.nextNode; } else { if (this.cachedPT1 == _local4){ this.cachedPT1 = _local4.nextNode; }; }; if (((_local4.isPlugin) && (_local4.target.onDisable))){ _local4.target.onDisable(); if (_local4.target.activeDisable){ _local5 = true; }; }; delete propTweenLookup[_local3]; }; }; if (((_arg2) && (!((_arg1 == _overwrittenProps))))){ _overwrittenProps[_local3] = 1; }; }; return (_local5); } override public function invalidate():void{ if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ onPluginEvent("onDisable", this); }; this.cachedPT1 = null; _overwrittenProps = null; _hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false))); this.propTweenLookup = {}; } override public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ var _local3:Array; if (_arg1){ _local3 = TweenLite.masterList[this.target]; if (!_local3){ TweenLite.masterList[this.target] = [this]; } else { if (_local3.indexOf(this) == -1){ _local3[_local3.length] = this; }; }; }; super.setEnabled(_arg1, _arg2); if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ return (onPluginEvent((_arg1) ? "onEnable" : "onDisable", this)); }; return (false); } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } public static function initClass():void{ rootFrame = 0; rootTimeline = new SimpleTimeline(null); rootFramesTimeline = new SimpleTimeline(null); rootTimeline.cachedStartTime = (getTimer() * 0.001); rootFramesTimeline.cachedStartTime = rootFrame; rootTimeline.autoRemoveChildren = true; rootFramesTimeline.autoRemoveChildren = true; _shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ if (_arg3.isGSVars){ _arg3 = _arg3.vars; }; _arg3.runBackwards = true; if (!("immediateRender" in _arg3)){ _arg3.immediateRender = true; }; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, immediateRender:false, useFrames:_arg4, overwrite:0})); } protected static function updateAll(_arg1:Event=null):void{ var _local2:Dictionary; var _local3:Object; var _local4:Array; var _local5:int; rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.cachedStartTime) * rootTimeline.cachedTimeScale), false, false); rootFrame = (rootFrame + 1); rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.cachedStartTime) * rootFramesTimeline.cachedTimeScale), false, false); if (!(rootFrame % 60)){ _local2 = masterList; for (_local3 in _local2) { _local4 = _local2[_local3]; _local5 = _local4.length; while (--_local5 > -1) { if (TweenLite(_local4[_local5]).gc){ _local4.splice(_local5, 1); }; }; if (_local4.length == 0){ delete _local2[_local3]; }; }; }; } public static function killTweensOf(_arg1:Object, _arg2:Boolean=false, _arg3:Object=null):void{ var _local4:Array; var _local5:int; var _local6:TweenLite; if ((_arg1 in masterList)){ _local4 = masterList[_arg1]; _local5 = _local4.length; while (--_local5 > -1) { _local6 = _local4[_local5]; if (!_local6.gc){ if (_arg2){ _local6.complete(false, false); }; if (_arg3 != null){ _local6.killVars(_arg3); }; if ((((_arg3 == null)) || ((((_local6.cachedPT1 == null)) && (_local6.initted))))){ _local6.setEnabled(false, false); }; }; }; if (_arg3 == null){ delete masterList[_arg1]; }; }; } protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (1 - (_arg1 / _arg4)); return ((1 - (_arg1 * _arg1))); } } }//package com.greensock
Section 100
//AnimateCompleteMC (Fla.AnimateCompleteMC) package Fla { import flash.display.*; public dynamic class AnimateCompleteMC extends MovieClip { public var board:MovieClip; public function AnimateCompleteMC(){ addFrameScript(17, frame66); } private function frame66():void{ stop(); } } }//package Fla
Section 101
//ArrowMC (Fla.ArrowMC) package Fla { import flash.display.*; public class ArrowMC extends MovieClip { public function ArrowMC(){ addFrameScript(0, frame1, 19, frame20); } private function frame1():void{ stop(); } private function frame20():void{ stop(); } } }//package Fla
Section 102
//BeamPirate1 (Fla.BeamPirate1) package Fla { import flash.display.*; public class BeamPirate1 extends MovieClip { public function BeamPirate1(){ addFrameScript(57, frame1); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 103
//BeamPirate2 (Fla.BeamPirate2) package Fla { import flash.display.*; public class BeamPirate2 extends MovieClip { public function BeamPirate2(){ addFrameScript(57, frame1); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 104
//BeamPirate3 (Fla.BeamPirate3) package Fla { import flash.display.*; public class BeamPirate3 extends MovieClip { public function BeamPirate3(){ addFrameScript(57, frame1); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 105
//BeamPirate4 (Fla.BeamPirate4) package Fla { import flash.display.*; public class BeamPirate4 extends MovieClip { public function BeamPirate4(){ addFrameScript(57, frame1); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 106
//BeamPirate5 (Fla.BeamPirate5) package Fla { import flash.display.*; public class BeamPirate5 extends MovieClip { public function BeamPirate5(){ addFrameScript(57, frame1); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 107
//BombaTleetMC (Fla.BombaTleetMC) package Fla { import flash.display.*; public class BombaTleetMC extends MovieClip { public function BombaTleetMC(){ addFrameScript(59, frame60); } private function frame60():void{ stop(); } } }//package Fla
Section 108
//BombaVzryvMC (Fla.BombaVzryvMC) package Fla { import flash.display.*; public class BombaVzryvMC extends MovieClip { public function BombaVzryvMC(){ addFrameScript(14, frame15); } private function frame15():void{ stop(); } } }//package Fla
Section 109
//BombMC (Fla.BombMC) package Fla { import flash.display.*; public class BombMC extends MovieClip { public var bombSizeMC:MovieClip; public function BombMC(){ addFrameScript(0, frame1, 1, frame2); } private function frame1():void{ stop(); } private function frame2():void{ stop(); } } }//package Fla
Section 110
//Bottle1MC (Fla.Bottle1MC) package Fla { import flash.display.*; public class Bottle1MC extends MovieClip { public function Bottle1MC(){ addFrameScript(0, frame1, 8, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 111
//Bottle2MC (Fla.Bottle2MC) package Fla { import flash.display.*; public class Bottle2MC extends MovieClip { public function Bottle2MC(){ addFrameScript(0, frame1, 9, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 112
//Bottle3MC (Fla.Bottle3MC) package Fla { import flash.display.*; public class Bottle3MC extends MovieClip { public function Bottle3MC(){ addFrameScript(0, frame1, 9, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 113
//Bottle4MC (Fla.Bottle4MC) package Fla { import flash.display.*; public class Bottle4MC extends MovieClip { public function Bottle4MC(){ addFrameScript(0, frame1, 9, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 114
//Bottle5MC (Fla.Bottle5MC) package Fla { import flash.display.*; public class Bottle5MC extends MovieClip { public function Bottle5MC(){ addFrameScript(0, frame1, 9, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 115
//BrevnoMC (Fla.BrevnoMC) package Fla { import flash.display.*; public class BrevnoMC extends MovieClip { public function BrevnoMC(){ this.visible = false; } } }//package Fla
Section 116
//BulletMC (Fla.BulletMC) package Fla { import flash.display.*; public class BulletMC extends MovieClip { public function BulletMC(){ addFrameScript(0, frame1, 8, frame8); } private function frame1():void{ stop(); } private function frame8():void{ stop(); } } }//package Fla
Section 117
//ChainBrakeMC (Fla.ChainBrakeMC) package Fla { import flash.display.*; public class ChainBrakeMC extends MovieClip { public function ChainBrakeMC(){ addFrameScript(2, frame5); } private function frame5():void{ stop(); } } }//package Fla
Section 118
//CompleteOutOfAmmoMC (Fla.CompleteOutOfAmmoMC) package Fla { import flash.display.*; public dynamic class CompleteOutOfAmmoMC extends MovieClip { public var board:MovieClip; public function CompleteOutOfAmmoMC(){ addFrameScript(17, frame66); } private function frame66():void{ stop(); } } }//package Fla
Section 119
//CyfraAnimatedMC (Fla.CyfraAnimatedMC) package Fla { import flash.display.*; public class CyfraAnimatedMC extends MovieClip { public function CyfraAnimatedMC(){ addFrameScript(19, stopFunc); } private function stopFunc():void{ stop(); } } }//package Fla
Section 120
//DragonMC (Fla.DragonMC) package Fla { import flash.display.*; public class DragonMC extends MovieClip { public var _5:MovieClip; public function DragonMC(){ addFrameScript(0, this.frame1); } private function frame1():void{ } } }//package Fla
Section 121
//DynIcePlatformMC (Fla.DynIcePlatformMC) package Fla { import flash.display.*; public class DynIcePlatformMC extends MovieClip { public function DynIcePlatformMC(){ addFrameScript(0, frame1, 2, frame3); } private function frame1():void{ stop(); } private function frame3():void{ stop(); } } }//package Fla
Section 122
//ExplosionShort (Fla.ExplosionShort) package Fla { import flash.display.*; public class ExplosionShort extends MovieClip { public function ExplosionShort(){ addFrameScript(11, frame12); } private function frame12():void{ stop(); } } }//package Fla
Section 123
//EyesAngry (Fla.EyesAngry) package Fla { import flash.display.*; public dynamic class EyesAngry extends MovieClip { public function EyesAngry(){ addFrameScript(68, this.frame69); } private function frame69():void{ stop(); } } }//package Fla
Section 124
//EyesBlink (Fla.EyesBlink) package Fla { import flash.display.*; public dynamic class EyesBlink extends MovieClip { public function EyesBlink(){ addFrameScript(11, this.frame12); } private function frame12():void{ stop(); } } }//package Fla
Section 125
//EyesCrazy (Fla.EyesCrazy) package Fla { import flash.display.*; public dynamic class EyesCrazy extends MovieClip { public function EyesCrazy(){ addFrameScript(83, this.frame84); } private function frame84():void{ stop(); } } }//package Fla
Section 126
//EyesDown (Fla.EyesDown) package Fla { import flash.display.*; public dynamic class EyesDown extends MovieClip { public function EyesDown(){ addFrameScript(87, this.frame88); } private function frame88():void{ stop(); } } }//package Fla
Section 127
//EyesDownUp (Fla.EyesDownUp) package Fla { import flash.display.*; public dynamic class EyesDownUp extends MovieClip { public function EyesDownUp(){ addFrameScript(69, this.frame70); } private function frame70():void{ stop(); } } }//package Fla
Section 128
//EyesHeadTrim (Fla.EyesHeadTrim) package Fla { import flash.display.*; public dynamic class EyesHeadTrim extends MovieClip { public function EyesHeadTrim(){ addFrameScript(26, this.frame27); } private function frame27():void{ stop(); } } }//package Fla
Section 129
//EyesHypno (Fla.EyesHypno) package Fla { import flash.display.*; public dynamic class EyesHypno extends MovieClip { public function EyesHypno(){ addFrameScript(74, this.frame75); } private function frame75():void{ stop(); } } }//package Fla
Section 130
//EyesLeftRight (Fla.EyesLeftRight) package Fla { import flash.display.*; public dynamic class EyesLeftRight extends MovieClip { public function EyesLeftRight(){ addFrameScript(55, this.frame56); } private function frame75():void{ stop(); } } }//package Fla
Section 131
//GoalObjectMC (Fla.GoalObjectMC) package Fla { import flash.display.*; public class GoalObjectMC extends MovieClip { public function GoalObjectMC(){ addFrameScript(0, stopFunc, 19, stopFunc); } private function stopFunc():void{ stop(); } } }//package Fla
Section 132
//GoalObjectShineMC (Fla.GoalObjectShineMC) package Fla { import flash.display.*; public dynamic class GoalObjectShineMC extends MovieClip { public function GoalObjectShineMC(){ this.mouseEnabled = false; this.mouseChildren = false; addFrameScript(15, frame15); } private function frame15():void{ this.stop(); } } }//package Fla
Section 133
//GoalSensorMC (Fla.GoalSensorMC) package Fla { import flash.display.*; public class GoalSensorMC extends MovieClip { public function GoalSensorMC(){ this.visible = false; } } }//package Fla
Section 134
//HandUnderGroundMC (Fla.HandUnderGroundMC) package Fla { import flash.display.*; public class HandUnderGroundMC extends MovieClip { public function HandUnderGroundMC(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 135
//HandWithGun (Fla.HandWithGun) package Fla { import flash.display.*; public class HandWithGun extends MovieClip { public var bulletsBositionMC:MovieClip; public function HandWithGun(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 136
//IceExplosion (Fla.IceExplosion) package Fla { import flash.display.*; public class IceExplosion extends MovieClip { public function IceExplosion(){ addFrameScript(11, frame12); } private function frame12():void{ stop(); } } }//package Fla
Section 137
//IcePlatformMC (Fla.IcePlatformMC) package Fla { import flash.display.*; public class IcePlatformMC extends MovieClip { public function IcePlatformMC(){ addFrameScript(0, frame1, 2, frame3); } private function frame1():void{ stop(); } private function frame3():void{ stop(); } } }//package Fla
Section 138
//MaskLvlMC (Fla.MaskLvlMC) package Fla { import flash.display.*; public dynamic class MaskLvlMC extends MovieClip { public function MaskLvlMC(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package Fla
Section 139
//MedalsForLvlMC (Fla.MedalsForLvlMC) package Fla { import flash.display.*; public class MedalsForLvlMC extends MovieClip { public function MedalsForLvlMC(){ addFrameScript(0, stopFrame, 37, stopFrame, 71, stopFrame, 104, stopFrame); } private function stopFrame():void{ stop(); } } }//package Fla
Section 140
//MedalsForLvlsBtn (Fla.MedalsForLvlsBtn) package Fla { import flash.display.*; public class MedalsForLvlsBtn extends MovieClip { public function MedalsForLvlsBtn(){ gotoAndStop(4); } private function stopFrame():void{ stop(); } } }//package Fla
Section 141
//MonsterMC (Fla.MonsterMC) package Fla { import flash.events.*; import flash.display.*; public class MonsterMC extends MovieClip { private var changeAnimTimer:uint; private var timePerFrames:uint;// = 100 public function MonsterMC(){ changeAnimTimer = timePerFrames; addFrameScript(0, this.frame1, 1, this.frame2); changeAnim(); } private function timerTick(_arg1:Event):void{ changeAnimTimer--; if ((((changeAnimTimer == 0)) && (!((currentFrame == 10))))){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, timerTick); changeAnim(); }; } private function changeAnim():void{ var _local1:int; changeAnimTimer = timePerFrames; _local1 = Math.ceil((Math.random() * 8)); gotoAndStop((_local1 + 1)); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, timerTick); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package Fla
Section 142
//MusicBtnMC (Fla.MusicBtnMC) package Fla { import flash.display.*; public class MusicBtnMC extends MovieClip { public function MusicBtnMC(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 143
//MusicBtnMC2 (Fla.MusicBtnMC2) package Fla { import flash.display.*; public class MusicBtnMC2 extends MovieClip { public function MusicBtnMC2(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 144
//Numbers (Fla.Numbers) package Fla { import flash.display.*; public class Numbers extends MovieClip { public function Numbers(){ mouseChildren = false; mouseEnabled = false; } } }//package Fla
Section 145
//platform_break (Fla.platform_break) package Fla { import flash.display.*; public dynamic class platform_break extends MovieClip { public function platform_break(){ addFrameScript(4, this.frame6); } private function frame6():void{ stop(); } } }//package Fla
Section 146
//PlayerZombieMC (Fla.PlayerZombieMC) package Fla { import flash.display.*; public class PlayerZombieMC extends MovieClip { public function PlayerZombieMC(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 147
//RevoluteJointReverseMotorMC (Fla.RevoluteJointReverseMotorMC) package Fla { import flash.display.*; public class RevoluteJointReverseMotorMC extends MovieClip { public function RevoluteJointReverseMotorMC(){ visible = false; } } }//package Fla
Section 148
//sensorOfHandMC (Fla.sensorOfHandMC) package Fla { import flash.display.*; public class sensorOfHandMC extends MovieClip { public function sensorOfHandMC(){ visible = false; } } }//package Fla
Section 149
//ShipSensorMC (Fla.ShipSensorMC) package Fla { import flash.display.*; public class ShipSensorMC extends MovieClip { public function ShipSensorMC(){ this.visible = false; } } }//package Fla
Section 150
//SizeMeterMC (Fla.SizeMeterMC) package Fla { import flash.display.*; public class SizeMeterMC extends MovieClip { } }//package Fla
Section 151
//SkullBallMC (Fla.SkullBallMC) package Fla { import flash.display.*; public class SkullBallMC extends MovieClip { public function SkullBallMC(){ addFrameScript(30, frame31, 41, frame42); } private function frame31():void{ stop(); } private function frame42():void{ stop(); } } }//package Fla
Section 152
//SkullForShoot (Fla.SkullForShoot) package Fla { import flash.display.*; public class SkullForShoot extends MovieClip { public function SkullForShoot(){ addFrameScript(0, stopFunc, 9, stopFunc); } private function stopFunc():void{ stop(); } } }//package Fla
Section 153
//SlowTimeSensorMC (Fla.SlowTimeSensorMC) package Fla { import flash.display.*; public class SlowTimeSensorMC extends MovieClip { public function SlowTimeSensorMC(){ this.visible = false; } } }//package Fla
Section 154
//SoundBtn (Fla.SoundBtn) package Fla { import flash.display.*; public dynamic class SoundBtn extends MovieClip { public function SoundBtn(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 155
//SoundBtn2 (Fla.SoundBtn2) package Fla { import flash.display.*; public dynamic class SoundBtn2 extends MovieClip { public function SoundBtn2(){ addFrameScript(0, frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 156
//SpikePlantMC (Fla.SpikePlantMC) package Fla { import flash.display.*; public class SpikePlantMC extends MovieClip { public function SpikePlantMC(){ addFrameScript(0, frame1, 4, frame5); } private function frame1():void{ stop(); } private function frame5():void{ stop(); } } }//package Fla
Section 157
//TambourineMC (Fla.TambourineMC) package Fla { import flash.display.*; public class TambourineMC extends MovieClip { public function TambourineMC(){ addFrameScript(0, this.frame1); } private function frame1():void{ stop(); } } }//package Fla
Section 158
//TestBombMC (Fla.TestBombMC) package Fla { import flash.display.*; public class TestBombMC extends MovieClip { public function TestBombMC(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package Fla
Section 159
//TntBarrelMC (Fla.TntBarrelMC) package Fla { import flash.display.*; public class TntBarrelMC extends MovieClip { public function TntBarrelMC(){ addFrameScript(0, frame1, 1, frame2); } private function frame1():void{ stop(); } private function frame2():void{ stop(); } } }//package Fla
Section 160
//RevoluteJoint (Joints.RevoluteJoint) package Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import flash.display.*; public class RevoluteJoint extends MovieClip { private var mechanism:String; private var _myMotorJoint:b2RevoluteJoint; private var speed:Number; private var _myRevoluteJoint:b2RevoluteJoint;// = null private var _myRevoluteJointDef:b2RevoluteJointDef; private var myTimerStartJoint:int;// = 67 public function RevoluteJoint(_arg1:MovieClip, _arg2:b2World, _arg3:String, _arg4:String="0"){ var _local5:b2Body; var _local6:b2Body; var _local7:int; var _local8:b2Fixture; var _local9:b2RevoluteJoint; var _local10:b2RevoluteJoint; var _local11:Number = _arg1.x; var _local12:Number = _arg1.y; speed = Number(_arg4); var _local13 = 1; var _local14:Array = new Array(); var _local15:b2Body = _arg2.GetBodyList(); while (_local15) { if (_local15.GetFixtureList()){ if (_local15.GetFixtureList().TestPoint(new b2Vec2((_local11 / GlobalStorage.physScale), (_local12 / GlobalStorage.physScale)))){ _local14.push(_local15); }; }; _local15 = _local15.GetNext(); }; while (_local7 < _local14.length) { _local7++; }; var _local16:b2Body = _arg2.GetBodyList(); while (_local16) { if (_local16.GetFixtureList()){ _local8 = _local16.GetFixtureList(); while (_local8) { if (_local8.TestPoint(new b2Vec2((_local11 / GlobalStorage.physScale), (_local12 / GlobalStorage.physScale)))){ if (_local13 == 1){ _local5 = _local16; _local13++; break; } else { _local6 = _local16; break; }; }; _local8 = _local8.GetNext(); }; }; _local16 = _local16.GetNext(); }; if (!_local6){ _local6 = _arg2.GetGroundBody(); }; if (_local5){ }; if (!_local6){ trace("hm... no bodies..."); return; }; if (!_local6.GetUserData()){ _local6 = _local5; _local5 = _arg2.GetGroundBody(); }; _myRevoluteJointDef = new b2RevoluteJointDef(); _myRevoluteJointDef.Initialize(_local5, _local6, new b2Vec2((_local11 / GlobalStorage.physScale), (_local12 / GlobalStorage.physScale))); if (_arg3 == "static"){ _myRevoluteJointDef.enableLimit = true; _myRevoluteJointDef.lowerAngle = 0; _myRevoluteJointDef.upperAngle = 0; }; if (_arg3 == "motor"){ _myRevoluteJointDef.enableLimit = false; _myRevoluteJointDef.enableMotor = true; _myRevoluteJointDef.motorSpeed = speed; _myRevoluteJointDef.maxMotorTorque = 10000000000; _myMotorJoint = (_arg2.CreateJoint(_myRevoluteJointDef) as b2RevoluteJoint); }; if (this.mechanism != "catapult"){ _myRevoluteJointDef.enableMotor = true; _myRevoluteJointDef.enableMotor = false; _myRevoluteJointDef.motorSpeed = -1; _myRevoluteJointDef.maxMotorTorque = 10; _myRevoluteJoint = (_arg2.CreateJoint(_myRevoluteJointDef) as b2RevoluteJoint); }; if (_arg3 != "dynamic"){ }; if (_arg3 == "static"){ _local10 = (_arg2.CreateJoint(_myRevoluteJointDef) as b2RevoluteJoint); }; } } }//package Joints
Section 161
//Base64Decoder (mochi.as3.Base64Decoder) package mochi.as3 { import flash.utils.*; public class Base64Decoder { private var count:int;// = 0 private var data:ByteArray; private var filled:int;// = 0 private var work:Array; private static const ESCAPE_CHAR_CODE:Number = 61; private static const inverse:Array = [64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]; public function Base64Decoder(){ work = [0, 0, 0, 0]; super(); data = new ByteArray(); } public function decode(_arg1:String):void{ var _local3:Number; var _local2:uint; for (;_local2 < _arg1.length;_local2++) { _local3 = _arg1.charCodeAt(_local2); if (_local3 == ESCAPE_CHAR_CODE){ var _local4 = count++; work[_local4] = -1; } else { if (inverse[_local3] != 64){ _local4 = count++; work[_local4] = inverse[_local3]; } else { continue; }; }; if (count == 4){ count = 0; data.writeByte(((work[0] << 2) | ((work[1] & 0xFF) >> 4))); filled++; if (work[2] == -1){ break; }; data.writeByte(((work[1] << 4) | ((work[2] & 0xFF) >> 2))); filled++; if (work[3] == -1){ break; }; data.writeByte(((work[2] << 6) | work[3])); filled++; }; }; } public function drain():ByteArray{ var _local1:ByteArray = new ByteArray(); var _local2:uint = data.position; data.position = 0; _local1.writeBytes(data, 0, data.length); data.position = _local2; _local1.position = 0; filled = 0; return (_local1); } public function flush():ByteArray{ var _local1:String; if (count > 0){ _local1 = (("partialBlockDropped [" + count) + "]"); throw (new Error(_local1)); }; return (drain()); } public function reset():void{ data = new ByteArray(); count = 0; filled = 0; } public function toByteArray():ByteArray{ var _local1:ByteArray = flush(); reset(); return (_local1); } } }//package mochi.as3
Section 162
//Base64Encoder (mochi.as3.Base64Encoder) package mochi.as3 { import flash.utils.*; public class Base64Encoder { public var insertNewLines:Boolean;// = true private var _buffers:Array; private var _count:uint; private var _line:uint; private var _work:Array; public static const CHARSET_UTF_8:String = "UTF-8"; public static const MAX_BUFFER_SIZE:uint = 32767; private static const ESCAPE_CHAR_CODE:Number = 61; private static const ALPHABET_CHAR_CODES:Array = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47]; public static var newLine:int = 10; public function Base64Encoder(){ _work = [0, 0, 0]; super(); reset(); } public function drain():String{ var _local3:Array; var _local1 = ""; var _local2:uint; while (_local2 < _buffers.length) { _local3 = (_buffers[_local2] as Array); _local1 = (_local1 + String.fromCharCode.apply(null, _local3)); _local2++; }; _buffers = []; _buffers.push([]); return (_local1); } public function encode(_arg1:String, _arg2:uint=0, _arg3:uint=0):void{ if (_arg3 == 0){ _arg3 = _arg1.length; }; var _local4:uint = _arg2; var _local5:uint = (_arg2 + _arg3); if (_local5 > _arg1.length){ _local5 = _arg1.length; }; while (_local4 < _local5) { _work[_count] = _arg1.charCodeAt(_local4); _count++; if ((((_count == _work.length)) || (((_local5 - _local4) == 1)))){ encodeBlock(); _count = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; }; _local4++; }; } public function encodeUTFBytes(_arg1:String):void{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); _local2.position = 0; encodeBytes(_local2); } public function encodeBytes(_arg1:ByteArray, _arg2:uint=0, _arg3:uint=0):void{ if (_arg3 == 0){ _arg3 = _arg1.length; }; var _local4:uint = _arg1.position; _arg1.position = _arg2; var _local5:uint = _arg2; var _local6:uint = (_arg2 + _arg3); if (_local6 > _arg1.length){ _local6 = _arg1.length; }; while (_local5 < _local6) { _work[_count] = _arg1[_local5]; _count++; if ((((_count == _work.length)) || (((_local6 - _local5) == 1)))){ encodeBlock(); _count = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; }; _local5++; }; _arg1.position = _local4; } public function flush():String{ if (_count > 0){ encodeBlock(); }; var _local1:String = drain(); reset(); return (_local1); } public function reset():void{ _buffers = []; _buffers.push([]); _count = 0; _line = 0; _work[0] = 0; _work[1] = 0; _work[2] = 0; } public function toString():String{ return (flush()); } private function encodeBlock():void{ var _local1:Array = (_buffers[(_buffers.length - 1)] as Array); if (_local1.length >= MAX_BUFFER_SIZE){ _local1 = []; _buffers.push(_local1); }; _local1.push(ALPHABET_CHAR_CODES[((_work[0] & 0xFF) >> 2)]); _local1.push(ALPHABET_CHAR_CODES[(((_work[0] & 3) << 4) | ((_work[1] & 240) >> 4))]); if (_count > 1){ _local1.push(ALPHABET_CHAR_CODES[(((_work[1] & 15) << 2) | ((_work[2] & 192) >> 6))]); } else { _local1.push(ESCAPE_CHAR_CODE); }; if (_count > 2){ _local1.push(ALPHABET_CHAR_CODES[(_work[2] & 63)]); } else { _local1.push(ESCAPE_CHAR_CODE); }; if (insertNewLines){ if ((_line = (_line + 4)) == 76){ _local1.push(newLine); _line = 0; }; }; } } }//package mochi.as3
Section 163
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_SHOW:String = "StoreShow"; public static const STORE_HIDE:String = "StoreHide"; public static const ITEM_OWNED:String = "ItemOwned"; public static const ITEM_NEW:String = "ItemNew"; public static const STORE_ITEMS:String = "StoreItems"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IOError"; public static const NO_USER:String = "NoUser"; public static var _inventory:MochiInventory; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function get inventory():MochiInventory{ return (_inventory); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showStore(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } 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.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } 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.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function requestFunding(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestFunding", _arg1); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _inventory = new MochiInventory(); }); addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _inventory = null; }); } }//package mochi.as3
Section 164
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Fragment:Number; private var Sibling:MochiDigits; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function get value():Number{ return (Number(this.toString())); } public function set value(_arg1:Number):void{ setValue(_arg1); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String = _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 reencode():void{ var _local1:uint = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } } }//package mochi.as3
Section 165
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_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 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); }; } } }//package mochi.as3
Section 166
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { public class MochiEvents { public static const ACHIEVEMENTS_OWNED:String = "AchievementOwned"; public static const ACHIEVEMENT_NEW:String = "AchievementReceived"; public static const GAME_ACHIEVEMENTS:String = "GameAchievements"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IOError"; public static const IO_PENDING:String = "IOPending"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_CENTER:String = "ALIGN_C"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const FORMAT_SHORT:String = "ShortForm"; public static const FORMAT_LONG:String = "LongForm"; public static const FORMAT_NONE:String = "NoForm"; private static var gameStart:Number; private static var levelStart:Number; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function getVersion():String{ return (MochiServices.getVersion()); } public static function getAchievements(_arg1:Object=null):void{ MochiServices.send("events_getAchievements", _arg1); } public static function unlockAchievement(_arg1:Object):void{ MochiServices.send("events_unlockAchievement", _arg1); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function showAwards(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.stayOnTop(); MochiServices.send("events_showAwards", _arg1); } public static function setNotifications(_arg1:Object):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("events_setNotifications", _arg1, null, null); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startPlay(_arg1:String="gameplay"):void{ MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null); } public static function endPlay():void{ MochiServices.send("events_clearRoundID", null, null, null); } public static function trackEvent(_arg1:String, _arg2=null):void{ MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null); } } }//package mochi.as3
Section 167
//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _consumableProperties:Object; private var _syncPending:Boolean; private var _outstandingID:Number; private var _syncID:Number; private var _names:Array; private var _storeSync:Object; private static const CONSUMER_KEY:String = "MochiConsumables"; private static const KEY_SALT:String = " syncMaint"; public static const READY:String = "InvReady"; public static const WRITTEN:String = "InvWritten"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; public static const VALUE_ERROR:String = "InvValueError"; public static const NOT_READY:String = "InvNotReady"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned); MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut); _storeSync = new Object(); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiSocial.loggedIn){ loggedIn(); } else { loggedOut(); }; } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } private function newItems(_arg1:Object):void{ if (!this[(_arg1.id + KEY_SALT)]){ this[(_arg1.id + KEY_SALT)] = 0; }; if (!this[_arg1.id]){ this[_arg1.id] = 0; }; this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count); this[_arg1.id] = (this[_arg1.id] + _arg1.count); if (((_arg1.privateProperties) && (_arg1.privateProperties.consumable))){ if (!this[_arg1.privateProperties.tag]){ this[_arg1.privateProperties.tag] = 0; }; this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count)); }; } private function itemOwned(_arg1:Object):void{ _storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count}; } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; var _local3:Number; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; for (_local2 in _storeSync) { _local3 = _storeSync[_local2].count; if (_consumableProperties[(_local2 + KEY_SALT)]){ _local3 = (_local3 - _consumableProperties[(_local2 + KEY_SALT)].value); }; if (_local3 == 0){ } else { newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties}); }; }; triggerEvent(READY, {}); } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } private function sync(_arg1:Event=null):void{ var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; var _local2:Object = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 168
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { public static var onCloseHandler:Object; public static var onErrorHandler:Object; private static var boardID:String; 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(); trace("On close"); GUI.refreshLevelsScreen(); } public static function setBoardID(_arg1:String):void{ MochiServices.warnID(_arg1, true); MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } 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; trace("On close"); GUI.refreshLevelsScreen(); } 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 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 requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; var _local2:Object = {}; 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); } } }//package mochi.as3
Section 169
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.events.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiServices { public static const CONNECTED:String = "onConnected"; private static var _id:String; private static var _container:Object; private static var _clip:MovieClip; private static var _loader:Loader; private static var _timer:Timer; private static var _preserved:Object; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; private static var _services:String = "services.swf"; private static var _mochiLC:String = "MochiLC.swf"; private static var _swfVersion:String; private static var _listenChannelName:String = "__ms_"; private static var _sendChannel:LocalConnection; private static var _sendChannelName:String; private static var _connecting:Boolean = false; private static var _connected:Boolean = false; public static var netup:Boolean = true; public static var netupAttempted:Boolean = false; public static var onError:Object; public static var widget:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _queue:Array; private static var _nextCallbackID:Number; private static var _callbacks:Object; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static function get id():String{ return (_id); } public static function get clip():Object{ return (_container); } public static function get childClip():Object{ return (_clip); } public static function getVersion():String{ return ("4.1.2 as3"); } 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 isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } public static function get connected():Boolean{ return (_connected); } public static function warnID(_arg1:String, _arg2:Boolean):void{ _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; }; }; }; var _local3:Number = 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 connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; if ((clip is DisplayObject)){ if (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; 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."); }; } 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(); _timer.removeEventListener(TimerEvent.TIMER, connectWait); _timer = null; } catch(error:Error) { }; }; } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } 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); }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_clip.parent){ _clip.parent.removeChild(_clip); }; if (_arg1 != null){ if ((_arg1 is DisplayObjectContainer)){ _container = _arg1; }; }; if (_arg2){ if ((_container is DisplayObjectContainer)){ DisplayObjectContainer(_container).addChild(_clip); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ MochiServices.onError("NotConnected"); return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; var _local3:String = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local3 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local3); _clip = new MovieClip(); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); var _local4:URLRequest = new URLRequest(_local3); var _local5:URLVariables = new URLVariables(); _local5.listenLC = _listenChannelName; _local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local5.api_version = getVersion(); if (widget){ _local5.widget = true; }; _local4.data = _local5; _loader.load(_local4); _clip.addChild(_loader); _sendChannel = new LocalConnection(); _queue = []; _nextCallbackID = 0; _callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } private static function detach(_arg1:Event):void{ var _local2:LoaderInfo = LoaderInfo(_arg1.target); _local2.removeEventListener(Event.COMPLETE, detach); _local2.removeEventListener(IOErrorEvent.IO_ERROR, detach); _local2.removeEventListener(Event.COMPLETE, loadLCBridgeComplete); _local2.removeEventListener(IOErrorEvent.IO_ERROR, loadError); } private static function loadLCBridge(_arg1:Object):void{ var _local2:Loader = new Loader(); var _local3:String = (_servURL + _mochiLC); var _local4:URLRequest = new URLRequest(_local3); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, detach); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach); _local2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLCBridgeComplete); _local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local2.load(_local4); _arg1.addChild(_local2); } private static function loadLCBridgeComplete(_arg1:Event):void{ var _local2:Loader = LoaderInfo(_arg1.target).loader; _mochiLocalConnection = MovieClip(_local2.content); listen(); } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } 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"); } else { _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, connectWait); _timer = null; }; } 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..."); } 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, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift()); }; }; } private static function onReceive(_arg1:Object):void{ var methodName:String; var pkg = _arg1; var cb:String = pkg.callbackID; var cblst:Object = _callbacks[cb]; if (!cblst){ return; }; var method:* = cblst.callbackMethod; methodName = ""; var obj:Object = 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 _callbacks[cb]; } private static function onEvent(_arg1:Object):void{ var _local2:String = _arg1.target; var _local3:String = _arg1.event; switch (_local2){ case "services": MochiServices.triggerEvent(_arg1.event, _arg1.args); break; case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "social": MochiSocial.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_queue))){ while (_queue.length > 0) { _local2 = _queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _callbacks[_local2.callbackID]; }; delete _callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ if (_arg1 != null){ if (_arg1.onError != null){ _arg1.onError("NotConnected"); }; if (((!((_arg1.options == null))) && (!((_arg1.options.onError == null))))){ _arg1.options.onError("NotConnected"); }; }; if (_arg3 != null){ _arg1 = {}; _arg1.error = true; _arg1.errorCode = "NotConnected"; if (((!((_arg2 == null))) && ((_arg3 is String)))){ try { var _local4 = _arg2; _local4[_arg3](_arg1); } catch(error:Error) { }; } else { if (_arg3 != null){ try { _arg3.apply(_arg1); } catch(error:Error) { }; }; }; }; } 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:_nextCallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID}); }; if (_clip != null){ if (_callbacks != null){ _callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _nextCallbackID++; }; }; } private static function urlOptions(_arg1:Object):Object{ var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; var _local2:Object = {}; 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 addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var avm1Click:DisplayObject; 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; var vars:Object = 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); var s = "?"; var i:Number = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://link.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); var _local2:Rectangle = 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); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local4:int; var _local14:Loader; var _local3:Array = [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]; var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; var _local6:Array = [0, 64, 0, 0, 0]; var _local7:MovieClip = new MovieClip(); var _local8:LocalConnection = new LocalConnection(); var _local9:String = ((("_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); var _local10:ByteArray = new ByteArray(); var _local11:ByteArray = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); var _local12:uint = ((_local3.length + _local11.length) + 4); var _local13:uint = (_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 addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 170
//MochiSocial (mochi.as3.MochiSocial) package mochi.as3 { public class MochiSocial { public static const LOGGED_IN:String = "LoggedIn"; public static const LOGGED_OUT:String = "LoggedOut"; public static const LOGIN_SHOW:String = "LoginShow"; public static const LOGIN_HIDE:String = "LoginHide"; public static const LOGIN_SHOWN:String = "LoginShown"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const FRIEND_LIST:String = "FriendsList"; public static const PROFILE_DATA:String = "ProfileData"; public static const GAMEPLAY_DATA:String = "GameplayData"; public static const ACTION_CANCELED:String = "onCancel"; public static const ACTION_COMPLETE:String = "onComplete"; public static const USER_INFO:String = "UserInfo"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IOError"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _user_info:Object = null; public static function getVersion():String{ return (MochiServices.getVersion()); } public static function getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_showLoginWidget", {options:_arg1}); } public static function hideLoginWidget():void{ MochiServices.send("social_hideLoginWidget"); } public static function requestLogin(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestLogin", _arg1); } public static function showProfile(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.stayOnTop(); MochiServices.send("social_showProfile", _arg1); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("social_saveUserProperties", _arg1); } public static function getFriendsList(_arg1:Object=null):void{ MochiServices.send("social_getFriendsList", _arg1); } public static function postToStream(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_postToStream", _arg1); } public static function inviteFriends(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_inviteFriends", _arg1); } public static function requestFan(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("social_requestFan", _arg1); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function get loggedIn():Boolean{ return (!((_user_info == null))); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _user_info = _arg1; }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _user_info = null; }); } }//package mochi.as3
Section 171
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var _loader:URLLoader; public var key:String;// = null public var data;// = null public var error:Event;// = null public var operation:String;// = null public var callback:Function;// = null public var userid:String;// = null public var isError:Boolean;// = false public var errorCode:String;// = null private var enc:Base64Encoder; private var dec:Base64Decoder; private static var MAX_USER_ID_LENGTH:Number = 36; private static var MAX_KEY_LENGTH:Number = 20; private static var ERROR_CALLBACK_TIMEOUT:Number = 100; public function MochiUserData(_arg1:String="", _arg2:Function=null, _arg3:String=""){ enc = new Base64Encoder(); dec = new Base64Decoder(); super(); this.key = _arg1; this.callback = _arg2; this.userid = _arg3; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public function base64encode(_arg1:ByteArray):String{ enc.encodeBytes(_arg1); return (enc.drain().split("\n").join("")); } public function base64decode(_arg1:String):ByteArray{ dec.decode(_arg1); return (dec.toByteArray()); } public function request(_arg1:String, _arg2:ByteArray):void{ var _operation = _arg1; var _data = _arg2; operation = _operation; var api_url:String = MochiSocial.getAPIURL(); var api_token:String = MochiSocial.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); var args:URLVariables = new URLVariables(); args.op = _operation; args.key = key; var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public function getEvent():void{ request("get", serialize(null)); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function onDataGet(_arg1:Object):void{ var _local2:ByteArray; if (_arg1.error){ this.isError = _arg1.error; this.errorCode = _arg1.errorCode; } else { _local2 = base64decode(_arg1.data); this.data = deserialize(_local2); }; if (callback != null){ performCallback(); }; } public function onDataPut(_arg1:Object):void{ if (_arg1.error){ this.isError = _arg1.error; this.errorCode = _arg1.errorCode; }; if (callback != null){ performCallback(); }; } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } public static function getData(_arg1:String, _arg2:String, _arg3:Function):void{ var _local4:MochiUserData = new MochiUserData(_arg2, _arg3, _arg1); if ((((_arg1.length > MAX_USER_ID_LENGTH)) || ((_arg2.length > MAX_KEY_LENGTH)))){ _local4.isError = true; _local4.errorCode = "userid or key is too long"; setTimeout(_local4.performCallback, ERROR_CALLBACK_TIMEOUT); return; }; _local4.operation = "get"; var _local5:Object = {key:((_arg1 + "_") + _arg2)}; MochiServices.send("userData_getUserData", _local5, _local4, "onDataGet"); } public static function putData(_arg1:String, _arg2:String, _arg3, _arg4:Function):void{ var _local5:MochiUserData = new MochiUserData(_arg2, _arg4, _arg1); if ((((_arg1.length > MAX_USER_ID_LENGTH)) || ((_arg2.length > MAX_KEY_LENGTH)))){ _local5.isError = true; _local5.errorCode = "userid or key is too long"; setTimeout(_local5.performCallback, ERROR_CALLBACK_TIMEOUT); return; }; _local5.operation = "put"; var _local6:ByteArray = _local5.serialize(_arg3); var _local7:Object = {key:((_arg1 + "_") + _arg2), data:_local5.base64encode(_local6)}; MochiServices.send("userData_putUserData", _local7, _local5, "onDataPut"); } } }//package mochi.as3
Section 172
//Arrow (Objects.Arrow) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Arrow extends GameObject { public function Arrow(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.isSensor = true; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 173
//Bomb (Objects.Bomb) package Objects { import flash.events.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Bomb extends GameObject { private var contdown:int;// = 60 private var destroyed:Boolean;// = false private var bombActivated:Boolean;// = false public var objectInWater:Boolean;// = false public function Bomb(_arg1:MovieClip, _arg2:b2World){ var _local3:MovieClip; super(_arg1, _arg2); _local3 = _arg1.bombSizeMC; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = _arg2.CreateBody(_local4); var _local5:b2CircleShape = new b2CircleShape(((_local3.width / GlobalStorage.physScale) / 2)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.5; _local6.restitution = 0; _local6.friction = 0.8; body.CreateFixture(_local6); body.SetAngle(objRotation); body.SetUserData(this); } public function activate():void{ if (!bombActivated){ bombActivated = true; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, bombTick); bombActivated = true; objectMC.gotoAndStop(2); Sounds.PlaySnd("FuseSnd"); trace("FUSE FIRE"); }; } private function bombTick(_arg1:Event):void{ contdown--; if (contdown == 0){ explosion(); } else { if (contdown == -1){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, bombTick); bombActivated = false; }; }; } public function removeBombTick():void{ if (bombActivated){ bombActivated = false; GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, bombTick); }; } private function explosion():void{ if (!destroyed){ GlobalStorage.createExplosionsList.push(body.GetPosition()); GlobalStorage.destroyBodiesList.push(body); destroyed = true; objectMC.gotoAndStop(3); Sounds.PlaySnd("BombExplosion"); }; } } }//package Objects
Section 174
//Bottle1 (Objects.Bottle1) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; import Fla.*; public class Bottle1 extends GameObject { public var destroyed:Boolean;// = false private var typeOfBottle:String; public function Bottle1(_arg1:MovieClip, _arg2:b2World, _arg3:String){ super(_arg1, _arg2); typeOfBottle = _arg3; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = _arg2.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((objWidth / 2), (objHeight / 2)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.5; _local6.restitution = 0.1; _local6.friction = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); body.SetBullet(true); } public function destroy():void{ var _local1:MovieClip; if (!destroyed){ switch (typeOfBottle){ case "Bottle1MC": _local1 = new BeamPirate1(); break; case "Bottle2MC": _local1 = new BeamPirate5(); break; case "Bottle3MC": _local1 = new BeamPirate3(); break; case "Bottle4MC": _local1 = new BeamPirate2(); break; case "Bottle5MC": _local1 = new BeamPirate4(); break; default: break; }; _local1.x = (body.GetPosition().x * GlobalStorage.physScale); _local1.y = (body.GetPosition().y * GlobalStorage.physScale); GlobalStorage.destroyBodiesList.push(body); destroyed = true; objectMC.gotoAndPlay(2); GlobalStorage._globalLvlvMC.addChild(_local1); GlobalStorage.bottleObjectRemaining--; trace(("bottle remain " + GlobalStorage.bottleObjectRemaining)); Sounds.PlaySnd("Beam3"); }; } } }//package Objects
Section 175
//BreakablePlatform (Objects.BreakablePlatform) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class BreakablePlatform extends GameObject { private var destroyed:Boolean;// = false public function BreakablePlatform(_arg1:MovieClip, _arg2:b2World):void{ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.restitution = 1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); } } }//package Objects
Section 176
//Brevno (Objects.Brevno) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Brevno extends GameObject { public function Brevno(_arg1:MovieClip, _arg2:b2World, _arg3:b2World=null){ super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_staticBody; _local4.position.Set(xPos, yPos); body = world.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((objWidth / 2), (objHeight / 2)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); } } }//package Objects
Section 177
//Bullet (Objects.Bullet) package Objects { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Bullet extends GameObject { var collisionsNum:Number;// = 0 public function Bullet(_arg1:MovieClip, _arg2:b2World, _arg3){ var _local6:b2FixtureDef; super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = GlobalStorage.world.CreateBody(_local4); var _local5:b2CircleShape = new b2CircleShape((objWidth / 2)); _local6 = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.8; _local6.restitution = 0.8; _local6.friction = 0; _local6.filter.groupIndex = -1; body.SetBullet(true); body.CreateFixture(_local6); body.SetAngle(objRotation); body.SetUserData(this); shoot(_arg3); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, checkSpeed); } public function shoot(_arg1):void{ this.GetBody().ApplyImpulse(new b2Vec2((Math.cos(_arg1) * GlobalStorage.bulletsPower), (Math.sin(_arg1) * GlobalStorage.bulletsPower)), body.GetWorldCenter()); } private function checkSpeed(_arg1:Event):void{ var _local4:Number; var _local5:b2Vec2; var _local2:Number = (Math.abs(this.GetBody().GetLinearVelocity().x) + Math.abs(this.GetBody().GetLinearVelocity().y)); var _local3:Number = 40; if (_local2 < _local3){ _local4 = (_local3 / _local2); _local5 = new b2Vec2((this.GetBody().GetLinearVelocity().x * _local4), (this.GetBody().GetLinearVelocity().y * _local4)); this.GetBody().SetLinearVelocity(_local5); }; } public function destroy():void{ GlobalStorage.destroyBodiesList.push(body); objectMC.gotoAndPlay(2); GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, checkSpeed); } public function calculateCollisions():void{ collisionsNum++; if (collisionsNum > GlobalStorage.maxNumOfCollisions){ destroy(); }; } } }//package Objects
Section 178
//ChainLink (Objects.ChainLink) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class ChainLink extends GameObject { public var markAsBreak:Boolean;// = false public var markAsLight:Boolean;// = false public function ChainLink(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } public function destroy():void{ GlobalStorage.destroyBodiesList.push(body); objectMC.gotoAndStop(3); } } }//package Objects
Section 179
//Dragon (Objects.Dragon) package Objects { import flash.events.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Dragon extends GameObject { private var myWidth:Number;// = 121 private var myHeight:Number;// = 16 private var delayBeforeFlame:int;// = 11 private var countDelayBeforeFlame:int; private var flameDuration:int;// = 30 private var countFlamDuration:int; public var turnOn:Boolean;// = false public var contactDetected:Boolean;// = false private var frameDelay:int; private var tempFrameDelay:int; private var startDragonFrame:int;// = 10 private var startFlameFrame:int;// = 11 private var endFlameFrame:int;// = 41 private var frameCount:int;// = 0 private var endDragonFlame:int;// = 52 public function Dragon(_arg1:MovieClip, _arg2:b2World, _arg3:Number, _arg4:String="1"){ var _local5:b2BodyDef; super(_arg1, _arg2); _local5 = new b2BodyDef(); _local5.type = b2Body.b2_staticBody; _local5.position.Set(xPos, yPos); body = world.CreateBody(_local5); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((((myWidth / GlobalStorage.physScale) / 2) * _arg3), (((myHeight / GlobalStorage.physScale) / 2) * _arg3)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.isSensor = true; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local7); body.SetBullet(true); frameDelay = Number(_arg4); trace(("_frameDelay " + _arg4)); objectMC.gotoAndStop(1); startFlameDelay(); } private function startFlameDelay():void{ tempFrameDelay = frameDelay; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, countDelay); } private function countDelay(_arg1:Event):void{ tempFrameDelay--; if (tempFrameDelay <= 0){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, countDelay); startDragon(); }; } private function startDragon():void{ objectMC.gotoAndPlay(1); } public function startFlame():void{ turnOn = true; trace(("START FLAME " + turnOn)); } public function endFlame():void{ turnOn = false; trace(("No Flame No " + turnOn)); } public function endOfMove():void{ objectMC.gotoAndStop(1); startFlameDelay(); } } }//package Objects
Section 180
//DynamicBrevno (Objects.DynamicBrevno) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class DynamicBrevno extends GameObject { public var objectInWater:Boolean;// = false public function DynamicBrevno(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); _local5 = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 181
//DynamicRectangle (Objects.DynamicRectangle) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class DynamicRectangle extends GameObject { public var objectInWater:Boolean;// = false public function DynamicRectangle(_arg1:MovieClip, _arg2:b2World, _arg3){ var _local6:b2FixtureDef; super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = world.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((objWidth / 2), (objHeight / 2)); _local6 = new b2FixtureDef(); _local6.shape = _local5; _local6.density = _arg3; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); body.SetBullet(true); } } }//package Objects
Section 182
//DynamicRoundObject (Objects.DynamicRoundObject) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class DynamicRoundObject extends GameObject { public var objectInWater:Boolean;// = false public function DynamicRoundObject(_arg1:MovieClip, _arg2:b2World, _arg3){ var _local6:b2FixtureDef; super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = _arg2.CreateBody(_local4); var _local5:b2CircleShape = new b2CircleShape((objWidth / 2)); _local6 = new b2FixtureDef(); _local6.shape = _local5; _local6.density = _arg3; _local6.restitution = 0.05; _local6.friction = 0.5; body.CreateFixture(_local6); body.SetAngle(objRotation); body.SetUserData(this); } } }//package Objects
Section 183
//ExplosionSensor (Objects.ExplosionSensor) package Objects { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import flash.geom.*; import flash.display.*; public class ExplosionSensor { private var mybody:b2Body; private var centerOfExplosion:b2Body; private var explosionRadius:int;// = 100 private var position:b2Vec2; private var bombForce:Number; private var countdown:int;// = 2 public function ExplosionSensor(_arg1:b2Vec2, _arg2:Number=1, _arg3:String="bomb"):void{ var _local5:b2CircleShape; var _local6:b2FixtureDef; var _local7:b2BodyDef; var _local8:b2CircleShape; var _local9:b2FixtureDef; super(); position = _arg1; bombForce = _arg2; var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_staticBody; _local4.position.Set(_arg1.x, _arg1.y); mybody = GlobalStorage.world.CreateBody(_local4); trace(("BODY = " + mybody)); _local5 = new b2CircleShape(((this.explosionRadius / GlobalStorage.physScale) / 2)); _local6 = new b2FixtureDef(); _local6.shape = _local5; _local6.isSensor = true; mybody.CreateFixture(_local6); mybody.SetUserData(this); _local7 = new b2BodyDef(); _local7.type = b2Body.b2_staticBody; _local7.position.Set(_arg1.x, _arg1.y); centerOfExplosion = GlobalStorage.world.CreateBody(_local7); _local8 = new b2CircleShape(((1 / GlobalStorage.physScale) / 2)); _local9 = new b2FixtureDef(); _local9.shape = _local8; _local9.isSensor = true; centerOfExplosion.CreateFixture(_local9); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, activate); } private function activate(_arg1:Event):void{ countdown--; if (countdown == 1){ explosion(); }; if (countdown == -1){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, activate); GlobalStorage.destroyBodiesList.push(mybody); }; } private function explosion():void{ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; _local1 = null; _local2 = null; _local3 = null; _local4 = null; _local5 = null; _local6 = NaN; _local7 = NaN; _local8 = null; trace("start explosion"); _local9 = GlobalStorage.world.GetBodyList(); while (_local9) { if ((((_local9.GetUserData() as GameObject)) && ((_local9.GetType() == b2Body.b2_dynamicBody)))){ if (_local9.GetType() == b2Body.b2_dynamicBody){ if (MathUtils.distanceBetweenMC(new Point((this.position.x * GlobalStorage.physScale), (this.position.y * GlobalStorage.physScale)), new Point((_local9.GetPosition().x * GlobalStorage.physScale), (_local9.GetPosition().y * GlobalStorage.physScale))) < this.explosionRadius){ if ((_local9.GetUserData() is Bomb)){ Bomb(_local9.GetUserData()).activate(); }; if ((_local9.GetUserData() is TntBarrel)){ TntBarrel(_local9.GetUserData()).activate(); }; _local1 = new b2DistanceOutput(); _local2 = new b2DistanceInput(); _local3 = new b2SimplexCache(); _local3.count = 0; _local2.transformA = _local9.GetTransform(); _local2.transformB = this.mybody.GetTransform(); _local2.proxyA = new b2DistanceProxy(); _local2.proxyB = new b2DistanceProxy(); _local2.proxyA.Set(_local9.GetFixtureList().GetShape()); _local2.proxyB.Set(this.mybody.GetFixtureList().GetShape()); _local2.useRadii = true; b2Distance.Distance(_local1, _local3, _local2); _local4 = _local1.pointA; if (_local1.distance == 0){ trace("breaking"); }; trace("Explosion:", (_local1.pointA.x - this.mybody.GetPosition().x)); if (_local1.distance < (this.explosionRadius / GlobalStorage.physScale)){ _local5 = new b2Vec2((_local1.pointA.x - this.mybody.GetPosition().x), (_local1.pointA.y - this.mybody.GetPosition().y)); _local6 = _local5.Normalize(); _local7 = (((this.explosionRadius - _local6) / this.explosionRadius) * this.bombForce); _local8 = new b2Vec2((_local5.x * _local7), (_local5.y * _local7)); trace("impulse: ", _local8.x, ", ", _local8.y); _local9.ApplyImpulse(_local8, _local4); trace("object:", _local9.GetUserData()); }; }; }; }; _local9 = _local9.GetNext(); }; } } }//package Objects
Section 184
//GameObject (Objects.GameObject) package Objects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; public class GameObject extends Sprite { protected var world:b2World; protected var objWidth:Number; protected var objHeight:Number; protected var xPos:Number; protected var yPos:Number; protected var objRotation:Number; protected var body:b2Body; protected var fakeBody:b2Body; public var isBreakable:Boolean; public var objectMC:MovieClip; private var broken:Boolean;// = false private var fixture:b2Fixture; private var powerOfArrow:int;// = 50 public function GameObject(_arg1:MovieClip, _arg2:b2World){ objectMC = _arg1; world = _arg2; objWidth = (objectMC.width / GlobalStorage.physScale); objHeight = (objectMC.height / GlobalStorage.physScale); xPos = (objectMC.x / GlobalStorage.physScale); yPos = (objectMC.y / GlobalStorage.physScale); objRotation = (objectMC.rotation / (180 / Math.PI)); objectMC.rotation = 0; objWidth = (this.objectMC.width / GlobalStorage.physScale); objHeight = (this.objectMC.height / GlobalStorage.physScale); objectMC.rotation = (objRotation * (180 / Math.PI)); if ((((objectMC is BreakablePlatformMC)) || ((objectMC is ChainLinkMC)))){ isBreakable = true; }; if (isBreakable){ }; } public function mouseOver():void{ objectMC.gotoAndStop(2); } public function mouseOut():void{ objectMC.gotoAndStop(1); } public function GetUserData():MovieClip{ return (objectMC); } public function GetBody():b2Body{ return (body); } public function GetFixture():b2Fixture{ return (fixture); } public function SetUserData(_arg1:MovieClip):void{ objectMC = _arg1; } public function breakTheBody():void{ if (!broken){ objectMC.gotoAndStop("crash"); GlobalStorage.destroyBodiesList.push(body); broken = true; }; } private function rollOverChain(_arg1):void{ var _local2:*; if (_arg1 != null){ if (_arg1.markAsBreak == false){ _arg1.markAsBreak = true; _local2 = _arg1.GetBody().GetJointList(); while (_local2) { trace(_local2.other.GetUserData()); if (((!((_local2.other.GetUserData() == null))) && ((_local2.other.GetUserData().toString() == "[object ChainLink]")))){ rollOverChain(_local2.other.GetUserData()); }; _local2 = _local2.next; }; }; }; } private function rollOutChain(_arg1):void{ var _local2:*; if (_arg1 != null){ if (_arg1.markAsBreak == false){ _arg1.markAsBreak = true; _local2 = _arg1.GetBody().GetJointList(); while (_local2) { trace(_local2.other.GetUserData()); if (((!((_local2.other.GetUserData() == null))) && ((_local2.other.GetUserData().toString() == "[object ChainLink]")))){ rollOutChain(_local2.other.GetUserData()); }; _local2 = _local2.next; }; }; }; } public function shootWithArrow(_arg1, _arg2):void{ var _local3:Number; _local3 = _arg2.body.GetAngle(); _arg1.body.ApplyImpulse(new b2Vec2(((Math.cos(_local3) * powerOfArrow) / 4), ((Math.sin(_local3) * powerOfArrow) / 4)), _arg1.body.GetWorldCenter()); GlobalStorage.destroyBodiesList.push(_arg2.body); _arg2.objectMC.gotoAndPlay(2); } } }//package Objects
Section 185
//GoalObject (Objects.GoalObject) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; import Fla.*; public class GoalObject extends GameObject { public var destroyed:Boolean;// = false private var scoreNotPlayed:Boolean;// = true public function GoalObject(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 1; _local5.friction = 1; body.CreateFixture(_local5); body.SetAngle(objRotation); body.SetUserData(this); this.mouseEnabled = false; this.mouseChildren = false; GlobalStorage.goalsObjectRemaining++; } public function destroy():void{ objectMC.gotoAndPlay(2); destroyed = true; } public function addScore(_arg1:Number, _arg2:Number):void{ var _local3:MovieClip; if (scoreNotPlayed){ _local3 = new CyfraAnimatedMC(); _local3.x = _arg1; _local3.y = (_arg2 - 40); GlobalStorage._globalLvlvMC.addChild(_local3); scoreNotPlayed = false; }; } } }//package Objects
Section 186
//GoalSensor (Objects.GoalSensor) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class GoalSensor extends GameObject { public function GoalSensor(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); _local5 = new b2FixtureDef(); _local5.isSensor = true; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 187
//Ground (Objects.Ground) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Ground extends GameObject { public function Ground(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); _local5 = new b2FixtureDef(); _local5.isSensor = true; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 188
//HandsTurnAround (Objects.HandsTurnAround) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class HandsTurnAround extends GameObject { public var objectInWater:Boolean;// = false private var myObjectWidth:Number;// = 243 private var myObjectHeight:Number;// = 10 public function HandsTurnAround(_arg1:MovieClip, _arg2:b2World, _arg3:Number){ super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = world.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((((myObjectWidth / GlobalStorage.physScale) / 2) * _arg3), (((myObjectHeight / GlobalStorage.physScale) / 2) * _arg3)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 2; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); } } }//package Objects
Section 189
//HandUnderGround (Objects.HandUnderGround) package Objects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class HandUnderGround extends GameObject { private var speed:Number;// = 7 private var movingDirection:Number;// = 1 public var widthMC:Number;// = 10 public var heightMC:Number;// = 107 public var topMargin:Number; public var bottomMargin:Number; private var movingDirectionNew:Number; public var movingDirectionOld:Number; public function HandUnderGround(_arg1:MovieClip, _arg2:b2World, _arg3:Number, _arg4:Number, _arg5:Number=1){ super(_arg1, _arg2); var _local6:b2BodyDef = new b2BodyDef(); _local6.type = b2Body.b2_kinematicBody; _local6.position.Set(xPos, yPos); body = world.CreateBody(_local6); var _local7:b2PolygonShape = new b2PolygonShape(); _local7.SetAsBox((((widthMC / GlobalStorage.physScale) / 2) * _arg4), (((heightMC / GlobalStorage.physScale) / 2) * _arg4)); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.isSensor = false; _local8.shape = _local7; _local8.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local8); if (_arg5 == 1){ topMargin = ((yPos * GlobalStorage.physScale) - 1); bottomMargin = ((yPos * GlobalStorage.physScale) + heightMC); } else { topMargin = ((yPos * GlobalStorage.physScale) - heightMC); bottomMargin = ((yPos * GlobalStorage.physScale) + 1); trace(("Else var TOP MARGIN " + topMargin)); }; trace(("HandSpeed " + _arg3)); speed = Number(_arg3); movingDirectionOld = _arg5; movingDirectionNew = _arg5; move(); movingDirectionNew = 1; } public function move():void{ movingDirection = (movingDirection * -1); movingDirection = (movingDirection * movingDirectionNew); body.SetLinearVelocity(new b2Vec2(0, (speed * movingDirection))); } } }//package Objects
Section 190
//HeadSpinZombie (Objects.HeadSpinZombie) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class HeadSpinZombie extends GameObject { var myDiameter:Number;// = 37 public function HeadSpinZombie(_arg1:MovieClip, _arg2:b2World, _arg3:Number, _arg4:b2World){ super(_arg1, _arg2); var _local5:b2BodyDef = new b2BodyDef(); _local5.type = b2Body.b2_staticBody; _local5.position.Set(xPos, yPos); body = _arg2.CreateBody(_local5); fakeBody = _arg4.CreateBody(_local5); var _local6:b2CircleShape = new b2CircleShape((((myDiameter / GlobalStorage.physScale) / 2) * _arg3)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.density = 0.5; _local7.restitution = 0.05; _local7.friction = 0.5; body.CreateFixture(_local7); body.SetAngle(objRotation); body.SetUserData(this); fakeBody.SetAngle(objRotation); fakeBody.SetUserData(this); fakeBody.CreateFixture(_local7); fakeBody.SetBullet(true); } } }//package Objects
Section 191
//IceDynPlatform (Objects.IceDynPlatform) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class IceDynPlatform extends GameObject { public var markAsBreak:Boolean;// = false public var markAsLight:Boolean;// = false public function IceDynPlatform(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } public function destroy():void{ GlobalStorage.destroyBodiesList.push(body); objectMC.gotoAndStop(3); } } }//package Objects
Section 192
//IcePlatform (Objects.IcePlatform) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class IcePlatform extends GameObject { public var markAsBreak:Boolean;// = false public var markAsLight:Boolean;// = false public function IcePlatform(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } public function destroy():void{ GlobalStorage.destroyBodiesList.push(body); objectMC.gotoAndStop(3); } } }//package Objects
Section 193
//JustBarrel (Objects.JustBarrel) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class JustBarrel extends GameObject { private var myObjHeight:Number;// = 58 public function JustBarrel(_arg1:MovieClip, _arg2:b2World, _arg3){ var _local6:b2FixtureDef; super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = _arg2.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((objWidth / 2), (((myObjHeight / GlobalStorage.physScale) / 2) * _arg3)); _local6 = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); body.SetBullet(true); } } }//package Objects
Section 194
//Monster (Objects.Monster) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Monster extends GameObject { public function Monster(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox(((26 / GlobalStorage.physScale) / 2), ((33.7 / GlobalStorage.physScale) / 2)); _local5 = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; _local5.restitution = 0; _local5.friction = 0.8; body.CreateFixture(_local5); body.SetAngle(objRotation); body.SetUserData(this); } } }//package Objects
Section 195
//MovingPlatformSensor (Objects.MovingPlatformSensor) package Objects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class MovingPlatformSensor extends GameObject { private var movingDirection:Number;// = 1 public function MovingPlatformSensor(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.isSensor = true; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); this.mouseEnabled = false; this.mouseChildren = false; } public function move():void{ movingDirection = (movingDirection * -1); body.SetLinearVelocity(new b2Vec2((1 * movingDirection), 0)); } } }//package Objects
Section 196
//MovingPlatformX (Objects.MovingPlatformX) package Objects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class MovingPlatformX extends GameObject { private var movingDirection:Number;// = 1 public function MovingPlatformX(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_kinematicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.isSensor = false; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); move(); } public function move():void{ movingDirection = (movingDirection * -1); body.SetLinearVelocity(new b2Vec2((GlobalStorage.platformXSpeed * movingDirection), 0)); } } }//package Objects
Section 197
//MovingPlatformY (Objects.MovingPlatformY) package Objects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class MovingPlatformY extends GameObject { private var movingDirection:Number;// = 1 public function MovingPlatformY(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_kinematicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.isSensor = false; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); move(); } public function move():void{ movingDirection = (movingDirection * -1); body.SetLinearVelocity(new b2Vec2(0, (GlobalStorage.platformXSpeed * movingDirection))); } } }//package Objects
Section 198
//OneHand (Objects.OneHand) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class OneHand extends GameObject { private var myObjectWidth:Number;// = 108 private var myObjectHeight:Number;// = 12 public function OneHand(_arg1:MovieClip, _arg2:b2World, _arg3:Number){ super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_dynamicBody; _local4.position.Set(xPos, yPos); body = world.CreateBody(_local4); var _local5:b2PolygonShape = new b2PolygonShape(); _local5.SetAsBox((((myObjectWidth / GlobalStorage.physScale) / 2) * _arg3), (((myObjectHeight / GlobalStorage.physScale) / 2) * _arg3)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local6); body.SetBullet(true); } } }//package Objects
Section 199
//PartOfTombStone (Objects.PartOfTombStone) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class PartOfTombStone extends GameObject { public var objectInWater:Boolean;// = false public function PartOfTombStone(_arg1:MovieClip, _arg2:b2World, _arg3:b2World=null){ super(_arg1, _arg2); var _local4:b2BodyDef = new b2BodyDef(); _local4.type = b2Body.b2_staticBody; _local4.position.Set(xPos, yPos); body = _arg2.CreateBody(_local4); fakeBody = _arg3.CreateBody(_local4); var _local5:b2CircleShape = new b2CircleShape((objWidth / 2)); var _local6:b2FixtureDef = new b2FixtureDef(); _local6.shape = _local5; _local6.density = 0.5; _local6.restitution = 0.05; _local6.friction = 0.5; body.CreateFixture(_local6); body.SetAngle(objRotation); body.SetUserData(this); body.SetBullet(true); fakeBody.SetAngle(objRotation); fakeBody.SetUserData(this); fakeBody.CreateFixture(_local6); fakeBody.SetBullet(true); } } }//package Objects
Section 200
//SensorHandUnderGround (Objects.SensorHandUnderGround) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class SensorHandUnderGround extends GameObject { public function SensorHandUnderGround(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); _local5 = new b2FixtureDef(); _local5.isSensor = true; _local5.shape = _local4; _local5.restitution = 0.1; body.SetBullet(true); body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); } } }//package Objects
Section 201
//Skull (Objects.Skull) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Skull extends GameObject { public var objectInWater:Boolean;// = false public function Skull(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local4:b2CircleShape = new b2CircleShape((objWidth / 2)); _local5 = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; _local5.restitution = 0.05; _local5.friction = 0.5; body.CreateFixture(_local5); body.SetAngle(objRotation); body.SetUserData(this); this.mouseEnabled = false; this.mouseChildren = false; } } }//package Objects
Section 202
//SkullForShoot (Objects.SkullForShoot) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; import Fla.*; public class SkullForShoot extends GameObject { public var destroyed:Boolean;// = false private var scoreNotPlayed:Boolean;// = true public function SkullForShoot(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local4:b2CircleShape = new b2CircleShape((objWidth / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; _local5.restitution = 0.05; _local5.friction = 0.5; body.CreateFixture(_local5); body.SetAngle(objRotation); body.SetUserData(this); this.mouseEnabled = false; this.mouseChildren = false; } public function destroy():void{ GlobalStorage.destroyBodiesList.push(body); objectMC.gotoAndPlay(2); destroyed = true; } public function addScore(_arg1:Number, _arg2:Number):void{ var _local3:MovieClip; if (scoreNotPlayed){ _local3 = new CyfraAnimatedMC(); _local3.x = _arg1; _local3.y = (_arg2 - 40); GlobalStorage._globalLvlvMC.addChild(_local3); scoreNotPlayed = false; }; } } }//package Objects
Section 203
//SlowTimeSensor (Objects.SlowTimeSensor) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class SlowTimeSensor extends GameObject { public function SlowTimeSensor(_arg1:MovieClip, _arg2:b2World){ var _local5:b2FixtureDef; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); _local5 = new b2FixtureDef(); _local5.isSensor = true; _local5.shape = _local4; _local5.restitution = 0.1; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 204
//SpikePlant (Objects.SpikePlant) package Objects { import flash.events.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class SpikePlant extends GameObject { private var myWidth:Number;// = 47 private var myHeight:Number;// = 85 private var delayFrame:int; private var spikeDelay:int;// = 20 private var tempSpikeDelay:int; public var turnOn:Boolean;// = false public var contactDetected:Boolean;// = false public function SpikePlant(_arg1:MovieClip, _arg2:b2World, _arg3:b2World, _arg4:Number, _arg5:String="1"){ var _local6:b2BodyDef; super(_arg1, _arg2); _local6 = new b2BodyDef(); _local6.type = b2Body.b2_staticBody; _local6.position.Set(xPos, yPos); body = world.CreateBody(_local6); fakeBody = _arg3.CreateBody(_local6); var _local7:b2PolygonShape = new b2PolygonShape(); _local7.SetAsBox((((myWidth / GlobalStorage.physScale) / 2) * _arg4), (((myHeight / GlobalStorage.physScale) / 2) * _arg4)); var _local8:b2FixtureDef = new b2FixtureDef(); _local8.shape = _local7; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local8); body.SetBullet(true); _local8.density = 0.5; fakeBody.SetAngle(objRotation); fakeBody.SetUserData(this); fakeBody.CreateFixture(_local8); fakeBody.SetBullet(true); delayFrame = Number(_arg5); startSpikeDelay(); } private function startSpikeDelay():void{ GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, delayBeforeSpike); } private function delayBeforeSpike(_arg1:Event):void{ if (delayFrame <= 0){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, delayBeforeSpike); startSpike(); }; delayFrame--; } private function startSpike():void{ turnOn = true; objectMC.gotoAndPlay(1); tempSpikeDelay = spikeDelay; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spikeOnDelay); } private function endSpike():void{ turnOn = false; objectMC.gotoAndPlay(5); tempSpikeDelay = spikeDelay; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spikeOnDelay); } private function spikeOnDelay(_arg1:Event):void{ if ((((tempSpikeDelay <= 0)) && (turnOn))){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, spikeOnDelay); endSpike(); } else { if ((((tempSpikeDelay <= 0)) && (!(turnOn)))){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, spikeOnDelay); startSpike(); }; }; tempSpikeDelay--; } } }//package Objects
Section 205
//StaticBrevno (Objects.StaticBrevno) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class StaticBrevno extends GameObject { public function StaticBrevno(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = world.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } } }//package Objects
Section 206
//Tambourine (Objects.Tambourine) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class Tambourine extends GameObject { public var widthMC:Number;// = 81 public var heightMC:Number;// = 34 public function Tambourine(_arg1:MovieClip, _arg2:b2World, _arg3:Number, _arg4:b2World=null){ var _local5:b2BodyDef; super(_arg1, _arg2); _local5 = new b2BodyDef(); _local5.type = b2Body.b2_staticBody; _local5.position.Set(xPos, yPos); body = world.CreateBody(_local5); fakeBody = _arg4.CreateBody(_local5); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((((widthMC / GlobalStorage.physScale) / 2) * _arg3), (((heightMC / GlobalStorage.physScale) / 2) * _arg3)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.density = 0.5; _local7.restitution = 1.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local7); body.SetBullet(true); fakeBody.SetAngle(objRotation); fakeBody.SetUserData(this); fakeBody.CreateFixture(_local7); fakeBody.SetBullet(true); } } }//package Objects
Section 207
//TntBarrel (Objects.TntBarrel) package Objects { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class TntBarrel extends GameObject { private var destroyed:Boolean;// = false public var objectInWater:Boolean;// = false public function TntBarrel(_arg1:MovieClip, _arg2:b2World){ super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local3.type = b2Body.b2_dynamicBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local4:b2PolygonShape = new b2PolygonShape(); _local4.SetAsBox((objWidth / 2), (objHeight / 2)); var _local5:b2FixtureDef = new b2FixtureDef(); _local5.shape = _local4; _local5.density = 0.5; body.SetAngle(objRotation); body.SetUserData(this); body.CreateFixture(_local5); body.SetBullet(true); } public function activate():void{ destroy(); } public function destroy():void{ if (!destroyed){ GlobalStorage.destroyBodiesList.push(body); GlobalStorage.createExplosionsList.push(body.GetPosition()); destroyed = true; objectMC.gotoAndPlay(2); Sounds.PlaySnd("TNTExplosion"); }; } } }//package Objects
Section 208
//Viking (Objects.Viking) package Objects { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class Viking extends GameObject { private var direction:String;// = "right" private var hasGoal:Boolean;// = true private var stopMe:Boolean;// = false private var speedOfShip:Number;// = 0.13 private var playingSound:String; public function Viking(_arg1:MovieClip, _arg2:b2World){ var _local4:Number; var _local5:Number; super(_arg1, _arg2); var _local3:b2BodyDef = new b2BodyDef(); _local4 = (70 / GlobalStorage.physScale); _local5 = (170 / GlobalStorage.physScale); _local3.type = b2Body.b2_staticBody; _local3.position.Set(xPos, yPos); body = _arg2.CreateBody(_local3); var _local6:b2PolygonShape = new b2PolygonShape(); _local6.SetAsBox((_local4 / 2), (_local5 / 2)); var _local7:b2FixtureDef = new b2FixtureDef(); _local7.shape = _local6; _local7.isSensor = true; body.CreateFixture(_local7); body.SetBullet(true); body.SetAngle(objRotation); body.SetUserData(this); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, moveViking); Sounds.PlaySnd("StartShip"); } private function moveViking(_arg1:Event):void{ var _local2:b2Body; var _local3:b2ContactEdge; var _local4:b2Body; if (!hasGoal){ _local2 = GlobalStorage.world.GetBodyList(); while (_local2) { if ((_local2.GetUserData() is GoalObject)){ if (!GoalObject(_local2.GetUserData()).destroyed){ if (_local2.GetContactList()){ _local3 = _local2.GetContactList(); while (_local3) { if (!(_local3.contact.GetFixtureA().GetBody().GetUserData() is Ground)){ }; if ((_local3.contact.GetFixtureB().GetBody().GetUserData() is Ground)){ _local4 = _local2; stopMe = false; }; _local3 = _local3.next; }; }; }; }; _local2 = _local2.GetNext(); }; if (_local4){ if (body.GetPosition().x > _local4.GetPosition().x){ if (direction == "right"){ objectMC.scaleX = (objectMC.scaleX * -1); }; direction = "left"; } else { if (direction == "left"){ objectMC.scaleX = (objectMC.scaleX * -1); }; direction = "right"; }; hasGoal = true; }; }; if (direction == "right"){ if (!stopMe){ body.SetPosition(new b2Vec2((body.GetPosition().x + speedOfShip), body.GetPosition().y)); }; } else { if (direction == "left"){ if (!stopMe){ body.SetPosition(new b2Vec2((body.GetPosition().x - speedOfShip), body.GetPosition().y)); }; }; }; if (body.GetPosition().x > (850 / GlobalStorage.physScale)){ stopMe = true; }; if (body.GetPosition().x < (-270 / GlobalStorage.physScale)){ stopMe = true; }; } public function getGift():void{ if (playingSound){ Sounds.StopSnd(playingSound); }; var _local1:int = (Math.random() * 3); switch (_local1){ case 0: playingSound = "YoHoHo2"; break; case 1: playingSound = "YoHoHo4"; break; case 2: playingSound = "YoHoHo4"; break; case 3: playingSound = "YoHoHo4"; break; default: break; }; if (GlobalStorage.alreadyHasGoals == 1){ objectMC.gotoAndPlay("firstChest"); } else { if (GlobalStorage.alreadyHasGoals == 2){ objectMC.gotoAndPlay("secondChest"); playingSound = ""; }; }; hasGoal = false; } } }//package Objects
Section 209
//content_21 (PiratesSOS_for_BD_CH_L_fla.content_21) package PiratesSOS_for_BD_CH_L_fla { import flash.display.*; public dynamic class content_21 extends MovieClip { public function content_21(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package PiratesSOS_for_BD_CH_L_fla
Section 210
//Beam3 (Beam3) package { import flash.media.*; public dynamic class Beam3 extends Sound { } }//package
Section 211
//BigDinoSplash (BigDinoSplash) package { import flash.events.*; import flash.display.*; import flash.net.*; public dynamic class BigDinoSplash extends MovieClip { public var egg:MovieClip; public var callback:Function; public var url:String; public var originalFPS:int; public function BigDinoSplash(){ addFrameScript(0, frame1, 8, frame9, 23, frame24, 66, frame67, 106, frame107, 248, frame249); } public function playSplash(_arg1:Function, _arg2:String="http://www.bigdino.com/goto.php?id=958&link=splash"){ callback = _arg1; url = _arg2; if (url != ""){ this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, followLink, false, 0, true); }; originalFPS = stage.frameRate; stage.frameRate = 25; gotoAndPlay("splash"); } public function followLink(_arg1){ navigateToURL(new URLRequest(url), "_blank"); } function frame1(){ url = "http://www.bigdino.com/goto.php?id=958&link=splash"; originalFPS = stage.frameRate; } function frame9(){ egg.gotoAndStop(1); } function frame24(){ egg.gotoAndStop(2); } function frame67(){ egg.gotoAndStop(3); } function frame107(){ egg.gotoAndStop(4); } function frame249(){ stage.frameRate = originalFPS; if (url != null){ this.removeEventListener(MouseEvent.CLICK, followLink); }; if (callback != null){ callback(); }; stop(); } } }//package
Section 212
//BombaTleetMC (BombaTleetMC) package { import Fla.*; public dynamic class BombaTleetMC extends BombaTleetMC { } }//package
Section 213
//BombaVzryvMC (BombaVzryvMC) package { import Fla.*; public dynamic class BombaVzryvMC extends BombaVzryvMC { } }//package
Section 214
//BombExplosion (BombExplosion) package { import flash.media.*; public dynamic class BombExplosion extends Sound { } }//package
Section 215
//BottleCrush1 (BottleCrush1) package { import flash.media.*; public dynamic class BottleCrush1 extends Sound { } }//package
Section 216
//BottleCrush2 (BottleCrush2) package { import flash.media.*; public dynamic class BottleCrush2 extends Sound { } }//package
Section 217
//BottleCrush3 (BottleCrush3) package { import flash.media.*; public dynamic class BottleCrush3 extends Sound { } }//package
Section 218
//BottleCrush4 (BottleCrush4) package { import flash.media.*; public dynamic class BottleCrush4 extends Sound { } }//package
Section 219
//BottleCrush5 (BottleCrush5) package { import flash.media.*; public dynamic class BottleCrush5 extends Sound { } }//package
Section 220
//BottleCrush6 (BottleCrush6) package { import flash.media.*; public dynamic class BottleCrush6 extends Sound { } }//package
Section 221
//BottleCrush7 (BottleCrush7) package { import flash.media.*; public dynamic class BottleCrush7 extends Sound { } }//package
Section 222
//BottleCrush8 (BottleCrush8) package { import flash.media.*; public dynamic class BottleCrush8 extends Sound { } }//package
Section 223
//BottleTuk (BottleTuk) package { import flash.media.*; public dynamic class BottleTuk extends Sound { } }//package
Section 224
//BrandingSettings (BrandingSettings) package { public class BrandingSettings { public static const GAME_NAME:String = "Pirates: Arctic Treasure"; public static const _GAME_CODE:String = "pirates-arctic-treasure"; public static const CPMSTAR_POOL_ID:String = "33359"; public static const CPMSTAR_SUBPOOL_ID:String = "13"; public static const MOCHIBOT_ID:String = "8c245f28"; public static const MOCHIMEDIA_GAME_ID:String = "70c0b621411efe8f"; public static const INTERGI_UNIQUE_GAME_ID:String = "pirates-arctic-treasure"; public static const INTERGI_AD_URL:String = "http://ads.intergi.com/adrawdata/3.0/5205/2407424/0/4057/ADTECH;referring_url=__WEB_URL__;number=__RANDOM__;time=__TIME__"; private static const _TDS_URL:String = "http://links-123.com/go.php?"; private static const _MAIN_URL:String = (((_TDS_URL + "sid=1&utm_source=our_game&utm_campaign=") + _GAME_CODE) + "&utm_medium="); public static const PRELOADER_LOGO_URL:String = (_MAIN_URL + "preloader_logo"); public static const PRELOADER_BACKGROUND_URL:String = (_MAIN_URL + "preloader_background"); public static const PRELOADER_GODVILGAMES = 0; public static const PRELOADER_Y8 = 1; public static const PRELOADER_CPMSTAR_ADVERTISE = 2; public static const PRELOADER_MOCHIMEDIA_ADVERTISE = 3; public static const PRELOADER_INTERGI_ADVERTISE = 4; public static const PRELOADER_CONFIGURATION = 0; public static const WIDTH:Number = 640; public static const HEIGHT:Number = 480; public static const MENU_MORE_GAMES_URL:String = (_MAIN_URL + "menu_more_games"); public static const MENU_LOGO_URL:String = (_MAIN_URL + "menu_logo"); public static const LEVELS_MORE_GAMES_URL:String = (_MAIN_URL + "levels_more_games"); public static const LEVELS_LOGO_URL:String = (_MAIN_URL + "levels_logo"); public static const RETRY_MORE_GAMES_URL:String = (_MAIN_URL + "retry_more_games"); public static const RETRY_LOGO_URL:String = (_MAIN_URL + "retry_logo"); public static const INTERLEVEL_MORE_GAMES_URL:String = (_MAIN_URL + "interlevel_more_games"); public static const INTERLEVEL_LOGO_URL:String = (_MAIN_URL + "interlevel_logo"); public static const GAMEPLAY_MORE_GAMES_URL:String = (_MAIN_URL + "gameplay_more_games"); public static const GAMEPLAY_LOGO_URL:String = (_MAIN_URL + "gameplay_logo"); public static const WALKTHROUGH_URL:String = (((((_TDS_URL + "sid=2&tds-cname=") + _GAME_CODE) + "&tds-gname=") + _GAME_CODE) + ".html"); public static const ANY_GAME_URL_START:String = (((_TDS_URL + "sid=3&tds-cname=") + _GAME_CODE) + "&tds-gname="); public static const AD_GAME_1_URL:String = (ANY_GAME_URL_START + "foxnroll-pro.html"); public static const AD_GAME_2_URL:String = (ANY_GAME_URL_START + "werebox.html"); public static const FACEBOOK_PAGE_URL:String = "http://www.facebook.com/GodvilGames"; public static const TWITTER_PAGE_URL:String = "http://www.twitter.com/GodvilGames"; public static const SHARING_URL_DESCRIPTION:String = "This is cool and stylish physical puzzle"; public static const DIRECT_GAME_URL:String = (("http://www.godvilgames.com/games/" + _GAME_CODE) + ".html"); public static const SHARING_URL:String = ((((("http://api.addthis.com/oexchange/0.8/offer?url=" + DIRECT_GAME_URL) + "&title=") + GAME_NAME) + "&pubid=godvilgames&description=") + SHARING_URL_DESCRIPTION); public static const LOCKED_DOMAINS:Array = []; public static const Y8:String = "y8"; public static const Y8_URL:String = "http://y8.com/"; public static var BLOCKED_DOMAINS:Array = ["N2s3ay5jb20sMzgzOS5jb20sam9xb28uY29tLDY1NDMuY29tLGRpZ3VhMTIzLmNvbSwyMTQ0LmNuLDMzNjYuY29tLDM1MjUuY29tLDM4MzkuY29tLDQxOTkuY24sNDM5OXBrLmNvbSw0OTlway5jb20sNTE0Mzk5LmNvbSw1MjUzLmNvbSw2NTQ1LmNuLDY5NDkuY29tLDdrOGs4LmNvbSw4ODYuY29tLDg4eXguY29tLDk1NTUubmV0LGJhb2ZlbmcuY29tLGRpZ3VhMTIzLmNvbSxkdW93YW4uY29tLGYxMzMuY29tLGdhbWVhbmdlbC5jb20saDQzOTkuY29tLGpvcW9vLmNvbSxqb3lnYW1lcy5jb20sa280Mzk5LmNvbSxrdTQzOTkuY29tLGx5b3V4aS5jb20scWsxMDAuY29tLHMzMzY2LmNvbSx0b202MS5jb20sdTE0OC5uZXQseDQzOTkuY29tLHh1aXRlLm5ldCx5eDAwNy5jb20sNTUyMy5jb20sOTQ3Ny5jb20sMjM5OWcuY29tLDUwNjguY29tLDM4MzkuY29tLDdrNzcubmV0LDUwNjguY29tLDR1c2t5LmNvbSwzODM5LmNvbSw0Mzk5OS5jb20sMzM2Ni5jb20sNDM5OS5jb20="]; public static var LITE_BRANDED_DOMAINS:Array = ["a29uZ3JlZ2F0ZS5jb20sbmV3Z3JvdW5kcy5jb20sdXBsb2Fkcy51bmdyb3VuZGVkLm5ldCxnb2R2aWxnYW1lcy5jb20sbG9jYWxob3N0LGZsYXNoZ2FtZWRpc3RyaWJ1dGlvbi5jb20sZmxhc2hnYW1lbGljZW5zZS5jb20sbW9jaGltZWRpYS5jb20sbm90ZG9wcGxlci5jb20sdGFsa2FyY2FkZXMuY29tLHBsYXlqdXRzdS5jb20sa2Fpc2VyZ2FtZXMuZGUsbW9mdW56b25lLmNvbSxmZXR0c3BpZWxlbi5kZSxqYXlpc2dhbWVzLmNvbSx5OA=="]; } }//package
Section 225
//BreakablePlatformMC (BreakablePlatformMC) package { import flash.display.*; public class BreakablePlatformMC extends MovieClip { public function BreakablePlatformMC():void{ addFrameScript(0, this.frame1, 1, this.frame2, 2, this.frame3); } function frame1():void{ stop(); } function frame2():void{ stop(); } function frame3():void{ stop(); } } }//package
Section 226
//ChainBreak (ChainBreak) package { import flash.media.*; public dynamic class ChainBreak extends Sound { } }//package
Section 227
//ChainLinkMC (ChainLinkMC) package { import flash.display.*; public dynamic class ChainLinkMC extends MovieClip { public function ChainLinkMC(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 228
//Chest (Chest) package { import flash.media.*; public dynamic class Chest extends Sound { } }//package
Section 229
//ComicsScreenMC (ComicsScreenMC) package { import flash.display.*; public dynamic class ComicsScreenMC extends MovieClip { public var comicsNext:SimpleButton; public var btnSponsorLogoPreHistory:SimpleButton; } }//package
Section 230
//ContactManager (ContactManager) package { import Box2D.Dynamics.*; import Box2D.Dynamics.Contacts.*; import Objects.*; public class ContactManager extends b2ContactListener { private var MAX_IMPULSE:int;// = 1 private var MAX_IMPULSE_HIT:int;// = 6 override public function BeginContact(_arg1:b2Contact):void{ var _local4:*; var _local5:*; var _local2:* = _arg1.GetFixtureA().GetBody(); var _local3:* = _arg1.GetFixtureB().GetBody(); if ((_local2.GetUserData() is Bullet)){ _local2.GetUserData().calculateCollisions(); }; if ((_local3.GetUserData() is Bullet)){ _local3.GetUserData().calculateCollisions(); }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is ChainLink)))){ GlobalStorage.gameLogic.breakTheChain(_local3.GetUserData()); _local2.GetUserData().destroy(); Sounds.PlaySnd("ChineBreak"); }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is ChainLink)))){ GlobalStorage.gameLogic.breakTheChain(_local2.GetUserData()); _local3.GetUserData().destroy(); Sounds.PlaySnd("ChineBreak"); }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is Bottle1)))){ _local3.GetUserData().destroy(); _local2.GetUserData().destroy(); playGlassSound(); }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is Bottle1)))){ _local2.GetUserData().destroy(); _local3.GetUserData().destroy(); playGlassSound(); }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is IcePlatform)))){ _local3.GetUserData().destroy(); _local2.GetUserData().destroy(); Sounds.PlaySnd("IceBreak"); }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is IcePlatform)))){ _local2.GetUserData().destroy(); _local3.GetUserData().destroy(); Sounds.PlaySnd("IceBreak"); }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is IceDynPlatform)))){ _local3.GetUserData().destroy(); _local2.GetUserData().destroy(); Sounds.PlaySnd("IceBreak"); }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is IceDynPlatform)))){ _local2.GetUserData().destroy(); _local3.GetUserData().destroy(); Sounds.PlaySnd("IceBreak"); }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is GoalObject)))){ if (!_local3.GetUserData().destroyed){ _local3.GetUserData().destroy(); _local3.GetUserData().addScore(_local3.GetUserData().objectMC.x, _local3.GetUserData().objectMC.y); GlobalStorage.curLevel.addBonusScore(); Sounds.PlaySnd("Chest"); }; }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is GoalObject)))){ if (!_local2.GetUserData().destroyed){ _local2.GetUserData().destroy(); _local2.GetUserData().addScore(_local2.GetUserData().objectMC.x, _local2.GetUserData().objectMC.y); GlobalStorage.curLevel.addBonusScore(); Sounds.PlaySnd("Chest"); }; }; if ((((_local2.GetUserData() is Bullet)) && ((_local3.GetUserData() is SkullForShoot)))){ if (!_local3.GetUserData().destroyed){ _local3.GetUserData().destroy(); _local2.GetUserData().destroy(); _local3.GetUserData().addScore(_local3.GetUserData().objectMC.x, _local3.GetUserData().objectMC.y); GlobalStorage.curLevel.addBonusScore(); Sounds.PlaySnd("Skull3"); }; }; if ((((_local3.GetUserData() is Bullet)) && ((_local2.GetUserData() is SkullForShoot)))){ if (!_local2.GetUserData().destroyed){ _local2.GetUserData().destroy(); _local3.GetUserData().destroy(); _local2.GetUserData().addScore(_local2.GetUserData().objectMC.x, _local2.GetUserData().objectMC.y); GlobalStorage.curLevel.addBonusScore(); Sounds.PlaySnd("Skull3"); }; }; if ((((_local2.GetUserData() is GoalObject)) && ((_local3.GetUserData() is Ground)))){ _local2.GetUserData().addSplash(_local2.GetUserData().objectMC.x); if (!GlobalStorage.vikingRunning){ GlobalStorage.createViking = true; }; }; if ((((_local3.GetUserData() is GoalObject)) && ((_local2.GetUserData() is Ground)))){ _local3.GetUserData().addSplash(_local2.GetUserData().objectMC.x); if (!GlobalStorage.vikingRunning){ GlobalStorage.createViking = true; }; }; if ((((_local2.GetUserData() is DynamicRoundObject)) && ((_local3.GetUserData() is Ground)))){ if (!_local2.GetUserData().objectInWater){ _local2.GetUserData().objectInWater = true; }; }; if ((((_local3.GetUserData() is DynamicRoundObject)) && ((_local2.GetUserData() is Ground)))){ if (!_local3.GetUserData().objectInWater){ _local3.GetUserData().objectInWater = true; }; }; if ((((_local2.GetUserData() is MovingPlatformSensor)) && ((_local3.GetUserData() is MovingPlatformSensor)))){ _local4 = _local2.GetUserData().GetBody().GetJointList(); while (_local4) { if (_local4.other.GetUserData() != null){ _local4.other.GetUserData().move(); }; _local4 = _local4.next; }; }; if ((((_local3.GetUserData() is MovingPlatformSensor)) && ((_local2.GetUserData() is MovingPlatformSensor)))){ _local5 = _local3.GetUserData().GetBody().GetJointList(); while (_local5) { if (_local5.other.GetUserData() != null){ _local5.other.GetUserData().move(); }; _local5 = _local5.next; }; }; } private function playGlassSound():void{ var _local1:String; var _local2:int = (Math.random() * 8); switch (_local2){ case 0: _local1 = "BottleCrush1"; break; case 1: _local1 = "BottleCrush2"; break; case 2: _local1 = "BottleCrush3"; break; case 3: _local1 = "BottleCrush4"; break; case 4: _local1 = "BottleCrush5"; break; case 5: _local1 = "BottleCrush6"; break; case 6: _local1 = "BottleCrush7"; break; case 7: _local1 = "BottleCrush8"; break; default: break; }; Sounds.PlaySnd(_local1); } override public function EndContact(_arg1:b2Contact):void{ var _local2:* = _arg1.GetFixtureA().GetBody(); var _local3:* = _arg1.GetFixtureB().GetBody(); } override public function PostSolve(_arg1:b2Contact, _arg2:b2ContactImpulse):void{ var _local3:* = _arg1.GetFixtureA().GetBody(); var _local4:* = _arg1.GetFixtureB().GetBody(); if ((_local4.GetUserData() as Bottle1)){ if ((((((_arg2.normalImpulses[0] >= MAX_IMPULSE_HIT)) && ((_arg2.normalImpulses[0] <= 10)))) && (!((_local3.GetUserData() == Bullet))))){ if ((_local3.GetUserData() as Bullet)){ } else { Sounds.PlaySnd("BottleTuk"); }; }; }; if ((_local3.GetUserData() as Bottle1)){ if ((((((_arg2.normalImpulses[0] >= MAX_IMPULSE_HIT)) && ((_arg2.normalImpulses[0] <= 10)))) && (!((_local4.GetUserData() == Bullet))))){ if ((_local4.GetUserData() as Bullet)){ } else { Sounds.PlaySnd("BottleTuk"); }; }; }; if ((_local3.GetUserData() is Bomb)){ if (_arg2.normalImpulses[0] >= MAX_IMPULSE){ _local3.GetUserData().activate(); }; }; if ((_local4.GetUserData() as Bomb)){ if (_arg2.normalImpulses[0] >= MAX_IMPULSE){ _local4.GetUserData().activate(); }; }; if ((_local3.GetUserData() is TntBarrel)){ if (_arg2.normalImpulses[0] >= MAX_IMPULSE){ _local3.GetUserData().activate(); }; }; if ((_local4.GetUserData() as TntBarrel)){ if (_arg2.normalImpulses[0] >= MAX_IMPULSE){ _local4.GetUserData().activate(); }; }; } } }//package
Section 231
//crossBtn (crossBtn) package { import flash.display.*; public dynamic class crossBtn extends SimpleButton { } }//package
Section 232
//CustomCursor (CustomCursor) package { import flash.display.*; public class CustomCursor extends MovieClip { public var arrowCursor:MovieClip; public var swordCursor:SwordCursor; public function CustomCursor(){ this.mouseEnabled = false; this.mouseChildren = false; } } }//package
Section 233
//DRec_NabaldMolot_mc (DRec_NabaldMolot_mc) package { import flash.display.*; public dynamic class DRec_NabaldMolot_mc extends MovieClip { } }//package
Section 234
//DRec_palka2 (DRec_palka2) package { import flash.display.*; public dynamic class DRec_palka2 extends MovieClip { } }//package
Section 235
//DRec_ruchkaMolot_mc (DRec_ruchkaMolot_mc) package { import flash.display.*; public dynamic class DRec_ruchkaMolot_mc extends MovieClip { } }//package
Section 236
//DynamicBrevnoMC (DynamicBrevnoMC) package { import flash.display.*; public dynamic class DynamicBrevnoMC extends MovieClip { } }//package
Section 237
//ExplosionCentreMC (ExplosionCentreMC) package { import flash.display.*; public class ExplosionCentreMC extends MovieClip { } }//package
Section 238
//FuseSnd (FuseSnd) package { import flash.media.*; public dynamic class FuseSnd extends Sound { } }//package
Section 239
//GameLogic (GameLogic) package { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import flash.geom.*; import flash.display.*; import Objects.*; import Fla.*; public class GameLogic { private var degrees:Number; private var transformCoef:Number; private var distance:Number; private var radians:Number; private var limitForDistancePlayerAnim:Number;// = 80 private var bulletsAngleRadians:Number; public function GameLogic(){ GlobalStorage.stageLink.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove); GlobalStorage.stageLink.addEventListener(MouseEvent.MOUSE_DOWN, click); } private function checkIfBodyUnderMouse():b2Body{ var mouseXWorldPhys:Number; var mouseYWorldPhys:Number; var aabb:b2AABB; var bodyUnderMouse:b2Body; var fixtureOfbodyUnderMouse:b2Fixture; var GetBodyCallback:Function; GetBodyCallback = function (_arg1:b2Fixture):Boolean{ bodyUnderMouse = GlobalStorage.world.GetBodyList(); return (true); }; var mousePVec:b2Vec2 = new b2Vec2(); var prmRadius:Number = 1; mouseXWorldPhys = (GlobalStorage.stageLink.mouseX / GlobalStorage.physScale); mouseYWorldPhys = (GlobalStorage.stageLink.mouseY / GlobalStorage.physScale); mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys); aabb = new b2AABB(); aabb.lowerBound.Set((mouseXWorldPhys - prmRadius), (mouseYWorldPhys - prmRadius)); aabb.upperBound.Set((mouseXWorldPhys + prmRadius), (mouseYWorldPhys + prmRadius)); GlobalStorage.world.QueryAABB(GetBodyCallback, aabb); trace(("bodyUnderMouse " + bodyUnderMouse.GetUserData())); return (bodyUnderMouse); } private function click(_arg1:MouseEvent):void{ if (((!((_arg1.target.toString() == "[object SimpleButton]"))) && (!((GlobalStorage.totallNumsOfBulletPerLvl == 0))))){ GlobalStorage.parrotsHand.gotoAndPlay(2); shoot(); GlobalStorage.totallNumsOfBulletPerLvl--; GUI.refreshBulletTxt(); Sounds.PlaySnd("GunShot"); } else { if (GlobalStorage.totallNumsOfBulletPerLvl <= 0){ Sounds.PlaySnd("GunCock"); GlobalStorage.curLevel.addOutOfAmmoBoard(); }; }; } private function mouseMove(_arg1:MouseEvent):void{ mathCalculateUtils(); handWithGunMove(degrees, transformCoef); } private function mathCalculateUtils():void{ var _local1:Number = GlobalStorage.stageLink.mouseX; var _local2:Number = GlobalStorage.stageLink.mouseY; var _local3:Number = (_local1 - GlobalStorage.parrotsHand.x); var _local4:Number = (_local2 - GlobalStorage.parrotsHand.y); distance = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); radians = Math.atan2(_local4, _local3); if (radians <= -1.3){ radians = -1.3; } else { if (radians >= 0.01){ radians = 0.01; }; }; degrees = ((radians * 180) / Math.PI); transformCoef = (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))) / 100); if (transformCoef >= 1){ transformCoef = 1; }; if (distance >= GlobalStorage.maxForceOrDistance){ distance = GlobalStorage.maxForceOrDistance; }; } private function shoot():void{ var _local1:MovieClip = GlobalStorage.parrotsHand; var _local2:Point = new Point(_local1.bulletsBositionMC.x, _local1.bulletsBositionMC.y); var _local3:Point = _local1.localToGlobal(_local2); var _local4:BulletMC = new BulletMC(); _local4.x = _local3.x; _local4.y = _local3.y; GlobalStorage._globalLvlvMC.addChild(_local4); var _local5:Bullet = new Bullet(_local4, GlobalStorage.world, calculateBulletsDirection(_local3)); GlobalStorage.numOfShots++; trace(("Num of shots " + GlobalStorage.numOfShots)); } private function handWithGunMove(_arg1:Number, _arg2:Number):void{ GlobalStorage.parrotsHand.rotation = _arg1; } private function calculateBulletsDirection(_arg1:Point):Number{ var _local2:Number = GlobalStorage.stageLink.mouseX; var _local3:Number = GlobalStorage.stageLink.mouseY; var _local4:Number = (_local2 - _arg1.x); var _local5:Number = (_local3 - _arg1.y); bulletsAngleRadians = Math.atan2(_local5, _local4); if (bulletsAngleRadians <= -1.3){ bulletsAngleRadians = -1.3; } else { if (bulletsAngleRadians >= 0.01){ bulletsAngleRadians = 0.01; }; }; return ((bulletsAngleRadians - GlobalStorage.bulletsGravitationCorrectionInRadians)); } public function breakTheChain(_arg1):void{ var _local2:*; if (_arg1.markAsBreak == false){ _arg1.markAsBreak = true; _local2 = _arg1.GetBody().GetJointList(); while (_local2) { if (((!((_local2.other.GetUserData() == null))) && ((_local2.other.GetUserData().toString() == "[object ChainLink]")))){ breakTheChain(_local2.other.GetUserData()); _local2.other.GetUserData().destroy(); }; _local2 = _local2.next; }; }; } public function destroy():void{ GlobalStorage.stageLink.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove); GlobalStorage.stageLink.removeEventListener(MouseEvent.MOUSE_DOWN, click); } } }//package
Section 240
//GameUpdate (GameUpdate) package { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import flash.display.*; import Objects.*; import flash.text.*; public class GameUpdate { private var trailParticlesCounter:int;// = 0 public function GameUpdate(){ TimeMaster.init(); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, update); } private function update(_arg1:Event):void{ GlobalStorage.world.Step(TimeMaster.getTimeStep(), 10, 10); var _local2:MovieClip; GlobalStorage.stageLink.focus = GlobalStorage.stageLink; var _local3:b2Body = GlobalStorage.world.GetBodyList(); managePhysicsChanges(); while (_local3) { if ((_local3.GetUserData() is GameObject)){ _local2 = GameObject(_local3.GetUserData()).objectMC; _local2.y = (_local3.GetPosition().y * GlobalStorage.physScale); _local2.x = (_local3.GetPosition().x * GlobalStorage.physScale); _local2.rotation = ((_local3.GetAngle() * (180 / Math.PI)) % 360); }; _local3 = _local3.GetNext(); }; GlobalStorage.world.ClearForces(); GlobalStorage.world.DrawDebugData(); } private function managePhysicsChanges():void{ var _local1:int; var _local2:MovieClip; var _local3:Viking; var _local4:ExplosionSensor; var _local5:int; if (GlobalStorage.createViking){ GlobalStorage.createViking = false; GlobalStorage.vikingRunning = true; _local2 = new VikingMC(); _local2.x = -40; _local2.y = 509; GlobalStorage.curLevel._LevelMC.addChildAt(_local2, (GlobalStorage.seaChildNum - 1)); _local3 = new Viking(_local2, GlobalStorage.world); }; if (GlobalStorage.destroyBodiesList.length > 0){ _local1 = 0; while (_local1 < GlobalStorage.destroyBodiesList.length) { if ((GlobalStorage.destroyBodiesList[_local1] is b2Body)){ GlobalStorage.world.DestroyBody(b2Body(GlobalStorage.destroyBodiesList[_local1])); }; _local1++; }; GlobalStorage.destroyBodiesList = new Array(); checkWin(); }; if (GlobalStorage.createExplosionsList.length > 0){ _local5 = 0; while (_local5 < GlobalStorage.createExplosionsList.length) { if ((GlobalStorage.createExplosionsList[_local5] as b2Vec2)){ _local4 = new ExplosionSensor(b2Vec2(GlobalStorage.createExplosionsList[_local5]), 10); }; _local5++; }; GlobalStorage.createExplosionsList = new Array(); }; } private function checkWin():void{ if ((((GlobalStorage.bottleObjectRemaining <= 0)) && (!(GlobalStorage.win)))){ GlobalStorage.curLevel.win(); GlobalStorage.win = true; }; } private function debugDraw():void{ var _local1:b2DebugDraw = new b2DebugDraw(); var _local2:Sprite = new Sprite(); GlobalStorage.stageLink.addChild(_local2); _local1.SetSprite(_local2); _local1.SetLineThickness(0.5); _local1.SetFillAlpha(0.1); _local1.SetDrawScale(GlobalStorage.physScale); _local1.SetFlags((b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit)); GlobalStorage.world.SetDebugDraw(_local1); } public function destroy():void{ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, update); } } }//package
Section 241
//GlobalStorage (GlobalStorage) package { import Box2D.Dynamics.*; import flash.geom.*; import flash.display.*; import flash.net.*; public class GlobalStorage { public static const MAIN_MENU:int = 1; public static const LEVEL_CHOOSE_MENU:int = 2; public static const LEVEL_PLAY:int = 3; public static const COMICS_SCREEN:int = 4; public static var world:b2World; public static var main:VikingMain; public static var physScale:int = 35; public static var lvlID:int; public static var stageLink:Stage; public static var curLevel:Level; public static var gameUpdate:GameUpdate; public static var gameLogic:GameLogic; public static var frameRate:Number = 35; public static var slowTime:Number = 5; public static var zoomIn:Number = 3; public static var destroyBodiesList:Array; public static var createExplosionsList:Array; public static var goalsObjectRemaining:int = 0; public static var bottleObjectRemaining:int = 0; public static var alreadyHasGoals:int = 0; public static var createViking:Boolean = false; public static var vikingRunning:Boolean = false; public static var addWater:Boolean = false; public static var waterPoint:Number; public static var totalNumOfLevels:int = 20; public static var soundOn:Boolean = true; public static var musicOn:Boolean = true; public static var curZastavka:MovieClip; public static var curState:int; public static var waitSplash:int = 250; public static var waitChangeGameState:int = 16; public static var splashScreen:MovieClip; public static var maxLvlID:int = 1; public static var curTime:int; public static var seaChildNum:int; public static var customCursor:MovieClip; public static var arrowCursorVisible:Boolean = true; public static var sharedCache:SharedObject; public static var skullBallX:Number; public static var skullBallY:Number; public static var shootPointer:MovieClip; public static var minRadiusOfTraectoryCircle:Number = 0.2; public static var cameraMC:Sprite; public static var zombiePlayer:MovieClip; public static var centerOfZoom:Point; public static var allowZoomSensor:Boolean; public static var trailParticlesArray:Array; public static var _globalLvlvMC:Sprite; public static var skullChildNum:int; public static var fakeWorld:b2World; public static var headTrail:HeadTrail; public static var timeBeforeLvlEnd:Number = 30; public static var maxForceOrDistance:Number = 70; public static var numOfSkull:int = 0; public static var skullBallScale:Number; public static var allowZoomOutSound:Boolean = false; public static var motorJointsArray:Array; public static var parrotsHand:MovieClip; public static var parrotsBody:MovieClip; public static var bulletsPower:Number = 2; public static var bulletsGravitationCorrectionInRadians:Number = 0.01; public static var maxNumOfCollisions:Number = 6; public static var medals:Medals; public static var numOfShots:int = 0; public static var win:Boolean = false; public static var numOfBulletForSilver:int = 2; public static var platformXSpeed:int = 5; public static var totallNumsOfBulletPerLvl:int; public static var bonusScore:int = 150; public static var mochiCont:MovieClip = new MovieClip(); public function GlobalStorage():void{ } } }//package
Section 242
//GroundMC (GroundMC) package { import flash.display.*; public dynamic class GroundMC extends MovieClip { } }//package
Section 243
//GUI (GUI) package { import flash.events.*; import flash.display.*; import mochi.as3.*; import flash.net.*; import Fla.*; import flash.text.*; import ru.antkarlov.animation.*; public class GUI { public static var curScreen:MovieClip; private static var keyboardEventAdded:Boolean = false; private static var spaceKeyTimePress:int = 25; private static var spaceKeyAllow:Boolean = true; private static var spaceKeyTimerI:int = 0; private static var sponsorUrl:String; private static var iGetDomain:String; private static var showComics:Boolean = false; private static var moreGamesMainMenu:String = "http://www.bigdino.com/goto.php?id=958&link=moreGamesMainMenu"; private static var moreGamesLevelChooseMenu:String = "http://www.bigdino.com/goto.php?id=958&link=moreGamesLevelChooseMenu"; private static var moreGamesLevelFinishMenu:String = "http://www.bigdino.com/goto.php?id=958&link=moreGamesCompleteLevel"; private static var moreGamesFailedMenu:String = "http://www.bigdino.com/goto.php?id=958&link=moreGamesFailedLevel"; private static var logoMainMenu:String = "http://www.bigdino.com/goto.php?id=958&link=logoMainMenu"; private static var logoChooseLevelMenu:String = "http://www.bigdino.com/goto.php?id=958&link=ChooseLevelMenu"; private static var logoLvlMenu:String = "http://www.bigdino.com/goto.php?id=958&link=logoInGame"; private static var logoFinishLvlMenu:String = "http://www.bigdino.com/goto.php?id=958&link=logoCompleteLevel"; private static var logoFailLvlMenu:String = "http://www.bigdino.com/goto.php?id=958&link=logoFailedLevel"; private static var logoPreHistoryMenu:String = "http://www.bigdino.com/goto.php?id=958&link=logoPreHistoryMenu"; public function GUI(){ getDomain(); } public static function newScreen(_arg1:int):void{ if (curScreen){ GlobalStorage.stageLink.removeChild(curScreen); curScreen = null; }; switch (_arg1){ case GlobalStorage.MAIN_MENU: curScreen = new MainMenuMC(); GlobalStorage.stageLink.addChild(curScreen); setVars(curScreen); addListeners(curScreen); removeKeyboardEvent(); break; case GlobalStorage.LEVEL_CHOOSE_MENU: curScreen = new LevelChooseMenuMC(); GlobalStorage.stageLink.addChild(curScreen); setVars(curScreen); trace(("add listnres 2 " + curScreen)); addListeners(curScreen); showMedals(curScreen); removeKeyboardEvent(); break; case GlobalStorage.LEVEL_PLAY: curScreen = new LvlMenuMC(); GlobalStorage.stageLink.addChild(curScreen); setVars(curScreen); addListeners(curScreen); break; case GlobalStorage.COMICS_SCREEN: curScreen = new ComicsScreenMC(); GlobalStorage.stageLink.addChild(curScreen); setVars(curScreen); addListeners(curScreen); break; }; } public static function refreshLevelsScreen():void{ trace(("curScreen " + curScreen)); spaceKeyAllow = true; newScreen(2); } public static function showMedals(_arg1):void{ var _local3:*; var _local4:*; var _local5:String; var _local6:String; var _local2:int; while (_arg1.numChildren > _local2) { if ((_arg1.getChildAt(_local2) as MedalsForLvlsBtn)){ _local4 = curScreen.getChildAt(_local2); _local5 = _local4.name; if (_local5.charAt(0) == "m"){ _local3 = curScreen.getChildAt(_local2).name.substr(1); _local6 = GlobalStorage.medals.medalsGet(int(_local3)); }; }; switch (_local6){ case "gold": _local4.gotoAndStop("gold"); break; case "silver": _local4.gotoAndStop("silver"); break; case "bronze": _local4.gotoAndStop("bronze"); break; case "none": _local4.gotoAndStop("none"); break; }; _local2++; }; } public static function addListeners(_arg1:MovieClip):void{ var _local2:int; while (_local2 < _arg1.numChildren) { if ((_arg1.getChildAt(_local2) is SimpleButton)){ SimpleButton(_arg1.getChildAt(_local2)).addEventListener(MouseEvent.CLICK, btnClicked); trace(("listnrs added 2 " + _arg1.getChildAt(_local2).name)); }; if ((_arg1.getChildAt(_local2) as MovieClip)){ if (MovieClip(_arg1.getChildAt(_local2)).name == "sound"){ if (GlobalStorage.soundOn){ MovieClip(_arg1.getChildAt(_local2)).gotoAndStop("soundOn"); } else { MovieClip(_arg1.getChildAt(_local2)).gotoAndStop("soundOff"); }; MovieClip(_arg1.getChildAt(_local2)).addEventListener(MouseEvent.CLICK, btnClicked); }; if (MovieClip(_arg1.getChildAt(_local2)).name == "music"){ if (GlobalStorage.musicOn){ MovieClip(_arg1.getChildAt(_local2)).gotoAndStop("musicOn"); } else { MovieClip(_arg1.getChildAt(_local2)).gotoAndStop("musicOff"); }; MovieClip(_arg1.getChildAt(_local2)).addEventListener(MouseEvent.CLICK, btnClicked); }; }; _local2++; }; } public static function addKeyListener():void{ GlobalStorage.stageLink.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); keyboardEventAdded = true; } private static function keyDown(_arg1:KeyboardEvent):void{ if (((spaceKeyAllow) && ((_arg1.keyCode == 32)))){ spaceKeyAllow = false; trace("space"); GlobalStorage.curLevel.destroy(); GlobalStorage.gameLogic.destroy(); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_PLAY); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); }; } private static function spaceKeyAllowFunc(_arg1:Event){ spaceKeyTimerI++; if (spaceKeyTimerI > spaceKeyTimePress){ spaceKeyTimerI = 0; GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); spaceKeyAllow = true; }; } private static function removeKeyboardEvent():void{ if (keyboardEventAdded){ GlobalStorage.stageLink.removeEventListener(KeyboardEvent.KEY_DOWN, keyDown); keyboardEventAdded = false; }; } public static function removeBtnListeners():void{ var _local1:int; while (_local1 < curScreen.numChildren) { if ((curScreen.getChildAt(_local1) is SimpleButton)){ SimpleButton(curScreen.getChildAt(_local1)).removeEventListener(MouseEvent.CLICK, btnClicked); }; _local1++; }; removeKeyboardEvent(); } private static function btnClicked(_arg1:MouseEvent):void{ var o:Object; var boardID:String; var playerscore:Number; var helpUrl:String; var add2Site:String; var tempChar:String; var e = _arg1; trace(("objct names " + e.currentTarget.name)); if ((e.currentTarget is MovieClip)){ if (MovieClip(e.currentTarget).name == "sound"){ trace("Sound"); if (GlobalStorage.soundOn){ GlobalStorage.soundOn = false; MovieClip(e.currentTarget).gotoAndStop("soundOff"); trace("soundOff"); Sounds.sndEnable = false; } else { GlobalStorage.soundOn = true; MovieClip(e.currentTarget).gotoAndStop("soundOn"); trace("soundOn"); Sounds.sndEnable = true; }; }; if (MovieClip(e.currentTarget).name == "music"){ trace("Music"); if (GlobalStorage.musicOn){ GlobalStorage.musicOn = false; MovieClip(e.currentTarget).gotoAndStop("musicOff"); trace("musicOff"); Music.played(false); Music.musEnable = false; } else { GlobalStorage.musicOn = true; MovieClip(e.currentTarget).gotoAndStop("musicOn"); trace("musicOn"); Music.played(true); Music.musEnable = true; Music.fadeTo("MainTheme"); }; }; }; if ((((e.currentTarget is SimpleButton)) && (spaceKeyAllow))){ switch (SimpleButton(e.currentTarget).name){ case "start": if (!showComics){ showComics = true; trace("comics"); GlobalStorage.main.changeGameState(GlobalStorage.COMICS_SCREEN); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); } else { trace("ne comics"); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_CHOOSE_MENU); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); }; break; case "nextLvl": GlobalStorage.lvlID++; trace(("GlobalStorage.lvlID " + GlobalStorage.lvlID)); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_PLAY); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "retry": GlobalStorage.curLevel.destroy(); GlobalStorage.gameLogic.destroy(); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_PLAY); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "toLvlMenu": GlobalStorage.curLevel.destroy(); GlobalStorage.gameLogic.destroy(); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_CHOOSE_MENU); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "toMainMenu": GlobalStorage.main.changeGameState(GlobalStorage.MAIN_MENU); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "hs_btn": spaceKeyAllow = false; GlobalStorage.stageLink.setChildIndex(GlobalStorage.mochiCont, (GlobalStorage.stageLink.numChildren - 1)); o = {n:[14, 2, 12, 6, 1, 8, 0, 11, 2, 0, 15, 4, 3, 15, 3, 5], 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, ""); playerscore = (ScoreManager.getTotalScore() - 1); MochiScores.showLeaderboard({boardID:boardID, score:playerscore}); trace("HighScore Btn"); break; case "moreGamesMainMenu": navigateToURL(new URLRequest(moreGamesMainMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "moreGamesLevelChooseMenu": navigateToURL(new URLRequest(moreGamesLevelChooseMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "moreGamesLevelFinish": navigateToURL(new URLRequest(moreGamesLevelFinishMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "moreGamesLevelFiailed": navigateToURL(new URLRequest(moreGamesFailedMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "moreGamesGamePlay": navigateToURL(new URLRequest(BrandingSettings.GAMEPLAY_MORE_GAMES_URL), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoMainMenu": navigateToURL(new URLRequest(logoMainMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoLevelChooseMenu": navigateToURL(new URLRequest(logoChooseLevelMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoLvl": navigateToURL(new URLRequest(logoLvlMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoFinishLvl": navigateToURL(new URLRequest(logoFinishLvlMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoFailedLvl": navigateToURL(new URLRequest(logoFailLvlMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "btnSponsorLogoPreHistory": navigateToURL(new URLRequest(logoPreHistoryMenu), "_blank"); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "helpBtn": helpUrl = "http://www.bigdino.com/goto.php?id=958&action=walkthrough&passvar=sos-pirates&link=walkthrough"; navigateToURL(new URLRequest(helpUrl), "_blank"); break; case "comicsNext": GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_CHOOSE_MENU); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); break; case "addToSiteBtn": add2Site = "http://www.bigdino.com/goto.php?id=958&action=addtosite&link=addtosite"; navigateToURL(new URLRequest(add2Site), "_blank"); break; }; if ((((SimpleButton(e.currentTarget).name.charAt(0) == "_")) && (spaceKeyAllow))){ tempChar = SimpleButton(e.currentTarget).name; tempChar = tempChar.substr(1); GlobalStorage.lvlID = int(tempChar); trace(("LVL " + GlobalStorage.lvlID)); GlobalStorage.main.changeGameState(GlobalStorage.LEVEL_PLAY); spaceKeyAllow = false; GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, spaceKeyAllowFunc); }; }; } private static function getDomain():void{ var _local1:String = GlobalStorage.stageLink.loaderInfo.loaderURL; var _local2:int = (_local1.indexOf("://") + 3); var _local3:String = _local1.substr(_local2, 4); if (_local3 == "www."){ _local2 = (_local2 + 4); }; var _local4:Number = _local1.indexOf("/", _local2); var _local5:String = _local1.substring(_local2, _local4); var _local6:LocalConnection = new LocalConnection(); if (_local6.domain == "localhost"){ _local5 = "localhost"; }; var _local7 = "http://www.myfootballgames.co.uk/?utm_source="; var _local8 = "&utm_medium=referral-games&utm_campaign=zombie-soccer"; iGetDomain = ((_local7 + _local5) + _local8); sponsorUrl = iGetDomain; } public static function setVars(_arg1:MovieClip):void{ var _local3:MovieClip; var _local4:TextField; var _local2:int; while (_local2 < _arg1.numChildren) { if ((_arg1.getChildAt(_local2) is TextField)){ _local4 = (_arg1.getChildAt(_local2) as TextField); switch (_local4.name){ case "scoreTxt": _local4.text = String((ScoreManager.getTotalScore() - 1)); break; case "scoreAtLvlCompleteTxt": _local4.text = String(GlobalStorage.curLevel.curScore); break; case "lvlTxt": _local4.text = String(GlobalStorage.lvlID); break; case "bulletTxt": _local4.text = String(GlobalStorage.totallNumsOfBulletPerLvl); break; default: break; }; }; if ((_arg1.getChildAt(_local2) is MovieClip)){ _local3 = (_arg1.getChildAt(_local2) as MovieClip); if (_local3.name){ switch (_local3.name){ case "lvlMask": _local3.gotoAndStop(GlobalStorage.maxLvlID); break; }; }; }; _local2++; }; } public static function setScores(_arg1:int){ var _local2:TextField; var _local3:int; while (_local3 < curScreen.numChildren) { if ((curScreen.getChildAt(_local3) is TextField)){ _local2 = (curScreen.getChildAt(_local3) as TextField); switch (_local2.name){ case "scoreTxt": _local2.text = String(_arg1); break; default: break; }; }; _local3++; }; } public static function refreshBulletTxt(){ var _local1:TextField; var _local2:int; while (_local2 < curScreen.numChildren) { if ((curScreen.getChildAt(_local2) is TextField)){ _local1 = (curScreen.getChildAt(_local2) as TextField); switch (_local1.name){ case "bulletTxt": _local1.text = String(GlobalStorage.totallNumsOfBulletPerLvl); break; default: break; }; }; _local2++; }; } } }//package
Section 244
//GunCock (GunCock) package { import flash.media.*; public dynamic class GunCock extends Sound { } }//package
Section 245
//GunShot4 (GunShot4) package { import flash.media.*; public dynamic class GunShot4 extends Sound { } }//package
Section 246
//HandsTurnAroundMC (HandsTurnAroundMC) package { import flash.display.*; public dynamic class HandsTurnAroundMC extends MovieClip { } }//package
Section 247
//HeadSpinZombieMC (HeadSpinZombieMC) package { import flash.display.*; public dynamic class HeadSpinZombieMC extends MovieClip { } }//package
Section 248
//HeadTrail (HeadTrail) package { import flash.display.*; public class HeadTrail extends MovieClip { private var trailParticlesCounter:int;// = 0 private var childIndex:int; public function HeadTrail(_arg1:int){ childIndex = _arg1; GlobalStorage.trailParticlesArray = []; initParticles(); } private function initParticles():void{ var _local1:HeadTrailParticle; var _local2 = 180; var _local3:int; while (_local3 < _local2) { _local1 = new HeadTrailParticle(); _local1.visible = true; GlobalStorage._globalLvlvMC.addChildAt(_local1, (childIndex - 1)); GlobalStorage.trailParticlesArray.push(_local1); _local3++; }; } public function removeTrail():void{ var _local1:HeadTrailParticle; for each (_local1 in GlobalStorage.trailParticlesArray) { GlobalStorage._globalLvlvMC.addChildAt(_local1, (childIndex - 1)); }; } } }//package
Section 249
//HeadTrailParticle (HeadTrailParticle) package { import flash.display.*; import com.greensock.*; public class HeadTrailParticle extends MovieClip { private var tween:TweenLite; private var skullSpeed:Number; public function HeadTrailParticle(){ initTween(); } private function initShape():void{ var _local1:Shape = new Shape(); _local1.graphics.beginFill(0xFFF000, 0.33); _local1.graphics.drawCircle(100, 100, 100); var _local2:* = _local1; GlobalStorage._globalLvlvMC.addChildAt(_local2, (GlobalStorage.skullChildNum + 1)); _local2.x = (_local2.x - (_local2.width * 0.5)); _local2.y = (_local2.y - (_local2.height * 0.5)); } private function initTween():void{ tween = new TweenLite(this, 0.75, {scaleX:0, scaleY:0, onComplete:reset}); } public function start(_arg1:Number):void{ tween.restart(); skullSpeed = _arg1; } private function reset():void{ scaleX = 1; scaleY = 1; visible = false; } } }//package
Section 250
//IceBreak2 (IceBreak2) package { import flash.media.*; public dynamic class IceBreak2 extends Sound { } }//package
Section 251
//JustBarrelMC (JustBarrelMC) package { import flash.display.*; public dynamic class JustBarrelMC extends MovieClip { } }//package
Section 252
//LDRec_palka (LDRec_palka) package { import flash.display.*; public dynamic class LDRec_palka extends MovieClip { } }//package
Section 253
//LDRec_palka2 (LDRec_palka2) package { import flash.display.*; public dynamic class LDRec_palka2 extends MovieClip { } }//package
Section 254
//LDRec_YashchikMC (LDRec_YashchikMC) package { import flash.display.*; public dynamic class LDRec_YashchikMC extends MovieClip { } }//package
Section 255
//Level (Level) package { import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.Shapes.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import Objects.*; import Joints.*; public class Level extends Sprite { public var _LevelMC:Sprite; public var ground:b2Body; public var world:b2World; public var weightController:b2ConstantAccelController; public var lightController:b2ConstantAccelController; public var lightningController:b2ConstantAccelController; public var waterController:b2BuoyancyController; public var curScore:int;// = 1000 private var timer:Timer; private var timePerLvl:int;// = 1000 private var boardCount:int;// = 0 private var bombsArray:Array; private var scoreTime:int;// = 5 private var childNumSkull:int; private var fakeWorld:b2World; private var fakeGround:b2Body; public function Level():void{ bombsArray = []; super(); GlobalStorage.curLevel = this; GlobalStorage.createViking = false; GlobalStorage.vikingRunning = false; GlobalStorage.addWater = false; GlobalStorage.bottleObjectRemaining = 0; GlobalStorage.numOfShots = 0; GlobalStorage.win = false; GlobalStorage.totallNumsOfBulletPerLvl = 20; var _local1:Class = (GlobalStorage.stageLink.loaderInfo.applicationDomain.getDefinition(("Level" + GlobalStorage.lvlID)) as Class); trace(("GlobalStorage.lvlID Cur LVL " + GlobalStorage.lvlID)); _LevelMC = new (_local1); GlobalStorage._globalLvlvMC = _LevelMC; GlobalStorage.main.addChild(_LevelMC); createBox2DWorld(); createBox2DObjects(); createBox2DJoints(); var _local2:ContactManager = new ContactManager(); GlobalStorage.world.SetContactListener(_local2); createBox2DControllers(); if (GlobalStorage.addWater){ AddBodiesToWater(); }; GlobalStorage.destroyBodiesList = new Array(); GlobalStorage.createExplosionsList = new Array(); GlobalStorage.gameUpdate = new GameUpdate(); GlobalStorage.gameLogic = new GameLogic(); GUI.addKeyListener(); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, scoreDecrease); } private function scoreDecrease(_arg1:Event):void{ if (curScore == 1000){ GUI.setScores(curScore); }; scoreTime--; if (scoreTime == 0){ scoreTime = 5; curScore--; GUI.setScores(curScore); if (curScore <= 0){ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, scoreDecrease); }; }; } public function addBonusScore(){ curScore = (curScore + GlobalStorage.bonusScore); var _local1:int = (curScore + GlobalStorage.bonusScore); trace(("curScore added " + _local1)); } private function createBox2DWorld():void{ world = new b2World(new b2Vec2(0, 10), true); ground = world.GetGroundBody(); GlobalStorage.world = world; } private function createBox2DObjects():void{ var _local1:MovieClip; var _local2:MovieClip; var _local5:Brevno; var _local6:DynamicBrevno; var _local7:GoalObject; var _local8:Ground; var _local9:DynamicRectangle; var _local10:ChainLink; var _local11:TntBarrel; var _local12:Bomb; var _local13:Monster; var _local14:Arrow; var _local15:MovingPlatformX; var _local16:MovingPlatformY; var _local17:MovingPlatformSensor; var _local18:IcePlatform; var _local19:IceDynPlatform; var _local20:StaticBrevno; var _local21:DynamicRoundObject; var _local22:SlowTimeSensor; var _local23:GoalSensor; var _local24:HandUnderGround; var _local25:SensorHandUnderGround; var _local26:Tambourine; var _local27:HandsTurnAround; var _local28:HeadSpinZombie; var _local29:Dragon; var _local30:SpikePlant; var _local31:OneHand; var _local32:PartOfTombStone; var _local33:Bottle1; var _local34:JustBarrel; var _local35:SkullForShoot; var _local37:String; var _local38:String; var _local39:String; var _local40:Number; var _local41:Number; var _local3:BreakablePlatform; var _local4:Skull; var _local36:int; while (_local36 < this._LevelMC.numChildren) { if ((this._LevelMC.getChildAt(_local36) is MovieClip)){ _local1 = MovieClip(_LevelMC.getChildAt(_local36)); _local37 = _local1.toString(); _local38 = _local37.substring(0, 12); switch (_local1.toString().substring(0, 12)){ case "[object DRec": _local9 = new DynamicRectangle(_local1, world, 2); break; case "[object LDRe": _local9 = new DynamicRectangle(_local1, world, 0.5); break; case "[object SRec": _local20 = new StaticBrevno(_local1, world); break; case "[object SRou": _local21 = new DynamicRoundObject(_local1, world, 2); break; default: break; }; switch (_local37){ case "[object SkullMC]": _local4 = new Skull(_local1, world); break; case "[object SkullForShoot]": _local35 = new SkullForShoot(_local1, world); break; case "[object HandWithGun]": GlobalStorage.parrotsHand = _local1; break; case "[object ParrotMC]": break; case "[object WheelMC]": _local21 = new DynamicRoundObject(_local1, world, 1); break; case "[object BreakablePlatformMC]": _local3 = new BreakablePlatform(_local1, world); break; case "[object BrevnoMC]": _local5 = new Brevno(_local1, world, fakeWorld); break; case "[object DynamicBrevnoMC]": _local6 = new DynamicBrevno(_local1, world); break; case "[object GoalObjectMC]": _local7 = new GoalObject(_local1, world); break; case "[object GroundMC]": _local8 = new Ground(_local1, world); break; case "[object WaterPointMC]": GlobalStorage.addWater = true; GlobalStorage.waterPoint = (_local1.y / GlobalStorage.physScale); break; case "[object ChainLinkMC]": _local10 = new ChainLink(_local1, world); break; case "[object TntBarrelMC]": _local11 = new TntBarrel(_local1, world); break; case "[object BombMC]": _local12 = new Bomb(_local1, world); bombsArray.push(_local12); break; case "[object MonsterMC]": _local13 = new Monster(_local1, world); break; case "[object ArrowMC]": _local14 = new Arrow(_local1, world); break; case "[object MovingPlatformMC]": _local15 = new MovingPlatformX(_local1, world); break; case "[object MovingPlatformYMC]": _local16 = new MovingPlatformY(_local1, world); break; case "[object MovingPlatformSensorMC]": _local17 = new MovingPlatformSensor(_local1, world); break; case "[object SeaMC]": GlobalStorage.seaChildNum = _LevelMC.getChildIndex(_local1); break; case "[object DynIcePlatformMC]": _local19 = new IceDynPlatform(_local1, world); break; case "[object IcePlatformMC]": _local18 = new IcePlatform(_local1, world); break; case "[object SlowTimeSensorMC]": _local22 = new SlowTimeSensor(_local1, world); GlobalStorage.centerOfZoom = new Point(_local1.x, _local1.y); break; case "[object PlayerZombieMC]": GlobalStorage.zombiePlayer = _local1; break; case "[object GoalSensorMC]": _local23 = new GoalSensor(_local1, world); break; case "[object HandUnderGroundMC]": _local39 = _local1.name.substr(1); _local41 = 1; _local40 = Number(_local39); if (_local1.name.charAt(0) == "m"){ _local40 = (_local40 * -1); _local41 = (_local41 * -1); }; _local24 = new HandUnderGround(_local1, world, _local40, _local1.scaleX, _local41); break; case "[object sensorOfHandMC]": _local25 = new SensorHandUnderGround(_local1, world); break; case "[object TambourineMC]": _local26 = new Tambourine(_local1, world, _local1.scaleX, fakeWorld); break; case "[object HandsTurnAroundMC]": _local27 = new HandsTurnAround(_local1, world, _local1.scaleX); break; case "[object HeadSpinZombieMC]": _local28 = new HeadSpinZombie(_local1, world, _local1.scaleX, fakeWorld); break; case "[object DragonMC]": _local29 = new Dragon(_local1, world, _local1.scaleX, _local1.name.substr(1)); break; case "[object SpikePlantMC]": _local30 = new SpikePlant(_local1, world, fakeWorld, _local1.scaleX, _local1.name.substr(1)); break; case "[object OneHandMC]": _local31 = new OneHand(_local1, world, _local1.scaleX); break; case "[object PartOfTombStoneMC]": _local32 = new PartOfTombStone(_local1, world, fakeWorld); break; case "[object Bottle1MC]": _local33 = new Bottle1(_local1, world, "Bottle1MC"); GlobalStorage.bottleObjectRemaining++; break; case "[object Bottle2MC]": _local33 = new Bottle1(_local1, world, "Bottle2MC"); GlobalStorage.bottleObjectRemaining++; break; case "[object Bottle3MC]": _local33 = new Bottle1(_local1, world, "Bottle3MC"); GlobalStorage.bottleObjectRemaining++; break; case "[object Bottle4MC]": _local33 = new Bottle1(_local1, world, "Bottle4MC"); GlobalStorage.bottleObjectRemaining++; break; case "[object Bottle5MC]": _local33 = new Bottle1(_local1, world, "Bottle5MC"); GlobalStorage.bottleObjectRemaining++; break; case "[object JustBarrelMC]": _local34 = new JustBarrel(_local1, world, _local1.scaleX); break; default: break; }; }; _local36++; }; } private function AddBodiesToWater():void{ var _local1:b2Body = GlobalStorage.world.GetBodyList(); while (_local1) { if (_local1.GetType() == b2Body.b2_dynamicBody){ waterController.AddBody(_local1); }; _local1 = _local1.GetNext(); }; } private function createBox2DControllers():void{ if (GlobalStorage.addWater){ waterController = new b2BuoyancyController(); waterController.density = 2; waterController.linearDrag = 5; waterController.angularDrag = 2; waterController.offset = (GlobalStorage.waterPoint * -1); waterController.normal = new b2Vec2(0, -1); waterController.useDensity = true; GlobalStorage.world.AddController(waterController); }; } private function createBox2DJoints():void{ var _local5:*; var _local1:RevoluteJoint; var _local2:RevoluteJoint; var _local3:RevoluteJoint; var _local4:int; while (_local4 < _LevelMC.numChildren) { if ((_LevelMC.getChildAt(_local4) is RevoluteJointDynamicMC)){ _local1 = new RevoluteJoint(MovieClip(_LevelMC.getChildAt(_local4)), world, "dynamic"); }; if ((_LevelMC.getChildAt(_local4) is RevoluteJointMotorMC)){ _local5 = _LevelMC.getChildAt(_local4).name.substr(1); if (_LevelMC.getChildAt(_local4).name.charAt(0) == "m"){ _local5 = (_local5 * -1); }; _local2 = new RevoluteJoint(MovieClip(_LevelMC.getChildAt(_local4)), world, "motor", _local5); trace((("Motor Joint : " + _local2) + " ")); }; if ((_LevelMC.getChildAt(_local4) is RevoluteJointStaticMC)){ _local3 = new RevoluteJoint(MovieClip(_LevelMC.getChildAt(_local4)), this.world, "static"); }; _local4++; }; } public function win():void{ GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, scoreDecrease); ScoreManager.setCurScore(curScore); ScoreManager.updateScores(GlobalStorage.lvlID); GUI.removeBtnListeners(); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, addBoardTimer); if (GlobalStorage.lvlID == GlobalStorage.maxLvlID){ GlobalStorage.maxLvlID++; GlobalStorage.sharedCache.data.maxLvlID = GlobalStorage.maxLvlID; }; GlobalStorage.medals.medalsSet(GlobalStorage.numOfShots, GlobalStorage.lvlID); GlobalStorage.gameLogic.destroy(); trace("WIN!"); } private function addBoardTimer(_arg1:Event):void{ boardCount++; if (boardCount == GlobalStorage.timeBeforeLvlEnd){ addBetweenLevelBoard(); }; } public function addOutOfAmmoBoard():void{ var _local2:MovieClip; trace("OUT OF AMMO"); GlobalStorage.gameLogic.destroy(); var _local1:MovieClip = new LevelOutOfAmmoMC(); GUI.curScreen.addChild(_local1); _local2 = MovieClip(MovieClip(_local1.getChildByName("completeMC")).getChildByName("board")); GUI.addListeners(_local2); GUI.addKeyListener(); } private function addBetweenLevelBoard():void{ var _local1:MovieClip; var _local2:MovieClip; var _local3:MovieClip; var _local4:String; _local1 = new LevelCompleteMC(); GUI.curScreen.addChild(_local1); _local2 = MovieClip(MovieClip(_local1.getChildByName("completeMC")).getChildByName("board")); _local3 = MovieClip(MovieClip(_local2).getChildByName("_medalsAfterLvl")); _local4 = String(GlobalStorage.medals.curMedal); _local3.gotoAndPlay(_local4); GUI.addListeners(_local2); GUI.setVars(_local2); boardCount = 0; GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, addBoardTimer); GUI.addKeyListener(); } public function destroy():void{ var _local2:Bomb; var _local1:b2Body = GlobalStorage.world.GetBodyList(); if (bombsArray.length > 0){ for each (_local2 in bombsArray) { _local2.removeBombTick(); }; }; GlobalStorage.gameUpdate.destroy(); while (_local1) { GlobalStorage.world.DestroyBody(_local1); _local1 = _local1.GetNext(); }; world = null; if (GlobalStorage.addWater){ GlobalStorage.world.DestroyController(waterController); }; if (_LevelMC){ GlobalStorage.main.removeChild(_LevelMC); _LevelMC = null; }; GlobalStorage.goalsObjectRemaining = 0; GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, scoreDecrease); GlobalStorage.seaChildNum = 0; GlobalStorage.alreadyHasGoals = 0; GlobalStorage.cameraMC = null; } } }//package
Section 256
//Level1 (Level1) package { import flash.display.*; import Fla.*; public class Level1 extends Sprite { public var _parrotsHand:HandWithGun; public function Level1():void{ } } }//package
Section 257
//Level10 (Level10) package { import flash.display.*; import Fla.*; public dynamic class Level10 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 258
//Level11 (Level11) package { import flash.display.*; import Fla.*; public dynamic class Level11 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 259
//Level12 (Level12) package { import flash.display.*; import Fla.*; public dynamic class Level12 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 260
//Level13 (Level13) package { import flash.display.*; import Fla.*; public dynamic class Level13 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 261
//Level14 (Level14) package { import flash.display.*; import Fla.*; public dynamic class Level14 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 262
//Level15 (Level15) package { import flash.display.*; import Fla.*; public dynamic class Level15 extends MovieClip { public var _parrotsHand:HandWithGun; public var _5:RevoluteJointMotorMC; } }//package
Section 263
//Level16 (Level16) package { import flash.display.*; import Fla.*; public dynamic class Level16 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 264
//Level17 (Level17) package { import flash.display.*; import Fla.*; public dynamic class Level17 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 265
//Level18 (Level18) package { import flash.display.*; import Fla.*; public dynamic class Level18 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 266
//Level19 (Level19) package { import flash.display.*; import Fla.*; public dynamic class Level19 extends MovieClip { public var _parrotsHand:HandWithGun; public var _3:RevoluteJointMotorMC; } }//package
Section 267
//Level2 (Level2) package { import flash.display.*; import Fla.*; public dynamic class Level2 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 268
//Level20 (Level20) package { import flash.display.*; import Fla.*; public dynamic class Level20 extends MovieClip { public var _parrotsHand:HandWithGun; public var _3:RevoluteJointMotorMC; } }//package
Section 269
//Level3 (Level3) package { import flash.display.*; import Fla.*; public dynamic class Level3 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 270
//Level4 (Level4) package { import flash.display.*; import Fla.*; public dynamic class Level4 extends MovieClip { public var _10:RevoluteJointMotorMC; public var _parrotsHand:HandWithGun; } }//package
Section 271
//Level5 (Level5) package { import flash.display.*; import Fla.*; public dynamic class Level5 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 272
//Level6 (Level6) package { import flash.display.*; import Fla.*; public dynamic class Level6 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 273
//Level7 (Level7) package { import flash.display.*; import Fla.*; public dynamic class Level7 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 274
//Level8 (Level8) package { import flash.display.*; import Fla.*; public dynamic class Level8 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 275
//Level9 (Level9) package { import flash.display.*; import Fla.*; public dynamic class Level9 extends MovieClip { public var _parrotsHand:HandWithGun; } }//package
Section 276
//LevelChooseMenuMC (LevelChooseMenuMC) package { import flash.display.*; import Fla.*; import flash.text.*; public dynamic class LevelChooseMenuMC extends MovieClip { public var m8:MedalsForLvlsBtn; public var _7:SimpleButton; public var m9:MedalsForLvlsBtn; public var _8:SimpleButton; public var _9:SimpleButton; public var scoreTxt:TextField; public var _10:SimpleButton; public var hs_btn:SimpleButton; public var m10:MedalsForLvlsBtn; public var _20:SimpleButton; public var _11:SimpleButton; public var m20:MedalsForLvlsBtn; public var m11:MedalsForLvlsBtn; public var _12:SimpleButton; public var btnSponsorLogoLevelChooseMenu:SimpleButton; public var m12:MedalsForLvlsBtn; public var _13:SimpleButton; public var m13:MedalsForLvlsBtn; public var _14:SimpleButton; public var toMainMenu:SimpleButton; public var m14:MedalsForLvlsBtn; public var m1:MedalsForLvlsBtn; public var _15:SimpleButton; public var m15:MedalsForLvlsBtn; public var m2:MedalsForLvlsBtn; public var _16:SimpleButton; public var _1:SimpleButton; public var m16:MedalsForLvlsBtn; public var m3:MedalsForLvlsBtn; public var _17:SimpleButton; public var _2:SimpleButton; public var m17:MedalsForLvlsBtn; public var m4:MedalsForLvlsBtn; public var _18:SimpleButton; public var _3:SimpleButton; public var lvlMask:MaskLvlMC; public var m18:MedalsForLvlsBtn; public var m5:MedalsForLvlsBtn; public var _19:SimpleButton; public var _4:SimpleButton; public var m19:MedalsForLvlsBtn; public var m6:MedalsForLvlsBtn; public var _5:SimpleButton; public var m7:MedalsForLvlsBtn; public var _6:SimpleButton; public var moreGamesLevelChooseMenu:SimpleButton; } }//package
Section 277
//LevelCompleteMC (LevelCompleteMC) package { import flash.display.*; import Fla.*; public class LevelCompleteMC extends MovieClip { public var completeMC:AnimateCompleteMC; } }//package
Section 278
//LevelOutOfAmmoMC (LevelOutOfAmmoMC) package { import flash.display.*; import Fla.*; public dynamic class LevelOutOfAmmoMC extends MovieClip { public var completeMC:CompleteOutOfAmmoMC; } }//package
Section 279
//LvlMenuMC (LvlMenuMC) package { import flash.display.*; import Fla.*; import flash.text.*; public dynamic class LvlMenuMC extends MovieClip { public var retry:SimpleButton; public var scoreTxt:TextField; public var sound:SoundBtn; public var bulletTxt:TextField; public var toLvlMenu:SimpleButton; public var btnSponsorLogoLvl:SimpleButton; public var music:MusicBtnMC; public var helpBtn:SimpleButton; public var lvlTxt:TextField; } }//package
Section 280
//MainMenuMC (MainMenuMC) package { import flash.display.*; import Fla.*; public dynamic class MainMenuMC extends MovieClip { public var start:SimpleButton; public var moreGamesMainMenu:SimpleButton; public var sound:SoundBtn2; public var btnSponsorLogoMainMenu:SimpleButton; public var music:MusicBtnMC2; public var addToSiteBtn:SimpleButton; } }//package
Section 281
//MainTheme (MainTheme) package { import flash.media.*; public dynamic class MainTheme extends Sound { } }//package
Section 282
//MathUtils (MathUtils) package { import flash.geom.*; import flash.display.*; public class MathUtils extends Sprite { public static function distanceBetweenMC(_arg1:Point, _arg2:Point):int{ var _local3:Number = _arg1.x; var _local4:Number = _arg1.y; var _local5:Number = _arg2.x; var _local6:Number = _arg2.y; return (Math.sqrt((((_local3 - _local5) * (_local3 - _local5)) + ((_local4 - _local6) * (_local4 - _local6))))); } } }//package
Section 283
//Medals (Medals) package { import flash.display.*; public class Medals extends MovieClip { private var goldReqArray:Array; public var medalGotArray:Array; public var numOfShotPerLvl:Array; public var curMedal:String; public function Medals(){ goldReqArray = new Array(11, 14, 14, 15, 10, 10, 13, 11, 11, 11, 14, 11, 12, 10, 12, 12, 10, 13, 14, 18); medalGotArray = new Array(); numOfShotPerLvl = new Array(); var _local1:int; while (_local1 < GlobalStorage.totalNumOfLevels) { medalGotArray.push("none"); numOfShotPerLvl.push(0); _local1++; }; } public function medalsSet(_arg1:int, _arg2:int):void{ if (goldReqArray[(_arg2 - 1)] >= _arg1){ curMedal = "gold"; } else { if ((((goldReqArray[(_arg2 - 1)] < _arg1)) && (((goldReqArray[(_arg2 - 1)] + GlobalStorage.numOfBulletForSilver) >= _arg1)))){ curMedal = "silver"; } else { if ((goldReqArray[(_arg2 - 1)] + GlobalStorage.numOfBulletForSilver) <= _arg1){ curMedal = "bronze"; }; }; }; if (numOfShotPerLvl[(_arg2 - 1)] != 0){ if (numOfShotPerLvl[(_arg2 - 1)] > _arg1){ medalGotArray[(_arg2 - 1)] = curMedal; numOfShotPerLvl[(_arg2 - 1)] = _arg1; trace(((("numOfShotPerLvl[(numOfLvl - 1)] > numOfShots " + numOfShotPerLvl[(_arg2 - 1)]) + ">") + _arg1)); }; } else { numOfShotPerLvl[(_arg2 - 1)] = _arg1; medalGotArray[(_arg2 - 1)] = curMedal; trace("Just curMedal"); }; trace(("numOfShotPerLvl[(numOfLvl - 1)] " + numOfShotPerLvl[(_arg2 - 1)])); GlobalStorage.sharedCache.data.bullets = numOfShotPerLvl; GlobalStorage.sharedCache.data.medals = medalGotArray; } public function medalsGet(_arg1:int):String{ return (String(medalGotArray[(_arg1 - 1)])); } } }//package
Section 284
//MovingPlatformMC (MovingPlatformMC) package { import flash.display.*; public dynamic class MovingPlatformMC extends MovieClip { } }//package
Section 285
//MovingPlatformSensorMC (MovingPlatformSensorMC) package { import flash.display.*; public class MovingPlatformSensorMC extends MovieClip { public function MovingPlatformSensorMC(){ this.visible = false; } } }//package
Section 286
//MovingPlatformYMC (MovingPlatformYMC) package { import flash.display.*; public dynamic class MovingPlatformYMC extends MovieClip { } }//package
Section 287
//Music (Music) package { import flash.events.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import flash.media.*; public dynamic class Music { private static var parellelSound:Object; private static var parellelSoundChannell:SoundChannel; static var t1:SoundTransform = new SoundTransform(); static var curCh:SoundChannel; static var timerVolFader:Timer = new Timer(10); static var mus:Object; public static var vol:Number = 0; public static var curMusName:String = ""; public static var volFadeSpeed:Number = 0.05; static var offVol:Number = 0; public static var musEnable:Boolean = true; static var curVol:Number = 0; static var offCh:SoundChannel; static var curPos:Number = 0; static var isplayed:Boolean = false; static var t2:SoundTransform = new SoundTransform(); public static function init(){ timerVolFader.stop(); mus = new Object(); mus["MainTheme"] = new MainTheme(); } public static function played(_arg1:Boolean):void{ if (_arg1 == isplayed){ return; }; if (_arg1){ if (curMusName != ""){ fadeTo(curMusName); }; } else { isplayed = false; if (curCh){ curCh.stop(); curPos = curCh.position; }; if (offCh){ offCh.stop(); }; offVol = 0; curVol = vol; if (timerVolFader.running){ timerVolFader.stop(); timerVolFader.removeEventListener(TimerEvent.TIMER, timerVolFader_Timer); }; }; } public static function fadeTo(_arg1:String){ var _local2:*; _local2 = null; curMusName = _arg1; if (!musEnable){ return; }; isplayed = true; _local2 = new SoundTransform(); _local2.volume = 0; if (offCh){ offCh.stop(); }; offCh = curCh; curCh = mus[_arg1].play(0, int.MAX_VALUE, _local2); curVol = 0; offVol = vol; if (!timerVolFader.running){ timerVolFader.addEventListener(TimerEvent.TIMER, timerVolFader_Timer, false, 0, true); timerVolFader.start(); }; } public static function setVolume(_arg1:Number):void{ t2.volume = _arg1; curCh.soundTransform = t2; trace("SET NEW VOLUME"); } public static function timerVolFader_Timer(_arg1:TimerEvent):void{ if (offCh != null){ if (offVol > 0){ offVol = (offVol - volFadeSpeed); } else { offVol = 0; }; t1.volume = offVol; offCh.soundTransform = t1; }; if (((!((curCh == null))) && ((((offVol < (vol / 2))) || ((offCh == null)))))){ if (curVol < vol){ curVol = (curVol + volFadeSpeed); } else { curVol = vol; }; t2.volume = curVol; curCh.soundTransform = t2; }; if (curVol > vol){ if (offCh != null){ offCh.stop(); }; timerVolFader.stop(); timerVolFader.removeEventListener(TimerEvent.TIMER, timerVolFader_Timer); }; } vol = 0.2; volFadeSpeed = 0.5; musEnable = true; curMusName = ""; curVol = 0; curPos = 0; offVol = 0; isplayed = false; } }//package
Section 288
//OneHandMC (OneHandMC) package { import flash.display.*; import Fla.*; public dynamic class OneHandMC extends MovieClip { public var oneHandSize:SizeMeterMC; } }//package
Section 289
//PartOfTombStoneMC (PartOfTombStoneMC) package { import flash.display.*; public dynamic class PartOfTombStoneMC extends MovieClip { } }//package
Section 290
//PreloaderAll (PreloaderAll) package { import flash.display.*; public dynamic class PreloaderAll extends SimpleButton { public var _preloaderBtn:SimpleButton; public var startFromPreloaderBtn:StartGameFromPreloader; public var _preloaderLine:MovieClip; } }//package
Section 291
//PreloaderMine (PreloaderMine) package { import flash.events.*; import flash.display.*; import mochi.as3.*; import flash.net.*; import flash.text.*; public class PreloaderMine extends MovieClip { public var _preloaderBtn:SimpleButton; public var startFromPreloaderBtn:StartGameFromPreloader; public var _preloaderLine:MovieClip; private var mainClassForCompiller:VikingMain; private var sponsorPreloaderUrl:String;// = "http://www.bigdino.com/goto.php?id=958&link=PreloaderLogo" private var lockedUrlsArray:Array; public function PreloaderMine():void{ lockedUrlsArray = ["bigdino.com", "localhost", "osinski.ws"]; super(); checkSiteLock(); } private function checkSiteLock():void{ if (CheckDomain(GetDomain(), lockedUrlsArray)){ }; gotoAndStop(1); addEventListener(Event.ENTER_FRAME, this.checkFrame); startBtn(); } private function startBtn():void{ if (startFromPreloaderBtn != null){ startFromPreloaderBtn.addEventListener(MouseEvent.MOUSE_DOWN, clickOnStartLogoBtn); startFromPreloaderBtn.visible = false; }; if (_preloaderBtn != null){ _preloaderBtn.addEventListener(MouseEvent.MOUSE_DOWN, clickOnPreloaderLogo); }; } private function clickOnStartLogoBtn(_arg1:MouseEvent):void{ trace("CLICK"); addEventListener(Event.ENTER_FRAME, anotherCheckFrame); play(); _preloaderBtn.removeEventListener(MouseEvent.MOUSE_DOWN, clickOnPreloaderLogo); startFromPreloaderBtn.removeEventListener(MouseEvent.MOUSE_DOWN, clickOnStartLogoBtn); } private function anotherCheckFrame(_arg1:Event):void{ if (currentFrame == totalFrames){ stop(); startup(); trace("Perhod"); }; } private function GetDomain():String{ var _local1:LocalConnection = new LocalConnection(); if (_local1.domain == "localhost"){ return ("localhost"); }; var _local2:String = stage.loaderInfo.loaderURL; var _local3:int = (_local2.indexOf("://") + 3); var _local4:String = _local2.substr(_local3, 4); if (_local4 == "www."){ _local3 = (_local3 + 4); }; var _local5:Number = _local2.indexOf("/", _local3); var _local6:String = _local2.substring(_local3, _local5); return (_local6); } private function CheckDomain(_arg1:String, _arg2:Array):Boolean{ var _local4:int; var _local3:int; while (_local3 < _arg2.length) { _local4 = _arg1.indexOf(_arg2[_local3]); if (_local4 != -1){ if (_local4 == 0){ return (true); }; if (_arg1.charAt((_local4 - 1)) == "."){ return (true); }; }; _local3++; }; return (false); } private function checkFrame(_arg1:Event):void{ var _local4:String; var _local5:Number; var _local6:int; var _local2:Number = stage.loaderInfo.bytesLoaded; var _local3:Number = stage.loaderInfo.bytesTotal; if ((((_local3 > 0)) && (!((loaderInfo.bytesLoaded == loaderInfo.bytesTotal))))){ _local5 = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal); _local6 = Math.floor((_local5 * 100)); trace(("loadLeft: " + _local5)); if (_preloaderLine != null){ _preloaderLine.gotoAndStop(_local6); }; }; if (loaderInfo.bytesLoaded == loaderInfo.bytesTotal){ removeEventListener(Event.ENTER_FRAME, this.checkFrame); if (startFromPreloaderBtn != null){ trace((">>>>>>>>" + startFromPreloaderBtn)); startFromPreloaderBtn.visible = true; }; trace("STOP"); trace(("_preloaderBtn" + _preloaderBtn)); }; } private function clickOnPreloaderLogo(_arg1:MouseEvent):void{ navigateToURL(new URLRequest(sponsorPreloaderUrl), "_blank"); } private function startup():void{ var _local1:Class = (loaderInfo.applicationDomain.getDefinition("VikingMain") as Class); removeEventListener(Event.ENTER_FRAME, anotherCheckFrame); if (parent == stage){ stage.addChildAt((new (_local1) as DisplayObject), 0); } else { addChildAt((new (_local1) as DisplayObject), 0); }; } } }//package
Section 292
//RevoluteJointDynamicMC (RevoluteJointDynamicMC) package { import flash.display.*; public class RevoluteJointDynamicMC extends MovieClip { public function RevoluteJointDynamicMC(){ this.visible = false; } } }//package
Section 293
//RevoluteJointMotorMC (RevoluteJointMotorMC) package { import flash.display.*; public class RevoluteJointMotorMC extends MovieClip { public function RevoluteJointMotorMC(){ this.visible = false; } } }//package
Section 294
//RevoluteJointStaticMC (RevoluteJointStaticMC) package { import flash.display.*; public class RevoluteJointStaticMC extends MovieClip { public function RevoluteJointStaticMC(){ this.visible = false; } } }//package
Section 295
//ScoreManager (ScoreManager) package { import flash.display.*; public class ScoreManager { private static var curScreen:DisplayObjectContainer; private static var curScore:int; private static var scoresArray:Array; private static var totalScores:int; public static function initScores():void{ var _local1:int; scoresArray = new Array(); while (_local1 < GlobalStorage.totalNumOfLevels) { scoresArray.push(0); _local1++; }; } public static function setCurScore(_arg1:int):void{ curScore = _arg1; } public static function updateScores(_arg1:int):Boolean{ var _local2:int; if (curScore > scoresArray[(_arg1 - 1)]){ scoresArray[(_arg1 - 1)] = curScore; curScore = 0; totalScores = 0; _local2 = 0; while (_local2 < scoresArray.length) { totalScores = (totalScores + int(scoresArray[_local2])); _local2++; }; GlobalStorage.sharedCache.data.scores = scoresArray; return (true); }; totalScores = 0; _local2 = 0; while (_local2 < scoresArray.length) { totalScores = (totalScores + int(scoresArray[_local2])); _local2++; }; return (false); } public static function getTotalScore():int{ return (totalScores); } public static function SetScoresArray(_arg1:Array):void{ var _local2:int; scoresArray = _arg1; totalScores = 0; while (_local2 < scoresArray.length) { totalScores = (totalScores + int(scoresArray[_local2])); _local2++; }; } } }//package
Section 296
//SeaMC (SeaMC) package { import flash.display.*; public dynamic class SeaMC extends MovieClip { } }//package
Section 297
//ShootPointerMC (ShootPointerMC) package { import flash.display.*; public dynamic class ShootPointerMC extends MovieClip { } }//package
Section 298
//Skull3 (Skull3) package { import flash.media.*; public dynamic class Skull3 extends Sound { } }//package
Section 299
//SkullMC (SkullMC) package { import flash.display.*; public class SkullMC extends MovieClip { public function SkullMC(){ this.mouseEnabled = false; this.mouseChildren = false; } } }//package
Section 300
//Sounds (Sounds) package { import flash.events.*; import flash.geom.*; import flash.display.*; import flash.utils.*; import flash.media.*; public dynamic class Sounds { public static var vol:Number = 0.3; static var snd:Object; public static var sndEnable:Boolean = true; public static function init(){ snd = new Object(); snd["TNTExplosion"] = new TNTExplosion(); snd["BombExplosion"] = new BombExplosion(); snd["FuseSnd"] = new FuseSnd(); snd["IceBreak"] = new IceBreak2(); snd["ChineBreak"] = new ChainBreak(); snd["BottleCrush1"] = new BottleCrush1(); snd["BottleCrush2"] = new BottleCrush2(); snd["BottleCrush3"] = new BottleCrush3(); snd["BottleCrush4"] = new BottleCrush4(); snd["BottleCrush5"] = new BottleCrush5(); snd["BottleCrush6"] = new BottleCrush6(); snd["BottleCrush7"] = new BottleCrush7(); snd["BottleCrush8"] = new BottleCrush8(); snd["Beam3"] = new Beam3(); snd["GunCock"] = new GunCock(); snd["GunShot"] = new GunShot4(); snd["Chest"] = new Chest(); snd["Skull3"] = new Skull3(); snd["BottleTuk"] = new BottleTuk(); snd["WoodHit"] = new WoodHit(); } public static function PlaySnd(_arg1:String, _arg2:Number=1):void{ var _local3:*; _local3 = null; if (((!(sndEnable)) || ((vol < 0.001)))){ return; }; _local3 = new SoundTransform(); _local3.volume = _arg2; snd[_arg1].play(0, 0, _local3); if (_arg1 == "TimeOut"){ trace("begin plzy normal"); }; } private static function playNormal(_arg1:Event):void{ Music.setVolume(0.2); } public static function StopSnd(_arg1:String):void{ snd[_arg1].stop; trace(("stopSnd " + _arg1)); } vol = 0.3; sndEnable = true; } }//package
Section 301
//SplashScreenMC (SplashScreenMC) package { import flash.display.*; public dynamic class SplashScreenMC extends MovieClip { public var splash:BigDinoSplash; } }//package
Section 302
//SRecBeam (SRecBeam) package { import flash.display.*; public dynamic class SRecBeam extends MovieClip { } }//package
Section 303
//SRecBeam2 (SRecBeam2) package { import flash.display.*; public dynamic class SRecBeam2 extends MovieClip { } }//package
Section 304
//SRoundBall (SRoundBall) package { import flash.display.*; public dynamic class SRoundBall extends MovieClip { } }//package
Section 305
//StartGameFromPreloader (StartGameFromPreloader) package { import flash.display.*; public dynamic class StartGameFromPreloader extends SimpleButton { } }//package
Section 306
//SwordCursor (SwordCursor) package { import flash.display.*; public class SwordCursor extends MovieClip { public function SwordCursor(){ this.mouseEnabled = false; this.mouseChildren = false; addFrameScript(0, frame1); } private function frame1():void{ stop(); GlobalStorage.arrowCursorVisible = true; } } }//package
Section 307
//testClickObjMC (testClickObjMC) package { import flash.display.*; public dynamic class testClickObjMC extends SimpleButton { } }//package
Section 308
//TimeMaster (TimeMaster) package { import Box2D.Common.Math.*; public class TimeMaster { private static var frameRate:Number; private static var totalVelocity:Number; public function TimeMaster(){ frameRate = (frameRate * 100); } public static function init(){ frameRate = GlobalStorage.frameRate; } public static function getTimeStep():Number{ return ((1 / frameRate)); } public static function slowDown(_arg1:b2Vec2):void{ totalVelocity = Math.sqrt(((_arg1.x * _arg1.x) + (_arg1.y * _arg1.y))); frameRate = ((GlobalStorage.frameRate * GlobalStorage.slowTime) * (totalVelocity / 10)); } public static function back2Normal():void{ frameRate = GlobalStorage.frameRate; } } }//package
Section 309
//TNTExplosion (TNTExplosion) package { import flash.media.*; public dynamic class TNTExplosion extends Sound { } }//package
Section 310
//WaterPointMC (WaterPointMC) package { import flash.display.*; public class WaterPointMC extends MovieClip { public function WaterPointMC(){ this.visible = false; } } }//package
Section 311
//WaterSplashMC (WaterSplashMC) package { import flash.display.*; public class WaterSplashMC extends MovieClip { public function WaterSplashMC(){ addFrameScript(24, frame25); } private function frame25():void{ stop(); } } }//package
Section 312
//WheelMC (WheelMC) package { import flash.display.*; public dynamic class WheelMC extends MovieClip { } }//package
Section 313
//VikingMain (VikingMain) package { import flash.events.*; import flash.display.*; import mochi.as3.*; import flash.net.*; import flash.media.*; import ru.antkarlov.animation.*; public class VikingMain extends MovieClip { private var tempWaitChangeGameState:int; private var medals:Medals; public function VikingMain():void{ if (stage){ this.init(); } else { addEventListener(Event.ADDED_TO_STAGE, this.init); }; } private function init(_arg1:Event=null):void{ removeEventListener(Event.ADDED_TO_STAGE, this.init); medals = new Medals(); GlobalStorage.medals = medals; GlobalStorage.stageLink = stage; GlobalStorage.main = this; ScoreManager.initScores(); GlobalStorage.sharedCache = SharedObject.getLocal("PiratesSOS"); GlobalStorage.stageLink.addChild(GlobalStorage.mochiCont); MochiServices.connect("ecfbf5ef28d7c8ad", GlobalStorage.mochiCont); if (GlobalStorage.sharedCache.data.maxLvlID){ GlobalStorage.maxLvlID = int(GlobalStorage.sharedCache.data.maxLvlID); }; if (GlobalStorage.sharedCache.data.scores){ ScoreManager.SetScoresArray((GlobalStorage.sharedCache.data.scores as Array)); }; if (GlobalStorage.sharedCache.data.medals){ GlobalStorage.medals.medalGotArray = (GlobalStorage.sharedCache.data.medals as Array); }; if (GlobalStorage.sharedCache.data.bullets){ GlobalStorage.medals.numOfShotPerLvl = (GlobalStorage.sharedCache.data.bullets as Array); }; GlobalStorage.splashScreen = new SplashScreenMC(); GlobalStorage.stageLink.addChild(GlobalStorage.splashScreen); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, stratSplash); GlobalStorage.splashScreen.buttonMode = true; GlobalStorage.splashScreen.addEventListener(MouseEvent.MOUSE_DOWN, clickOnSplash); Sounds.init(); Music.init(); } private function clickOnSplash(_arg1:MouseEvent):void{ var _local2 = "http://www.bigdino.com/goto.php?id=958&link=splash"; navigateToURL(new URLRequest(_local2), "_blank"); } private function stratSplash(_arg1:Event):void{ GlobalStorage.waitSplash--; if (GlobalStorage.waitSplash == 0){ GlobalStorage.stageLink.removeChild(GlobalStorage.splashScreen); GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, stratSplash); changeGameState(GlobalStorage.MAIN_MENU); Music.fadeTo("MainTheme"); Music.played(true); }; } public function changeGameState(_arg1:int):void{ GlobalStorage.curState = _arg1; tempWaitChangeGameState = GlobalStorage.waitChangeGameState; GlobalStorage.curZastavka = new ZastavkaMC2(); GlobalStorage.stageLink.addChild(GlobalStorage.curZastavka); GlobalStorage.stageLink.addEventListener(Event.ENTER_FRAME, waitChangeGameState); } private function waitChangeGameState(_arg1:Event):void{ tempWaitChangeGameState--; if (tempWaitChangeGameState == 0){ GlobalStorage.stageLink.removeChild(GlobalStorage.curZastavka); GlobalStorage.stageLink.removeEventListener(Event.ENTER_FRAME, waitChangeGameState); }; if (tempWaitChangeGameState == (GlobalStorage.waitChangeGameState / 2)){ if (GlobalStorage.curLevel){ GlobalStorage.curLevel.destroy(); }; switch (GlobalStorage.curState){ case GlobalStorage.MAIN_MENU: GUI.newScreen(GlobalStorage.curState); break; case GlobalStorage.LEVEL_CHOOSE_MENU: GUI.newScreen(GlobalStorage.curState); break; case GlobalStorage.COMICS_SCREEN: GUI.newScreen(GlobalStorage.curState); break; case GlobalStorage.LEVEL_PLAY: if (GlobalStorage.lvlID > GlobalStorage.totalNumOfLevels){ GUI.newScreen(GlobalStorage.LEVEL_CHOOSE_MENU); break; }; new Level(); GUI.newScreen(GlobalStorage.curState); break; }; }; } } }//package
Section 314
//VikingMC (VikingMC) package { import flash.display.*; public class VikingMC extends MovieClip { public function VikingMC(){ addFrameScript(0, frame1, 41, frame42, 82, frame83); } private function frame1():void{ stop(); } private function frame42():void{ stop(); } private function frame83():void{ stop(); } } }//package
Section 315
//WoodHit (WoodHit) package { import flash.media.*; public dynamic class WoodHit extends Sound { } }//package
Section 316
//ZastavkaMC2 (ZastavkaMC2) package { import flash.display.*; public dynamic class ZastavkaMC2 extends MovieClip { } }//package
Section 317
//ZombieCharacter (ZombieCharacter) package { import flash.display.*; public dynamic class ZombieCharacter extends MovieClip { } }//package

Library Items

Symbol 1 GraphicUsed by:Timeline
Symbol 2 GraphicUsed by:8 326
Symbol 3 GraphicUsed by:4 326
Symbol 4 MovieClipUses:3Used by:8
Symbol 5 GraphicUsed by:8 326
Symbol 6 GraphicUsed by:7 326
Symbol 7 MovieClipUses:6Used by:8
Symbol 8 MovieClipUses:2 4 5 7Used by:326 733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904  Timeline
Symbol 9 GraphicUsed by:Timeline
Symbol 10 GraphicUsed by:25
Symbol 11 GraphicUsed by:23 25
Symbol 12 GraphicUsed by:25
Symbol 13 GraphicUsed by:23 25
Symbol 14 GraphicUsed by:25
Symbol 15 GraphicUsed by:25
Symbol 16 GraphicUsed by:23 25
Symbol 17 GraphicUsed by:25
Symbol 18 GraphicUsed by:25
Symbol 19 GraphicUsed by:23
Symbol 20 GraphicUsed by:23
Symbol 21 GraphicUsed by:23
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClipUses:11 19 13 20 21 16 22Used by:25
Symbol 24 GraphicUsed by:25
Symbol 25 ButtonUses:10 11 12 13 14 15 16 17 18 23 24Used by:326 1130 1185 1209 1229 1321 1333  Timeline
Symbol 26 GraphicUsed by:68 326
Symbol 27 GraphicUsed by:68 326
Symbol 28 GraphicUsed by:29 326
Symbol 29 MovieClipUses:28Used by:68
Symbol 30 GraphicUsed by:68 326
Symbol 31 GraphicUsed by:32 326
Symbol 32 MovieClipUses:31Used by:68
Symbol 33 GraphicUsed by:68 326
Symbol 34 GraphicUsed by:44 326
Symbol 35 GraphicUsed by:44
Symbol 36 GraphicUsed by:44
Symbol 37 GraphicUsed by:44
Symbol 38 GraphicUsed by:44
Symbol 39 GraphicUsed by:44
Symbol 40 GraphicUsed by:44
Symbol 41 GraphicUsed by:44
Symbol 42 GraphicUsed by:44
Symbol 43 GraphicUsed by:44
Symbol 44 MovieClipUses:34 35 36 37 38 39 40 41 42 43Used by:68
Symbol 45 GraphicUsed by:46 326
Symbol 46 MovieClipUses:45Used by:68
Symbol 47 GraphicUsed by:68 326
Symbol 48 GraphicUsed by:68
Symbol 49 GraphicUsed by:68
Symbol 50 GraphicUsed by:68
Symbol 51 GraphicUsed by:68
Symbol 52 GraphicUsed by:68
Symbol 53 GraphicUsed by:68
Symbol 54 GraphicUsed by:68
Symbol 55 GraphicUsed by:68
Symbol 56 GraphicUsed by:68
Symbol 57 GraphicUsed by:58
Symbol 58 MovieClipUses:57Used by:68
Symbol 59 GraphicUsed by:60
Symbol 60 MovieClipUses:59Used by:68
Symbol 61 GraphicUsed by:68
Symbol 62 GraphicUsed by:68
Symbol 63 GraphicUsed by:68
Symbol 64 GraphicUsed by:68
Symbol 65 GraphicUsed by:68
Symbol 66 GraphicUsed by:68
Symbol 67 GraphicUsed by:68
Symbol 68 MovieClipUses:26 27 29 30 32 33 44 46 47 48 49 50 51 52 53 54 55 56 58 60 61 62 63 64 65 66 67Used by:326 790 808  Timeline
Symbol 69 GraphicUsed by:85 326
Symbol 70 GraphicUsed by:85
Symbol 71 GraphicUsed by:85
Symbol 72 GraphicUsed by:85
Symbol 73 GraphicUsed by:85
Symbol 74 GraphicUsed by:85
Symbol 75 GraphicUsed by:85
Symbol 76 GraphicUsed by:85
Symbol 77 GraphicUsed by:85
Symbol 78 GraphicUsed by:85
Symbol 79 GraphicUsed by:85
Symbol 80 GraphicUsed by:85
Symbol 81 GraphicUsed by:85
Symbol 82 GraphicUsed by:85
Symbol 83 GraphicUsed by:85
Symbol 84 GraphicUsed by:85
Symbol 85 MovieClipUses:69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84Used by:200 326  Timeline
Symbol 86 GraphicUsed by:Timeline
Symbol 87 GraphicUsed by:88 326
Symbol 88 MovieClipUses:87Used by:326  Timeline
Symbol 89 GraphicUsed by:326  Timeline
Symbol 90 GraphicUsed by:91 326
Symbol 91 MovieClipUses:90Used by:93
Symbol 92 GraphicUsed by:93 326
Symbol 93 MovieClipUses:91 92Used by:326  Timeline
Symbol 94 GraphicUsed by:106
Symbol 95 GraphicUsed by:96 106
Symbol 96 MovieClipUses:95Used by:103 106 1217
Symbol 97 GraphicUsed by:98 106
Symbol 98 MovieClipUses:97Used by:103 106 1217
Symbol 99 GraphicUsed by:106
Symbol 100 FontUsed by:101 728 903 1100 1122 1125 1154 1155 1156 1157 1160 1168 1176 1183 1184 1188 1192 1198 1204 1213 1216 1224 1228 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1291 1296 1299 1301 1329 1330
Symbol 101 TextUses:100Used by:106
Symbol 102 GraphicUsed by:106
Symbol 103 MovieClipUses:96 98Used by:106
Symbol 104 GraphicUsed by:106
Symbol 105 GraphicUsed by:106
Symbol 106 Button {StartGameFromPreloader}Uses:94 96 98 99 101 102 103 104 105 95 97Used by:326  Timeline
Symbol 107 Sound {WoodHit}Used by:1372
Symbol 108 Sound {Skull3}Used by:1372
Symbol 109 Sound {MainTheme}Used by:1372
Symbol 110 Sound {GunShot4}Used by:1372
Symbol 111 Sound {GunCock}Used by:1372
Symbol 112 Sound {Chest}Used by:1372
Symbol 113 Sound {ChainBreak}Used by:1372
Symbol 114 Sound {BottleTuk}Used by:1372
Symbol 115 Sound {BottleCrush8}Used by:1372
Symbol 116 Sound {BottleCrush7}Used by:1372
Symbol 117 Sound {BottleCrush6}Used by:1372
Symbol 118 Sound {BottleCrush5}Used by:1372
Symbol 119 Sound {BottleCrush4}Used by:1372
Symbol 120 Sound {BottleCrush3}Used by:1372
Symbol 121 Sound {BottleCrush2}Used by:1372
Symbol 122 Sound {BottleCrush1}Used by:1372
Symbol 123 Sound {Beam3}Used by:1372
Symbol 124 Sound {IceBreak2}Used by:1372
Symbol 125 Sound {FuseSnd}Used by:1372
Symbol 126 Sound {BombExplosion}Used by:1372
Symbol 127 Sound {TNTExplosion}Used by:1372
Symbol 128 GraphicUsed by:137
Symbol 129 GraphicUsed by:131
Symbol 130 GraphicUsed by:131
Symbol 131 MovieClipUses:129 130Used by:137
Symbol 132 GraphicUsed by:137
Symbol 133 GraphicUsed by:137
Symbol 134 GraphicUsed by:137
Symbol 135 GraphicUsed by:137
Symbol 136 GraphicUsed by:137
Symbol 137 MovieClip {Fla.CyfraAnimatedMC}Uses:128 131 132 133 134 135 136
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {ZombieCharacter}Uses:138
Symbol 140 GraphicUsed by:156
Symbol 141 GraphicUsed by:156
Symbol 142 GraphicUsed by:156
Symbol 143 GraphicUsed by:156
Symbol 144 GraphicUsed by:156
Symbol 145 GraphicUsed by:156
Symbol 146 GraphicUsed by:156
Symbol 147 GraphicUsed by:156
Symbol 148 GraphicUsed by:156
Symbol 149 GraphicUsed by:156
Symbol 150 GraphicUsed by:156
Symbol 151 GraphicUsed by:156
Symbol 152 GraphicUsed by:156
Symbol 153 GraphicUsed by:156
Symbol 154 GraphicUsed by:156
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClip {WaterSplashMC}Uses:140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
Symbol 157 MovieClip {WaterPointMC}
Symbol 158 GraphicUsed by:159
Symbol 159 MovieClipUses:158Used by:160
Symbol 160 MovieClipUses:159Used by:200
Symbol 161 GraphicUsed by:200
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClip {Fla.ShipSensorMC}Uses:162Used by:200
Symbol 164 GraphicUsed by:165
Symbol 165 MovieClipUses:164Used by:200
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClipUses:166Used by:200
Symbol 168 GraphicUsed by:169
Symbol 169 MovieClipUses:168Used by:200
Symbol 170 GraphicUsed by:171
Symbol 171 MovieClipUses:170Used by:200
Symbol 172 GraphicUsed by:173
Symbol 173 MovieClipUses:172Used by:200
Symbol 174 GraphicUsed by:200
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClipUses:175Used by:200
Symbol 177 GraphicUsed by:194
Symbol 178 GraphicUsed by:194
Symbol 179 GraphicUsed by:194
Symbol 180 GraphicUsed by:194
Symbol 181 GraphicUsed by:194
Symbol 182 GraphicUsed by:194
Symbol 183 GraphicUsed by:193 568 692 760
Symbol 184 GraphicUsed by:193
Symbol 185 GraphicUsed by:193 568 692 760
Symbol 186 GraphicUsed by:193 568 692
Symbol 187 GraphicUsed by:193 568 692 760
Symbol 188 GraphicUsed by:193
Symbol 189 GraphicUsed by:193
Symbol 190 GraphicUsed by:193 568 692 760
Symbol 191 GraphicUsed by:193 568 692 760
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClipUses:183 184 185 186 187 188 189 190 191 192Used by:194
Symbol 194 MovieClipUses:177 178 179 180 181 182 193Used by:200
Symbol 195 GraphicUsed by:200
Symbol 196 GraphicUsed by:200
Symbol 197 GraphicUsed by:200
Symbol 198 GraphicUsed by:200
Symbol 199 GraphicUsed by:200
Symbol 200 MovieClip {VikingMC}Uses:85 160 161 163 165 167 169 171 173 174 176 194 195 196 197 198 199
Symbol 201 GraphicUsed by:203
Symbol 202 GraphicUsed by:203
Symbol 203 Button {testClickObjMC}Uses:201 202
Symbol 204 GraphicUsed by:205
Symbol 205 MovieClip {Fla.TestBombMC}Uses:204
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClip {HeadTrailParticle}Uses:206
Symbol 208 GraphicUsed by:269
Symbol 209 GraphicUsed by:210
Symbol 210 MovieClipUses:209Used by:269
Symbol 211 GraphicUsed by:212
Symbol 212 MovieClipUses:211Used by:269
Symbol 213 GraphicUsed by:214
Symbol 214 MovieClipUses:213Used by:269
Symbol 215 GraphicUsed by:216
Symbol 216 MovieClipUses:215Used by:269
Symbol 217 GraphicUsed by:228
Symbol 218 GraphicUsed by:219
Symbol 219 MovieClipUses:218Used by:228
Symbol 220 GraphicUsed by:221
Symbol 221 MovieClipUses:220Used by:228
Symbol 222 GraphicUsed by:223
Symbol 223 MovieClipUses:222Used by:228
Symbol 224 GraphicUsed by:225
Symbol 225 MovieClipUses:224Used by:228
Symbol 226 GraphicUsed by:227
Symbol 227 MovieClipUses:226Used by:228
Symbol 228 MovieClipUses:217 219 221 223 225 227Used by:269
Symbol 229 GraphicUsed by:242
Symbol 230 GraphicUsed by:242
Symbol 231 GraphicUsed by:242
Symbol 232 GraphicUsed by:242
Symbol 233 GraphicUsed by:242
Symbol 234 GraphicUsed by:242
Symbol 235 GraphicUsed by:242
Symbol 236 GraphicUsed by:242
Symbol 237 GraphicUsed by:242
Symbol 238 GraphicUsed by:242
Symbol 239 GraphicUsed by:242
Symbol 240 GraphicUsed by:242
Symbol 241 GraphicUsed by:242
Symbol 242 MovieClipUses:229 230 231 232 233 234 235 236 237 238 239 240 241Used by:243
Symbol 243 MovieClipUses:242Used by:269
Symbol 244 GraphicUsed by:248
Symbol 245 GraphicUsed by:248
Symbol 246 GraphicUsed by:248
Symbol 247 GraphicUsed by:248
Symbol 248 MovieClipUses:244 245 246 247Used by:269
Symbol 249 GraphicUsed by:250
Symbol 250 MovieClipUses:249Used by:269
Symbol 251 GraphicUsed by:269
Symbol 252 GraphicUsed by:261
Symbol 253 GraphicUsed by:261
Symbol 254 GraphicUsed by:261
Symbol 255 GraphicUsed by:261
Symbol 256 GraphicUsed by:261
Symbol 257 GraphicUsed by:261
Symbol 258 GraphicUsed by:261
Symbol 259 GraphicUsed by:261
Symbol 260 GraphicUsed by:261
Symbol 261 MovieClipUses:252 253 254 255 256 257 258 259 260Used by:269
Symbol 262 GraphicUsed by:269
Symbol 263 SoundUsed by:269
Symbol 264 FontUsed by:265
Symbol 265 TextUses:264Used by:266
Symbol 266 MovieClipUses:265Used by:269
Symbol 267 GraphicUsed by:268
Symbol 268 MovieClipUses:267Used by:269
Symbol 269 MovieClip {BigDinoSplash}Uses:208 210 212 214 216 228 243 248 250 251 261 262 263 266 268Used by:270
Symbol 270 MovieClip {SplashScreenMC}Uses:269
Symbol 271 GraphicUsed by:272 1036
Symbol 272 MovieClip {Fla.sensorOfHandMC}Uses:271
Symbol 273 GraphicUsed by:279
Symbol 274 GraphicUsed by:279
Symbol 275 GraphicUsed by:279
Symbol 276 GraphicUsed by:279
Symbol 277 GraphicUsed by:279
Symbol 278 GraphicUsed by:279
Symbol 279 MovieClipUses:273 274 275 276 277 278Used by:322
Symbol 280 GraphicUsed by:292
Symbol 281 GraphicUsed by:292
Symbol 282 GraphicUsed by:292
Symbol 283 GraphicUsed by:292
Symbol 284 GraphicUsed by:292
Symbol 285 GraphicUsed by:292
Symbol 286 GraphicUsed by:292
Symbol 287 GraphicUsed by:292
Symbol 288 GraphicUsed by:292
Symbol 289 GraphicUsed by:292
Symbol 290 GraphicUsed by:292
Symbol 291 GraphicUsed by:292
Symbol 292 MovieClipUses:280 281 282 283 284 285 286 287 288 289 290 291Used by:319 320 321
Symbol 293 GraphicUsed by:305
Symbol 294 GraphicUsed by:305
Symbol 295 GraphicUsed by:305
Symbol 296 GraphicUsed by:305
Symbol 297 GraphicUsed by:305
Symbol 298 GraphicUsed by:305
Symbol 299 GraphicUsed by:305
Symbol 300 GraphicUsed by:305
Symbol 301 GraphicUsed by:305
Symbol 302 GraphicUsed by:305
Symbol 303 GraphicUsed by:305
Symbol 304 GraphicUsed by:305
Symbol 305 MovieClipUses:293 294 295 296 297 298 299 300 301 302 303 304Used by:319 320 321
Symbol 306 GraphicUsed by:318
Symbol 307 GraphicUsed by:318
Symbol 308 GraphicUsed by:318
Symbol 309 GraphicUsed by:318
Symbol 310 GraphicUsed by:318
Symbol 311 GraphicUsed by:318
Symbol 312 GraphicUsed by:318
Symbol 313 GraphicUsed by:318
Symbol 314 GraphicUsed by:318
Symbol 315 GraphicUsed by:318
Symbol 316 GraphicUsed by:318
Symbol 317 GraphicUsed by:318
Symbol 318 MovieClipUses:306 307 308 309 310 311 312 313 314 315 316 317Used by:319 320 321
Symbol 319 MovieClipUses:292 305 318Used by:322
Symbol 320 MovieClipUses:292 305 318Used by:322
Symbol 321 MovieClipUses:292 305 318Used by:322
Symbol 322 MovieClip {SeaMC}Uses:279 319 320 321
Symbol 323 GraphicUsed by:326
Symbol 324 GraphicUsed by:326
Symbol 325 GraphicUsed by:326
Symbol 326 Button {PreloaderAll}Uses:323 8 324 25 68 85 325 88 89 93 106 2 3 5 6 26 27 28 30 31 33 34 45 47 69 87 90 92
Symbol 327 GraphicUsed by:328
Symbol 328 MovieClip {DynamicBrevnoMC}Uses:327
Symbol 329 FontUsed by:330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357
Symbol 330 TextUses:329Used by:358
Symbol 331 TextUses:329Used by:358
Symbol 332 TextUses:329Used by:358
Symbol 333 TextUses:329Used by:358
Symbol 334 TextUses:329Used by:358
Symbol 335 TextUses:329Used by:358
Symbol 336 TextUses:329Used by:358
Symbol 337 TextUses:329Used by:358
Symbol 338 TextUses:329Used by:358
Symbol 339 TextUses:329Used by:358
Symbol 340 TextUses:329Used by:358
Symbol 341 TextUses:329Used by:358
Symbol 342 TextUses:329Used by:358
Symbol 343 TextUses:329Used by:358
Symbol 344 TextUses:329Used by:358
Symbol 345 TextUses:329Used by:358
Symbol 346 TextUses:329Used by:358
Symbol 347 TextUses:329Used by:358
Symbol 348 TextUses:329Used by:358
Symbol 349 TextUses:329Used by:358
Symbol 350 TextUses:329Used by:358
Symbol 351 TextUses:329Used by:358
Symbol 352 TextUses:329Used by:358
Symbol 353 TextUses:329Used by:358
Symbol 354 TextUses:329Used by:358
Symbol 355 TextUses:329Used by:358
Symbol 356 TextUses:329Used by:358
Symbol 357 TextUses:329Used by:358
Symbol 358 MovieClip {Fla.Numbers}Uses:330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357
Symbol 359 GraphicUsed by:399 436 449 470 476 488 510 511
Symbol 360 GraphicUsed by:389
Symbol 361 GraphicUsed by:389
Symbol 362 GraphicUsed by:389
Symbol 363 GraphicUsed by:389
Symbol 364 GraphicUsed by:389
Symbol 365 GraphicUsed by:389
Symbol 366 GraphicUsed by:389
Symbol 367 GraphicUsed by:389
Symbol 368 GraphicUsed by:389
Symbol 369 GraphicUsed by:389
Symbol 370 GraphicUsed by:389
Symbol 371 GraphicUsed by:389
Symbol 372 GraphicUsed by:389
Symbol 373 GraphicUsed by:389
Symbol 374 GraphicUsed by:389
Symbol 375 GraphicUsed by:389
Symbol 376 GraphicUsed by:389
Symbol 377 GraphicUsed by:389
Symbol 378 GraphicUsed by:389
Symbol 379 GraphicUsed by:389
Symbol 380 GraphicUsed by:389
Symbol 381 GraphicUsed by:389
Symbol 382 GraphicUsed by:389
Symbol 383 GraphicUsed by:389
Symbol 384 GraphicUsed by:389
Symbol 385 GraphicUsed by:389
Symbol 386 GraphicUsed by:389
Symbol 387 GraphicUsed by:389
Symbol 388 GraphicUsed by:389
Symbol 389 MovieClip {Fla.EyesAngry}Uses:360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388Used by:511
Symbol 390 GraphicUsed by:399 436 449 470 476 488 510
Symbol 391 GraphicUsed by:399 436 449 470 476 488 510
Symbol 392 GraphicUsed by:399 436 449 470 476 488 510
Symbol 393 GraphicUsed by:399
Symbol 394 GraphicUsed by:399
Symbol 395 GraphicUsed by:399
Symbol 396 GraphicUsed by:399 436 449 470 476 488 510
Symbol 397 GraphicUsed by:399 436 449 470 476 488 510
Symbol 398 GraphicUsed by:399 436 449 470 476 488 510
Symbol 399 MovieClip {Fla.EyesBlink}Uses:359 390 391 392 393 394 395 396 397 398Used by:511
Symbol 400 GraphicUsed by:436
Symbol 401 GraphicUsed by:436
Symbol 402 GraphicUsed by:436
Symbol 403 GraphicUsed by:436
Symbol 404 GraphicUsed by:436 449 470 476 488 510
Symbol 405 GraphicUsed by:436
Symbol 406 GraphicUsed by:436
Symbol 407 GraphicUsed by:436
Symbol 408 GraphicUsed by:436
Symbol 409 GraphicUsed by:436
Symbol 410 GraphicUsed by:436
Symbol 411 GraphicUsed by:436
Symbol 412 GraphicUsed by:436
Symbol 413 GraphicUsed by:436
Symbol 414 GraphicUsed by:436
Symbol 415 GraphicUsed by:436
Symbol 416 GraphicUsed by:436
Symbol 417 GraphicUsed by:436
Symbol 418 GraphicUsed by:436
Symbol 419 GraphicUsed by:436
Symbol 420 GraphicUsed by:436
Symbol 421 GraphicUsed by:436
Symbol 422 GraphicUsed by:436
Symbol 423 GraphicUsed by:436
Symbol 424 GraphicUsed by:436
Symbol 425 GraphicUsed by:436
Symbol 426 GraphicUsed by:436
Symbol 427 GraphicUsed by:436
Symbol 428 GraphicUsed by:436
Symbol 429 GraphicUsed by:436
Symbol 430 GraphicUsed by:436
Symbol 431 GraphicUsed by:436
Symbol 432 GraphicUsed by:436
Symbol 433 GraphicUsed by:436
Symbol 434 GraphicUsed by:436
Symbol 435 GraphicUsed by:436
Symbol 436 MovieClip {Fla.EyesCrazy}Uses:359 390 391 392 400 401 402 403 396 397 398 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435Used by:511
Symbol 437 GraphicUsed by:449
Symbol 438 GraphicUsed by:449
Symbol 439 GraphicUsed by:449
Symbol 440 GraphicUsed by:449
Symbol 441 GraphicUsed by:449
Symbol 442 GraphicUsed by:449
Symbol 443 GraphicUsed by:449
Symbol 444 GraphicUsed by:449
Symbol 445 GraphicUsed by:449
Symbol 446 GraphicUsed by:449
Symbol 447 GraphicUsed by:449
Symbol 448 GraphicUsed by:449
Symbol 449 MovieClip {Fla.EyesDown}Uses:404 391 390 392 437 438 439 440 441 442 443 444 445 446 447 448 396 397 359 398Used by:511
Symbol 450 GraphicUsed by:470
Symbol 451 GraphicUsed by:470
Symbol 452 GraphicUsed by:470
Symbol 453 GraphicUsed by:470
Symbol 454 GraphicUsed by:470
Symbol 455 GraphicUsed by:470
Symbol 456 GraphicUsed by:470
Symbol 457 GraphicUsed by:470
Symbol 458 GraphicUsed by:470
Symbol 459 GraphicUsed by:470
Symbol 460 GraphicUsed by:470
Symbol 461 GraphicUsed by:470
Symbol 462 GraphicUsed by:470
Symbol 463 GraphicUsed by:470
Symbol 464 GraphicUsed by:470
Symbol 465 GraphicUsed by:470
Symbol 466 GraphicUsed by:470
Symbol 467 GraphicUsed by:470
Symbol 468 GraphicUsed by:470
Symbol 469 GraphicUsed by:470
Symbol 470 MovieClip {Fla.EyesDownUp}Uses:404 391 390 392 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 396 397 359 398Used by:511
Symbol 471 GraphicUsed by:476
Symbol 472 GraphicUsed by:476
Symbol 473 GraphicUsed by:474
Symbol 474 MovieClipUses:473Used by:476
Symbol 475 GraphicUsed by:476
Symbol 476 MovieClip {Fla.EyesHeadTrim}Uses:404 391 390 392 471 472 474 475 396 397 359 398Used by:511
Symbol 477 GraphicUsed by:488
Symbol 478 GraphicUsed by:488
Symbol 479 GraphicUsed by:488
Symbol 480 GraphicUsed by:488
Symbol 481 GraphicUsed by:482
Symbol 482 MovieClipUses:481Used by:483
Symbol 483 MovieClipUses:482Used by:488
Symbol 484 GraphicUsed by:488
Symbol 485 GraphicUsed by:488
Symbol 486 GraphicUsed by:488
Symbol 487 GraphicUsed by:488
Symbol 488 MovieClip {Fla.EyesHypno}Uses:404 391 390 392 477 478 479 480 483 484 485 486 487 396 397 359 398Used by:511
Symbol 489 GraphicUsed by:510
Symbol 490 GraphicUsed by:510
Symbol 491 GraphicUsed by:510
Symbol 492 GraphicUsed by:510
Symbol 493 GraphicUsed by:510
Symbol 494 GraphicUsed by:510
Symbol 495 GraphicUsed by:510
Symbol 496 GraphicUsed by:510
Symbol 497 GraphicUsed by:510
Symbol 498 GraphicUsed by:510
Symbol 499 GraphicUsed by:510
Symbol 500 GraphicUsed by:510
Symbol 501 GraphicUsed by:510
Symbol 502 GraphicUsed by:510
Symbol 503 GraphicUsed by:510
Symbol 504 GraphicUsed by:510
Symbol 505 GraphicUsed by:510
Symbol 506 GraphicUsed by:510
Symbol 507 GraphicUsed by:510
Symbol 508 GraphicUsed by:510
Symbol 509 GraphicUsed by:510
Symbol 510 MovieClip {Fla.EyesLeftRight}Uses:404 391 390 392 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 396 397 359 398Used by:511
Symbol 511 MovieClip {Fla.MonsterMC}Uses:359 389 399 436 449 470 476 488 510
Symbol 512 GraphicUsed by:513
Symbol 513 MovieClip {SRecBeam}Uses:512Used by:733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904 1372
Symbol 514 GraphicUsed by:515
Symbol 515 MovieClipUses:514Used by:733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904 1372
Symbol 516 GraphicUsed by:517
Symbol 517 MovieClipUses:516Used by:733 844 904
Symbol 518 GraphicUsed by:534
Symbol 519 GraphicUsed by:520
Symbol 520 MovieClipUses:519Used by:534 880
Symbol 521 GraphicUsed by:533
Symbol 522 GraphicUsed by:533
Symbol 523 GraphicUsed by:533
Symbol 524 GraphicUsed by:533
Symbol 525 GraphicUsed by:533
Symbol 526 GraphicUsed by:533
Symbol 527 GraphicUsed by:533
Symbol 528 GraphicUsed by:533
Symbol 529 GraphicUsed by:533
Symbol 530 GraphicUsed by:533
Symbol 531 GraphicUsed by:533
Symbol 532 GraphicUsed by:533
Symbol 533 MovieClip {Fla.IceExplosion}Uses:521 522 523 524 525 526 527 528 529 530 531 532Used by:534 880
Symbol 534 MovieClip {Fla.IcePlatformMC}Uses:518 520 533Used by:733 837 847 858 860 866 868 904 1372
Symbol 535 GraphicUsed by:733
Symbol 536 GraphicUsed by:537 738
Symbol 537 MovieClipUses:536Used by:569
Symbol 538 GraphicUsed by:569
Symbol 539 GraphicUsed by:551
Symbol 540 GraphicUsed by:541 575
Symbol 541 MovieClipUses:540Used by:551
Symbol 542 GraphicUsed by:551
Symbol 543 GraphicUsed by:547
Symbol 544 GraphicUsed by:547
Symbol 545 GraphicUsed by:547
Symbol 546 GraphicUsed by:547
Symbol 547 MovieClipUses:543 544 545 546Used by:551 568
Symbol 548 GraphicUsed by:551
Symbol 549 GraphicUsed by:551
Symbol 550 GraphicUsed by:551
Symbol 551 MovieClip {BombaTleetMC}Uses:539 541 542 547 548 549 550Used by:569
Symbol 552 GraphicUsed by:568
Symbol 553 GraphicUsed by:568
Symbol 554 GraphicUsed by:568
Symbol 555 GraphicUsed by:568
Symbol 556 GraphicUsed by:568
Symbol 557 GraphicUsed by:568
Symbol 558 GraphicUsed by:568 692
Symbol 559 GraphicUsed by:568 692
Symbol 560 GraphicUsed by:568
Symbol 561 GraphicUsed by:568
Symbol 562 GraphicUsed by:568
Symbol 563 GraphicUsed by:568
Symbol 564 GraphicUsed by:568
Symbol 565 GraphicUsed by:568
Symbol 566 GraphicUsed by:568 692
Symbol 567 GraphicUsed by:568
Symbol 568 MovieClip {BombaVzryvMC}Uses:552 547 553 554 555 556 557 558 183 185 559 187 560 561 190 562 563 191 564 186 565 566 567Used by:569
Symbol 569 MovieClip {Fla.BombMC}Uses:537 538 551 568Used by:733 823 829 868 870 872 892 1372
Symbol 570 GraphicUsed by:733
Symbol 571 GraphicUsed by:572
Symbol 572 MovieClipUses:571Used by:586
Symbol 573 GraphicUsed by:574
Symbol 574 MovieClipUses:573Used by:586
Symbol 575 MovieClipUses:540Used by:586
Symbol 576 GraphicUsed by:586
Symbol 577 GraphicUsed by:586
Symbol 578 GraphicUsed by:586
Symbol 579 GraphicUsed by:586
Symbol 580 GraphicUsed by:586
Symbol 581 GraphicUsed by:586
Symbol 582 GraphicUsed by:586
Symbol 583 GraphicUsed by:586
Symbol 584 GraphicUsed by:586
Symbol 585 GraphicUsed by:586
Symbol 586 MovieClip {Fla.HandWithGun}Uses:572 574 575 576 577 578 579 580 581 582 583 584 585Used by:733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904
Symbol 587 GraphicUsed by:614
Symbol 588 GraphicUsed by:605
Symbol 589 GraphicUsed by:597
Symbol 590 GraphicUsed by:597
Symbol 591 GraphicUsed by:597
Symbol 592 GraphicUsed by:597
Symbol 593 GraphicUsed by:597
Symbol 594 GraphicUsed by:597
Symbol 595 GraphicUsed by:597
Symbol 596 GraphicUsed by:597
Symbol 597 MovieClipUses:589 590 591 592 593 594 595 596Used by:605 624 632
Symbol 598 GraphicUsed by:605
Symbol 599 GraphicUsed by:605
Symbol 600 GraphicUsed by:605
Symbol 601 GraphicUsed by:605
Symbol 602 GraphicUsed by:605
Symbol 603 GraphicUsed by:605
Symbol 604 GraphicUsed by:605
Symbol 605 MovieClipUses:588 597 598 599 600 601 602 603 604Used by:614 794
Symbol 606 GraphicUsed by:614
Symbol 607 GraphicUsed by:614
Symbol 608 GraphicUsed by:614
Symbol 609 GraphicUsed by:614
Symbol 610 GraphicUsed by:614
Symbol 611 GraphicUsed by:614
Symbol 612 GraphicUsed by:614
Symbol 613 GraphicUsed by:614
Symbol 614 MovieClip {Fla.Bottle4MC}Uses:587 605 606 607 608 609 610 611 612 613Used by:733 823 837 842 844 847 856 858 860 866 870 872 883 892 895 897 904 1372
Symbol 615 GraphicUsed by:640
Symbol 616 GraphicUsed by:632
Symbol 617 GraphicUsed by:618
Symbol 618 MovieClipUses:617Used by:632
Symbol 619 GraphicUsed by:620
Symbol 620 MovieClipUses:619Used by:632
Symbol 621 GraphicUsed by:624
Symbol 622 GraphicUsed by:623
Symbol 623 MovieClipUses:622Used by:624 632
Symbol 624 MovieClipUses:621 597 623Used by:632
Symbol 625 GraphicUsed by:632
Symbol 626 GraphicUsed by:632
Symbol 627 GraphicUsed by:632
Symbol 628 GraphicUsed by:632
Symbol 629 GraphicUsed by:632
Symbol 630 GraphicUsed by:632
Symbol 631 GraphicUsed by:632
Symbol 632 MovieClipUses:616 618 620 624 625 626 627 628 629 597 623 630 631Used by:640 796 1130
Symbol 633 GraphicUsed by:640
Symbol 634 GraphicUsed by:640
Symbol 635 GraphicUsed by:640
Symbol 636 GraphicUsed by:640
Symbol 637 GraphicUsed by:640
Symbol 638 GraphicUsed by:640
Symbol 639 GraphicUsed by:640
Symbol 640 MovieClip {Fla.Bottle1MC}Uses:615 632 633 634 635 636 637 638 639Used by:733 823 829 837 842 844 856 858 860 866 868 872 883 887 892 895 904 1372
Symbol 641 GraphicUsed by:642
Symbol 642 MovieClipUses:641Used by:733 823 829 837 842 844 856 860 866 870 872 1372
Symbol 643 GraphicUsed by:644
Symbol 644 MovieClip {LDRec_YashchikMC}Uses:643Used by:733 829 837 842 844 847 856 860 866 870 872 883 887 892 895 897 904 1372
Symbol 645 GraphicUsed by:733
Symbol 646 GraphicUsed by:733
Symbol 647 GraphicUsed by:653
Symbol 648 GraphicUsed by:649
Symbol 649 MovieClipUses:648Used by:653
Symbol 650 GraphicUsed by:652
Symbol 651 GraphicUsed by:652
Symbol 652 MovieClip {Fla.ChainBrakeMC}Uses:650 651Used by:653
Symbol 653 MovieClip {ChainLinkMC}Uses:647 649 652Used by:733 823 829 837 842 856 860 866 870 872 883 887 892 1372
Symbol 654 GraphicUsed by:655 656
Symbol 655 MovieClip {RevoluteJointDynamicMC}Uses:654Used by:733 823 829 837 842 847 856 858 860 866 868 870 872 883 887 892 895 897 1372
Symbol 656 MovieClip {RevoluteJointStaticMC}Uses:654Used by:733 823 829 837 842 844 856 858 860 866 868 870 872 883 887 892 895 897 1372
Symbol 657 GraphicUsed by:680
Symbol 658 GraphicUsed by:659
Symbol 659 MovieClipUses:658Used by:671
Symbol 660 GraphicUsed by:670
Symbol 661 GraphicUsed by:669
Symbol 662 GraphicUsed by:669
Symbol 663 GraphicUsed by:669
Symbol 664 GraphicUsed by:669
Symbol 665 GraphicUsed by:669
Symbol 666 GraphicUsed by:669
Symbol 667 GraphicUsed by:669
Symbol 668 GraphicUsed by:669
Symbol 669 MovieClipUses:661 662 663 664 665 666 667 668Used by:670
Symbol 670 MovieClipUses:660 669Used by:671
Symbol 671 MovieClipUses:659 670Used by:680 792 1130
Symbol 672 GraphicUsed by:680
Symbol 673 GraphicUsed by:680
Symbol 674 GraphicUsed by:680
Symbol 675 GraphicUsed by:680
Symbol 676 GraphicUsed by:680
Symbol 677 GraphicUsed by:680
Symbol 678 GraphicUsed by:680
Symbol 679 GraphicUsed by:680
Symbol 680 MovieClip {Fla.Bottle3MC}Uses:657 671 672 673 674 675 676 677 678 679Used by:733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904 1372
Symbol 681 GraphicUsed by:733
Symbol 682 GraphicUsed by:693
Symbol 683 GraphicUsed by:692
Symbol 684 GraphicUsed by:692
Symbol 685 GraphicUsed by:692
Symbol 686 GraphicUsed by:692
Symbol 687 GraphicUsed by:692
Symbol 688 GraphicUsed by:692
Symbol 689 GraphicUsed by:692
Symbol 690 GraphicUsed by:692
Symbol 691 GraphicUsed by:692
Symbol 692 MovieClip {Fla.ExplosionShort}Uses:683 684 685 686 558 183 185 559 187 687 688 186 190 689 566 191 690 691Used by:693
Symbol 693 MovieClip {Fla.TntBarrelMC}Uses:682 692Used by:733 823 858 860 866 868 892 1372
Symbol 694 GraphicUsed by:695
Symbol 695 MovieClip {LDRec_palka}Uses:694Used by:733 829 837 842 847 856 858 860 866 868 870 872 887 1372
Symbol 696 GraphicUsed by:697
Symbol 697 MovieClipUses:696Used by:733 829 837 842 847 856 858 868 870 872 887 1372
Symbol 698 GraphicUsed by:699
Symbol 699 MovieClipUses:698Used by:700
Symbol 700 MovieClipUses:699Used by:733 904
Symbol 701 GraphicUsed by:733
Symbol 702 GraphicUsed by:703
Symbol 703 MovieClipUses:702Used by:717
Symbol 704 GraphicUsed by:705
Symbol 705 MovieClipUses:704Used by:717
Symbol 706 GraphicUsed by:717 737
Symbol 707 GraphicUsed by:717
Symbol 708 GraphicUsed by:717
Symbol 709 GraphicUsed by:717
Symbol 710 GraphicUsed by:717
Symbol 711 GraphicUsed by:717
Symbol 712 GraphicUsed by:717
Symbol 713 GraphicUsed by:717
Symbol 714 GraphicUsed by:717
Symbol 715 GraphicUsed by:717
Symbol 716 GraphicUsed by:717
Symbol 717 MovieClip {Fla.GoalObjectMC}Uses:703 705 706 707 708 709 710 711 712 713 714 715 716Used by:733 829 837 844 856 858 870 872 883 892 895 897 904 1372
Symbol 718 GraphicUsed by:727
Symbol 719 GraphicUsed by:727
Symbol 720 GraphicUsed by:727
Symbol 721 GraphicUsed by:727
Symbol 722 GraphicUsed by:727
Symbol 723 GraphicUsed by:727
Symbol 724 GraphicUsed by:727
Symbol 725 GraphicUsed by:727
Symbol 726 GraphicUsed by:727
Symbol 727 MovieClip {Fla.SkullForShoot}Uses:718 719 720 721 722 723 724 725 726Used by:733 837 844 856 897 904
Symbol 728 TextUses:100Used by:733 904
Symbol 729 GraphicUsed by:733
Symbol 730 GraphicUsed by:733
Symbol 731 GraphicUsed by:732
Symbol 732 MovieClip {Fla.BrevnoMC}Uses:731Used by:733 823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904 1372
Symbol 733 MovieClip {Level2}Uses:8 513 515 517 534 535 569 570 586 614 640 642 644 645 646 653 655 656 680 681 693 695 697 700 701 717 727 728 729 730 732
Symbol 734 GraphicUsed by:735
Symbol 735 MovieClip {GroundMC}Uses:734
Symbol 736 GraphicUsed by:737
Symbol 737 MovieClip {Fla.GoalObjectShineMC}Uses:736 706
Symbol 738 MovieClip {ExplosionCentreMC}Uses:536
Symbol 739 GraphicUsed by:740
Symbol 740 MovieClip {DRec_ruchkaMolot_mc}Uses:739
Symbol 741 GraphicUsed by:742
Symbol 742 MovieClip {DRec_NabaldMolot_mc}Uses:741
Symbol 743 GraphicUsed by:744
Symbol 744 MovieClipUses:743Used by:748
Symbol 745 GraphicUsed by:748
Symbol 746 GraphicUsed by:748
Symbol 747 GraphicUsed by:748
Symbol 748 MovieClip {SwordCursor}Uses:744 745 746 747Used by:751
Symbol 749 GraphicUsed by:750
Symbol 750 MovieClipUses:749Used by:751
Symbol 751 MovieClip {CustomCursor}Uses:750 748
Symbol 752 GraphicUsed by:756
Symbol 753 GraphicUsed by:756
Symbol 754 GraphicUsed by:756
Symbol 755 GraphicUsed by:756
Symbol 756 Button {crossBtn}Uses:752 753 754 755
Symbol 757 GraphicUsed by:760
Symbol 758 GraphicUsed by:760
Symbol 759 GraphicUsed by:760
Symbol 760 MovieClip {Fla.BulletMC}Uses:757 183 185 187 758 190 191 759
Symbol 761 GraphicUsed by:762
Symbol 762 MovieClipUses:761Used by:768
Symbol 763 GraphicUsed by:767
Symbol 764 GraphicUsed by:767
Symbol 765 GraphicUsed by:767
Symbol 766 GraphicUsed by:767
Symbol 767 MovieClip {Fla.platform_break}Uses:763 764 765 766Used by:768
Symbol 768 MovieClip {BreakablePlatformMC}Uses:762 767
Symbol 769 GraphicUsed by:770
Symbol 770 MovieClipUses:769Used by:773
Symbol 771 GraphicUsed by:772
Symbol 772 MovieClipUses:771Used by:773
Symbol 773 MovieClipUses:770 772Used by:789 791 793 795 797
Symbol 774 GraphicUsed by:775
Symbol 775 MovieClipUses:774Used by:776
Symbol 776 MovieClipUses:775Used by:788 790 792 794 796
Symbol 777 GraphicUsed by:786
Symbol 778 GraphicUsed by:785
Symbol 779 GraphicUsed by:785
Symbol 780 GraphicUsed by:785
Symbol 781 GraphicUsed by:785
Symbol 782 GraphicUsed by:785
Symbol 783 GraphicUsed by:785
Symbol 784 GraphicUsed by:785
Symbol 785 MovieClipUses:778 779 780 781 782 783 784Used by:786
Symbol 786 MovieClipUses:777 785Used by:787
Symbol 787 MovieClipUses:786Used by:788 820
Symbol 788 MovieClipUses:776 787Used by:789
Symbol 789 MovieClip {Fla.BeamPirate5}Uses:773 788
Symbol 790 MovieClipUses:776 68Used by:791
Symbol 791 MovieClip {Fla.BeamPirate4}Uses:773 790
Symbol 792 MovieClipUses:776 671Used by:793
Symbol 793 MovieClip {Fla.BeamPirate3}Uses:773 792
Symbol 794 MovieClipUses:776 605Used by:795
Symbol 795 MovieClip {Fla.BeamPirate2}Uses:773 794
Symbol 796 MovieClipUses:776 632Used by:797
Symbol 797 MovieClip {Fla.BeamPirate1}Uses:773 796
Symbol 798 GraphicUsed by:823
Symbol 799 GraphicUsed by:808
Symbol 800 GraphicUsed by:808
Symbol 801 GraphicUsed by:808
Symbol 802 GraphicUsed by:808
Symbol 803 GraphicUsed by:808
Symbol 804 GraphicUsed by:808
Symbol 805 GraphicUsed by:808
Symbol 806 GraphicUsed by:808
Symbol 807 GraphicUsed by:808
Symbol 808 MovieClip {Fla.Bottle5MC}Uses:799 68 800 801 802 803 804 805 806 807Used by:823 829 837 842 844 858 860 866 868 872 883 887 895 897 904 1372
Symbol 809 GraphicUsed by:810
Symbol 810 MovieClip {LDRec_palka2}Uses:809Used by:823 829 837 856 868 883 892 895 1372
Symbol 811 GraphicUsed by:820
Symbol 812 GraphicUsed by:820
Symbol 813 GraphicUsed by:820
Symbol 814 GraphicUsed by:820
Symbol 815 GraphicUsed by:820
Symbol 816 GraphicUsed by:820
Symbol 817 GraphicUsed by:820
Symbol 818 GraphicUsed by:820
Symbol 819 GraphicUsed by:820
Symbol 820 MovieClip {Fla.Bottle2MC}Uses:811 787 812 813 814 815 816 817 818 819Used by:823 829 837 842 844 847 856 858 860 866 868 870 872 883 887 892 895 897 904 1372
Symbol 821 GraphicUsed by:822
Symbol 822 MovieClipUses:821Used by:823 842 844 860 866 883 887 892 895
Symbol 823 MovieClip {Level10}Uses:8 798 586 513 515 693 640 680 808 810 614 820 732 569 653 655 656 822 642Used by:1372
Symbol 824 GraphicUsed by:829
Symbol 825 GraphicUsed by:826
Symbol 826 MovieClip {SRecBeam2}Uses:825Used by:829 844 870 872 883 892 1372
Symbol 827 GraphicUsed by:828
Symbol 828 MovieClip {SkullMC}Uses:827Used by:829 837 842 856 858 868 892 895 1372
Symbol 829 MovieClip {Level9}Uses:8 824 586 820 680 826 695 697 655 717 808 640 569 513 515 732 642 653 656 644 828 810Used by:1372
Symbol 830 GraphicUsed by:837
Symbol 831 GraphicUsed by:832
Symbol 832 MovieClip {JustBarrelMC}Uses:831Used by:837 842 844 856 860 868 897 904 1372
Symbol 833 GraphicUsed by:837
Symbol 834 GraphicUsed by:835
Symbol 835 MovieClip {WheelMC}Uses:834Used by:837 856 866 883 1372
Symbol 836 GraphicUsed by:837
Symbol 837 MovieClip {Level8}Uses:8 513 515 695 830 586 832 614 820 808 640 833 828 697 642 810 835 655 656 836 717 680 534 727 644 653 732Used by:1372
Symbol 838 GraphicUsed by:842
Symbol 839 GraphicUsed by:842
Symbol 840 GraphicUsed by:841
Symbol 841 MovieClipUses:840Used by:842 844 883 887 892 895
Symbol 842 MovieClip {Level7}Uses:8 513 515 642 838 586 820 808 695 640 653 655 656 839 697 828 832 644 614 680 841 822 732Used by:1372
Symbol 843 GraphicUsed by:844
Symbol 844 MovieClip {Level6}Uses:8 843 586 820 680 808 614 826 832 640 717 727 517 644 513 515 656 732 642 822 841Used by:1372
Symbol 845 GraphicUsed by:847
Symbol 846 GraphicUsed by:847
Symbol 847 MovieClip {Level5}Uses:8 845 586 614 513 680 820 695 697 655 644 534 515 846 732Used by:1372
Symbol 848 GraphicUsed by:849
Symbol 849 MovieClip {SRoundBall}Uses:848Used by:856 870 904 1372
Symbol 850 GraphicUsed by:856
Symbol 851 GraphicUsed by:852
Symbol 852 MovieClip {DRec_palka2}Uses:851Used by:856 1372
Symbol 853 GraphicUsed by:856
Symbol 854 GraphicUsed by:855
Symbol 855 MovieClip {RevoluteJointMotorMC}Uses:854Used by:856 858 866 883 1372
Symbol 856 MovieClip {Level4}Uses:8 849 695 850 586 614 820 640 832 513 515 810 835 655 656 642 653 717 680 727 644 852 697 853 732 828 855Used by:1372
Symbol 857 GraphicUsed by:858
Symbol 858 MovieClip {Level20}Uses:8 857 586 717 808 614 534 820 695 640 656 680 513 515 732 693 697 655 828 855Used by:1372
Symbol 859 GraphicUsed by:860
Symbol 860 MovieClip {Level3}Uses:8 513 515 642 859 586 832 820 808 695 640 653 655 656 534 644 693 614 822 680 732Used by:1372
Symbol 861 GraphicUsed by:866
Symbol 862 GraphicUsed by:866
Symbol 863 GraphicUsed by:866
Symbol 864 GraphicUsed by:866
Symbol 865 GraphicUsed by:866
Symbol 866 MovieClip {Level19}Uses:8 513 515 861 586 820 640 642 680 644 653 655 656 862 835 695 855 534 808 614 863 693 864 865 822 732Used by:1372
Symbol 867 GraphicUsed by:868
Symbol 868 MovieClip {Level18}Uses:8 867 586 693 513 515 640 810 828 695 569 656 820 680 808 697 655 832 534 732Used by:1372
Symbol 869 GraphicUsed by:870
Symbol 870 MovieClip {Level17}Uses:8 849 869 614 680 820 644 826 695 697 655 569 513 642 653 656 717 515 586 732Used by:1372
Symbol 871 GraphicUsed by:872
Symbol 872 MovieClip {Level16}Uses:8 871 586 820 680 826 695 697 655 717 569 640 808 614 644 732 513 515 642 653 656Used by:1372
Symbol 873 GraphicUsed by:883
Symbol 874 GraphicUsed by:883
Symbol 875 GraphicUsed by:876
Symbol 876 MovieClip {MovingPlatformSensorMC}Uses:875Used by:883 887 892 895 897 1372
Symbol 877 GraphicUsed by:878
Symbol 878 MovieClip {MovingPlatformMC}Uses:877Used by:883 892 895 897 1372
Symbol 879 GraphicUsed by:880
Symbol 880 MovieClip {Fla.DynIcePlatformMC}Uses:879 520 533Used by:883 1372
Symbol 881 GraphicUsed by:882
Symbol 882 MovieClipUses:881Used by:883
Symbol 883 MovieClip {Level15}Uses:8 826 513 515 873 874 586 820 644 680 717 808 614 876 878 655 880 835 855 810 656 640 841 822 882 653 732Used by:1372
Symbol 884 GraphicUsed by:887
Symbol 885 GraphicUsed by:886
Symbol 886 MovieClip {MovingPlatformYMC}Uses:885Used by:887 892 897 1372
Symbol 887 MovieClip {Level14}Uses:8 884 586 513 680 695 653 655 656 644 822 515 841 697 640 808 876 886 820 732Used by:1372
Symbol 888 GraphicUsed by:892
Symbol 889 GraphicUsed by:892
Symbol 890 GraphicUsed by:892
Symbol 891 GraphicUsed by:892
Symbol 892 MovieClip {Level13}Uses:8 888 586 820 640 644 513 515 889 890 614 680 717 891 569 732 653 655 656 876 878 886 693 828 810 826 822 841Used by:1372
Symbol 893 GraphicUsed by:895
Symbol 894 GraphicUsed by:895
Symbol 895 MovieClip {Level12}Uses:8 513 515 893 586 894 644 717 808 614 876 878 655 680 656 640 822 841 732 828 810 820Used by:1372
Symbol 896 GraphicUsed by:897
Symbol 897 MovieClip {Level11}Uses:8 896 586 832 820 808 717 680 727 644 513 515 656 876 878 655 886 614 732Used by:1372
Symbol 898 GraphicUsed by:904
Symbol 899 GraphicUsed by:904
Symbol 900 GraphicUsed by:904
Symbol 901 GraphicUsed by:904
Symbol 902 GraphicUsed by:904
Symbol 903 TextUses:100Used by:904
Symbol 904 MovieClip {Level1}Uses:8 832 517 534 513 898 586 614 640 644 899 680 515 700 900 717 727 728 901 902 903 849 820 808 732Used by:1372
Symbol 905 GraphicUsed by:908
Symbol 906 GraphicUsed by:908
Symbol 907 GraphicUsed by:908
Symbol 908 MovieClipUses:905 906 907Used by:922
Symbol 909 GraphicUsed by:922
Symbol 910 GraphicUsed by:922
Symbol 911 GraphicUsed by:922
Symbol 912 GraphicUsed by:922
Symbol 913 GraphicUsed by:922
Symbol 914 GraphicUsed by:922
Symbol 915 GraphicUsed by:922
Symbol 916 GraphicUsed by:922
Symbol 917 GraphicUsed by:922
Symbol 918 GraphicUsed by:922
Symbol 919 GraphicUsed by:922
Symbol 920 GraphicUsed by:922
Symbol 921 GraphicUsed by:922
Symbol 922 MovieClipUses:908 909 910 911 912 913 914 915 916 917 918 919 920 921Used by:923
Symbol 923 MovieClip {Fla.ArrowMC}Uses:922Used by:1372
Symbol 924 GraphicUsed by:974
Symbol 925 GraphicUsed by:926
Symbol 926 MovieClipUses:925Used by:974
Symbol 927 GraphicUsed by:928
Symbol 928 MovieClipUses:927Used by:974
Symbol 929 GraphicUsed by:930
Symbol 930 MovieClipUses:929Used by:974
Symbol 931 GraphicUsed by:932
Symbol 932 MovieClipUses:931Used by:974
Symbol 933 GraphicUsed by:934
Symbol 934 MovieClipUses:933Used by:974
Symbol 935 GraphicUsed by:936
Symbol 936 MovieClipUses:935Used by:974
Symbol 937 GraphicUsed by:938
Symbol 938 MovieClipUses:937Used by:974
Symbol 939 GraphicUsed by:940
Symbol 940 MovieClipUses:939Used by:974
Symbol 941 GraphicUsed by:942
Symbol 942 MovieClipUses:941Used by:974
Symbol 943 GraphicUsed by:973
Symbol 944 GraphicUsed by:973
Symbol 945 GraphicUsed by:973
Symbol 946 GraphicUsed by:973
Symbol 947 GraphicUsed by:973
Symbol 948 GraphicUsed by:973
Symbol 949 GraphicUsed by:973
Symbol 950 GraphicUsed by:973
Symbol 951 GraphicUsed by:973
Symbol 952 GraphicUsed by:973
Symbol 953 GraphicUsed by:973
Symbol 954 GraphicUsed by:973
Symbol 955 GraphicUsed by:973
Symbol 956 GraphicUsed by:973
Symbol 957 GraphicUsed by:973
Symbol 958 GraphicUsed by:973
Symbol 959 GraphicUsed by:973
Symbol 960 GraphicUsed by:973
Symbol 961 GraphicUsed by:973
Symbol 962 GraphicUsed by:973
Symbol 963 GraphicUsed by:973
Symbol 964 GraphicUsed by:973
Symbol 965 GraphicUsed by:973
Symbol 966 GraphicUsed by:973
Symbol 967 GraphicUsed by:973
Symbol 968 GraphicUsed by:973
Symbol 969 GraphicUsed by:973
Symbol 970 GraphicUsed by:973
Symbol 971 GraphicUsed by:973
Symbol 972 GraphicUsed by:973
Symbol 973 MovieClipUses:943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972Used by:974
Symbol 974 MovieClip {Fla.DragonMC}Uses:924 926 928 930 932 934 936 938 940 942 973Used by:1372
Symbol 975 GraphicUsed by:976
Symbol 976 MovieClip {Fla.GoalSensorMC}Uses:975Used by:1372
Symbol 977 GraphicUsed by:978
Symbol 978 MovieClip {HandsTurnAroundMC}Uses:977Used by:1372
Symbol 979 GraphicUsed by:983
Symbol 980 GraphicUsed by:981
Symbol 981 MovieClipUses:980Used by:983 1035 1368
Symbol 982 GraphicUsed by:983
Symbol 983 MovieClip {Fla.HandUnderGroundMC}Uses:979 981 982Used by:1372
Symbol 984 GraphicUsed by:985
Symbol 985 MovieClip {HeadSpinZombieMC}Uses:984Used by:1372
Symbol 986 GraphicUsed by:987
Symbol 987 MovieClip {Fla.SizeMeterMC}Uses:986Used by:989
Symbol 988 GraphicUsed by:989
Symbol 989 MovieClip {OneHandMC}Uses:987 988Used by:1372
Symbol 990 GraphicUsed by:991
Symbol 991 MovieClip {PartOfTombStoneMC}Uses:990Used by:1372
Symbol 992 GraphicUsed by:993
Symbol 993 MovieClipUses:992Used by:1020
Symbol 994 GraphicUsed by:995
Symbol 995 MovieClipUses:994Used by:1020
Symbol 996 GraphicUsed by:997
Symbol 997 MovieClipUses:996Used by:1020
Symbol 998 GraphicUsed by:1013
Symbol 999 GraphicUsed by:1011
Symbol 1000 GraphicUsed by:1011
Symbol 1001 GraphicUsed by:1011
Symbol 1002 GraphicUsed by:1011
Symbol 1003 GraphicUsed by:1011
Symbol 1004 GraphicUsed by:1011
Symbol 1005 GraphicUsed by:1011
Symbol 1006 GraphicUsed by:1011
Symbol 1007 GraphicUsed by:1011
Symbol 1008 GraphicUsed by:1011
Symbol 1009 GraphicUsed by:1011
Symbol 1010 GraphicUsed by:1011
Symbol 1011 MovieClipUses:999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010Used by:1013
Symbol 1012 GraphicUsed by:1013
Symbol 1013 MovieClipUses:998 1011 1012Used by:1020
Symbol 1014 GraphicUsed by:1015
Symbol 1015 MovieClipUses:1014Used by:1020
Symbol 1016 GraphicUsed by:1017
Symbol 1017 MovieClipUses:1016Used by:1020
Symbol 1018 GraphicUsed by:1020
Symbol 1019 GraphicUsed by:1020
Symbol 1020 MovieClip {Fla.PlayerZombieMC}Uses:993 995 997 1013 1015 1017 1018 1019Used by:1372
Symbol 1021 GraphicUsed by:1022
Symbol 1022 MovieClip {Fla.RevoluteJointReverseMotorMC}Uses:1021Used by:1372
Symbol 1023 GraphicUsed by:1024
Symbol 1024 MovieClip {ShootPointerMC}Uses:1023Used by:1372
Symbol 1025 GraphicUsed by:1035
Symbol 1026 GraphicUsed by:1035
Symbol 1027 GraphicUsed by:1035
Symbol 1028 GraphicUsed by:1035 1368
Symbol 1029 GraphicUsed by:1035 1368
Symbol 1030 GraphicUsed by:1035
Symbol 1031 GraphicUsed by:1035
Symbol 1032 GraphicUsed by:1035
Symbol 1033 GraphicUsed by:1035
Symbol 1034 GraphicUsed by:1035
Symbol 1035 MovieClip {Fla.SkullBallMC}Uses:981 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034Used by:1372
Symbol 1036 MovieClip {Fla.SlowTimeSensorMC}Uses:271Used by:1372
Symbol 1037 GraphicUsed by:1046
Symbol 1038 GraphicUsed by:1046
Symbol 1039 GraphicUsed by:1046
Symbol 1040 GraphicUsed by:1046
Symbol 1041 GraphicUsed by:1046
Symbol 1042 GraphicUsed by:1046
Symbol 1043 GraphicUsed by:1046
Symbol 1044 GraphicUsed by:1046
Symbol 1045 GraphicUsed by:1046
Symbol 1046 MovieClip {Fla.SpikePlantMC}Uses:1037 1038 1039 1040 1041 1042 1043 1044 1045Used by:1372
Symbol 1047 GraphicUsed by:1061
Symbol 1048 GraphicUsed by:1057
Symbol 1049 GraphicUsed by:1057
Symbol 1050 GraphicUsed by:1057
Symbol 1051 GraphicUsed by:1057
Symbol 1052 GraphicUsed by:1057
Symbol 1053 GraphicUsed by:1057
Symbol 1054 GraphicUsed by:1057
Symbol 1055 GraphicUsed by:1057
Symbol 1056 GraphicUsed by:1057
Symbol 1057 MovieClipUses:1048 1049 1050 1051 1052 1053 1054 1055 1056Used by:1061
Symbol 1058 GraphicUsed by:1059
Symbol 1059 MovieClipUses:1058Used by:1060
Symbol 1060 MovieClipUses:1059Used by:1061
Symbol 1061 MovieClip {Fla.TambourineMC}Uses:1047 1057 1060Used by:1372
Symbol 1062 GraphicUsed by:1063
Symbol 1063 ButtonUses:1062Used by:1064
Symbol 1064 MovieClip {ZastavkaMC2}Uses:1063Used by:1372
Symbol 1065 GraphicUsed by:1072
Symbol 1066 GraphicUsed by:1072
Symbol 1067 FontUsed by:1068 1070 1076 1078 1084 1086 1092 1094 1283 1285 1370
Symbol 1068 EditableTextUses:1067Used by:1072
Symbol 1069 GraphicUsed by:1072
Symbol 1070 EditableTextUses:1067Used by:1072
Symbol 1071 GraphicUsed by:1072
Symbol 1072 ButtonUses:1065 1066 1068 1069 1070 1071Used by:1081
Symbol 1073 GraphicUsed by:1080
Symbol 1074 GraphicUsed by:1080
Symbol 1075 GraphicUsed by:1080
Symbol 1076 EditableTextUses:1067Used by:1080
Symbol 1077 GraphicUsed by:1080
Symbol 1078 EditableTextUses:1067Used by:1080
Symbol 1079 GraphicUsed by:1080
Symbol 1080 ButtonUses:1073 1074 1075 1076 1077 1078 1079Used by:1081
Symbol 1081 MovieClip {Fla.MusicBtnMC2}Uses:1072 1080Used by:1130
Symbol 1082 GraphicUsed by:1088
Symbol 1083 GraphicUsed by:1088
Symbol 1084 EditableTextUses:1067Used by:1088
Symbol 1085 GraphicUsed by:1088
Symbol 1086 EditableTextUses:1067Used by:1088
Symbol 1087 GraphicUsed by:1088
Symbol 1088 ButtonUses:1082 1083 1084 1085 1086 1087Used by:1097
Symbol 1089 GraphicUsed by:1096
Symbol 1090 GraphicUsed by:1096
Symbol 1091 GraphicUsed by:1096
Symbol 1092 EditableTextUses:1067Used by:1096
Symbol 1093 GraphicUsed by:1096
Symbol 1094 EditableTextUses:1067Used by:1096
Symbol 1095 GraphicUsed by:1096
Symbol 1096 ButtonUses:1089 1090 1091 1092 1093 1094 1095Used by:1097
Symbol 1097 MovieClip {Fla.SoundBtn2}Uses:1088 1096Used by:1130
Symbol 1098 BitmapUsed by:1099
Symbol 1099 GraphicUses:1098Used by:1130
Symbol 1100 TextUses:100Used by:1130
Symbol 1101 GraphicUsed by:1130
Symbol 1102 GraphicUsed by:1130
Symbol 1103 BitmapUsed by:1104
Symbol 1104 GraphicUses:1103Used by:1130
Symbol 1105 GraphicUsed by:1130
Symbol 1106 GraphicUsed by:1117
Symbol 1107 GraphicUsed by:1113
Symbol 1108 GraphicUsed by:1113
Symbol 1109 GraphicUsed by:1110 1332
Symbol 1110 MovieClipUses:1109Used by:1113 1327
Symbol 1111 GraphicUsed by:1113
Symbol 1112 GraphicUsed by:1113
Symbol 1113 MovieClipUses:1107 1108 1110 1111 1112Used by:1117 1123 1129 1295
Symbol 1114 GraphicUsed by:1117
Symbol 1115 GraphicUsed by:1117
Symbol 1116 GraphicUsed by:1117
Symbol 1117 ButtonUses:1106 1113 1114 1115 1116Used by:1130
Symbol 1118 GraphicUsed by:1123
Symbol 1119 GraphicUsed by:1123
Symbol 1120 GraphicUsed by:1123
Symbol 1121 GraphicUsed by:1123
Symbol 1122 TextUses:100Used by:1123 1129 1295
Symbol 1123 ButtonUses:1118 1113 1119 1120 1121 1122Used by:1130 1321
Symbol 1124 GraphicUsed by:1129
Symbol 1125 TextUses:100Used by:1129
Symbol 1126 GraphicUsed by:1129
Symbol 1127 GraphicUsed by:1129
Symbol 1128 GraphicUsed by:1129
Symbol 1129 ButtonUses:1124 1125 1113 1126 1127 1128 1122Used by:1130
Symbol 1130 MovieClip {MainMenuMC}Uses:1099 1100 1101 632 1102 671 1104 1105 1117 1123 25 1129 1097 1081Used by:1372
Symbol 1131 GraphicUsed by:1135
Symbol 1132 GraphicUsed by:1135
Symbol 1133 GraphicUsed by:1135
Symbol 1134 GraphicUsed by:1135
Symbol 1135 ButtonUses:1131 1132 1133 1134Used by:1141
Symbol 1136 GraphicUsed by:1140
Symbol 1137 GraphicUsed by:1140
Symbol 1138 GraphicUsed by:1140
Symbol 1139 GraphicUsed by:1140
Symbol 1140 ButtonUses:1136 1137 1138 1139Used by:1141
Symbol 1141 MovieClip {Fla.SoundBtn}Uses:1135 1140Used by:1185
Symbol 1142 GraphicUsed by:1146
Symbol 1143 GraphicUsed by:1146
Symbol 1144 GraphicUsed by:1146
Symbol 1145 GraphicUsed by:1146
Symbol 1146 ButtonUses:1142 1143 1144 1145Used by:1152
Symbol 1147 GraphicUsed by:1151
Symbol 1148 GraphicUsed by:1151
Symbol 1149 GraphicUsed by:1151
Symbol 1150 GraphicUsed by:1151
Symbol 1151 ButtonUses:1147 1148 1149 1150Used by:1152
Symbol 1152 MovieClip {Fla.MusicBtnMC}Uses:1146 1151Used by:1185
Symbol 1153 GraphicUsed by:1185
Symbol 1154 EditableTextUses:100Used by:1185
Symbol 1155 EditableTextUses:100Used by:1185
Symbol 1156 TextUses:100Used by:1185
Symbol 1157 TextUses:100Used by:1185
Symbol 1158 GraphicUsed by:1165
Symbol 1159 GraphicUsed by:1165
Symbol 1160 TextUses:100Used by:1165
Symbol 1161 GraphicUsed by:1165
Symbol 1162 GraphicUsed by:1165
Symbol 1163 GraphicUsed by:1165
Symbol 1164 GraphicUsed by:1165
Symbol 1165 ButtonUses:1158 1159 1160 1161 1162 1163 1164Used by:1185
Symbol 1166 GraphicUsed by:1173
Symbol 1167 GraphicUsed by:1173
Symbol 1168 TextUses:100Used by:1173
Symbol 1169 GraphicUsed by:1173
Symbol 1170 GraphicUsed by:1173
Symbol 1171 GraphicUsed by:1173
Symbol 1172 GraphicUsed by:1173
Symbol 1173 ButtonUses:1166 1167 1168 1169 1170 1171 1172Used by:1185
Symbol 1174 GraphicUsed by:1181
Symbol 1175 GraphicUsed by:1181
Symbol 1176 TextUses:100Used by:1181
Symbol 1177 GraphicUsed by:1181
Symbol 1178 GraphicUsed by:1181
Symbol 1179 GraphicUsed by:1181
Symbol 1180 GraphicUsed by:1181
Symbol 1181 ButtonUses:1174 1175 1176 1177 1178 1179 1180Used by:1185
Symbol 1182 GraphicUsed by:1185
Symbol 1183 TextUses:100Used by:1185
Symbol 1184 EditableTextUses:100Used by:1185
Symbol 1185 MovieClip {LvlMenuMC}Uses:1153 1154 1155 1156 1157 1165 1173 1181 1152 1141 25 1182 1183 1184Used by:1372
Symbol 1186 GraphicUsed by:1210 1230
Symbol 1187 GraphicUsed by:1209
Symbol 1188 TextUses:100Used by:1209
Symbol 1189 GraphicUsed by:1209
Symbol 1190 GraphicUsed by:1195
Symbol 1191 GraphicUsed by:1195
Symbol 1192 TextUses:100Used by:1195
Symbol 1193 GraphicUsed by:1195
Symbol 1194 GraphicUsed by:1195
Symbol 1195 ButtonUses:1190 1191 1192 1193 1194Used by:1209 1229
Symbol 1196 GraphicUsed by:1201
Symbol 1197 GraphicUsed by:1201
Symbol 1198 TextUses:100Used by:1201
Symbol 1199 GraphicUsed by:1201
Symbol 1200 GraphicUsed by:1201
Symbol 1201 ButtonUses:1196 1197 1198 1199 1200Used by:1209 1229
Symbol 1202 GraphicUsed by:1207
Symbol 1203 GraphicUsed by:1207
Symbol 1204 TextUses:100Used by:1207
Symbol 1205 GraphicUsed by:1207
Symbol 1206 GraphicUsed by:1207
Symbol 1207 ButtonUses:1202 1203 1204 1205 1206Used by:1209 1229
Symbol 1208 GraphicUsed by:1209
Symbol 1209 MovieClipUses:1187 1188 1189 1195 1201 1207 1208 25Used by:1210 1372
Symbol 1210 MovieClip {Fla.CompleteOutOfAmmoMC}Uses:1186 1209Used by:1211
Symbol 1211 MovieClip {LevelOutOfAmmoMC}Uses:1210Used by:1372
Symbol 1212 GraphicUsed by:1222
Symbol 1213 TextUses:100Used by:1222
Symbol 1214 GraphicUsed by:1222
Symbol 1215 GraphicUsed by:1222
Symbol 1216 TextUses:100Used by:1222
Symbol 1217 MovieClipUses:96 98Used by:1222
Symbol 1218 GraphicUsed by:1222
Symbol 1219 GraphicUsed by:1222
Symbol 1220 GraphicUsed by:1222
Symbol 1221 GraphicUsed by:1222
Symbol 1222 ButtonUses:1212 1213 1214 1215 1216 1217 1218 1219 1220 1221Used by:1229
Symbol 1223 GraphicUsed by:1229
Symbol 1224 TextUses:100Used by:1229
Symbol 1225 GraphicUsed by:1226
Symbol 1226 MovieClipUses:1225Used by:1227
Symbol 1227 MovieClip {Fla.MedalsForLvlMC}Uses:1226Used by:1229
Symbol 1228 EditableTextUses:100Used by:1229
Symbol 1229 MovieClipUses:1222 1223 1224 1227 1195 1201 1207 1228 25Used by:1230 1372
Symbol 1230 MovieClip {Fla.AnimateCompleteMC}Uses:1186 1229Used by:1231
Symbol 1231 MovieClip {LevelCompleteMC}Uses:1230Used by:1372
Symbol 1232 GraphicUsed by:1233 1300 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320
Symbol 1233 MovieClipUses:1232Used by:1275 1300 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320
Symbol 1234 TextUses:100Used by:1275 1302
Symbol 1235 TextUses:100Used by:1275 1303
Symbol 1236 TextUses:100Used by:1275 1304
Symbol 1237 TextUses:100Used by:1275 1305
Symbol 1238 TextUses:100Used by:1275 1306
Symbol 1239 TextUses:100Used by:1275 1307
Symbol 1240 TextUses:100Used by:1275 1308
Symbol 1241 TextUses:100Used by:1275 1309
Symbol 1242 TextUses:100Used by:1275 1310
Symbol 1243 TextUses:100Used by:1275 1311
Symbol 1244 TextUses:100Used by:1275 1312
Symbol 1245 TextUses:100Used by:1275 1313
Symbol 1246 TextUses:100Used by:1275 1314
Symbol 1247 TextUses:100Used by:1275 1315
Symbol 1248 TextUses:100Used by:1275 1316
Symbol 1249 TextUses:100Used by:1275 1317
Symbol 1250 TextUses:100Used by:1275 1318
Symbol 1251 TextUses:100Used by:1275 1319
Symbol 1252 TextUses:100Used by:1275 1320
Symbol 1253 GraphicUsed by:1254
Symbol 1254 MovieClipUses:1253Used by:1275
Symbol 1255 GraphicUsed by:1256
Symbol 1256 MovieClipUses:1255Used by:1275
Symbol 1257 TextUses:100Used by:1275 1303
Symbol 1258 TextUses:100Used by:1275 1304
Symbol 1259 TextUses:100Used by:1275 1305
Symbol 1260 TextUses:100Used by:1275 1306
Symbol 1261 TextUses:100Used by:1275 1307
Symbol 1262 TextUses:100Used by:1275 1308
Symbol 1263 TextUses:100Used by:1275 1309
Symbol 1264 TextUses:100Used by:1275 1310
Symbol 1265 TextUses:100Used by:1275 1311
Symbol 1266 TextUses:100Used by:1275 1312
Symbol 1267 TextUses:100Used by:1275 1313
Symbol 1268 TextUses:100Used by:1275 1314
Symbol 1269 TextUses:100Used by:1275 1315
Symbol 1270 TextUses:100Used by:1275 1316
Symbol 1271 TextUses:100Used by:1275 1317
Symbol 1272 TextUses:100Used by:1275 1318
Symbol 1273 TextUses:100Used by:1275 1319
Symbol 1274 TextUses:100Used by:1275 1320
Symbol 1275 MovieClip {Fla.MaskLvlMC}Uses:1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1254 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274Used by:1321
Symbol 1276 GraphicUsed by:1279
Symbol 1277 GraphicUsed by:1279
Symbol 1278 GraphicUsed by:1279
Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}Uses:1276 1277 1278Used by:1321
Symbol 1280 GraphicUsed by:1321
Symbol 1281 FontUsed by:1282
Symbol 1282 EditableTextUses:1281Used by:1321
Symbol 1283 EditableTextUses:1067Used by:1321
Symbol 1284 GraphicUsed by:1289
Symbol 1285 TextUses:1067Used by:1289
Symbol 1286 GraphicUsed by:1289
Symbol 1287 GraphicUsed by:1289
Symbol 1288 GraphicUsed by:1289
Symbol 1289 ButtonUses:1284 1285 1286 1287 1288Used by:1321
Symbol 1290 GraphicUsed by:1295
Symbol 1291 TextUses:100Used by:1295
Symbol 1292 GraphicUsed by:1295
Symbol 1293 GraphicUsed by:1295
Symbol 1294 GraphicUsed by:1295
Symbol 1295 ButtonUses:1290 1291 1113 1292 1293 1294 1122Used by:1321
Symbol 1296 TextUses:100Used by:1300
Symbol 1297 GraphicUsed by:1298
Symbol 1298 MovieClipUses:1297Used by:1300 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320
Symbol 1299 TextUses:100Used by:1300
Symbol 1300 ButtonUses:1233 1296 1298 1299 1232Used by:1321
Symbol 1301 TextUses:100Used by:1302
Symbol 1302 ButtonUses:1233 1234 1298 1301 1232Used by:1321
Symbol 1303 ButtonUses:1233 1235 1298 1257 1232Used by:1321
Symbol 1304 ButtonUses:1233 1236 1298 1258 1232Used by:1321
Symbol 1305 ButtonUses:1233 1237 1298 1259 1232Used by:1321
Symbol 1306 ButtonUses:1233 1238 1298 1260 1232Used by:1321
Symbol 1307 ButtonUses:1233 1239 1298 1261 1232Used by:1321
Symbol 1308 ButtonUses:1233 1240 1298 1262 1232Used by:1321
Symbol 1309 ButtonUses:1233 1241 1298 1263 1232Used by:1321
Symbol 1310 ButtonUses:1233 1242 1298 1264 1232Used by:1321
Symbol 1311 ButtonUses:1233 1243 1298 1265 1232Used by:1321
Symbol 1312 ButtonUses:1233 1244 1298 1266 1232Used by:1321
Symbol 1313 ButtonUses:1233 1245 1298 1267 1232Used by:1321
Symbol 1314 ButtonUses:1233 1246 1298 1268 1232Used by:1321
Symbol 1315 ButtonUses:1233 1247 1298 1269 1232Used by:1321
Symbol 1316 ButtonUses:1233 1248 1298 1270 1232Used by:1321
Symbol 1317 ButtonUses:1233 1249 1298 1271 1232Used by:1321
Symbol 1318 ButtonUses:1233 1250 1298 1272 1232Used by:1321
Symbol 1319 ButtonUses:1233 1251 1298 1273 1232Used by:1321
Symbol 1320 ButtonUses:1233 1252 1298 1274 1232Used by:1321
Symbol 1321 MovieClip {LevelChooseMenuMC}Uses:1280 1282 1283 25 1289 1123 1295 1300 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1279 1275Used by:1372
Symbol 1322 BitmapUsed by:1323
Symbol 1323 GraphicUses:1322Used by:1333
Symbol 1324 GraphicUsed by:1327 1332
Symbol 1325 GraphicUsed by:1327 1332
Symbol 1326 GraphicUsed by:1327 1332
Symbol 1327 MovieClipUses:1324 1325 1110 1326Used by:1328
Symbol 1328 MovieClipUses:1327Used by:1332
Symbol 1329 TextUses:100Used by:1332
Symbol 1330 TextUses:100Used by:1332
Symbol 1331 GraphicUsed by:1332
Symbol 1332 ButtonUses:1328 1329 1330 1324 1325 1109 1326 1331Used by:1333
Symbol 1333 MovieClip {ComicsScreenMC}Uses:1323 1332 25Used by:1372
Symbol 1334 GraphicUsed by:1335
Symbol 1335 MovieClipUses:1334Used by:1372
Symbol 1336 GraphicUsed by:1337
Symbol 1337 MovieClipUses:1336Used by:1372
Symbol 1338 GraphicUsed by:1341
Symbol 1339 GraphicUsed by:1340
Symbol 1340 MovieClipUses:1339Used by:1341
Symbol 1341 MovieClipUses:1338 1340Used by:1372
Symbol 1342 GraphicUsed by:1343
Symbol 1343 MovieClipUses:1342Used by:1345 1372
Symbol 1344 GraphicUsed by:1345
Symbol 1345 MovieClipUses:1343 1344Used by:1372
Symbol 1346 GraphicUsed by:1347
Symbol 1347 MovieClipUses:1346Used by:1372
Symbol 1348 GraphicUsed by:1349
Symbol 1349 MovieClipUses:1348Used by:1351
Symbol 1350 GraphicUsed by:1351
Symbol 1351 MovieClipUses:1349 1350Used by:1372
Symbol 1352 GraphicUsed by:1353
Symbol 1353 MovieClipUses:1352Used by:1355
Symbol 1354 GraphicUsed by:1355
Symbol 1355 MovieClipUses:1353 1354Used by:1372
Symbol 1356 GraphicUsed by:1368
Symbol 1357 GraphicUsed by:1368
Symbol 1358 GraphicUsed by:1368
Symbol 1359 GraphicUsed by:1368
Symbol 1360 GraphicUsed by:1368
Symbol 1361 GraphicUsed by:1368
Symbol 1362 GraphicUsed by:1368
Symbol 1363 GraphicUsed by:1368
Symbol 1364 GraphicUsed by:1368
Symbol 1365 GraphicUsed by:1368
Symbol 1366 GraphicUsed by:1368
Symbol 1367 GraphicUsed by:1368
Symbol 1368 MovieClipUses:981 1356 1357 1358 1359 1360 1028 1029 1361 1362 1363 1364 1365 1366 1367Used by:1372
Symbol 1369 GraphicUsed by:1371
Symbol 1370 EditableTextUses:1067Used by:1371
Symbol 1371 MovieClipUses:1369 1370Used by:1372
Symbol 1372 MovieClip {PiratesSOS_for_BD_CH_L_fla.content_21}Uses:1229 1209 1333 1321 1231 1211 1185 1130 1064 1335 642 1337 1341 1343 1345 1347 1351 1355 515 697 835 693 1061 849 513 826 1046 1036 828 1368 1035 1024 656 1022 855 655 1020 991 989 886 876 878 644 810 695 832 534 985 983 978 976 717 880 852 1371 974 653 732 808 614 680 820 640 569 923 904 897 895 892 887 883 872 870 868 866 860 858 856 847 844 842 837 829 823 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107Used by:Timeline

Instance Names

"_preloaderBtn"Frame 1Symbol 25 Button
"_preloaderLine"Frame 1Symbol 93 MovieClip
"startFromPreloaderBtn"Frame 1Symbol 106 Button {StartGameFromPreloader}
"egg"Symbol 269 MovieClip {BigDinoSplash} Frame 2Symbol 261 MovieClip
"egg"Symbol 269 MovieClip {BigDinoSplash} Frame 235Symbol 261 MovieClip
"egg"Symbol 269 MovieClip {BigDinoSplash} Frame 249Symbol 261 MovieClip
"splash"Symbol 270 MovieClip {SplashScreenMC} Frame 1Symbol 269 MovieClip {BigDinoSplash}
"bombSizeMC"Symbol 569 MovieClip {Fla.BombMC} Frame 1Symbol 537 MovieClip
"bulletsBositionMC"Symbol 586 MovieClip {Fla.HandWithGun} Frame 1Symbol 575 MovieClip
"_parrotsHand"Symbol 733 MovieClip {Level2} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"arrowCursor"Symbol 751 MovieClip {CustomCursor} Frame 1Symbol 750 MovieClip
"swordCursor"Symbol 751 MovieClip {CustomCursor} Frame 1Symbol 748 MovieClip {SwordCursor}
"_parrotsHand"Symbol 823 MovieClip {Level10} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 829 MovieClip {Level9} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 837 MovieClip {Level8} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 842 MovieClip {Level7} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 844 MovieClip {Level6} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 847 MovieClip {Level5} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 856 MovieClip {Level4} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_10"Symbol 856 MovieClip {Level4} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_parrotsHand"Symbol 858 MovieClip {Level20} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_3"Symbol 858 MovieClip {Level20} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_parrotsHand"Symbol 860 MovieClip {Level3} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 866 MovieClip {Level19} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_3"Symbol 866 MovieClip {Level19} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_3"Symbol 866 MovieClip {Level19} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_parrotsHand"Symbol 868 MovieClip {Level18} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 870 MovieClip {Level17} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 872 MovieClip {Level16} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 883 MovieClip {Level15} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_5"Symbol 883 MovieClip {Level15} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_5"Symbol 883 MovieClip {Level15} Frame 1Symbol 855 MovieClip {RevoluteJointMotorMC}
"_parrotsHand"Symbol 887 MovieClip {Level14} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 892 MovieClip {Level13} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 895 MovieClip {Level12} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 897 MovieClip {Level11} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_parrotsHand"Symbol 904 MovieClip {Level1} Frame 1Symbol 586 MovieClip {Fla.HandWithGun}
"_5"Symbol 974 MovieClip {Fla.DragonMC} Frame 52Symbol 940 MovieClip
"oneHandSize"Symbol 989 MovieClip {OneHandMC} Frame 1Symbol 987 MovieClip {Fla.SizeMeterMC}
"start"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 1117 Button
"moreGamesMainMenu"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 1123 Button
"btnSponsorLogoMainMenu"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 25 Button
"addToSiteBtn"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 1129 Button
"sound"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 1097 MovieClip {Fla.SoundBtn2}
"music"Symbol 1130 MovieClip {MainMenuMC} Frame 1Symbol 1081 MovieClip {Fla.MusicBtnMC2}
"lvlTxt"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1154 EditableText
"scoreTxt"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1155 EditableText
"toLvlMenu"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1165 Button
"helpBtn"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1173 Button
"retry"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1181 Button
"music"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1152 MovieClip {Fla.MusicBtnMC}
"sound"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1141 MovieClip {Fla.SoundBtn}
"btnSponsorLogoLvl"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 25 Button
"bulletTxt"Symbol 1185 MovieClip {LvlMenuMC} Frame 1Symbol 1184 EditableText
"retry"Symbol 1209 MovieClip Frame 1Symbol 1195 Button
"toLvlMenu"Symbol 1209 MovieClip Frame 1Symbol 1201 Button
"helpBtn"Symbol 1209 MovieClip Frame 1Symbol 1207 Button
"btnSponsorLogoFailedLvl"Symbol 1209 MovieClip Frame 1Symbol 25 Button
"board"Symbol 1210 MovieClip {Fla.CompleteOutOfAmmoMC} Frame 1Symbol 1209 MovieClip
"completeMC"Symbol 1211 MovieClip {LevelOutOfAmmoMC} Frame 1Symbol 1210 MovieClip {Fla.CompleteOutOfAmmoMC}
"nextLvl"Symbol 1229 MovieClip Frame 1Symbol 1222 Button
"_medalsAfterLvl"Symbol 1229 MovieClip Frame 1Symbol 1227 MovieClip {Fla.MedalsForLvlMC}
"retry"Symbol 1229 MovieClip Frame 1Symbol 1195 Button
"toLvlMenu"Symbol 1229 MovieClip Frame 1Symbol 1201 Button
"helpBtn"Symbol 1229 MovieClip Frame 1Symbol 1207 Button
"scoreAtLvlCompleteTxt"Symbol 1229 MovieClip Frame 1Symbol 1228 EditableText
"btnSponsorLogoFinishLvl"Symbol 1229 MovieClip Frame 1Symbol 25 Button
"board"Symbol 1230 MovieClip {Fla.AnimateCompleteMC} Frame 1Symbol 1229 MovieClip
"completeMC"Symbol 1231 MovieClip {LevelCompleteMC} Frame 1Symbol 1230 MovieClip {Fla.AnimateCompleteMC}
"scoreTxt"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1282 EditableText
"btnSponsorLogoLevelChooseMenu"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 25 Button
"hs_btn"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1289 Button
"moreGamesLevelChooseMenu"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1123 Button
"toMainMenu"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1295 Button
"_1"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1300 Button
"_2"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1302 Button
"_3"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1303 Button
"_4"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1304 Button
"_5"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1305 Button
"_6"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1306 Button
"_7"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1307 Button
"_8"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1308 Button
"_9"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1309 Button
"_10"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1310 Button
"_11"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1311 Button
"_12"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1312 Button
"_13"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1313 Button
"_14"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1314 Button
"_15"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1315 Button
"_16"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1316 Button
"_17"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1317 Button
"_18"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1318 Button
"_19"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1319 Button
"_20"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1320 Button
"m1"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m2"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m3"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m4"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m5"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m6"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m7"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m8"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m9"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m10"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m11"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m12"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m13"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m14"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m15"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m16"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m17"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m18"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m19"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"m20"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn}
"lvlMask"Symbol 1321 MovieClip {LevelChooseMenuMC} Frame 1Symbol 1275 MovieClip {Fla.MaskLvlMC}
"comicsNext"Symbol 1333 MovieClip {ComicsScreenMC} Frame 1Symbol 1332 Button
"btnSponsorLogoPreHistory"Symbol 1333 MovieClip {ComicsScreenMC} Frame 1Symbol 25 Button
"myTxt"Symbol 1371 MovieClip Frame 1Symbol 1370 EditableText

Special Tags

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

Labels

"preloader"Frame 1
"sources"Frame 2
"main"Frame 3
"firstChest"Symbol 200 MovieClip {VikingMC} Frame 2
"secondChest"Symbol 200 MovieClip {VikingMC} Frame 43
"splash"Symbol 269 MovieClip {BigDinoSplash} Frame 2
"crash"Symbol 511 MovieClip {Fla.MonsterMC} Frame 10
"crash"Symbol 534 MovieClip {Fla.IcePlatformMC} Frame 3
"Shoot"Symbol 586 MovieClip {Fla.HandWithGun} Frame 2
"over"Symbol 653 MovieClip {ChainLinkMC} Frame 1
"crash"Symbol 653 MovieClip {ChainLinkMC} Frame 3
"out"Symbol 768 MovieClip {BreakablePlatformMC} Frame 1
"over"Symbol 768 MovieClip {BreakablePlatformMC} Frame 2
"crash"Symbol 768 MovieClip {BreakablePlatformMC} Frame 3
"crash"Symbol 880 MovieClip {Fla.DynIcePlatformMC} Frame 3
"flame"Symbol 974 MovieClip {Fla.DragonMC} Frame 11
"noFlame"Symbol 974 MovieClip {Fla.DragonMC} Frame 40
"endMove"Symbol 974 MovieClip {Fla.DragonMC} Frame 52
"appear"Symbol 1035 MovieClip {Fla.SkullBallMC} Frame 2
"normal"Symbol 1035 MovieClip {Fla.SkullBallMC} Frame 31
"disappear"Symbol 1035 MovieClip {Fla.SkullBallMC} Frame 32
"startSpike"Symbol 1046 MovieClip {Fla.SpikePlantMC} Frame 1
"endSpike"Symbol 1046 MovieClip {Fla.SpikePlantMC} Frame 5
"strike"Symbol 1061 MovieClip {Fla.TambourineMC} Frame 2
"musicOn"Symbol 1081 MovieClip {Fla.MusicBtnMC2} Frame 1
"musicOff"Symbol 1081 MovieClip {Fla.MusicBtnMC2} Frame 2
"soundOn"Symbol 1097 MovieClip {Fla.SoundBtn2} Frame 1
"soundOff"Symbol 1097 MovieClip {Fla.SoundBtn2} Frame 2
"soundOn"Symbol 1141 MovieClip {Fla.SoundBtn} Frame 1
"soundOff"Symbol 1141 MovieClip {Fla.SoundBtn} Frame 2
"musicOn"Symbol 1152 MovieClip {Fla.MusicBtnMC} Frame 1
"musicOff"Symbol 1152 MovieClip {Fla.MusicBtnMC} Frame 2
"gold"Symbol 1227 MovieClip {Fla.MedalsForLvlMC} Frame 2
"silver"Symbol 1227 MovieClip {Fla.MedalsForLvlMC} Frame 40
"bronze"Symbol 1227 MovieClip {Fla.MedalsForLvlMC} Frame 74
"gold"Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn} Frame 1
"silver"Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn} Frame 2
"bronze"Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn} Frame 3
"none"Symbol 1279 MovieClip {Fla.MedalsForLvlsBtn} Frame 4
"appear"Symbol 1368 MovieClip Frame 2
"normal"Symbol 1368 MovieClip Frame 31
"disappear"Symbol 1368 MovieClip Frame 32
"flame"Symbol 1371 MovieClip Frame 1
"noFlame"Symbol 1371 MovieClip Frame 45
"endMove"Symbol 1371 MovieClip Frame 85




http://swfchan.com/42/207349/info.shtml
Created: 23/7 -2019 11:05:46 Last modified: 23/7 -2019 11:05:46 Server time: 26/04 -2024 23:27:39