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

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

Grandpa Launcher.swf

This is the info page for
Flash #131751

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


Text
M

O

C

.

0

1

X

B

FREE GAMES

FREE GAMES

PLAY TOP QUALITY GAMES AT BOX10.COM

GREAT GAMES FOR GREAT PLAYERS
ONLY AT BOX10.COM

JOIN 1000'S OF PLAYERS AT BOX10.COM

START GAME

9999

1234

1234

1234

1234

1234

1234

LOCKED

Click the medals to get the description text here

1/4

2/4

3/4

4/4

description






CLEAR SAVED DATA

CLEAR SAVED DATA

12345

12345

12345

9999999

SIMPLE DEBUGER:

metres high

metres

0

0

X

99

Grandpa is trying
to escape from
the old people's
home,
all the way to
Panama...
And his weapon
of choice is a cannon!

Use your mouse to aim, then left click to
build up power.

Release your mouse
when the power
bar is near the top
for a powerful shot!

Use the W,A,S,D KEYS to control grandpa
while he is in the air.
You can shoot grandpa with your mouse.

There are many objects in the game that will
help or hinder grandpa.
Try to get as far as you can!

You will earn cash from swag bags and
for the distance you travel - spend these
in the shop to upgrade your equipment.
If you buy a jetpack, you can
click it during a level to use it.          

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int;// = -1 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _local7 = (_local3.x - _local4.x); _local8 = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); _local35 = 0; _local36 = 0; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); _local10 = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; _local19 = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var friction:Number; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - _local21) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; _local37 = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int; var _local8:int; _local7 = _arg3.m_type; _local8 = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function b2Pair(){ userData = null; super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint; _local5 = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint; _local3 = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local6) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var v:b2Vec2; public var id:b2ContactID; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var R:b2Mat22; public var position:b2Vec2; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function GetShape1():b2Shape{ return (m_shape1); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4]; _local6 = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local4:int; var _local5:int; var _local6:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:int; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; _local9 = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local19:int; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; _local19 = 0; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; if (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); _local10 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_force:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); _local2 = _arg1.joint1.m_type; _local3 = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint2:b2Joint; public var joint1:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular2:Number; public var angular1:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; _local3 = null; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local28 = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_ground:b2Body; public var m_maxLength2:Number; public var m_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; _local20 = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_motorForce:Number; public var m_pivotMass:b2Mat22; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local22 = tImpulse.x; _local23 = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local24 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); _local15 = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_xf:b2XForm; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_type:int; public var m_linearDamping:Number; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_shapeCount:int; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:b2Mat22; var _local4:b2Vec2; m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SynchronizeTransform():void{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SetMassFromShapes():void{ var _local1:b2Shape; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); _local5 = m_xf.R; _local6 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; _local7 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function GetJointList():b2JointEdge{ return (m_jointList); } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); _local4 = m_xf.R; _local5 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); _local6 = false; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); _local5 = true; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; _local5 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge; _local2 = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function DestroyShape(_arg1:b2Shape):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; _local5 = _local2.m_body; _local6 = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.*; import flash.display.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_lineThickness:Number;// = 1 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawScale = 1; m_lineThickness = 1; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local5:b2Color; var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; _local5 = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Island; var _local9:int; var _local10:Array; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; _local3 = _arg1.m_body1; _local4 = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; if (m_lock == true){ return (null); }; _local2 = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2TimeStep; m_lock = true; _local3 = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//GrandpaBullet (com.chocorobokun.bullet.GrandpaBullet) package com.chocorobokun.bullet { import flash.display.*; public class GrandpaBullet extends MovieClip { public function GrandpaBullet(){ stop(); } public function getNewFrame(){ var _local1:Number; _local1 = (Math.floor((Math.random() * 3)) + 2); if (_local1 != currentFrame){ gotoAndStop(_local1); } else { getNewFrame(); }; } } }//package com.chocorobokun.bullet
Section 76
//CustomContactListener (com.chocorobokun.CustomListener.CustomContactListener) package com.chocorobokun.CustomListener { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; import com.chocorobokun.managers.*; import Box2D.Dynamics.Contacts.*; import com.chocorobokun.hitObjects.*; import com.chocorobokun.bullet.*; public class CustomContactListener extends b2ContactListener { public var passedFunction:Function; public var passedBody:b2Body; public var mainMov:MainClass; override public function Remove(_arg1:b2ContactPoint):void{ if ((((_arg1.shape1.GetBody().m_userData is HitObject)) || ((_arg1.shape2.GetBody().m_userData is HitObject)))){ trace("KELUAR OBJECT!!!!"); if ((_arg1.shape1.GetBody().m_userData is HitObject)){ _arg1.shape1.GetBody().m_userData.finishCollide(_arg1.shape2.GetBody()); }; if ((_arg1.shape2.GetBody().m_userData is HitObject)){ _arg1.shape2.GetBody().m_userData.finishCollide(_arg1.shape1.GetBody()); }; }; } override public function Add(_arg1:b2ContactPoint):void{ doSomethingWhenCollide(_arg1); } public function doSomethingWhenCollide(_arg1:b2ContactPoint):void{ var _local2:Number; _local2 = (Math.floor((Math.random() * 3)) + 1); if ((((_arg1.shape1.GetBody().m_userData is HitObject)) || ((_arg1.shape2.GetBody().m_userData is HitObject)))){ trace("KENA BOMB!!!!"); if ((_arg1.shape1.GetBody().m_userData is HitObject)){ _arg1.shape1.GetBody().m_userData.onCollide(_arg1.shape2.GetBody()); }; if ((_arg1.shape2.GetBody().m_userData is HitObject)){ _arg1.shape2.GetBody().m_userData.onCollide(_arg1.shape1.GetBody()); }; }; if ((((_arg1.shape1.GetBody().m_userData is GrandpaBullet)) || ((_arg1.shape2.GetBody().m_userData is GrandpaBullet)))){ if ((((((_arg1.shape2.GetBody().GetLinearVelocity().y > 4)) || ((_arg1.shape2.GetBody().GetLinearVelocity().y < -4)))) || ((((_arg1.shape1.GetBody().GetLinearVelocity().y > 4)) || ((_arg1.shape1.GetBody().GetLinearVelocity().y < -4)))))){ if (_arg1.shape1.GetBody() == passedBody){ trace(_arg1.shape2.GetBody().GetLinearVelocity().y); _arg1.shape2.GetBody().m_userData.getNewFrame(); SoundManager.getInstance().playSound(("fartSound" + _local2)); mainMov.grandpaMain.gotoAndStop(_arg1.shape2.GetBody().m_userData.currentFrame); } else { if (_arg1.shape2.GetBody() == passedBody){ trace(_arg1.shape1.GetBody().GetLinearVelocity().y); _arg1.shape1.GetBody().m_userData.getNewFrame(); mainMov.grandpaMain.gotoAndStop(_arg1.shape1.GetBody().m_userData.currentFrame); SoundManager.getInstance().playSound(("fartSound" + _local2)); }; }; }; trace(("sound played is fartSound" + _local2)); }; } } }//package com.chocorobokun.CustomListener
Section 77
//GunData (com.chocorobokun.gameData.GunData) package com.chocorobokun.gameData { public class GunData { private var gunList:Array; public function GunData(){ gunList = [["Gun Name", "Gun Power", "Bullet", "Price", "isBuyed", "Description"], ["Pistol", 100, 4, 1, false, "The Desert Eagle is a large-framed gas-operated semi-automatic pistol designed by Magnum Research in the U.S"], ["Uzi", 200, 5, 5000, false, "UMP. Isn't it time you upgraded from that pathetic pistol?"], ["Shotgun", 300, 6, 10000, false, "Shotgun. Make Grandpa feel like a man again!"], ["Rifle", 400, 7, 25000, false, "Bullpump. Stop messing around with kids toys and buy a real gun?"], ["MachineGun", 400, 8, 150000, false, "The ultimate. Sit back, pull the trigger, and watch grandpa fly."]]; } public function getGunData():Array{ return (gunList); } } }//package com.chocorobokun.gameData
Section 78
//HitObjectData (com.chocorobokun.gameData.HitObjectData) package com.chocorobokun.gameData { import flash.utils.*; public class HitObjectData { private var hitObjectList:Array; private var hitObjectDict:Dictionary; public function HitObjectData(){ var _local1:*; super(); hitObjectDict = new Dictionary(); hitObjectList = [["HitObjectName", "yPos", "power"], ["AirBomb", 54, 200], ["Trampoline", 460, 200], ["Teeth", -40, 200], ["Satellite", -720.2, 200], ["WashingLine", 400, 200], ["UFO", -392.1, 200], ["Barrel", 444, 200], ["Tire", -239.7, 200], ["Bird", -122.7, 200], ["Kid", 422.4, 200], ["Bus", 409, 200], ["Missile", -791.9, 200], ["GunGuy", 402, 200], ["Pengamen", 423, 200], ["Fireworks", 129, 200], ["Chainsaw", 421, 200], ["Trashcan", 456, 200], ["CraneHook", 404, 200], ["Swag", 216.9, 200], ["Sandal", 216.9, 200], ["Log", 423, 200], ["Bolas", 129, 200], ["ChainedBolas", -122.7, 200], ["Police", 423, 200]]; for (_local1 in hitObjectList) { if (_local1 != 0){ hitObjectDict[hitObjectList[_local1][0]] = hitObjectList[_local1]; }; }; } public function getHitObjectDict():Dictionary{ return (hitObjectDict); } } }//package com.chocorobokun.gameData
Section 79
//JetpackData (com.chocorobokun.gameData.JetpackData) package com.chocorobokun.gameData { public class JetpackData { private var jetpackList:Array; public function JetpackData(){ jetpackList = [["Name", "Price", "fuel", "PowerX", "PowerY", "Description"], ["JetPack", 1000, 150, 1.25, 4.375, "Jet powered backpack. Manufactured in your grandson's garage. Better than nothing though!"], ["RocketPack", 7500, 240, 1.6, 4, "Inter-continental Ballistic Missile. Care to take a seat on this Grandpa?"], ["NukePack", 20000, 360, 1.2, 4, "Nuclear Missile. Go on.... I dare you!"]]; } public function getJetpackList():Array{ return (jetpackList); } } }//package com.chocorobokun.gameData
Section 80
//LauncherData (com.chocorobokun.gameData.LauncherData) package com.chocorobokun.gameData { public class LauncherData { private var launcherList:Array; public function LauncherData(){ launcherList = [["Launcher name", "power", "price", "bar range", "Description"], ["Catapult", 13, 1, 1, ""], ["Trebuchet", 15, 5000, 50, "An old medieval cannon! A slight improvement!"], ["Cannon", 20, 10000, 200, "Try this cannon out for size! Now comes with explosives to ensure your full satisfaction."], ["Missile", 35, 30000, 200, "The latest in cannon technology! Sure to pack a punch!"], ["Plasma", 50, 100000, 150, "The future is here... Now! The Matter-Decompiler-3000 will send you to the stars!"]]; } public function getLauncherData():Array{ return (launcherList); } } }//package com.chocorobokun.gameData
Section 81
//MedalData (com.chocorobokun.gameData.MedalData) package com.chocorobokun.gameData { public class MedalData { private var medalList:Array; public function MedalData(){ medalList = [["medalID", "isAchieved", "name", "description", "counter", "bonus"], ["medalID", false, "Bounce Novice", "Hit 10 Tyres or Trampolines.", 10, "Bonus Effect: +10% Bounce"], ["medalID", false, "Bouncebackability", "Hit 20 Tyres or Trampolines.", 20, "Bonus Effect: +20% Bounce"], ["medalID", false, "Tyre Trasher", "Hit 50 Tyres or Trampolines.", 50, "Bonus Effect: +50% Bounce"], ["medalID", false, "Bomb Disposal", "Hit 10 Bombs.", 10, "Bonus Effect: +10% Bomb Power"], ["medalID", false, "Blown Apart", "Hit 25 Bombs.", 25, "Bonus Effect: +20% Bomb Power"], ["medalID", false, "Crazy Grandpa", "Hit 50 Bombs.", 50, "Bonus Effect: +50% Bomb Power"], ["medalID", false, "Rocket Man", "Take a ride on a rocket", 1, ""], ["medalID", false, "Penny For The Guy?", "Take a ride on a firework", 1, ""], ["medalID", false, "Thrill Rider", "Take a ride on 10 rocket(or fireworks)", 10, ""], ["medalID", false, "Bravery", "Take a ride on 20 rocket(or fireworks)", 20, "Bonus Effect: more things"], ["medalID", false, "Fly Rider", "Take a ride on 50 rocket(or fireworks)", 50, "Bonus Effect: even more things"], ["medalID", false, "Bus Pass", "Get on the bus for free", 1, ""], ["medalID", false, "Grandpa Vs Army", "Get shot at by a soldier", 1, ""], ["medalID", false, "Hung Out To Dry", "Hit a washing line", 1, ""], ["medalID", false, "All Chewed Up", "Hit the teeth", 1, ""], ["medalID", false, "Slippery Slope", "Hit the slippers", 1, ""], ["medalID", false, "Birdy Bounce", "Steal a birds wings", 1, ""], ["medalID", false, "Alien Interference", "Bum a lift off some aliens", 1, ""], ["medalID", false, "Satellite Salvation", "Get your signal boosted from a satellite", 1, ""], ["medalID", false, "Look out for planes!", "Reach 500 metres vertically", 500, ""], ["medalID", false, "High flyer", "Reach 2000 metres vertically", 2000, "Bonus Effect: +1 ammo to gun"], ["medalID", false, "Out of this world", "Reach 5100 metres vertically", 5100, "Bonus Effect: +1 ammo to gun"], ["medalID", false, "Escaped the hospital", "Reach 5km", 5000, ""], ["medalID", false, "Skipped Town", "Reach 10km", 10000, ""], ["medalID", false, "State Border", "Reach 20km", 20000, ""], ["medalID", false, "Left the country", "Reach 50km", 50000, ""], ["medalID", false, "Destination: Panama", "Reach 75km", 75000, ""], ["medalID", false, "Loyalty", "Play for 30 minutes", 1800, ""], ["medalID", false, "Dedication", "Play for an hour", 3600, ""], ["medalID", false, "Hooked", "Play for 2 hours", 7200, ""], ["medalID", false, "Canned", "Get stuck in a trash can", 1, ""], ["medalID", false, "Spiked", "Pierce yourself on the spikey log", 1, ""], ["medalID", false, "Caught", "Get arrested", 1, ""], ["medalID", false, "Hacked off", "Get disemboweled by the chainsaw dude", 1, ""], ["medalID", false, "Maximum Pain", "Die on the hook", 1, ""], ["medalID", false, "Self Harm", "20 Deaths. ", 20, "Bonus Effect: +20% Ground Creature Power"], ["medalID", false, "Death Bringer", "50 Deaths. ", 50, "Bonus Effect: +50% Ground Creature Power"], ["medalID", false, "Grim Reaper", "100 Deaths.", 100, "Bonus Effect: +100% Ground Creature Power"], ["medalID", false, "Crispy", "Burn 20 Times", 20, ""], ["medalID", false, "Toasted", "Burn 50 Times", 50, ""], ["medalID", false, "Crispy", "Burn 20 Times", 20, ""], ["medalID", false, "Toasted", "Burn 50 Times", 50, ""], ["medalID", false, "Crispy", "Burn 20 Times", 20, ""], ["medalID", false, "Toasted", "Burn 50 Times", 50, ""]]; } public function getMedalList():Array{ return (medalList); } } }//package com.chocorobokun.gameData
Section 82
//BarrelObject (com.chocorobokun.hitObjects.BarrelObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class BarrelObject extends HitObject { public function BarrelObject(){ objectPower = 200; stop(); addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Barrel Collide"); gotoAndPlay("hit"); MainClass(root).fireParticle.showFire(); GameStatManager.getInstance().setMedal(15, 1); SoundManager.getInstance().playSound("crashSound"); }; } private function mainLoop(_arg1:Event){ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 83
//BirdObject (com.chocorobokun.hitObjects.BirdObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class BirdObject extends HitObject { public function BirdObject(){ objectPower = 160; } override public function afterCollide(_arg1:b2Body=null):void{ trace("Bird Collide"); GameStatManager.getInstance().setMedal(17, 1); SoundManager.getInstance().playSound("birdSound"); } } }//package com.chocorobokun.hitObjects
Section 84
//BolasObject (com.chocorobokun.hitObjects.BolasObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class BolasObject extends HitObject { public function BolasObject(){ stop(); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Bolas Collide!!!!!"); gotoAndStop("hit"); GameStatManager.getInstance().setDeaths(1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("splatSound"); }; } } }//package com.chocorobokun.hitObjects
Section 85
//BombObject (com.chocorobokun.hitObjects.BombObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class BombObject extends HitObject { public function BombObject(){ stop(); objectPower = 205; objectVPower = 75; powerBase = objectPower; if (GameStatManager.getInstance().getMedal(4).isAchieved){ trace("medal 1 achieved"); objectPower = (powerBase + ((powerBase * 10) / 100)); }; if (GameStatManager.getInstance().getMedal(5).isAchieved){ trace("medal 2 achieved"); objectPower = (powerBase + ((powerBase * 20) / 100)); }; if (GameStatManager.getInstance().getMedal(6).isAchieved){ trace("medal 3 achieved"); objectPower = (powerBase + ((powerBase * 50) / 100)); }; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Bomb Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setMedal(6, 1); GameStatManager.getInstance().setMedal(5, 1); GameStatManager.getInstance().setMedal(4, 1); SoundManager.getInstance().playSound("bombSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 86
//BusObject (com.chocorobokun.hitObjects.BusObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class BusObject extends HitObject { public function BusObject(){ objectPower = 350; addEventListener(Event.ADDED_TO_STAGE, onStage); trace(("Parent :" + parent)); } public function onStage(_arg1:Event){ trace(("Bus Body :" + objectBody)); trace(("Parent :" + parent)); addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Bus Collide"); gotoAndPlay("hit"); GameStatManager.getInstance().setMedal(12, 1); SoundManager.getInstance().playSound("busSound"); }; } public function mainLoop(_arg1:Event){ if (parent != null){ if (((MainClass(root).coba.ballChar) && (((objectBody.GetPosition().x * PIXEL_TO_METER) < 1878)))){ objectBody.SetLinearVelocity(new b2Vec2(2, -0.33333333333333)); } else { objectBody.SetLinearVelocity(new b2Vec2(0, -0.33333333333333)); }; }; if (currentFrame == 26){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 87
//ChainedBolasObject (com.chocorobokun.hitObjects.ChainedBolasObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class ChainedBolasObject extends HitObject { private var onRange:Boolean; public function ChainedBolasObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); } override public function finishCollide(_arg1:b2Body=null):void{ trace("OFF RANGE"); onRange = false; } private function collide(){ trace("Chained Bolas Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setDeaths(1); MainClass(root).coba.ballChar.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; MainClass(root).coba.ballChar.m_userData.visible = false; MainClass(root).coba.ballChar.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("splatSound"); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("ON RANGE"); onRange = true; }; } private function mainLoop(_arg1:Event){ if (currentFrame == 71){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ gotoAndPlay(72); }; if (onRange){ if (((((((MainClass(root).coba.ballChar.GetPosition().x * PIXEL_TO_METER) > this.x)) && ((currentFrame < 18)))) && ((currentFrame > 54)))){ collide(); onRange = false; } else { if (((((((MainClass(root).coba.ballChar.GetPosition().x * PIXEL_TO_METER) <= this.x)) && ((currentFrame >= 18)))) && ((currentFrame <= 54)))){ collide(); onRange = false; } else { trace(((((("NOT ON SAME FRAME" + currentFrame) + " ") + (MainClass(root).coba.ballChar.GetPosition().x * PIXEL_TO_METER)) + " ") + this.x)); }; }; }; } } }//package com.chocorobokun.hitObjects
Section 88
//ChainsawObject (com.chocorobokun.hitObjects.ChainsawObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class ChainsawObject extends HitObject { public function ChainsawObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Chainsaw Dude Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setMedal(34, 1); GameStatManager.getInstance().setDeaths(1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("chainsawSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == 20){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 89
//FireworksObject (com.chocorobokun.hitObjects.FireworksObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class FireworksObject extends HitObject { public function FireworksObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (((MainClass(root).coba.ballChar) && ((_arg1 == MainClass(root).coba.ballChar)))){ afterCollide(_arg1); MainClass(root).rocketFuel = 100; }; } override public function afterCollide(_arg1:b2Body=null):void{ trace("Fireworks Collide!!!!!"); gotoAndPlay("hit"); MainClass(root).activateRocket(false); GameStatManager.getInstance().setMedal(8, 1); GameStatManager.getInstance().setMedal(9, 1); GameStatManager.getInstance().setMedal(10, 1); GameStatManager.getInstance().setMedal(11, 1); SoundManager.getInstance().playSound("rocketSound"); } private function mainLoop(_arg1:Event):void{ if (currentFrame == 18){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 90
//GunGuyObject (com.chocorobokun.hitObjects.GunGuyObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class GunGuyObject extends HitObject { public function GunGuyObject(){ objectPower = 30; powerBase = objectPower; if (GameStatManager.getInstance().getMedal(36).isAchieved){ trace("medal 1 achieved"); objectPower = (powerBase + ((powerBase * 20) / 100)); }; if (GameStatManager.getInstance().getMedal(37).isAchieved){ trace("medal 2 achieved"); objectPower = (powerBase + ((powerBase * 50) / 100)); }; if (GameStatManager.getInstance().getMedal(38).isAchieved){ trace("medal 3 achieved"); objectPower = (powerBase + ((powerBase * 100) / 100)); }; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ afterCollide(); } override public function afterCollide(_arg1:b2Body=null):void{ SoundManager.getInstance().playSound("machinegunSound"); } private function mainLoop(_arg1:Event){ if (((!((parent == null))) && (MainClass(root).coba.ballChar))){ if (((((((MainClass(root).coba.ballChar.GetPosition().y * PIXEL_TO_METER) > -550)) && ((((MainClass(root).coba.ballChar.GetPosition().x * PIXEL_TO_METER) - this.x) < 15)))) && ((((MainClass(root).coba.ballChar.GetPosition().x * PIXEL_TO_METER) - this.x) > -15)))){ trace("ON SHOOTED"); GameStatManager.getInstance().setMedal(13, 1); MainClass(root).coba.ballChar.ApplyForce(new b2Vec2(0, -(objectPower)), MainClass(root).coba.ballChar.GetWorldCenter()); }; }; } } }//package com.chocorobokun.hitObjects
Section 91
//HitObject (com.chocorobokun.hitObjects.HitObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; public class HitObject extends MovieClip { public const PIXEL_TO_METER:int = 30; public var objectPower:Number;// = 200 public var objectVPower:Number;// = 25 public var powerBase:int;// = 0 public var objectBody:b2Body; public function HitObject(){ objectPower = 200; objectVPower = 25; powerBase = 0; super(); } public function finishCollide(_arg1:b2Body=null):void{ } public function onCollide(_arg1:b2Body=null):void{ var _local2:Number; trace("Object Collide!!!!!"); _local2 = _arg1.GetLinearVelocity().y; if (_arg1.GetPosition().y < objectBody.GetPosition().y){ _arg1.m_linearVelocity = new b2Vec2(_arg1.m_linearVelocity.x, 0); trace(("Force : " + (-(objectPower) - (_arg1.GetLinearVelocity().y * 4)))); _arg1.ApplyImpulse(new b2Vec2((objectVPower / PIXEL_TO_METER), ((-(objectPower) - (_local2 * 4)) / PIXEL_TO_METER)), _arg1.GetWorldCenter()); trace(("HIGHER THAN HO . APPLIED FORCE : " + ((-(objectPower) - (_local2 * 4)) / PIXEL_TO_METER))); } else { _arg1.ApplyImpulse(new b2Vec2((objectVPower / PIXEL_TO_METER), (-(objectPower) / PIXEL_TO_METER)), _arg1.GetWorldCenter()); trace(("LOWER THAN HO . APPLIED FORCE : " + _local2)); }; afterCollide(_arg1); } public function afterCollide(_arg1:b2Body=null):void{ } } }//package com.chocorobokun.hitObjects
Section 92
//HookObject (com.chocorobokun.hitObjects.HookObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class HookObject extends HitObject { public function HookObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Hook Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setMedal(35, 1); GameStatManager.getInstance().setDeaths(1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("splatSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == 40){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ gotoAndPlay(41); }; } } }//package com.chocorobokun.hitObjects
Section 93
//KidObject (com.chocorobokun.hitObjects.KidObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class KidObject extends HitObject { public function KidObject(){ objectPower = 100; objectVPower = 75; powerBase = objectPower; if (GameStatManager.getInstance().getMedal(36).isAchieved){ trace("medal 1 achieved"); objectPower = (powerBase + ((powerBase * 20) / 100)); }; if (GameStatManager.getInstance().getMedal(37).isAchieved){ trace("medal 2 achieved"); objectPower = (powerBase + ((powerBase * 50) / 100)); }; if (GameStatManager.getInstance().getMedal(38).isAchieved){ trace("medal 3 achieved"); objectPower = (powerBase + ((powerBase * 100) / 100)); }; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ trace("Kid Collide"); gotoAndPlay("hit"); SoundManager.getInstance().playSound("splatSound"); } private function mainLoop(_arg1:Event):void{ if (currentFrame == 15){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 94
//LogObject (com.chocorobokun.hitObjects.LogObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class LogObject extends HitObject { public function LogObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); stop(); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Log Collide!!!!!"); play(); GameStatManager.getInstance().setDeaths(1); GameStatManager.getInstance().setMedal(32, 1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("splatSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 95
//MissileObject (com.chocorobokun.hitObjects.MissileObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class MissileObject extends HitObject { public function MissileObject(){ stop(); addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (((MainClass(root).coba.ballChar) && ((_arg1 == MainClass(root).coba.ballChar)))){ afterCollide(_arg1); MainClass(root).rocketFuel = 100; }; } override public function afterCollide(_arg1:b2Body=null):void{ trace("Missile Collide!!!!!"); gotoAndPlay("hit"); MainClass(root).activateRocket(); GameStatManager.getInstance().setMedal(7, 1); GameStatManager.getInstance().setMedal(9, 1); GameStatManager.getInstance().setMedal(10, 1); GameStatManager.getInstance().setMedal(11, 1); SoundManager.getInstance().playSound("rocketSound"); } private function mainLoop(_arg1:Event):void{ if (currentFrame == 20){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 96
//PengamenObject (com.chocorobokun.hitObjects.PengamenObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class PengamenObject extends HitObject { public function PengamenObject(){ objectPower = 100; objectVPower = 75; powerBase = objectPower; if (GameStatManager.getInstance().getMedal(36).isAchieved){ trace("medal 1 achieved"); objectPower = (powerBase + ((powerBase * 20) / 100)); }; if (GameStatManager.getInstance().getMedal(37).isAchieved){ trace("medal 2 achieved"); objectPower = (powerBase + ((powerBase * 50) / 100)); }; if (GameStatManager.getInstance().getMedal(38).isAchieved){ trace("medal 3 achieved"); objectPower = (powerBase + ((powerBase * 100) / 100)); }; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Pengamen Collide"); gotoAndPlay("hit"); SoundManager.getInstance().playSound("splatSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == 10){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 97
//PolicemanObject (com.chocorobokun.hitObjects.PolicemanObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class PolicemanObject extends HitObject { public function PolicemanObject(){ addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("Police Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setDeaths(1); GameStatManager.getInstance().setMedal(33, 1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("jailSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == 20){ gotoAndPlay(1); }; if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 98
//SandalObject (com.chocorobokun.hitObjects.SandalObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class SandalObject extends HitObject { public function SandalObject(){ objectPower = 160; } override public function afterCollide(_arg1:b2Body=null):void{ GameStatManager.getInstance().setMedal(16, 1); SoundManager.getInstance().playSound("slipperSound"); } } }//package com.chocorobokun.hitObjects
Section 99
//SatelliteObject (com.chocorobokun.hitObjects.SatelliteObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class SatelliteObject extends HitObject { public function SatelliteObject(){ objectPower = 200; stop(); } override public function afterCollide(_arg1:b2Body=null):void{ trace("Satellite Collide"); GameStatManager.getInstance().setMedal(19, 1); SoundManager.getInstance().playSound("satelliteSound"); } } }//package com.chocorobokun.hitObjects
Section 100
//SwagBagObject (com.chocorobokun.hitObjects.SwagBagObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class SwagBagObject extends HitObject { private var isTaken:Boolean; public function SwagBagObject(){ objectPower = 0; } override public function onCollide(_arg1:b2Body=null):void{ if (!isTaken){ this.visible = false; if (MainClass(root).distance < 2001){ MainClass(root).earning = (MainClass(root).earning + 25); } else { if ((2001 <= MainClass(root).distance) <= 5000){ MainClass(root).earning = (MainClass(root).earning + 50); } else { if ((2001 <= MainClass(root).distance) <= 5000){ MainClass(root).earning = (MainClass(root).earning + 100); } else { if ((2001 <= MainClass(root).distance) <= 5000){ MainClass(root).earning = (MainClass(root).earning + 200); } else { if ((2001 <= MainClass(root).distance) <= 5000){ MainClass(root).earning = (MainClass(root).earning + 400); } else { MainClass(root).earning = (MainClass(root).earning + 1000); }; }; }; }; }; trace(("GOT MONEY!!!! :" + MainClass(root).earning)); SoundManager.getInstance().playSound("swagbagSound"); } else { trace("ALREADY TAKEN"); }; } } }//package com.chocorobokun.hitObjects
Section 101
//TeethObject (com.chocorobokun.hitObjects.TeethObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class TeethObject extends HitObject { public function TeethObject(){ objectPower = 160; } override public function afterCollide(_arg1:b2Body=null):void{ trace("Teeth Collide!!!!!"); GameStatManager.getInstance().setMedal(15, 1); SoundManager.getInstance().playSound("teethSound"); } } }//package com.chocorobokun.hitObjects
Section 102
//TireObject (com.chocorobokun.hitObjects.TireObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class TireObject extends HitObject { public function TireObject(){ objectPower = 180; powerBase = objectPower; if (GameStatManager.getInstance().getMedal(1).isAchieved){ trace("medal 1 achieved"); objectPower = (powerBase + ((powerBase * 10) / 100)); }; if (GameStatManager.getInstance().getMedal(2).isAchieved){ trace("medal 2 achieved"); objectPower = (powerBase + ((powerBase * 20) / 100)); }; if (GameStatManager.getInstance().getMedal(3).isAchieved){ trace("medal 3 achieved"); objectPower = (powerBase + ((powerBase * 50) / 100)); }; stop(); } override public function afterCollide(_arg1:b2Body=null):void{ trace("Tire Collide"); GameStatManager.getInstance().setMedal(1, 1); GameStatManager.getInstance().setMedal(3, 1); GameStatManager.getInstance().setMedal(2, 1); SoundManager.getInstance().playSound("bounceSound"); } } }//package com.chocorobokun.hitObjects
Section 103
//TrampolineObject (com.chocorobokun.hitObjects.TrampolineObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class TrampolineObject extends HitObject { public function TrampolineObject(){ objectPower = 200; if (GameStatManager.getInstance().getMedal(1).isAchieved){ trace("medal 1 achieved"); objectPower = 220; }; if (GameStatManager.getInstance().getMedal(2).isAchieved){ trace("medal 2 achieved"); objectPower = 240; }; if (GameStatManager.getInstance().getMedal(3).isAchieved){ trace("medal 3 achieved"); objectPower = 300; }; stop(); addEventListener(Event.ENTER_FRAME, mainLoop); } override public function afterCollide(_arg1:b2Body=null):void{ trace("Trampoline Collide!!!!!"); play(); GameStatManager.getInstance().setMedal(1, 1); GameStatManager.getInstance().setMedal(3, 1); GameStatManager.getInstance().setMedal(2, 1); SoundManager.getInstance().playSound("bounceSound"); } private function mainLoop(_arg1:Event):void{ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 104
//TrashcanObject (com.chocorobokun.hitObjects.TrashcanObject) package com.chocorobokun.hitObjects { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.chocorobokun.managers.*; import flash.events.*; public class TrashcanObject extends HitObject { public function TrashcanObject(){ stop(); addEventListener(Event.ENTER_FRAME, mainLoop); } override public function onCollide(_arg1:b2Body=null):void{ if (_arg1 == MainClass(root).coba.ballChar){ trace("TrashCan Collide!!!!!"); gotoAndPlay("hit"); GameStatManager.getInstance().setMedal(31, 1); GameStatManager.getInstance().setDeaths(1); _arg1.SetLinearVelocity(new b2Vec2(0, 0)); MainClass(root).ballGroundMod = 100; _arg1.m_userData.visible = false; _arg1.PutToSleep(); MainClass(root).coba.isDeath = true; MainClass(root).grandpaMain.visible = false; SoundManager.getInstance().playSound("trashcanSound"); }; } private function mainLoop(_arg1:Event):void{ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.hitObjects
Section 105
//UFOObject (com.chocorobokun.hitObjects.UFOObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class UFOObject extends HitObject { public function UFOObject(){ objectPower = 200; stop(); } override public function afterCollide(_arg1:b2Body=null):void{ trace("UFO Collide"); GameStatManager.getInstance().setMedal(18, 1); SoundManager.getInstance().playSound("ufoSound"); } } }//package com.chocorobokun.hitObjects
Section 106
//WashinglineObject (com.chocorobokun.hitObjects.WashinglineObject) package com.chocorobokun.hitObjects { import Box2D.Dynamics.*; import com.chocorobokun.managers.*; public class WashinglineObject extends HitObject { public function WashinglineObject(){ objectPower = 170; stop(); } override public function afterCollide(_arg1:b2Body=null):void{ trace("Washing Line Collide"); GameStatManager.getInstance().setMedal(14, 1); SoundManager.getInstance().playSound("bounceSound"); } } }//package com.chocorobokun.hitObjects
Section 107
//CannonLauncher (com.chocorobokun.launcher.CannonLauncher) package com.chocorobokun.launcher { import flash.display.*; import flash.events.*; public class CannonLauncher extends Launcher { public var cannonGun:MovieClip; public function CannonLauncher(){ cannonGun.stop(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(_arg1:Event){ launcherDistance = 90; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function setToShoot():void{ cannonGun.play(); } private function mainLoop(_arg1:Event){ cannonGun.rotation = ((launcherAngle * 180) / Math.PI); if (cannonGun.currentFrame == cannonGun.totalFrames){ shootFunction(); cannonGun.gotoAndStop(1); }; if (MainClass(root).gameState == "Launched"){ cannonGun.grandpa.visible = false; } else { cannonGun.grandpa.visible = true; }; } } }//package com.chocorobokun.launcher
Section 108
//CatapultLauncher (com.chocorobokun.launcher.CatapultLauncher) package com.chocorobokun.launcher { import flash.display.*; import flash.events.*; public class CatapultLauncher extends Launcher { public var catapultRope:MovieClip; public function CatapultLauncher(){ catapultRope.stop(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(_arg1:Event){ launcherDistance = 10; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function setToShoot():void{ catapultRope.play(); } private function mainLoop(_arg1:Event){ catapultRope.rotation = ((launcherAngle * 180) / Math.PI); if (catapultRope.currentFrame == catapultRope.totalFrames){ shootFunction(); catapultRope.gotoAndStop(1); }; if (MainClass(root).gameState == "Launched"){ catapultRope.grandpa.visible = false; } else { catapultRope.grandpa.visible = true; }; } } }//package com.chocorobokun.launcher
Section 109
//Launcher (com.chocorobokun.launcher.Launcher) package com.chocorobokun.launcher { import flash.display.*; public class Launcher extends MovieClip { public var shootFunction:Function; public var launcherAngle:Number;// = 0 public var launcherDistance:Number; public function Launcher(){ launcherAngle = 0; super(); stop(); } public function setToShoot():void{ } public function setShootFunction(_arg1:Function):void{ shootFunction = _arg1; } } }//package com.chocorobokun.launcher
Section 110
//MissileLauncher (com.chocorobokun.launcher.MissileLauncher) package com.chocorobokun.launcher { import flash.display.*; import flash.events.*; public class MissileLauncher extends Launcher { public var missileGun:MovieClip; public function MissileLauncher(){ missileGun.stop(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(_arg1:Event){ launcherDistance = 90; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function setToShoot():void{ missileGun.play(); } private function mainLoop(_arg1:Event){ missileGun.rotation = ((launcherAngle * 180) / Math.PI); if (missileGun.currentFrame == missileGun.totalFrames){ shootFunction(); missileGun.gotoAndStop(1); }; if (MainClass(root).gameState == "Launched"){ missileGun.grandpa.visible = false; } else { missileGun.grandpa.visible = true; }; } } }//package com.chocorobokun.launcher
Section 111
//PlasmaLauncher (com.chocorobokun.launcher.PlasmaLauncher) package com.chocorobokun.launcher { import flash.display.*; import flash.events.*; public class PlasmaLauncher extends Launcher { public var plasmaGun:MovieClip; public function PlasmaLauncher(){ plasmaGun.stop(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function onStage(_arg1:Event){ launcherDistance = 90; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function setToShoot():void{ plasmaGun.play(); shootFunction(); } private function mainLoop(_arg1:Event){ plasmaGun.rotation = ((launcherAngle * 180) / Math.PI); if (plasmaGun.currentFrame == plasmaGun.totalFrames){ plasmaGun.gotoAndStop(1); }; if (MainClass(root).gameState == "Launched"){ plasmaGun.grandpa.visible = false; } else { plasmaGun.grandpa.visible = true; }; } } }//package com.chocorobokun.launcher
Section 112
//TrebuchetLauncher (com.chocorobokun.launcher.TrebuchetLauncher) package com.chocorobokun.launcher { import flash.display.*; import flash.events.*; public class TrebuchetLauncher extends Launcher { public var grandpa:MovieClip; public function TrebuchetLauncher(){ stop(); grandpa.stop(); addEventListener(Event.ADDED_TO_STAGE, onStage); } private function mainLoop(_arg1:Event){ if (currentFrame == totalFrames){ shootFunction(); gotoAndStop(1); grandpa.gotoAndStop(1); }; if (MainClass(root).gameState == "Launched"){ grandpa.visible = false; } else { grandpa.visible = true; }; } private function onStage(_arg1:Event){ launcherDistance = 10; addEventListener(Event.ENTER_FRAME, mainLoop); } override public function setToShoot():void{ play(); grandpa.play(); } } }//package com.chocorobokun.launcher
Section 113
//CursorManager (com.chocorobokun.managers.CursorManager) package com.chocorobokun.managers { import flash.display.*; import flash.events.*; import flash.ui.*; public class CursorManager { private static var _root:Stage; private static var _xOffset:Number; private static var _yOffset:Number; private static var _cursor:DisplayObject; public function CursorManager():void{ throw (new Error("no need to call constructor, use static methods CursorManager.init(), CursorManager.setCursor(),CursorManager.removeCursor(),CursorManager.destroy() ")); } public static function destroy():void{ if (_cursor){ removeCursor(); }; } public static function init(_arg1:Stage):void{ _root = _arg1; } public static function removeCursor():void{ if (!_cursor){ return; }; _root.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); _root.removeChild(_cursor); _cursor = null; Mouse.show(); } private static function onMouseMove(_arg1:MouseEvent):void{ _cursor.x = (_root.mouseX + _xOffset); _cursor.y = (_root.mouseY + _yOffset); _arg1.updateAfterEvent(); } public static function bringToFront():void{ if (_cursor){ _root.addChild(_cursor); }; } public static function setCursor(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0):void{ if (!_root){ throw (new Error("set root using init(pRoot)")); }; if (_cursor){ removeCursor(); }; Mouse.hide(); _cursor = _arg1; if ((_cursor is InteractiveObject)){ InteractiveObject(_cursor).mouseEnabled = false; if ((_cursor is DisplayObjectContainer)){ DisplayObjectContainer(_cursor).mouseChildren = false; }; }; _xOffset = _arg2; _yOffset = _arg3; _cursor.x = (_root.mouseX + _xOffset); _cursor.y = (_root.mouseY + _yOffset); _root.addChild(_cursor); _root.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } } }//package com.chocorobokun.managers
Section 114
//GameStatManager (com.chocorobokun.managers.GameStatManager) package com.chocorobokun.managers { import com.chocorobokun.VO.*; public class GameStatManager { private var gameStatData:GameStatVO; private var mainMov:MainClass; private static var allowInstantiation:Boolean; private static var instance:GameStatManager; public function GameStatManager(){ if (!allowInstantiation){ throw (new Error("Error: use ScreenManager.getInstance() instead of new")); }; } public function setGunArray(_arg1:Array):void{ gameStatData.gunArray.push(_arg1); } public function statInit(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:String, _arg6:Array, _arg7:String, _arg8:int, _arg9:int, _arg10:Array, _arg11:MainClass, _arg12:String){ gameStatData = new GameStatVO(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg12); mainMov = _arg11; } public function setTimePlayed(_arg1:int):void{ gameStatData.timePlayed = (gameStatData.timePlayed + _arg1); setMedal(28, _arg1); setMedal(29, _arg1); setMedal(30, _arg1); } public function setDeaths(_arg1:int):void{ gameStatData.deaths = (gameStatData.deaths + _arg1); setMedal(36, _arg1); setMedal(37, _arg1); setMedal(38, _arg1); } public function setCurrentGun(_arg1:String):void{ gameStatData.currentGun = _arg1; } public function getStat():GameStatVO{ return (gameStatData); } public function setHighestFly(_arg1:int):void{ if (gameStatData.highestFly < _arg1){ gameStatData.highestFly = _arg1; setMedal(20, _arg1); setMedal(21, _arg1); setMedal(22, _arg1); }; } public function setMedal(_arg1:int, _arg2:int):void{ if ((((_arg1 <= 19)) || ((_arg1 >= 28)))){ gameStatData.medalArray[_arg1].counter = (gameStatData.medalArray[_arg1].counter - _arg2); if ((((gameStatData.medalArray[_arg1].counter <= 0)) && (!(gameStatData.medalArray[_arg1].isAchieved)))){ gameStatData.medalArray[_arg1].isAchieved = true; mainMov.showGotMedal(); }; } else { if ((((gameStatData.medalArray[_arg1].counter <= _arg2)) && (!(gameStatData.medalArray[_arg1].isAchieved)))){ gameStatData.medalArray[_arg1].isAchieved = true; mainMov.showGotMedal(); }; }; } public function setJetpack(_arg1:String):void{ gameStatData.jetpack = _arg1; } public function getMedal(_arg1:int):Object{ return (gameStatData.medalArray[_arg1]); } public function setLauncher(_arg1:String):void{ gameStatData.launcher = _arg1; } public function setLongestDistance(_arg1:int):void{ if (gameStatData.longestDistance < _arg1){ gameStatData.longestDistance = _arg1; setMedal(23, _arg1); setMedal(24, _arg1); setMedal(25, _arg1); setMedal(26, _arg1); setMedal(27, _arg1); }; } public function setMoney(_arg1:int):void{ gameStatData.money = (gameStatData.money + _arg1); } public function setDistanceCovered(_arg1:int):void{ gameStatData.distanceCovered = (gameStatData.distanceCovered + _arg1); } public static function getInstance():GameStatManager{ if (!instance){ allowInstantiation = true; instance = new (GameStatManager); allowInstantiation = false; }; return (instance); } } }//package com.chocorobokun.managers
Section 115
//ScreenManager (com.chocorobokun.managers.ScreenManager) package com.chocorobokun.managers { import flash.display.*; import flash.utils.*; public class ScreenManager { private var screenDict:Dictionary; private var view:DisplayObjectContainer; private var initiated:Boolean;// = false private var currentScreen:String; private var screenArray:Array; private var main:Sprite; private var prevScreen:String; private static var allowInstantiation:Boolean; private static var instance:ScreenManager; public function ScreenManager(){ initiated = false; super(); screenDict = new Dictionary(true); screenArray = []; if (!allowInstantiation){ throw (new Error("Error: use ScreenManager.getInstance() instead of new")); }; } public function removeScreen(_arg1:String){ var _local2:Object; _local2 = screenDict[_arg1]; view.removeChild(_local2.screen); trace((_local2.name + " Removed!!")); if (prevScreen){ currentScreen = prevScreen; }; } public function init(_arg1:Sprite, _arg2:DisplayObjectContainer){ if (!initiated){ main = _arg1; view = _arg2; initiated = true; }; } public function addScreen(_arg1:MovieClip, _arg2:String):Boolean{ var _local3:*; var _local4:Object; var _local5:MovieClip; for (_local3 in screenArray) { if (screenArray[_local3].name == _arg2){ return (false); }; }; _local4 = new Object(); _local5 = _arg1; _local4.name = _arg2; _local4.screen = _local5; screenDict[_arg2] = _local4; screenArray.push(_local4); trace((_arg2 + " Stored!")); return (true); } public function changeToScreen(_arg1:String, _arg2:Boolean, _arg3:Number=0, _arg4:Number=0):void{ var _local5:Object; if (((_arg2) && (currentScreen))){ _local5 = screenDict[currentScreen]; view.removeChild(_local5.screen); }; _local5 = screenDict[_arg1]; view.addChild(_local5.screen); _local5.screen.x = _arg3; _local5.screen.y = _arg4; if (((!(_arg2)) && (prevScreen))){ prevScreen = currentScreen; currentScreen = _arg1; } else { prevScreen = null; currentScreen = _arg1; }; } public static function getInstance():ScreenManager{ if (!instance){ allowInstantiation = true; instance = new (ScreenManager); allowInstantiation = false; }; return (instance); } } }//package com.chocorobokun.managers
Section 116
//SoundManager (com.chocorobokun.managers.SoundManager) package com.chocorobokun.managers { import flash.media.*; import flash.utils.*; import flash.net.*; public class SoundManager { private var _soundsDict:Dictionary; private var _sounds:Array; private static var _instance:SoundManager; private static var _allowInstance:Boolean; public function SoundManager(){ this._soundsDict = new Dictionary(true); this._sounds = new Array(); if (!SoundManager._allowInstance){ throw (new Error("Error: Use SoundManager.getInstance() instead of the new keyword.")); }; } public function fadeSound(_arg1:String, _arg2:Number=0, _arg3:Number=1):void{ } public function get sounds():Array{ return (this._sounds); } public function getSoundDuration(_arg1:String):Number{ return (this._soundsDict[_arg1].sound.length); } public function setSoundVolume(_arg1:String, _arg2:Number):void{ var _local3:Object; var _local4:SoundTransform; _local3 = this._soundsDict[_arg1]; _local4 = _local3.channel.soundTransform; _local4.volume = _arg2; _local3.channel.soundTransform = _local4; } public function getSoundVolume(_arg1:String):Number{ return (this._soundsDict[_arg1].channel.soundTransform.volume); } public function addLibrarySound(_arg1, _arg2:String):Boolean{ var _local3:int; var _local4:Object; var _local5:Sound; _local3 = 0; while (_local3 < this._sounds.length) { if (this._sounds[_local3].name == _arg2){ return (false); }; _local3++; }; _local4 = new Object(); _local5 = new (_arg1); _local4.name = _arg2; _local4.sound = _local5; _local4.channel = new SoundChannel(); _local4.position = 0; _local4.paused = true; _local4.volume = 1; _local4.startTime = 0; _local4.loops = 0; _local4.pausedByAll = false; this._soundsDict[_arg2] = _local4; this._sounds.push(_local4); return (true); } public function toString():String{ return (getQualifiedClassName(this)); } public function isSoundPaused(_arg1:String):Boolean{ return (this._soundsDict[_arg1].paused); } public function removeAllSounds():void{ var _local1:int; _local1 = 0; while (_local1 < this._sounds.length) { this._sounds[_local1] = null; _local1++; }; this._sounds = new Array(); this._soundsDict = new Dictionary(true); } public function getSoundPosition(_arg1:String):Number{ return (this._soundsDict[_arg1].channel.position); } public function stopAllSounds(_arg1:Boolean=true):void{ var _local2:int; var _local3:String; _local2 = 0; while (_local2 < this._sounds.length) { _local3 = this._sounds[_local2].name; if (_arg1){ if (!this._soundsDict[_local3].paused){ this._soundsDict[_local3].pausedByAll = true; this.stopSound(_local3); }; } else { this.stopSound(_local3); }; _local2++; }; } public function removeSound(_arg1:String):void{ var _local2:int; _local2 = 0; while (_local2 < this._sounds.length) { if (this._sounds[_local2].name == _arg1){ this._sounds[_local2] = null; this._sounds.splice(_local2, 1); }; _local2++; }; delete this._soundsDict[_arg1]; } public function muteAllSounds():void{ var _local1:int; var _local2:String; _local1 = 0; while (_local1 < this._sounds.length) { _local2 = this._sounds[_local1].name; this.setSoundVolume(_local2, 0); _local1++; }; } public function stopSound(_arg1:String):void{ var _local2:Object; _local2 = this._soundsDict[_arg1]; _local2.paused = true; _local2.channel.stop(); _local2.position = _local2.channel.position; } public function pauseAllSounds(_arg1:Boolean=true):void{ var _local2:int; var _local3:String; _local2 = 0; while (_local2 < this._sounds.length) { _local3 = this._sounds[_local2].name; if (_arg1){ if (!this._soundsDict[_local3].paused){ this._soundsDict[_local3].pausedByAll = true; this.pauseSound(_local3); }; } else { this.pauseSound(_local3); }; _local2++; }; } public function playAllSounds(_arg1:Boolean=false):void{ var _local2:int; var _local3:String; _local2 = 0; while (_local2 < this._sounds.length) { _local3 = this._sounds[_local2].name; if (_arg1){ if (this._soundsDict[_local3].pausedByAll){ this._soundsDict[_local3].pausedByAll = false; this.playSound(_local3); }; } else { this.playSound(_local3); }; _local2++; }; } public function addExternalSound(_arg1:String, _arg2:String, _arg3:Number=1000, _arg4:Boolean=false):Boolean{ var _local5:int; var _local6:Object; var _local7:Sound; _local5 = 0; while (_local5 < this._sounds.length) { if (this._sounds[_local5].name == _arg2){ return (false); }; _local5++; }; _local6 = new Object(); _local7 = new Sound(new URLRequest(_arg1), new SoundLoaderContext(_arg3, _arg4)); _local6.name = _arg2; _local6.sound = _local7; _local6.channel = new SoundChannel(); _local6.position = 0; _local6.paused = true; _local6.volume = 1; _local6.startTime = 0; _local6.loops = 0; _local6.pausedByAll = false; this._soundsDict[_arg2] = _local6; this._sounds.push(_local6); return (true); } public function unmuteAllSounds():void{ var _local1:int; var _local2:String; var _local3:Object; var _local4:SoundTransform; _local1 = 0; while (_local1 < this._sounds.length) { _local2 = this._sounds[_local1].name; _local3 = this._soundsDict[_local2]; _local4 = _local3.channel.soundTransform; _local4.volume = _local3.volume; _local3.channel.soundTransform = _local4; _local1++; }; } public function isSoundPausedByAll(_arg1:String):Boolean{ return (this._soundsDict[_arg1].pausedByAll); } public function getSoundObject(_arg1:String):Sound{ return (this._soundsDict[_arg1].sound); } public function pauseSound(_arg1:String):void{ var _local2:Object; _local2 = this._soundsDict[_arg1]; _local2.paused = true; _local2.position = _local2.channel.position; _local2.channel.stop(); } public function playSound(_arg1:String, _arg2:Number=1, _arg3:Number=0, _arg4:int=0):void{ var _local5:Object; _local5 = this._soundsDict[_arg1]; _local5.volume = _arg2; _local5.startTime = _arg3; _local5.loops = _arg4; if (_local5.paused){ _local5.channel = _local5.sound.play(_local5.position, _local5.loops, new SoundTransform(_local5.volume)); } else { _local5.channel = _local5.sound.play(_arg3, _local5.loops, new SoundTransform(_local5.volume)); }; _local5.paused = false; } public static function getInstance():SoundManager{ if (SoundManager._instance == null){ SoundManager._allowInstance = true; SoundManager._instance = new (SoundManager); SoundManager._allowInstance = false; }; return (SoundManager._instance); } } }//package com.chocorobokun.managers
Section 117
//FireParticle (com.chocorobokun.particle.FireParticle) package com.chocorobokun.particle { import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; public class FireParticle extends MovieClip { private var fireAngle:Number; public function FireParticle(){ alpha = 0; addEventListener(Event.ADDED_TO_STAGE, onStage); } public function onStage(_arg1:Event){ addEventListener(Event.ENTER_FRAME, mainLoop); } public function showFire(){ this.alpha = 1; GameStatManager.getInstance().setMedal(39, 1); GameStatManager.getInstance().setMedal(40, 1); } public function mainLoop(_arg1:Event){ if (MainClass(root).gameState == "Launched"){ fireAngle = Math.atan2(MainClass(root).coba.ballChar.GetLinearVelocity().y, MainClass(root).coba.ballChar.GetLinearVelocity().x); this.rotation = (((fireAngle * 180) / Math.PI) - 90); }; if (alpha != 0){ alpha = (alpha - 0.005); }; } } }//package com.chocorobokun.particle
Section 118
//preloaderMain (com.chocorobokun.preloader.preloaderMain) package com.chocorobokun.preloader { import flash.display.*; import flash.events.*; import flash.net.*; public class preloaderMain extends MovieClip { public var BG:SimpleButton; public var logoAnim:MovieClip; var mouseVarClick:Boolean;// = true public var introAnim:MovieClip; var request:URLRequest; var mainMov:MainClass; public function preloaderMain(_arg1:MainClass){ mouseVarClick = true; super(); mainMov = _arg1; stop(); request = new URLRequest(); logoAnim.but.visible = false; logoAnim.logo.preloadBut.addEventListener(MouseEvent.MOUSE_OVER, mouseOver); logoAnim.logo.preloadBut.addEventListener(MouseEvent.MOUSE_OUT, mouseOut); logoAnim.logo.preloadBut.addEventListener(MouseEvent.CLICK, mouseClick); logoAnim.but.addEventListener(MouseEvent.CLICK, introBegin); addEventListener(MouseEvent.CLICK, mouseClick); addEventListener(Event.ENTER_FRAME, mainLoop); } public function butDisplay(){ logoAnim.but.visible = true; } public function mouseClick(_arg1:MouseEvent){ trace("test preload 1"); if (mouseVarClick){ navigateToURL(request, "_blank"); }; mouseVarClick = true; } public function mouseOver(_arg1:MouseEvent){ logoAnim.logo.buttonAnim.gotoAndStop(2); } public function mouseOut(_arg1:MouseEvent){ logoAnim.logo.buttonAnim.gotoAndStop(1); } public function introBegin(_arg1:MouseEvent){ trace("test preload 2"); mouseVarClick = false; nextFrame(); } public function mainLoop(_arg1:Event){ var _local2:Number; if (((MainClass(root)) && (logoAnim))){ request.url = MainClass(root).MORE_GAMES_URL; _local2 = int(((mainMov.loadedBytes * 100) / mainMov.totalBytes)); if (_local2 > logoAnim.logo.logoGray.currentFrame){ logoAnim.logo.logoGray.play(); } else { trace("loading"); trace(mainMov.loadedBytes); logoAnim.logo.logoGray.stop(); }; if (logoAnim.logo.logoGray.currentFrame == 100){ logoAnim.logo.logoRed.play(); }; if (logoAnim.logo.logoRed.currentFrame == 23){ logoAnim.logo.logoRed.stop(); butDisplay(); }; }; if (((MainClass(root)) && (introAnim))){ if (introAnim.redM.currentFrame == 210){ introAnim.play(); }; if (introAnim.currentFrame == 47){ mainMov.gameStart(); }; if (introAnim.currentFrame == 48){ introAnim.stop(); }; }; } } }//package com.chocorobokun.preloader
Section 119
//InstructionScreen (com.chocorobokun.screen.InstructionScreen) package com.chocorobokun.screen { import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; public class InstructionScreen extends MovieClip { public var moreBut:SimpleButton; public var prevBut:SimpleButton; public var nextBut:SimpleButton; public var playBut:SimpleButton; public function InstructionScreen(){ stop(); playBut.addEventListener(MouseEvent.CLICK, onPlay); moreBut.addEventListener(MouseEvent.CLICK, onMore); prevBut.addEventListener(MouseEvent.CLICK, onPrev); nextBut.addEventListener(MouseEvent.CLICK, onNext); } private function onNext(_arg1:Event){ nextFrame(); } private function onPlay(_arg1:Event){ MainClass(root).gameState = "Aiming"; ScreenManager.getInstance().removeScreen("instructionScreen"); } private function onPrev(_arg1:Event){ prevFrame(); } private function onMore(_arg1:Event){ MainClass(root).gotoBox10(); } } }//package com.chocorobokun.screen
Section 120
//ShopScreen (com.chocorobokun.screen.ShopScreen) package com.chocorobokun.screen { import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; import com.chocorobokun.gameData.*; import flash.text.*; public class ShopScreen extends MovieClip { private var jetpackButton:SimpleButton; private var nextButton:SimpleButton; public var medalBut:SimpleButton; private var jetpackLayer:MovieClip; private var lockedLayer:MovieClip; public var nextBut:SimpleButton; private var gunButton:SimpleButton; private var medalLayer:MovieClip; public var retryBut:SimpleButton; public var launcherBut:SimpleButton; private var buyButtonGun:SimpleButton; private var moreButton:SimpleButton; public var jetpackBut:SimpleButton; private var descDisplay:TextField; private var launcherButton:SimpleButton; private var popupButton:SimpleButton; private var medalButton:SimpleButton; private var buyButtonLauncher:SimpleButton; public var gunBut:SimpleButton; public var layers:MovieClip; private var prevButton:SimpleButton; public var prevBut:SimpleButton; public var popupDesc:MovieClip; private var closeButton:SimpleButton; private var medalBut3:SimpleButton; private var medalBut4:SimpleButton; private var medalBut5:SimpleButton; private var medalBut6:SimpleButton; private var medalBut7:SimpleButton; private var medalBut1:SimpleButton; private var medalBut8:SimpleButton; private var medalBut9:SimpleButton; private var medalBut2:SimpleButton; private var launcherLayer:MovieClip; private var medalBut10:SimpleButton; private var popupDescription:MovieClip; private var buyButtonJetpack:SimpleButton; private var activeLayer:String; private var gunLayer:MovieClip; private var retryButton:SimpleButton; public function ShopScreen(){ var _local1:int; super(); launcherLayer = layers.launcherLayer; gunLayer = layers.gunLayer; medalLayer = layers.medalLayer; popupDescription = popupDesc; descDisplay = medalLayer.descDisp; lockedLayer = layers.lockedMov; jetpackLayer = layers.jetpackLayer; prevButton = prevBut; nextButton = nextBut; retryButton = retryBut; launcherButton = launcherBut; gunButton = gunBut; medalButton = medalBut; jetpackButton = jetpackBut; popupButton = layers.popBut; closeButton = popupDescription.closeBut; moreButton = popupDescription.moreBut; buyButtonLauncher = launcherLayer.buyBut; buyButtonGun = gunLayer.buyBut; buyButtonJetpack = jetpackLayer.buyBut; activeLayer = "launcher"; checkAvailabeUpgrade(); popupDescription.stop(); popupDescription.descDisp.descText.multiline = true; gunLayer.visible = false; medalLayer.visible = false; jetpackLayer.visible = false; popupDescription.stop(); launcherLayer.stop(); gunLayer.stop(); medalLayer.stop(); jetpackLayer.stop(); addEventListener(MouseEvent.CLICK, onClick); prevButton.addEventListener(MouseEvent.CLICK, onClick); nextButton.addEventListener(MouseEvent.CLICK, onClick); launcherButton.addEventListener(MouseEvent.CLICK, onClick); gunButton.addEventListener(MouseEvent.CLICK, onClick); medalButton.addEventListener(MouseEvent.CLICK, onClick); jetpackButton.addEventListener(MouseEvent.CLICK, onClick); popupButton.addEventListener(MouseEvent.CLICK, onClick); closeButton.addEventListener(MouseEvent.CLICK, onClick); moreButton.addEventListener(MouseEvent.CLICK, onClick); retryButton.addEventListener(MouseEvent.CLICK, onClick); buyButtonGun.addEventListener(MouseEvent.CLICK, onBuy); buyButtonLauncher.addEventListener(MouseEvent.CLICK, onBuy); buyButtonJetpack.addEventListener(MouseEvent.CLICK, onBuy); addEventListener(Event.ADDED_TO_STAGE, onStage); addEventListener(Event.ENTER_FRAME, mainLoop); _local1 = 1; while (_local1 <= 10) { this[("medalBut" + _local1)] = medalLayer[("medal" + _local1)]; this[("medalBut" + _local1)].addEventListener(MouseEvent.MOUSE_OVER, onMedal); _local1++; }; } private function onRetry(){ MainClass(root).replayGame(); changeToLauncher(); launcherLayer.gotoAndStop(1); ScreenManager.getInstance().removeScreen("shopScreen"); } private function onBuy(_arg1:Event){ switch (_arg1.currentTarget){ case buyButtonGun: buyGun(); break; case buyButtonLauncher: buyLauncher(); break; case buyButtonJetpack: buyJetpack(); break; }; } private function buyLauncher(){ trace(("buy launcher :" + launcherLayer.currentLabel)); if (GameStatManager.getInstance().getStat().money >= new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2]){ switch (launcherLayer.currentLabel){ case "Trebuchet": trace("buy Trebuchet"); if (GameStatManager.getInstance().getStat().launcher == "Catapult"){ GameStatManager.getInstance().setLauncher(launcherLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2])); }; break; case "Cannon": if (GameStatManager.getInstance().getStat().launcher == "Trebuchet"){ trace("buy Cannon"); GameStatManager.getInstance().setLauncher(launcherLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2])); }; break; case "Missile": if (GameStatManager.getInstance().getStat().launcher == "Cannon"){ trace("buy Missile"); GameStatManager.getInstance().setLauncher(launcherLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2])); }; break; case "Plasma": if (GameStatManager.getInstance().getStat().launcher == "Missile"){ trace("buy Plasma"); GameStatManager.getInstance().setLauncher(launcherLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2])); }; break; }; MainClass(root).coba.setLauncher(); } else { trace("NOT ENOUGHT MONEY"); }; } private function onMedal(_arg1:Event){ switch (_arg1.currentTarget){ case medalBut1: getMedal(1); break; case medalBut2: getMedal(2); break; case medalBut3: getMedal(3); break; case medalBut4: getMedal(4); break; case medalBut5: getMedal(5); break; case medalBut6: getMedal(6); break; case medalBut7: getMedal(7); break; case medalBut8: getMedal(8); break; case medalBut9: getMedal(9); break; case medalBut10: getMedal(10); break; }; } private function onStage(_arg1:Event){ } private function onPrev(){ layers[(activeLayer + "Layer")].prevFrame(); checkAvailabeUpgrade(); } private function buyJetpack(){ trace(("buy jetpack :" + jetpackLayer.currentLabel)); if (GameStatManager.getInstance().getStat().money >= new JetpackData().getJetpackList()[jetpackLayer.currentFrame][1]){ switch (jetpackLayer.currentLabel){ case "JetPack": trace("BUY JETPACK"); if (GameStatManager.getInstance().getStat().jetpack == ""){ GameStatManager.getInstance().setJetpack(jetpackLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new JetpackData().getJetpackList()[jetpackLayer.currentFrame][1])); }; break; case "RocketPack": if (GameStatManager.getInstance().getStat().jetpack == "JetPack"){ GameStatManager.getInstance().setJetpack(jetpackLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new JetpackData().getJetpackList()[jetpackLayer.currentFrame][1])); }; break; case "NukePack": if (GameStatManager.getInstance().getStat().jetpack == "RocketPack"){ GameStatManager.getInstance().setJetpack(jetpackLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new JetpackData().getJetpackList()[jetpackLayer.currentFrame][1])); }; break; }; MainClass(root).setJetpack(); }; } private function buyGun(){ trace(("buy gun :" + gunLayer.currentLabel)); if (GameStatManager.getInstance().getStat().money >= new GunData().getGunData()[(gunLayer.currentFrame + 1)][3]){ switch (gunLayer.currentLabel){ case "Uzi": trace("BUY UZI"); if (GameStatManager.getInstance().getStat().currentGun == "Pistol"){ GameStatManager.getInstance().setCurrentGun(gunLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new GunData().getGunData()[(gunLayer.currentFrame + 1)][3])); }; break; case "Shotgun": if (GameStatManager.getInstance().getStat().currentGun == "Uzi"){ GameStatManager.getInstance().setCurrentGun(gunLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new GunData().getGunData()[(gunLayer.currentFrame + 1)][3])); }; break; case "Rifle": if (GameStatManager.getInstance().getStat().currentGun == "Shotgun"){ GameStatManager.getInstance().setCurrentGun(gunLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new GunData().getGunData()[(gunLayer.currentFrame + 1)][3])); }; break; case "MachineGun": if (GameStatManager.getInstance().getStat().currentGun == "Rifle"){ GameStatManager.getInstance().setCurrentGun(gunLayer.currentLabel); GameStatManager.getInstance().setMoney(-(new GunData().getGunData()[(gunLayer.currentFrame + 1)][3])); }; break; }; MainClass(root).setGun(); }; } private function resetShop(){ activeLayer = "launcher"; lockedLayer.visible = false; changeToLauncher(); lockedLayer.visible = false; } private function onClick(_arg1:Event){ trace(_arg1.currentTarget); switch (_arg1.currentTarget){ case closeButton: popupDescription.play(); break; case moreButton: MainClass(root).gotoBox10(); break; case popupButton: onPop(); break; case prevButton: onPrev(); break; case nextButton: onNext(); break; case launcherButton: changeToLauncher(); checkAvailabeUpgrade(); break; case gunButton: changeToGun(); checkAvailabeUpgrade(); break; case medalButton: changeToMedal(); checkAvailabeUpgrade(); break; case jetpackButton: changeToJetpack(); checkAvailabeUpgrade(); break; case retryButton: onRetry(); break; }; } private function changeToGun(){ activeLayer = "gun"; popupButton.visible = true; launcherLayer.visible = false; gunLayer.visible = true; medalLayer.visible = false; jetpackLayer.visible = false; } private function changeToLauncher(){ activeLayer = "launcher"; lockedLayer.visible = false; popupButton.visible = true; launcherLayer.visible = true; gunLayer.visible = false; medalLayer.visible = false; jetpackLayer.visible = false; } private function checkAvailabeUpgrade(){ switch (activeLayer){ case "launcher": switch (layers[(activeLayer + "Layer")].currentLabel){ case "Trebuchet": lockedLayer.visible = false; break; case "Cannon": if (MainClass(root).coba.launcherID > 1){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; case "Missile": if (MainClass(root).coba.launcherID > 2){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; case "Plasma": if (MainClass(root).coba.launcherID > 3){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; }; break; case "gun": switch (layers[(activeLayer + "Layer")].currentLabel){ case "Uzi": lockedLayer.visible = false; break; case "Shotgun": if (MainClass(root).gunID > 1){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; case "Rifle": if (MainClass(root).gunID > 2){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; case "MachineGun": if (MainClass(root).gunID > 3){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; }; break; case "jetpack": switch (layers[(activeLayer + "Layer")].currentLabel){ case "JetPack": lockedLayer.visible = false; break; case "RocketPack": if (MainClass(root).jetpackID >= 1){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; case "NukePack": if (MainClass(root).jetpackID >= 2){ lockedLayer.visible = false; } else { lockedLayer.visible = true; }; break; }; break; case "medal": lockedLayer.visible = false; break; }; } private function getMedal(_arg1:int){ trace(GameStatManager.getInstance().getMedal((_arg1 + ((medalLayer.currentFrame - 1) * 10))).description); descDisplay.text = GameStatManager.getInstance().getMedal((_arg1 + ((medalLayer.currentFrame - 1) * 10))).name; descDisplay.appendText(("\n" + GameStatManager.getInstance().getMedal((_arg1 + ((medalLayer.currentFrame - 1) * 10))).description)); descDisplay.appendText(("\n" + GameStatManager.getInstance().getMedal((_arg1 + ((medalLayer.currentFrame - 1) * 10))).bonus)); } private function onNext(){ layers[(activeLayer + "Layer")].nextFrame(); checkAvailabeUpgrade(); } private function changeToJetpack(){ activeLayer = "jetpack"; popupButton.visible = true; launcherLayer.visible = false; gunLayer.visible = false; medalLayer.visible = false; jetpackLayer.visible = true; } private function changeToMedal(){ activeLayer = "medal"; lockedLayer.visible = false; popupButton.visible = false; launcherLayer.visible = false; gunLayer.visible = false; medalLayer.visible = true; jetpackLayer.visible = false; } private function onPop(){ popupDescription.play(); popupDescription.descDisp.descText.text = "Hello World"; switch (activeLayer){ case "launcher": popupDescription.descDisp.descText.text = new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][4]; break; case "gun": popupDescription.descDisp.descText.text = new GunData().getGunData()[(gunLayer.currentFrame + 1)][5]; break; case "jetpack": popupDescription.descDisp.descText.text = new JetpackData().getJetpackList()[jetpackLayer.currentFrame][5]; break; }; } private function mainLoop(_arg1:Event){ var _local2:int; if ((((popupDescription.currentFrame == 1)) || ((popupDescription.currentFrame == 8)))){ popupDescription.stop(); }; if (activeLayer == "jetpack"){ jetpackLayer.moneyDisp.text = String(GameStatManager.getInstance().getStat().money); jetpackLayer.priceDisp.text = String(new JetpackData().getJetpackList()[jetpackLayer.currentFrame][1]); }; if (activeLayer == "gun"){ gunLayer.moneyDisp.text = String(GameStatManager.getInstance().getStat().money); gunLayer.priceDisp.text = String(new GunData().getGunData()[(gunLayer.currentFrame + 1)][3]); }; if (activeLayer == "launcher"){ launcherLayer.moneyDisp.text = String(GameStatManager.getInstance().getStat().money); launcherLayer.priceDisp.text = String(new LauncherData().getLauncherData()[(launcherLayer.currentFrame + 1)][2]); }; if (activeLayer == "medal"){ _local2 = 1; while (_local2 <= 10) { if (!GameStatManager.getInstance().getMedal((_local2 + ((medalLayer.currentFrame - 1) * 10)))){ medalLayer[("medal" + _local2)].visible = false; medalLayer[("lock" + _local2)].visible = false; } else { if (GameStatManager.getInstance().getMedal((_local2 + ((medalLayer.currentFrame - 1) * 10))).isAchieved){ medalLayer[("medal" + _local2)].alpha = 1; medalLayer[("lock" + _local2)].visible = false; } else { medalLayer[("medal" + _local2)].alpha = 0; medalLayer[("lock" + _local2)].visible = true; }; }; _local2++; }; }; } } }//package com.chocorobokun.screen
Section 121
//SplashScreen (com.chocorobokun.screen.SplashScreen) package com.chocorobokun.screen { import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; public class SplashScreen extends MovieClip { public var moreBut:SimpleButton; public var clearBut:SimpleButton; private var playButton:SimpleButton; public var playBut:SimpleButton; private var clearButton:SimpleButton; private var moreButton:SimpleButton; public function SplashScreen(){ playButton = playBut; clearButton = clearBut; moreButton = moreBut; addEventListener(Event.ADDED_TO_STAGE, onStage); } public function onStage(_arg1:Event){ playButton.addEventListener(MouseEvent.CLICK, onClick); clearButton.addEventListener(MouseEvent.CLICK, onClear); moreButton.addEventListener(MouseEvent.CLICK, onMore); } public function onClear(_arg1:Event){ MainClass(root).clearData(); } private function onMore(_arg1:Event){ MainClass(root).gotoBox10(); } public function onClick(_arg1:Event){ removeEventListener(Event.ADDED_TO_STAGE, onStage); ScreenManager.getInstance().changeToScreen("instructionScreen", true); } } }//package com.chocorobokun.screen
Section 122
//StatScreen (com.chocorobokun.screen.StatScreen) package com.chocorobokun.screen { import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; import flash.text.*; public class StatScreen extends MovieClip { private var distanceDisp:TextField; private var moneyDisp:TextField; public var stopDisplay:MovieClip; private var earnDisp:TextField; private var shopButton:SimpleButton; private var moreButton:SimpleButton; private var replayButton:SimpleButton; public function StatScreen(){ stop(); shopButton = stopDisplay.shopBut; replayButton = stopDisplay.replayBut; moreButton = stopDisplay.moreBut; distanceDisp = stopDisplay.distanceDisp; earnDisp = stopDisplay.earnDisp; moneyDisp = stopDisplay.moneyDisp; replayButton.addEventListener(MouseEvent.CLICK, onReplay); shopButton.addEventListener(MouseEvent.CLICK, onShop); moreButton.addEventListener(MouseEvent.CLICK, onMore); addEventListener(Event.ENTER_FRAME, mainLoop); addEventListener(Event.ADDED_TO_STAGE, onStage); } public function onStage(_arg1:Event){ play(); distanceDisp.text = String(MainClass(root).distance); earnDisp.text = String(MainClass(root).earning); moneyDisp.text = String(GameStatManager.getInstance().getStat().money); } private function onShop(_arg1:Event){ gotoAndStop(1); ScreenManager.getInstance().changeToScreen("shopScreen", true, 320, 224.5); } public function onReplay(_arg1:Event){ MainClass(root).replayGame(); gotoAndStop(1); ScreenManager.getInstance().removeScreen("statScreen"); } private function onMore(_arg1:Event){ MainClass(root).gotoBox10(); } public function mainLoop(_arg1:Event){ if (currentFrame == totalFrames){ stop(); }; } } }//package com.chocorobokun.screen
Section 123
//GameStatVO (com.chocorobokun.VO.GameStatVO) package com.chocorobokun.VO { public final class GameStatVO { public var money:int; public var gunArray:Array; public var currentGun:String; public var timePlayed:int; public var longestDistance:Number; public var launcher:String; public var distanceCovered:Number; public var medalArray:Array; public var highestFly:Number; public var jetpack:String; public var deaths:int; public function GameStatVO(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:String, _arg6:Array, _arg7:String, _arg8:int, _arg9:int, _arg10:Array, _arg11:String):void{ this.distanceCovered = _arg1; this.longestDistance = _arg2; this.highestFly = _arg3; this.money = _arg4; this.currentGun = _arg5; this.gunArray = _arg6; this.launcher = _arg7; this.deaths = _arg8; this.timePlayed = _arg9; this.medalArray = _arg10; this.jetpack = _arg11; } } }//package com.chocorobokun.VO
Section 124
//MedalVO (com.chocorobokun.VO.MedalVO) package com.chocorobokun.VO { public final class MedalVO { public var description:String; public var bonus:String; public var name:String; public var medalID:String; public var counter:int; public var isAchieved:Boolean; public function MedalVO(_arg1:String, _arg2:Boolean, _arg3:String, _arg4:String, _arg5:int, _arg6:String):void{ this.medalID = _arg1; this.isAchieved = _arg2; this.name = _arg3; this.description = _arg4; this.counter = _arg5; this.bonus = _arg6; } } }//package com.chocorobokun.VO
Section 125
//cobaClass (com.chocorobokun.World.cobaClass) package com.chocorobokun.World { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.chocorobokun.managers.*; import flash.display.*; import flash.events.*; import flash.utils.*; import com.chocorobokun.gameData.*; import com.chocorobokun.CustomListener.*; import com.chocorobokun.hitObjects.*; import com.chocorobokun.launcher.*; import com.chocorobokun.bullet.*; public class cobaClass extends MovieClip { public const PIXEL_TO_METER:int = 30; public const MAX_OBJECT_NUMBER_PERSCREEN:int = 2; public var deadBody:MovieClip; public var worldID:int; public var bulletRadius:Number;// = 1.6 public var m_iterations:int;// = 10 public var boxDef:b2PolygonDef; public var pulleyJoint:b2PulleyJointDef; public var charging:Number;// = 0 public var hitObjectList:Array; public var real_x_mouse:Number; public var bulletSpeed:Number;// = 1 public var bgMov:BG; public var boxLauncherMov:BoxManual; public var bombObject:BombObject; public var mainMov:MainClass; public var boxLauncher:b2Body; public var launcherID:int; public var ballLauncher:MovieClip; public var m_timeStep:Number; public var trebuchetLauncher:TrebuchetLauncher; public var ballCharBig:b2Body;// = null public var m_sprite:Sprite; public var ballCharMov:Circle; public var mouseJoint:b2MouseJoint; public var missileLauncher:MissileLauncher; public var worldAABB:b2AABB; public var plasmaLauncher:PlasmaLauncher; public var bodyDef:b2BodyDef; public var objects:Array; public var circleDef:b2CircleDef; public var launcherAngle:Number;// = 0 public var m_contactListener:CustomContactListener; public var background:MovieClip; public var launcherPower:int;// = 10 public var m_world:b2World; public var mousePVec:b2Vec2; public var distanceBoardMod:Number;// = 0 public var isDeath:Boolean; public var objectNumber:int;// = 2 public var boxManual:MovieClip; public var launcherData:Array; public var objectArrays:Array; public var screenNum:int; public var hitObjectData:Dictionary; public var distanceJoint:b2DistanceJointDef; public var launcher:Launcher; public var body:b2Body; public var storedPos:Number;// = 0 public var isCharging:Boolean; public var cannonLauncher:CannonLauncher; public var real_y_mouse:Number; public var groundBody:b2Body; public var skyArray:Array; public var catapultLauncher:CatapultLauncher; public var launchAnimate:Boolean; public var prismaticJoint:b2PrismaticJointDef; public var launcherMeter:MovieClip; public var distanceBoard:MovieClip; public var ballChar:b2Body;// = null public function cobaClass(){ objectArrays = []; storedPos = 0; skyArray = []; m_iterations = 10; m_timeStep = (1 / PIXEL_TO_METER); mousePVec = new b2Vec2(); ballCharBig = null; distanceBoardMod = 0; launcherData = new LauncherData().getLauncherData(); launcherPower = 10; ballLauncher = new LauncherPlaceHolder(); launcherAngle = 0; bulletRadius = 1.6; bulletSpeed = 1; charging = 0; ballChar = null; objectNumber = 2; objects = []; hitObjectList = ["AirBomb", "Trampoline", "Teeth", "Satellite", "WashingLine", "UFO", "Barrel", "Tire", "Bird", "Kid", "Bus", "Missile", "GunGuy", "Pengamen", "Fireworks", "Chainsaw", "Trashcan", "CraneHook", "Police", "Swag", "Sandal", "Log", "Bolas", "ChainedBolas"]; super(); worldID = (Math.floor((Math.random() * 3)) + 1); bgMov.backgroundMov.gotoAndStop(worldID); addEventListener(Event.ADDED_TO_STAGE, init); } public function mouse_down(_arg1:MouseEvent):void{ var _local2:b2Body; _local2 = getObjectToMouse(); if (((((((((_local2) && ((_local2.GetShapeList() is b2CircleShape)))) && ((_local2 == ballChar)))) && ((mainMov.vDistance > 2)))) && ((mainMov.bullet > 0)))){ if (_local2.IsStatic()){ }; trace("SHOOOT!!!!"); if (((!(mainMov.onJetpack)) && (!(mainMov.onRocket)))){ _local2.GetUserData().getNewFrame(); mainMov.grandpaMain.gotoAndStop(_local2.GetUserData().currentFrame); }; mainMov.addChild(mainMov.splatShoot); mainMov.splatShoot.visible = true; if (_local2.GetLinearVelocity().y > 0){ _local2.SetLinearVelocity(new b2Vec2((_local2.GetLinearVelocity().x + (mainMov.gunData[mainMov.gunID][1] / PIXEL_TO_METER)), (-(_local2.GetLinearVelocity().y) - (mainMov.gunData[mainMov.gunID][1] / PIXEL_TO_METER)))); } else { _local2.ApplyForce(new b2Vec2((mainMov.gunData[mainMov.gunID][1] / PIXEL_TO_METER), (-(mainMov.gunData[mainMov.gunID][1]) / PIXEL_TO_METER)), _local2.GetWorldCenter()); }; }; mainMov.cursor.gotoAndStop(2); if ((((((mainMov.mouseY < 450)) && ((mainMov.bullet > 0)))) && ((mainMov.gameState == "Launched")))){ mainMov.bullet--; SoundManager.getInstance().playSound("gunSound"); }; if ((((MainClass(root).gameState == "Aiming")) && (!(ballChar)))){ charging = 0.27; isCharging = true; }; } public function setLauncher(){ catapultLauncher.visible = false; trebuchetLauncher.visible = false; cannonLauncher.visible = false; missileLauncher.visible = false; plasmaLauncher.visible = false; switch (GameStatManager.getInstance().getStat().launcher){ case "Catapult": catapultLauncher.visible = true; launcher = catapultLauncher; launcherPower = launcherData[1][1]; launcherID = 1; break; case "Trebuchet": launcher = trebuchetLauncher; trebuchetLauncher.visible = true; launcherPower = launcherData[2][1]; launcherID = 2; break; case "Cannon": launcher = cannonLauncher; cannonLauncher.visible = true; launcherPower = launcherData[3][1]; launcherID = 3; break; case "Missile": launcher = missileLauncher; missileLauncher.visible = true; launcherPower = launcherData[4][1]; launcherID = 4; break; case "Plasma": launcher = plasmaLauncher; plasmaLauncher.visible = true; launcherPower = launcherData[5][1]; launcherID = 5; break; }; addChild(launcher); launcher.setShootFunction(shootBall); } public function create_random_object(){ var _local1:Number; var _local2:Number; bodyDef = new b2BodyDef(); bodyDef.position.x = ((Math.floor((Math.random() * 500)) + 50) / PIXEL_TO_METER); bodyDef.position.y = 0; _local1 = (Math.random() + 0.5); _local2 = (Math.random() + 0.5); if (Math.random() < 0.5){ boxDef = new b2PolygonDef(); boxDef.SetAsBox(_local1, _local2); boxDef.density = 1; boxDef.friction = 0.5; boxDef.restitution = 0.2; bodyDef.userData = new Box(); bodyDef.userData.width = ((_local1 * 2) * PIXEL_TO_METER); bodyDef.userData.height = ((_local2 * 2) * PIXEL_TO_METER); body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); } else { circleDef = new b2CircleDef(); circleDef.radius = _local1; circleDef.density = 1; circleDef.friction = 0.5; circleDef.restitution = 0.2; bodyDef.userData = new Circle(); bodyDef.userData.width = ((_local1 * 2) * PIXEL_TO_METER); bodyDef.userData.height = ((_local1 * 2) * PIXEL_TO_METER); body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); }; body.SetMassFromShapes(); addChild(bodyDef.userData); } public function setSkies(){ var _local1:MovieClip; var _local2:int; trace("SET SKIES"); _local2 = -1; while (_local2 < 20) { _local1 = new skies(); _local1.x = (_local2 * 150); _local1.height = (_local1.height * 1.75); _local1.y = (-(_local1.height) + 480); _local1.stop(); addChild(_local1); skyArray.push(_local1); _local2++; }; } public function mouse_up(_arg1:MouseEvent):void{ if (MainClass(root).gameState == "Aiming"){ launchAnimate = true; charging = 0; launcher.setToShoot(); isCharging = false; }; mainMov.splatShoot.visible = false; mainMov.cursor.gotoAndStop(1); } public function shootBall():void{ var _local1:b2MassData; CursorManager.setCursor(mainMov.cursor); CursorManager.bringToFront(); mainMov.gameState = "Launched"; mainMov.grandpaMain.visible = true; bodyDef = new b2BodyDef(); bodyDef.userData = new GrandpaBullet(); bodyDef.position.Set(((launcher.x + (launcher.launcherDistance * Math.cos(launcherAngle))) / PIXEL_TO_METER), ((launcher.y + (launcher.launcherDistance * Math.sin(launcherAngle))) / PIXEL_TO_METER)); circleDef = new b2CircleDef(); circleDef.radius = bulletRadius; circleDef.density = 0.1; circleDef.friction = 0.5; circleDef.restitution = 0.8; body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); _local1 = new b2MassData(); _local1.center = body.GetLocalCenter(); _local1.I = 0.448635138895891; _local1.mass = 0.314; body.SetMass(_local1); trace(("MASS 0.314: " + body.GetMass())); body.ApplyImpulse(new b2Vec2((Math.cos(launcherAngle) * bulletSpeed), (Math.sin(launcherAngle) * bulletSpeed)), body.GetWorldCenter()); ballChar = body; addChild(bodyDef.userData); bodyDef.userData.mouseEnabled = false; bodyDef.userData.mouseChildren = false; trace(("HIT AREA" + bodyDef.userData.hitArea)); bodyDef.userData.hitArea = boxManual; trace(("HIT AREA" + bodyDef.userData.hitArea)); storedPos = ballChar.GetPosition().x; launchAnimate = false; ballLauncher.scaleY = 1; charging = 0; bulletSpeed = 1; SoundManager.getInstance().playSound("bombSound"); } public function getObjectByBodyName(_arg1:String=null):b2Body{ var _local2:Array; var _local3:int; var _local4:b2Body; var _local5:int; _local2 = []; _local3 = m_world.Query(worldAABB, _local2, 100); _local4 = null; _local5 = 0; while (_local5 < _local3) { if (_arg1 == _local2[_local5].m_body.m_userData.name){ _local4 = _local2[_local5].m_body; break; }; _local5++; }; return (_local4); } public function createCircle(_arg1:DisplayObject=null, _arg2:Boolean=false, _arg3:b2Vec2=null){ var _local4:Number; bodyDef = new b2BodyDef(); bodyDef.userData = _arg1; trace(_arg1); if (_arg1){ bodyDef.position.x = (_arg1.x / PIXEL_TO_METER); bodyDef.position.y = (_arg1.y / PIXEL_TO_METER); } else { bodyDef.position.x = ((Math.floor((Math.random() * 500)) + 50) / PIXEL_TO_METER); bodyDef.position.y = 0; }; if (_arg3){ bodyDef.position.x = (_arg3.x / PIXEL_TO_METER); bodyDef.position.y = (_arg3.y / PIXEL_TO_METER); }; circleDef = new b2CircleDef(); if (_arg1){ _local4 = ((_arg1.width / 2) / PIXEL_TO_METER); } else { _local4 = (Math.random() + 0.5); }; circleDef.radius = _local4; if (_arg2){ circleDef.isSensor = true; if ((_arg1 is BusObject)){ circleDef.density = 1; } else { circleDef.density = 0; }; } else { circleDef.density = 1; }; circleDef.friction = 0.5; circleDef.restitution = 0.2; body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); if (_arg3){ addChild(bodyDef.userData); body.m_userData.objectBody = body; return (body); }; } public function getObjectToMouse(_arg1:Boolean=false):b2Body{ var _local2:b2AABB; var _local3:int; var _local4:Array; var _local5:int; var _local6:b2Body; var _local7:int; var _local8:b2Shape; var _local9:Boolean; real_x_mouse = (mouseX / PIXEL_TO_METER); real_y_mouse = (mouseY / PIXEL_TO_METER); mousePVec.Set(real_x_mouse, real_y_mouse); _local2 = new b2AABB(); _local2.lowerBound.Set((real_x_mouse - 0.001), (real_y_mouse - 0.001)); _local2.upperBound.Set((real_x_mouse + 0.001), (real_y_mouse + 0.001)); _local3 = 10; _local4 = new Array(); _local5 = m_world.Query(_local2, _local4, _local3); _local6 = null; _local7 = 0; while (_local7 < _local5) { if ((((_local4[_local7].m_body.IsStatic() == false)) || (_arg1))){ _local8 = (_local4[_local7] as b2Shape); _local9 = (_local4[_local7] as b2Shape).TestPoint(_local8.m_body.GetXForm(), mousePVec); if (_local9){ _local6 = _local8.m_body; break; }; }; _local7++; }; return (_local6); } public function Update(_arg1:Event):void{ var _local2:b2Body; var _local3:*; var _local4:*; var _local5:Number; var _local6:*; var _local7:*; var _local8:b2Vec2; var _local9:int; m_world.Step(m_timeStep, m_iterations); if (mouseJoint){ _local6 = (mouseX / PIXEL_TO_METER); _local7 = (mouseY / PIXEL_TO_METER); _local8 = new b2Vec2(_local6, _local7); mouseJoint.SetTarget(_local8); }; _local2 = m_world.m_bodyList; while (_local2) { if ((_local2.m_userData is Sprite)){ _local2.m_userData.x = (_local2.GetPosition().x * PIXEL_TO_METER); _local2.m_userData.y = (_local2.GetPosition().y * PIXEL_TO_METER); _local2.m_userData.rotation = (_local2.GetAngle() * (180 / Math.PI)); }; _local2 = _local2.m_next; }; if (MainClass(root).gameState == "Aiming"){ launcherMeter.visible = true; } else { launcherMeter.visible = false; }; launcherMeter.x = (launcher.x + (launcherData[launcherID][3] * Math.cos(launcherAngle))); launcherMeter.y = (launcher.y + (launcherData[launcherID][3] * Math.sin(launcherAngle))); launcherMeter.meterDisplay.gotoAndStop(Math.round(((bulletSpeed * 10) / launcherPower))); _local3 = (launcher.x - mouseX); _local4 = (launcher.y - mouseY); _local5 = Math.atan2(-(_local4), -(_local3)); if (!launchAnimate){ if ((((((_local5 * 180) / Math.PI) <= 0)) && ((((_local5 * 180) / Math.PI) >= -65)))){ launcherAngle = Math.atan2(-(_local4), -(_local3)); }; if (launcher){ launcher.launcherAngle = launcherAngle; launcherMeter.rotation = (90 + ((launcherAngle * 180) / Math.PI)); }; }; if (ballChar){ mainMov.distance = ((Math.floor((ballChar.GetPosition().x - storedPos)) + (screenNum * 84)) * 2); mainMov.vDistance = (Math.floor(((-(Math.floor((ballChar.GetPosition().y * PIXEL_TO_METER))) + 430) / 8)) + 2); mainMov.hud.distanceDisp.text = String(mainMov.distance); mainMov.hud.vDistanceDisp.text = String(mainMov.vDistance); GameStatManager.getInstance().setLongestDistance(mainMov.distance); GameStatManager.getInstance().setHighestFly(mainMov.vDistance); if ((ballChar.GetPosition().x * PIXEL_TO_METER) > 0x0A00){ if (GameStatManager.getInstance().getMedal(10).isAchieved){ trace("MORE THINGS"); objectNumber = 3; }; if (GameStatManager.getInstance().getMedal(11).isAchieved){ trace("EVEN MORE THINGS"); }; screenNum++; ballChar.SetXForm(new b2Vec2((640 / PIXEL_TO_METER), ballChar.GetPosition().y), ballChar.GetAngle()); clearObject(); _local9 = 0; while (_local9 < objectNumber) { addObject(); _local9++; }; }; if ((ballChar.GetPosition().x * PIXEL_TO_METER) < -614){ ballChar.SetXForm(new b2Vec2((0x0500 / PIXEL_TO_METER), ballChar.GetPosition().y), ballChar.GetAngle()); }; if (isDeath){ ballChar.PutToSleep(); }; if (((mainMov.onRocket) && ((mainMov.rocketFuel > 0)))){ trace(("ON ROCKET" + mainMov.rocketFuel)); if (mainMov.isRocket){ ballChar.ApplyForce(new b2Vec2(mainMov.jetpackData[2][3], -(mainMov.jetpackData[2][4])), ballChar.GetWorldCenter()); } else { ballChar.ApplyForce(new b2Vec2(mainMov.jetpackData[1][3], -(mainMov.jetpackData[1][4])), ballChar.GetWorldCenter()); }; ballChar.SetAngularVelocity(0); mainMov.ballGroundMod = 100; ballChar.SetXForm(ballChar.GetPosition(), 0); mainMov.rocketFuel--; }; if ((((mainMov.rocketFuel < 1)) && (mainMov.onRocket))){ trace("ROCKET FUEL EMPTY"); ballChar.m_userData.gotoAndStop(2); mainMov.grandpaMain.gotoAndStop(2); mainMov.onRocket = false; if (!isDeath){ mainMov.fireParticle.showFire(); }; }; if (((mainMov.onJetpack) && ((mainMov.jetpackFuel > 0)))){ ballChar.ApplyForce(new b2Vec2(mainMov.jetpackData[mainMov.jetpackID][3], -(mainMov.jetpackData[mainMov.jetpackID][4])), ballChar.GetWorldCenter()); ballChar.SetAngularVelocity(0); mainMov.ballGroundMod = 100; mainMov.jetpackFuel--; }; if ((((mainMov.jetpackFuel < 1)) && (mainMov.onJetpack))){ trace("FUEL EMPTY"); ballChar.m_userData.gotoAndStop(2); mainMov.grandpaMain.gotoAndStop(2); mainMov.onJetpack = false; }; }; if (isCharging){ bulletSpeed = (bulletSpeed + (((launcherPower + bulletSpeed) / 16) * charging)); if ((((bulletSpeed >= launcherPower)) || ((bulletSpeed < 0.27)))){ charging = (charging * -1); }; }; if (distanceBoardMod > 0){ if (distanceBoard.x < 0){ distanceBoard.x = 1; }; addChild(distanceBoard); distanceBoard.x = (distanceBoard.x + ((distanceBoardMod - distanceBoard.x) / 16)); }; if (distanceBoardMod <= distanceBoard.x){ distanceBoardMod = 0; }; if (ballChar){ ballChar.m_userData.hitArea = boxManual; if ((((ballChar.GetLinearVelocity().y < 4)) && ((ballChar.GetLinearVelocity().y > -4)))){ mainMov.ballGroundMod--; } else { mainMov.ballGroundMod = 100; }; if (((!(mainMov.onJetpack)) && (!(mainMov.onRocket)))){ ballChar.SetAngularVelocity(1); }; if (mainMov.ballGroundMod < 0){ trace("ball ground mod"); if (GameStatManager.getInstance().getStat().longestDistance <= mainMov.distance){ distanceBoardMod = (ballChar.GetPosition().x * PIXEL_TO_METER); distanceBoard.y = (385 - this.y); }; distanceBoard.distanceDisp.text = String(GameStatManager.getInstance().getStat().longestDistance); if (!isDeath){ ballChar.m_userData.visible = true; }; deadBody = ballChar.m_userData; m_world.DestroyBody(ballChar); ballChar = null; mainMov.ballGroundMod = 100; screenNum = 0; mainMov.gameState = "Stopped"; mainMov.earning = (mainMov.earning + Math.floor((mainMov.distance / 10))); }; }; if (mainMov.gotMedal2.currentFrame == 1){ mainMov.gotMedal2.stop(); }; } public function init(_arg1:Event){ var _local2:b2Vec2; var _local3:Boolean; var _local4:int; var _local5:int; var _local6:int; trace(stage.stageWidth); mainMov = MainClass(root); worldAABB = new b2AABB(); worldAABB.lowerBound.Set(-300, -3000); worldAABB.upperBound.Set(300, 300); _local2 = new b2Vec2(0, 10); _local3 = true; m_world = new b2World(worldAABB, _local2, _local3); _local4 = numChildren; _local5 = 0; while (_local5 < _local4) { if (getQualifiedClassName(getChildAt(_local5)) == "BoxManual"){ }; _local5++; }; bodyDef = new b2BodyDef(); bodyDef.position.Set((500 / PIXEL_TO_METER), (580 / PIXEL_TO_METER)); boxDef = new b2PolygonDef(); boxDef.SetAsBox(80, 3); boxDef.friction = 0.3; boxDef.density = 0; setSkies(); resetWorld(); addChild(bgMov); setLauncher(); bodyDef.userData = new Ground(); groundBody = m_world.CreateBody(bodyDef); groundBody.CreateShape(boxDef); groundBody.SetMassFromShapes(); _local6 = 1; while (_local6 <= 10) { _local6++; }; launcherMeter = new Meter(); addChild(launcherMeter); m_contactListener = new CustomContactListener(); m_contactListener.passedBody = groundBody; m_contactListener.mainMov = mainMov; m_world.SetContactListener(m_contactListener); hitObjectData = new HitObjectData().getHitObjectDict(); trace(("COBA HO DATA :" + hitObjectData["CraneHook"][0])); addObject(); addChild(distanceBoard); addEventListener(Event.ENTER_FRAME, Update, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down); stage.addEventListener(MouseEvent.MOUSE_UP, mouse_up); } public function createBox(_arg1:DisplayObject, _arg2:Boolean, _arg3:Boolean=false){ var _local4:Number; _local4 = _arg1.rotation; _arg1.rotation = 0; bodyDef = new b2BodyDef(); bodyDef.position.x = (_arg1.x / PIXEL_TO_METER); bodyDef.position.y = (_arg1.y / PIXEL_TO_METER); bodyDef.userData = _arg1; bodyDef.angle = ((_local4 * Math.PI) / 180); bodyDef.fixedRotation = _arg3; boxDef = new b2PolygonDef(); boxDef.SetAsBox(((_arg1.width / 2) / PIXEL_TO_METER), ((_arg1.height / 2) / PIXEL_TO_METER)); if (_arg2){ boxDef.density = 0; } else { boxDef.density = 1; }; boxDef.friction = 0.5; boxDef.restitution = 0.2; body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); body.SetMassFromShapes(); } public function resetWorld(){ var _local1:int; var _local2:*; if (deadBody){ removeChild(deadBody); }; deadBody = null; distanceBoard.x = -168; distanceBoard.y = 383; distanceBoardMod = 0; mainMov.setJetpack(); mainMov.onJetpack = false; setLauncher(); clearObject(); isDeath = false; mainMov.earning = 0; mainMov.setGun(); _local1 = (Math.floor((Math.random() * 3)) + 1); if (_local1 == worldID){ resetWorld(); } else { worldID = _local1; bgMov.backgroundMov.gotoAndStop(worldID); }; for (_local2 in skyArray) { skyArray[_local2].gotoAndStop(worldID); }; } public function addObject(){ var _local1:b2Vec2; var _local2:b2Body; var _local3:String; _local3 = hitObjectList[Math.floor((Math.random() * hitObjectList.length))]; switch (_local3){ case "AirBomb": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new BombObject(), true, _local1); break; case "Teeth": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new TeethObject(), true, _local1); break; case "Satellite": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new SatelliteObject(), true, _local1); break; case "UFO": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new UFOObject(), true, _local1); break; case "Tire": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new TireObject(), true, _local1); break; case "Bird": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new BirdObject(), true, _local1); break; case "WashingLine": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new WashinglineObject(), true, _local1); break; case "Barrel": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new BarrelObject(), true, _local1); break; case "Missile": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new MissileObject(), true, _local1); break; case "Trashcan": _local1 = new b2Vec2((156 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new TrashcanObject(), true, _local1); break; case "Trampoline": _local1 = new b2Vec2(1222, hitObjectData[_local3][1]); _local2 = createCircle(new TrampolineObject(), true, _local1); break; case "Chainsaw": _local1 = new b2Vec2((0x0100 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new ChainsawObject(), true, _local1); break; case "Kid": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new KidObject(), true, _local1); break; case "GunGuy": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new GunGuyObject(), true, _local1); break; case "Bus": _local1 = new b2Vec2(1322, hitObjectData[_local3][1]); _local2 = createCircle(new BusObject(), true, _local1); break; case "Pengamen": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new PengamenObject(), true, _local1); break; case "Fireworks": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new FireworksObject(), true, _local1); break; case "CraneHook": _local1 = new b2Vec2((356 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new HookObject(), true, _local1); break; case "Police": _local1 = new b2Vec2((456 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new PolicemanObject(), true, _local1); break; case "Swag": _local1 = new b2Vec2((Math.floor((Math.random() * 556)) + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new SwagBagObject(), true, _local1); break; case "Sandal": _local1 = new b2Vec2((556 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new SandalObject(), true, _local1); break; case "Log": _local1 = new b2Vec2((556 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new LogObject(), true, _local1); break; case "Bolas": _local1 = new b2Vec2((556 + 1322), hitObjectData[_local3][1]); _local2 = createCircle(new BolasObject(), true, _local1); break; case "ChainedBolas": _local1 = new b2Vec2((556 + 1400), hitObjectData[_local3][1]); _local2 = createCircle(new ChainedBolasObject(), true, _local1); break; }; objects.push(_local2); } public function clearObject(){ var _local1:*; trace("Clear Objects!!!"); for (_local1 in objects) { removeChild(objects[_local1].GetUserData()); m_world.DestroyBody(objects[_local1]); }; objects = []; } public function convertManualObject(_arg1:DisplayObject){ var _local2:String; _local2 = getQualifiedClassName(_arg1); switch (_local2){ case "BoxManual": createBox(_arg1, true); break; case "Box": createBox(_arg1, false); break; case "Circle": createCircle(_arg1); break; case "BoxPulley": createBox(_arg1, false, true); break; case "com.chocorobokun.hitObjects::BombObject": createCircle(_arg1, true); break; }; } } }//package com.chocorobokun.World
Section 126
//buttonAnim_232 (Launcher_fla.buttonAnim_232) package Launcher_fla { import flash.display.*; public dynamic class buttonAnim_232 extends MovieClip { public function buttonAnim_232(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package Launcher_fla
Section 127
//cannon_75 (Launcher_fla.cannon_75) package Launcher_fla { import flash.display.*; public dynamic class cannon_75 extends MovieClip { public var grandpa:MovieClip; } }//package Launcher_fla
Section 128
//catapultRope_66 (Launcher_fla.catapultRope_66) package Launcher_fla { import flash.display.*; public dynamic class catapultRope_66 extends MovieClip { public var grandpa:MovieClip; } }//package Launcher_fla
Section 129
//descDisplay_200 (Launcher_fla.descDisplay_200) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class descDisplay_200 extends MovieClip { public var descText:TextField; } }//package Launcher_fla
Section 130
//DistanceBoard_82 (Launcher_fla.DistanceBoard_82) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class DistanceBoard_82 extends MovieClip { public var distanceDisp:TextField; } }//package Launcher_fla
Section 131
//drip_224 (Launcher_fla.drip_224) package Launcher_fla { import flash.display.*; public dynamic class drip_224 extends MovieClip { public function drip_224(){ addFrameScript(20, frame21); } function frame21(){ stop(); } } }//package Launcher_fla
Section 132
//MissileGun_77 (Launcher_fla.MissileGun_77) package Launcher_fla { import flash.display.*; public dynamic class MissileGun_77 extends MovieClip { public var grandpa:MovieClip; } }//package Launcher_fla
Section 133
//PlasmaGun_80 (Launcher_fla.PlasmaGun_80) package Launcher_fla { import flash.display.*; public dynamic class PlasmaGun_80 extends MovieClip { public var grandpa:MovieClip; } }//package Launcher_fla
Section 134
//StopDisplay_179 (Launcher_fla.StopDisplay_179) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class StopDisplay_179 extends MovieClip { public var moreBut:SimpleButton; public var replayBut:SimpleButton; public var distanceDisp:TextField; public var moneyDisp:TextField; public var earnDisp:TextField; public var shopBut:SimpleButton; } }//package Launcher_fla
Section 135
//Symbol1_189 (Launcher_fla.Symbol1_189) package Launcher_fla { import flash.display.*; public dynamic class Symbol1_189 extends MovieClip { public var jetpackLayer:MovieClip; public var popBut:SimpleButton; public var launcherLayer:MovieClip; public var medalLayer:MovieClip; public var lockedMov:MovieClip; public var gunLayer:MovieClip; } }//package Launcher_fla
Section 136
//Symbol17copy_41 (Launcher_fla.Symbol17copy_41) package Launcher_fla { import flash.display.*; public dynamic class Symbol17copy_41 extends MovieClip { public function Symbol17copy_41(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package Launcher_fla
Section 137
//Symbol2_190 (Launcher_fla.Symbol2_190) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class Symbol2_190 extends MovieClip { public var buyBut:SimpleButton; public var moneyDisp:TextField; public var priceDisp:TextField; } }//package Launcher_fla
Section 138
//Symbol2copy_191 (Launcher_fla.Symbol2copy_191) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class Symbol2copy_191 extends MovieClip { public var buyBut:SimpleButton; public var moneyDisp:TextField; public var priceDisp:TextField; } }//package Launcher_fla
Section 139
//Symbol2copy2_194 (Launcher_fla.Symbol2copy2_194) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class Symbol2copy2_194 extends MovieClip { public var medal1:SimpleButton; public var medal3:SimpleButton; public var medal5:SimpleButton; public var medal2:SimpleButton; public var medal9:SimpleButton; public var medal4:SimpleButton; public var medal6:SimpleButton; public var medal8:SimpleButton; public var medal10:SimpleButton; public var lock1:MovieClip; public var lock4:MovieClip; public var lock5:MovieClip; public var lock6:MovieClip; public var lock8:MovieClip; public var lock9:MovieClip; public var lock2:MovieClip; public var lock3:MovieClip; public var medal7:SimpleButton; public var lock7:MovieClip; public var lock10:MovieClip; public var descDisp:TextField; } }//package Launcher_fla
Section 140
//Symbol2jetpack_192 (Launcher_fla.Symbol2jetpack_192) package Launcher_fla { import flash.display.*; import flash.text.*; public dynamic class Symbol2jetpack_192 extends MovieClip { public var buyBut:SimpleButton; public var moneyDisp:TextField; public var priceDisp:TextField; } }//package Launcher_fla
Section 141
//Symbol6_198 (Launcher_fla.Symbol6_198) package Launcher_fla { import flash.display.*; public dynamic class Symbol6_198 extends MovieClip { public var moreBut:SimpleButton; public var closeBut:SimpleButton; public var descDisp:MovieClip; } }//package Launcher_fla
Section 142
//Timeline_230 (Launcher_fla.Timeline_230) package Launcher_fla { import flash.display.*; public dynamic class Timeline_230 extends MovieClip { public var but:SimpleButton; public var logo:MovieClip; public function Timeline_230(){ addFrameScript(8, frame9); } function frame9(){ stop(); } } }//package Launcher_fla
Section 143
//Timeline_231 (Launcher_fla.Timeline_231) package Launcher_fla { import flash.display.*; public dynamic class Timeline_231 extends MovieClip { public var buttonAnim:MovieClip; public var logoGray:MovieClip; public var preloadBut:SimpleButton; public var logoRed:MovieClip; } }//package Launcher_fla
Section 144
//Timeline_233 (Launcher_fla.Timeline_233) package Launcher_fla { import flash.display.*; public dynamic class Timeline_233 extends MovieClip { public function Timeline_233(){ addFrameScript(0, frame1, 22, frame23); } function frame1(){ stop(); } function frame23(){ stop(); } } }//package Launcher_fla
Section 145
//Timeline_246 (Launcher_fla.Timeline_246) package Launcher_fla { import flash.display.*; public dynamic class Timeline_246 extends MovieClip { public function Timeline_246(){ addFrameScript(99, frame100); } function frame100(){ stop(); } } }//package Launcher_fla
Section 146
//Timeline_250 (Launcher_fla.Timeline_250) package Launcher_fla { import flash.display.*; public dynamic class Timeline_250 extends MovieClip { public var redM:MovieClip; public function Timeline_250(){ addFrameScript(0, frame1, 35, frame36, 47, frame48); } function frame1(){ stop(); } function frame36(){ stop(); } function frame48(){ stop(); } } }//package Launcher_fla
Section 147
//Timeline_251 (Launcher_fla.Timeline_251) package Launcher_fla { import flash.display.*; public dynamic class Timeline_251 extends MovieClip { public function Timeline_251(){ addFrameScript(209, frame210); } function frame210(){ stop(); trace("end frame"); } } }//package Launcher_fla
Section 148
//SWFConsole (rl.dev.SWFConsole) package rl.dev { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.system.*; public class SWFConsole extends Sprite { private static const INPUT_BG_HEIGHT:int = 20; private static const _FPS_REFRESH_RATE:uint = 1000; private static const SCROLLHANDLE_COLOUR:int = 0xFFFFFF; private static const HEADER_HEIGHT:int = 20; private static const SCROLLHANDLE_WIDTH:int = 10; private static const TEXT_COLOUR:int = 0xFFFFFF; private static const HEADER_BG_ALPHA:Number = 0.6; private static const SCROLLTRACK_ALPHA:Number = 0.5; private static const SCROLLBUTTON_ALPHA:Number = 0.9; private static const _HISTORY_STATES:uint = 20; private static const BACKGROUND_HEIGHT:int = 200; private static const INPUTAREA_BG_HEIGHT:int = 30; private static const SCROLLHANDLE_HEIGHT:int = 60; private static const UPDATE_INTERVAL:int = 1000; private static const SCROLLTRACK_WIDTH:int = 10; private static const SCROLLTRACK_COLOUR:int = 0; private static const INPUT_BG_COLOUR:int = 0xFFFFFF; private static const SCROLLHANDLE_ALPHA:Number = 0.9; private static const VERSION:String = "1.1"; private static const INPUT_BG_ALPHA:Number = 0.2; private static const SHADOW_COLOUR:int = 0; private static const SCROLLBUTTON_COLOUR:int = 0xFFFFFF; private static const INPUTAREA_BG_ALPHA:Number = 0.7; private static const HEADER_BG_COLOUR:int = 0; private static const WELCOME_MESSAGE:String = "============================================================ New features: - Resource Monitor - type !resmon to activate ============================================================"; private static const BACKGROUND_ALPHA:Number = 0.7; private static const BACKGROUND_COLOUR:int = 0; private static const INPUTAREA_BG_COLOUR:int = 0; private static var _scrollButtonDown:Sprite; private static var _enabled:Boolean = false; private static var _stageHeight:Number; private static var _stageWidth:Number; private static var _headerText:TextField; private static var _percent:Number; private static var _text:TextField; private static var _lastcommands:Array; private static var _avg:Number = 0; private static var _traceEnabled:Boolean = false; private static var _textFormat:TextFormat; private static var _fpsBg:Shape; private static var _fps:Sprite; private static var _memUsage:Sprite; private static var _outputMask:Shape; private static var _scrollHandle:Sprite; private static var _fpsTimer:Timer; private static var _txt_avgfps:TextField; private static var _timer:Timer; private static var _txt_mem:TextField; public static var _activated:Boolean = false; private static var _history:Array; private static var _headerTextFormat:TextFormat; private static var _txt_fps:TextField; private static var _inputAreaBg:Shape; private static var _fpsValue:uint = 0; private static var _inputBg:Shape; private static var _headerTextShadow:TextField; private static var _scrollButtonUp:Sprite; private static var _scrollButtonDownShape:Shape; private static var _min:Number; private static var _max:Number; private static var _stageFrameRate:uint; private static var _scrollButtonUpShape:Shape; private static var _scrollTrack:Shape; private static var _offset:Number; private static var _inputText:TextField; private static var _scrollHandleShape:Shape; private static var _headerTextShadowFormat:TextFormat; private static var _frames:uint = 0; private static var _bg:Shape; private static var _headerbg:Shape; private static var _lastcommandsindex:Number; private static var _memBg:Shape; public function SWFConsole(_arg1:Number, _arg2:Number, _arg3:Boolean=false){ _stageWidth = _arg1; _stageHeight = _arg2; _traceEnabled = _arg3; if (stage){ _init(); } else { addEventListener(Event.ADDED_TO_STAGE, _init, false, 0, true); }; } private function _findChar(_arg1:String, _arg2:String):Boolean{ var _local3:*; _local3 = 0; while (_local3 < _arg1.length) { if (_arg1.charAt(_local3) == _arg2){ return (true); }; _local3++; }; return (false); } private function _createScrollHandle():void{ _scrollHandleShape = new Shape(); _scrollHandleShape.graphics.beginFill(SCROLLHANDLE_COLOUR, SCROLLHANDLE_ALPHA); _scrollHandleShape.graphics.drawRect(0, 0, SCROLLHANDLE_WIDTH, SCROLLHANDLE_HEIGHT); _scrollHandleShape.graphics.endFill(); _scrollHandleShape.cacheAsBitmap = true; _scrollHandle = new Sprite(); _scrollHandle.addChild(_scrollHandleShape); _scrollHandle.x = (_scrollTrack.x - (SCROLLHANDLE_WIDTH - SCROLLTRACK_WIDTH)); _scrollHandle.y = _scrollTrack.y; addChild(_scrollHandle); } private function _processCommand(_arg1:String):void{ output(("> " + _arg1)); _lastcommands.push(_arg1); _lastcommandsindex = (_lastcommands.length - 1); _arg1 = _removeWhitespace(_arg1); if (_arg1 == ""){ return; }; if (_arg1.charAt(0) == "!"){ _runCommand(_arg1); } else { if (_findChar(_arg1, "(")){ _runFunc(_arg1); } else { _runProperty(_arg1); }; }; } private function _recurseChildren(_arg1:Object, _arg2:String):Object{ var _local3:Object; var _local4:*; if ((((((_arg1.hasOwnProperty("numChildren") == false)) || ((_arg1.numChildren == null)))) || ((_arg1.numChildren == 0)))){ return (_local3); }; _local4 = 0; while (_local4 < _arg1.numChildren) { if (_arg1.getChildAt(_local4).name == _arg2){ return (_arg1.getChildAt(_local4)); }; if (_local3 == null){ _local3 = _recurseChildren((_arg1.getChildAt(_local4) as Object), _arg2); }; _local4++; }; return (_local3); } private function _createScrollBar():void{ _createScrollTrack(); _createScrollButtons(); _createScrollHandle(); _scrollTrack.visible = false; _scrollButtonUp.visible = false; _scrollButtonDown.visible = false; _scrollHandle.visible = false; _min = _scrollTrack.y; _max = ((_scrollTrack.y + _scrollTrack.height) - _scrollHandle.height); _scrollHandle.buttonMode = true; _scrollHandle.addEventListener(MouseEvent.MOUSE_DOWN, _handleDown, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, _handleUp, false, 0, true); addEventListener(MouseEvent.MOUSE_WHEEL, _scrollWheel, false, 0, true); } private function _handleUp(_arg1:MouseEvent):void{ stage.removeEventListener(MouseEvent.MOUSE_MOVE, _handleMove); } private function _createScrollTrack():void{ _scrollTrack = new Shape(); _scrollTrack.graphics.beginFill(SCROLLTRACK_COLOUR, SCROLLTRACK_ALPHA); _scrollTrack.graphics.drawRect(0, 0, SCROLLTRACK_WIDTH, (BACKGROUND_HEIGHT - 60)); _scrollTrack.graphics.endFill(); _scrollTrack.x = (stage.stageWidth - 30); _scrollTrack.y = (HEADER_HEIGHT + 30); _scrollTrack.cacheAsBitmap = true; addChild(_scrollTrack); } public function hide():void{ alpha = 0; visible = false; } private function _keyListener(_arg1:KeyboardEvent):void{ if (_activated){ switch (_arg1.keyCode){ case 192: if (_enabled){ hide(); } else { _inputText.text = ""; show(); stage.focus = _inputText; }; _enabled = !(_enabled); break; case 13: _processCommand(_inputText.text); _inputText.text = ""; break; case 38: if (_lastcommands.length > 0){ _inputText.text = _lastcommands[_lastcommandsindex]; _inputText.setSelection(_inputText.length, _inputText.length); _lastcommandsindex--; if (_lastcommandsindex < 0){ _lastcommandsindex = 0; }; }; break; }; }; } private function _calculateFPS(_arg1:TimerEvent):void{ var _local2:uint; _fpsValue = ((_frames)>_stageFrameRate) ? _stageFrameRate : _frames; _txt_fps.text = ("FPS: " + String(_fpsValue)); _frames = 0; _history.unshift(_fpsValue); if (_history.length > _HISTORY_STATES){ _history.pop(); }; _avg = 0; _local2 = 0; while (_local2 < _history.length) { _avg = (_avg + _history[_local2]); _local2++; }; _txt_avgfps.text = ("AVG: " + String(Math.round((_avg / _history.length)))); } private function _removeWhitespace(_arg1:String):String{ var _local2:String; var _local3:*; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { if (_arg1.charAt(_local3) != " "){ _local2 = (_local2 + _arg1.charAt(_local3)); }; _local3++; }; return (_local2); } private function _handleDown(_arg1:MouseEvent):void{ stage.addEventListener(MouseEvent.MOUSE_MOVE, _handleMove, false, 0, true); _offset = (mouseY - _scrollHandle.y); } private function _createHeader():void{ _headerbg = new Shape(); _headerbg.graphics.beginFill(HEADER_BG_COLOUR, HEADER_BG_ALPHA); _headerbg.graphics.drawRect(0, 0, stage.stageWidth, HEADER_HEIGHT); _headerbg.graphics.endFill(); _headerbg.cacheAsBitmap = true; addChild(_headerbg); _headerTextShadowFormat = new TextFormat(); _headerTextShadowFormat.font = "_typewriter"; _headerTextShadowFormat.color = SHADOW_COLOUR; _headerTextShadowFormat.italic = true; _headerTextShadow = new TextField(); _headerTextShadow.x = 12; _headerTextShadow.y = 2; _headerTextShadow.height = HEADER_HEIGHT; _headerTextShadow.autoSize = TextFieldAutoSize.LEFT; _headerTextShadow.multiline = false; _headerTextShadow.defaultTextFormat = _headerTextShadowFormat; _headerTextShadow.text = ("SWFConsole v" + VERSION); _headerTextFormat = new TextFormat(); _headerTextFormat.font = "_typewriter"; _headerTextFormat.color = TEXT_COLOUR; _headerTextFormat.bold; _headerTextFormat.italic = true; _headerText = new TextField(); _headerText.x = 10; _headerText.height = HEADER_HEIGHT; _headerText.autoSize = TextFieldAutoSize.LEFT; _headerText.multiline = false; _headerText.defaultTextFormat = _headerTextFormat; _headerText.text = ("SWFConsole v" + VERSION); addChild(_headerTextShadow); addChild(_headerText); } private function _createScrollButtons():void{ _scrollButtonUpShape = new Shape(); _scrollButtonDownShape = new Shape(); _createScrollButtonShape(_scrollButtonUpShape); _createScrollButtonShape(_scrollButtonDownShape); _scrollButtonUp = new Sprite(); _scrollButtonUp.addChild(_scrollButtonUpShape); _scrollButtonUp.x = (stage.stageWidth - 30); _scrollButtonUp.y = 40; _scrollButtonUp.buttonMode = true; _scrollButtonUp.addEventListener(MouseEvent.MOUSE_DOWN, _scrollButtonUpDown, false, 0, true); addChild(_scrollButtonUp); _scrollButtonDown = new Sprite(); _scrollButtonDown.addChild(_scrollButtonDownShape); _scrollButtonDown.scaleY = -1; _scrollButtonDown.x = (stage.stageWidth - 30); _scrollButtonDown.y = ((_scrollTrack.y + _scrollTrack.height) + 10); _scrollButtonDown.buttonMode = true; _scrollButtonDown.addEventListener(MouseEvent.MOUSE_DOWN, _scrollButtonDownDown, false, 0, true); addChild(_scrollButtonDown); } private function _relocate(_arg1:Event):void{ _headerbg.width = stage.stageWidth; _bg.width = stage.stageWidth; _text.width = (stage.stageWidth - 50); _outputMask.width = (stage.stageWidth - 50); _inputText.width = (stage.stageWidth - 50); _inputAreaBg.width = stage.stageWidth; _inputBg.width = (stage.stageWidth - 50); _scrollTrack.x = Math.ceil((stage.stageWidth - 30)); _scrollButtonUp.x = Math.ceil((stage.stageWidth - 30)); _scrollButtonDown.x = Math.ceil((stage.stageWidth - 30)); _scrollHandle.x = Math.ceil((stage.stageWidth - 30)); x = Math.ceil((-((stage.stageWidth - _stageWidth)) * 0.5)); y = Math.ceil((-((stage.stageHeight - _stageHeight)) * 0.5)); if (_fps){ _fps.x = Math.ceil(((-((stage.stageWidth - _stageWidth)) * 0.5) + (stage.stageWidth - _fps.width))); _fps.y = Math.ceil(((-((stage.stageHeight - _stageHeight)) * 0.5) + (stage.stageHeight - _fps.height))); }; if (_memUsage){ _memUsage.x = Math.ceil(((-((stage.stageWidth - _stageWidth)) * 0.5) + (stage.stageWidth - _memUsage.width))); _memUsage.y = Math.ceil((((-((stage.stageHeight - _stageHeight)) * 0.5) + (stage.stageHeight - _memUsage.height)) - 32)); }; } private function _createScrollButtonShape(_arg1:Shape):void{ _arg1.graphics.beginFill(SCROLLBUTTON_COLOUR, SCROLLBUTTON_ALPHA); _arg1.graphics.moveTo(0, 0); _arg1.graphics.lineTo(5, -8); _arg1.graphics.lineTo(10, 0); _arg1.graphics.lineTo(0, 0); _arg1.graphics.endFill(); _arg1.cacheAsBitmap = true; } private function _removeChar(_arg1:String, _arg2:String):String{ var _local3:String; var _local4:*; _local3 = ""; _local4 = 0; while (_local4 < _arg1.length) { if (_arg1.charAt(_local4) != _arg2){ _local3 = (_local3 + _arg1.charAt(_local4)); }; _local4++; }; return (_local3); } private function _createBackground():void{ _bg = new Shape(); _bg.graphics.beginFill(BACKGROUND_COLOUR, BACKGROUND_ALPHA); _bg.graphics.drawRect(0, 0, stage.stageWidth, BACKGROUND_HEIGHT); _bg.graphics.endFill(); _bg.cacheAsBitmap = true; _bg.y = HEADER_HEIGHT; addChild(_bg); } private function _createOutputArea():void{ _text = new TextField(); _text.width = (stage.stageWidth - 50); _text.x = 10; _text.y = HEADER_HEIGHT; _text.height = BACKGROUND_HEIGHT; _text.multiline = true; _text.wordWrap = true; _text.autoSize = TextFieldAutoSize.LEFT; _textFormat = new TextFormat(); _textFormat.color = TEXT_COLOUR; _textFormat.font = "_typewriter"; _text.defaultTextFormat = _textFormat; addChild(_text); _outputMask = new Shape(); _outputMask.graphics.beginFill(0xFF00FF); _outputMask.graphics.drawRect(0, 0, (stage.stageWidth - 50), BACKGROUND_HEIGHT); _outputMask.graphics.endFill(); _outputMask.x = 10; _outputMask.y = HEADER_HEIGHT; addChild(_outputMask); _text.mask = _outputMask; } private function _initFPS(){ var _local1:TextFormat; _fps = new Sprite(); stage.addChild(_fps); _stageFrameRate = stage.frameRate; _history = new Array(); _txt_fps = new TextField(); _txt_fps.width = 100; _txt_fps.height = 16; _txt_fps.border = false; _txt_fps.selectable = false; _txt_avgfps = new TextField(); _txt_avgfps.width = 100; _txt_avgfps.height = 16; _txt_avgfps.border = false; _txt_avgfps.selectable = false; _local1 = new TextFormat(); _local1.font = "Verdana"; _local1.color = 0xFFCC00; _local1.size = 10; _txt_fps.defaultTextFormat = _local1; _txt_avgfps.defaultTextFormat = _local1; _txt_fps.text = ("FPS: " + _stageFrameRate); _txt_avgfps.text = ("AVG: " + _stageFrameRate); _txt_fps.x = (_txt_fps.width - _txt_avgfps.width); _txt_avgfps.x = 0; _txt_avgfps.y = _txt_fps.height; _fps.addChild(_txt_fps); _fps.addChild(_txt_avgfps); _fpsBg = new Shape(); _fpsBg.graphics.beginFill(0, 0.7); _fpsBg.graphics.drawRect(0, 0, _fps.width, _fps.height); _fpsBg.graphics.endFill(); _fps.addChildAt(_fpsBg, 0); _fps.x = Math.ceil(((-((stage.stageWidth - _stageWidth)) * 0.5) + (stage.stageWidth - _fps.width))); _fps.y = Math.ceil(((-((stage.stageHeight - _stageHeight)) * 0.5) + (stage.stageHeight - _fps.height))); _fpsTimer = new Timer(_FPS_REFRESH_RATE); _fpsTimer.addEventListener(TimerEvent.TIMER, _calculateFPS, false, 0, true); _fpsTimer.start(); addEventListener(Event.ENTER_FRAME, _updateFrames, false, 0, true); } private function _updateFrames(_arg1:Event):void{ _frames++; } private function _runFunc(_arg1:String):void{ var instanceSplit:Array; var functionSplit:Array; var parametersSplit:Array; var instance:Object; var command = _arg1; if (_findChar(command, ".")){ instanceSplit = command.split("."); instance = _recurseChildren(stage, instanceSplit[0]); functionSplit = instanceSplit[1].split("("); parametersSplit = functionSplit[1].split(")"); if (instance){ if (instance.hasOwnProperty(functionSplit[0])){ try { if (parametersSplit[0] == ""){ output(instance[functionSplit[0]]()); } else { if (_findChar(parametersSplit[0], "\"")){ parametersSplit[0] = _removeChar(parametersSplit[0], "\""); }; output(instance[functionSplit[0]](parametersSplit[0])); }; } catch(e:Error) { output(e); }; } else { output(((("Function " + functionSplit[0]) + " not found on ") + instanceSplit[0])); }; } else { output("Instance not found"); }; } else { functionSplit = command.split("("); parametersSplit = functionSplit[1].split(")"); if (stage.hasOwnProperty(functionSplit[0])){ try { if (parametersSplit[0] == ""){ output(stage[functionSplit[0]]()); } else { if (_findChar(parametersSplit[0], "\"")){ parametersSplit[0] = _removeChar(parametersSplit[0], "\""); }; output(stage[functionSplit[0]](parametersSplit[0])); }; } catch(e:Error) { output(e); }; } else { output(((("Function " + functionSplit[0]) + " not found on ") + instanceSplit[0])); }; }; } private function _scrollButtonUpDown(_arg1:MouseEvent):void{ _percent = (_percent - 0.1); if (_percent < 0){ _percent = 0; }; _text.y = (_headerbg.height + (-(_percent) * (_text.height - _outputMask.height))); _scrollHandle.y = (_min + ((_max - _min) * _percent)); } private function _createInputArea():void{ _inputAreaBg = new Shape(); _inputAreaBg.graphics.beginFill(INPUTAREA_BG_COLOUR, INPUTAREA_BG_ALPHA); _inputAreaBg.graphics.drawRect(0, 0, stage.stageWidth, INPUTAREA_BG_HEIGHT); _inputAreaBg.graphics.endFill(); _inputAreaBg.y = (HEADER_HEIGHT + BACKGROUND_HEIGHT); addChild(_inputAreaBg); _inputBg = new Shape(); _inputBg.graphics.beginFill(INPUT_BG_COLOUR, INPUT_BG_ALPHA); _inputBg.graphics.drawRect(0, 0, (stage.stageWidth - 50), INPUT_BG_HEIGHT); _inputBg.graphics.endFill(); _inputBg.x = 10; _inputBg.y = (_inputAreaBg.y + 5); addChild(_inputBg); _inputText = new TextField(); _inputText.width = (stage.stageWidth - 50); _inputText.x = 10; _inputText.y = (_inputAreaBg.y + 5); _inputText.height = INPUT_BG_HEIGHT; _inputText.multiline = false; _inputText.type = TextFieldType.INPUT; _inputText.restrict = "^`"; _inputText.defaultTextFormat = _textFormat; addChild(_inputText); } private function _runProperty(_arg1:String):void{ var instanceSplit:Array; var propertySplit:Array; var instance:Object; var command = _arg1; if (_findChar(command, "=")){ propertySplit = command.split("="); if (_findChar(propertySplit[0], ".")){ instanceSplit = propertySplit[0].split("."); instance = _recurseChildren(stage, instanceSplit[0]); if (instance){ if (instance.hasOwnProperty(instanceSplit[1])){ if (propertySplit[1] == "false"){ propertySplit[1] = false; }; instance[instanceSplit[1]] = propertySplit[1]; } else { output(((("Property " + instanceSplit[1]) + " not found on ") + instanceSplit[0])); }; } else { output("Instance not found"); }; } else { if (stage.hasOwnProperty(propertySplit[0])){ if (propertySplit[1] == "false"){ propertySplit[1] = false; }; try { stage[propertySplit[0]] = propertySplit[1]; } catch(e:Error) { output("*** ERROR: this property of stage cannot be set ***"); }; } else { output((("Property " + propertySplit[0]) + " not found on stage")); }; }; } else { if (_findChar(command, ".")){ instanceSplit = command.split("."); instance = _recurseChildren(stage, instanceSplit[0]); if (instance){ if (instance.hasOwnProperty(instanceSplit[1])){ output(((((instance.name + ".") + instanceSplit[1]) + " = ") + instance[instanceSplit[1]])); } else { output(((("Property " + instanceSplit[1]) + " not found on ") + instanceSplit[0])); }; } else { output("Instance not found"); }; } else { if (stage.hasOwnProperty(command)){ output(((("stage." + command) + " = ") + stage[command])); } else { output((("Property " + command) + " not found on stage")); }; }; }; } private function _scrollButtonDownDown(_arg1:MouseEvent):void{ _percent = (_percent + 0.1); if (_percent > 1){ _percent = 1; }; _text.y = (_headerbg.height + (-(_percent) * (_text.height - _outputMask.height))); _scrollHandle.y = (_min + ((_max - _min) * _percent)); } private function _handleMove(_arg1:MouseEvent):void{ _scrollHandle.y = (mouseY - _offset); if (_scrollHandle.y <= _min){ _scrollHandle.y = _min; }; if (_scrollHandle.y >= _max){ _scrollHandle.y = _max; }; _percent = ((_scrollHandle.y - _min) / (_max - _min)); if (_text.height > _outputMask.height){ _text.y = (_headerbg.height + (-(_percent) * (_text.height - _outputMask.height))); }; _arg1.updateAfterEvent(); } private function _scrollWheel(_arg1:MouseEvent):void{ if (_scrollButtonDown.visible){ if (_arg1.delta > 0){ _percent = (_percent - 0.1); if (_percent < 0){ _percent = 0; }; } else { if (_arg1.delta < 0){ _percent = (_percent + 0.1); if (_percent > 1){ _percent = 1; }; }; }; _text.y = (_headerbg.height + (-(_percent) * (_text.height - _outputMask.height))); _scrollHandle.y = (_min + ((_max - _min) * _percent)); }; } private function _initMemUsage():void{ var _local1:TextFormat; _memUsage = new Sprite(); stage.addChild(_memUsage); _txt_mem = new TextField(); _txt_mem.width = 100; _txt_mem.height = 16; _txt_mem.border = false; _txt_mem.selectable = false; _local1 = new TextFormat(); _local1.font = "Verdana"; _local1.color = 6750054; _local1.size = 10; _txt_mem.defaultTextFormat = _local1; _txt_mem.text = "MEM: 0 MB"; _memUsage.addChild(_txt_mem); _memBg = new Shape(); _memBg.graphics.beginFill(0, 0.7); _memBg.graphics.drawRect(0, 0, _memUsage.width, _memUsage.height); _memBg.graphics.endFill(); _memUsage.addChildAt(_memBg, 0); _memUsage.x = Math.ceil(((-((stage.stageWidth - _stageWidth)) * 0.5) + (stage.stageWidth - _memUsage.width))); _memUsage.y = Math.ceil((((-((stage.stageHeight - _stageHeight)) * 0.5) + (stage.stageHeight - _memUsage.height)) - 32)); _timer = new Timer(UPDATE_INTERVAL); _timer.addEventListener(TimerEvent.TIMER, displayUsage, false, 0, true); _timer.start(); } private function _runCommand(_arg1:String):void{ if (_arg1.substr(0, 7).toLowerCase() == "!resmon"){ if (_arg1.charAt(7) == "0"){ if (_fps != null){ _fps.visible = false; }; if (_memUsage != null){ _memUsage.visible = false; }; output("*** RESOURCE MONITOR DISABLED ***"); } else { if (_fps == null){ _initFPS(); } else { _fps.visible = true; }; if (_memUsage == null){ _initMemUsage(); } else { _memUsage.visible = true; }; output("*** RESOURCE MONITOR ENABLED ***"); }; return; }; output("Invalid command"); } private function _init(_arg1:Event=null):void{ removeEventListener(Event.ADDED_TO_STAGE, _init); trace("SWFConsole Initialised - ( ` ) to activate"); hide(); _createHeader(); _createBackground(); _createOutputArea(); _createScrollBar(); _createInputArea(); x = -(Math.ceil(((stage.stageWidth - _stageWidth) * 0.5))); y = -(Math.ceil(((stage.stageHeight - _stageHeight) * 0.5))); _activated = true; _lastcommands = new Array(); _lastcommandsindex = 0; output(WELCOME_MESSAGE); stage.addEventListener(KeyboardEvent.KEY_UP, _keyListener, false, 0, true); stage.addEventListener(Event.RESIZE, _relocate, false, 0, true); } public function show():void{ alpha = 1; visible = true; stage.focus = _inputText; } private function displayUsage(_arg1:TimerEvent):void{ _txt_mem.text = ("MEM: " + String((Number(((System.totalMemory / 0x0400) / 0x0400)).toFixed(2) + "MB"))); } public static function init(_arg1:Object, _arg2:Boolean=false):void{ _arg1.stage.addChild(new SWFConsole(_arg1.stage.width, _arg1.stage.height, _arg2)); } public static function output(_arg1:Object):void{ if (_activated){ _text.appendText((String(_arg1) + "\n")); if (_text.height > _outputMask.height){ _text.y = (_headerbg.height - (_text.height - _outputMask.height)); _scrollHandle.y = _max; _percent = 1; if (!_scrollButtonDown.visible){ _scrollTrack.visible = true; _scrollButtonUp.visible = true; _scrollButtonDown.visible = true; _scrollHandle.visible = true; }; }; }; if (_traceEnabled){ trace(String(_arg1)); }; } } }//package rl.dev
Section 149
//AirMarker (AirMarker) package { import flash.display.*; import flash.text.*; public dynamic class AirMarker extends MovieClip { public var distanceDisp:TextField; } }//package
Section 150
//BG (BG) package { import flash.display.*; public dynamic class BG extends MovieClip { public var backgroundMov:MovieClip; } }//package
Section 151
//birdSound (birdSound) package { import flash.media.*; public dynamic class birdSound extends Sound { } }//package
Section 152
//bombSound (bombSound) package { import flash.media.*; public dynamic class bombSound extends Sound { } }//package
Section 153
//bounceSound (bounceSound) package { import flash.media.*; public dynamic class bounceSound extends Sound { } }//package
Section 154
//Box (Box) package { import flash.display.*; public dynamic class Box extends MovieClip { } }//package
Section 155
//BoxManual (BoxManual) package { import flash.display.*; public dynamic class BoxManual extends MovieClip { } }//package
Section 156
//BoxPulley (BoxPulley) package { import flash.display.*; public dynamic class BoxPulley extends MovieClip { } }//package
Section 157
//busSound (busSound) package { import flash.media.*; public dynamic class busSound extends Sound { } }//package
Section 158
//chainsawSound (chainsawSound) package { import flash.media.*; public dynamic class chainsawSound extends Sound { } }//package
Section 159
//Circle (Circle) package { import flash.display.*; public dynamic class Circle extends MovieClip { } }//package
Section 160
//crashSound (crashSound) package { import flash.media.*; public dynamic class crashSound extends Sound { } }//package
Section 161
//Cursor (Cursor) package { import flash.display.*; public dynamic class Cursor extends MovieClip { } }//package
Section 162
//fartSound1 (fartSound1) package { import flash.media.*; public dynamic class fartSound1 extends Sound { } }//package
Section 163
//fartSound2 (fartSound2) package { import flash.media.*; public dynamic class fartSound2 extends Sound { } }//package
Section 164
//fartSound3 (fartSound3) package { import flash.media.*; public dynamic class fartSound3 extends Sound { } }//package
Section 165
//GotMedal (GotMedal) package { import flash.display.*; public dynamic class GotMedal extends MovieClip { } }//package
Section 166
//GotMedal2 (GotMedal2) package { import flash.display.*; public dynamic class GotMedal2 extends MovieClip { } }//package
Section 167
//Ground (Ground) package { import flash.display.*; public dynamic class Ground extends MovieClip { } }//package
Section 168
//gunSound (gunSound) package { import flash.media.*; public dynamic class gunSound extends Sound { } }//package
Section 169
//HUD (HUD) package { import flash.display.*; import flash.text.*; public dynamic class HUD extends MovieClip { public var moreBut:SimpleButton; public var distanceDisp:TextField; public var gunDisplay:MovieClip; public var bulletDisplay:TextField; public var muteBut:MovieClip; public var vDistanceDisp:TextField; public var jetpackBut:MovieClip; } }//package
Section 170
//jailSound (jailSound) package { import flash.media.*; public dynamic class jailSound extends Sound { } }//package
Section 171
//LauncherPlaceHolder (LauncherPlaceHolder) package { import flash.display.*; public dynamic class LauncherPlaceHolder extends MovieClip { } }//package
Section 172
//machinegunSound (machinegunSound) package { import flash.media.*; public dynamic class machinegunSound extends Sound { } }//package
Section 173
//MainClass (MainClass) package { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.chocorobokun.managers.*; import com.chocorobokun.VO.*; import flash.display.*; import flash.events.*; import flash.utils.*; import com.chocorobokun.gameData.*; import rl.dev.*; import flash.ui.*; import com.chocorobokun.preloader.*; import flash.net.*; import com.chocorobokun.particle.*; import com.chocorobokun.World.*; import com.chocorobokun.bullet.*; import com.chocorobokun.screen.*; public class MainClass extends MovieClip { public const MORE_GAMES_URL:String = "http://www.box10.com/action-adventure-games.html?utm_source=brandedgames&utm_medium=grandpalauncher"; public var airMarker:MovieClip; public var jumpDistance:Number;// = 0 public var gunID:int; public var cMenu:ContextMenu; public var isMute:Boolean; public var swfConsole:SWFConsole; public var vDistance:Number;// = 0 public var isRocket:Boolean; public var rocketFuel:Number;// = 100 public var preloaderMov:preloaderMain; public var ballGroundMod:Number;// = 100 public var jetpackID:int;// = 0 public var savedData:SharedObject; public var fireParticle:FireParticle; public var hud:MovieClip; public var jetpackData:Array; public var bullet:int; public var jetpackFuel:Number;// = 100 public var earning:int;// = 0 public var gunData:Array; public var splatShoot:MovieClip; public var newMedal:Boolean; public var timer:Timer; private var medalData:Array; public var onJetpack:Boolean; public var cursor:MovieClip; public var grandpaMain:MovieClip; public var loadedBytes:Number;// = 0 public var totalBytes:Number;// = 0 public var onRocket:Boolean; public var coba:cobaClass; public var gotMedal2:MovieClip; public var gotMedal:MovieClip; public var gameState:String; public var distance:Number;// = 0 static const KEY_POWER:Number = 5; static const SKY_LIMIT:Number = 3552.5; static const PIXEL_TO_METER:int = 30; public function MainClass(){ var _local1:ContextMenuItem; var _local2:Timer; var _local3:String; ballGroundMod = 100; rocketFuel = 100; jetpackFuel = 100; jetpackID = 0; distance = 0; vDistance = 0; jumpDistance = 0; earning = 0; fireParticle = new FireParticle(); splatShoot = new SplatShoot(); hud = new HUD(); cursor = new Cursor(); airMarker = new AirMarker(); gotMedal = new GotMedal(); gotMedal2 = new GotMedal2(); grandpaMain = new GrandpaBullet(); cMenu = new ContextMenu(); loadedBytes = 0; totalBytes = 0; super(); preloaderMov = new preloaderMain(this); addChild(preloaderMov); this.contextMenu = cMenu; cMenu.hideBuiltInItems(); _local1 = new ContextMenuItem("Play More Games By BOX10"); _local1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visitSite); cMenu.customItems.push(_local1); timer = new Timer(1); timer.addEventListener(TimerEvent.TIMER, mainLoop); timer.start(); _local2 = new Timer(1000); _local2.addEventListener(TimerEvent.TIMER, storeTime); _local2.start(); airMarker.visible = false; gameState = "MainMenu"; _local3 = "SharedObjectData42"; medalData = new MedalData().getMedalList(); gunData = new GunData().getGunData(); jetpackData = new JetpackData().getJetpackList(); savedData = SharedObject.getLocal(_local3); trace(_local3); initData(); } public function replayGame():void{ coba.setLauncher(); gameState = "Aiming"; distance = 0; newMedal = false; timer.start(); coba.resetWorld(); } public function onMute(_arg1:Event){ if (isMute){ SoundManager.getInstance().unmuteAllSounds(); SoundManager.getInstance().setSoundVolume("mainSound", 0.35); _arg1.currentTarget.gotoAndStop(1); isMute = false; } else { SoundManager.getInstance().muteAllSounds(); _arg1.currentTarget.gotoAndStop(2); isMute = true; }; } public function storeStat(){ GameStatManager.getInstance().setDistanceCovered(distance); GameStatManager.getInstance().setLongestDistance(distance); GameStatManager.getInstance().setMoney(earning); } public function initData(){ trace(("Shared Object :" + savedData.data.hasData)); if (!savedData.data.Data){ initSharedObject(); trace("shared object created!!!"); trace(("medal dict :" + savedData.data.Data.medalArray[12].description)); getDataFromSO(); trace(("test get medal data from manager :" + GameStatManager.getInstance().getMedal(12).description)); } else { trace("shared object already present."); trace(("medal dict :" + savedData.data.Data.medalArray[12].description)); getDataFromSO(); trace(("test get medal data from manager :" + GameStatManager.getInstance().getMedal(12).description)); }; } public function storeDataToSo(){ savedData.data.Data = GameStatManager.getInstance().getStat(); } public function visitSite(_arg1:ContextMenuEvent){ gotoBox10(); } public function initSharedObject(){ var _local1:GameStatVO; var _local2:MedalVO; var _local3:*; _local1 = new GameStatVO(0, 0, 0, 0, "Pistol", ["Pistol"], "Catapult", 0, 0, [], ""); savedData.data.Data = _local1; for (_local3 in medalData) { if (_local3 > 0){ _local2 = new MedalVO(("medal" + _local3), false, medalData[_local3][2], medalData[_local3][3], medalData[_local3][4], medalData[_local3][5]); savedData.data.Data.medalArray[_local3] = _local2; }; }; trace(("Medal Data:" + medalData.length)); trace("SO INITIATED!!!"); } public function storeTime(_arg1:Event){ GameStatManager.getInstance().setTimePlayed(1); } public function showNewMedal(){ trace("SHOW NEW MEDAL"); } public function setJetpack(){ if (GameStatManager.getInstance().getStat().jetpack == ""){ jetpackFuel = 0; hud.jetpackBut.alpha = 0.2; hud.jetpackBut.gotoAndStop(1); } else { hud.jetpackBut.alpha = 1; switch (GameStatManager.getInstance().getStat().jetpack){ case "JetPack": trace(("the JP is:" + GameStatManager.getInstance().getStat().jetpack)); jetpackFuel = jetpackData[1][2]; hud.jetpackBut.gotoAndStop(GameStatManager.getInstance().getStat().jetpack); jetpackID = 1; break; case "RocketPack": trace(("the JP is:" + GameStatManager.getInstance().getStat().jetpack)); jetpackID = 2; jetpackFuel = jetpackData[2][2]; hud.jetpackBut.gotoAndStop(GameStatManager.getInstance().getStat().jetpack); break; case "NukePack": trace(("the JP is:" + GameStatManager.getInstance().getStat().jetpack)); jetpackID = 3; jetpackFuel = jetpackData[3][2]; hud.jetpackBut.gotoAndStop(GameStatManager.getInstance().getStat().jetpack); break; }; }; } public function gameStart(){ trace("GAME START!!!"); loadSound(); coba = new cobaClass(); addChild(coba); trace(((("WIDTH :" + coba.width) + " HEIGHT :") + coba.height)); addChild(airMarker); airMarker.y = 22; airMarker.visible = false; gotMedal.x = 595; gotMedal.y = 45; gotMedal2.x = 305.9; gotMedal2.y = 224.3; addChild(gotMedal); addChild(gotMedal2); gotMedal.stop(); gotMedal2.stop(); addChild(hud); hud.gunDisplay.stop(); hud.jetpackBut.addEventListener(MouseEvent.CLICK, activateJetpack); hud.moreBut.addEventListener(MouseEvent.CLICK, onMore); hud.muteBut.addEventListener(MouseEvent.CLICK, onMute); hud.muteBut.stop(); setGun(); addChild(grandpaMain); addChild(fireParticle); addChild(splatShoot); grandpaMain.visible = false; splatShoot.x = 240; splatShoot.visible = false; setJetpack(); trace(("Medal Data:" + medalData.length)); ScreenManager.getInstance().init(this, this); ScreenManager.getInstance().addScreen(new SplashScreen(), "splashScreen"); ScreenManager.getInstance().addScreen(new InstructionScreen(), "instructionScreen"); ScreenManager.getInstance().addScreen(new StatScreen(), "statScreen"); ScreenManager.getInstance().addScreen(new ShopScreen(), "shopScreen"); ScreenManager.getInstance().changeToScreen("splashScreen", false); SoundManager.getInstance().playSound("mainSound", 1, 0, 999); SoundManager.getInstance().setSoundVolume("mainSound", 0.35); this.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); cursor.stop(); CursorManager.init(stage); } public function clearData(){ trace("DATA CLEARED"); initSharedObject(); getDataFromSO(); setGun(); setJetpack(); coba.setLauncher(); } public function gotoBox10(){ var _local1:URLRequest; _local1 = new URLRequest(MORE_GAMES_URL); navigateToURL(_local1, "_blank"); } public function setGun(){ trace("SET GUN"); switch (GameStatManager.getInstance().getStat().currentGun){ case "Pistol": trace("SET PISTOL"); hud.gunDisplay.gotoAndStop(gunData[1][0]); bullet = gunData[1][2]; gunID = 1; break; case "Uzi": trace(("gun display set to:" + gunData[2][0])); hud.gunDisplay.gotoAndStop(gunData[2][0]); bullet = gunData[2][2]; gunID = 2; break; case "Shotgun": hud.gunDisplay.gotoAndStop(gunData[3][0]); bullet = gunData[3][2]; gunID = 3; break; case "Rifle": hud.gunDisplay.gotoAndStop(gunData[4][0]); bullet = gunData[4][2]; gunID = 4; break; case "MachineGun": hud.gunDisplay.gotoAndStop(gunData[5][0]); bullet = gunData[5][2]; gunID = 5; break; }; if (GameStatManager.getInstance().getMedal(21).isAchieved){ bullet = (bullet + 1); }; if (GameStatManager.getInstance().getMedal(22).isAchieved){ bullet = (bullet + 1); }; } private function keyDown(_arg1:KeyboardEvent){ if (gameState == "Launched"){ switch (_arg1.keyCode){ case String("A").charCodeAt(): if (coba.ballChar.GetLinearVelocity().x > 1){ coba.ballChar.ApplyForce(new b2Vec2(-(KEY_POWER), 0), coba.ballChar.GetWorldCenter()); }; break; case String("D").charCodeAt(): if (coba.ballChar.GetLinearVelocity().x < 5){ coba.ballChar.ApplyForce(new b2Vec2(KEY_POWER, 0), coba.ballChar.GetWorldCenter()); }; break; case String("S").charCodeAt(): coba.ballChar.ApplyForce(new b2Vec2(0, KEY_POWER), coba.ballChar.GetWorldCenter()); break; case String("W").charCodeAt(): coba.ballChar.ApplyForce(new b2Vec2(0, (-(KEY_POWER) / 4)), coba.ballChar.GetWorldCenter()); break; case String("M").charCodeAt(): if (isMute){ SoundManager.getInstance().unmuteAllSounds(); SoundManager.getInstance().setSoundVolume("mainSound", 0.35); hud.muteBut.gotoAndStop(1); isMute = false; } else { SoundManager.getInstance().muteAllSounds(); hud.muteBut.gotoAndStop(2); isMute = true; }; break; }; }; } public function activateRocket(_arg1:Boolean=true){ trace("ACTIVATE ROCKET"); isRocket = _arg1; if (onJetpack){ jetpackFuel = 0; onJetpack = false; }; coba.ballChar.SetLinearVelocity(new b2Vec2(coba.ballChar.GetLinearVelocity().x, 0)); if (_arg1){ coba.ballChar.m_userData.gotoAndStop(8); grandpaMain.gotoAndStop(8); } else { coba.ballChar.m_userData.gotoAndStop(9); grandpaMain.gotoAndStop(9); }; coba.ballChar.SetXForm(coba.ballChar.GetPosition(), 0); onRocket = true; } public function loadSound(){ SoundManager.getInstance().addLibrarySound(bounceSound, "bounceSound"); SoundManager.getInstance().addLibrarySound(jailSound, "jailSound"); SoundManager.getInstance().addLibrarySound(ufoSound, "ufoSound"); SoundManager.getInstance().addLibrarySound(chainsawSound, "chainsawSound"); SoundManager.getInstance().addLibrarySound(machinegunSound, "machinegunSound"); SoundManager.getInstance().addLibrarySound(satelliteSound, "satelliteSound"); SoundManager.getInstance().addLibrarySound(trashcanSound, "trashcanSound"); SoundManager.getInstance().addLibrarySound(rocketSound, "rocketSound"); SoundManager.getInstance().addLibrarySound(birdSound, "birdSound"); SoundManager.getInstance().addLibrarySound(teethSound, "teethSound"); SoundManager.getInstance().addLibrarySound(bombSound, "bombSound"); SoundManager.getInstance().addLibrarySound(splatSound, "splatSound"); SoundManager.getInstance().addLibrarySound(fartSound1, "fartSound1"); SoundManager.getInstance().addLibrarySound(fartSound2, "fartSound2"); SoundManager.getInstance().addLibrarySound(fartSound3, "fartSound3"); SoundManager.getInstance().addLibrarySound(crashSound, "crashSound"); SoundManager.getInstance().addLibrarySound(mainSound, "mainSound"); SoundManager.getInstance().addLibrarySound(slipperSound, "slipperSound"); SoundManager.getInstance().addLibrarySound(gunSound, "gunSound"); SoundManager.getInstance().addLibrarySound(busSound, "busSound"); SoundManager.getInstance().addLibrarySound(swagbagSound, "swagbagSound"); } public function getDataFromSO(){ GameStatManager.getInstance().statInit(savedData.data.Data.distanceCovered, savedData.data.Data.longestDistance, savedData.data.Data.highestFly, savedData.data.Data.money, savedData.data.Data.currentGun, savedData.data.Data.gunArray, savedData.data.Data.launcher, savedData.data.Data.deaths, savedData.data.Data.timePlayed, savedData.data.Data.medalArray, this, savedData.data.Data.jetpack); } public function onMore(_arg1:Event){ gotoBox10(); } public function activateJetpack(_arg1:Event){ if (gameState == "Launched"){ trace("JETPACK!!!!"); if (((!(onJetpack)) && ((jetpackFuel > 0)))){ rocketFuel = 0; onRocket = false; coba.ballChar.SetLinearVelocity(new b2Vec2(coba.ballChar.GetLinearVelocity().x, 0)); coba.ballChar.m_userData.gotoAndStop((jetpackID + 4)); grandpaMain.gotoAndStop((jetpackID + 4)); coba.ballChar.SetXForm(coba.ballChar.GetPosition(), 0); onJetpack = true; _arg1.currentTarget.alpha = 0.2; SoundManager.getInstance().playSound("rocketSound"); }; }; } public function showGotMedal(){ trace("SHOW GOT MEDAL"); newMedal = true; gotMedal.gotoAndPlay(2); } public function mainLoop(_arg1:Event){ loadedBytes = stage.loaderInfo.bytesLoaded; totalBytes = stage.loaderInfo.bytesTotal; if (coba){ switch (gameState){ case "Aiming": coba.x = 0; coba.y = 0; CursorManager.removeCursor(); SoundManager.getInstance().setSoundVolume("mainSound", 0.35); break; case "Launched": splatShoot.y = mouseY; splatShoot.x = mouseX; fireParticle.x = (stage.stageWidth / 2); grandpaMain.x = (stage.stageWidth / 2); grandpaMain.rotation = coba.ballChar.m_userData.rotation; coba.ballChar.m_userData.visible = false; Mouse.hide(); coba.x = (((coba.ballChar.GetPosition().x * coba.PIXEL_TO_METER) * -1) + (stage.stageWidth / 2)); if (((((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) < 235)) && (((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) > -(SKY_LIMIT))))){ coba.y = (((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) * -1) + (stage.stageHeight / 2)); fireParticle.y = (stage.stageHeight / 2); grandpaMain.y = (stage.stageHeight / 2); } else { if ((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) >= 235){ fireParticle.y = (coba.ballChar.GetPosition().y * PIXEL_TO_METER); grandpaMain.y = (coba.ballChar.GetPosition().y * PIXEL_TO_METER); } else { if ((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) <= -(SKY_LIMIT)){ fireParticle.y = (((coba.ballChar.GetPosition().y * PIXEL_TO_METER) + SKY_LIMIT) + (stage.stageHeight / 2)); grandpaMain.y = (((coba.ballChar.GetPosition().y * PIXEL_TO_METER) + SKY_LIMIT) + (stage.stageHeight / 2)); }; }; }; if ((coba.ballChar.GetPosition().y * coba.PIXEL_TO_METER) < (-(SKY_LIMIT) - 310)){ airMarker.visible = true; airMarker.distanceDisp.text = String((vDistance - 500)); airMarker.x = (stage.stageWidth / 2); } else { airMarker.visible = false; }; SoundManager.getInstance().setSoundVolume("mainSound", 0.35); break; case "Stopped": grandpaMain.visible = false; gotMedal.gotoAndStop(1); if (newMedal){ gotMedal2.gotoAndPlay(2); }; timer.stop(); storeStat(); storeDataToSo(); trace(("Total Distance :" + GameStatManager.getInstance().getStat().distanceCovered)); trace(("Longest Distance :" + GameStatManager.getInstance().getStat().longestDistance)); ScreenManager.getInstance().changeToScreen("statScreen", false, 320, 240); CursorManager.removeCursor(); SoundManager.getInstance().setSoundVolume("mainSound", 0.35); break; }; }; if (isMute){ SoundManager.getInstance().muteAllSounds(); }; if (gotMedal.currentFrame == 1){ gotMedal.stop(); }; if (gotMedal2.currentFrame == 1){ gotMedal2.stop(); }; addChild(airMarker); addChild(gotMedal); addChild(gotMedal2); hud.bulletDisplay.text = String(bullet); } } }//package
Section 174
//mainSound (mainSound) package { import flash.media.*; public dynamic class mainSound extends Sound { } }//package
Section 175
//Meter (Meter) package { import flash.display.*; public dynamic class Meter extends MovieClip { public var meterDisplay:MovieClip; } }//package
Section 176
//rocketSound (rocketSound) package { import flash.media.*; public dynamic class rocketSound extends Sound { } }//package
Section 177
//satelliteSound (satelliteSound) package { import flash.media.*; public dynamic class satelliteSound extends Sound { } }//package
Section 178
//SimpleDebuger (SimpleDebuger) package { import flash.display.*; import flash.text.*; public dynamic class SimpleDebuger extends MovieClip { public var debugerDisp:TextField; } }//package
Section 179
//skies (skies) package { import flash.display.*; public dynamic class skies extends MovieClip { } }//package
Section 180
//slipperSound (slipperSound) package { import flash.media.*; public dynamic class slipperSound extends Sound { } }//package
Section 181
//SplatShoot (SplatShoot) package { import flash.display.*; public dynamic class SplatShoot extends MovieClip { } }//package
Section 182
//splatSound (splatSound) package { import flash.media.*; public dynamic class splatSound extends Sound { } }//package
Section 183
//swagbagSound (swagbagSound) package { import flash.media.*; public dynamic class swagbagSound extends Sound { } }//package
Section 184
//teethSound (teethSound) package { import flash.media.*; public dynamic class teethSound extends Sound { } }//package
Section 185
//trashcanSound (trashcanSound) package { import flash.media.*; public dynamic class trashcanSound extends Sound { } }//package
Section 186
//ufoSound (ufoSound) package { import flash.media.*; public dynamic class ufoSound extends Sound { } }//package

