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

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

Mining Truck - drive your truck carefully in this fun physics game.swf

This is the info page for
Flash #93607

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


Text
a game by Anton Karlov
sounds & music by Alexander Ahura

<p align="left"><font face="PixelYourLife_10pt_st" size="10" color="#cdeaf5" letterSpacing="0.000000" kerning="1">fps</font></p>

loading

25

<p align="center"><font face="04b-20_15pt_st" size="15" color="#363227" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="04b-20_15pt_st" size="15" color="#969f4b" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="04b-20_20pt_st" size="20" color="#363227" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="04b-20_20pt_st" size="20" color="#c2754b" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="right"><font face="04b-20_8pt_st" size="8" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="04b-20_8pt_st" size="8" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="04b-20_8pt_st" size="8" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="04b-20_8pt_st" size="8" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="04b-20_15pt_st" size="15" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="04b-20_15pt_st" size="15" color="#b6d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#363227" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#969f4b" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#363227" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#b6a775" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="04b-20_8pt_st" size="8" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="04b-20_8pt_st" size="8" color="#373221" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="04b-20_8pt_st" size="8" color="#a49558" letterSpacing="0.000000" kerning="1">0</font></p>

Wait for the truck loading finish.
Drive when the green light is on.

gas

brake

balance left

balance right

Wait for the truck loading finish.
Drive when the green light is on.