Library Items

Symbol 1 Sound {ufoSound}
Symbol 2 Sound {teethSound}
Symbol 3 Sound {splatSound}
Symbol 4 Sound {mainSound}
Symbol 5 Sound {trashcanSound}
Symbol 6 Sound {rocketSound}
Symbol 7 Sound {busSound}
Symbol 8 Sound {satelliteSound}
Symbol 9 Sound {machinegunSound}
Symbol 10 Sound {jailSound}
Symbol 11 Sound {bombSound}
Symbol 12 Sound {fartSound3}
Symbol 13 Sound {fartSound2}
Symbol 14 Sound {fartSound1}
Symbol 15 Sound {gunSound}
Symbol 16 Sound {slipperSound}
Symbol 17 Sound {chainsawSound}
Symbol 18 Sound {bounceSound}
Symbol 19 Sound {birdSound}
Symbol 20 Sound {crashSound}
Symbol 21 Sound {swagbagSound}
Symbol 22 BitmapUsed by:23
Symbol 23 GraphicUses:22Used by:24
Symbol 24 ButtonUses:23Used by:96
Symbol 25 GraphicUsed by:69 70
Symbol 26 GraphicUsed by:28
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClip {Launcher_fla.buttonAnim_232}Uses:26 27Used by:70
Symbol 29 GraphicUsed by:58
Symbol 30 GraphicUsed by:31 699 714
Symbol 31 MovieClipUses:30Used by:58 63 77
Symbol 32 GraphicUsed by:58 77 712 714
Symbol 33 GraphicUsed by:34 700 714
Symbol 34 MovieClipUses:33Used by:58 63 77
Symbol 35 GraphicUsed by:36 701 714
Symbol 36 MovieClipUses:35Used by:58 63 77
Symbol 37 GraphicUsed by:38 702 714
Symbol 38 MovieClipUses:37Used by:58 63 77
Symbol 39 FontUsed by:40 41 42 43 44 45 46 47 48 62
Symbol 40 TextUses:39Used by:58 63 89 713 714
Symbol 41 TextUses:39Used by:58 63 89 713 714
Symbol 42 TextUses:39Used by:58 63 89 713 714
Symbol 43 TextUses:39Used by:58 63 89 713 714
Symbol 44 TextUses:39Used by:58 63 89 713 714
Symbol 45 TextUses:39Used by:58 63 89 713 714
Symbol 46 TextUses:39Used by:58 63 89 713 714
Symbol 47 TextUses:39Used by:58 63 89 713 714
Symbol 48 TextUses:39Used by:58 94 714
Symbol 49 GraphicUsed by:50 51 52 53 54 55 56 57 704 705 706 707 708 709 710 711 714
Symbol 50 MovieClipUses:49Used by:58 63 77
Symbol 51 MovieClipUses:49Used by:58 63 77
Symbol 52 MovieClipUses:49Used by:58 63 77
Symbol 53 MovieClipUses:49Used by:58 63 77
Symbol 54 MovieClipUses:49Used by:58 63 77
Symbol 55 MovieClipUses:49Used by:58 63 77
Symbol 56 MovieClipUses:49Used by:58 63 77
Symbol 57 MovieClipUses:49Used by:58 63 77
Symbol 58 MovieClip {Launcher_fla.Timeline_233}Uses:29 31 32 34 36 38 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57Used by:70
Symbol 59 GraphicUsed by:63
Symbol 60 GraphicUsed by:63
Symbol 61 GraphicUsed by:63
Symbol 62 TextUses:39Used by:63
Symbol 63 MovieClip {Launcher_fla.Timeline_246}Uses:59 60 31 61 34 36 38 40 41 42 43 44 45 46 47 62 50 51 52 53 54 55 56 57Used by:70
Symbol 64 FontUsed by:65 66 67
Symbol 65 TextUses:64Used by:68
Symbol 66 TextUses:64Used by:68
Symbol 67 TextUses:64Used by:68
Symbol 68 MovieClipUses:65 66 67Used by:70
Symbol 69 ButtonUses:25Used by:70
Symbol 70 MovieClip {Launcher_fla.Timeline_231}Uses:25 28 58 63 68 69Used by:75
Symbol 71 FontUsed by:72
Symbol 72 TextUses:71Used by:74
Symbol 73 GraphicUsed by:74
Symbol 74 ButtonUses:72 73Used by:75
Symbol 75 MovieClip {Launcher_fla.Timeline_230}Uses:70 74Used by:96
Symbol 76 GraphicUsed by:94
Symbol 77 MovieClipUses:31 32 34 36 38 50 51 52 53 54 55 56 57Used by:94
Symbol 78 SoundUsed by:94
Symbol 79 GraphicUsed by:94
Symbol 80 GraphicUsed by:94
Symbol 81 GraphicUsed by:94
Symbol 82 GraphicUsed by:94
Symbol 83 GraphicUsed by:94
Symbol 84 GraphicUsed by:94
Symbol 85 GraphicUsed by:94
Symbol 86 GraphicUsed by:94
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClipUses:87Used by:94
Symbol 89 MovieClipUses:40 41 42 43 44 45 46 47Used by:94
Symbol 90 GraphicUsed by:92 714
Symbol 91 GraphicUsed by:92
Symbol 92 ButtonUses:90 91Used by:94
Symbol 93 SoundUsed by:94
Symbol 94 MovieClip {Launcher_fla.Timeline_251}Uses:76 77 78 79 80 81 82 83 84 85 86 88 48 89 92 93Used by:95
Symbol 95 MovieClip {Launcher_fla.Timeline_250}Uses:94Used by:96
Symbol 96 MovieClip {com.chocorobokun.preloader.preloaderMain}Uses:24 75 95
Symbol 97 GraphicUsed by:98
Symbol 98 MovieClipUses:97Used by:99
Symbol 99 MovieClip {GotMedal2}Uses:98
Symbol 100 GraphicUsed by:101
Symbol 101 MovieClipUses:100Used by:117
Symbol 102 GraphicUsed by:117
Symbol 103 GraphicUsed by:113
Symbol 104 GraphicUsed by:105
Symbol 105 MovieClipUses:104Used by:113
Symbol 106 GraphicUsed by:107
Symbol 107 MovieClipUses:106Used by:113
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClipUses:108Used by:113
Symbol 110 GraphicUsed by:111
Symbol 111 MovieClipUses:110Used by:113
Symbol 112 GraphicUsed by:113 127
Symbol 113 MovieClipUses:103 105 107 109 111 112Used by:117
Symbol 114 GraphicUsed by:115
Symbol 115 MovieClipUses:114Used by:116
Symbol 116 MovieClip {Launcher_fla.drip_224}Uses:115Used by:117
Symbol 117 MovieClip {com.chocorobokun.hitObjects.ChainedBolasObject}Uses:101 102 113 116
Symbol 118 GraphicUsed by:127
Symbol 119 GraphicUsed by:120
Symbol 120 MovieClipUses:119Used by:127 574 585
Symbol 121 GraphicUsed by:122
Symbol 122 MovieClipUses:121Used by:127 574 585
Symbol 123 GraphicUsed by:124
Symbol 124 MovieClipUses:123Used by:127 574 585
Symbol 125 GraphicUsed by:126
Symbol 126 MovieClipUses:125Used by:127 574 585
Symbol 127 MovieClip {com.chocorobokun.hitObjects.BolasObject}Uses:118 120 122 124 126 112
Symbol 128 GraphicUsed by:197
Symbol 129 GraphicUsed by:197
Symbol 130 GraphicUsed by:197
Symbol 131 GraphicUsed by:197
Symbol 132 GraphicUsed by:197
Symbol 133 GraphicUsed by:197
Symbol 134 GraphicUsed by:197
Symbol 135 GraphicUsed by:197
Symbol 136 GraphicUsed by:197
Symbol 137 GraphicUsed by:197
Symbol 138 GraphicUsed by:197
Symbol 139 GraphicUsed by:197
Symbol 140 GraphicUsed by:197
Symbol 141 GraphicUsed by:197
Symbol 142 GraphicUsed by:197
Symbol 143 GraphicUsed by:197
Symbol 144 GraphicUsed by:197
Symbol 145 GraphicUsed by:197
Symbol 146 GraphicUsed by:197
Symbol 147 GraphicUsed by:197
Symbol 148 GraphicUsed by:197
Symbol 149 GraphicUsed by:197
Symbol 150 GraphicUsed by:197
Symbol 151 GraphicUsed by:197
Symbol 152 GraphicUsed by:197
Symbol 153 GraphicUsed by:197
Symbol 154 GraphicUsed by:197
Symbol 155 GraphicUsed by:197
Symbol 156 GraphicUsed by:197
Symbol 157 GraphicUsed by:197
Symbol 158 GraphicUsed by:197
Symbol 159 GraphicUsed by:160
Symbol 160 MovieClipUses:159Used by:197
Symbol 161 GraphicUsed by:197
Symbol 162 GraphicUsed by:197
Symbol 163 GraphicUsed by:197
Symbol 164 GraphicUsed by:197
Symbol 165 GraphicUsed by:197
Symbol 166 GraphicUsed by:197
Symbol 167 GraphicUsed by:197
Symbol 168 GraphicUsed by:197
Symbol 169 GraphicUsed by:197
Symbol 170 GraphicUsed by:197
Symbol 171 GraphicUsed by:197
Symbol 172 GraphicUsed by:197
Symbol 173 GraphicUsed by:197
Symbol 174 GraphicUsed by:197
Symbol 175 GraphicUsed by:197
Symbol 176 GraphicUsed by:197
Symbol 177 GraphicUsed by:197
Symbol 178 GraphicUsed by:197
Symbol 179 GraphicUsed by:197
Symbol 180 GraphicUsed by:197
Symbol 181 GraphicUsed by:197
Symbol 182 GraphicUsed by:197
Symbol 183 GraphicUsed by:197
Symbol 184 GraphicUsed by:197
Symbol 185 GraphicUsed by:197
Symbol 186 GraphicUsed by:197
Symbol 187 GraphicUsed by:197
Symbol 188 GraphicUsed by:197
Symbol 189 GraphicUsed by:197
Symbol 190 GraphicUsed by:197
Symbol 191 GraphicUsed by:197
Symbol 192 GraphicUsed by:197
Symbol 193 GraphicUsed by:197
Symbol 194 GraphicUsed by:197
Symbol 195 GraphicUsed by:197
Symbol 196 GraphicUsed by:197
Symbol 197 MovieClip {com.chocorobokun.hitObjects.LogObject}Uses:128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
Symbol 198 GraphicUsed by:199
Symbol 199 MovieClipUses:198Used by:202
Symbol 200 GraphicUsed by:201
Symbol 201 MovieClipUses:200Used by:202
Symbol 202 MovieClip {com.chocorobokun.hitObjects.SandalObject}Uses:199 201
Symbol 203 GraphicUsed by:207
Symbol 204 GraphicUsed by:207
Symbol 205 GraphicUsed by:207
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClip {com.chocorobokun.particle.FireParticle}Uses:203 204 205 206
Symbol 208 GraphicUsed by:218
Symbol 209 GraphicUsed by:218
Symbol 210 GraphicUsed by:218
Symbol 211 GraphicUsed by:218
Symbol 212 GraphicUsed by:218
Symbol 213 GraphicUsed by:218
Symbol 214 GraphicUsed by:218
Symbol 215 GraphicUsed by:218
Symbol 216 GraphicUsed by:218
Symbol 217 GraphicUsed by:218
Symbol 218 MovieClipUses:208 209 210 211 212 213 214 215 216 217Used by:232
Symbol 219 GraphicUsed by:225
Symbol 220 GraphicUsed by:225
Symbol 221 GraphicUsed by:225
Symbol 222 GraphicUsed by:225
Symbol 223 GraphicUsed by:225
Symbol 224 GraphicUsed by:225
Symbol 225 MovieClipUses:219 220 221 222 223 224Used by:232
Symbol 226 GraphicUsed by:231
Symbol 227 GraphicUsed by:231
Symbol 228 GraphicUsed by:231
Symbol 229 GraphicUsed by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClipUses:226 227 228 229 230Used by:232
Symbol 232 MovieClip {SplatShoot}Uses:218 225 231
Symbol 233 BitmapUsed by:234
Symbol 234 GraphicUses:233Used by:235
Symbol 235 MovieClip {Cursor}Uses:234
Symbol 236 GraphicUsed by:237
Symbol 237 MovieClipUses:236Used by:238
Symbol 238 MovieClipUses:237Used by:241
Symbol 239 FontUsed by:240 255 256 263 264 271 272 333 334 335 678 693 694 695 696 697 698
Symbol 240 EditableTextUses:239Used by:241
Symbol 241 MovieClip {AirMarker}Uses:238 240
Symbol 242 GraphicUsed by:317
Symbol 243 GraphicUsed by:246 250 731 732 733
Symbol 244 GraphicUsed by:246 250 732 733
Symbol 245 GraphicUsed by:246 250 732 733
Symbol 246 ButtonUses:243 244 245Used by:317
Symbol 247 GraphicUsed by:249 315 331
Symbol 248 GraphicUsed by:249 315 331
Symbol 249 ButtonUses:247 248Used by:261 269 279 312 317 337 748
Symbol 250 ButtonUses:243 244 245Used by:317
Symbol 251 GraphicUsed by:317
Symbol 252 GraphicUsed by:317
Symbol 253 GraphicUsed by:261 269 279
Symbol 254 GraphicUsed by:261
Symbol 255 EditableTextUses:239Used by:261
Symbol 256 EditableTextUses:239Used by:261
Symbol 257 GraphicUsed by:261
Symbol 258 GraphicUsed by:261
Symbol 259 GraphicUsed by:261
Symbol 260 GraphicUsed by:261
Symbol 261 MovieClip {Launcher_fla.Symbol2_190}Uses:253 249 254 255 256 257 258 259 260Used by:302
Symbol 262 GraphicUsed by:269
Symbol 263 EditableTextUses:239Used by:269
Symbol 264 EditableTextUses:239Used by:269
Symbol 265 GraphicUsed by:269
Symbol 266 GraphicUsed by:269
Symbol 267 GraphicUsed by:269
Symbol 268 GraphicUsed by:269
Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191}Uses:253 249 262 263 264 265 266 267 268Used by:302
Symbol 270 GraphicUsed by:279
Symbol 271 EditableTextUses:239Used by:279
Symbol 272 EditableTextUses:239Used by:279
Symbol 273 GraphicUsed by:274
Symbol 274 MovieClipUses:273Used by:279 722
Symbol 275 GraphicUsed by:276
Symbol 276 MovieClipUses:275Used by:279 722
Symbol 277 GraphicUsed by:278
Symbol 278 MovieClipUses:277Used by:279 722
Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192}Uses:253 249 270 271 272 274 276 278Used by:302
Symbol 280 FontUsed by:281
Symbol 281 TextUses:280Used by:282
Symbol 282 MovieClipUses:281Used by:302
Symbol 283 GraphicUsed by:297
Symbol 284 FontUsed by:285
Symbol 285 EditableTextUses:284Used by:297
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClipUses:286Used by:297
Symbol 288 GraphicUsed by:289 291
Symbol 289 MovieClipUses:288Used by:291 685
Symbol 290 GraphicUsed by:291
Symbol 291 ButtonUses:289 290 288Used by:297
Symbol 292 FontUsed by:293 294 295 296
Symbol 293 EditableTextUses:292Used by:297
Symbol 294 EditableTextUses:292Used by:297
Symbol 295 EditableTextUses:292Used by:297
Symbol 296 EditableTextUses:292Used by:297
Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194}Uses:283 285 287 291 293 294 295 296Used by:302
Symbol 298 GraphicUsed by:301
Symbol 299 GraphicUsed by:301
Symbol 300 GraphicUsed by:301
Symbol 301 ButtonUses:298 299 300Used by:302
Symbol 302 MovieClip {Launcher_fla.Symbol1_189}Uses:261 269 279 282 297 301Used by:317
Symbol 303 GraphicUsed by:305
Symbol 304 GraphicUsed by:305
Symbol 305 ButtonUses:303 304Used by:312
Symbol 306 GraphicUsed by:312
Symbol 307 FontUsed by:308 324 325 736 737 738 739 742 744
Symbol 308 EditableTextUses:307Used by:309
Symbol 309 MovieClip {Launcher_fla.descDisplay_200}Uses:308Used by:312
Symbol 310 GraphicUsed by:311
Symbol 311 MovieClipUses:310Used by:312
Symbol 312 MovieClip {Launcher_fla.Symbol6_198}Uses:305 249 306 309 311Used by:317
Symbol 313 GraphicUsed by:317
Symbol 314 GraphicUsed by:317
Symbol 315 ButtonUses:247 248Used by:317 748
Symbol 316 GraphicUsed by:317
Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen}Uses:242 246 249 250 251 252 302 312 313 314 315 316
Symbol 318 GraphicUsed by:328
Symbol 319 GraphicUsed by:320 321 322
Symbol 320 MovieClipUses:319Used by:321 322
Symbol 321 ButtonUses:320 319Used by:328
Symbol 322 ButtonUses:320 319Used by:328
Symbol 323 GraphicUsed by:328
Symbol 324 TextUses:307Used by:327
Symbol 325 TextUses:307Used by:327
Symbol 326 GraphicUsed by:327
Symbol 327 ButtonUses:324 325 326Used by:328
Symbol 328 MovieClip {com.chocorobokun.screen.SplashScreen}Uses:318 321 322 323 327
Symbol 329 GraphicUsed by:330
Symbol 330 MovieClipUses:329Used by:338
Symbol 331 ButtonUses:247 248Used by:337
Symbol 332 GraphicUsed by:337
Symbol 333 EditableTextUses:239Used by:337
Symbol 334 EditableTextUses:239Used by:337
Symbol 335 EditableTextUses:239Used by:337
Symbol 336 GraphicUsed by:337
Symbol 337 MovieClip {Launcher_fla.StopDisplay_179}Uses:331 332 333 334 335 249 336Used by:338
Symbol 338 MovieClip {com.chocorobokun.screen.StatScreen}Uses:330 337
Symbol 339 GraphicUsed by:349 748
Symbol 340 GraphicUsed by:349
Symbol 341 GraphicUsed by:349
Symbol 342 GraphicUsed by:349
Symbol 343 GraphicUsed by:349
Symbol 344 GraphicUsed by:349
Symbol 345 GraphicUsed by:349
Symbol 346 GraphicUsed by:349
Symbol 347 GraphicUsed by:349
Symbol 348 GraphicUsed by:349
Symbol 349 MovieClipUses:339 340 341 342 343 344 345 346 347 348Used by:350
Symbol 350 MovieClip {Meter}Uses:349
Symbol 351 GraphicUsed by:352
Symbol 352 MovieClip {com.chocorobokun.hitObjects.SwagBagObject}Uses:351
Symbol 353 GraphicUsed by:354
Symbol 354 MovieClipUses:353Used by:369
Symbol 355 GraphicUsed by:356
Symbol 356 MovieClipUses:355Used by:369
Symbol 357 GraphicUsed by:358
Symbol 358 MovieClipUses:357Used by:369
Symbol 359 GraphicUsed by:360
Symbol 360 MovieClipUses:359Used by:369
Symbol 361 GraphicUsed by:362
Symbol 362 MovieClipUses:361Used by:369
Symbol 363 GraphicUsed by:364
Symbol 364 MovieClipUses:363Used by:369
Symbol 365 GraphicUsed by:366
Symbol 366 MovieClipUses:365Used by:369
Symbol 367 GraphicUsed by:368
Symbol 368 MovieClipUses:367Used by:369
Symbol 369 MovieClip {com.chocorobokun.hitObjects.PolicemanObject}Uses:354 356 358 360 362 364 366 368
Symbol 370 GraphicUsed by:371
Symbol 371 MovieClipUses:370Used by:389
Symbol 372 GraphicUsed by:373
Symbol 373 MovieClipUses:372Used by:389
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClipUses:374Used by:389
Symbol 376 GraphicUsed by:389
Symbol 377 GraphicUsed by:378
Symbol 378 MovieClipUses:377Used by:389
Symbol 379 GraphicUsed by:380
Symbol 380 MovieClipUses:379Used by:389
Symbol 381 GraphicUsed by:382
Symbol 382 MovieClipUses:381Used by:389
Symbol 383 GraphicUsed by:384
Symbol 384 MovieClipUses:383Used 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 {com.chocorobokun.hitObjects.ChainsawObject}Uses:371 373 375 376 378 380 382 384 385 386 387 388
Symbol 390 GraphicUsed by:402
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClipUses:391Used by:402
Symbol 393 GraphicUsed by:402
Symbol 394 GraphicUsed by:395
Symbol 395 MovieClipUses:394Used by:402
Symbol 396 GraphicUsed by:402
Symbol 397 GraphicUsed by:402
Symbol 398 GraphicUsed by:402
Symbol 399 GraphicUsed by:402
Symbol 400 GraphicUsed by:402
Symbol 401 GraphicUsed by:402
Symbol 402 MovieClip {com.chocorobokun.hitObjects.PengamenObject}Uses:390 392 393 395 396 397 398 399 400 401
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClipUses:403Used by:412
Symbol 405 GraphicUsed by:406
Symbol 406 MovieClipUses:405Used by:412
Symbol 407 GraphicUsed by:408
Symbol 408 MovieClipUses:407Used by:412
Symbol 409 GraphicUsed by:412
Symbol 410 GraphicUsed by:412
Symbol 411 GraphicUsed by:412
Symbol 412 MovieClip {com.chocorobokun.hitObjects.KidObject}Uses:404 406 408 409 410 411
Symbol 413 GraphicUsed by:414
Symbol 414 MovieClipUses:413Used by:428
Symbol 415 GraphicUsed by:428
Symbol 416 GraphicUsed by:417
Symbol 417 MovieClipUses:416Used by:424
Symbol 418 GraphicUsed by:419
Symbol 419 MovieClipUses:418Used by:424
Symbol 420 GraphicUsed by:421
Symbol 421 MovieClipUses:420Used by:424
Symbol 422 GraphicUsed by:423
Symbol 423 MovieClipUses:422Used by:424
Symbol 424 MovieClipUses:417 419 421 423Used by:426
Symbol 425 GraphicUsed by:426
Symbol 426 MovieClipUses:424 425Used by:428
Symbol 427 GraphicUsed by:428
Symbol 428 MovieClip {com.chocorobokun.hitObjects.HookObject}Uses:414 415 426 427
Symbol 429 GraphicUsed by:430
Symbol 430 MovieClipUses:429Used by:444
Symbol 431 GraphicUsed by:444
Symbol 432 GraphicUsed by:433
Symbol 433 MovieClipUses:432Used by:444
Symbol 434 GraphicUsed by:435
Symbol 435 MovieClipUses:434Used by:444
Symbol 436 GraphicUsed by:437
Symbol 437 MovieClipUses:436Used by:444
Symbol 438 GraphicUsed by:439
Symbol 439 MovieClipUses:438Used by:444
Symbol 440 GraphicUsed by:444
Symbol 441 GraphicUsed by:444
Symbol 442 GraphicUsed by:444
Symbol 443 GraphicUsed by:444
Symbol 444 MovieClip {com.chocorobokun.hitObjects.TrashcanObject}Uses:430 431 433 435 437 439 440 441 442 443
Symbol 445 GraphicUsed by:448
Symbol 446 GraphicUsed by:448
Symbol 447 GraphicUsed by:448
Symbol 448 MovieClipUses:445 446 447Used by:461
Symbol 449 GraphicUsed by:461
Symbol 450 GraphicUsed by:453
Symbol 451 GraphicUsed by:453
Symbol 452 GraphicUsed by:453
Symbol 453 MovieClipUses:450 451 452Used by:461
Symbol 454 GraphicUsed by:455
Symbol 455 MovieClipUses:454Used by:461
Symbol 456 GraphicUsed by:461
Symbol 457 GraphicUsed by:461
Symbol 458 GraphicUsed by:461
Symbol 459 GraphicUsed by:461
Symbol 460 GraphicUsed by:461
Symbol 461 MovieClip {com.chocorobokun.hitObjects.GunGuyObject}Uses:448 449 453 455 456 457 458 459 460
Symbol 462 GraphicUsed by:463
Symbol 463 MovieClipUses:462Used by:464
Symbol 464 MovieClip {com.chocorobokun.hitObjects.WashinglineObject}Uses:463
Symbol 465 GraphicUsed by:466
Symbol 466 MovieClipUses:465Used by:467
Symbol 467 MovieClip {com.chocorobokun.hitObjects.TireObject}Uses:466
Symbol 468 GraphicUsed by:469
Symbol 469 MovieClipUses:468Used by:474
Symbol 470 GraphicUsed by:471
Symbol 471 MovieClipUses:470Used by:474
Symbol 472 GraphicUsed by:473
Symbol 473 MovieClipUses:472Used by:474
Symbol 474 MovieClip {com.chocorobokun.hitObjects.BirdObject}Uses:469 471 473
Symbol 475 GraphicUsed by:488
Symbol 476 GraphicUsed by:487 508 642
Symbol 477 GraphicUsed by:487 508 642
Symbol 478 GraphicUsed by:487 508 642
Symbol 479 GraphicUsed by:487 508 642
Symbol 480 GraphicUsed by:487 508 642
Symbol 481 GraphicUsed by:487 508 642
Symbol 482 GraphicUsed by:487 508 642
Symbol 483 GraphicUsed by:487 508 642
Symbol 484 GraphicUsed by:487 508 642
Symbol 485 GraphicUsed by:487 508 642
Symbol 486 GraphicUsed by:487 508 642
Symbol 487 MovieClipUses:476 477 478 479 480 481 482 483 484 485 486Used by:488
Symbol 488 MovieClip {com.chocorobokun.hitObjects.BarrelObject}Uses:475 487
Symbol 489 GraphicUsed by:509
Symbol 490 GraphicUsed by:509 585
Symbol 491 GraphicUsed by:509
Symbol 492 GraphicUsed by:509
Symbol 493 GraphicUsed by:509
Symbol 494 GraphicUsed by:509
Symbol 495 GraphicUsed by:509
Symbol 496 GraphicUsed by:509
Symbol 497 GraphicUsed by:509
Symbol 498 GraphicUsed by:509
Symbol 499 GraphicUsed by:509
Symbol 500 GraphicUsed by:509
Symbol 501 GraphicUsed by:509
Symbol 502 GraphicUsed by:509
Symbol 503 GraphicUsed by:509
Symbol 504 GraphicUsed by:509
Symbol 505 GraphicUsed by:509
Symbol 506 GraphicUsed by:509
Symbol 507 GraphicUsed by:509
Symbol 508 MovieClipUses:476 477 478 479 480 481 482 483 484 485 486Used by:509 520 531
Symbol 509 MovieClip {com.chocorobokun.hitObjects.FireworksObject}Uses:489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
Symbol 510 GraphicUsed by:511
Symbol 511 MovieClipUses:510Used by:512
Symbol 512 MovieClip {com.chocorobokun.hitObjects.SatelliteObject}Uses:511
Symbol 513 GraphicUsed by:514
Symbol 514 MovieClipUses:513Used by:515
Symbol 515 MovieClip {com.chocorobokun.hitObjects.UFOObject}Uses:514
Symbol 516 GraphicUsed by:517
Symbol 517 MovieClipUses:516Used by:520
Symbol 518 GraphicUsed by:519
Symbol 519 MovieClipUses:518Used by:520
Symbol 520 MovieClip {com.chocorobokun.hitObjects.MissileObject}Uses:517 519 508
Symbol 521 GraphicUsed by:526
Symbol 522 ShapeTweeningUsed by:526
Symbol 523 GraphicUsed by:526
Symbol 524 ShapeTweeningUsed by:526
Symbol 525 GraphicUsed by:526
Symbol 526 MovieClip {com.chocorobokun.hitObjects.TrampolineObject}Uses:521 522 523 524 525
Symbol 527 GraphicUsed by:528
Symbol 528 MovieClipUses:527Used by:531
Symbol 529 GraphicUsed by:530
Symbol 530 MovieClipUses:529Used by:531
Symbol 531 MovieClip {com.chocorobokun.hitObjects.BusObject}Uses:528 530 508
Symbol 532 GraphicUsed by:533
Symbol 533 MovieClipUses:532Used by:536
Symbol 534 GraphicUsed by:535
Symbol 535 MovieClipUses:534Used by:536
Symbol 536 MovieClip {com.chocorobokun.hitObjects.TeethObject}Uses:533 535
Symbol 537 GraphicUsed by:538
Symbol 538 MovieClipUses:537Used by:586
Symbol 539 GraphicUsed by:540
Symbol 540 MovieClipUses:539Used by:586
Symbol 541 GraphicUsed by:542
Symbol 542 MovieClipUses:541Used by:586
Symbol 543 GraphicUsed by:544
Symbol 544 MovieClipUses:543Used by:586
Symbol 545 GraphicUsed by:586
Symbol 546 GraphicUsed by:586
Symbol 547 GraphicUsed by:586
Symbol 548 GraphicUsed by:586
Symbol 549 GraphicUsed by:550
Symbol 550 MovieClipUses:549Used by:561 565 568 748
Symbol 551 GraphicUsed by:552
Symbol 552 MovieClipUses:551Used by:561 565 568 748
Symbol 553 GraphicUsed by:554
Symbol 554 MovieClipUses:553Used by:561 565 568 748
Symbol 555 GraphicUsed by:556
Symbol 556 MovieClipUses:555Used by:561 565 568 748
Symbol 557 GraphicUsed by:560 748
Symbol 558 GraphicUsed by:559
Symbol 559 MovieClipUses:558Used by:560 564 567 748
Symbol 560 MovieClipUses:557 559Used by:561
Symbol 561 MovieClipUses:550 552 554 556 560Used by:586
Symbol 562 GraphicUsed by:564
Symbol 563 GraphicUsed by:564
Symbol 564 MovieClipUses:559 562 563Used by:565
Symbol 565 MovieClipUses:550 552 564 554 556Used by:586
Symbol 566 GraphicUsed by:567
Symbol 567 MovieClipUses:566 559Used by:568
Symbol 568 MovieClipUses:550 552 554 556 567Used by:586
Symbol 569 GraphicUsed by:570
Symbol 570 MovieClipUses:569Used by:573
Symbol 571 GraphicUsed by:572
Symbol 572 MovieClipUses:571Used by:573
Symbol 573 MovieClipUses:570 572Used by:574
Symbol 574 MovieClipUses:122 120 573 124 126Used by:586
Symbol 575 GraphicUsed by:585
Symbol 576 GraphicUsed by:585
Symbol 577 GraphicUsed by:585
Symbol 578 GraphicUsed by:585
Symbol 579 GraphicUsed by:585
Symbol 580 GraphicUsed by:585
Symbol 581 GraphicUsed by:585
Symbol 582 GraphicUsed by:585
Symbol 583 GraphicUsed by:585
Symbol 584 GraphicUsed by:585
Symbol 585 MovieClipUses:575 120 490 122 124 126 576 577 578 579 580 581 582 583 584Used by:586
Symbol 586 MovieClip {com.chocorobokun.bullet.GrandpaBullet}Uses:538 540 542 544 545 546 547 548 561 565 568 574 585
Symbol 587 GraphicUsed by:588 635 676
Symbol 588 MovieClip {BoxPulley}Uses:587
Symbol 589 GraphicUsed by:590
Symbol 590 MovieClip {LauncherPlaceHolder}Uses:589
Symbol 591 GraphicUsed by:592
Symbol 592 MovieClip {Ground}Uses:591
Symbol 593 GraphicUsed by:607
Symbol 594 GraphicUsed by:595
Symbol 595 MovieClipUses:594Used by:606
Symbol 596 GraphicUsed by:606
Symbol 597 GraphicUsed by:598
Symbol 598 MovieClipUses:597Used by:605
Symbol 599 GraphicUsed by:600
Symbol 600 MovieClipUses:599Used by:605
Symbol 601 GraphicUsed by:602
Symbol 602 MovieClipUses:601Used by:605
Symbol 603 GraphicUsed by:604
Symbol 604 MovieClipUses:603Used by:605
Symbol 605 MovieClipUses:598 600 602 604Used by:606 610 615 618 633 748
Symbol 606 MovieClip {Launcher_fla.PlasmaGun_80}Uses:595 596 605Used by:607
Symbol 607 MovieClip {com.chocorobokun.launcher.PlasmaLauncher}Uses:593 606Used by:680
Symbol 608 GraphicUsed by:609
Symbol 609 MovieClipUses:608Used by:610
Symbol 610 MovieClip {Launcher_fla.MissileGun_77}Uses:605 609Used by:612
Symbol 611 GraphicUsed by:612
Symbol 612 MovieClip {com.chocorobokun.launcher.MissileLauncher}Uses:610 611Used by:680
Symbol 613 GraphicUsed by:614
Symbol 614 MovieClipUses:613Used by:615 748
Symbol 615 MovieClip {Launcher_fla.cannon_75}Uses:605 614Used by:617
Symbol 616 GraphicUsed by:617 748
Symbol 617 MovieClip {com.chocorobokun.launcher.CannonLauncher}Uses:615 616Used by:680
Symbol 618 MovieClipUses:605Used by:627
Symbol 619 GraphicUsed by:627
Symbol 620 GraphicUsed by:621
Symbol 621 MovieClipUses:620Used by:627
Symbol 622 GraphicUsed by:623
Symbol 623 MovieClipUses:622Used by:627
Symbol 624 GraphicUsed by:625
Symbol 625 MovieClipUses:624Used by:627
Symbol 626 GraphicUsed by:627
Symbol 627 MovieClip {com.chocorobokun.launcher.TrebuchetLauncher}Uses:618 619 621 623 625 626Used by:680
Symbol 628 GraphicUsed by:634
Symbol 629 GraphicUsed by:630
Symbol 630 MovieClipUses:629Used by:633
Symbol 631 GraphicUsed by:632
Symbol 632 MovieClipUses:631Used by:633
Symbol 633 MovieClip {Launcher_fla.catapultRope_66}Uses:605 630 632Used by:634
Symbol 634 MovieClip {com.chocorobokun.launcher.CatapultLauncher}Uses:628 633Used by:680
Symbol 635 MovieClip {BoxManual}Uses:587Used by:680
Symbol 636 GraphicUsed by:637
Symbol 637 MovieClip {Box}Uses:636Used by:680
Symbol 638 GraphicUsed by:639
Symbol 639 MovieClip {Circle}Uses:638Used by:680
Symbol 640 GraphicUsed by:641
Symbol 641 MovieClipUses:640Used by:643
Symbol 642 MovieClipUses:476 477 478 479 480 481 482 483 484 485 486Used by:643
Symbol 643 MovieClip {com.chocorobokun.hitObjects.BombObject}Uses:641 642Used by:680
Symbol 644 GraphicUsed by:645
Symbol 645 MovieClipUses:644Used by:680
Symbol 646 GraphicUsed by:647
Symbol 647 MovieClipUses:646Used by:649 651
Symbol 648 GraphicUsed by:649
Symbol 649 MovieClipUses:647 648Used by:680
Symbol 650 GraphicUsed by:651
Symbol 651 MovieClipUses:650 647Used by:673
Symbol 652 BitmapUsed by:653
Symbol 653 GraphicUses:652Used by:673
Symbol 654 GraphicUsed by:673
Symbol 655 BitmapUsed by:656
Symbol 656 GraphicUses:655Used by:657
Symbol 657 MovieClipUses:656Used by:673
Symbol 658 BitmapUsed by:659
Symbol 659 GraphicUses:658Used by:673
Symbol 660 BitmapUsed by:661
Symbol 661 GraphicUses:660Used by:662
Symbol 662 MovieClipUses:661Used by:673
Symbol 663 BitmapUsed by:664
Symbol 664 GraphicUses:663Used by:673
Symbol 665 BitmapUsed by:666
Symbol 666 GraphicUses:665Used by:667
Symbol 667 MovieClipUses:666Used by:673
Symbol 668 BitmapUsed by:669
Symbol 669 GraphicUses:668Used by:673
Symbol 670 BitmapUsed by:671
Symbol 671 GraphicUses:670Used by:672
Symbol 672 MovieClipUses:671Used by:673
Symbol 673 MovieClipUses:651 653 654 657 659 662 664 667 669 672Used by:674
Symbol 674 MovieClip {BG}Uses:673Used by:680
Symbol 675 GraphicUsed by:680
Symbol 676 MovieClipUses:587Used by:680
Symbol 677 GraphicUsed by:679
Symbol 678 EditableTextUses:239Used by:679
Symbol 679 MovieClip {Launcher_fla.DistanceBoard_82}Uses:677 678Used by:680
Symbol 680 MovieClip {com.chocorobokun.World.cobaClass}Uses:645 649 674 643 639 675 637 635 676 634 627 617 612 607 679
Symbol 681 FontUsed by:682 683
Symbol 682 EditableTextUses:681Used by:684
Symbol 683 TextUses:681Used by:684
Symbol 684 MovieClip {SimpleDebuger}Uses:682 683
Symbol 685 MovieClip {GotMedal}Uses:289
Symbol 686 GraphicUsed by:690
Symbol 687 GraphicUsed by:690
Symbol 688 GraphicUsed by:690
Symbol 689 GraphicUsed by:690
Symbol 690 MovieClip {skies}Uses:686 687 688 689
Symbol 691 GraphicUsed by:692
Symbol 692 MovieClipUses:691Used by:728
Symbol 693 TextUses:239Used by:728
Symbol 694 TextUses:239Used by:728
Symbol 695 EditableTextUses:239Used by:728
Symbol 696 EditableTextUses:239Used by:728
Symbol 697 TextUses:239Used by:728
Symbol 698 EditableTextUses:239Used by:728
Symbol 699 MovieClipUses:30Used by:712
Symbol 700 MovieClipUses:33Used by:712
Symbol 701 MovieClipUses:35Used by:712
Symbol 702 MovieClipUses:37Used by:712
Symbol 703 GraphicUsed by:712 714
Symbol 704 MovieClipUses:49Used by:712
Symbol 705 MovieClipUses:49Used by:712
Symbol 706 MovieClipUses:49Used by:712
Symbol 707 MovieClipUses:49Used by:712
Symbol 708 MovieClipUses:49Used by:712
Symbol 709 MovieClipUses:49Used by:712
Symbol 710 MovieClipUses:49Used by:712
Symbol 711 MovieClipUses:49Used by:712
Symbol 712 MovieClipUses:699 32 700 701 702 703 704 705 706 707 708 709 710 711Used by:714
Symbol 713 MovieClipUses:40 41 42 43 44 45 46 47Used by:714
Symbol 714 ButtonUses:712 48 713 90 30 32 33 35 37 703 49 40 41 42 43 44 45 46 47Used by:728
Symbol 715 GraphicUsed by:720
Symbol 716 GraphicUsed by:720
Symbol 717 GraphicUsed by:720
Symbol 718 GraphicUsed by:720
Symbol 719 GraphicUsed by:720
Symbol 720 MovieClipUses:715 716 717 718 719Used by:728
Symbol 721 GraphicUsed by:722
Symbol 722 MovieClipUses:721 274 276 278Used by:728
Symbol 723 GraphicUsed by:727
Symbol 724 GraphicUsed by:725
Symbol 725 ButtonUses:724Used by:727
Symbol 726 GraphicUsed by:727
Symbol 727 MovieClip {Launcher_fla.Symbol17copy_41}Uses:723 725 726Used by:728
Symbol 728 MovieClip {HUD}Uses:692 693 694 695 696 697 698 714 720 722 727
Symbol 729 GraphicUsed by:748
Symbol 730 GraphicUsed by:748
Symbol 731 MovieClipUses:243Used by:748
Symbol 732 ButtonUses:243 244 245Used by:748
Symbol 733 ButtonUses:243 244 245Used by:748
Symbol 734 GraphicUsed by:748
Symbol 735 GraphicUsed by:748
Symbol 736 TextUses:307Used by:748
Symbol 737 TextUses:307Used by:748
Symbol 738 TextUses:307Used by:748
Symbol 739 TextUses:307Used by:748
Symbol 740 GraphicUsed by:748
Symbol 741 GraphicUsed by:748
Symbol 742 TextUses:307Used by:748
Symbol 743 GraphicUsed by:748
Symbol 744 TextUses:307Used by:748
Symbol 745 GraphicUsed by:746
Symbol 746 MovieClipUses:745Used by:748
Symbol 747 GraphicUsed by:748
Symbol 748 MovieClip {com.chocorobokun.screen.InstructionScreen}Uses:729 730 731 732 733 315 249 734 735 736 737 738 339 605 614 616 739 740 741 742 743 744 550 552 554 556 557 559 746 747

Instance Names

"buttonAnim"Symbol 70 MovieClip {Launcher_fla.Timeline_231} Frame 1Symbol 28 MovieClip {Launcher_fla.buttonAnim_232}
"logoRed"Symbol 70 MovieClip {Launcher_fla.Timeline_231} Frame 1Symbol 58 MovieClip {Launcher_fla.Timeline_233}
"logoGray"Symbol 70 MovieClip {Launcher_fla.Timeline_231} Frame 1Symbol 63 MovieClip {Launcher_fla.Timeline_246}
"preloadBut"Symbol 70 MovieClip {Launcher_fla.Timeline_231} Frame 1Symbol 69 Button
"logo"Symbol 75 MovieClip {Launcher_fla.Timeline_230} Frame 1Symbol 70 MovieClip {Launcher_fla.Timeline_231}
"but"Symbol 75 MovieClip {Launcher_fla.Timeline_230} Frame 1Symbol 74 Button
"redM"Symbol 95 MovieClip {Launcher_fla.Timeline_250} Frame 1Symbol 94 MovieClip {Launcher_fla.Timeline_251}
"BG"Symbol 96 MovieClip {com.chocorobokun.preloader.preloaderMain} Frame 1Symbol 24 Button
"logoAnim"Symbol 96 MovieClip {com.chocorobokun.preloader.preloaderMain} Frame 1Symbol 75 MovieClip {Launcher_fla.Timeline_230}
"introAnim"Symbol 96 MovieClip {com.chocorobokun.preloader.preloaderMain} Frame 2Symbol 95 MovieClip {Launcher_fla.Timeline_250}
"distanceDisp"Symbol 241 MovieClip {AirMarker} Frame 1Symbol 240 EditableText
"buyBut"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 1Symbol 249 Button
"moneyDisp"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 1Symbol 255 EditableText
"priceDisp"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 1Symbol 256 EditableText
"buyBut"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 1Symbol 249 Button
"moneyDisp"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 1Symbol 263 EditableText
"priceDisp"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 1Symbol 264 EditableText
"buyBut"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 1Symbol 249 Button
"moneyDisp"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 1Symbol 271 EditableText
"priceDisp"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 1Symbol 272 EditableText
"descDisp"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 285 EditableText
"lock10"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock9"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock8"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock7"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock6"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock5"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock4"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock3"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock2"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"lock1"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 287 MovieClip
"medal1"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal2"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal3"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal4"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal5"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal6"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal7"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal8"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal9"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"medal10"Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194} Frame 1Symbol 291 Button
"launcherLayer"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 261 MovieClip {Launcher_fla.Symbol2_190}
"gunLayer"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191}
"jetpackLayer"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192}
"lockedMov"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 282 MovieClip
"medalLayer"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 297 MovieClip {Launcher_fla.Symbol2copy2_194}
"popBut"Symbol 302 MovieClip {Launcher_fla.Symbol1_189} Frame 1Symbol 301 Button
"descText"Symbol 309 MovieClip {Launcher_fla.descDisplay_200} Frame 1Symbol 308 EditableText
"closeBut"Symbol 312 MovieClip {Launcher_fla.Symbol6_198} Frame 1Symbol 305 Button
"moreBut"Symbol 312 MovieClip {Launcher_fla.Symbol6_198} Frame 1Symbol 249 Button
"descDisp"Symbol 312 MovieClip {Launcher_fla.Symbol6_198} Frame 1Symbol 309 MovieClip {Launcher_fla.descDisplay_200}
"nextBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 246 Button
"retryBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 249 Button
"prevBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 250 Button
"launcherBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 249 Button
"gunBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 249 Button
"layers"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 302 MovieClip {Launcher_fla.Symbol1_189}
"popupDesc"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 312 MovieClip {Launcher_fla.Symbol6_198}
"medalBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 249 Button
"jetpackBut"Symbol 317 MovieClip {com.chocorobokun.screen.ShopScreen} Frame 1Symbol 315 Button
"playBut"Symbol 328 MovieClip {com.chocorobokun.screen.SplashScreen} Frame 1Symbol 321 Button
"moreBut"Symbol 328 MovieClip {com.chocorobokun.screen.SplashScreen} Frame 1Symbol 322 Button
"clearBut"Symbol 328 MovieClip {com.chocorobokun.screen.SplashScreen} Frame 1Symbol 327 Button
"shopBut"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 331 Button
"replayBut"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 331 Button
"distanceDisp"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 333 EditableText
"earnDisp"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 334 EditableText
"moneyDisp"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 335 EditableText
"moreBut"Symbol 337 MovieClip {Launcher_fla.StopDisplay_179} Frame 1Symbol 249 Button
"stopDisplay"Symbol 338 MovieClip {com.chocorobokun.screen.StatScreen} Frame 1Symbol 337 MovieClip {Launcher_fla.StopDisplay_179}
"meterDisplay"Symbol 350 MovieClip {Meter} Frame 1Symbol 349 MovieClip
"grandpa"Symbol 606 MovieClip {Launcher_fla.PlasmaGun_80} Frame 1Symbol 605 MovieClip
"plasmaGun"Symbol 607 MovieClip {com.chocorobokun.launcher.PlasmaLauncher} Frame 1Symbol 606 MovieClip {Launcher_fla.PlasmaGun_80}
"grandpa"Symbol 610 MovieClip {Launcher_fla.MissileGun_77} Frame 1Symbol 605 MovieClip
"missileGun"Symbol 612 MovieClip {com.chocorobokun.launcher.MissileLauncher} Frame 1Symbol 610 MovieClip {Launcher_fla.MissileGun_77}
"grandpa"Symbol 615 MovieClip {Launcher_fla.cannon_75} Frame 1Symbol 605 MovieClip
"cannonGun"Symbol 617 MovieClip {com.chocorobokun.launcher.CannonLauncher} Frame 1Symbol 615 MovieClip {Launcher_fla.cannon_75}
"grandpa"Symbol 627 MovieClip {com.chocorobokun.launcher.TrebuchetLauncher} Frame 1Symbol 618 MovieClip
"grandpa"Symbol 633 MovieClip {Launcher_fla.catapultRope_66} Frame 1Symbol 605 MovieClip
"catapultRope"Symbol 634 MovieClip {com.chocorobokun.launcher.CatapultLauncher} Frame 1Symbol 633 MovieClip {Launcher_fla.catapultRope_66}
"backgroundMov"Symbol 674 MovieClip {BG} Frame 1Symbol 673 MovieClip
"distanceDisp"Symbol 679 MovieClip {Launcher_fla.DistanceBoard_82} Frame 1Symbol 678 EditableText
"bgMov"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 674 MovieClip {BG}
"bombObject"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 643 MovieClip {com.chocorobokun.hitObjects.BombObject}
"ballCharMov"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 639 MovieClip {Circle}
"boxLauncherMov"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 635 MovieClip {BoxManual}
"boxManual"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 676 MovieClip
"catapultLauncher"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 634 MovieClip {com.chocorobokun.launcher.CatapultLauncher}
"trebuchetLauncher"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 627 MovieClip {com.chocorobokun.launcher.TrebuchetLauncher}
"cannonLauncher"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 617 MovieClip {com.chocorobokun.launcher.CannonLauncher}
"missileLauncher"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 612 MovieClip {com.chocorobokun.launcher.MissileLauncher}
"plasmaLauncher"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 607 MovieClip {com.chocorobokun.launcher.PlasmaLauncher}
"distanceBoard"Symbol 680 MovieClip {com.chocorobokun.World.cobaClass} Frame 1Symbol 679 MovieClip {Launcher_fla.DistanceBoard_82}
"debugerDisp"Symbol 684 MovieClip {SimpleDebuger} Frame 1Symbol 682 EditableText
"vDistanceDisp"Symbol 728 MovieClip {HUD} Frame 1Symbol 695 EditableText
"distanceDisp"Symbol 728 MovieClip {HUD} Frame 1Symbol 696 EditableText
"bulletDisplay"Symbol 728 MovieClip {HUD} Frame 1Symbol 698 EditableText
"moreBut"Symbol 728 MovieClip {HUD} Frame 1Symbol 714 Button
"gunDisplay"Symbol 728 MovieClip {HUD} Frame 1Symbol 720 MovieClip
"jetpackBut"Symbol 728 MovieClip {HUD} Frame 1Symbol 722 MovieClip
"muteBut"Symbol 728 MovieClip {HUD} Frame 1Symbol 727 MovieClip {Launcher_fla.Symbol17copy_41}
"prevBut"Symbol 748 MovieClip {com.chocorobokun.screen.InstructionScreen} Frame 1Symbol 732 Button
"nextBut"Symbol 748 MovieClip {com.chocorobokun.screen.InstructionScreen} Frame 1Symbol 733 Button
"moreBut"Symbol 748 MovieClip {com.chocorobokun.screen.InstructionScreen} Frame 1Symbol 315 Button
"playBut"Symbol 748 MovieClip {com.chocorobokun.screen.InstructionScreen} Frame 1Symbol 249 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Tag 0x0FF (255)Timeline Frame 11 bytes " "