Park the truck under the tube
and wait for its unloading.

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; var _local17:Number = -((_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); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_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)); } 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 UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (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 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_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)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_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))); } } }//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 Copy():b2FilterData{ var _local1:b2FilterData = 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(){ center = new b2Vec2(0, 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 vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; 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_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; 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 _local3: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; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _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 ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = 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 GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } 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 TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_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; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; 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); } override public function ComputeMass(_arg1:b2MassData):void{ 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; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; 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 GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _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 ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = 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(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_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)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; 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 TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 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_next: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_isSensor:Boolean; public var m_restitution:Number; public var m_userData; 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 SetUserData(_arg1):void{ m_userData = _arg1; } 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{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _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{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var _local4:b2AABB = 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 = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } 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 friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; 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 = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:uint = proxyId; var _local4:uint = 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_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; 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 _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++; }; var _local4:Number = (_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 _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_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); var _local10:int; var _local11:int; 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 = 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 _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _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 _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; 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 = _arg3.lowerBound.x; var _local5:Number = _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); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _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 _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; var _local5:uint = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; var _local6:uint = (2 * m_proxyCount); var _local7:Array = new Array(); var _local8:Array = new Array(); ComputeBounds(_local7, _local8, _arg1); var _local9:int; 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++; var _local10:int; 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 _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; var _local4:b2Proxy = m_proxyPool[_arg1]; var _local5:int = (2 * m_proxyCount); var _local6:int; 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++; }; var _local7:int; 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 _local4:Array; var _local5:b2Bound; var _local3:int; 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 _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; 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 = 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 _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; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2Proxy = m_proxyPool[_arg1]; var _local14:b2BoundValues = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); var _local15:b2BoundValues = 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 _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 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; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [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(); var _local35:int; var _local36:int; 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 _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = 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 _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); var _local10:Number = (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 _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_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; var _local19:b2ManifoldPoint = _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)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_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 _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _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; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } 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); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; 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 velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; 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 _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; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35: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]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_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); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_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); }; var _local37:Number = (_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); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((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 _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = 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))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_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 = _arg3.m_type; var _local8:int = _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 _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = 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 pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; 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; 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 proxyId1:uint; public var userData;// = null 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 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_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; 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 = 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 _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; var _local3:uint = (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 _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; var _local3:int; var _local4:Array = 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 = 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 _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local5:uint = m_hashTable[_local4]; var _local6:b2Pair; 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 = 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 _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; var _local5:uint = 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 = (((_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 userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; 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.*; import Box2D.Common.*; 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 _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 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 id:b2ContactID; public var v:b2Vec2; 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 get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } 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 SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function 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 _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = 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 = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_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 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = 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 = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function 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 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function 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 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = 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 = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_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 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = 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 = 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 = 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 a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; 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 _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); }; var _local3:b2Mat22 = _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 y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } 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 MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = 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 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 position:b2Vec2; public var R:b2Mat22; 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 _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.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 set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 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 g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = 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); var _local7:b2ContactPoint = 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); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = 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 _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; 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{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _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 _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _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 normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 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 tangentMass:Number; public var equalizedMass: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 other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; 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 _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++; }; var _local9:int; _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 _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.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 _local3:b2Mat22; var _local4:b2Vec2; 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; var _local2:Number = 0; var _local5:int; 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 _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; var _local19:int; 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 _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.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 Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ 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; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = 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); var _local8:Array = [false, false]; var _local9:b2ContactPoint = 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++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; 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 Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = 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); var _local9:Array = [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++; }; } override public function GetManifolds():Array{ return (m_manifolds); } 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_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz: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 InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8: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); var _local7:Number = (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); var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (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 GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local1 = _local2.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local8:Number = (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; var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); var _local12:Number = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local13:Number = (-(m_mass) * _local12); m_u.Set(_local9, _local10); var _local14:Number = (_local13 * m_u.x); var _local15:Number = (_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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//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 localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; 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{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 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_ground2:b2Body; 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_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.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 InitVelocityConstraints(_arg1:b2TimeStep):void{ 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 _local15:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 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 = m_body2.m_xf.R; var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local4:Number = ((_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); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local4:Number; var _local5:Number; var _local1:Number = 0; var _local2:b2Body = m_body1; var _local3:b2Body = 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(); }; var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5))); var _local7:Number = (-(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)); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); var _local6:Number = (_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 joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 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 angular1:Number; public var angular2: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 GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } 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; 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 body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; 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 other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//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 { private var K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3: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); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = 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(); var _local5:Number = m_body2.m_mass; var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6); var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local7:Number; var _local8: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); var _local6:Number = ((_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); var _local9:Number = (_arg1.dt * m_impulse.x); var _local10:Number = (_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 GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _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)); var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); var _local15:Number = (_arg1.dt * _local10); var _local16:Number = (_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 timeStep:Number; public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz: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_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); 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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_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)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_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)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22 = m_body1.m_xf.R; var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); var _local5:Number = (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 _local9:b2Mat22; var _local10:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = _local3.m_invMass; var _local6:Number = _local4.m_invMass; var _local7:Number = _local3.m_invI; var _local8:Number = _local4.m_invI; _local9 = _local3.m_xf.R; var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local12:Number = (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; var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local14:Number = (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; var _local15:Number = (_local3.m_sweep.c.x + _local11); var _local16:Number = (_local3.m_sweep.c.y + _local12); var _local17:Number = (_local4.m_sweep.c.x + _local13); var _local18:Number = (_local4.m_sweep.c.y + _local14); var _local19:Number = (_local17 - _local15); var _local20:Number = (_local18 - _local16); _local9 = _local3.m_xf.R; var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); var _local23:Number = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local24:Number = (-(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)); var _local25:Number = b2Math.b2Abs(_local23); var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var _local27:Number = (-(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(); var _local28:Number = 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 SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; _local4 = _local2.m_xf.R; var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); var _local17:Number = ((_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 EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//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 motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; 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_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse: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_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; 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 = 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 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local3:b2Mat22; 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 _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local23:Number = 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 _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_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; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _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); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_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 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = 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 maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; 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{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (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_pivotMass:b2Mat22; public var m_motorForce:Number; 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_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque: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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local10:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); var _local14:Number = (-(_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); var _local15:Number = (_arg1.dt * _local13); var _local16:Number = (_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)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } 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 _local6:b2Mat22; var _local25:Number; var _local26:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = 0; _local6 = _local3.m_xf.R; var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local11:Number = (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; var _local12:Number = (_local3.m_sweep.c.x + _local7); var _local13:Number = (_local3.m_sweep.c.y + _local8); var _local14:Number = (_local4.m_sweep.c.x + _local10); var _local15:Number = (_local4.m_sweep.c.y + _local11); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); var _local18:Number = _local3.m_invMass; var _local19:Number = _local4.m_invMass; var _local20:Number = _local3.m_invI; var _local21:Number = _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)); var _local22:Number = tImpulse.x; var _local23:Number = 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(); var _local24:Number = 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 SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } 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)); } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; 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; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//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 upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_xf:b2XForm; public var ball:Boolean;// = false public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeCount:int; public var m_invI:Number; public var typnum;// = "" public var m_torque:Number; public var m_flags:uint; public var m_linearVelocity:b2Vec2; public var p_typ:String; public var m_world:b2World; public var bw;// = "down" public var tou:Boolean;// = false public var sukaYa;// = false public var m_next:b2Body; public var m_mass:Number; public var typ;// = "typ" public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_sweep:b2Sweep; public var m_userData; public var m_invMass:Number; public var spec;// = false public var m_prev:b2Body; public var m_linearDamping:Number; public var m_type:int; public var m_angularDamping:Number; public var mish:Boolean;// = false public var m_sleepTime:Number; 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){ 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); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_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 SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } 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 SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = 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); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = 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; }; var _local7:int = 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 SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; 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); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _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 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 _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _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 GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetShapeList():b2Shape{ return (m_shapeList); } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; 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); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = 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 Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetInertia():Number{ return (m_I); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } 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 GetAngularVelocity():Number{ return (m_angularVelocity); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ if (m_world.m_lock == true){ return (null); }; var _local2:b2Shape = 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 DestroyShape(_arg1:b2Shape):void{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; 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 SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; 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 = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import com.miningtruck.objects.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ var _local2:* = _arg1.shape1.GetBody().GetUserData(); var _local3:* = _arg1.shape2.GetBody().GetUserData(); if (((_local2) && (_local3))){ if ((((_local2 is Wheel)) && ((_local3 is Ground)))){ (_local2 as Wheel).groundCollision(); } else { if ((((_local2 is Ground)) && ((_local3 is Wheel)))){ (_local3 as Wheel).groundCollision(); } else { if ((((_local2 is Cargo)) && ((_local3 is Lenta)))){ (_local2 as Cargo).onLenta(); } else { if ((((_local2 is Lenta)) && ((_local3 is Cargo)))){ (_local3 as Cargo).onLenta(); } else { if ((((_local2 is Cargo)) && ((_local3 is Ground)))){ (_local2 as Cargo).groundCollision(); } else { if ((((_local2 is Ground)) && ((_local3 is Cargo)))){ (_local3 as Cargo).groundCollision(); } else { if ((((_local2 is Cargo)) && ((_local3 is Truck)))){ if ((_local2 as Cargo).type == Cargo.BOX){ (_local2 as Cargo).truckCollision(); }; } else { if ((((_local2 is Truck)) && ((_local3 is Cargo)))){ if ((_local3 as Cargo).type == Cargo.BOX){ (_local3 as Cargo).truckCollision(); }; } else { if ((((_local2 is Truck)) && ((_local3 is Ground)))){ (_local2 as Truck).crash(); } else { if ((((_local2 is Ground)) && ((_local3 is Truck)))){ (_local3 as Truck).crash(); }; }; }; }; }; }; }; }; }; }; }; } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; 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 PairRemoved(_arg1, _arg2, _arg3):void{ if (_arg3 == null){ return; }; var _local4:b2Contact = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ 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; var _local2:b2Shape = _arg1.m_shape1; var _local3:b2Shape = _arg1.m_shape2; var _local4:int = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape1; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; var _local5:b2Body = _local2.m_body; var _local6:b2Body = _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--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _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); }; var _local7:b2Contact = 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); } public function Collide():void{ var _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = 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 flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; 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_drawFlags:uint; public var m_lineThickness:Number;// = 1 public var m_drawScale:Number;// = 1 public var m_sprite:Sprite; 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_drawFlags = 0; } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } 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 DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function 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 GetFlags():uint{ return (m_drawFlags); } 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)); } } }//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 SayGoodbyeShape(_arg1:b2Shape):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):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_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; 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 _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; }; var _local4:int; 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 AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:*; var _local10:int; var _local11:Boolean; var _local12:Boolean; var _local13:Boolean; var _local14:Number; var _local15:Number; var _local16:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { if (_local6.bw == "up"){ _local9 = -1; } else { _local9 = 1; }; _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * ((_local9 * _arg2.x) + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * ((_local9 * _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++; }; var _local8:b2ContactSolver = 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(); _local10 = 0; while (_local10 < m_jointCount) { _local7 = m_joints[_local10]; _local7.SolveVelocityConstraints(_arg1); _local10++; }; _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) { _local11 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local12 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local13 = _local7.SolvePositionConstraints(); _local12 = ((_local12) && (_local13)); _local5++; }; if (((_local11) && (_local12))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local14 = Number.MAX_VALUE; _local15 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local16 = (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; _local14 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local16)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local15)))){ _local6.m_sleepTime = 0; _local14 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local14 = b2Math.b2Min(_local14, _local6.m_sleepTime); }; }; _local5++; }; if (_local14 >= 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 Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local5:b2Body; var _local6:Boolean; var _local3:b2ContactSolver = 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++; }; var _local4:Number = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ 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); var _local4:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.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 _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local11:b2XForm; 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(); var _local1:uint = m_debugDraw.GetFlags(); var _local7:b2Vec2 = new b2Vec2(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Color = new b2Color(0, 0, 0); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [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 _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; var _local3:b2Shape = _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 _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; var _local5:b2Color = 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 _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; var _local3:b2Island = 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; }; var _local4:b2Contact = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; var _local5:b2Joint = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; var _local6:int = m_bodyCount; var _local7:Array = new Array(_local6); var _local8:b2Body = 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 = new Array(_arg3); var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); var _local6:int; 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 _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; var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); var _local9:int = m_bodyCount; var _local10:Array = 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 GetBodyList():b2Body{ return (m_bodyList); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function Validate():void{ m_broadPhase.Validate(); } 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 _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = 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 _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _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{ if (m_lock == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ m_lock = true; var _local3:b2TimeStep = 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
//FPSCounter (com.antkarlov.utils.FPSCounter) package com.antkarlov.utils { import flash.display.*; import flash.events.*; import flash.utils.*; public class FPSCounter extends Sprite { private var _last:uint; private var _ticks:uint;// = 0 private var _fps:Number; public static const UPDATE_DATA:String = "updateData"; public function FPSCounter(){ _last = getTimer(); super(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function get fps():String{ return (_fps.toFixed(1)); } private function enterFrameHandler(_arg1:Event):void{ _ticks++; var _local2:uint = getTimer(); var _local3:uint = (_local2 - _last); if (_local3 >= 1000){ _fps = ((_ticks / _local3) * 1000); dispatchEvent(new Event(FPSCounter.UPDATE_DATA)); _ticks = 0; _last = _local2; }; } } }//package com.antkarlov.utils
Section 76
//KeyObject (com.antkarlov.utils.KeyObject) package com.antkarlov.utils { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.ui.*; public class KeyObject extends Proxy { private static var keysDown:Object; private static var stage:Stage; public function KeyObject(_arg1:Stage){ KeyObject.stage = _arg1; keysDown = new Object(); _arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); _arg1.addEventListener(KeyboardEvent.KEY_UP, keyReleased); } private function keyReleased(_arg1:KeyboardEvent):void{ delete keysDown[_arg1.keyCode]; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return ((Keyboard[_arg1]) ? Keyboard[_arg1] : -1); } public function isDown(_arg1:uint):Boolean{ return (Boolean(keysDown[_arg1])); } private function keyPressed(_arg1:KeyboardEvent):void{ keysDown[_arg1.keyCode] = true; } public function deconstruct():void{ KeyObject.stage = null; keysDown = new Object(); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased); } } }//package com.antkarlov.utils
Section 77
//BigAssCanvas (com.bit101.display.BigAssCanvas) package com.bit101.display { import flash.display.*; import flash.geom.*; public class BigAssCanvas extends Sprite { private var _color:uint; private var _bitmaps:Array; private var _height:Number; private var _width:Number; private var _transparent:Boolean; public function BigAssCanvas(_arg1:Number, _arg2:Number, _arg3:Boolean=false, _arg4:uint=0xFFFFFF){ _width = _arg1; _height = _arg2; _transparent = _arg3; _color = _arg4; makeBitmaps(); } public function noise(_arg1:int, _arg2:uint=0, _arg3:uint=0xFF, _arg4:uint=7, _arg5:Boolean=false):void{ var _local7:Bitmap; var _local6:int; while (_local6 < _bitmaps.length) { _local7 = (_bitmaps[_local6] as Bitmap); _local7.bitmapData.noise(_arg1, _arg2, _arg3, _arg4, _arg5); _local6++; }; } public function setPixel32(_arg1:Number, _arg2:Number, _arg3:uint):void{ var _local5:Bitmap; var _local4:int; while (_local4 < _bitmaps.length) { _local5 = (_bitmaps[_local4] as Bitmap); if ((((((((_arg1 >= _local5.x)) && ((_arg1 < (_local5.x + _local5.width))))) && ((_arg2 >= _local5.y)))) && ((_arg2 < (_local5.y + _local5.height))))){ _local5.bitmapData.setPixel32((_arg1 - _local5.x), (_arg2 - _local5.y), _arg3); }; _local4++; }; } public function fillRect(_arg1:Rectangle, _arg2:uint):void{ var _local4:Bitmap; var _local5:Rectangle; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); _local5 = _arg1.clone(); _arg1.clone().x = (_local5.x - _local4.x); _local5.y = (_local5.y - _local4.y); _local4.bitmapData.fillRect(_local5, _arg2); _local3++; }; } public function draw(_arg1:IBitmapDrawable, _arg2:Matrix=null, _arg3:ColorTransform=null, _arg4:String=null, _arg5:Rectangle=null, _arg6:Boolean=false):void{ var _local8:Bitmap; var _local9:Matrix; var _local10:Rectangle; if (_arg2 == null){ _arg2 = new Matrix(); }; var _local7:int; while (_local7 < _bitmaps.length) { _local8 = (_bitmaps[_local7] as Bitmap); _local9 = _arg2.clone(); _arg2.clone().tx = (_local9.tx - _local8.x); _local9.ty = (_local9.ty - _local8.y); if (_arg5 != null){ _local10 = _arg5.clone(); _arg5.clone().x = (_local10.x - _local8.x); _local10.y = (_local10.y - _local8.y); } else { _local10 = null; }; _local8.bitmapData.draw(_arg1, _local9, _arg3, _arg4, _local10, _arg6); _local7++; }; } public function getPixel32(_arg1:Number, _arg2:Number):uint{ var _local4:Bitmap; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); if ((((((((_arg1 >= _local4.x)) && ((_arg1 < (_local4.x + _local4.width))))) && ((_arg2 >= _local4.y)))) && ((_arg2 < (_local4.y + _local4.height))))){ return (_local4.bitmapData.getPixel32((_arg1 - _local4.x), (_arg2 - _local4.y))); }; _local3++; }; return (0); } public function getPixel(_arg1:Number, _arg2:Number):uint{ var _local4:Bitmap; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); if ((((((((_arg1 >= _local4.x)) && ((_arg1 < (_local4.x + _local4.width))))) && ((_arg2 >= _local4.y)))) && ((_arg2 < (_local4.y + _local4.height))))){ return (_local4.bitmapData.getPixel((_arg1 - _local4.x), (_arg2 - _local4.y))); }; _local3++; }; return (0); } public function unlock():void{ var _local2:Bitmap; var _local1:int; while (_local1 < _bitmaps.length) { _local2 = (_bitmaps[_local1] as Bitmap); _local2.bitmapData.unlock(); _local1++; }; } public function lock():void{ var _local2:Bitmap; var _local1:int; while (_local1 < _bitmaps.length) { _local2 = (_bitmaps[_local1] as Bitmap); _local2.bitmapData.lock(); _local1++; }; } public function perlinNoise(_arg1:Number, _arg2:Number, _arg3:uint, _arg4:int, _arg5:Boolean, _arg6:uint=7, _arg7:Boolean=false):void{ var _local10:Bitmap; var _local11:Array; var _local12:int; var _local8:Array = new Array(); var _local9:int; while (_local9 < _arg3) { _local8.push(new Point()); _local9++; }; _local9 = 0; while (_local9 < _bitmaps.length) { _local10 = (_bitmaps[_local9] as Bitmap); _local11 = new Array(); _local12 = 0; while (_local12 < _local8.length) { _local11[_local12] = new Point((_local8[_local12].x + _local10.x), (_local8[_local12].y + _local10.y)); _local12++; }; _local10.bitmapData.perlinNoise(_arg1, _arg2, _arg3, _arg4, false, _arg5, _arg6, _arg7, _local11); _local9++; }; } private function makeBitmaps():void{ var _local3:Number; var _local4:Number; var _local5:Bitmap; _bitmaps = new Array(); var _local1:Number = _height; var _local2:Number = 0; while (_local1 > 0) { _local3 = 0; _local4 = _width; while (_local4 > 0) { _local5 = new Bitmap(new BitmapData(Math.min(2880, _local4), Math.min(2880, _local1), _transparent, _color)); _local5.x = _local3; _local5.y = _local2; addChild(_local5); _bitmaps.push(_local5); _local4 = (_local4 - _local5.width); _local3 = (_local3 + _local5.width); }; _local2 = (_local2 + Math.min(2880, _local1)); _local1 = (_local1 - Math.min(2880, _local1)); }; } public function copyPixelsOut(_arg1:Rectangle, _arg2:Boolean=true, _arg3:uint=4278190080):BitmapData{ var _local6:Bitmap; var _local7:Rectangle; var _local4:BitmapData = new BitmapData(_arg1.width, _arg1.height, true, _arg3); var _local5:int; while (_local5 < _bitmaps.length) { _local6 = (_bitmaps[_local5] as Bitmap); _local7 = _arg1.clone(); _arg1.clone().x = (_local7.x - _local6.x); _local7.y = (_local7.y - _local6.y); if (_local7.intersects(new Rectangle(0, 0, 2880, 2880))){ _local4.copyPixels(_local6.bitmapData, _local7, new Point()); }; _local5++; }; return (_local4); } public function setPixel(_arg1:Number, _arg2:Number, _arg3:uint):void{ var _local5:Bitmap; var _local4:int; while (_local4 < _bitmaps.length) { _local5 = (_bitmaps[_local4] as Bitmap); if ((((((((_arg1 >= _local5.x)) && ((_arg1 < (_local5.x + _local5.width))))) && ((_arg2 >= _local5.y)))) && ((_arg2 < (_local5.y + _local5.height))))){ _local5.bitmapData.setPixel(Math.round((_arg1 - _local5.x)), Math.round((_arg2 - _local5.y)), _arg3); }; _local4++; }; } public function dispose():void{ var _local1:Bitmap; while (_bitmaps.length > 0) { _local1 = (_bitmaps.shift() as Bitmap); removeChild(_local1); _local1.bitmapData.dispose(); }; } } }//package com.bit101.display
Section 78
//Level1 (com.miningtruck.levels.Level1) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level1 extends LevelBase { public function Level1(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level1_part1(); _back = new level1_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level1_part2(); _back = new level1_part2_back(); makeObjects(); makeBody(3200); cacheLevel(3200); _level = new level1_part3(); _back = new level1_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(700, 252); _world.time = 90; _world.totalCargo = 7; } } }//package com.miningtruck.levels
Section 79
//Level2 (com.miningtruck.levels.Level2) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level2 extends LevelBase { public function Level2(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level2_part1(); _back = new level2_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level2_part2(); _back = new level2_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level2_part3(); _back = new level2_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 2) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, (_local2 * 10)); if (_local2 == 1){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 80
//Level3 (com.miningtruck.levels.Level3) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level3 extends LevelBase { public function Level3(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level3_part1(); _back = new level3_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level3_part2(); _back = new level3_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level3_part3(); _back = new level3_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 5; } } }//package com.miningtruck.levels
Section 81
//Level4 (com.miningtruck.levels.Level4) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level4 extends LevelBase { public function Level4(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level4_part1(); _back = new level4_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level4_part2(); _back = new level4_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level4_part3(); _back = new level4_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 82
//Level5 (com.miningtruck.levels.Level5) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level5 extends LevelBase { public function Level5(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level5_part1(); _back = new level5_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level5_part2(); _back = new level5_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level5_part3(); _back = new level5_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 4) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, (_local2 * 10)); if (_local2 == 3){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 83
//Level6 (com.miningtruck.levels.Level6) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level6 extends LevelBase { public function Level6(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level6_part1(); _back = new level6_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level6_part2(); _back = new level6_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level6_part3(); _back = new level6_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 10); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 262); _world.time = 120; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 84
//Level7 (com.miningtruck.levels.Level7) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level7 extends LevelBase { public function Level7(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level7_part1(); _back = new level7_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level7_part2(); _back = new level7_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level7_part3(); _back = new level7_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 15); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 30); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 85
//Level8 (com.miningtruck.levels.Level8) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level8 extends LevelBase { public function Level8(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level8_part1(); _back = new level8_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level8_part2(); _back = new level8_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level8_part3(); _back = new level8_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 9) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 15)); _local3++; }; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, ((9 * 10) + 10)); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 86
//LevelBase (com.miningtruck.levels.LevelBase) package com.miningtruck.levels { import flash.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; import com.miningtruck.objects.*; import flash.geom.*; public class LevelBase extends Sprite { private const UNLOAD_TIME_INT:int = 8; var _targetPoint:Point; var _body:b2Body; private var _unloadInterval:int;// = 8 var _level:Sprite; var _back:Sprite; private var _unloadEffect:Animation; var _world:World; private var _stopInterval:int;// = 0 private var _unloadTimer:Animation; var _ds:int; private var _checkInterval:int;// = 0 var _scrSheets:Array; private var _cargoList:Array; public function LevelBase(_arg1:World){ _ds = World.DRAW_SCALE; _targetPoint = new Point(); super(); _scrSheets = new Array(); _world = _arg1; _unloadTimer = _world.app.animCache.getAnimation("sprite_timer"); _world.addMain(_unloadTimer); _unloadTimer.visible = false; } private function beginUnload():void{ var _local2:int; var _local3:int; var _local4:int; var _local1:Array = new Array(); _local1 = _world.getCargo(); _cargoList = new Array(); var _local5:int; while (_local5 < _local1.length) { _local2 = (_targetPoint.x - (_local1[_local5] as Sprite).x); _local3 = (_targetPoint.y - (_local1[_local5] as Sprite).y); _local4 = int(Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); if (_local4 < 150){ _cargoList[_cargoList.length] = {sprite:_local1[_local5], dist:_local4}; }; _local5++; }; if (_cargoList.length == 0){ _world.unloadFail(); return; }; _unloadEffect = _world.app.animCache.getAnimation("sprite_suck"); _world.addMain(_unloadEffect); _unloadEffect.alpha = 0; _unloadEffect.x = (_targetPoint.x - 30); _unloadEffect.y = (_targetPoint.y + 20); _unloadEffect.play(); _unloadEffect.addEventListener(Event.ENTER_FRAME, showUnloadHandler); _cargoList.sortOn("dist", Array.NUMERIC); _local5 = 0; while (_local5 < _cargoList.length) { (_cargoList[_local5].sprite as Cargo).unload(_targetPoint.x, _targetPoint.y, (_local5 * 10)); if ((_local5 + 1) == _cargoList.length){ (_cargoList[_local5].sprite as Cargo).offUnload = true; }; _local5++; }; } public function get isUnload():Boolean{ return (_unloadTimer.visible); } public function distanceToFinish():void{ var _local1:Point; var _local2:int; var _local3:int; var _local4:int; if ((((_checkInterval <= 0)) && (!(_unloadTimer.visible)))){ _local1 = _world.truckPosition; _local2 = (_targetPoint.x - _local1.x); _local3 = (_targetPoint.y - _local1.y); _local4 = int(Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); if (_local4 < 120){ if ((((_world.truckSpeed < 0.3)) && ((_world.truckSpeed > -0.3)))){ _stopInterval++; if (_stopInterval >= 30){ makeUnloadTimer(); }; } else { _stopInterval = 0; }; } else { _checkInterval = 100; }; } else { if (!_unloadTimer.visible){ _checkInterval--; }; }; if (((_unloadTimer.visible) && ((((_world.truckSpeed > 0.2)) || ((_world.truckSpeed < -0.2)))))){ resetUnloadTimer(); }; } function makeLent():void{ var _local1:b2Body; var _local4:Sprite; var _local2:b2BodyDef = new b2BodyDef(); var _local3:b2PolygonDef = new b2PolygonDef(); _local3.density = 1; _local3.friction = 0.1; _local3.restitution = 0.1; var _local5:int; while (_local5 < _level.numChildren) { if ((_level.getChildAt(_local5) is Sprite)){ _local4 = (_level.getChildAt(_local5) as Sprite); if (((_local4.visible) && ((_local4.name == "lenta")))){ _local3.SetAsOrientedBox((30 / _ds), (5 / _ds), new b2Vec2((_local4.x / _ds), (_local4.y / _ds)), (_local4.rotation * (Math.PI / 180))); _local2.userData = new Lenta(); if (_local4.visible){ if (!_local1){ _local1 = _world.world.CreateBody(_local2); }; _local1.CreateShape(_local3); _local4.visible = false; }; }; }; _local5++; }; } public function updatePosition(_arg1:Number, _arg2:Number):void{ var _local3:Bitmap; x = _arg1; y = _arg2; var _local4:int; while (_local4 < _scrSheets.length) { _local3 = _scrSheets[_local4].bitmap; if (((((((_local3.x + _local3.width) < Math.abs(x))) || ((_local3.x > (Math.abs(x) + App.SCR_W))))) && (_scrSheets[_local4].visible))){ if (_scrSheets[_local4].back){ _world.removeBack(_local3); } else { _world.removeFront(_local3); }; _scrSheets[_local4].visible = false; } else { if (((((((_local3.x + _local3.width) > Math.abs(x))) && ((_local3.x < (Math.abs(x) + App.SCR_W))))) && (!(_scrSheets[_local4].visible)))){ if (_scrSheets[_local4].back){ _world.addBack(_local3); } else { _world.addFront(_local3); }; _scrSheets[_local4].visible = true; }; }; _local4++; }; distanceToFinish(); } private function unloadIntervalHandler(_arg1:Event):void{ _unloadInterval--; if (_unloadInterval <= 0){ _unloadInterval = UNLOAD_TIME_INT; if (_unloadTimer.totalFrames == _unloadTimer.currentFrame){ _world.enableControls = false; _world.removeMain(_unloadTimer); _unloadTimer.removeEventListener(Event.ENTER_FRAME, unloadIntervalHandler); beginUnload(); } else { _unloadTimer.nextFrame(); }; }; } function makeTarget(_arg1:int):void{ if (_level["target"] != null){ if ((_level["target"] is Sprite)){ _targetPoint.x = (_arg1 + (_level["target"] as Sprite).x); _targetPoint.y = (_level["target"] as Sprite).y; (_level["target"] as Sprite).visible = false; }; }; } function cacheLevel(_arg1:int=0):void{ var _local2:BitmapData; var _local3:Bitmap; var _local4:Sprite; var _local5:Rectangle; var _local6:Matrix; var _local7:Sprite = new level_screens(); var _local8:int; while (_local8 < _local7.numChildren) { if ((_local7.getChildAt(_local8) is Sprite)){ _local4 = (_local7.getChildAt(_local8) as Sprite); _local5 = new Rectangle(_local4.x, _local4.y, _local4.width, _local4.height); _local4.visible = false; _local2 = new BitmapData(_local5.width, _local5.height, true, 0); _local6 = new Matrix(); _local6.translate(-(_local5.x), -(_local5.y)); _local2.draw(_level, _local6); _local3 = new Bitmap(); _local3.bitmapData = _local2; _local3.x = (_arg1 + _local4.x); _local3.y = _local4.y; _scrSheets[_scrSheets.length] = {bitmap:_local3, visible:false, back:false}; _local2 = new BitmapData(_local5.width, _local5.height, true, 0); _local6 = new Matrix(); _local6.translate(-(_local5.x), -(_local5.y)); _local2.draw(_back, _local6); _local3 = new Bitmap(); _local3.bitmapData = _local2; _local3.x = (_arg1 + _local4.x); _local3.y = _local4.y; _scrSheets[_scrSheets.length] = {bitmap:_local3, visible:false, back:true}; }; _local8++; }; } public function destroy():void{ _scrSheets = new Array(); } function makeObjects(_arg1:int=0):void{ var _local2:Cargo; var _local3:Sprite; var _local4:int; while (_local4 < _level.numChildren) { if ((_level.getChildAt(_local4) is Sprite)){ _local3 = (_level.getChildAt(_local4) as Sprite); if (_local3.visible){ if (_local3.name == "box"){ _local2 = new Cargo(_world, (_arg1 + _local3.x), _local3.y, Cargo.BOX, 0); _local3.visible = false; } else { if (_local3.name == "conus"){ _local2 = new Cargo(_world, (_arg1 + _local3.x), _local3.y, Cargo.CONUS, 0); _local3.visible = false; } else { if (_local3.name == "roadlight"){ _local2 = new Cargo(_world, (_arg1 + _local3.x), _local3.y, Cargo.ROAD_LIGHT, 0); _local3.visible = false; } else { if (_local3.name == "barrel"){ _local2 = new Cargo(_world, (_arg1 + _local3.x), _local3.y, Cargo.BARREL, 0); _local3.visible = false; }; }; }; }; }; }; _local4++; }; } private function hideUnloadHandler(_arg1:Event):void{ _unloadEffect.alpha = (_unloadEffect.alpha - 0.1); if (_unloadEffect.alpha <= 0){ _unloadEffect.removeEventListener(Event.ENTER_FRAME, hideUnloadHandler); _world.removeMain(_unloadEffect); _unloadEffect.destroy(); _unloadEffect = null; }; } public function offUnload():void{ if (_unloadEffect){ _unloadEffect.addEventListener(Event.ENTER_FRAME, hideUnloadHandler); }; } private function showUnloadHandler(_arg1:Event):void{ _unloadEffect.alpha = (_unloadEffect.alpha + 0.1); if (_unloadEffect.alpha >= 1){ _unloadEffect.removeEventListener(Event.ENTER_FRAME, showUnloadHandler); }; } private function makeUnloadTimer():void{ _unloadTimer.visible = true; _unloadTimer.x = (_targetPoint.x - (_unloadTimer.width * 0.5)); _unloadTimer.y = (_targetPoint.y - 65); _unloadTimer.addEventListener(Event.ENTER_FRAME, unloadIntervalHandler); } public function resetUnloadTimer():void{ if (_unloadTimer.visible){ _unloadTimer.gotoAndStop(1); _unloadTimer.visible = false; _unloadTimer.removeEventListener(Event.ENTER_FRAME, unloadIntervalHandler); _unloadInterval = UNLOAD_TIME_INT; }; } function makeBody(_arg1:int=0):void{ var _local4:Sprite; var _local2:b2BodyDef = new b2BodyDef(); var _local3:b2PolygonDef = new b2PolygonDef(); _local3.density = 1; _local3.friction = 0.5; _local3.restitution = 0.1; var _local5:int; while (_local5 < _level.numChildren) { if ((((_level.getChildAt(_local5) is Sprite)) && ((_level.getChildAt(_local5) as Sprite).visible))){ _local4 = (_level.getChildAt(_local5) as Sprite); _local3.SetAsOrientedBox((30 / _ds), (11 / _ds), new b2Vec2(((_arg1 + _local4.x) / _ds), (_local4.y / _ds)), (_local4.rotation * (Math.PI / 180))); _local2.userData = new Ground(); if (_local4.visible){ if (!_body){ _body = _world.world.CreateBody(_local2); }; _body.CreateShape(_local3); _local4.visible = false; }; }; _local5++; }; } } }//package com.miningtruck.levels
Section 87
//Cargo (com.miningtruck.objects.Cargo) package com.miningtruck.objects { import flash.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Cargo extends Sprite { private const SCORE_ROAD_LIGHT:int = 50; private const SCORE_BARREL:int = 70; private const SCORE_COAL_SMALL:int = 30; private const SCORE_BOX:int = 80; private const SCORE_COAL_BIG:int = 100; private const SCORE_COAL_MIDDLE:int = 60; private const SCORE_CONUS:int = 10; private var _body:b2Body; private var _variety:int; private var _speedX:Number;// = 0 private var _speedY:Number;// = 0 private var _type:int;// = 0 private var _world:World; public var onTraffic:Boolean;// = false private var _targetX:int;// = 0 private var _crackTime:int;// = 0 private var _targetY:int;// = 0 private var _isMove:Boolean;// = false private var _showTimer:int;// = 0 public var offUnload:Boolean;// = false private var _sprite:Animation; private var _stopTimer:int;// = 0 private var _x:Number;// = 0 private var _y:Number;// = 0 public static const CONUS:int = 4; public static const BARREL:int = 6; public static const BOX:int = 3; public static const ROAD_LIGHT:int = 5; public static const COAL_BIG:int = 2; public static const COAL_MIDDLE:int = 1; public static const COAL_SMALL:int = 0; public function Cargo(_arg1:World, _arg2:Number=0, _arg3:Number=0, _arg4:int=0, _arg5:int=0){ _world = _arg1; _x = _arg2; _y = _arg3; _type = _arg4; switch (_type){ case COAL_SMALL: _variety = int((Math.random() * 4)); _sprite = _world.app.animCache.getAnimation("sprite_coal"); break; case COAL_MIDDLE: _variety = 1; _sprite = _world.app.animCache.getAnimation("sprite_coal_big"); break; case COAL_BIG: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_coal_big"); break; case BOX: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_box"); break; case CONUS: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_conus"); break; case ROAD_LIGHT: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_road_light"); break; case BARREL: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_barrel"); break; }; _sprite.gotoAndStop((_variety + 1)); _sprite.smoothing = true; addChild(_sprite); visible = false; _world.addMain(this); if (_arg5 == 0){ init(); } else { _showTimer = _arg5; addEventListener(Event.ENTER_FRAME, showHandler); }; } public function groundCollision():void{ var _local1:EffectDust; _local1 = _world.getFreeDust(); if (_local1 != null){ _local1.make((x + (Math.random() * 5)), (y - (Math.random() * 10))); }; } private function showHandler(_arg1:Event):void{ _showTimer--; if (_showTimer <= 0){ init(); removeEventListener(Event.ENTER_FRAME, showHandler); if (onTraffic){ _showTimer = 200; addEventListener(Event.ENTER_FRAME, trafficHandler); }; }; } private function makeRoadLight():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.vertexCount = 4; _local2.vertices[0].Set((-3 / World.DRAW_SCALE), (-14 / World.DRAW_SCALE)); _local2.vertices[1].Set((2 / World.DRAW_SCALE), (-14 / World.DRAW_SCALE)); _local2.vertices[2].Set((7 / World.DRAW_SCALE), (17 / World.DRAW_SCALE)); _local2.vertices[3].Set((-7 / World.DRAW_SCALE), (17 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; _sprite.play(); } public function truckCollision():void{ if ((_world.worldTime - _crackTime) > 30){ _crackTime = _world.worldTime; _world.sound(World.SND_CRACKBOX); }; } private function trafficHandler(_arg1:Event):void{ _showTimer--; if (_showTimer <= 0){ _world.trafficLight(); removeEventListener(Event.ENTER_FRAME, trafficHandler); }; } private function init():void{ switch (_type){ case COAL_SMALL: makeCoal(); break; case COAL_BIG: makeCoalBig(); break; case COAL_MIDDLE: makeCoalBig(); break; case BOX: makeBox(); break; case CONUS: makeConus(); break; case ROAD_LIGHT: makeRoadLight(); break; case BARREL: makeBarrel(); break; }; } private function makeCoalBig():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.4; _local2.friction = 0.8; _local2.restitution = 0.2; switch ((_variety + 1)){ case 1: _local2.SetAsBox((21 / World.DRAW_SCALE), (19 / World.DRAW_SCALE)); break; case 2: _local2.SetAsBox((21 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); break; }; _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function onLenta():void{ _stopTimer = 8; if (!_isMove){ _isMove = true; addEventListener(Event.ENTER_FRAME, lentaHandler); }; } private function makeCoal():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.5; _local2.friction = 0.8; _local2.restitution = 0.2; switch ((_variety + 1)){ case 1: _local2.SetAsBox((8 / World.DRAW_SCALE), (6 / World.DRAW_SCALE)); break; case 2: _local2.SetAsBox((7 / World.DRAW_SCALE), (4 / World.DRAW_SCALE)); break; case 3: _local2.SetAsBox((4 / World.DRAW_SCALE), (4 / World.DRAW_SCALE)); break; case 4: _local2.SetAsBox((12 / World.DRAW_SCALE), (5 / World.DRAW_SCALE)); break; }; _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function destroy():void{ removeEventListener(Event.ENTER_FRAME, unloadHandler); removeEventListener(Event.ENTER_FRAME, lentaHandler); removeEventListener(Event.ENTER_FRAME, showHandler); removeEventListener(Event.ENTER_FRAME, trafficHandler); _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; } public function get score():int{ switch (_type){ case COAL_SMALL: return (SCORE_COAL_SMALL); case COAL_MIDDLE: return (SCORE_COAL_MIDDLE); case COAL_BIG: return (SCORE_COAL_BIG); case BOX: return (SCORE_BOX); case CONUS: return (SCORE_CONUS); case ROAD_LIGHT: return (SCORE_ROAD_LIGHT); case BARREL: return (SCORE_BARREL); default: return (0); }; } private function makeBarrel():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.SetAsBox((11 / World.DRAW_SCALE), (14 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; _sprite.play(); } private function lentaHandler(_arg1:Event):void{ _stopTimer--; _body.SetLinearVelocity(new b2Vec2(5, 0)); if (_stopTimer <= 0){ removeEventListener(Event.ENTER_FRAME, lentaHandler); _isMove = false; }; } public function get type():int{ return (_type); } private function unloadHandler(_arg1:Event):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:EffectScore; if (_showTimer <= 0){ x = (x + _speedX); y = (y + _speedY); if (_type == COAL_BIG){ scaleX = (scaleX - 0.05); scaleY = scaleX; }; _local2 = (_targetX - x); _local3 = (_targetY - y); _local4 = int(Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); if ((((_local4 < 10)) || ((scaleX <= 0)))){ _world.addScore(score); _world.cargo = (_world.cargo - 1); _local5 = new EffectScore(_world); _local5.caption = ("+" + score.toString()); _local5.x = (_targetX - 50); _local5.y = (_targetY + 10); _world.sound(World.SND_TUBE); if (offUnload){ _world.unloadComplete(); }; destroy(); }; } else { _showTimer--; }; } private function makeConus():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.vertexCount = 3; _local2.vertices[0].Set(0, (-8 / World.DRAW_SCALE)); _local2.vertices[1].Set((7 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); _local2.vertices[2].Set((-8 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } private function makeBox():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.SetAsBox((14 / World.DRAW_SCALE), (12 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function unload(_arg1:int, _arg2:int, _arg3:int=0):void{ _targetX = _arg1; _targetY = _arg2; _showTimer = _arg3; var _local4:int = (_targetX - x); var _local5:int = (_targetY - y); var _local6:Number = ((Math.atan2(_local5, _local4) / Math.PI) * 180); _speedX = (4 * Math.cos(((_local6 / 180) * Math.PI))); _speedY = (4 * Math.sin(((_local6 / 180) * Math.PI))); addEventListener(Event.ENTER_FRAME, unloadHandler); } } }//package com.miningtruck.objects
Section 88
//EffectBase (com.miningtruck.objects.EffectBase) package com.miningtruck.objects { import flash.display.*; import com.miningtruck.*; public class EffectBase extends Sprite { var _sleep:Boolean;// = false var _world:World; public function EffectBase(_arg1:World){ _world = _arg1; } public function destroy():void{ } public function get sleep():Boolean{ return (_sleep); } public function progress():void{ } public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ } } }//package com.miningtruck.objects
Section 89
//EffectDust (com.miningtruck.objects.EffectDust) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectDust extends EffectBase { private var _sprite:Animation; private var _scale:Number;// = 0 private var _speedX:Number;// = 0 private var _speedY:Number;// = 0 public function EffectDust(_arg1:World){ super(_arg1); } override public function progress():void{ if (_sleep){ return; }; if (_sprite.scaleX < _scale){ _sprite.scaleX = (_sprite.scaleX + 0.1); _sprite.scaleY = _sprite.scaleX; }; x = (x + _speedX); y = (y + _speedY); if ((x + 70) < Math.abs(_world.x)){ destroy(); }; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ var _local5:int; if (_arg4){ _sprite = _world.app.animCache.getAnimation("sprite_fire"); } else { _local5 = int((Math.random() * 2)); switch (_local5){ case 0: _sprite = _world.app.animCache.getAnimation("sprite_smoke1"); break; case 1: _sprite = _world.app.animCache.getAnimation("sprite_smoke2"); break; }; }; x = _arg1; y = (_arg2 + 20); _sprite.play(); _sprite.smoothing = true; _scale = (Math.random() + 0.2); _scale = ((_scale)>1) ? 1 : _scale; _sprite.scaleX = 0; _sprite.scaleY = 0; addChild(_sprite); _sprite.rotation = (Math.random() * 180); _speedX = ((_world.truckSpeed * 0.1) + (((Math.random() * 2) - 1) * 0.5)); if (_arg4){ _speedY = (-(Math.random()) * 4); } else { _speedY = -(Math.abs((_world.truckSpeed * 0.1))); }; _world.addMain(this); _sleep = false; _sprite.addEventListener(Event.COMPLETE, completeHandler); } public function completeHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ if (_sprite){ _world.removeMain(this); _sprite.removeEventListener(Event.COMPLETE, completeHandler); removeChild(_sprite); _sprite.destroy(); _sprite = null; _sleep = true; }; } } }//package com.miningtruck.objects
Section 90
//EffectExplosion (com.miningtruck.objects.EffectExplosion) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectExplosion extends EffectBase { private var _sprite:Animation; public function EffectExplosion(_arg1:World){ super(_arg1); } private function explosionCompleteHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ _sprite.removeEventListener(Event.COMPLETE, explosionCompleteHandler); _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ _sprite = _world.app.animCache.getAnimation("sprite_explosion"); addChild(_sprite); x = _arg1; y = _arg2; _sprite.play(); _sprite.addEventListener(Event.COMPLETE, explosionCompleteHandler); _world.addMain(this); } } }//package com.miningtruck.objects
Section 91
//EffectScore (com.miningtruck.objects.EffectScore) package com.miningtruck.objects { import flash.display.*; import flash.events.*; import com.miningtruck.*; import flash.text.*; public class EffectScore extends EffectBase { private var _sprite:Sprite; private var _lifeTime:int;// = 30 public function EffectScore(_arg1:World){ super(_arg1); _world.addFront(this); _sprite = new fly_score(); addChild(_sprite); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function set lifeTime(_arg1:int):void{ _lifeTime = _arg1; } private function enterFrameHandler(_arg1:Event):void{ y = (y - 2); if (_lifeTime <= 0){ alpha = (alpha - 0.1); if (alpha <= 0){ destroy(); }; } else { _lifeTime--; }; } override public function destroy():void{ _world.removeFront(this); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); removeChild(_sprite); _sprite = null; } public function set caption(_arg1:String):void{ if ((_sprite["tf1"] is TextField)){ (_sprite["tf1"] as TextField).text = _arg1; }; if ((_sprite["tf2"] is TextField)){ (_sprite["tf2"] as TextField).text = _arg1; }; } } }//package com.miningtruck.objects
Section 92
//Ground (com.miningtruck.objects.Ground) package com.miningtruck.objects { import flash.display.*; public class Ground extends Sprite { } }//package com.miningtruck.objects
Section 93
//Lenta (com.miningtruck.objects.Lenta) package com.miningtruck.objects { import flash.display.*; public class Lenta extends Sprite { } }//package com.miningtruck.objects
Section 94
//Truck (com.miningtruck.objects.Truck) package com.miningtruck.objects { import flash.display.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Truck extends Sprite { private var _sprite:Animation; private var _world:World; public function Truck(_arg1:World){ _world = _arg1; _sprite = _world.app.animCache.getAnimation("sprite_truck_body"); _sprite.smoothing = true; addChild(_sprite); } public function set frame(_arg1:int):void{ _sprite.gotoAndStop(_arg1); } public function crash(_arg1:Boolean=false):void{ var _local2:EffectExplosion; if (((((((!(_world.isTruckCrashed)) && ((Math.abs(rotation) > 60)))) && ((Math.abs(rotation) < 360)))) || (_arg1))){ _world.truckCrashed(); frame = 4; _local2 = new EffectExplosion(_world); _local2.make(x, y); }; } public function destroy():void{ removeChild(_sprite); _sprite.destroy(); } } }//package com.miningtruck.objects
Section 95
//Wheel (com.miningtruck.objects.Wheel) package com.miningtruck.objects { import flash.display.*; import Box2D.Dynamics.Joints.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Wheel extends Sprite { private var _world:World; private var _sprite:Animation; private var _motor:b2RevoluteJoint; public function Wheel(_arg1:World){ _world = _arg1; _sprite = _world.app.animCache.getAnimation("sprite_wheel"); _sprite.smoothing = true; addChild(_sprite); _world.addMain(this); } public function set motor(_arg1:b2RevoluteJoint):void{ _motor = _arg1; } public function destroy():void{ _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; _motor = null; } public function groundCollision():void{ var _local1:EffectDust; var _local2:int; while (_local2 < 2) { _local1 = _world.getFreeDust(); if (_local1 != null){ _local1.make((x + (Math.random() * 5)), (y - (Math.random() * 10))); }; _local2++; }; } } }//package com.miningtruck.objects
Section 96
//Button (com.miningtruck.ui.Button) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import com.miningtruck.*; public class Button extends Sprite { private var _isDown:Boolean; private var _button:MovieClip; private var _world:World; private var _label:Label; private var _pause:int;// = 0 private var _stopY:Number;// = 0 public static const BTN_SCORES:int = 3; public static const BTN_BACK:int = 4; public static const BTN_SELECT_LEVEL:int = 6; public static const BTN_FREE_GAMES:int = 5; public static const BTN_NEXT_LEVEL:int = 7; public static const BTN_PLAY:int = 1; public static const BTN_MORE_GAMES:int = 2; public function Button(_arg1:World, _arg2:int, _arg3:int, _arg4:int){ _world = _arg1; x = _arg2; y = _arg3; switch (_arg4){ case BTN_PLAY: _button = new btn_play(); _label = new Label(-2, -2, Label.LABEL_RED); _label.textWidth = 143; break; case BTN_MORE_GAMES: _button = new btn_moregames(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 325; break; case BTN_SCORES: _button = new btn_scores(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 156; break; case BTN_BACK: _button = new btn_back(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 116; break; case BTN_FREE_GAMES: _button = new btn_freegames(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 404; break; case BTN_SELECT_LEVEL: _button = new btn_sellevel(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 280; break; case BTN_NEXT_LEVEL: _button = new btn_nextlevel(); _label = new Label(2, 0, Label.LABEL_RED_MIDDLE); _label.textWidth = 280; break; }; if (_button){ _button.stop(); }; } private function mouseOverHandler(_arg1:MouseEvent):void{ _button.gotoAndStop(2); } public function destroy():void{ if (_button){ removeChild(_button); }; if (_label){ _label.destroy(); }; _button = null; _label = null; } private function mouseDownHandler(_arg1:MouseEvent):void{ y = (y + 2); _isDown = true; } private function hideButtonHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha - 0.2); y = (y + 5); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, hideButtonHandler); destroy(); }; } else { _pause--; }; } private function mouseOutHandler(_arg1:MouseEvent):void{ _button.gotoAndStop(1); if (_isDown){ y = (y - 2); _isDown = false; }; } public function hide(_arg1:int=0):void{ _pause = _arg1; removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(Event.ENTER_FRAME, hideButtonHandler); } public function set caption(_arg1:String):void{ _label.caption = _arg1; } private function mouseUpHandler(_arg1:MouseEvent):void{ if (_isDown){ y = (y - 2); _isDown = false; _world.sound(World.SND_BUTTON); }; } private function showButtonHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha + 0.1); y = lerp(_stopY, y, 0.8); if (alpha >= 1){ alpha = 1; addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); removeEventListener(Event.ENTER_FRAME, showButtonHandler); }; } else { _pause--; }; } public function show(_arg1:int, _arg2:int=0):void{ _stopY = _arg1; _pause = _arg2; alpha = 0; init(); addEventListener(Event.ENTER_FRAME, showButtonHandler); } private function lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + (_arg3 * (_arg2 - _arg1)))); } private function init():void{ if (_button){ _button.buttonMode = true; if (_label){ _label.buttonMode = true; addChild(_label); }; addChild(_button); } else { trace("Button::say -> error btnType"); }; } } }//package com.miningtruck.ui
Section 97
//ButtonLevel (com.miningtruck.ui.ButtonLevel) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import com.miningtruck.*; import flash.text.*; public class ButtonLevel extends MovieClip { private var _lock:Boolean;// = false private var _button:MovieClip; private var _world:World; private var _tag:int;// = -1 public static const LEVEL_SELECT:String = "levelSelect"; public function ButtonLevel(_arg1:World, _arg2:int=1, _arg3:Boolean=false){ _world = _arg1; _lock = _arg3; if (_lock){ _button = new btn_level_lock(); } else { _button = new btn_level(); buttonMode = true; addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); }; _button.gotoAndStop(_arg2); addChild(_button); alpha = 0; } public function get tag():int{ return (_tag); } public function destroy():void{ if (!_lock){ removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); }; removeChild(_button); _button = null; } public function set caption(_arg1:String):void{ if (_button){ if ((_button["tf1"] is TextField)){ (_button["tf1"] as TextField).text = _arg1; }; if ((_button["tf2"] is TextField)){ (_button["tf2"] as TextField).text = _arg1; }; }; } private function enterFrameHandler(_arg1:Event):void{ scaleX = (scaleX + 0.15); scaleY = scaleX; alpha = (alpha - 0.15); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); }; } private function mouseUpHandler(_arg1:Event):void{ _world.sound(World.SND_BUTTON); dispatchEvent(new Event(LEVEL_SELECT)); removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function set tag(_arg1:int):void{ _tag = _arg1; } } }//package com.miningtruck.ui
Section 98
//ButtonMusic (com.miningtruck.ui.ButtonMusic) package com.miningtruck.ui { public class ButtonMusic extends HudButton { public function ButtonMusic(){ _checkMode = true; } } }//package com.miningtruck.ui
Section 99
//ButtonRestart (com.miningtruck.ui.ButtonRestart) package com.miningtruck.ui { public class ButtonRestart extends HudButton { } }//package com.miningtruck.ui
Section 100
//ButtonSound (com.miningtruck.ui.ButtonSound) package com.miningtruck.ui { public class ButtonSound extends HudButton { public function ButtonSound(){ _checkMode = true; } } }//package com.miningtruck.ui
Section 101
//HudButton (com.miningtruck.ui.HudButton) package com.miningtruck.ui { import flash.display.*; import flash.events.*; public class HudButton extends MovieClip { var _checkMode:Boolean;// = false private var _isChecked:Boolean;// = false public function HudButton(){ stop(); buttonMode = true; addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOutHandler(_arg1:MouseEvent):void{ if (_isChecked){ gotoAndStop(3); } else { gotoAndStop(1); }; } private function mouseOverHandler(_arg1:MouseEvent):void{ gotoAndStop(2); } public function get checked():Boolean{ return (_isChecked); } private function mouseUpHandler(_arg1:MouseEvent):void{ if (_checkMode){ _isChecked = !(_isChecked); }; } } }//package com.miningtruck.ui
Section 102
//IcoCargo (com.miningtruck.ui.IcoCargo) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class IcoCargo extends MovieClip { public var tf2:TextField; public var tf1:TextField; public function update(_arg1:int):void{ if (this["tf1"]){ (this["tf1"] as TextField).text = _arg1.toString(); }; if (this["tf2"]){ (this["tf2"] as TextField).text = _arg1.toString(); }; } } }//package com.miningtruck.ui
Section 103
//IcoLevel (com.miningtruck.ui.IcoLevel) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class IcoLevel extends MovieClip { public var tf2:TextField; public var tf1:TextField; public function update(_arg1:String):void{ if (this["tf1"]){ (this["tf1"] as TextField).text = _arg1; }; if (this["tf2"]){ (this["tf2"] as TextField).text = _arg1; }; } } }//package com.miningtruck.ui
Section 104
//IcoTime (com.miningtruck.ui.IcoTime) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class IcoTime extends MovieClip { public var tf2:TextField; public var tf1:TextField; public function update(_arg1:int):void{ if (this["tf1"]){ (this["tf1"] as TextField).text = _arg1.toString(); }; if (this["tf2"]){ (this["tf2"] as TextField).text = _arg1.toString(); }; } } }//package com.miningtruck.ui
Section 105
//Label (com.miningtruck.ui.Label) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import flash.text.*; public class Label extends Sprite { private var _label:Sprite; private var _pause:int;// = 0 private var _stopY:Number;// = 0 public static const LABEL_RED:int = 1; public static const LABEL_PURPLE:int = 5; public static const LABEL_BROWN:int = 8; public static const LABEL_PURPLE_SMALL:int = 6; public static const LABEL_GRAY:int = 3; public static const LABEL_GRAY_BIG:int = 4; public static const LABEL_GREEN:int = 2; public static const LABEL_GRAY_SMALL:int = 9; public static const LABEL_RED_MIDDLE:int = 7; public function Label(_arg1:int, _arg2:int, _arg3:int){ x = _arg1; y = _arg2; switch (_arg3){ case LABEL_RED: _label = new label_red(); break; case LABEL_GREEN: _label = new label_green(); break; case LABEL_GRAY: _label = new label_green(); (_label["tf1"] as TextField).textColor = 11970421; break; case LABEL_GRAY_BIG: _label = new label_red(); (_label["tf1"] as TextField).textColor = 11970421; break; case LABEL_PURPLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 10905025; break; case LABEL_PURPLE_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 10905025; (_label["tf2"] as TextField).textColor = 3551783; break; case LABEL_RED_MIDDLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 12677961; break; case LABEL_BROWN: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 6906444; (_label["tf2"] as TextField).visible = false; break; case LABEL_GRAY_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 11970421; (_label["tf2"] as TextField).textColor = 3617313; break; }; if (_label){ addChild(_label); } else { trace("Label::say -> error labType"); }; } public function hide(_arg1:int=0):void{ _pause = _arg1; addEventListener(Event.ENTER_FRAME, hideLabelHandler); } private function showLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha + 0.1); y = lerp(_stopY, y, 0.8); if (alpha >= 1){ alpha = 1; removeEventListener(Event.ENTER_FRAME, showLabelHandler); }; } else { _pause--; }; } public function set caption(_arg1:String):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.text = _arg1; _local4++; }; } public function set textWidth(_arg1:int):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.width = _arg1; _local3.x = (-(_local3.width) * 0.5); _local4++; }; } public function destroy():void{ if (_label){ removeChild(_label); }; _label = null; } public function show(_arg1:int, _arg2:int=0):void{ _stopY = _arg1; _pause = _arg2; alpha = 0; addEventListener(Event.ENTER_FRAME, showLabelHandler); } private function lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + (_arg3 * (_arg2 - _arg1)))); } private function hideLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha - 0.2); y = (y + 5); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, hideLabelHandler); destroy(); }; } else { _pause--; }; } } }//package com.miningtruck.ui
Section 106
//Loading (com.miningtruck.ui.Loading) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class Loading extends MovieClip { public var tf:TextField; private var _max:int; public function Loading(_arg1:int=0){ _max = _arg1; } public function set text(_arg1:String):void{ (this["tf"] as TextField).text = _arg1; } public function set max(_arg1:int):void{ _max = _arg1; } public function destroy():void{ (this.parent as Sprite).removeChild(this); } public function progress(_arg1:int):void{ _arg1 = ((_arg1)>_max) ? _max : _arg1; var _local2:int = (((_arg1 * 100) / _max) / 10); gotoAndStop((_local2 + 1)); } } }//package com.miningtruck.ui
Section 107
//Scores (com.miningtruck.ui.Scores) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class Scores extends MovieClip { public var tf2:TextField; public var tf1:TextField; public function update(_arg1:int):void{ if (this["tf1"]){ (this["tf1"] as TextField).text = _arg1.toString(); }; if (this["tf2"]){ (this["tf2"] as TextField).text = _arg1.toString(); }; } } }//package com.miningtruck.ui
Section 108
//App (com.miningtruck.App) package com.miningtruck { import flash.display.*; import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.antkarlov.utils.*; import com.miningtruck.ui.*; import flash.text.*; public class App extends MovieClip { private var _cacheList:Array; public var input:KeyObject; private var _bg:Sprite; private var _cacheIndex:int; private var _game:Game; private var _fpsCounter:FPSCounter; private var _loadingBar:Loading; public var animCache:AnimationCache; private var _fps:Sprite; public static const TXT_LEVEL_FAILED:String = "LEVEL FAILED"; public static const TXT_SUBMIT:String = "SUBMIT SCORE"; public static const TXT_MORE_GAMES:String = "PLAY MORE GAMES"; public static const TXT_LEVEL_COMPLETED:String = "LEVEL COMPLETED"; public static const TXT_LEVEL_FAILED_MSG1:String = "You need deliver "; public static const TXT_LEVEL_FAILED_MSG2:String = " items of cargo"; public static const TXT_LEVEL_FAILED_MSG3:String = "to complete the level."; public static const TXT_LOADING:String = "LOADING"; public static const TXT_TOTAL_SCORE:String = "TOTAL SCORE: "; public static const TXT_WHERE_CARGO:String = "Where cargo?"; public static const TXT_LEVEL:String = "LEVEL"; public static const TXT_PLAY:String = "PLAY"; public static const TXT_YOUR_SCORE:String = "YOUR GAME SCORE:"; public static const APP_VER:String = "ver 1.0 - Feb 19, 2010"; public static const TXT_CONGRATULATIONS:String = "CONGRATULATIONS"; public static const SCR_H:int = 400; public static const TXT_PRESS_SPACE:String = "Press space to continue"; public static const TXT_ALL_LEVELS_COMPLETE:String = "ALL LEVELS ARE COMPLETED"; public static const TXT_FREE_GAMES:String = "FREE ADDICTING GAMES"; public static const SCR_W:int = 640; public static const TXT_LEVEL_RESTART:String = "RESTART LEVEL"; public static const TXT_RESTART_HINT:String = "press space key for restart"; public static const TXT_LEVEL_SCORE:String = "LEVEL SCORE: "; public static const TXT_SELECT_LEVEL_BTN:String = "SELECT LEVEL"; public static const TXT_NEXT_LEVEL:String = "NEXT LEVEL"; public static const TXT_BACK:String = "BACK"; public static const TXT_SCORES:String = "SCORES"; public static const TXT_PREPARE:String = "prepare"; public static const TXT_MAIN_MENU:String = "MAIN MENU"; public static const TXT_SELECT_LEVEL:String = "SELECT A LEVEL"; public function App(_arg1:Stage){ _cacheList = new Array(); super(); trace(APP_VER); _arg1.showDefaultContextMenu = false; input = new KeyObject(_arg1); animCache = AnimationCache.getInstance(); animCache.replaceExisting = true; initCacheList(); addEventListener(Event.ENTER_FRAME, cacheHandler); } private function initDebug():void{ _fps = new fps(); _fps.x = 10; _fps.y = 30; addChild(_fps); _fpsCounter = new FPSCounter(); _fpsCounter.addEventListener(FPSCounter.UPDATE_DATA, fpsHandler); } private function fpsHandler(_arg1:Event):void{ if (_fps["tf"] != null){ (_fps["tf"] as TextField).text = ((APP_VER + "\nfps: ") + _fpsCounter.fps.toString()); }; } private function initCacheList():void{ _cacheList.push("sprite_wheel"); _cacheList.push("sprite_truck_body"); _cacheList.push("sprite_bg"); _cacheList.push("sprite_smoke1"); _cacheList.push("sprite_smoke2"); _cacheList.push("sprite_coal"); _cacheList.push("sprite_coal_big"); _cacheList.push("sprite_traffic"); _cacheList.push("sprite_suck"); _cacheList.push("sprite_timer"); _cacheList.push("sprite_box"); _cacheList.push("sprite_conus"); _cacheList.push("sprite_road_light"); _cacheList.push("sprite_barrel"); _cacheList.push("sprite_fire"); _cacheList.push("sprite_explosion"); _bg = new background(); addChild(_bg); _loadingBar = new Loading(_cacheList.length); var _local2 = _loadingBar; with (_local2) { text = TXT_PREPARE; x = ((SCR_W / 2) - (width / 2)); y = (SCR_H / 2); }; addChild(_loadingBar); } private function cacheHandler(_arg1:Event):void{ if (_loadingBar != null){ _loadingBar.progress(_cacheIndex); }; animCache.cacheAnimation(_cacheList[_cacheIndex]); _cacheIndex++; if (_cacheIndex >= _cacheList.length){ removeChild(_bg); _loadingBar.destroy(); _loadingBar = null; removeEventListener(Event.ENTER_FRAME, cacheHandler); _game = new Game(this); addChild(_game); }; } } }//package com.miningtruck
Section 109
//EmbedClip (com.miningtruck.EmbedClip) package com.miningtruck { import flash.display.*; public class EmbedClip extends MovieClip { public function EmbedClip(){ addFrameScript(0, frame1); stop(); } function frame1(){ stop(); } } }//package com.miningtruck
Section 110
//Game (com.miningtruck.Game) package com.miningtruck { import flash.display.*; import flash.events.*; import mochi.as3.*; import com.miningtruck.levels.*; import flash.net.*; import flash.media.*; import com.miningtruck.ui.*; public class Game extends Sprite { private const ACT_GAME_TO_CONGRATULATIONS:int = 14; private const SCREEN_LEVELCOMPLETE:int = 1; private const ACT_GAME_TO_LOADLEVEL:int = 8; private const ACT_SELECTLEVEL_TO_MAINMENU:int = 4; private const ACT_ONGRATULATIONS_TO_MAINMENU:int = 15; private const SCREEN_LEVELFAILED:int = 2; private const SCREEN_OTHER:int = 0; private const ACT_GAME_TO_LEVELCOMPLETE:int = 9; private const ACT_SELECTLEVEL_TO_LOADING:int = 5; private const ACT_GAME_TO_LEVELFAILED:int = 10; private const ACT_LEVELFAILED_TO_LOADLEVEL:int = 13; private const ACT_SHOW_MAINMENU:int = 1; private const ACT_LOADLEVEL_TO_GAME:int = 7; private const ACT_LOADLEVEL:int = 6; private const ACT_LEVELCOMPLETE_TO_SELECTLEVEL:int = 11; private const ACT_LEVELCOMPLETE_TO_LOADLEVEL:int = 12; private const ACT_SHOW_SELECTLEVEL:int = 3; private const ACT_NONE:int = 0; private const ACT_HIDE_MAINMENU:int = 2; private var _btnSelectLevel:Button; private var _logoBox2d:Sprite; private var _loading:Label; private var _btnScores:Button; private var _curMusic:int;// = 0 private var _btnLevel1:ButtonLevel; private var _btnLevel2:ButtonLevel; private var _btnLevel4:ButtonLevel; private var _btnLevel5:ButtonLevel; private var _btnLevel6:ButtonLevel; private var _btnLevel7:ButtonLevel; private var _btnLevel8:ButtonLevel; private var _btnLevel3:ButtonLevel; private var _btnNextLevel:Button; private var _scores:Scores; private var _gameWorld:World; private var _levelCompleted:int;// = 1 private var _loadPause:int;// = 20 private var _curScreen:int;// = 0 private var _btnMoreGames:Button; private var _btnBack:Button; private var _action:int;// = 0 private var _title:Label; private var _credits:Sprite; private var _app:App; private var _hint:Label; private var _btnPlay:Button; private var _btnSound:ButtonSound; private var _restartHint:Label; private var _icoLevel:IcoLevel; private var _btnMusic:ButtonMusic; private var _level:LevelBase; private var _lvlMusic:int;// = -1 private var _icoCargo:IcoCargo; private var _btnFreeGames:Button; private var _logoGame:Sprite; private var _arrows:MovieClip; private var _btnRestart:ButtonRestart; private var _scoreTotal:Label; private var _scoreLevel:Label; private var _levelNum:int;// = 1 private var _icoTime:IcoTime; private var _isMusic:Boolean;// = false private var _bg:Sprite; public var offMusic:Boolean;// = false private var _pause:int; private var _musicChannel:SoundChannel; private static const TOTAL_LEVELS:int = 8; public function Game(_arg1:App){ _app = _arg1; var _local2:SharedObject = SharedObject.getLocal("MiningTruck"); _levelCompleted = int(_local2.data.completeLevels); trace("completed levels:", _levelCompleted); _gameWorld = new World(_arg1); addChild(_gameWorld); _icoTime = new IcoTime(); _icoTime.x = 10; _icoTime.y = 10; addChild(_icoTime); _icoCargo = new IcoCargo(); _icoCargo.x = (App.SCR_W - 10); _icoCargo.y = 10; addChild(_icoCargo); _scores = new Scores(); _scores.x = (App.SCR_W * 0.5); _scores.y = 10; addChild(_scores); _btnMusic = new ButtonMusic(); _btnMusic.x = 15; _btnMusic.y = (App.SCR_H - 15); addChild(_btnMusic); _btnMusic.addEventListener(MouseEvent.MOUSE_UP, musicClickHandler); _btnSound = new ButtonSound(); _btnSound.x = 30; _btnSound.y = (App.SCR_H - 15); addChild(_btnSound); _btnSound.addEventListener(MouseEvent.MOUSE_UP, soundClickHandler); _btnRestart = new ButtonRestart(); _btnRestart.x = 45; _btnRestart.y = (App.SCR_H - 15); addChild(_btnRestart); _btnRestart.addEventListener(MouseEvent.MOUSE_UP, restartClickHandler); _icoLevel = new IcoLevel(); _icoLevel.x = (App.SCR_W - 15); _icoLevel.y = (App.SCR_H - 21); addChild(_icoLevel); _restartHint = new Label((App.SCR_W * 0.5), (App.SCR_H - 100), Label.LABEL_GRAY_SMALL); _restartHint.caption = App.TXT_RESTART_HINT; _restartHint.visible = false; _gameWorld.addEventListener(World.UPDATE_TIME, updateTimeHandler); _gameWorld.addEventListener(World.UPDATE_CARGO, updateCargoHandler); _gameWorld.addEventListener(World.UPDATE_SCORE, updateScoreHandler); _gameWorld.addEventListener(World.SHOW_HINT, showHintHandler); music(); _bg = new background(); addChild(_bg); makeMainMenu(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function destroyLevelComplete():void{ _curScreen = SCREEN_OTHER; removeChild(_title); _title.destroy(); _title = null; removeChild(_scoreLevel); _scoreLevel.destroy(); _scoreLevel = null; removeChild(_scoreTotal); _scoreTotal.destroy(); _scoreTotal = null; removeChild(_btnFreeGames); _btnFreeGames.destroy(); _btnFreeGames = null; removeChild(_btnSelectLevel); _btnSelectLevel.destroy(); _btnSelectLevel = null; removeChild(_btnNextLevel); _btnNextLevel.destroy(); _btnNextLevel = null; removeChild(_hint); _hint.destroy(); _hint = null; } private function makeCongrat():void{ _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); addChild(_bg); _pause = 30; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_CONGRATULATIONS; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_PURPLE); _scoreLevel.caption = App.TXT_ALL_LEVELS_COMPLETE; _scoreLevel.textWidth = 640; _scoreTotal = new Label((App.SCR_W * 0.5), 118, Label.LABEL_GRAY); _scoreTotal.caption = App.TXT_YOUR_SCORE; _scoreTotal.textWidth = 640; _hint = new Label((App.SCR_W * 0.5), 158, Label.LABEL_GRAY_BIG); _hint.caption = _gameWorld.score.toString(); _hint.textWidth = 500; _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_MAIN_MENU; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_SUBMIT; addChild(_btnNextLevel); action(ACT_GAME_TO_CONGRATULATIONS); } public function saveLevelCompleted(_arg1:int):void{ var _local2:SharedObject; if (_levelCompleted < _arg1){ _local2 = SharedObject.getLocal("MiningTruck"); _local2.data.completeLevels = _arg1.toString(); _local2.flush(); _levelCompleted = _arg1; }; } private function toSelectLevelHandler(_arg1:Event):void{ removeLevelCompleteHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; _gameWorld.score = 0; action(ACT_LEVELCOMPLETE_TO_SELECTLEVEL); } public function music():void{ var _local1:Sound; var _local2:*; if (offMusic){ if (_isMusic){ _isMusic = false; _musicChannel.stop(); _musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); }; return; }; if (!_isMusic){ _local2 = new SoundTransform(); _local2.volume = 1; if (_lvlMusic == -1){ _curMusic = int((Math.random() * 2)); _lvlMusic = 0; } else { if (_lvlMusic != _levelNum){ if (_curMusic == 0){ _curMusic = 1; } else { _curMusic = 0; }; _lvlMusic = _levelNum; }; }; switch (_curMusic){ case 0: _local1 = new music_track1(); break; case 1: _local1 = new music_track2(); break; }; if (_local1 != null){ _musicChannel = _local1.play(); _musicChannel.soundTransform = _local2; _musicChannel.addEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); _isMusic = true; }; }; } private function removeLevelFaildeHandlers():void{ _btnFreeGames.removeEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, restartLevelHandler); } private function makeSelectLevel():void{ var _local1:Boolean; _title = new Label((App.SCR_W * 0.5), 30, Label.LABEL_GRAY); _title.caption = App.TXT_SELECT_LEVEL; _title.textWidth = 290; addChild(_title); _title.show(50, 0); _arrows = new arrows(); _arrows.x = 72; _arrows.y = 91; _arrows.alpha = 0; addChild(_arrows); _btnLevel1 = new ButtonLevel(_gameWorld); _btnLevel1.x = 87; _btnLevel1.y = 104; _btnLevel1.caption = (App.TXT_LEVEL + " 1"); _btnLevel1.tag = 1; addChild(_btnLevel1); _local1 = ((_levelCompleted)>=2) ? false : true; _btnLevel2 = new ButtonLevel(_gameWorld, 2, _local1); _btnLevel2.x = 162; _btnLevel2.y = 157; _btnLevel2.caption = (App.TXT_LEVEL + " 2"); _btnLevel2.tag = 2; addChild(_btnLevel2); _local1 = ((_levelCompleted)>=3) ? false : true; _btnLevel3 = new ButtonLevel(_gameWorld, 2, _local1); _btnLevel3.x = 77; _btnLevel3.y = 243; _btnLevel3.caption = (App.TXT_LEVEL + " 3"); _btnLevel3.tag = 3; addChild(_btnLevel3); _local1 = ((_levelCompleted)>=4) ? false : true; _btnLevel4 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel4.x = 210; _btnLevel4.y = 240; _btnLevel4.caption = (App.TXT_LEVEL + " 4"); _btnLevel4.tag = 4; addChild(_btnLevel4); _local1 = ((_levelCompleted)>=5) ? false : true; _btnLevel5 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel5.x = 291; _btnLevel5.y = 326; _btnLevel5.caption = (App.TXT_LEVEL + " 5"); _btnLevel5.tag = 5; addChild(_btnLevel5); _local1 = ((_levelCompleted)>=6) ? false : true; _btnLevel6 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel6.x = 378; _btnLevel6.y = 241; _btnLevel6.caption = (App.TXT_LEVEL + " 6"); _btnLevel6.tag = 6; addChild(_btnLevel6); _local1 = ((_levelCompleted)>=7) ? false : true; _btnLevel7 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel7.x = 494; _btnLevel7.y = 172; _btnLevel7.caption = (App.TXT_LEVEL + " 7"); _btnLevel7.tag = 7; addChild(_btnLevel7); _local1 = ((_levelCompleted)>=8) ? false : true; _btnLevel8 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel8.x = 552; _btnLevel8.y = 297; _btnLevel8.caption = (App.TXT_LEVEL + " 8"); _btnLevel8.tag = 8; addChild(_btnLevel8); _btnBack = new Button(_gameWorld, 130, 300, Button.BTN_BACK); _btnBack.caption = App.TXT_BACK; _btnBack.show(320, 10); addChild(_btnBack); action(ACT_SHOW_SELECTLEVEL); } private function makeLevelFailed():void{ _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); addChild(_bg); _pause = 30; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_LEVEL_FAILED; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_GRAY); _scoreLevel.caption = ((App.TXT_LEVEL_FAILED_MSG1 + _gameWorld.totalCargo.toString()) + App.TXT_LEVEL_FAILED_MSG2); _scoreLevel.textWidth = 640; _scoreTotal = new Label((App.SCR_W * 0.5), 108, Label.LABEL_GRAY); _scoreTotal.caption = App.TXT_LEVEL_FAILED_MSG3; _scoreTotal.textWidth = 640; _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_FREE_GAMES); _btnFreeGames.caption = App.TXT_FREE_GAMES; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_LEVEL_RESTART; addChild(_btnNextLevel); _hint = new Label((App.SCR_W * 0.5), 350, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 408; action(ACT_GAME_TO_LEVELFAILED); } public function action(_arg1:int):void{ _action = _arg1; } private function scoresHandler(_arg1:Event):void{ removeMainMenuHandlers(); showScores(); } private function loadLevel(_arg1:int):void{ if (_level){ _level.resetUnloadTimer(); _level.destroy(); _level = null; }; _gameWorld.clear(); _gameWorld.init(); _icoLevel.update(((App.TXT_LEVEL + " ") + _arg1.toString())); switch (_arg1){ case 1: _level = new Level1(_gameWorld); break; case 2: _level = new Level2(_gameWorld); break; case 3: _level = new Level3(_gameWorld); break; case 4: _level = new Level4(_gameWorld); break; case 5: _level = new Level5(_gameWorld); break; case 6: _level = new Level6(_gameWorld); break; case 7: _level = new Level7(_gameWorld); break; case 8: _level = new Level8(_gameWorld); break; }; _gameWorld.start(_level); _loading.hide(); stage.focus = null; action(ACT_LOADLEVEL_TO_GAME); } private function removeLevelCompleteHandlers():void{ _btnFreeGames.removeEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, nextLevelHandler); } private function removeCongratHandlers():void{ _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, mainMenuHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, submitScoreHandler); } private function levelFailedHandler(_arg1:Event):void{ makeLevelFailed(); } private function updateTimeHandler(_arg1:Event):void{ _icoTime.update(_gameWorld.time); } private function gotoMoreGames():void{ var url = "http://www.freeaddictinggames.com/?utm_source=games&utm_medium=frogpmg"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } private function backHandler(_arg1:Event):void{ removeSelectLevelHandlers(); _btnBack.hide(0); _title.hide(0); action(ACT_SELECTLEVEL_TO_MAINMENU); } private function removeSelectLevelHandlers():void{ _btnLevel1.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel2.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel3.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel4.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel5.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel6.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel7.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel8.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnBack.removeEventListener(MouseEvent.MOUSE_UP, backHandler); } private function musicClickHandler(_arg1:Event):void{ offMusic = _btnMusic.checked; music(); } private function setLevelCompleteHandlers():void{ _btnFreeGames.addEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, nextLevelHandler); } private function destroyLoadLevel():void{ removeChild(_bg); removeChild(_loading); _loading.destroy(); _loading = null; _gameWorld.addEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.addEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.addEventListener(World.LEVEL_RESTART, levelRestartHandler); trace("loadLevel destroyed"); } private function selectLevelHandler(_arg1:Event):void{ if ((_arg1.target is ButtonLevel)){ removeSelectLevelHandlers(); trace("select level: ", (_arg1.target as ButtonLevel).tag); _levelNum = (_arg1.target as ButtonLevel).tag; _btnBack.hide(0); _title.hide(0); action(ACT_SELECTLEVEL_TO_LOADING); }; } private function nextLevel():void{ removeLevelCompleteHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _hint.hide(10); _pause = 20; action(ACT_LEVELCOMPLETE_TO_LOADLEVEL); } private function playHandler(_arg1:Event):void{ removeMainMenuHandlers(); _btnPlay.hide(0); _btnMoreGames.hide(2); _btnScores.hide(4); action(ACT_HIDE_MAINMENU); } public function showScores():void{ var o:Object = {n:[4, 13, 12, 6, 5, 11, 2, 5, 3, 2, 11, 6, 1, 3, 9, 9], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; var boardID:String = o.f(0, ""); MochiScores.showLeaderboard({res:"640x400", onClose:function ():void{ setMainMenuHandlers(); }, boardID:boardID}); } private function mainMenuHandler(_arg1:MouseEvent):void{ removeCongratHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _hint.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; action(ACT_ONGRATULATIONS_TO_MAINMENU); } private function destroyLevelFailed():void{ _curScreen = SCREEN_OTHER; removeChild(_title); _title.destroy(); _title = null; removeChild(_scoreLevel); _scoreLevel.destroy(); _scoreLevel = null; removeChild(_scoreTotal); _scoreTotal.destroy(); _scoreTotal = null; removeChild(_btnFreeGames); _btnFreeGames.destroy(); _btnFreeGames = null; removeChild(_btnSelectLevel); _btnSelectLevel.destroy(); _btnSelectLevel = null; removeChild(_btnNextLevel); _btnNextLevel.destroy(); _btnNextLevel = null; removeChild(_hint); _hint.destroy(); _hint = null; } private function soundClickHandler(_arg1:Event):void{ _gameWorld.offSound = _btnSound.checked; } private function destroySelectLevel():void{ removeChild(_title); _title.destroy(); _title = null; removeChild(_arrows); _arrows = null; _btnLevel1.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel1); _btnLevel1.destroy(); _btnLevel1 = null; _btnLevel2.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel2); _btnLevel2.destroy(); _btnLevel2 = null; _btnLevel3.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel3); _btnLevel3.destroy(); _btnLevel3 = null; _btnLevel4.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel4); _btnLevel4.destroy(); _btnLevel4 = null; _btnLevel5.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel5); _btnLevel5.destroy(); _btnLevel5 = null; _btnLevel6.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel6); _btnLevel6.destroy(); _btnLevel6 = null; _btnLevel7.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel7); _btnLevel7.destroy(); _btnLevel7 = null; _btnLevel8.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel8); _btnLevel8.destroy(); _btnLevel8 = null; _btnBack.removeEventListener(MouseEvent.MOUSE_UP, backHandler); removeChild(_btnBack); _btnBack.destroy(); _btnBack = null; trace("selectLevel destroyed"); } private function submitScoreHandler(_arg1:MouseEvent):void{ var e = _arg1; removeCongratHandlers(); var o:Object = {n:[4, 13, 12, 6, 5, 11, 2, 5, 3, 2, 11, 6, 1, 3, 9, 9], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; var boardID:String = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID, score:_gameWorld.score, onClose:onSubmit}); } private function makeLevelComplete():void{ _levelNum++; if (_levelNum > TOTAL_LEVELS){ _levelNum = TOTAL_LEVELS; }; saveLevelCompleted(_levelNum); _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); addChild(_bg); _pause = 80; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_LEVEL_COMPLETED; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_PURPLE); _scoreLevel.caption = (App.TXT_LEVEL_SCORE + _gameWorld.scoreLevel.toString()); _scoreLevel.textWidth = 408; _scoreTotal = new Label((App.SCR_W * 0.5), 108, Label.LABEL_PURPLE_SMALL); _scoreTotal.caption = (App.TXT_TOTAL_SCORE + _gameWorld.score.toString()); _scoreTotal.textWidth = 408; _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_FREE_GAMES); _btnFreeGames.caption = App.TXT_FREE_GAMES; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_NEXT_LEVEL; addChild(_btnNextLevel); _hint = new Label((App.SCR_W * 0.5), 350, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 408; action(ACT_GAME_TO_LEVELCOMPLETE); } private function restartClickHandler(_arg1:Event):void{ if (_level.isUnload){ return; }; if (_gameWorld.enableControls){ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); }; } private function enterFrameHandler(_arg1:Event):void{ switch (_curScreen){ case SCREEN_LEVELCOMPLETE: if (_app.input.isDown(32)){ _gameWorld.sound(World.SND_BUTTON); nextLevel(); _curScreen = SCREEN_OTHER; }; break; case SCREEN_LEVELFAILED: if (_app.input.isDown(32)){ restartLevel(); _curScreen = SCREEN_OTHER; }; break; }; if (_action == ACT_NONE){ return; }; switch (_action){ case ACT_SHOW_MAINMENU: _logoGame.alpha = (_logoGame.alpha + 0.1); _logoBox2d.alpha = _logoGame.alpha; _credits.alpha = _logoGame.alpha; if (_logoGame.alpha >= 1){ _btnPlay.show(200, 5); _btnMoreGames.show(0x0101, 10); _btnScores.show(307, 15); setMainMenuHandlers(); action(ACT_NONE); }; break; case ACT_HIDE_MAINMENU: _logoGame.alpha = (_logoGame.alpha - 0.1); _logoBox2d.alpha = _logoGame.alpha; _credits.alpha = _logoGame.alpha; if (_logoGame.alpha <= 0){ action(ACT_NONE); destroyMainMenu(); makeSelectLevel(); }; break; case ACT_SHOW_SELECTLEVEL: _btnLevel1.alpha = (_btnLevel1.alpha + 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha >= 1){ setSelectLevelHandlers(); action(ACT_NONE); }; break; case ACT_SELECTLEVEL_TO_MAINMENU: _btnLevel1.alpha = (_btnLevel1.alpha - 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha <= 0){ action(ACT_NONE); destroySelectLevel(); makeMainMenu(); }; break; case ACT_SELECTLEVEL_TO_LOADING: _btnLevel1.alpha = (_btnLevel1.alpha - 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha <= 0){ action(ACT_NONE); destroySelectLevel(); makeLoadLevel(); }; break; case ACT_LOADLEVEL: _loadPause--; if (_loadPause <= 0){ _gameWorld.offMotor(); _loadPause = 20; action(ACT_NONE); loadLevel(_levelNum); }; break; case ACT_LOADLEVEL_TO_GAME: _bg.y = (_bg.y + 20); if (_bg.y >= (App.SCR_H + 60)){ if (!offMusic){ offMusic = true; music(); offMusic = false; music(); }; action(ACT_NONE); destroyLoadLevel(); }; break; case ACT_GAME_TO_LOADLEVEL: _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _bg.y = 0; if (_restartHint.visible){ _restartHint.visible = false; removeChild(_restartHint); }; action(ACT_NONE); makeLoadLevel(); }; break; case ACT_GAME_TO_LEVELCOMPLETE: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.caption = (App.TXT_TOTAL_SCORE + _gameWorld.score.toString()); _scoreTotal.show(138, 10); _btnFreeGames.show(216, 15); _btnSelectLevel.show(268, 20); _btnNextLevel.show(320, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELCOMPLETE; setLevelCompleteHandlers(); }; } else { _pause--; }; break; case ACT_GAME_TO_LEVELFAILED: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(138, 10); _btnFreeGames.show(216, 15); _btnSelectLevel.show(268, 20); _btnNextLevel.show(320, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELFAILED; setLevelFailedHandlers(); }; } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_SELECTLEVEL: if (_pause <= 0){ action(ACT_NONE); destroyLevelComplete(); makeSelectLevel(); } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelComplete(); makeLoadLevel(); } else { _pause--; }; break; case ACT_LEVELFAILED_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelFailed(); makeLoadLevel(); } else { _pause--; }; break; case ACT_GAME_TO_CONGRATULATIONS: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(148, 10); addChild(_hint); _hint.show(188, 15); _btnSelectLevel.show(268, 25); _btnNextLevel.show(320, 30); setCongratHandlers(); }; } else { _pause--; }; break; case ACT_ONGRATULATIONS_TO_MAINMENU: if (_pause <= 0){ action(ACT_NONE); destroyCongrat(); makeMainMenu(); } else { _pause--; }; break; }; } private function updateCargoHandler(_arg1:Event):void{ _icoCargo.update(_gameWorld.cargo); } private function moreGamesHandler(_arg1:Event):void{ gotoMoreGames(); } private function setCongratHandlers():void{ _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, mainMenuHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, submitScoreHandler); } private function levelCompleteHandler(_arg1:Event):void{ if (_levelNum == TOTAL_LEVELS){ makeCongrat(); } else { makeLevelComplete(); }; } private function setLevelFailedHandlers():void{ _btnFreeGames.addEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, restartLevelHandler); } private function restartLevel():void{ removeLevelFaildeHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _hint.hide(10); _gameWorld.resetScore(); _pause = 20; action(ACT_LEVELFAILED_TO_LOADLEVEL); } private function setSelectLevelHandlers():void{ _btnLevel1.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel2.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel3.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel4.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel5.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel6.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel7.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel8.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnBack.addEventListener(MouseEvent.MOUSE_UP, backHandler); } private function destroyCongrat():void{ removeChild(_title); _title.destroy(); _title = null; removeChild(_scoreLevel); _scoreLevel.destroy(); _scoreLevel = null; removeChild(_scoreTotal); _scoreTotal.destroy(); _scoreTotal = null; removeChild(_btnSelectLevel); _btnSelectLevel.destroy(); _btnSelectLevel = null; removeChild(_btnNextLevel); _btnNextLevel.destroy(); _btnNextLevel = null; removeChild(_hint); _hint.destroy(); _hint = null; } private function makeMainMenu():void{ _logoGame = new logo_game(); _logoGame.x = int(((App.SCR_W * 0.5) - (_logoGame.width * 0.5))); _logoGame.y = 50; addChild(_logoGame); _logoBox2d = new logo_box2d(); _logoBox2d.x = 10; _logoBox2d.y = ((App.SCR_H - _logoBox2d.height) - 10); addChild(_logoBox2d); _btnPlay = new Button(_gameWorld, (App.SCR_W * 0.5), 180, Button.BTN_PLAY); _btnPlay.caption = App.TXT_PLAY; addChild(_btnPlay); _btnMoreGames = new Button(_gameWorld, (App.SCR_W * 0.5), 237, Button.BTN_MORE_GAMES); _btnMoreGames.caption = App.TXT_MORE_GAMES; addChild(_btnMoreGames); _btnScores = new Button(_gameWorld, (App.SCR_W * 0.5), 287, Button.BTN_SCORES); _btnScores.caption = App.TXT_SCORES; addChild(_btnScores); _credits = new label_credits(); _credits.x = (App.SCR_W * 0.5); _credits.y = (App.SCR_H - 40); _credits.alpha = 0; addChild(_credits); _logoGame.alpha = 0; _logoBox2d.alpha = 0; action(ACT_SHOW_MAINMENU); } private function nextLevelHandler(_arg1:Event):void{ nextLevel(); } private function setMainMenuHandlers():void{ _btnPlay.addEventListener(MouseEvent.MOUSE_UP, playHandler); _btnMoreGames.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnScores.addEventListener(MouseEvent.MOUSE_UP, scoresHandler); } private function restartLevelHandler(_arg1:Event):void{ restartLevel(); } private function onSubmit():void{ removeCongratHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _hint.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; action(ACT_ONGRATULATIONS_TO_MAINMENU); } private function destroyMainMenu():void{ removeChild(_logoGame); _logoGame = null; removeChild(_logoBox2d); _logoBox2d = null; removeChild(_btnPlay); _btnPlay = null; removeChild(_btnMoreGames); _btnMoreGames = null; removeChild(_btnScores); _btnScores = null; removeChild(_credits); _credits = null; trace("mainMenu destroyed"); } private function showHintHandler(_arg1:Event):void{ _restartHint.x = (App.SCR_W * 0.5); _restartHint.y = (App.SCR_H - 80); _restartHint.visible = true; addChild(_restartHint); _restartHint.show((App.SCR_H - 60)); } private function levelRestartHandler(_arg1:Event):void{ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); } private function updateScoreHandler(_arg1:Event):void{ _scores.update(_gameWorld.score); } private function freeGamesHandler(_arg1:Event):void{ gotoMoreGames(); } private function makeLoadLevel():void{ _loading = new Label((App.SCR_W * 0.5), ((App.SCR_H * 0.5) - 10), Label.LABEL_GRAY); _loading.x = (_loading.x - (_loading.width * 0.5)); _loading.caption = App.TXT_LOADING; _loading.show((App.SCR_H * 0.5), 0); addChild(_loading); action(ACT_LOADLEVEL); } private function musicCompleteHandler(_arg1:Event):void{ _musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); _isMusic = false; music(); } private function removeMainMenuHandlers():void{ _btnPlay.removeEventListener(MouseEvent.MOUSE_UP, playHandler); _btnMoreGames.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnScores.removeEventListener(MouseEvent.MOUSE_UP, scoresHandler); } } }//package com.miningtruck
Section 111
//World (com.miningtruck.World) package com.miningtruck { import flash.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import flash.utils.*; import com.miningtruck.objects.*; import flash.geom.*; import com.miningtruck.levels.*; import flash.media.*; public class World extends Sprite { private var _sndDrive:Boolean;// = false private var _fireInterval:int;// = 0 public var app:App; private var _truckBody:Truck; private var _layerDebug:Sprite; private var _layerMain:Sprite; private var _layerBg:Animation; private var _offSound:Boolean;// = false private var _axle2:b2Body; private var _timer:Timer; private var _axle1:b2Body; private var _hintInterval:int;// = 0 private var _wheel1:b2Body; private var _wheel2:b2Body; private var _layerBack:Sprite; private var _truck:b2Body; private var _transDrive:SoundTransform; private var _scBibi:SoundChannel; private var _effectList:Array; private var _totalCargo:int;// = 0 private var _enableControls:Boolean;// = false private var _motor1:b2RevoluteJoint; private var _truckIsCrashed:Boolean;// = false public var worldTime:int;// = 0 private var _motor2:b2RevoluteJoint; private var _spring1:b2PrismaticJoint; private var _spring2:b2PrismaticJoint; public var world:b2World; private var _score:int;// = 0 private var _level:LevelBase; private var _sndBibi:Boolean;// = false private var _scoreLevel:int;// = 0 private var _time:int;// = 0 private var _cargo:int;// = 0 private var _traffic:Animation; private var _scMotor:SoundChannel; private var _scDrive:SoundChannel; private var _isHint:Boolean;// = false private var _layerFront:Sprite; public static const SND_BUTTON:int = 6; public static const SND_TUBE:int = 4; public static const UPDATE_TIME:String = "updateTime"; public static const SND_BIBI:int = 2; public static const TIME_STEP:Number = 0.0166666666666667; public static const SND_CRACKBOX:int = 5; public static const SHOW_HINT:String = "showHint"; public static const UPDATE_SCORE:String = "updateScore"; public static const LEVEL_RESTART:String = "levelRestart"; public static const SND_BOX_CRASH:int = 3; public static const SND_EXPLOSION:int = 8; public static const SND_BONUS:int = 10; public static const SND_ADDSCORE:int = 9; public static const SND_MOTOR:int = 0; public static const UPDATE_CARGO:String = "updateCargo"; public static const SND_SCORE:int = 7; public static const SND_DRIVE:int = 1; public static const DRAW_SCALE:Number = 30; public static const LEVEL_COMPLETE:String = "levelComplete"; public static const ITERATIONS:int = 30; public static const LEVEL_FAILED:String = "levelFailed"; public function World(_arg1:App){ app = _arg1; _effectList = new Array(); _layerBg = app.animCache.getAnimation("sprite_bg"); _layerBack = new Sprite(); _layerMain = new Sprite(); _layerFront = new Sprite(); addChild(_layerBg); addChild(_layerBack); addChild(_layerMain); addChild(_layerFront); _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, timeHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true); _transDrive = new SoundTransform(); } public function removeFront(_arg1):void{ _layerFront.removeChild(_arg1); } public function getCargo():Array{ var _local1:Array = new Array(); var _local2:int; while (_local2 < _layerMain.numChildren) { if ((_layerMain.getChildAt(_local2) is Cargo)){ _local1[_local1.length] = (_layerMain.getChildAt(_local2) as Cargo); }; _local2++; }; return (_local1); } public function addFront(_arg1):void{ _layerFront.addChild(_arg1); } public function sound(_arg1:int, _arg2:Boolean=false):void{ var _local3:Sound; var _local5:*; if (_offSound){ if (_scMotor){ _scMotor.stop(); _scMotor.removeEventListener(Event.SOUND_COMPLETE, motorCompleteHandler); }; if (_scDrive){ _scDrive.removeEventListener(Event.SOUND_COMPLETE, driveCompleteHandler); }; return; }; var _local4:SoundChannel = new SoundChannel(); switch (_arg1){ case SND_MOTOR: if (_scMotor){ _scMotor.removeEventListener(Event.SOUND_COMPLETE, motorCompleteHandler); }; _local3 = new snd_motor(); _local5 = new SoundTransform(); _local5.volume = 0.5; _scMotor = _local3.play(); _scMotor.soundTransform = _local5; _scMotor.addEventListener(Event.SOUND_COMPLETE, motorCompleteHandler); return; case SND_DRIVE: if (_scDrive){ _scDrive.removeEventListener(Event.SOUND_COMPLETE, driveCompleteHandler); }; _local3 = new snd_drive(); _scDrive = _local3.play(); _scDrive.soundTransform = _transDrive; _scDrive.addEventListener(Event.SOUND_COMPLETE, driveCompleteHandler); return; case SND_BIBI: _local3 = new snd_bibi(); _scBibi = _local3.play(); _scBibi.addEventListener(Event.SOUND_COMPLETE, bibiCompleteHandler); return; case SND_BOX_CRASH: _local3 = new snd_crash(); break; case SND_TUBE: _local3 = new snd_tube(); break; case SND_CRACKBOX: _local3 = new snd_crash(); break; case SND_BUTTON: _local3 = new snd_button(); break; case SND_SCORE: _local3 = new snd_score(); break; case SND_EXPLOSION: _local3 = new snd_explosion(); break; case SND_ADDSCORE: _local3 = new snd_addscore(); break; case SND_BONUS: _local3 = new snd_bonus(); break; }; if (_local3 != null){ _local4 = _local3.play(); }; } public function get scoreLevel():int{ return (_scoreLevel); } private function enterFrameHandler(_arg1:Event):void{ var _local3:EffectDust; if (!_enableControls){ return; }; worldTime++; if (((app.input.isDown(32)) && (!(_level.isUnload)))){ dispatchEvent(new Event(LEVEL_RESTART)); _enableControls = false; return; }; if (((app.input.isDown(88)) && (!(_truckIsCrashed)))){ _truckBody.crash(true); return; }; var _local2:int; while (_local2 < _effectList.length) { (_effectList[_local2] as EffectBase).progress(); _local2++; }; if (!_truckIsCrashed){ if (((!(_sndBibi)) && (app.input.isDown(13)))){ sound(SND_BIBI); _sndBibi = true; }; if (((!(_sndDrive)) && (((app.input.isDown(40)) || (app.input.isDown(38)))))){ sound(SND_DRIVE); _sndDrive = true; } else { if (((((_sndDrive) && (((app.input.isDown(40)) || (app.input.isDown(38)))))) && ((_transDrive.volume < 1)))){ _transDrive.volume = (_transDrive.volume + 0.1); _scDrive.soundTransform = _transDrive; } else { if (((((_sndDrive) && (!(app.input.isDown(40))))) && (!(app.input.isDown(38))))){ if (_scDrive){ _transDrive.volume = (_transDrive.volume - 0.025); _scDrive.soundTransform = _transDrive; if (_transDrive.volume <= 0){ _scDrive.stop(); _scDrive.removeEventListener(Event.COMPLETE, driveCompleteHandler); _transDrive.volume = 0.9; _sndDrive = false; }; }; }; }; }; _motor1.SetMotorSpeed(((15 * Math.PI) * (app.input.isDown(40)) ? -1 : (app.input.isDown(38)) ? 1 : 0)); _motor1.SetMaxMotorTorque((((app.input.isDown(40)) || (app.input.isDown(38)))) ? 25 : 1); if (_motor2){ _motor2.SetMotorSpeed(((15 * Math.PI) * (app.input.isDown(40)) ? -1 : (app.input.isDown(38)) ? 1 : 0)); _motor2.SetMaxMotorTorque((((app.input.isDown(40)) || (app.input.isDown(38)))) ? 25 : 1); }; _spring1.SetMaxMotorForce((40 + Math.abs((800 * Math.pow(_spring1.GetJointTranslation(), 2))))); _spring1.SetMotorSpeed(((_spring1.GetMotorSpeed() - (10 * _spring1.GetJointTranslation())) * 0.4)); _spring2.SetMaxMotorForce((40 + Math.abs((800 * Math.pow(_spring2.GetJointTranslation(), 2))))); _spring2.SetMotorSpeed((-4 * Math.pow(_spring2.GetJointTranslation(), 1))); if ((((((_truck.GetLinearVelocity().x > 0)) && (app.input.isDown(40)))) || ((((_truck.GetLinearVelocity().x < 0)) && (app.input.isDown(38)))))){ _truckBody.frame = 2; } else { if ((((_truck.GetLinearVelocity().x < 0)) && (app.input.isDown(40)))){ _truckBody.frame = 3; } else { _truckBody.frame = 1; }; }; } else { if ((worldTime - _fireInterval) > 2){ _local3 = getFreeDust(); if (_local3 != null){ _local3.make((_truckBody.x + (Math.random() * 40)), (_truckBody.y - (Math.random() * 30)), 0, true); }; _local3 = getFreeDust(); if (_local3 != null){ _local3.make(_wheel2.m_userData.x, (_wheel2.m_userData.y - (Math.random() * 5)), 0, true); }; _fireInterval = worldTime; if (((!(_isHint)) && (((worldTime - _hintInterval) > 30)))){ _isHint = true; dispatchEvent(new Event(SHOW_HINT)); }; }; }; scroll(); _truck.ApplyTorque((30 * (app.input.isDown(37)) ? -1 : (app.input.isDown(39)) ? 1 : 0)); world.Step(TIME_STEP, ITERATIONS); render(); } public function init():void{ var _local2:int; var _local3:b2Body; var _local4:b2BodyDef; var _local5:b2PolygonDef; var _local6:b2CircleDef; _isHint = false; _truckIsCrashed = false; _scoreLevel = 0; x = 0; y = 0; var _local1:b2AABB = new b2AABB(); _local1.lowerBound.Set(-50, -50); _local1.upperBound.Set(500, 50); world = new b2World(_local1, new b2Vec2(0, 20), true); var _local7:* = new b2ContactListener(); world.SetContactListener(_local7); } public function makeTruck(_arg1:Number, _arg2:Number):void{ var _local3:int; var _local4:b2Body; var _local5:b2BodyDef; var _local6:b2PolygonDef; var _local7:b2CircleDef; var _local8:b2RevoluteJointDef; var _local9:b2PrismaticJointDef; _local5 = new b2BodyDef(); _local5.position.Set((_arg1 / DRAW_SCALE), (_arg2 / DRAW_SCALE)); _truckBody = new Truck(this); addMain(_truckBody); _local5.userData = _truckBody; _truck = world.CreateBody(_local5); _local5.userData = null; _local6 = new b2PolygonDef(); _local6.density = 2; _local6.friction = 0.5; _local6.restitution = 0.2; _local6.filter.groupIndex = -1; _local6.SetAsBox(3, 0.1); _truck.CreateShape(_local6); _local6.density = 1E-5; _local6.SetAsOrientedBox(0.2, 0.6, new b2Vec2(3, 0.2), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.5, 0.5, new b2Vec2(1.8, -0.6), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.5, 0.1, new b2Vec2(-3, -0.3), (Math.PI / 3)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.8, 0.1, new b2Vec2(0.2, -0.6), (-(Math.PI) / 3)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.8, 0.1, new b2Vec2(1.3, -1.3), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.1, 0.2, new b2Vec2(2.2, -1.4), 0); _truck.CreateShape(_local6); _local6.density = 2; var _local10:Number = 1.7; var _local11:Number = -1.5; _local6.SetAsOrientedBox(0.4, 0.15, new b2Vec2(_local11, 0.3), (Math.PI / 2)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.4, 0.15, new b2Vec2(_local10, 0.3), (-(Math.PI) / 2)); _truck.CreateShape(_local6); _truck.SetMassFromShapes(); _local6.density = 1; _axle1 = world.CreateBody(_local5); _local6.SetAsOrientedBox(0.4, 0.1, new b2Vec2((_local11 - (0.6 * Math.cos((Math.PI / 2)))), (0.9 * Math.sin((Math.PI / 2)))), (-(Math.PI) / 2)); _axle1.CreateShape(_local6); _axle1.SetMassFromShapes(); _local9 = new b2PrismaticJointDef(); _local9.Initialize(_truck, _axle1, _axle1.GetWorldCenter(), new b2Vec2(Math.cos((Math.PI / 2)), Math.sin((Math.PI / 2)))); _local9.lowerTranslation = -0.3; _local9.upperTranslation = 0.3; _local9.enableLimit = true; _local9.enableMotor = true; _spring1 = (world.CreateJoint(_local9) as b2PrismaticJoint); _axle2 = world.CreateBody(_local5); _local6.SetAsOrientedBox(0.4, 0.1, new b2Vec2((_local10 + (0.6 * Math.cos((-(Math.PI) / 2)))), (0.9 * Math.sin((Math.PI / 3)))), (Math.PI / 2)); _axle2.CreateShape(_local6); _axle2.SetMassFromShapes(); _local9.Initialize(_truck, _axle2, _axle2.GetWorldCenter(), new b2Vec2(-(Math.cos((Math.PI / 2))), Math.sin((Math.PI / 2)))); _spring2 = (world.CreateJoint(_local9) as b2PrismaticJoint); _local7 = new b2CircleDef(); _local7.radius = 0.7; _local7.density = 0.1; _local7.friction = 60; _local7.restitution = 0.2; _local7.filter.groupIndex = -1; _local5 = new b2BodyDef(); _local5.allowSleep = false; var _local12:Wheel = new Wheel(this); _local5.userData = _local12; _local5.position.Set((_axle1.GetWorldCenter().x - (0.3 * Math.cos((Math.PI / 2)))), (_axle1.GetWorldCenter().y + (0.3 * Math.sin((Math.PI / 2))))); _wheel1 = world.CreateBody(_local5); _wheel1.CreateShape(_local7); _wheel1.SetMassFromShapes(); var _local13:Wheel = new Wheel(this); _local5.userData = _local13; _local5.position.Set((_axle2.GetWorldCenter().x + (0.3 * Math.cos((-(Math.PI) / 2)))), (_axle2.GetWorldCenter().y - (0.3 * Math.sin((-(Math.PI) / 2))))); _wheel2 = world.CreateBody(_local5); _wheel2.CreateShape(_local7); _wheel2.SetMassFromShapes(); _local8 = new b2RevoluteJointDef(); _local8.enableMotor = true; _local8.Initialize(_axle1, _wheel1, _wheel1.GetWorldCenter()); _motor1 = (world.CreateJoint(_local8) as b2RevoluteJoint); _local8.Initialize(_axle2, _wheel2, _wheel2.GetWorldCenter()); _motor2 = (world.CreateJoint(_local8) as b2RevoluteJoint); _local12.motor = _motor1; _local13.motor = _motor2; } public function trafficLight(_arg1:int=2):void{ if (_traffic){ _traffic.gotoAndStop(_arg1); if (_arg1 == 2){ sound(SND_BIBI); }; }; } private function bibiCompleteHandler(_arg1:Event):void{ _sndBibi = false; _scBibi.removeEventListener(Event.SOUND_COMPLETE, bibiCompleteHandler); } public function truckCrashed(_arg1:Boolean=true):void{ sound(SND_EXPLOSION); _truckIsCrashed = _arg1; world.DestroyJoint(_motor2); _motor2 = null; offMotor(); _scDrive.stop(); _motor1.SetMotorSpeed(0); _hintInterval = worldTime; } public function addBack(_arg1):void{ _layerBack.addChild(_arg1); } public function set score(_arg1:int):void{ _score = _arg1; dispatchEvent(new Event(UPDATE_SCORE)); } public function makeTraffic(_arg1:int, _arg2:int):void{ _traffic = app.animCache.getAnimation("sprite_traffic"); _traffic.x = _arg1; _traffic.y = _arg2; addMain(_traffic); } public function get truckSpeed():Number{ return (_truck.GetLinearVelocity().x); } public function offMotor():void{ if (_scMotor){ _scMotor.stop(); }; } public function clear():void{ if (_scMotor){ _scMotor.stop(); _scMotor.removeEventListener(Event.COMPLETE, motorCompleteHandler); }; if (_scDrive){ _scDrive.stop(); _scDrive.removeEventListener(Event.COMPLETE, driveCompleteHandler); }; _layerBg.x = (Math.random() * -640); _layerBg.y = 0; while (_layerBack.numChildren > 0) { _layerBack.removeChildAt(0); }; while (_layerMain.numChildren > 0) { if ((_layerMain.getChildAt(0) is EffectBase)){ (_layerMain.getChildAt(0) as EffectBase).destroy(); } else { if ((_layerMain.getChildAt(0) is Cargo)){ (_layerMain.getChildAt(0) as Cargo).destroy(); } else { if ((_layerMain.getChildAt(0) is Wheel)){ (_layerMain.getChildAt(0) as Wheel).destroy(); } else { _layerMain.removeChildAt(0); }; }; }; }; while (_layerFront.numChildren > 0) { if ((_layerFront.getChildAt(0) is EffectBase)){ (_layerFront.getChildAt(0) as EffectBase).destroy(); } else { _layerFront.removeChildAt(0); }; }; world = null; trace("world clear"); } public function removeMain(_arg1):void{ _layerMain.removeChild(_arg1); } public function unloadComplete():void{ var _local1:EffectScore; var _local2:int; _level.offUnload(); _timer.stop(); trace("cargo count:", _cargo); if (_cargo <= 0){ trace("level complete!"); _local2 = (_time * 3); addScore(_local2); _local1 = new EffectScore(this); _local1.lifeTime = 60; _local1.caption = (((("Time " + _time.toString()) + " x 3 = ") + _local2.toString()) + " bonus!"); _local1.x = (Math.abs(x) + (App.SCR_W * 0.5)); _local1.y = (Math.abs(y) + (App.SCR_H * 0.5)); sound(SND_BONUS); dispatchEvent(new Event(LEVEL_COMPLETE)); } else { trace("need more cargo"); dispatchEvent(new Event(LEVEL_FAILED)); }; } public function get enableControls():Boolean{ return (_enableControls); } public function start(_arg1:LevelBase):void{ _level = _arg1; _timer.start(); _enableControls = true; sound(SND_MOTOR); } public function addScore(_arg1:int):void{ _score = (_score + _arg1); _scoreLevel = (_scoreLevel + _arg1); sound(SND_ADDSCORE); dispatchEvent(new Event(UPDATE_SCORE)); } public function get isTruckCrashed():Boolean{ return (_truckIsCrashed); } public function set cargo(_arg1:int):void{ _cargo = ((_arg1)<=0) ? 0 : _arg1; dispatchEvent(new Event(UPDATE_CARGO)); } public function resetScore():void{ _score = (_score - _scoreLevel); _scoreLevel = 0; } public function removeBack(_arg1):void{ _layerBack.removeChild(_arg1); } public function get score():int{ return (_score); } public function set time(_arg1:int):void{ _time = _arg1; dispatchEvent(new Event(UPDATE_TIME)); } private function motorCompleteHandler(_arg1:Event):void{ sound(SND_MOTOR); } private function render():void{ var _local1:b2Body = world.GetBodyList(); while (_local1) { if (_local1.m_userData != null){ _local1.m_userData.x = (_local1.GetPosition().x * DRAW_SCALE); _local1.m_userData.y = (_local1.GetPosition().y * DRAW_SCALE); _local1.m_userData.rotation = (((_local1.GetAngle() / Math.PI) * 180) % 360); }; _local1 = _local1.m_next; }; } public function get truckPosition():Point{ return (new Point(_truckBody.x, _truckBody.y)); } public function set totalCargo(_arg1:int):void{ _totalCargo = _arg1; cargo = _arg1; } public function getFreeDust():EffectDust{ var _local2:EffectDust; var _local1:int; while (_local1 < _effectList.length) { if ((_effectList[_local1] as EffectBase).sleep){ return ((_effectList[_local1] as EffectDust)); }; _local1++; }; if (_effectList.length < 60){ _local2 = new EffectDust(this); _effectList[_effectList.length] = _local2; return (_local2); }; return (null); } public function set enableControls(_arg1:Boolean):void{ _enableControls = _arg1; } public function get cargo():int{ return (_cargo); } public function unloadFail():void{ trace("unload fail"); var _local1:EffectScore = new EffectScore(this); _local1.lifeTime = 60; _local1.caption = App.TXT_WHERE_CARGO; _local1.x = (Math.abs(x) + (App.SCR_W * 0.5)); _local1.y = (Math.abs(y) + (App.SCR_H * 0.5)); dispatchEvent(new Event(LEVEL_FAILED)); } public function set offSound(_arg1:Boolean):void{ _offSound = _arg1; sound(SND_MOTOR); } private function timeHandler(_arg1:Event):void{ _time--; dispatchEvent(new Event(UPDATE_TIME)); if (_time <= 0){ _timer.stop(); }; } public function get time():int{ return (_time); } private function scroll():void{ var _local3:Number; var _local1:Number = ((x - (((-(DRAW_SCALE) * _truck.GetWorldCenter().x) + (App.SCR_W / 2)) - (_truck.GetLinearVelocity().x * 10))) / 4); var _local2:Number = ((y - (((-(DRAW_SCALE) * _truck.GetWorldCenter().y) + ((2 * App.SCR_H) / 4)) - (_truck.GetLinearVelocity().y * 6))) / 3); x = (x - _local1); _layerBg.x = (_layerBg.x + _local1); _layerBg.x = (_layerBg.x + ((((_local1 > 0.5)) || ((_local1 < -0.5)))) ? (_local1 * -0.1) : 0); if ((y - _local2) < -230){ y = -230; } else { y = (y - _local2); _local3 = (_local2 * 0.5); if ((_layerBg.y + _local3) > 190){ _layerBg.y = 190; } else { _layerBg.y = (_layerBg.y + _local3); }; }; _level.updatePosition(x, y); } public function get totalCargo():int{ return (_totalCargo); } private function driveCompleteHandler(_arg1:Event):void{ sound(SND_DRIVE); } public function addMain(_arg1):void{ _layerMain.addChild(_arg1); } } }//package com.miningtruck
Section 112
//ProcessEvent (com.touchmypixel.events.ProcessEvent) package com.touchmypixel.events { import flash.events.*; public class ProcessEvent extends Event { public var percentage:Number;// = 0 public static const START = "Process.Start"; public static const COMPLETE = "Process.Complete"; public static const PROGRESS = "Process.Progress"; public function ProcessEvent(_arg1:String, _arg2:Number=0, _arg3:Boolean=false, _arg4:Boolean=false){ this.percentage = _arg2; if (_arg1 == COMPLETE){ this.percentage = 1; }; super(_arg1, _arg3, _arg4); } } }//package com.touchmypixel.events
Section 113
//Animation (com.touchmypixel.peepee.utils.Animation) package com.touchmypixel.peepee.utils { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import com.bit101.display.*; public class Animation extends Sprite { private var _cache:Boolean;// = true public var useSpriteSheet:Boolean;// = false public var treatAsLoopedGraphic:Boolean;// = false private var clipData:MovieClip; public var repeat:Boolean;// = true public var frames:Array; public var bitmap:Bitmap; public var speed:Number;// = 1 private var _totalFrames; private var _smooth:Boolean;// = false public var bigBitmap:BigAssCanvas; public var clip:MovieClip; public var rows:Number;// = 0 public var reverse:Boolean;// = false private var _playing:Boolean;// = false public var r:Rectangle; public var cols:Number;// = 0 public var currentFrame:Number;// = 1 public var onEnd:Function; public function Animation(){ frames = []; super(); bitmap = new Bitmap(); bitmap.smoothing = false; addChild(bitmap); } public function set bitmapData(_arg1:BitmapData){ bitmap.bitmapData = _arg1; } public function stop():void{ _playing = false; removeEventListener(Event.ENTER_FRAME, enterFrame); } public function buildCacheFromClip2(_arg1:MovieClip):void{ var _local3:*; var _local4:*; var _local5:*; var _local6:Matrix; clip = _arg1; if (clip["e_bounds"] != null){ _local3 = clip["e_bounds"]; r = new Rectangle(_local3.x, _local3.y, _local3.width, _local3.height); clip["e_bounds"].visible = false; } else { r = clip.getRect(clip); }; cols = Math.floor((2880 / r.width)); rows = Math.ceil((clip.totalFrames / cols)); bigBitmap = new BigAssCanvas(Math.ceil((cols * clip.width)), Math.ceil((rows * clip.height)), true); var _local2:* = 0; while (_local2 <= (clip.totalFrames - 1)) { clip.gotoAndStop((_local2 + 1)); makeAllChildrenGoToFrame(clip, (_local2 + 1)); _local4 = ((_local2 % cols) * r.width); _local5 = (Math.floor((_local2 / cols)) * r.height); _local6 = new Matrix(); _local6.translate(-(r.x), -(r.y)); _local6.scale(clip.scaleX, clip.scaleY); _local6.translate(_local4, _local5); bigBitmap.draw(clip, _local6, null, null); _local2++; }; _totalFrames = clip.totalFrames; } public function gotoAndPlayRandomFrame():void{ gotoAndPlay(Math.ceil((Math.random() * totalFrames))); } public function get totalFrames():Number{ return (clip.totalFrames); } public function destroy(){ stop(); if (parent){ parent.removeChild(this); }; } public function gotoAndStop(_arg1:Number):void{ if (treatAsLoopedGraphic){ if (_arg1 > totalFrames){ _arg1 = (_arg1 % totalFrames); }; }; currentFrame = _arg1; goto(currentFrame); stop(); } public function get playing():Boolean{ return (_playing); } public function play():void{ _playing = true; addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true); } public function nextFrame(_arg1:Boolean=false):void{ if (_arg1){ currentFrame = (currentFrame + speed); } else { currentFrame++; }; if (currentFrame > totalFrames){ currentFrame = 1; }; goto(Math.floor(currentFrame)); } public function gotoAndPlay(_arg1:Number):void{ currentFrame = _arg1; goto(currentFrame); play(); } public function update():void{ stop(); frames = []; buildCacheFromClip(clip); } private function makeAllChildrenGoToFrame(_arg1:MovieClip, _arg2:int):void{ var _local4:*; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = _arg1.getChildAt(_local3); if ((_local4 is MovieClip)){ makeAllChildrenGoToFrame(_local4, _arg2); _local4.gotoAndStop(_arg2); }; _local3++; }; } public function buildCacheFromLibrary(_arg1:String):void{ if (useSpriteSheet){ buildCacheFromClip2(new (getDefinitionByName(_arg1))); } else { buildCacheFromClip(new (getDefinitionByName(_arg1))); }; } private function goto(_arg1:Number):void{ var _local2:*; var _local3:Rectangle; var _local4:Rectangle; if (!_cache){ if (!clipData){ _local2 = getQualifiedClassName(clip); clipData = new (getDefinitionByName(_local2)); _local3 = clipData.getRect(clipData); clipData.x = _local3.x; clipData.y = _local3.y; addChild(clipData); }; clipData.gotoAndStop(_arg1); } else { if (useSpriteSheet){ _local4 = r.clone(); _local4.x = (((currentFrame - 1) % cols) * r.width); _local4.y = (Math.floor(((currentFrame - 1) / cols)) * r.height); if (bitmapData){ bitmapData.dispose(); }; bitmapData = bigBitmap.copyPixelsOut(_local4); bitmap.bitmapData = bitmapData; bitmap.smoothing = _smooth; } else { bitmap.bitmapData = frames[(currentFrame - 1)]; bitmap.smoothing = _smooth; }; }; } public function buildCacheFromClip(_arg1:MovieClip):void{ var _local3:*; var _local4:BitmapData; var _local5:Matrix; clip = _arg1; if (clip["e_bounds"] != null){ _local3 = clip["e_bounds"]; r = new Rectangle(_local3.x, _local3.y, _local3.width, _local3.height); clip["e_bounds"].visible = false; } else { r = clip.getRect(clip); }; var _local2:* = 1; while (_local2 <= clip.totalFrames) { clip.gotoAndStop(_local2); makeAllChildrenGoToFrame(clip, _local2); _local4 = new BitmapData(r.width, r.height, true, 0); _local5 = new Matrix(); _local5.translate(-(r.x), -(r.y)); _local5.scale(clip.scaleX, clip.scaleY); _local4.draw(clip, _local5); frames.push(_local4); _local2++; }; bitmap.x = r.x; bitmap.y = r.y; } public function get smoothing():Boolean{ return (_smooth); } public function enterFrame(_arg1:Event=null):void{ if (reverse){ prevFrame(true); } else { nextFrame(true); }; if (currentFrame >= totalFrames){ if (!repeat){ stop(); }; dispatchEvent(new Event(Event.COMPLETE)); if (onEnd != null){ onEnd(); }; }; } public function set smoothing(_arg1:Boolean):void{ _smooth = _arg1; goto(1); } public function get bitmapData():BitmapData{ return (bitmap.bitmapData); } public function prevFrame(_arg1:Boolean=false):void{ if (_arg1){ currentFrame = (currentFrame - speed); } else { currentFrame--; }; if (currentFrame < 1){ currentFrame = totalFrames; }; goto(Math.floor(currentFrame)); } } }//package com.touchmypixel.peepee.utils
Section 114
//AnimationCache (com.touchmypixel.peepee.utils.AnimationCache) package com.touchmypixel.peepee.utils { import flash.events.*; import flash.utils.*; import com.touchmypixel.events.*; public class AnimationCache extends EventDispatcher { public var currentlyProcessingItem:uint;// = 0 public var cacheQueue:Array; private var animations:Object; public var replaceExisting:Boolean;// = false private static var instance:AnimationCache; public function AnimationCache(){ cacheQueue = []; animations = {}; super(); if (AnimationCache.instance){ throw (new Error("AnimationCache is a Singleton. Don't Instantiate!")); }; instance = this; } public function cacheAnimation(_arg1:String, _arg2:Boolean=false):Animation{ var _local3:Animation; if (((!(animations[_arg1])) || (replaceExisting))){ _local3 = new Animation(); _local3.useSpriteSheet = _arg2; _local3.buildCacheFromLibrary(_arg1); animations[_arg1] = _local3; } else { _local3 = animations[_arg1]; }; return (_local3); } private function process():void{ var _local1:* = cacheQueue[currentlyProcessingItem++]; if (_local1 != null){ cacheAnimation(_local1); dispatchEvent(new ProcessEvent(ProcessEvent.PROGRESS, (currentlyProcessingItem / cacheQueue.length))); setTimeout(process, 1); } else { dispatchEvent(new ProcessEvent(ProcessEvent.COMPLETE)); cacheQueue = []; }; } public function processQueue(){ currentlyProcessingItem = 0; dispatchEvent(new ProcessEvent(ProcessEvent.START)); process(); } public function getAnimation(_arg1):Animation{ var _local2:Animation; if (!animations[_arg1]){ trace(("MISSING ANIMATION :" + _arg1)); return (null); }; _local2 = new Animation(); _local2.frames = animations[_arg1].frames; _local2.bigBitmap = animations[_arg1].bigBitmap; _local2.bitmap.x = animations[_arg1].bitmap.x; _local2.bitmap.y = animations[_arg1].bitmap.y; _local2.cols = animations[_arg1].cols; _local2.rows = animations[_arg1].rows; _local2.r = animations[_arg1].r; _local2.clip = animations[_arg1].clip; _local2.useSpriteSheet = animations[_arg1].useSpriteSheet; _local2.gotoAndStop(1); return (_local2); } public function addToBulkCache(_arg1:Array){ var _local2:*; for each (_local2 in _arg1) { cacheQueue.push(_local2); }; } public static function getInstance():AnimationCache{ return ((instance) ? instance : new (AnimationCache)); } } }//package com.touchmypixel.peepee.utils
Section 115
//logo_animation_3 (MiningTruckSpo_fla.logo_animation_3) package MiningTruckSpo_fla { import flash.display.*; import flash.events.*; import flash.net.*; import flash.media.*; public dynamic class logo_animation_3 extends MovieClip { public var urlButton:SimpleButton; public var light:MovieClip; public var getURL:URLRequest; public function logo_animation_3(){ addFrameScript(0, frame1, 29, frame30, 85, frame86); } public function urlClick(_arg1:MouseEvent):void{ navigateToURL(getURL); } function frame1(){ getURL = new URLRequest("http://www.freeaddictinggames.com/"); urlButton.addEventListener(MouseEvent.CLICK, urlClick); } function frame30(){ light.addEventListener(MouseEvent.CLICK, urlClick); light.buttonMode = true; } function frame86(){ stop(); SoundMixer.stopAll(); } } }//package MiningTruckSpo_fla
Section 116
//MainTimeline (MiningTruckSpo_fla.MainTimeline) package MiningTruckSpo_fla { import flash.display.*; import flash.events.*; import mochi.as3.*; import flash.net.*; public dynamic class MainTimeline extends MovieClip { public var getURL:URLRequest; public var program:Sprite; public var programClass:Class; public var logo:MovieClip; public var bgbut:MovieClip; public function MainTimeline(){ addFrameScript(0, frame1, 2, frame3); } function frame1(){ getURL = new URLRequest("http://www.freeaddictinggames.com/"); bgbut.addEventListener(MouseEvent.CLICK, urlClick); bgbut.buttonMode = true; stop(); } function frame3(){ MochiServices.connect("644035f963284a21", root); MochiBot.track(this, "c06678e4"); programClass = (loaderInfo.applicationDomain.getDefinition("com.miningtruck.App") as Class); program = (new programClass(stage) as Sprite); addChild(program); stop(); } public function urlClick(_arg1:MouseEvent):void{ navigateToURL(getURL); } } }//package MiningTruckSpo_fla
Section 117
//Timeline_2 (MiningTruckSpo_fla.Timeline_2) package MiningTruckSpo_fla { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import flash.media.*; import flash.text.*; import flash.system.*; import flash.ui.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class Timeline_2 extends MovieClip { public const AUTO_PLAY:Boolean = false; public const FRAME_RATE_ADJUST:Boolean = true; public const LOADER_FRAME_RATE:Number = 30; public var playBtn:SimpleButton; public var bar:MovieClip; public var initialized:Boolean; public var movieFrameRate:Number; public var logoAnimation:MovieClip; public var loadingComplete:Boolean; public function Timeline_2(){ addFrameScript(0, frame1, 22, frame23, 36, frame37); } function frame37(){ startMovie(); stop(); SoundMixer.stopAll(); } public function enterFrameHandler(_arg1:Event=null):void{ var _local2:Number; if (((((!(movieFrameRate)) && (FRAME_RATE_ADJUST))) && (stage))){ movieFrameRate = stage.frameRate; stage.frameRate = LOADER_FRAME_RATE; }; if (!loadingComplete){ _local2 = 0; if (loaderInfo){ _local2 = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal); }; if (bar){ bar.scaleX = _local2; }; if (_local2 == 1){ loadingComplete = true; if (AUTO_PLAY){ startMovie(); } else { gotoAndPlay("loaded"); }; }; }; } public function init():void{ if (initialized){ return; }; gotoAndStop(1); movieFrameRate = 0; if (((FRAME_RATE_ADJUST) && (stage))){ movieFrameRate = stage.frameRate; stage.frameRate = LOADER_FRAME_RATE; }; initialized = true; stop(); if (((root) && ((root is MovieClip)))){ MovieClip(root).stop(); }; loadingComplete = false; addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true); if (meetsVersion([9, 0, 28, 0])){ addEventListener(Event.REMOVED_FROM_STAGE, cleanup, false, 0, true); }; enterFrameHandler(); } public function playM(_arg1:MouseEvent):void{ logoAnimation.stop(); gotoAndPlay("playOut"); } public function cleanup(_arg1:Event=null){ if (initialized){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); if (meetsVersion([9, 0, 28, 0])){ removeEventListener(Event.REMOVED_FROM_STAGE, cleanup); }; if (movieFrameRate){ stage.frameRate = movieFrameRate; movieFrameRate = 0; }; }; initialized = false; } function frame1(){ initialized = false; init(); } public function meetsVersion(_arg1:Array):Boolean{ var _local2:Array = String(Capabilities.version.split(" ")[1]).split(","); var _local3:uint; while (_local3 < _arg1.length) { if (uint(_local2[_local3]) > _arg1[_local3]){ return (true); }; if (uint(_local2[_local3]) < _arg1[_local3]){ return (false); }; _local3++; }; return (true); } public function startMovie():void{ cleanup(); if (((root) && ((root is MovieClip)))){ MovieClip(root).play(); }; dispatchEvent(new Event(Event.COMPLETE)); } function frame23(){ playBtn.addEventListener(MouseEvent.CLICK, playM); stop(); } } }//package MiningTruckSpo_fla
Section 118
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const NO_USER:String = "NoUser"; public static const IO_ERROR:String = "IOError"; public static const ITEM_NEW:String = "ItemNew"; public static const ITEM_OWNED:String = "ItemOwned"; public static const STORE_ITEMS:String = "StoreItems"; public static const ERROR:String = "Error"; public static const STORE_SHOW:String = "StoreShow"; public static var _inventory:MochiInventory; public static function triggerEvent(_arg1:String, _arg2:Object):void{ MochiSocial.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ MochiSocial.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ MochiSocial.addEventListener(_arg1, _arg2); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function get inventory():MochiInventory{ return (_inventory); } public static function showStore(_arg1:Object=null):void{ MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _inventory = new MochiInventory(); }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _inventory = null; }); } }//package mochi.as3
Section 119
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function reencode():void{ var _local1:uint = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function set value(_arg1:Number):void{ setValue(_arg1); } public function toString():String{ var _local1:String = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function get value():Number{ return (Number(this.toString())); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 120
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3
Section 121
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { import flash.display.*; public class MochiEvents { public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var gameStart:Number; private static var levelStart:Number; public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{ var _local4:Object; var _local3:Object = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function endGame():void{ var _local1:Number = (new Date().time - gameStart); trigger("end_game", {time:_local1}); } public static function startGame():void{ gameStart = new Date().time; trigger("start_game"); } public static function trigger(_arg1:String, _arg2:Object=null):void{ if (_arg2 == null){ _arg2 = {}; } else { if (_arg2["kind"] != undefined){ trace("WARNING: optional arguments package contains key 'id', it will be overwritten"); _arg2["kind"] = _arg1; }; }; MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startLevel():void{ levelStart = new Date().time; trigger("start_level"); } public static function endLevel():void{ var _local1:Number = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 122
//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _names:Array; private var _syncID:Number; private var _consumableProperties:Object; private var _storeSync:Object; private var _outstandingID:Number; private var _syncPending:Boolean; public static const READY:String = "InvReady"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; private static const KEY_SALT:String = " syncMaint"; public static const WRITTEN:String = "InvWritten"; public static const NOT_READY:String = "InvNotReady"; public static const VALUE_ERROR:String = "InvValueError"; private static const CONSUMER_KEY:String = "MochiConsumables"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned); MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut); _storeSync = new Object(); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiSocial.loggedIn){ loggedIn(); } else { loggedOut(); }; } private function newItems(_arg1:Object):void{ if (!this[(_arg1.id + KEY_SALT)]){ this[(_arg1.id + KEY_SALT)] = 0; }; if (!this[_arg1.id]){ this[_arg1.id] = 0; }; this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count); this[_arg1.id] = (this[_arg1.id] + _arg1.count); if (_arg1.privateProperties.consumable){ if (!this[_arg1.privateProperties.tag]){ this[_arg1.privateProperties.tag] = 0; }; this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count)); }; } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } private function itemOwned(_arg1:Object):void{ _storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count}; } private function sync(_arg1:Event=null):void{ var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; var _local2:Object = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; var _local3:Number; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; for (_local2 in _storeSync) { _local3 = _storeSync[_local2].count; if (_consumableProperties[(_local2 + KEY_SALT)]){ _local3 = (_local3 - _consumableProperties[_local2]); }; if (_local3 == 0){ } else { newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties}); }; }; triggerEvent(READY, {}); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 123
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ delete options.clip; MochiServices.setContainer(); MochiServices.bringToTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'")); } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite")); } else { if (Math.floor(n) != n){ trace((("WARNING: Submitted score '" + options.score) + "' will be truncated")); }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.warnID(options.boardID, true); trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal"); MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; var _local2:Object = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'")); } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite")); } else { if (Math.floor(_arg1) != _arg1){ trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated")); }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiServices.warnID(_arg1, true); MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi.as3
Section 124
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; public static var servicesSync:MochiSync = new MochiSync(); private static var _clip:MovieClip; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _loader:Loader; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var methodName:String; var pkg = _arg1; var cb:String = pkg.callbackID; var cblst:Object = _clip._callbacks[cb]; if (!cblst){ return; }; var method:* = cblst.callbackMethod; methodName = ""; var obj:Object = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _clip._callbacks[cb]; } public static function get childClip():Object{ return (_clip); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local4:int; var _local14:Loader; var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; var _local6:Array = [0, 64, 0, 0, 0]; var _local7:MovieClip = new MovieClip(); var _local8:LocalConnection = new LocalConnection(); var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); var _local10:ByteArray = new ByteArray(); var _local11:ByteArray = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); var _local12:uint = ((_local3.length + _local11.length) + 4); var _local13:uint = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var avm1Click:DisplayObject; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; var vars:Object = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); var s = "?"; var i:Number = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); var _local2:Rectangle = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function warnID(_arg1:String, _arg2:Boolean):void{ _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; var _local3:Number = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.7 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_clip._queue))){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String = _arg1.target; var _local3:String = _arg1.event; switch (_local2){ case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "sync": servicesSync.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; var _local2:Object = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { trace(_arg1.loaderInfo); _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_clip._queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var clip = _arg1; loader = new Loader(); var mochiLCURL:String = (_servURL + _mochiLC); var req:URLRequest = new URLRequest(mochiLCURL); var complete:Function = function (_arg1:Object):void{ _mochiLocalConnection = MovieClip(loader.content); listen(); }; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); loader.load(req); clip.addChild(loader); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; var _local4:String = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local4 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local4); _clip = createEmptyMovieClip(_arg2, _local3, 10336, false); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); var _local5:URLRequest = new URLRequest(_local4); var _local6:URLVariables = new URLVariables(); _local6.listenLC = _listenChannelName; _local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local6.api_version = getVersion(); if (widget){ _local6.widget = true; }; _local5.data = _local6; _loader.load(_local5); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if ((clip is DisplayObject)){ if (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; var mc:MovieClip = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 125
//MochiSocial (mochi.as3.MochiSocial) package mochi.as3 { public class MochiSocial { public static const LOGGED_IN:String = "LoggedIn"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const IO_ERROR:String = "IOError"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const USER_INFO:String = "UserInfo"; public static const ERROR:String = "Error"; public static const LOGIN_SHOW:String = "LoginShow"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_SHOWN:String = "LoginShown"; public static const LOGIN_HIDE:String = "LoginHide"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _user_info:Object = null; public static function getVersion():String{ return (MochiServices.getVersion()); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("coins_saveUserProperties", _arg1); } public static function get loggedIn():Boolean{ return (!((_user_info == null))); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function requestLogin():void{ MochiServices.send("coins_requestLogin"); } public static function getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _user_info = _arg1; }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _user_info = null; }); } }//package mochi.as3
Section 126
//MochiSync (mochi.as3.MochiSync) package mochi.as3 { import flash.utils.*; public dynamic class MochiSync extends Proxy { private var _syncContainer:Object; public static var SYNC_PROPERTY:String = "UpdateProperty"; public static var SYNC_REQUEST:String = "SyncRequest"; public function MochiSync():void{ _syncContainer = {}; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if (_syncContainer[_arg1] == _arg2){ return; }; var _local3:String = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } public function triggerEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case SYNC_REQUEST: MochiServices.send("sync_syncronize", _syncContainer); break; case SYNC_PROPERTY: _syncContainer[_arg2.name] = _arg2.value; break; }; } } }//package mochi.as3
Section 127
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var operation:String;// = null public var error:Event;// = null public var data;// = null public var _loader:URLLoader; public var key:String;// = null public function MochiUserData(_arg1:String="", _arg2:Function=null){ this.key = _arg1; this.callback = _arg2; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function request(_arg1:String, _arg2:ByteArray):void{ var _operation = _arg1; var _data = _arg2; operation = _operation; var api_url:String = MochiSocial.getAPIURL(); var api_token:String = MochiSocial.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); var args:URLVariables = new URLVariables(); args.op = _operation; args.key = key; var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3
Section 128
//arrows (arrows) package { import flash.display.*; public dynamic class arrows extends MovieClip { } }//package
Section 129
//background (background) package { import flash.display.*; public dynamic class background extends MovieClip { } }//package
Section 130
//btn_back (btn_back) package { import flash.display.*; public dynamic class btn_back extends MovieClip { } }//package
Section 131
//btn_freegames (btn_freegames) package { import flash.display.*; public dynamic class btn_freegames extends MovieClip { } }//package
Section 132
//btn_level (btn_level) package { import flash.display.*; import flash.text.*; public dynamic class btn_level extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 133
//btn_level_lock (btn_level_lock) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_lock extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 134
//btn_moregames (btn_moregames) package { import flash.display.*; public dynamic class btn_moregames extends MovieClip { } }//package
Section 135
//btn_nextlevel (btn_nextlevel) package { import flash.display.*; public dynamic class btn_nextlevel extends MovieClip { } }//package
Section 136
//btn_play (btn_play) package { import flash.display.*; public dynamic class btn_play extends MovieClip { } }//package
Section 137
//btn_scores (btn_scores) package { import flash.display.*; public dynamic class btn_scores extends MovieClip { } }//package
Section 138
//btn_sellevel (btn_sellevel) package { import flash.display.*; public dynamic class btn_sellevel extends MovieClip { } }//package
Section 139
//fly_score (fly_score) package { import flash.display.*; import flash.text.*; public dynamic class fly_score extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 140
//fps (fps) package { import flash.display.*; import flash.text.*; public dynamic class fps extends MovieClip { public var tf:TextField; } }//package
Section 141
//label_credits (label_credits) package { import flash.display.*; public dynamic class label_credits extends MovieClip { } }//package
Section 142
//label_green (label_green) package { import flash.display.*; import flash.text.*; public dynamic class label_green extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 143
//label_red (label_red) package { import flash.display.*; import flash.text.*; public dynamic class label_red extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 144
//level_screens (level_screens) package { import flash.display.*; public dynamic class level_screens extends MovieClip { } }//package
Section 145
//level1_part1 (level1_part1) package { import flash.display.*; public dynamic class level1_part1 extends MovieClip { public var lenta:MovieClip; public var box:sprite_box; } }//package
Section 146
//level1_part1_back (level1_part1_back) package { import flash.display.*; public dynamic class level1_part1_back extends MovieClip { } }//package
Section 147
//level1_part2 (level1_part2) package { import flash.display.*; public dynamic class level1_part2 extends MovieClip { } }//package
Section 148
//level1_part2_back (level1_part2_back) package { import flash.display.*; public dynamic class level1_part2_back extends MovieClip { } }//package
Section 149
//level1_part3 (level1_part3) package { import flash.display.*; public dynamic class level1_part3 extends MovieClip { public var target:MovieClip; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 150
//level1_part3_back (level1_part3_back) package { import flash.display.*; public dynamic class level1_part3_back extends MovieClip { } }//package
Section 151
//level2_part1 (level2_part1) package { import flash.display.*; public dynamic class level2_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; } }//package
Section 152
//level2_part1_back (level2_part1_back) package { import flash.display.*; public dynamic class level2_part1_back extends MovieClip { } }//package
Section 153
//level2_part2 (level2_part2) package { import flash.display.*; public dynamic class level2_part2 extends MovieClip { } }//package
Section 154
//level2_part2_back (level2_part2_back) package { import flash.display.*; public dynamic class level2_part2_back extends MovieClip { } }//package
Section 155
//level2_part3 (level2_part3) package { import flash.display.*; public dynamic class level2_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var box:sprite_box; public var barrel:sprite_barrel; } }//package
Section 156
//level2_part3_back (level2_part3_back) package { import flash.display.*; public dynamic class level2_part3_back extends MovieClip { } }//package
Section 157
//level3_part1 (level3_part1) package { import flash.display.*; public dynamic class level3_part1 extends MovieClip { public var lenta:MovieClip; public var barrel:sprite_barrel; public var box:sprite_box; } }//package
Section 158
//level3_part1_back (level3_part1_back) package { import flash.display.*; public dynamic class level3_part1_back extends MovieClip { } }//package
Section 159
//level3_part2 (level3_part2) package { import flash.display.*; public dynamic class level3_part2 extends MovieClip { } }//package
Section 160
//level3_part2_back (level3_part2_back) package { import flash.display.*; public dynamic class level3_part2_back extends MovieClip { } }//package
Section 161
//level3_part3 (level3_part3) package { import flash.display.*; public dynamic class level3_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 162
//level3_part3_back (level3_part3_back) package { import flash.display.*; public dynamic class level3_part3_back extends MovieClip { } }//package
Section 163
//level4_part1 (level4_part1) package { import flash.display.*; public dynamic class level4_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; public var barrel:sprite_barrel; } }//package
Section 164
//level4_part1_back (level4_part1_back) package { import flash.display.*; public dynamic class level4_part1_back extends MovieClip { } }//package
Section 165
//level4_part2 (level4_part2) package { import flash.display.*; public dynamic class level4_part2 extends MovieClip { } }//package
Section 166
//level4_part2_back (level4_part2_back) package { import flash.display.*; public dynamic class level4_part2_back extends MovieClip { } }//package
Section 167
//level4_part3 (level4_part3) package { import flash.display.*; public dynamic class level4_part3 extends MovieClip { public var target:MovieClip; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 168
//level4_part3_back (level4_part3_back) package { import flash.display.*; public dynamic class level4_part3_back extends MovieClip { } }//package
Section 169
//level5_part1 (level5_part1) package { import flash.display.*; public dynamic class level5_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; } }//package
Section 170
//level5_part1_back (level5_part1_back) package { import flash.display.*; public dynamic class level5_part1_back extends MovieClip { } }//package
Section 171
//level5_part2 (level5_part2) package { import flash.display.*; public dynamic class level5_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 172
//level5_part2_back (level5_part2_back) package { import flash.display.*; public dynamic class level5_part2_back extends MovieClip { } }//package
Section 173
//level5_part3 (level5_part3) package { import flash.display.*; public dynamic class level5_part3 extends MovieClip { public var target:MovieClip; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 174
//level5_part3_back (level5_part3_back) package { import flash.display.*; public dynamic class level5_part3_back extends MovieClip { } }//package
Section 175
//level6_part1 (level6_part1) package { import flash.display.*; public dynamic class level6_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; } }//package
Section 176
//level6_part1_back (level6_part1_back) package { import flash.display.*; public dynamic class level6_part1_back extends MovieClip { } }//package
Section 177
//level6_part2 (level6_part2) package { import flash.display.*; public dynamic class level6_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 178
//level6_part2_back (level6_part2_back) package { import flash.display.*; public dynamic class level6_part2_back extends MovieClip { } }//package
Section 179
//level6_part3 (level6_part3) package { import flash.display.*; public dynamic class level6_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 180
//level6_part3_back (level6_part3_back) package { import flash.display.*; public dynamic class level6_part3_back extends MovieClip { } }//package
Section 181
//level7_part1 (level7_part1) package { import flash.display.*; public dynamic class level7_part1 extends MovieClip { public var lenta:MovieClip; } }//package
Section 182
//level7_part1_back (level7_part1_back) package { import flash.display.*; public dynamic class level7_part1_back extends MovieClip { } }//package
Section 183
//level7_part2 (level7_part2) package { import flash.display.*; public dynamic class level7_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 184
//level7_part2_back (level7_part2_back) package { import flash.display.*; public dynamic class level7_part2_back extends MovieClip { } }//package
Section 185
//level7_part3 (level7_part3) package { import flash.display.*; public dynamic class level7_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 186
//level7_part3_back (level7_part3_back) package { import flash.display.*; public dynamic class level7_part3_back extends MovieClip { } }//package
Section 187
//level8_part1 (level8_part1) package { import flash.display.*; public dynamic class level8_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; public var barrel:sprite_barrel; } }//package
Section 188
//level8_part1_back (level8_part1_back) package { import flash.display.*; public dynamic class level8_part1_back extends MovieClip { } }//package
Section 189
//level8_part2 (level8_part2) package { import flash.display.*; public dynamic class level8_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 190
//level8_part2_back (level8_part2_back) package { import flash.display.*; public dynamic class level8_part2_back extends MovieClip { } }//package
Section 191
//level8_part3 (level8_part3) package { import flash.display.*; public dynamic class level8_part3 extends MovieClip { public var target:MovieClip; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 192
//level8_part3_back (level8_part3_back) package { import flash.display.*; public dynamic class level8_part3_back extends MovieClip { } }//package
Section 193
//logo_box2d (logo_box2d) package { import flash.display.*; public dynamic class logo_box2d extends MovieClip { } }//package
Section 194
//logo_game (logo_game) package { import flash.display.*; public dynamic class logo_game extends MovieClip { } }//package
Section 195
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 196
//music_track1 (music_track1) package { import flash.media.*; public dynamic class music_track1 extends Sound { } }//package
Section 197
//music_track2 (music_track2) package { import flash.media.*; public dynamic class music_track2 extends Sound { } }//package
Section 198
//snd_addscore (snd_addscore) package { import flash.media.*; public dynamic class snd_addscore extends Sound { } }//package
Section 199
//snd_bibi (snd_bibi) package { import flash.media.*; public dynamic class snd_bibi extends Sound { } }//package
Section 200
//snd_bonus (snd_bonus) package { import flash.media.*; public dynamic class snd_bonus extends Sound { } }//package
Section 201
//snd_button (snd_button) package { import flash.media.*; public dynamic class snd_button extends Sound { } }//package
Section 202
//snd_crash (snd_crash) package { import flash.media.*; public dynamic class snd_crash extends Sound { } }//package
Section 203
//snd_drive (snd_drive) package { import flash.media.*; public dynamic class snd_drive extends Sound { } }//package
Section 204
//snd_explosion (snd_explosion) package { import flash.media.*; public dynamic class snd_explosion extends Sound { } }//package
Section 205
//snd_motor (snd_motor) package { import flash.media.*; public dynamic class snd_motor extends Sound { } }//package
Section 206
//snd_score (snd_score) package { import flash.media.*; public dynamic class snd_score extends Sound { } }//package
Section 207
//snd_tube (snd_tube) package { import flash.media.*; public dynamic class snd_tube extends Sound { } }//package
Section 208
//sprite_barrel (sprite_barrel) package { import flash.display.*; public dynamic class sprite_barrel extends MovieClip { } }//package
Section 209
//sprite_bg (sprite_bg) package { import flash.display.*; public dynamic class sprite_bg extends MovieClip { } }//package
Section 210
//sprite_box (sprite_box) package { import flash.display.*; public dynamic class sprite_box extends MovieClip { } }//package
Section 211
//sprite_coal (sprite_coal) package { import flash.display.*; public dynamic class sprite_coal extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 212
//sprite_coal_big (sprite_coal_big) package { import flash.display.*; public dynamic class sprite_coal_big extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 213
//sprite_conus (sprite_conus) package { import flash.display.*; public dynamic class sprite_conus extends MovieClip { } }//package
Section 214
//sprite_explosion (sprite_explosion) package { import flash.display.*; public dynamic class sprite_explosion extends MovieClip { } }//package
Section 215
//sprite_fire (sprite_fire) package { import flash.display.*; public dynamic class sprite_fire extends MovieClip { } }//package
Section 216
//sprite_road_light (sprite_road_light) package { import flash.display.*; public dynamic class sprite_road_light extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 217
//sprite_smoke1 (sprite_smoke1) package { import flash.display.*; public dynamic class sprite_smoke1 extends MovieClip { } }//package
Section 218
//sprite_smoke2 (sprite_smoke2) package { import flash.display.*; public dynamic class sprite_smoke2 extends MovieClip { } }//package
Section 219
//sprite_suck (sprite_suck) package { import flash.display.*; public dynamic class sprite_suck extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 220
//sprite_timer (sprite_timer) package { import flash.display.*; public dynamic class sprite_timer extends MovieClip { } }//package
Section 221
//sprite_traffic (sprite_traffic) package { import flash.display.*; public dynamic class sprite_traffic extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 222
//sprite_truck_body (sprite_truck_body) package { import flash.display.*; public dynamic class sprite_truck_body extends MovieClip { } }//package
Section 223
//sprite_wheel (sprite_wheel) package { import flash.display.*; public dynamic class sprite_wheel extends MovieClip { } }//package

Library Items

Symbol 1 BitmapUsed by:2
Symbol 2 GraphicUses:1Used by:3
Symbol 3 MovieClip {arrows}Uses:2
Symbol 4 FontUsed by:5 13
Symbol 5 TextUses:4Used by:6
Symbol 6 MovieClip {label_credits}Uses:5
Symbol 7 FontUsed by:8 141
Symbol 8 EditableTextUses:7Used by:9
Symbol 9 MovieClip {fps}Uses:8
Symbol 10 BitmapUsed by:11
Symbol 11 GraphicUses:10Used by:23
Symbol 12 GraphicUsed by:23
Symbol 13 EditableTextUses:4Used by:23
Symbol 14 GraphicUsed by:23
Symbol 15 GraphicUsed by:23
Symbol 16 GraphicUsed by:23
Symbol 17 GraphicUsed by:23
Symbol 18 GraphicUsed by:23
Symbol 19 GraphicUsed by:23
Symbol 20 GraphicUsed by:23
Symbol 21 GraphicUsed by:23
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClip {com.miningtruck.ui.Loading}Uses:11 12 13 14 15 16 17 18 19 20 21 22
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClipUses:24Used by:Timeline
Symbol 26 GraphicUsed by:43
Symbol 27 GraphicUsed by:43
Symbol 28 GraphicUsed by:43
Symbol 29 GraphicUsed by:30
Symbol 30 ButtonUses:29Used by:43
Symbol 31 SoundUsed by:43
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClipUses:32Used by:43
Symbol 34 GraphicUsed by:43
Symbol 35 SoundUsed by:43
Symbol 36 GraphicUsed by:43
Symbol 37 SoundUsed by:43
Symbol 38 GraphicUsed by:43
Symbol 39 GraphicUsed by:43
Symbol 40 ShapeTweeningUsed by:42
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClipUses:40 41Used by:43
Symbol 43 MovieClip {MiningTruckSpo_fla.logo_animation_3}Uses:26 27 28 30 31 33 34 35 36 37 38 39 42Used by:54
Symbol 44 GraphicUsed by:54
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClipUses:45Used by:54
Symbol 47 GraphicUsed by:52 53 54
Symbol 48 GraphicUsed by:54
Symbol 49 ShapeTweeningUsed by:54
Symbol 50 GraphicUsed by:54
Symbol 51 GraphicUsed by:52 53
Symbol 52 ButtonUses:47 51Used by:54
Symbol 53 ButtonUses:47 51Used by:54
Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2}Uses:43 44 46 47 48 49 50 52 53Used by:Timeline
Symbol 55 GraphicUsed by:56 404 422 432 443 455 465
Symbol 56 MovieClip {sprite_barrel}Uses:55Used by:399 404 419 422 429 437 447 450 459 462 465 468 472 486
Symbol 57 GraphicUsed by:58 357 389 404 422 432 443 455 465
Symbol 58 MovieClip {sprite_box}Uses:57Used by:357 383 389 399 404 419 422 429 432 437 440 443 447 450 459 462 465 468 472 486
Symbol 59 GraphicUsed by:60
Symbol 60 MovieClipUses:59Used by:65 68 73 115 138 316
Symbol 61 GraphicUsed by:65
Symbol 62 GraphicUsed by:65
Symbol 63 GraphicUsed by:65
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClip {sprite_coal}Uses:60 61 62 63 64Used by:486
Symbol 66 GraphicUsed by:68
Symbol 67 GraphicUsed by:68
Symbol 68 MovieClip {sprite_coal_big}Uses:60 66 67Used by:486
Symbol 69 GraphicUsed by:70 419
Symbol 70 MovieClip {sprite_conus}Uses:69Used by:389 399 419 422 432 437 443 447 450 459 462 465 468 486
Symbol 71 GraphicUsed by:73
Symbol 72 GraphicUsed by:73
Symbol 73 MovieClip {sprite_road_light}Uses:60 71 72Used by:383 419 429 437 440 447 450 459 462 468 472 486
Symbol 74 GraphicUsed by:88
Symbol 75 GraphicUsed by:88
Symbol 76 GraphicUsed by:88
Symbol 77 GraphicUsed by:88
Symbol 78 GraphicUsed by:88
Symbol 79 GraphicUsed by:88
Symbol 80 GraphicUsed by:88
Symbol 81 GraphicUsed by:88
Symbol 82 GraphicUsed by:88
Symbol 83 GraphicUsed by:88
Symbol 84 GraphicUsed by:88
Symbol 85 GraphicUsed by:88
Symbol 86 GraphicUsed by:88
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClip {sprite_smoke1}Uses:74 75 76 77 78 79 80 81 82 83 84 85 86 87Used by:486
Symbol 89 GraphicUsed by:102
Symbol 90 GraphicUsed by:102
Symbol 91 GraphicUsed by:102
Symbol 92 GraphicUsed by:102
Symbol 93 GraphicUsed by:102
Symbol 94 GraphicUsed by:102
Symbol 95 GraphicUsed by:102
Symbol 96 GraphicUsed by:102
Symbol 97 GraphicUsed by:102
Symbol 98 GraphicUsed by:102
Symbol 99 GraphicUsed by:102
Symbol 100 GraphicUsed by:102
Symbol 101 GraphicUsed by:102
Symbol 102 MovieClip {sprite_smoke2}Uses:89 90 91 92 93 94 95 96 97 98 99 100 101Used by:486
Symbol 103 GraphicUsed by:114
Symbol 104 GraphicUsed by:114
Symbol 105 GraphicUsed by:114
Symbol 106 GraphicUsed by:114
Symbol 107 GraphicUsed by:114
Symbol 108 GraphicUsed by:114
Symbol 109 GraphicUsed by:114
Symbol 110 GraphicUsed by:114
Symbol 111 GraphicUsed by:114
Symbol 112 GraphicUsed by:114
Symbol 113 GraphicUsed by:114
Symbol 114 MovieClipUses:103 104 105 106 107 108 109 110 111 112 113Used by:115
Symbol 115 MovieClip {sprite_suck}Uses:60 114Used by:486
Symbol 116 GraphicUsed by:125
Symbol 117 GraphicUsed by:125
Symbol 118 GraphicUsed by:125
Symbol 119 GraphicUsed by:125
Symbol 120 GraphicUsed by:125
Symbol 121 GraphicUsed by:125
Symbol 122 GraphicUsed by:125
Symbol 123 GraphicUsed by:125
Symbol 124 GraphicUsed by:125
Symbol 125 MovieClip {sprite_bg}Uses:116 117 118 119 120 121 122 123 124Used by:486
Symbol 126 GraphicUsed by:134
Symbol 127 GraphicUsed by:134
Symbol 128 GraphicUsed by:134
Symbol 129 GraphicUsed by:134
Symbol 130 GraphicUsed by:134
Symbol 131 GraphicUsed by:134
Symbol 132 GraphicUsed by:134
Symbol 133 GraphicUsed by:134
Symbol 134 MovieClip {sprite_timer}Uses:126 127 128 129 130 131 132 133Used by:486
Symbol 135 GraphicUsed by:138
Symbol 136 GraphicUsed by:138 144
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClip {sprite_traffic}Uses:60 135 136 137Used by:486
Symbol 139 GraphicUsed by:144
Symbol 140 GraphicUsed by:144
Symbol 141 TextUses:7Used by:144
Symbol 142 GraphicUsed by:144
Symbol 143 GraphicUsed by:144
Symbol 144 MovieClip {sprite_truck_body}Uses:139 140 141 136 142 143Used by:486
Symbol 145 GraphicUsed by:146
Symbol 146 MovieClip {sprite_wheel}Uses:145Used by:486
Symbol 147 BitmapUsed by:148
Symbol 148 GraphicUses:147Used by:149
Symbol 149 MovieClip {background}Uses:148Used by:486
Symbol 150 BitmapUsed by:151
Symbol 151 GraphicUses:150Used by:154
Symbol 152 BitmapUsed by:153
Symbol 153 GraphicUses:152Used by:154
Symbol 154 MovieClip {btn_moregames}Uses:151 153Used by:486
Symbol 155 BitmapUsed by:156
Symbol 156 GraphicUses:155Used by:159
Symbol 157 BitmapUsed by:158
Symbol 158 GraphicUses:157Used by:159
Symbol 159 MovieClip {btn_play}Uses:156 158Used by:486
Symbol 160 BitmapUsed by:161
Symbol 161 GraphicUses:160Used by:164
Symbol 162 BitmapUsed by:163
Symbol 163 GraphicUses:162Used by:164
Symbol 164 MovieClip {btn_scores}Uses:161 163Used by:486
Symbol 165 FontUsed by:166 167 191 192
Symbol 166 EditableTextUses:165Used by:168
Symbol 167 EditableTextUses:165Used by:168
Symbol 168 MovieClip {label_green}Uses:166 167Used by:486
Symbol 169 FontUsed by:170 171
Symbol 170 EditableTextUses:169Used by:172
Symbol 171 EditableTextUses:169Used by:172
Symbol 172 MovieClip {label_red}Uses:170 171Used by:486
Symbol 173 BitmapUsed by:174
Symbol 174 GraphicUses:173Used by:175
Symbol 175 MovieClip {logo_box2d}Uses:174Used by:486
Symbol 176 BitmapUsed by:177
Symbol 177 GraphicUses:176Used by:178
Symbol 178 MovieClip {logo_game}Uses:177Used by:486
Symbol 179 MovieClip {com.miningtruck.App}Used by:486
Symbol 180 BitmapUsed by:181
Symbol 181 GraphicUses:180Used by:185
Symbol 182 FontUsed by:183 184 186 189 209 210 221 222 235 236 313 314
Symbol 183 EditableTextUses:182Used by:185
Symbol 184 EditableTextUses:182Used by:185
Symbol 185 MovieClip {com.miningtruck.ui.IcoCargo}Uses:181 183 184Used by:486
Symbol 186 EditableTextUses:182Used by:190
Symbol 187 BitmapUsed by:188
Symbol 188 GraphicUses:187Used by:190
Symbol 189 EditableTextUses:182Used by:190
Symbol 190 MovieClip {com.miningtruck.ui.IcoTime}Uses:186 188 189Used by:486
Symbol 191 EditableTextUses:165Used by:193
Symbol 192 EditableTextUses:165Used by:193
Symbol 193 MovieClip {com.miningtruck.ui.Scores}Uses:191 192Used by:486
Symbol 194 BitmapUsed by:195
Symbol 195 GraphicUses:194Used by:198
Symbol 196 BitmapUsed by:197
Symbol 197 GraphicUses:196Used by:198
Symbol 198 MovieClip {com.miningtruck.ui.ButtonMusic}Uses:195 197Used by:486
Symbol 199 BitmapUsed by:200
Symbol 200 GraphicUses:199Used by:203
Symbol 201 BitmapUsed by:202
Symbol 202 GraphicUses:201Used by:203
Symbol 203 MovieClip {com.miningtruck.ui.ButtonSound}Uses:200 202Used by:486
Symbol 204 BitmapUsed by:205
Symbol 205 GraphicUses:204Used by:208
Symbol 206 BitmapUsed by:207
Symbol 207 GraphicUses:206Used by:208
Symbol 208 MovieClip {com.miningtruck.ui.ButtonRestart}Uses:205 207Used by:486
Symbol 209 EditableTextUses:182Used by:220
Symbol 210 EditableTextUses:182Used by:220
Symbol 211 GraphicUsed by:220 229
Symbol 212 BitmapUsed by:213
Symbol 213 GraphicUses:212Used by:220 229
Symbol 214 BitmapUsed by:215
Symbol 215 GraphicUses:214Used by:220
Symbol 216 BitmapUsed by:217
Symbol 217 GraphicUses:216Used by:220
Symbol 218 BitmapUsed by:219
Symbol 219 GraphicUses:218Used by:220
Symbol 220 MovieClip {btn_level}Uses:209 210 211 213 215 217 219Used by:486
Symbol 221 EditableTextUses:182Used by:229
Symbol 222 EditableTextUses:182Used by:229
Symbol 223 BitmapUsed by:224
Symbol 224 GraphicUses:223Used by:229
Symbol 225 BitmapUsed by:226
Symbol 226 GraphicUses:225Used by:229
Symbol 227 BitmapUsed by:228
Symbol 228 GraphicUses:227Used by:229
Symbol 229 MovieClip {btn_level_lock}Uses:221 222 211 213 224 226 228Used by:486
Symbol 230 BitmapUsed by:231
Symbol 231 GraphicUses:230Used by:234
Symbol 232 BitmapUsed by:233
Symbol 233 GraphicUses:232Used by:234
Symbol 234 MovieClip {btn_back}Uses:231 233Used by:486
Symbol 235 EditableTextUses:182Used by:237
Symbol 236 EditableTextUses:182Used by:237
Symbol 237 MovieClip {fly_score}Uses:235 236Used by:486
Symbol 238 BitmapUsed by:239
Symbol 239 GraphicUses:238Used by:242
Symbol 240 BitmapUsed by:241
Symbol 241 GraphicUses:240Used by:242
Symbol 242 MovieClip {btn_freegames}Uses:239 241Used by:486
Symbol 243 BitmapUsed by:244
Symbol 244 GraphicUses:243Used by:247
Symbol 245 BitmapUsed by:246
Symbol 246 GraphicUses:245Used by:247
Symbol 247 MovieClip {btn_sellevel}Uses:244 246Used by:486
Symbol 248 BitmapUsed by:249
Symbol 249 GraphicUses:248Used by:252
Symbol 250 BitmapUsed by:251
Symbol 251 GraphicUses:250Used by:252
Symbol 252 MovieClip {btn_nextlevel}Uses:249 251Used by:486
Symbol 253 GraphicUsed by:287
Symbol 254 GraphicUsed by:287
Symbol 255 GraphicUsed by:287
Symbol 256 GraphicUsed by:287
Symbol 257 GraphicUsed by:287
Symbol 258 GraphicUsed by:287
Symbol 259 GraphicUsed by:287
Symbol 260 GraphicUsed by:287
Symbol 261 GraphicUsed by:287
Symbol 262 GraphicUsed by:287
Symbol 263 GraphicUsed by:287
Symbol 264 GraphicUsed by:287
Symbol 265 GraphicUsed by:287
Symbol 266 GraphicUsed by:287
Symbol 267 GraphicUsed by:287
Symbol 268 GraphicUsed by:287
Symbol 269 GraphicUsed by:287
Symbol 270 GraphicUsed by:287
Symbol 271 GraphicUsed by:287
Symbol 272 GraphicUsed by:287
Symbol 273 GraphicUsed by:287
Symbol 274 GraphicUsed by:287
Symbol 275 GraphicUsed by:287
Symbol 276 GraphicUsed by:287
Symbol 277 GraphicUsed by:287
Symbol 278 GraphicUsed by:287
Symbol 279 GraphicUsed by:287
Symbol 280 GraphicUsed by:287
Symbol 281 GraphicUsed by:287
Symbol 282 GraphicUsed by:287
Symbol 283 GraphicUsed by:287
Symbol 284 GraphicUsed by:287
Symbol 285 GraphicUsed by:287
Symbol 286 GraphicUsed by:287
Symbol 287 MovieClipUses:253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286Used by:288
Symbol 288 MovieClip {sprite_fire}Uses:287Used by:486
Symbol 289 GraphicUsed by:311
Symbol 290 GraphicUsed by:291
Symbol 291 MovieClipUses:290Used by:311
Symbol 292 GraphicUsed by:293
Symbol 293 MovieClipUses:292Used by:311
Symbol 294 GraphicUsed by:311
Symbol 295 GraphicUsed by:311
Symbol 296 GraphicUsed by:311
Symbol 297 GraphicUsed by:311
Symbol 298 GraphicUsed by:311
Symbol 299 GraphicUsed by:311
Symbol 300 GraphicUsed by:311
Symbol 301 GraphicUsed by:311
Symbol 302 GraphicUsed by:311
Symbol 303 GraphicUsed by:311
Symbol 304 GraphicUsed by:311
Symbol 305 GraphicUsed by:311
Symbol 306 GraphicUsed by:311
Symbol 307 GraphicUsed by:311
Symbol 308 GraphicUsed by:311
Symbol 309 GraphicUsed by:311
Symbol 310 GraphicUsed by:311
Symbol 311 MovieClipUses:289 291 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310Used by:312
Symbol 312 MovieClip {sprite_explosion}Uses:311Used by:486
Symbol 313 EditableTextUses:182Used by:315
Symbol 314 EditableTextUses:182Used by:315
Symbol 315 MovieClip {com.miningtruck.ui.IcoLevel}Uses:313 314Used by:486
Symbol 316 MovieClip {level_screens}Uses:60Used by:486
Symbol 317 GraphicUsed by:357
Symbol 318 GraphicUsed by:357 369 383 389 395 399 405 422 426 432 437 440 441 443 447 450 468
Symbol 319 GraphicUsed by:357 383 389 395 399 409 422 429 437 440 443 459 462 468
Symbol 320 GraphicUsed by:357 369 383 389 395 409 422 426 432 440 447 450 466 468
Symbol 321 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 322 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 433 437 440 443 447 450 455 459 462 465 472
Symbol 323 GraphicUsed by:357 369 395 399 404 409 419 422 432 433 437 440 443 444 447 450 455 459 462 465 472
Symbol 324 GraphicUsed by:357 369 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 459 468 472
Symbol 325 GraphicUsed by:357
Symbol 326 GraphicUsed by:357 389 404 422 432 443 455 465
Symbol 327 GraphicUsed by:357 389 404 422 432 443 455 465
Symbol 328 GraphicUsed by:357 389 404 422 432 443 455 465
Symbol 329 GraphicUsed by:357 389 404 422 432 443 455 465
Symbol 330 GraphicUsed by:357 389 404 422 432 443 455 465
Symbol 331 GraphicUsed by:357 369 383 389 395 399 404 409 422 426 429 432 437 440 443 447 459 462 465 468 472
Symbol 332 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 333 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 443 447 450 455 462 465 468 472
Symbol 334 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 335 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 336 GraphicUsed by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 337 GraphicUsed by:357 369 383 389 395 399 404 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 338 GraphicUsed by:357 369 389 395 399 409 419 426 440 443 447 455 459 468
Symbol 339 GraphicUsed by:357 369 395 399 404 409 422 426 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 340 GraphicUsed by:357 369 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 468 472
Symbol 341 GraphicUsed by:342
Symbol 342 MovieClipUses:341Used by:357 369 383 389 395 399 404 409 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 343 GraphicUsed by:357
Symbol 344 FontUsed by:345 348 349 350 351 352 380
Symbol 345 TextUses:344Used by:357
Symbol 346 BitmapUsed by:347
Symbol 347 GraphicUses:346Used by:357
Symbol 348 TextUses:344Used by:357
Symbol 349 TextUses:344Used by:357
Symbol 350 TextUses:344Used by:357
Symbol 351 TextUses:344Used by:357
Symbol 352 TextUses:344Used by:357
Symbol 353 BitmapUsed by:354
Symbol 354 GraphicUses:353Used by:357
Symbol 355 BitmapUsed by:356
Symbol 356 GraphicUses:355Used by:357
Symbol 357 MovieClip {level1_part1}Uses:317 318 319 320 321 322 323 324 325 326 327 328 329 330 57 331 332 333 334 335 336 337 338 339 340 342 58 343 345 347 348 349 350 351 352 354 356Used by:486
Symbol 358 GraphicUsed by:365 390 405 424 433 444 456 466
Symbol 359 GraphicUsed by:365 374 387 396 401 405 406 420 424 427 430 433 438 441 444 448 451 456 460 463 466 469 473
Symbol 360 GraphicUsed by:365 374 387 390 396 401 405 406 420 424 427 430 438 441 444 448 451 460 463 466 469 473
Symbol 361 GraphicUsed by:365 387 390 405 406 427 430 438 444 451 456 460 463 466 473
Symbol 362 GraphicUsed by:365 390 405 420 424 427 430 433 441 444 448 451 456 463 466 469 473
Symbol 363 GraphicUsed by:365 387 390 406 420 424 427 430 433 438 441 443 444 448 451 456 463 466 469 472 473
Symbol 364 GraphicUsed by:365 390 401 405 424 438 441 444 448 451 456 466 469 473
Symbol 365 MovieClip {level1_part1_back}Uses:358 359 360 361 362 363 364Used by:486
Symbol 366 GraphicUsed by:369
Symbol 367 GraphicUsed by:369 389 395 399 419 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 368 GraphicUsed by:369
Symbol 369 MovieClip {level1_part2}Uses:366 320 321 322 323 318 340 324 367 368 333 338 332 334 335 336 339 337 331 342Used by:486
Symbol 370 GraphicUsed by:374 387 390 395 396 401 405 406 420 424 427 430 433 438 441 444 448 451 456 460 463 466 469 473
Symbol 371 GraphicUsed by:374 405 406 420 424 430 433 438 441 444 448 451 456 460 463 466 469 473
Symbol 372 GraphicUsed by:374 387 390 396 401 405 406 424 427 430 433 438 441 444 451 460 463 466 473
Symbol 373 GraphicUsed by:374 387 390 396 401 405 406 420 424 427 430 433 438 444 448 451 456 460 463 466 469 473
Symbol 374 MovieClip {level1_part2_back}Uses:370 371 372 359 373 360Used by:486
Symbol 375 GraphicUsed by:383 404 430 440 444 450 459 472
Symbol 376 GraphicUsed by:383 399 419 429 440 450 462 472
Symbol 377 GraphicUsed by:383
Symbol 378 GraphicUsed by:383
Symbol 379 GraphicUsed by:383 399 419 429 440 450 462 472
Symbol 380 TextUses:344Used by:383
Symbol 381 BitmapUsed by:382
Symbol 382 GraphicUses:381Used by:383
Symbol 383 MovieClip {level1_part3}Uses:318 375 322 376 321 319 320 377 333 337 378 332 334 335 331 336 342 58 73 379 380 382Used by:486
Symbol 384 GraphicUsed by:387 390 405 406 420 424 427 430 433 438 441 444 451 456 459 460 463 466 469 473
Symbol 385 GraphicUsed by:387 420 424 427 430 433 441 466 469 473
Symbol 386 GraphicUsed by:387 401 420 430 441 451 463 473
Symbol 387 MovieClip {level1_part3_back}Uses:373 361 384 385 372 370 363 359 360 386Used by:486
Symbol 388 GraphicUsed by:389
Symbol 389 MovieClip {level2_part1}Uses:319 322 340 321 320 324 367 318 388 326 327 328 329 330 331 332 334 335 337 336 338 57 333 342 58 70Used by:486
Symbol 390 MovieClip {level2_part1_back}Uses:373 360 370 364 372 358 363 384 361 362Used by:486
Symbol 391 GraphicUsed by:395 404 419 426 429 465
Symbol 392 GraphicUsed by:395
Symbol 393 GraphicUsed by:395 437 459 472
Symbol 394 GraphicUsed by:395 404 409 422 426 429 432 437 440 443 447 450 455 459 462 465 468 472
Symbol 395 MovieClip {level2_part2}Uses:320 321 332 318 322 323 370 319 391 392 340 324 333 334 335 336 393 367 339 337 394 331 338 342Used by:486
Symbol 396 MovieClip {level2_part2_back}Uses:360 370 373 372 359Used by:486
Symbol 397 GraphicUsed by:399
Symbol 398 GraphicUsed by:399
Symbol 399 MovieClip {level2_part3}Uses:397 318 323 319 322 321 376 58 70 56 398 333 334 331 335 336 338 332 339 337 340 324 367 379 342Used by:486
Symbol 400 GraphicUsed by:401
Symbol 401 MovieClip {level2_part3_back}Uses:373 360 372 370 359 364 400 386Used by:486
Symbol 402 GraphicUsed by:404 409 419 429 430 437 455 459 462 472 473
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClip {level3_part1}Uses:322 402 323 375 321 391 403 326 327 328 329 330 331 332 57 333 334 336 339 394 337 335 55 340 324 342 58 56Used by:486
Symbol 405 MovieClip {level3_part1_back}Uses:371 364 361 362 372 370 359 373 360 384 318 358Used by:486
Symbol 406 MovieClip {level3_part2_back}Uses:371 361 384 370 372 359 360 363 373Used by:409 486
Symbol 407 GraphicUsed by:409
Symbol 408 GraphicUsed by:409 429 443 473
Symbol 409 MovieClip {level3_part2}Uses:406 321 319 402 323 322 320 340 407 332 334 335 338 333 336 331 394 408 324 339 342Used by:486
Symbol 410 GraphicUsed by:419
Symbol 411 GraphicUsed by:419 472
Symbol 412 GraphicUsed by:419
Symbol 413 GraphicUsed by:419
Symbol 414 GraphicUsed by:419 422 437 447 459 468
Symbol 415 GraphicUsed by:419
Symbol 416 GraphicUsed by:419 459 462
Symbol 417 GraphicUsed by:419 429 437 459 462 468
Symbol 418 GraphicUsed by:419
Symbol 419 MovieClip {level3_part3}Uses:402 324 323 322 376 321 410 411 412 413 414 415 69 416 333 332 334 336 417 337 335 338 340 367 391 379 418 342 58 56 70 73Used by:486
Symbol 420 MovieClip {level3_part3_back}Uses:384 373 360 359 370 371 385 362 363 386Used by:486
Symbol 421 GraphicUsed by:422
Symbol 422 MovieClip {level4_part1}Uses:323 318 322 367 324 321 320 414 421 326 327 328 329 330 331 332 57 333 55 334 335 337 394 340 336 339 319 58 56 70 342Used by:486
Symbol 423 GraphicUsed by:424 433 444 473
Symbol 424 MovieClip {level4_part1_back}Uses:385 371 384 359 370 360 364 372 423 363 362 373 358Used by:486
Symbol 425 GraphicUsed by:426
Symbol 426 MovieClip {level4_part2}Uses:320 321 324 318 367 391 322 425 394 339 336 332 331 338 333 334 337 340 342Used by:486
Symbol 427 MovieClip {level4_part2_back}Uses:361 385 384 370 359 372 360 373 362 363Used by:486
Symbol 428 GraphicUsed by:429
Symbol 429 MovieClip {level4_part3}Uses:402 367 324 340 322 321 408 319 58 56 73 428 336 334 337 417 332 333 331 394 379 391 376 342Used by:486
Symbol 430 MovieClip {level4_part3_back}Uses:385 371 361 373 384 375 359 370 372 362 363 402 386 360Used by:486
Symbol 431 GraphicUsed by:432
Symbol 432 MovieClip {level5_part1}Uses:318 322 323 321 320 324 340 367 431 326 327 328 329 330 331 332 57 333 55 334 335 336 339 337 394 342 58 70Used by:486
Symbol 433 MovieClip {level5_part1_back}Uses:423 372 370 384 373 363 385 371 359 362 322 323 358Used by:486
Symbol 434 GraphicUsed by:437
Symbol 435 GraphicUsed by:437
Symbol 436 GraphicUsed by:437 455 459 468
Symbol 437 MovieClip {level5_part2}Uses:402 340 321 414 367 318 324 434 319 417 332 337 336 335 334 331 394 333 339 323 322 435 393 436 342 73 70 58 56Used by:486
Symbol 438 MovieClip {level5_part2_back}Uses:371 361 384 359 370 360 363 373 372 364Used by:486
Symbol 439 GraphicUsed by:440
Symbol 440 MovieClip {level5_part3}Uses:318 375 322 323 321 367 324 340 376 320 319 73 58 439 337 336 335 334 332 339 394 331 338 379 342Used by:486
Symbol 441 MovieClip {level5_part3_back}Uses:371 385 384 370 363 362 372 360 364 359 318 386Used by:486
Symbol 442 GraphicUsed by:443
Symbol 443 MovieClip {level6_part1}Uses:323 321 322 318 367 324 319 408 363 442 326 327 328 329 330 331 332 57 333 55 335 336 394 339 334 337 338 340 342 58 70Used by:486
Symbol 444 MovieClip {level6_part1_back}Uses:361 371 384 364 370 372 360 359 375 423 363 362 323 373 358Used by:486
Symbol 445 GraphicUsed by:447
Symbol 446 GraphicUsed by:447
Symbol 447 MovieClip {level6_part2}Uses:445 320 321 414 340 367 324 322 318 323 446 332 334 335 336 394 337 331 339 338 333 342 58 56 70 73Used by:486
Symbol 448 MovieClip {level6_part2_back}Uses:371 364 360 373 359 370 362 363Used by:486
Symbol 449 GraphicUsed by:450
Symbol 450 MovieClip {level6_part3}Uses:375 318 321 367 322 323 376 320 449 324 333 332 336 337 394 335 334 339 340 379 342 58 56 70 73Used by:486
Symbol 451 MovieClip {level6_part3_back}Uses:361 373 384 371 359 370 372 364 360 386 362 363Used by:486
Symbol 452 GraphicUsed by:455
Symbol 453 GraphicUsed by:455
Symbol 454 GraphicUsed by:455
Symbol 455 MovieClip {level7_part1}Uses:452 323 402 322 453 321 454 326 327 328 329 330 332 57 333 55 334 336 335 394 339 338 337 436 340 367 342Used by:486
Symbol 456 MovieClip {level7_part1_back}Uses:361 371 384 363 359 373 362 370 364 358Used by:486
Symbol 457 GraphicUsed by:459
Symbol 458 GraphicUsed by:459
Symbol 459 MovieClip {level7_part2}Uses:322 323 457 414 321 375 384 58 56 324 402 458 436 393 417 335 336 337 394 339 338 332 331 334 319 340 367 416 342 70 73Used by:486
Symbol 460 MovieClip {level7_part2_back}Uses:361 371 372 370 373 384 359 360Used by:486
Symbol 461 GraphicUsed by:462
Symbol 462 MovieClip {level7_part3}Uses:417 323 321 402 319 376 322 367 461 333 334 335 336 331 337 339 394 332 340 416 379 58 56 73 70 342Used by:486
Symbol 463 MovieClip {level7_part3_back}Uses:361 371 384 372 370 373 359 363 360 362 386Used by:486
Symbol 464 GraphicUsed by:465
Symbol 465 MovieClip {level8_part1}Uses:323 322 321 464 326 327 328 329 330 332 57 333 55 334 335 336 337 394 339 331 367 391 342 70 58 56Used by:486
Symbol 466 MovieClip {level8_part1_back}Uses:385 361 371 384 360 373 370 359 364 320 372 362 363 358Used by:486
Symbol 467 GraphicUsed by:468
Symbol 468 MovieClip {level8_part2}Uses:321 70 73 318 324 340 320 414 467 417 436 332 333 334 335 338 336 394 337 331 339 367 58 56 319 342Used by:486
Symbol 469 MovieClip {level8_part2_back}Uses:364 360 385 371 384 370 359 373 362 363Used by:486
Symbol 470 GraphicUsed by:472
Symbol 471 GraphicUsed by:472
Symbol 472 MovieClip {level8_part3}Uses:375 402 323 322 411 376 470 321 363 471 379 393 333 332 334 335 336 339 337 394 367 324 331 340 58 56 73 342Used by:486
Symbol 473 MovieClip {level8_part3_back}Uses:373 360 359 370 372 423 371 384 364 385 361 363 362 402 386 408Used by:486
Symbol 474 Sound {music_track1}Used by:486
Symbol 475 Sound {music_track2}Used by:486
Symbol 476 Sound {snd_bonus}Used by:486
Symbol 477 Sound {snd_addscore}Used by:486
Symbol 478 Sound {snd_explosion}Used by:486
Symbol 479 Sound {snd_button}Used by:486
Symbol 480 Sound {snd_score}Used by:486
Symbol 481 Sound {snd_drive}Used by:486
Symbol 482 Sound {snd_tube}Used by:486
Symbol 483 Sound {snd_motor}Used by:486
Symbol 484 Sound {snd_crash}Used by:486
Symbol 485 Sound {snd_bibi}Used by:486
Symbol 486 MovieClip {com.miningtruck.EmbedClip}Uses:56 58 65 68 70 73 88 102 115 125 134 138 144 146 149 154 159 164 168 172 175 178 179 185 190 193 198 203 208 220 229 234 237 242 247 252 288 312 315 316 357 365 369 374 383 387 389 390 395 396 399 401 404 405 409 406 419 420 422 424 426 427 429 430 432 433 437 438 440 441 443 444 447 448 450 451 455 456 459 460 462 463 465 466 468 469 472 473 474 475 476 477 478 479 480 481 482 483 484 485Used by:Timeline

Instance Names

"bgbut"Frame 1Symbol 25 MovieClip
"logo"Frame 1Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2}
"tf"Symbol 9 MovieClip {fps} Frame 1Symbol 8 EditableText
"tf"Symbol 23 MovieClip {com.miningtruck.ui.Loading} Frame 1Symbol 13 EditableText
"urlButton"Symbol 43 MovieClip {MiningTruckSpo_fla.logo_animation_3} Frame 1Symbol 30 Button
"light"Symbol 43 MovieClip {MiningTruckSpo_fla.logo_animation_3} Frame 30Symbol 33 MovieClip
"logoAnimation"Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2} Frame 1Symbol 43 MovieClip {MiningTruckSpo_fla.logo_animation_3}
"bar"Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2} Frame 1Symbol 46 MovieClip
"playBtn"Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2} Frame 23Symbol 52 Button
"e_bounds"Symbol 65 MovieClip {sprite_coal} Frame 1Symbol 60 MovieClip
"e_bounds"Symbol 68 MovieClip {sprite_coal_big} Frame 1Symbol 60 MovieClip
"e_bounds"Symbol 73 MovieClip {sprite_road_light} Frame 1Symbol 60 MovieClip
"e_bounds"Symbol 115 MovieClip {sprite_suck} Frame 1Symbol 60 MovieClip
"e_bounds"Symbol 138 MovieClip {sprite_traffic} Frame 1Symbol 60 MovieClip
"tf2"Symbol 168 MovieClip {label_green} Frame 1Symbol 166 EditableText
"tf1"Symbol 168 MovieClip {label_green} Frame 1Symbol 167 EditableText
"tf2"Symbol 172 MovieClip {label_red} Frame 1Symbol 170 EditableText
"tf1"Symbol 172 MovieClip {label_red} Frame 1Symbol 171 EditableText
"tf2"Symbol 185 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 183 EditableText
"tf1"Symbol 185 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 184 EditableText
"tf2"Symbol 190 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 186 EditableText
"tf1"Symbol 190 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 189 EditableText
"tf2"Symbol 193 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 191 EditableText
"tf1"Symbol 193 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 192 EditableText
"tf2"Symbol 220 MovieClip {btn_level} Frame 1Symbol 209 EditableText
"tf1"Symbol 220 MovieClip {btn_level} Frame 1Symbol 210 EditableText
"tf2"Symbol 229 MovieClip {btn_level_lock} Frame 1Symbol 221 EditableText
"tf1"Symbol 229 MovieClip {btn_level_lock} Frame 1Symbol 222 EditableText
"tf2"Symbol 237 MovieClip {fly_score} Frame 1Symbol 235 EditableText
"tf1"Symbol 237 MovieClip {fly_score} Frame 1Symbol 236 EditableText
"tf2"Symbol 315 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 313 EditableText
"tf1"Symbol 315 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 314 EditableText
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 357 MovieClip {level1_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"target"Symbol 383 MovieClip {level1_part3} Frame 1Symbol 342 MovieClip
"box"Symbol 383 MovieClip {level1_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 383 MovieClip {level1_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 383 MovieClip {level1_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"roadlight"Symbol 383 MovieClip {level1_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"conus"Symbol 389 MovieClip {level2_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"conus"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"barrel"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"target"Symbol 399 MovieClip {level2_part3} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 404 MovieClip {level3_part1} Frame 1Symbol 56 MovieClip {sprite_barrel}
"box"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"conus"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"target"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 342 MovieClip
"box"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 419 MovieClip {level3_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"box"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 342 MovieClip
"conus"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"barrel"Symbol 422 MovieClip {level4_part1} Frame 1Symbol 56 MovieClip {sprite_barrel}
"box"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"barrel"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"target"Symbol 429 MovieClip {level4_part3} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"conus"Symbol 432 MovieClip {level5_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 73 MovieClip {sprite_road_light}
"conus"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 437 MovieClip {level5_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 440 MovieClip {level5_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"box"Symbol 440 MovieClip {level5_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 440 MovieClip {level5_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"target"Symbol 440 MovieClip {level5_part3} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"conus"Symbol 443 MovieClip {level6_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 447 MovieClip {level6_part2} Frame 1Symbol 73 MovieClip {sprite_road_light}
"target"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 342 MovieClip
"box"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"box"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 450 MovieClip {level6_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 455 MovieClip {level7_part1} Frame 1Symbol 342 MovieClip
"box"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 73 MovieClip {sprite_road_light}
"conus"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 459 MovieClip {level7_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"conus"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 70 MovieClip {sprite_conus}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"target"Symbol 462 MovieClip {level7_part3} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"lenta"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 342 MovieClip
"conus"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 56 MovieClip {sprite_barrel}
"barrel"Symbol 465 MovieClip {level8_part1} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"roadlight"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 73 MovieClip {sprite_road_light}
"box"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"box"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 56 MovieClip {sprite_barrel}
"conus"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"conus"Symbol 468 MovieClip {level8_part2} Frame 1Symbol 70 MovieClip {sprite_conus}
"box"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}
"target"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 342 MovieClip
"box"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"box"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 58 MovieClip {sprite_box}
"barrel"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 56 MovieClip {sprite_barrel}
"roadlight"Symbol 472 MovieClip {level8_part3} Frame 1Symbol 73 MovieClip {sprite_road_light}

Special Tags

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

Labels

"loaded"Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2} Frame 2
"playOut"Symbol 54 MovieClip {MiningTruckSpo_fla.Timeline_2} Frame 24




http://swfchan.com/19/93607/info.shtml
Created: 26/3 -2019 15:30:56 Last modified: 26/3 -2019 15:30:56 Server time: 19/05 -2024 22:03:20