Labels

"hit"Symbol 117 MovieClip {com.chocorobokun.hitObjects.ChainedBolasObject} Frame 72
"hit"Symbol 127 MovieClip {com.chocorobokun.hitObjects.BolasObject} Frame 2
"Trebuchet"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 1
"Cannon"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 2
"Missile"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 3
"Plasma"Symbol 261 MovieClip {Launcher_fla.Symbol2_190} Frame 4
"Uzi"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 1
"Shotgun"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 2
"Rifle"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 3
"MachineGun"Symbol 269 MovieClip {Launcher_fla.Symbol2copy_191} Frame 4
"JetPack"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 1
"RocketPack"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 2
"NukePack"Symbol 279 MovieClip {Launcher_fla.Symbol2jetpack_192} Frame 3
"standby"Symbol 369 MovieClip {com.chocorobokun.hitObjects.PolicemanObject} Frame 1
"hit"Symbol 369 MovieClip {com.chocorobokun.hitObjects.PolicemanObject} Frame 21
"standby"Symbol 389 MovieClip {com.chocorobokun.hitObjects.ChainsawObject} Frame 1
"hit"Symbol 389 MovieClip {com.chocorobokun.hitObjects.ChainsawObject} Frame 21
"standby"Symbol 402 MovieClip {com.chocorobokun.hitObjects.PengamenObject} Frame 1
"hit"Symbol 402 MovieClip {com.chocorobokun.hitObjects.PengamenObject} Frame 11
"hit"Symbol 412 MovieClip {com.chocorobokun.hitObjects.KidObject} Frame 16
"standby"Symbol 428 MovieClip {com.chocorobokun.hitObjects.HookObject} Frame 1
"hit"Symbol 428 MovieClip {com.chocorobokun.hitObjects.HookObject} Frame 41
"stanby"Symbol 444 MovieClip {com.chocorobokun.hitObjects.TrashcanObject} Frame 1
"hit"Symbol 444 MovieClip {com.chocorobokun.hitObjects.TrashcanObject} Frame 36
"hit"Symbol 488 MovieClip {com.chocorobokun.hitObjects.BarrelObject} Frame 10
"flying"Symbol 509 MovieClip {com.chocorobokun.hitObjects.FireworksObject} Frame 1
"hit"Symbol 509 MovieClip {com.chocorobokun.hitObjects.FireworksObject} Frame 19
"flying"Symbol 520 MovieClip {com.chocorobokun.hitObjects.MissileObject} Frame 1
"hit"Symbol 520 MovieClip {com.chocorobokun.hitObjects.MissileObject} Frame 21
"hit"Symbol 531 MovieClip {com.chocorobokun.hitObjects.BusObject} Frame 27
"hit"Symbol 643 MovieClip {com.chocorobokun.hitObjects.BombObject} Frame 16
"Pistol"Symbol 720 MovieClip Frame 1
"Uzi"Symbol 720 MovieClip Frame 2
"Shotgun"Symbol 720 MovieClip Frame 3
"Rifle"Symbol 720 MovieClip Frame 4
"MachineGun"Symbol 720 MovieClip Frame 5
"JetPack"Symbol 722 MovieClip Frame 1
"RocketPack"Symbol 722 MovieClip Frame 2
"NukePack"Symbol 722 MovieClip Frame 3




http://swfchan.com/27/131751/info.shtml
Created: 21/2 -2019 01:26:41 Last modified: 21/2 -2019 01:26:41 Server time: 14/05 -2024 06:02:06