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

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

Hell-Driver.swf

This is the info page for
Flash #121577

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


Text
loading

<p align="left"><font face="ReservoirGrunge" size="12" color="#e9dcda" letterSpacing="0.000000" kerning="1">fps</font></p>

more games

more games

Play

Play

<p align="center"><font face="ReservoirGrunge" size="12" color="#362727" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#b58e75" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#363227" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#c2754b" letterSpacing="0.000000" kerning="1">label</font></p>

art & music by

Umut Dervis

umutdervis.com

helL

driver

helL

driver

<p align="right"><font face="ReservoirGrunge" size="13" color="#302625" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="ReservoirGrunge" size="13" color="#ede9e7" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="ReservoirGrunge" size="13" color="#302625" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="ReservoirGrunge" size="13" color="#ede9e7" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="ReservoirGrunge" size="10" color="#302625" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="ReservoirGrunge" size="10" color="#ede9e7" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#140e0e" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#b77b62" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#363227" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="ReservoirGrunge" size="12" color="#b6a775" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

Back

Back

<p align="center"><font face="ReservoirGrunge" size="10" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="ReservoirGrunge" size="10" color="#fee689" letterSpacing="0.000000" kerning="1">0</font></p>

select level

select level

<p align="right"><font face="ReservoirGrunge" size="12" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="ReservoirGrunge" size="12" color="#8e6060" letterSpacing="0.000000" kerning="1">0</font></p>

Wait for the truck loading finish.

Drive when the green light is on.

Wait for the truck loading finish.

accelerate

brake

balance left

balance right

Drive when the green light is on.

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

restart level

restart level

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 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 Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_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.events.*; import flash.display.*; 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.events.*; import flash.display.*; 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
//PropTween (com.greensock.core.PropTween) package com.greensock.core { public class PropTween { public var priority:int; public var start:Number; public var prevNode:PropTween; public var change:Number; public var target:Object; public var name:String; public var property:String; public var nextNode:PropTween; public var isPlugin:Boolean; public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null, _arg8:int=0){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; if (_arg7){ _arg7.prevNode = this; this.nextNode = _arg7; }; this.priority = _arg8; } } }//package com.greensock.core
Section 79
//SimpleTimeline (com.greensock.core.SimpleTimeline) package com.greensock.core { public class SimpleTimeline extends TweenCore { public var autoRemoveChildren:Boolean; protected var _lastChild:TweenCore; protected var _firstChild:TweenCore; public function SimpleTimeline(_arg1:Object=null){ super(0, _arg1); } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local5:Number; var _local6:TweenCore; var _local4:TweenCore = _firstChild; this.cachedTotalTime = _arg1; this.cachedTime = _arg1; while (_local4) { _local6 = _local4.nextNode; if (((_local4.active) || ((((((_arg1 >= _local4.cachedStartTime)) && (!(_local4.cachedPaused)))) && (!(_local4.gc)))))){ if (!_local4.cachedReversed){ _local4.renderTime(((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale), _arg2, false); } else { _local5 = (_local4.cacheIsDirty) ? _local4.totalDuration : _local4.cachedTotalDuration; _local4.renderTime((_local5 - ((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale)), _arg2, false); }; }; _local4 = _local6; }; } public function addChild(_arg1:TweenCore):void{ if (((!(_arg1.gc)) && (_arg1.timeline))){ _arg1.timeline.remove(_arg1, true); }; _arg1.timeline = this; if (_arg1.gc){ _arg1.setEnabled(true, true); }; if (_firstChild){ _firstChild.prevNode = _arg1; }; _arg1.nextNode = _firstChild; _firstChild = _arg1; _arg1.prevNode = null; } public function remove(_arg1:TweenCore, _arg2:Boolean=false):void{ if (_arg1.gc){ return; }; if (!_arg2){ _arg1.setEnabled(false, true); }; if (_arg1.nextNode){ _arg1.nextNode.prevNode = _arg1.prevNode; } else { if (_lastChild == _arg1){ _lastChild = _arg1.prevNode; }; }; if (_arg1.prevNode){ _arg1.prevNode.nextNode = _arg1.nextNode; } else { if (_firstChild == _arg1){ _firstChild = _arg1.nextNode; }; }; } public function get rawTime():Number{ return (this.cachedTotalTime); } } }//package com.greensock.core
Section 80
//TweenCore (com.greensock.core.TweenCore) package com.greensock.core { import com.greensock.*; public class TweenCore { public var initted:Boolean; protected var _hasUpdate:Boolean; public var active:Boolean; protected var _delay:Number; public var cachedTime:Number; public var cachedReversed:Boolean; public var nextNode:TweenCore; protected var _rawPrevTime:Number;// = -1 public var vars:Object; public var cachedTotalTime:Number; public var timeline:SimpleTimeline; public var data; public var cachedStartTime:Number; public var prevNode:TweenCore; public var cachedDuration:Number; public var gc:Boolean; protected var _pauseTime:Number; public var cacheIsDirty:Boolean; public var cachedPaused:Boolean; public var cachedTimeScale:Number; public var cachedTotalDuration:Number; public static const version:Number = 1.13; protected static var _classInitted:Boolean; public function TweenCore(_arg1:Number=0, _arg2:Object=null){ this.vars = ((_arg2) || ({})); this.cachedDuration = (this.cachedTotalDuration = ((_arg1) || (0))); _delay = ((this.vars.delay) || (0)); this.cachedTimeScale = ((this.vars.timeScale) || (1)); this.active = Boolean((((((_arg1 == 0)) && ((_delay == 0)))) && (!((this.vars.immediateRender == false))))); this.cachedTotalTime = (this.cachedTime = 0); this.data = this.vars.data; if (!_classInitted){ if (isNaN(TweenLite.rootFrame)){ TweenLite.initClass(); _classInitted = true; } else { return; }; }; var _local3:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline; this.cachedStartTime = (_local3.cachedTotalTime + _delay); _local3.addChild(this); if (this.vars.reversed){ this.cachedReversed = true; }; if (this.vars.paused){ this.paused = true; }; } public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ } public function get delay():Number{ return (_delay); } public function get duration():Number{ return (this.cachedDuration); } public function restart(_arg1:Boolean=false, _arg2:Boolean=true):void{ this.reversed = false; this.paused = false; this.setTotalTime((_arg1) ? -(_delay) : 0, _arg2); } public function set reversed(_arg1:Boolean):void{ if (_arg1 != this.cachedReversed){ this.cachedReversed = _arg1; setTotalTime(this.cachedTotalTime, true); }; } public function set startTime(_arg1:Number):void{ var _local2:Boolean = Boolean(((!((this.timeline == null))) && (((!((_arg1 == this.cachedStartTime))) || (this.gc))))); this.cachedStartTime = _arg1; if (_local2){ this.timeline.addChild(this); }; } public function set delay(_arg1:Number):void{ this.startTime = (this.startTime + (_arg1 - _delay)); _delay = _arg1; } public function resume():void{ this.paused = false; } public function get paused():Boolean{ return (this.cachedPaused); } public function play():void{ this.reversed = false; this.paused = false; } public function set duration(_arg1:Number):void{ this.cachedDuration = (this.cachedTotalDuration = _arg1); setDirtyCache(false); } public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{ if (!_arg1){ renderTime(this.cachedTotalDuration, _arg2, false); return; }; if (this.timeline.autoRemoveChildren){ this.setEnabled(false, false); } else { this.active = false; }; if (!_arg2){ if (((((this.vars.onComplete) && ((this.cachedTotalTime == this.cachedTotalDuration)))) && (!(this.cachedReversed)))){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); } else { if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (this.vars.onReverseComplete))){ this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams); }; }; }; } public function invalidate():void{ } public function get totalTime():Number{ return (this.cachedTotalTime); } public function get reversed():Boolean{ return (this.cachedReversed); } public function get startTime():Number{ return (this.cachedStartTime); } public function set currentTime(_arg1:Number):void{ setTotalTime(_arg1, false); } protected function setDirtyCache(_arg1:Boolean=true):void{ var _local2:TweenCore = (_arg1) ? this : this.timeline; while (_local2) { _local2.cacheIsDirty = true; _local2 = _local2.timeline; }; } public function reverse(_arg1:Boolean=true):void{ this.reversed = true; if (_arg1){ this.paused = false; } else { if (this.gc){ this.setEnabled(true, false); }; }; } public function set paused(_arg1:Boolean):void{ if (((!((_arg1 == this.cachedPaused))) && (this.timeline))){ if (_arg1){ _pauseTime = this.timeline.rawTime; } else { this.cachedStartTime = (this.cachedStartTime + (this.timeline.rawTime - _pauseTime)); _pauseTime = NaN; setDirtyCache(false); }; this.cachedPaused = _arg1; this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); }; if (((!(_arg1)) && (this.gc))){ this.setTotalTime(this.cachedTotalTime, false); this.setEnabled(true, false); }; } public function kill():void{ setEnabled(false, false); } public function set totalTime(_arg1:Number):void{ setTotalTime(_arg1, false); } public function get currentTime():Number{ return (this.cachedTime); } protected function setTotalTime(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; var _local4:Number; if (this.timeline){ _local3 = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime; if (this.cachedReversed){ _local4 = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration; this.cachedStartTime = (_local3 - ((_local4 - _arg1) / this.cachedTimeScale)); } else { this.cachedStartTime = (_local3 - (_arg1 / this.cachedTimeScale)); }; if (!this.timeline.cacheIsDirty){ setDirtyCache(false); }; if (this.cachedTotalTime != _arg1){ renderTime(_arg1, _arg2, false); }; }; } public function pause():void{ this.paused = true; } public function set totalDuration(_arg1:Number):void{ this.duration = _arg1; } public function get totalDuration():Number{ return (this.cachedTotalDuration); } public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ if (_arg1){ this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); if (((!(_arg2)) && (this.gc))){ this.timeline.addChild(this); }; } else { this.active = false; if (!_arg2){ this.timeline.remove(this, true); }; }; this.gc = !(_arg1); return (false); } } }//package com.greensock.core
Section 81
//Expo (com.greensock.easing.Expo) package com.greensock.easing { public class Expo { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==_arg4) ? (_arg2 + _arg3) : ((_arg3 * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==0) ? _arg2 : (((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2) - (_arg3 * 0.001))); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 == 0){ return (_arg2); }; if (_arg1 == _arg4){ return ((_arg2 + _arg3)); }; _arg1 = (_arg1 / (_arg4 * 0.5)); if (_arg1 < 1){ return ((((_arg3 * 0.5) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2)); }; --_arg1; return ((((_arg3 * 0.5) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2)); } } }//package com.greensock.easing
Section 82
//TweenLite (com.greensock.TweenLite) package com.greensock { import flash.events.*; import com.greensock.core.*; import flash.display.*; import flash.utils.*; import com.greensock.plugins.*; public class TweenLite extends TweenCore { protected var _hasPlugins:Boolean; public var propTweenLookup:Object; public var cachedPT1:PropTween; protected var _overwrite:uint; protected var _ease:Function; public var target:Object; public var ratio:Number;// = 0 protected var _overwrittenProps:Object; protected var _notifyPluginsOfEnabled:Boolean; public static const version:Number = 11.133; public static var rootTimeline:SimpleTimeline; public static var fastEaseLookup:Dictionary = new Dictionary(false); public static var onPluginEvent:Function; public static var rootFramesTimeline:SimpleTimeline; public static var defaultEase:Function = TweenLite.easeOut; public static var plugins:Object = {}; public static var masterList:Dictionary = new Dictionary(false); public static var overwriteManager:Object; public static var rootFrame:Number; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; private static var _shape:Shape = new Shape(); protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1}; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ var _local5:TweenLite; super(_arg2, _arg3); this.target = _arg1; if ((((this.target is TweenCore)) && (("timeScale" in this.vars)))){ this.cachedTimeScale = 1; }; propTweenLookup = {}; _ease = defaultEase; _overwrite = (((!((Number(_arg3.overwrite) > -1))) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); var _local4:Array = masterList[_arg1]; if (!_local4){ masterList[_arg1] = [this]; } else { if (_overwrite == 1){ for each (_local5 in _local4) { if (!_local5.gc){ _local5.setEnabled(false, false); }; }; masterList[_arg1] = [this]; } else { _local4[_local4.length] = this; }; }; if (((this.active) || (this.vars.immediateRender))){ renderTime(0, false, true); }; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local4:Boolean; var _local5:Number = this.cachedTime; if (_arg1 >= this.cachedDuration){ this.cachedTotalTime = (this.cachedTime = this.cachedDuration); this.ratio = 1; _local4 = true; if (this.cachedDuration == 0){ if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){ _arg3 = true; }; _rawPrevTime = _arg1; }; } else { if (_arg1 <= 0){ this.cachedTotalTime = (this.cachedTime = (this.ratio = 0)); if (_arg1 < 0){ this.active = false; if (this.cachedDuration == 0){ if (_rawPrevTime > 0){ _arg3 = true; _local4 = true; }; _rawPrevTime = _arg1; }; }; if (((this.cachedReversed) && (!((_local5 == 0))))){ _local4 = true; }; } else { this.cachedTotalTime = (this.cachedTime = _arg1); this.ratio = _ease(_arg1, 0, 1, this.cachedDuration); }; }; if ((((this.cachedTime == _local5)) && (!(_arg3)))){ return; }; if (!this.initted){ init(); if (((!(_local4)) && (this.cachedTime))){ this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration); }; }; if (((!(this.active)) && (!(this.cachedPaused)))){ this.active = true; }; if ((((((((_local5 == 0)) && (this.vars.onStart))) && (!((this.cachedTime == 0))))) && (!(_arg2)))){ this.vars.onStart.apply(null, this.vars.onStartParams); }; var _local6:PropTween = this.cachedPT1; while (_local6) { _local6.target[_local6.property] = (_local6.start + (this.ratio * _local6.change)); _local6 = _local6.nextNode; }; if (((_hasUpdate) && (!(_arg2)))){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local4){ if (((_hasPlugins) && (this.cachedPT1))){ onPluginEvent("onComplete", this); }; complete(true, _arg2); }; } override public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ var _local3:Array; if (_arg1){ _local3 = TweenLite.masterList[this.target]; if (!_local3){ TweenLite.masterList[this.target] = [this]; } else { _local3[_local3.length] = this; }; }; super.setEnabled(_arg1, _arg2); if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ return (onPluginEvent((_arg1) ? "onEnable" : "onDisable", this)); }; return (false); } protected function init():void{ var _local1:String; var _local2:int; var _local3:*; var _local4:Boolean; var _local5:Array; var _local6:PropTween; if (typeof(this.vars.ease) == "function"){ _ease = this.vars.ease; }; if (this.vars.easeParams){ this.vars.proxiedEase = _ease; _ease = easeProxy; }; this.cachedPT1 = null; this.propTweenLookup = {}; for (_local1 in this.vars) { if ((((_local1 in _reservedProps)) && (!((((_local1 == "timeScale")) && ((this.target is TweenCore))))))){ } else { if ((((_local1 in plugins)) && (new ((plugins[_local1] as Class)).onInitTween(this.target, this.vars[_local1], this)))){ this.cachedPT1 = new PropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1); if (this.cachedPT1.name == "_MULTIPLE_"){ _local2 = _local3.overwriteProps.length; while (_local2--) { this.propTweenLookup[_local3.overwriteProps[_local2]] = this.cachedPT1; }; } else { this.propTweenLookup[this.cachedPT1.name] = this.cachedPT1; }; if (_local3.priority){ this.cachedPT1.priority = _local3.priority; _local4 = true; }; if (((_local3.onDisable) || (_local3.onEnable))){ _notifyPluginsOfEnabled = true; }; _hasPlugins = true; } else { this.cachedPT1 = new PropTween(this.target, _local1, Number(this.target[_local1]), ((typeof(this.vars[_local1]))=="number") ? (Number(this.vars[_local1]) - this.target[_local1]) : Number(this.vars[_local1]), _local1, false, this.cachedPT1); this.propTweenLookup[_local1] = this.cachedPT1; }; }; }; if (_local4){ onPluginEvent("onInit", this); }; if (this.vars.runBackwards){ _local6 = this.cachedPT1; while (_local6) { _local6.start = (_local6.start + _local6.change); _local6.change = -(_local6.change); _local6 = _local6.nextNode; }; }; _hasUpdate = Boolean(!((this.vars.onUpdate == null))); if (_overwrittenProps){ killVars(_overwrittenProps); if (this.cachedPT1 == null){ this.setEnabled(false, false); }; }; if ((((((((_overwrite > 1)) && (this.cachedPT1))) && (masterList[this.target]))) && ((_local5.length > 1)))){ if (overwriteManager.manageOverwrites(this, this.propTweenLookup, _local5, _overwrite)){ init(); }; }; this.initted = true; } public function killVars(_arg1:Object, _arg2:Boolean=true):Boolean{ var _local3:String; var _local4:PropTween; var _local5:Boolean; if (_overwrittenProps == null){ _overwrittenProps = {}; }; for (_local3 in _arg1) { if ((_local3 in propTweenLookup)){ _local4 = propTweenLookup[_local3]; if (((_local4.isPlugin) && ((_local4.name == "_MULTIPLE_")))){ _local4.target.killProps(_arg1); if (_local4.target.overwriteProps.length == 0){ _local4.name = ""; }; }; if (_local4.name != "_MULTIPLE_"){ if (_local4.nextNode){ _local4.nextNode.prevNode = _local4.prevNode; }; if (_local4.prevNode){ _local4.prevNode.nextNode = _local4.nextNode; } else { if (this.cachedPT1 == _local4){ this.cachedPT1 = _local4.nextNode; }; }; if (((_local4.isPlugin) && (_local4.target.onDisable))){ _local4.target.onDisable(); if (_local4.target.activeDisable){ _local5 = true; }; }; delete propTweenLookup[_local3]; }; }; if (_arg2){ _overwrittenProps[_local3] = 1; }; }; return (_local5); } override public function invalidate():void{ if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ onPluginEvent("onDisable", this); }; this.cachedPT1 = null; _overwrittenProps = null; _hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false))); this.propTweenLookup = {}; } public static function initClass():void{ rootFrame = 0; rootTimeline = new SimpleTimeline(null); rootFramesTimeline = new SimpleTimeline(null); rootTimeline.cachedStartTime = (getTimer() * 0.001); rootFramesTimeline.cachedStartTime = rootFrame; rootTimeline.autoRemoveChildren = true; rootFramesTimeline.autoRemoveChildren = true; _shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; } public static function killTweensOf(_arg1:Object, _arg2:Boolean=false):void{ var _local3:Array; var _local4:int; if ((_arg1 in masterList)){ _local3 = masterList[_arg1]; _local4 = _local3.length; while (_local4--) { if (!TweenLite(_local3[_local4]).gc){ if (_arg2){ TweenLite(_local3[_local4]).complete(false, false); } else { TweenLite(_local3[_local4]).setEnabled(false, false); }; }; }; delete masterList[_arg1]; }; } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; if (!("immediateRender" in _arg3)){ _arg3.immediateRender = true; }; return (new TweenLite(_arg1, _arg2, _arg3)); } protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (1 - (_arg1 / _arg4)); return ((1 - (_arg1 * _arg1))); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, immediateRender:false, useFrames:_arg4, overwrite:0})); } protected static function updateAll(_arg1:Event=null):void{ var _local2:Dictionary; var _local3:Object; var _local4:Array; var _local5:int; rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.cachedStartTime) * rootTimeline.cachedTimeScale), false, false); rootFrame++; rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.cachedStartTime) * rootFramesTimeline.cachedTimeScale), false, false); if (!(rootFrame % 60)){ _local2 = masterList; for (_local3 in _local2) { _local4 = _local2[_local3]; _local5 = _local4.length; while (_local5--) { if (TweenLite(_local4[_local5]).gc){ _local4.splice(_local5, 1); }; }; if (_local4.length == 0){ delete _local2[_local3]; }; }; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } } }//package com.greensock
Section 83
//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 84
//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 85
//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 86
//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 87
//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 88
//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 89
//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 90
//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 91
//LevelBase (com.miningtruck.levels.LevelBase) package com.miningtruck.levels { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.display.*; 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 _unloadTimer:Animation; private var _unloadEffect:Animation; private var _stopInterval:int;// = 0 var _world:World; private var _restartPause:int;// = 0 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; _restartPause = _world.worldTime; } 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); } 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 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(); }; } public function offUnload():void{ if (_unloadEffect){ _unloadEffect.addEventListener(Event.ENTER_FRAME, hideUnloadHandler); }; } 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(); } 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 get restartPause():int{ return ((_world.worldTime - _restartPause)); } 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 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(); }; }; } public function destroy():void{ _scrSheets = new Array(); } 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++; }; } 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 92
//Cargo (com.miningtruck.objects.Cargo) package com.miningtruck.objects { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.display.*; 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 93
//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 94
//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 95
//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 96
//EffectScore (com.miningtruck.objects.EffectScore) package com.miningtruck.objects { import flash.events.*; import flash.display.*; 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 97
//Ground (com.miningtruck.objects.Ground) package com.miningtruck.objects { import flash.display.*; public class Ground extends Sprite { } }//package com.miningtruck.objects
Section 98
//Lenta (com.miningtruck.objects.Lenta) package com.miningtruck.objects { import flash.display.*; public class Lenta extends Sprite { } }//package com.miningtruck.objects
Section 99
//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 100
//Wheel (com.miningtruck.objects.Wheel) package com.miningtruck.objects { import Box2D.Dynamics.Joints.*; import flash.display.*; 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; _local1 = _world.getFreeDust(); if (_local1 != null){ _local1.make((x + (Math.random() * 5)), (y - (Math.random() * 10))); }; } } }//package com.miningtruck.objects
Section 101
//Button (com.miningtruck.ui.Button) package com.miningtruck.ui { import flash.events.*; import flash.display.*; 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(); }; addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOverHandler(_arg1:MouseEvent):void{ _button.gotoAndStop(2); } public function destroy():void{ removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); 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_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_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); }; } } }//package com.miningtruck.ui
Section 102
//ButtonLevel (com.miningtruck.ui.ButtonLevel) package com.miningtruck.ui { import flash.events.*; import flash.display.*; 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 103
//HudButton (com.miningtruck.ui.HudButton) package com.miningtruck.ui { import flash.events.*; import flash.display.*; public class HudButton extends MovieClip { private 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 set checkMode(_arg1:Boolean):void{ _checkMode = _arg1; } public function get checked():Boolean{ return (_isChecked); } private function mouseUpHandler(_arg1:MouseEvent):void{ if (_checkMode){ _isChecked = !(_isChecked); }; } } }//package com.miningtruck.ui
Section 104
//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 105
//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 playHub_logoSmall:MovieClip; public var fb_btn:MovieClip; 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 106
//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 107
//Label (com.miningtruck.ui.Label) package com.miningtruck.ui { import flash.events.*; import flash.display.*; 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 = 12693932; break; case LABEL_GRAY_BIG: _label = new label_red(); (_label["tf1"] as TextField).textColor = 12693932; break; case LABEL_PURPLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 12693932; break; case LABEL_PURPLE_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 12693932; (_label["tf2"] as TextField).textColor = 3551783; break; case LABEL_RED_MIDDLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 12693932; break; case LABEL_BROWN: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 12693932; (_label["tf2"] as TextField).visible = false; break; case LABEL_GRAY_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 12693932; (_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 108
//LevelProgress (com.miningtruck.ui.LevelProgress) package com.miningtruck.ui { import flash.display.*; public class LevelProgress extends MovieClip { private var _sprite:Sprite; private var _truck:Sprite; private var _maxValue:int;// = 0 private var _offset:int;// = 0 private var _gamePercent:int;// = 0 public function LevelProgress(){ _sprite = new LevelProgress_mc(); addChild(_sprite); if (_sprite["truck_ico"] != null){ _truck = (_sprite["truck_ico"] as Sprite); }; } public function set offset(_arg1:int):void{ _offset = _arg1; } public function progress(_arg1:int):void{ _gamePercent = (((_arg1 - _offset) * 100) / _maxValue); if (_truck){ _truck.x = int(((360 * _gamePercent) / 100)); if ((_truck.x + 24) > 360){ _truck.x = 336; }; }; } public function set maxValue(_arg1:int):void{ _maxValue = _arg1; } } }//package com.miningtruck.ui
Section 109
//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 110
//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 111
//App (com.miningtruck.App) package com.miningtruck { import flash.events.*; import flash.display.*; import com.touchmypixel.peepee.utils.*; import com.antkarlov.utils.*; import com.miningtruck.ui.*; public class App extends MovieClip { private var _cacheList:Array; private var _bg:Sprite; public var input:KeyObject; private var _cacheIndex:int; private var _game:Game; private var _loadingBar:Loading; public var animCache:AnimationCache; public static const TXT_LEVEL_FAILED:String = "Level Failed"; public static const TXT_SUBMIT:String = "Submit Score"; public static const TXT_MORE_GAMES:String = ""; 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 = "No cargo?"; public static const TXT_LEVEL:String = "Level"; public static const TXT_PLAY:String = ""; public static const TXT_YOUR_SCORE:String = "Your Game Score:"; public static const APP_VER:String = "ver 1.2 - March 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 = "More 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; _arg1.scaleMode = StageScaleMode.NO_SCALE; input = new KeyObject(_arg1); animCache = AnimationCache.getInstance(); animCache.replaceExisting = true; initCacheList(); addEventListener(Event.ENTER_FRAME, cacheHandler); } private function initCacheList():void{ _cacheList.push("sprite_wheel"); _cacheList.push("sprite_truck_body"); _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 112
//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 113
//Game (com.miningtruck.Game) package com.miningtruck { import flash.events.*; import flash.display.*; import com.greensock.*; import com.miningtruck.levels.*; import flash.net.*; import com.greensock.easing.*; import com.antkarlov.utils.*; import flash.media.*; import com.miningtruck.ui.*; import flash.text.*; public class Game extends Sprite { private const ACT_GAME_TO_MENU:int = 16; private const SCREEN_LEVELCOMPLETE:int = 1; private const ACT_GAME_TO_LOADLEVEL:int = 8; private const ACT_ONGRATULATIONS_TO_MAINMENU:int = 15; private const ACT_GAME_TO_LEVELCOMPLETE:int = 9; private const ACT_SELECTLEVEL_TO_LOADING:int = 5; private const ACT_SHOW_MAINMENU:int = 1; private const ACT_LOADLEVEL:int = 6; private const ACT_LEVELCOMPLETE_TO_SELECTLEVEL:int = 11; private const ACT_NONE:int = 0; private const ACT_GAME_TO_CONGRATULATIONS:int = 14; private const ACT_SELECTLEVEL_TO_MAINMENU:int = 4; private const SCREEN_LEVELFAILED:int = 2; private const SCREEN_OTHER:int = 0; private const ACT_GAME_TO_LEVELFAILED:int = 10; private const ACT_LEVELFAILED_TO_LOADLEVEL:int = 13; private const ACT_LOADLEVEL_TO_GAME:int = 7; private const ACT_LEVELCOMPLETE_TO_LOADLEVEL:int = 12; private const ACT_SHOW_SELECTLEVEL:int = 3; private const ACT_HIDE_MAINMENU:int = 2; private var truckCrashMenu:TruckCrashMenu; private var _btnSelectLevel:Button; private var _btnBack:Button; private var _fps:Sprite; private var _keyPause:int;// = 0 private var _btnPlay:Button; private var _fpsCounter:FPSCounter; private var _level:LevelBase; private var _btnMusic:ButtonMusic; private var _lvlMusic:int;// = -1 private var _btnFreeGames:Button; private var _btnMenu:ButtonMenu; private var _arrows:MovieClip; private var _levelNum:int;// = 1 private var _bg:Sprite; private var _pause:int; private var _musicChannel:SoundChannel; private var _logoBox2d:Sprite; private var _curMusic:int;// = 0 private var _btnLevel1:ButtonLevel; private var _btnLevel2:ButtonLevel; private var _btnLevel3:ButtonLevel; private var _btnLevel4:ButtonLevel; private var _btnLevel5:ButtonLevel; private var _btnLevel6:ButtonLevel; private var _btnLevel7:ButtonLevel; private var _btnLevel8: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 _action:int;// = 0 private var _title:Label; private var _credits:Sprite; private var _app:App; private var _fb:FB_button_big; private var _hint:Label; private var _icoLevel:IcoLevel; private var _btnSound:ButtonSound; private var _restartHint:Label; private var _scoreTotal:Label; private var _icoCargo:IcoCargo; private var _logoGame:Sprite; private var _scoreLevel:Label; private var _btnRestart:ButtonRestart; private var _levelEndLogos:LevelEndLogos; private var _icoTime:IcoTime; private var _levelProgress:LevelProgress; private var _isMusic:Boolean;// = false public var offMusic:Boolean;// = false private var _loading:Label; 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 = 50; _btnMusic.y = (App.SCR_H - 15); _btnMusic.checkMode = true; addChild(_btnMusic); _btnMusic.addEventListener(MouseEvent.MOUSE_UP, musicClickHandler); _btnSound = new ButtonSound(); _btnSound.x = 70; _btnSound.y = (App.SCR_H - 15); _btnSound.checkMode = true; addChild(_btnSound); _btnSound.addEventListener(MouseEvent.MOUSE_UP, soundClickHandler); _btnMenu = new ButtonMenu(); _btnMenu.x = 90; _btnMenu.y = (App.SCR_H - 15); addChild(_btnMenu); _btnMenu.addEventListener(MouseEvent.MOUSE_UP, menuClickHandler); _btnRestart = new ButtonRestart(); _btnRestart.x = 112; _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); _icoLevel.fb_btn.buttonMode = true; _icoLevel.fb_btn.useHandCursor = true; _icoLevel.playHub_logoSmall.buttonMode = true; _icoLevel.playHub_logoSmall.useHandCursor = true; _icoLevel.fb_btn.addEventListener(MouseEvent.MOUSE_UP, gotoFacebook); _icoLevel.playHub_logoSmall.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _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; _levelProgress = new LevelProgress(); _levelProgress.x = 140; _levelProgress.y = (App.SCR_H - 18); _levelProgress.maxValue = 9030; _levelProgress.offset = 570; addChild(_levelProgress); _gameWorld.addEventListener(World.UPDATE_TIME, updateTimeHandler); _gameWorld.addEventListener(World.UPDATE_CARGO, updateCargoHandler); _gameWorld.addEventListener(World.UPDATE_SCORE, updateScoreHandler); _gameWorld.addEventListener(World.UPDATE_PROGRESS, updateProgressHandler); _gameWorld.addEventListener(World.SHOW_HINT, showHintHandler); music(); _bg = new background(); addChild(_bg); makeMainMenu(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } 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 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; _levelEndLogos = new LevelEndLogos(); _levelEndLogos.alpha = 0; _levelEndLogos.x = 9; _levelEndLogos.y = 335; _levelEndLogos.playHubLogo.buttonMode = true; _levelEndLogos.playHubLogo.useHandCursor = true; _levelEndLogos.fb_btn.buttonMode = true; _levelEndLogos.fb_btn.useHandCursor = true; addChild(_levelEndLogos); action(ACT_GAME_TO_LEVELFAILED); } private function enterFrameHandler(_arg1:Event):void{ switch (_curScreen){ case SCREEN_LEVELCOMPLETE: if (((_app.input.isDown(32)) && (((_gameWorld.worldTime - _keyPause) > 30)))){ _gameWorld.sound(World.SND_BUTTON); nextLevel(); _curScreen = SCREEN_OTHER; _keyPause = _gameWorld.worldTime; }; break; case SCREEN_LEVELFAILED: if (((_app.input.isDown(32)) && (((_gameWorld.worldTime - _keyPause) > 30)))){ restartLevel(); _curScreen = SCREEN_OTHER; _keyPause = _gameWorld.worldTime; }; break; }; if (((_app.input.isDown(68)) && (((_gameWorld.worldTime - _keyPause) > 30)))){ if (_fps == null){ initDebug(); } else { destroyDebug(); }; _keyPause = _gameWorld.worldTime; }; 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; _fb.alpha = _logoGame.alpha; if (_logoGame.alpha >= 1){ _btnPlay.show(180, 5); _btnMoreGames.show(237, 10); setMainMenuHandlers(); action(ACT_NONE); }; break; case ACT_HIDE_MAINMENU: _logoGame.alpha = (_logoGame.alpha - 0.1); _logoBox2d.alpha = _logoGame.alpha; _credits.alpha = _logoGame.alpha; _fb.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_MENU: _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _bg.y = 0; action(ACT_NONE); _gameWorld.offMotor(); _gameWorld.enableControls = false; makeSelectLevel(); }; break; case ACT_GAME_TO_LEVELCOMPLETE: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _levelEndLogos.alpha = 1; _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){ _levelEndLogos.alpha = 1; _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){ _levelEndLogos.alpha = 1; _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 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); } private function fpsHandler(_arg1:Event):void{ if (_fps["tf"] != null){ (_fps["tf"] as TextField).text = ((App.APP_VER + "\nfps: ") + _fpsCounter.fps.toString()); }; } 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; }; }; } public function action(_arg1:int):void{ _action = _arg1; } 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); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } private function removeCongratHandlers():void{ _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, mainMenuHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } 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 gotoMoreGames():void{ var _local1 = "http://www.playhub.com/category/racing-games/1/top-rated.html?utm_medium=brandedgames_external&utm_campaign=hell-driver&utm_source=ingame&utm_content=ingame"; var _local2:URLRequest = new URLRequest(_local1); navigateToURL(_local2, "_blank"); } 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 backHandler(_arg1:Event):void{ removeSelectLevelHandlers(); _btnBack.hide(0); _title.hide(0); action(ACT_SELECTLEVEL_TO_MAINMENU); } private function restartClickHandler(_arg1:Event):void{ if (_level.isUnload){ return; }; if (_gameWorld.enableControls){ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); }; } private function updateProgressHandler(_arg1:Event):void{ _levelProgress.progress(_gameWorld.progress); } 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; removeChild(_levelEndLogos); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); _levelEndLogos = null; } private function submitScoreHandler(_arg1:MouseEvent):void{ removeCongratHandlers(); trace("submit score to mochileadboard"); } private function destroyDebug():void{ _fpsCounter.removeEventListener(FPSCounter.UPDATE_DATA, fpsHandler); removeChild(_fps); _fps = null; } private function setCongratHandlers():void{ _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, mainMenuHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _levelEndLogos.playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.addEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } private function setLevelFailedHandlers():void{ _btnFreeGames.addEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, restartLevelHandler); _levelEndLogos.playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.addEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } private function setSelectLevelHandlers():void{ _arrows.playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _arrows.fb_btn.addEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); _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 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); } public function clearUmutMenu():void{ trace("clearing UMUT MENU:-- menu state: ", truckCrashMenu); if (truckCrashMenu != null){ truckCrashMenu.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); truckCrashMenu.moreGames_btn.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); truckCrashMenu.restartLevel_btn.removeEventListener(MouseEvent.MOUSE_UP, restartButtonPressed); removeChild(truckCrashMenu); truckCrashMenu = 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 = 356; addChild(_logoBox2d); _btnPlay = new Button(_gameWorld, (App.SCR_W * 0.5), 160, Button.BTN_PLAY); _btnPlay.caption = App.TXT_PLAY; addChild(_btnPlay); _btnMoreGames = new Button(_gameWorld, (App.SCR_W * 0.5), 217, Button.BTN_MORE_GAMES); _btnMoreGames.caption = App.TXT_MORE_GAMES; addChild(_btnMoreGames); _credits = new label_credits(); _credits.x = (App.SCR_W * 0.5); _credits.y = (App.SCR_H - 40); _credits.alpha = 0; _credits.buttonMode = true; _credits.useHandCursor = true; addChild(_credits); _fb = new FB_button_big(); _fb.buttonMode = true; _fb.useHandCursor = true; _fb.x = 590; _fb.y = 350; _fb.alpha = 0; addChild(_fb); _logoGame.alpha = 0; _logoBox2d.alpha = 0; action(ACT_SHOW_MAINMENU); } private function restartButtonPressed(_arg1:Event):void{ clearUmutMenu(); _gameWorld.restartRequestByMouseButton = true; } private function destroyMainMenu():void{ removeChild(_logoGame); _logoGame = null; removeChild(_logoBox2d); _logoBox2d = null; removeChild(_btnPlay); _btnPlay = null; removeChild(_btnMoreGames); _btnMoreGames = null; removeChild(_fb); _fb = null; removeChild(_credits); _credits = null; trace("mainMenu destroyed"); } 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 levelRestartHandler(_arg1:Event):void{ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); } private function musicCompleteHandler(_arg1:Event):void{ _musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); _isMusic = false; music(); } 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; removeChild(_levelEndLogos); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); _levelEndLogos = 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_MORE_GAMES); _btnNextLevel.caption = App.TXT_MORE_GAMES; addChild(_btnNextLevel); _levelEndLogos = new LevelEndLogos(); _levelEndLogos.alpha = 0; _levelEndLogos.x = 9; _levelEndLogos.y = 335; _levelEndLogos.playHubLogo.buttonMode = true; _levelEndLogos.playHubLogo.useHandCursor = true; _levelEndLogos.fb_btn.buttonMode = true; _levelEndLogos.fb_btn.useHandCursor = true; addChild(_levelEndLogos); action(ACT_GAME_TO_CONGRATULATIONS); } private function makeSelectLevel():void{ var _local1:Boolean; _title = new Label((App.SCR_W * 0.5), 50, Label.LABEL_GRAY); _title.caption = App.TXT_SELECT_LEVEL; _title.textWidth = 290; addChild(_title); _title.show(70, 0); _arrows = new arrows(); _arrows.x = 72; _arrows.y = 91; _arrows.alpha = 0; addChild(_arrows); _arrows.playHubLogo.buttonMode = true; _arrows.playHubLogo.useHandCursor = true; _arrows.fb_btn.buttonMode = true; _arrows.fb_btn.useHandCursor = true; _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 initDebug():void{ _fps = new fps(); _fps.x = 10; _fps.y = 30; addChild(_fps); _fpsCounter = new FPSCounter(); _fpsCounter.addEventListener(FPSCounter.UPDATE_DATA, fpsHandler); } private function removeLevelFaildeHandlers():void{ _btnFreeGames.removeEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, restartLevelHandler); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } private function levelFailedHandler(_arg1:Event):void{ makeLevelFailed(); } private function setLevelCompleteHandlers():void{ _btnFreeGames.addEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, nextLevelHandler); _levelEndLogos.playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.addEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); } private function updateTimeHandler(_arg1:Event):void{ _icoTime.update(_gameWorld.time); } private function moreGamesHandler(_arg1:Event):void{ gotoMoreGames(); } private function soundClickHandler(_arg1:Event):void{ _gameWorld.offSound = _btnSound.checked; } private function removeSelectLevelHandlers():void{ _arrows.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _arrows.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); _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 updateCargoHandler(_arg1:Event):void{ _icoCargo.update(_gameWorld.cargo); } private function gotoFacebook(_arg1:Event=null):void{ var _local2 = "http://www.facebook.com/pages/Free-Games/329545200036"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } private function musicClickHandler(_arg1:Event):void{ offMusic = _btnMusic.checked; music(); } 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 playHandler(_arg1:Event):void{ removeMainMenuHandlers(); _btnPlay.hide(0); _btnMoreGames.hide(2); action(ACT_HIDE_MAINMENU); } 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); } public function showScores():void{ trace("mochimedia leadboard"); } private function destroySelectLevel():void{ removeChild(_title); _title.destroy(); _title = null; _arrows.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _arrows.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); 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 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; _levelEndLogos = new LevelEndLogos(); _levelEndLogos.alpha = 0; _levelEndLogos.x = 9; _levelEndLogos.y = 335; _levelEndLogos.playHubLogo.buttonMode = true; _levelEndLogos.playHubLogo.useHandCursor = true; _levelEndLogos.fb_btn.buttonMode = true; _levelEndLogos.fb_btn.useHandCursor = true; addChild(_levelEndLogos); action(ACT_GAME_TO_LEVELCOMPLETE); } 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; removeChild(_levelEndLogos); _levelEndLogos.playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); _levelEndLogos.fb_btn.removeEventListener(MouseEvent.MOUSE_DOWN, gotoFacebook); _levelEndLogos = null; } 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)); truckCrashMenu = new TruckCrashMenu(); truckCrashMenu.x = 320; truckCrashMenu.y = 20; truckCrashMenu.alpha = 0; addChild(truckCrashMenu); truckCrashMenu.playHubLogo.buttonMode = true; truckCrashMenu.playHubLogo.useHandCursor = true; truckCrashMenu.playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGamesHandler); truckCrashMenu.moreGames_btn.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); truckCrashMenu.restartLevel_btn.addEventListener(MouseEvent.MOUSE_UP, restartButtonPressed); TweenLite.to(truckCrashMenu, 1, {alpha:1, y:100, ease:Expo.easeOut}); } private function menuClickHandler(_arg1:Event):void{ if (_level.isUnload){ return; }; if (_gameWorld.enableControls){ addChild(_bg); action(ACT_GAME_TO_MENU); }; } private function levelCompleteHandler(_arg1:Event):void{ if (_levelNum == TOTAL_LEVELS){ makeCongrat(); } else { makeLevelComplete(); }; } private function nextLevelHandler(_arg1:Event):void{ nextLevel(); } private function freeGamesHandler(_arg1:Event):void{ gotoMoreGames(); } private function updateScoreHandler(_arg1:Event):void{ _scores.update(_gameWorld.score); } private function setMainMenuHandlers():void{ _btnPlay.addEventListener(MouseEvent.MOUSE_UP, playHandler); _credits.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnMoreGames.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _fb.addEventListener(MouseEvent.MOUSE_UP, gotoFacebook); } private function removeMainMenuHandlers():void{ _btnPlay.removeEventListener(MouseEvent.MOUSE_UP, playHandler); _credits.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnMoreGames.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _fb.removeEventListener(MouseEvent.MOUSE_UP, gotoFacebook); } private function scoresHandler(_arg1:Event):void{ removeMainMenuHandlers(); showScores(); } 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); } } }//package com.miningtruck
Section 114
//Preloader (com.miningtruck.Preloader) package com.miningtruck { import Playtomic.*; import flash.events.*; import flash.display.*; import flash.net.*; import com.miningtruck.ui.*; public dynamic class Preloader extends MovieClip { private var playHubSplash:PlayHubSplash; private var _background:Sprite; private var _loadingBar:Loading; private var playHubLogo:PlayHubLogoBig; private var umutPlayButton:UmutPlayButton; public static const ENTRY_FRAME:int = 3; public static const DOCUMENT_CLASS:String = "com.miningtruck.App"; public function Preloader(){ addFrameScript(0, frame1); Log.View(2249, "ffa08a7499654528", root.loaderInfo.loaderURL); super(); stop(); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); _background = new background(); _background.buttonMode = true; _background.useHandCursor = true; addChild(_background); _background.addEventListener(MouseEvent.MOUSE_DOWN, moreGames); playHubLogo = new PlayHubLogoBig(); playHubLogo.x = 220; playHubLogo.y = 140; playHubLogo.buttonMode = true; playHubLogo.useHandCursor = true; addChild(playHubLogo); playHubLogo.addEventListener(MouseEvent.MOUSE_DOWN, moreGames); _loadingBar = new Loading(10); _loadingBar.x = ((640 / 2) - (_loadingBar.width / 2)); _loadingBar.y = 230; addChild(_loadingBar); } private function splash_enterFrameCheck(_arg1:Event):void{ if (playHubSplash.currentLabel == "end"){ stage.removeEventListener(Event.ENTER_FRAME, splash_enterFrameCheck); continueToInit(); }; } private function progressHandler(_arg1:ProgressEvent):void{ var _local2:uint = _arg1.bytesLoaded; var _local3:uint = _arg1.bytesTotal; _loadingBar.progress(int(((_local2 / _local3) * 10))); } private function isUrl(_arg1:Array):Boolean{ var _local2:String = loaderInfo.loaderURL; var _local3:Number = (_local2.indexOf("://") + 3); var _local4:Number = _local2.indexOf("/", _local3); var _local5:String = _local2.substring(_local3, _local4); var _local6:Number = (_local5.lastIndexOf(".") - 1); var _local7:Number = (_local5.lastIndexOf(".", _local6) + 1); _local5 = _local5.substring(_local7, _local5.length); var _local8:int; while (_local8 < _arg1.length) { if (_local5 == _arg1[_local8]){ return (true); }; _local8++; }; return (false); } function frame1(){ MochiBot.track(this, "53a86aa3"); } private function pressedPlay(_arg1:Event=null):void{ umutPlayButton.removeEventListener(MouseEvent.MOUSE_UP, pressedPlay); removeChild(umutPlayButton); umutPlayButton = null; _background.removeEventListener(MouseEvent.MOUSE_DOWN, moreGames); removeChild(_background); _background = null; playHubLogo.removeEventListener(MouseEvent.MOUSE_DOWN, moreGames); removeChild(playHubLogo); playHubLogo = null; play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function completeHandler(_arg1:Event):void{ loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.removeEventListener(Event.COMPLETE, completeHandler); _loadingBar.destroy(); _loadingBar = null; umutPlayButton = new UmutPlayButton(); umutPlayButton.x = 320; umutPlayButton.y = 230; addChild(umutPlayButton); umutPlayButton.addEventListener(MouseEvent.MOUSE_UP, pressedPlay); } private function continueToInit():void{ playHubSplash.removeEventListener(MouseEvent.MOUSE_DOWN, moreGames); removeChild(playHubSplash); playHubSplash = null; init(); } private function enterFrameHandler(_arg1:Event):void{ if (currentFrame >= ENTRY_FRAME){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); stop(); splashInit(); }; } private function splashInit():void{ playHubSplash = new PlayHubSplash(); playHubSplash.x = 320; playHubSplash.y = 200; addChild(playHubSplash); playHubSplash.addEventListener(MouseEvent.MOUSE_DOWN, moreGames); stage.addEventListener(Event.ENTER_FRAME, splash_enterFrameCheck); } private function moreGames(_arg1:Event=null):void{ var _local2 = "http://www.playhub.com/category/racing-games/1/top-rated.html?utm_medium=brandedgames_external&utm_campaign=hell-driver&utm_source=ingame&utm_content=ingame"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } private function init():void{ var _local1:Class = (loaderInfo.applicationDomain.getDefinition(_slot1.DOCUMENT_CLASS) as Class); var _local2:Sprite = (new _local1(stage) as Sprite); addChild(_local2); } } }//package com.miningtruck
Section 115
//World (com.miningtruck.World) package com.miningtruck { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.display.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.objects.*; import flash.geom.*; import com.miningtruck.levels.*; import flash.utils.*; import flash.media.*; public class World extends Sprite { private var _sndDrive:Boolean;// = false public var app:App; private var _truckBody:Truck; private var _layerDebug:Sprite; private var _layerMain:Sprite; public var progress:int;// = 0 private var _layerBg:Sprite; 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 _bgList:Array; private var _scoreLevel:int;// = 0 private var _time:int;// = 0 private var _cargo:int;// = 0 private var _traffic:Animation; private var _progressInt:int;// = 0 private var _scMotor:SoundChannel; public var restartRequestByMouseButton:Boolean;// = false private var _scDrive:SoundChannel; private var _layerFront:Sprite; private var _fireInterval:int;// = 0 private var _isHint:Boolean;// = false 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 SND_BUTTON:int = 6; public static const UPDATE_SCORE:String = "updateScore"; public static const LEVEL_RESTART:String = "levelRestart"; 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_PROGRESS:String = "updateProgress"; public static const UPDATE_CARGO:String = "updateCargo"; public static const SND_SCORE:int = 7; public static const DRAW_SCALE:Number = 30; public static const LEVEL_COMPLETE:String = "levelComplete"; public static const ITERATIONS:int = 15; public static const SND_DRIVE:int = 1; public static const SND_BOX_CRASH:int = 3; public static const LEVEL_FAILED:String = "levelFailed"; public function World(_arg1:App){ app = _arg1; _effectList = new Array(); _layerBg = new Sprite(); _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 addMain(_arg1):void{ _layerMain.addChild(_arg1); } 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:Game; var _local4:EffectDust; if (!_enableControls){ return; }; worldTime++; if (((((app.input.isDown(32)) && (!(_level.isUnload)))) && ((_level.restartPause > 175)))){ dispatchEvent(new Event(LEVEL_RESTART)); _enableControls = false; _local3 = (this.parent as Game); _local3.clearUmutMenu(); return; }; if (restartRequestByMouseButton == true){ restartRequestByMouseButton = false; 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 ((worldTime - _progressInt) > 5){ progress = int(_truckBody.x); dispatchEvent(new Event(UPDATE_PROGRESS)); _progressInt = worldTime; }; 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){ _local4 = getFreeDust(); if (_local4 != null){ _local4.make((_truckBody.x + (Math.random() * 40)), (_truckBody.y - (Math.random() * 30)), 0, true); }; _local4 = getFreeDust(); if (_local4 != null){ _local4.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)) && (_enableControls))){ 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(); if (_scDrive){ _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(); }; } private function cacheBackground():void{ var _local1:BitmapData; var _local2:Bitmap; var _local3:Sprite; var _local4:Rectangle; var _local5:Matrix; var _local6:Sprite = new sprite_bg(); _bgList = new Array(); var _local7:int; while (_local7 < _local6.numChildren) { if ((_local6.getChildAt(_local7) is Sprite)){ _local3 = (_local6.getChildAt(_local7) as Sprite); _local4 = new Rectangle(_local3.x, _local3.y, _local3.width, _local3.height); _local3.visible = false; _local1 = new BitmapData(_local4.width, _local4.height, true, 0); _local5 = new Matrix(); _local5.translate(-(_local4.x), -(_local4.y)); _local1.draw(_local6, _local5); _local2 = new Bitmap(); _local2.bitmapData = _local1; _local2.x = _local3.x; _local2.y = _local3.y; _bgList[_bgList.length] = {bitmap:_local2, visible:false}; }; _local7++; }; } public function clear():void{ if (!_bgList){ cacheBackground(); }; 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("The game world is removed"); } 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 removeMain(_arg1):void{ _layerMain.removeChild(_arg1); } public function addScore(_arg1:int):void{ _score = (_score + _arg1); _scoreLevel = (_scoreLevel + _arg1); sound(SND_ADDSCORE); dispatchEvent(new Event(UPDATE_SCORE)); } public function set cargo(_arg1:int):void{ _cargo = ((_arg1)<=0) ? 0 : _arg1; dispatchEvent(new Event(UPDATE_CARGO)); } public function get isTruckCrashed():Boolean{ return (_truckIsCrashed); } public function resetScore():void{ _score = (_score - _scoreLevel); _scoreLevel = 0; } 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 removeBack(_arg1):void{ _layerBack.removeChild(_arg1); } 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)); } private function timeHandler(_arg1:Event):void{ _time--; dispatchEvent(new Event(UPDATE_TIME)); if (_time <= 0){ _timer.stop(); }; } public function get time():int{ return (_time); } public function set offSound(_arg1:Boolean):void{ _offSound = _arg1; sound(SND_MOTOR); } 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); updateBackground(_layerBg.x, _layerBg.y); } public function updateBackground(_arg1:Number, _arg2:Number):void{ var _local3:Bitmap; var _local4:int; while (_local4 < _bgList.length) { _local3 = _bgList[_local4].bitmap; if (((((((_local3.x + _local3.width) < Math.abs((x + _layerBg.x)))) || ((_local3.x > (Math.abs((x + _layerBg.x)) + App.SCR_W))))) && (_bgList[_local4].visible))){ _layerBg.removeChild(_local3); _bgList[_local4].visible = false; } else { if (((((((_local3.x + _local3.width) > Math.abs((x + _layerBg.x)))) && ((_local3.x < (Math.abs((x + _layerBg.x)) + App.SCR_W))))) && (!(_bgList[_local4].visible)))){ _layerBg.addChild(_local3); _bgList[_local4].visible = true; }; }; _local4++; }; } public function get totalCargo():int{ return (_totalCargo); } private function driveCompleteHandler(_arg1:Event):void{ sound(SND_DRIVE); } } }//package com.miningtruck
Section 116
//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 117
//Animation (com.touchmypixel.peepee.utils.Animation) package com.touchmypixel.peepee.utils { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; 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 118
//AnimationCache (com.touchmypixel.peepee.utils.AnimationCache) package com.touchmypixel.peepee.utils { import flash.events.*; import com.touchmypixel.events.*; import flash.utils.*; 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 119
//Log (Playtomic.Log) package Playtomic { import flash.events.*; import flash.net.*; import flash.utils.*; import flash.system.*; import flash.external.*; public final class Log { private static const PingR:Timer = new Timer(30000); private static const PingF:Timer = new Timer(60000); private static var LevelAverages:Array = new Array(); private static var Customs:Array = new Array(); public static var Cookie:SharedObject; public static var GUID:String = ""; private static var LevelRangeds:Array = new Array(); private static var Plays:int = 0; public static var Enabled:Boolean = false; private static var Pings:int = 0; private static var FrozenQueue:Array = new Array(); public static var SourceUrl:String; private static var HighestGoal:int = 0; private static var FirstPing:Boolean = true; private static var Frozen:Boolean = false; public static var BaseUrl:String; public static var Request:LogRequest; public static var Queue:Boolean = true; private static var LevelCounters:Array = new Array(); public static var SWFID:int = 0; public static function Link(_arg1:String, _arg2:String, _arg3:String, _arg4:int, _arg5:int, _arg6:int):void{ if (!Enabled){ return; }; Send(((((((((((("l/" + Clean(_arg2)) + "/") + Clean(_arg3)) + "/") + Clean(_arg1)) + "/") + _arg4) + "/") + _arg5) + "/") + _arg6)); } public static function LevelAverageMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{ if (!Enabled){ return; }; if (_arg4){ if (LevelAverages.indexOf(_arg1) > -1){ return; }; LevelAverages.push(_arg1); }; Send(((((("la/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3)); } private static function Send(_arg1:String, _arg2:Boolean=false):void{ if (Frozen){ FrozenQueue.push(_arg1); return; }; Request.Queue(_arg1); if (((((Request.Ready) || (_arg2))) || (!(Queue)))){ Request.Send(); Request = LogRequest.Create(); }; } public static function CustomMetric(_arg1:String, _arg2:String=null, _arg3:Boolean=false):void{ if (!Enabled){ return; }; if (_arg2 == null){ _arg2 = ""; }; if (_arg3){ if (Customs.indexOf(_arg1) > -1){ return; }; Customs.push(_arg1); }; Send(((("c/" + Clean(_arg1)) + "/") + Clean(_arg2))); } private static function Clean(_arg1:String):String{ while (_arg1.indexOf("/") > -1) { _arg1 = _arg1.replace("/", "\\"); }; while (_arg1.indexOf("~") > -1) { _arg1 = _arg1.replace("~", "-"); }; return (escape(_arg1)); } public static function UnFreeze():void{ Frozen = false; Request.MassQueue(FrozenQueue); } private static function GetCookie(_arg1:String):int{ if (Cookie.data[_arg1] == undefined){ return (0); }; return (int(Cookie.data[_arg1])); } public static function View(_arg1:int=0, _arg2:String="", _arg3:String=""):void{ if (SWFID > 0){ return; }; SWFID = _arg1; GUID = _arg2; Enabled = true; if ((((SWFID == 0)) || ((GUID == "")))){ Enabled = false; return; }; if (((((!((_arg3.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){ Enabled = false; return; }; SourceUrl = GetUrl(_arg3); if ((((((SourceUrl == null)) || ((SourceUrl == "")))) || ((SourceUrl.indexOf("https://") == 0)))){ Enabled = false; return; }; Security.allowDomain((("http://g" + Log.GUID) + ".api.playtomic.com/")); Security.allowInsecureDomain((("http://g" + Log.GUID) + ".api.playtomic.com/")); Security.loadPolicyFile((("http://g" + Log.GUID) + ".api.playtomic.com/crossdomain.xml")); Request = LogRequest.Create(); Cookie = SharedObject.getLocal("playtomic"); var _local4:int = GetCookie("views"); _local4++; SaveCookie("views", _local4); Send(("v/" + _local4), true); PingF.addEventListener(TimerEvent.TIMER, PingServer); PingF.start(); } public static function Freeze():void{ Frozen = true; } public static function LevelCounterMetric(_arg1:String, _arg2, _arg3:Boolean=false):void{ if (!Enabled){ return; }; if (_arg3){ if (LevelCounters.indexOf(_arg1) > -1){ return; }; LevelCounters.push(_arg1); }; Send(((("lc/" + Clean(_arg1)) + "/") + Clean(_arg2))); } public static function Play():void{ if (!Enabled){ return; }; LevelCounters = new Array(); LevelAverages = new Array(); LevelRangeds = new Array(); Plays++; Send(("p/" + Plays)); } private static function GetUrl(_arg1:String):String{ var url:String; var defaulturl = _arg1; if (ExternalInterface.available){ try { url = String(ExternalInterface.call("window.location.href.toString")); } catch(s:Error) { url = defaulturl; }; } else { if ((((defaulturl.indexOf("http://") == 0)) || ((defaulturl.indexOf("https://") == 0)))){ url = defaulturl; }; }; if ((((((url == null)) || ((url == "")))) || ((url == "null")))){ if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){ url = "http://local-testing/"; } else { url = null; }; }; return (escape(url)); } public static function LevelRangedMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{ if (!Enabled){ return; }; if (_arg4){ if (LevelRangeds.indexOf(_arg1) > -1){ return; }; LevelRangeds.push(_arg1); }; Send(((((("lr/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3)); } private static function SaveCookie(_arg1:String, _arg2:int):void{ var _local3:SharedObject = SharedObject.getLocal("swfstats"); _local3.data[_arg1] = _arg2.toString(); _local3.flush(); } public static function ForceSend():void{ if (!Enabled){ return; }; Request.Send(); Request = LogRequest.Create(); if (FrozenQueue.length > 0){ Request.MassQueue(FrozenQueue); }; } private static function PingServer(... _args):void{ if (!Enabled){ return; }; Pings++; Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true); if (FirstPing){ PingF.stop(); PingR.addEventListener(TimerEvent.TIMER, PingServer); PingR.start(); FirstPing = false; }; } } }//package Playtomic
Section 120
//LogRequest (Playtomic.LogRequest) package Playtomic { import flash.events.*; import flash.net.*; public final class LogRequest { public var Ready:Boolean;// = false private var Data:String;// = "" private var Target:URLRequest; private var Sender:URLLoader; private var BaseUrl:String; private static var Pool:Array = new Array(); private static var Failed:int = 0; public function LogRequest(){ this.Sender = new URLLoader(); this.Sender.addEventListener(Event.COMPLETE, this.Dispose, false, 0, true); this.Sender.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler, false, 0, true); this.Sender.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange, false, 0, true); this.Sender.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler, false, 0, true); this.Target = new URLRequest(); this.BaseUrl = ((("http://g" + Log.GUID) + ".api.playtomic.com/tracker/q.aspx?swfid=") + Log.SWFID); } public function Send():void{ this.Target.url = (((((((this.BaseUrl + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z"); this.Sender.load(this.Target); } private function SecurityErrorHandler(_arg1:SecurityErrorEvent):void{ } private function IOErrorHandler(_arg1:IOErrorEvent):void{ Failed++; } public function Queue(_arg1:String):void{ if (Failed > 3){ return; }; this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1)); if (this.Data.length > 300){ this.Ready = true; }; } private function StatusChange(_arg1:HTTPStatusEvent):void{ } public function MassQueue(_arg1:Array):void{ var _local3:LogRequest; if (Failed > 3){ return; }; var _local2:int = (_arg1.length - 1); while (_local2 > -1) { this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1[_local2])); _arg1.splice(_local2, 1); if (this.Data.length > 300){ _local3 = Create(); _local3.MassQueue(_arg1); this.Ready = true; this.Send(); return; }; _local2--; }; Log.Request = this; } public function Dispose(_arg1:Event=null):void{ Pool.push(this); } public static function Create():LogRequest{ var _local1:LogRequest = ((Pool.length > 0)) ? (Pool.pop() as LogRequest) : new (LogRequest); _local1.Data = ""; _local1.Ready = false; return (_local1); } } }//package Playtomic
Section 121
//arrows (arrows) package { import flash.display.*; public dynamic class arrows extends MovieClip { public var fb_btn:FB_button_big; public var playHubLogo:PlayHubLogoBig; } }//package
Section 122
//background (background) package { import flash.display.*; public dynamic class background extends MovieClip { } }//package
Section 123
//btn_back (btn_back) package { import flash.display.*; public dynamic class btn_back extends MovieClip { } }//package
Section 124
//btn_freegames (btn_freegames) package { import flash.display.*; public dynamic class btn_freegames extends MovieClip { } }//package
Section 125
//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 126
//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 127
//btn_moregames (btn_moregames) package { import flash.display.*; public dynamic class btn_moregames extends MovieClip { } }//package
Section 128
//btn_nextlevel (btn_nextlevel) package { import flash.display.*; public dynamic class btn_nextlevel extends MovieClip { } }//package
Section 129
//btn_play (btn_play) package { import flash.display.*; public dynamic class btn_play extends MovieClip { } }//package
Section 130
//btn_scores (btn_scores) package { import flash.display.*; public dynamic class btn_scores extends MovieClip { } }//package
Section 131
//btn_sellevel (btn_sellevel) package { import flash.display.*; public dynamic class btn_sellevel extends MovieClip { } }//package
Section 132
//ButtonMenu (ButtonMenu) package { import com.miningtruck.ui.*; public dynamic class ButtonMenu extends HudButton { } }//package
Section 133
//ButtonMusic (ButtonMusic) package { import com.miningtruck.ui.*; public dynamic class ButtonMusic extends HudButton { } }//package
Section 134
//ButtonRestart (ButtonRestart) package { import com.miningtruck.ui.*; public dynamic class ButtonRestart extends HudButton { } }//package
Section 135
//ButtonSound (ButtonSound) package { import com.miningtruck.ui.*; public dynamic class ButtonSound extends HudButton { } }//package
Section 136
//DefaultSplash (DefaultSplash) package { import flash.events.*; import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class DefaultSplash extends MovieClip { public var splash_playhub:SimpleButton; public function DefaultSplash(){ addFrameScript(0, frame1); } public function mouseDownHandler(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.playhub.com/?utm_source=games&utm_medium=splash_origional&utm_campaign=splash_origional")); } function frame1(){ Security.allowDomain("*"); splash_playhub.addEventListener(MouseEvent.CLICK, mouseDownHandler); stop(); } } }//package
Section 137
//FB_button_big (FB_button_big) package { import flash.display.*; public dynamic class FB_button_big extends MovieClip { } }//package
Section 138
//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 139
//fps (fps) package { import flash.display.*; import flash.text.*; public dynamic class fps extends MovieClip { public var tf:TextField; } }//package
Section 140
//label_credits (label_credits) package { import flash.display.*; public dynamic class label_credits extends MovieClip { } }//package
Section 141
//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 142
//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 143
//level_screens (level_screens) package { import flash.display.*; public dynamic class level_screens extends MovieClip { } }//package
Section 144
//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 145
//level1_part1_back (level1_part1_back) package { import flash.display.*; public dynamic class level1_part1_back extends MovieClip { } }//package
Section 146
//level1_part2 (level1_part2) package { import flash.display.*; public dynamic class level1_part2 extends MovieClip { } }//package
Section 147
//level1_part2_back (level1_part2_back) package { import flash.display.*; public dynamic class level1_part2_back extends MovieClip { } }//package
Section 148
//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 149
//level1_part3_back (level1_part3_back) package { import flash.display.*; public dynamic class level1_part3_back extends MovieClip { } }//package
Section 150
//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 151
//level2_part1_back (level2_part1_back) package { import flash.display.*; public dynamic class level2_part1_back extends MovieClip { } }//package
Section 152
//level2_part2 (level2_part2) package { import flash.display.*; public dynamic class level2_part2 extends MovieClip { } }//package
Section 153
//level2_part2_back (level2_part2_back) package { import flash.display.*; public dynamic class level2_part2_back extends MovieClip { } }//package
Section 154
//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 155
//level2_part3_back (level2_part3_back) package { import flash.display.*; public dynamic class level2_part3_back extends MovieClip { } }//package
Section 156
//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 157
//level3_part1_back (level3_part1_back) package { import flash.display.*; public dynamic class level3_part1_back extends MovieClip { } }//package
Section 158
//level3_part2 (level3_part2) package { import flash.display.*; public dynamic class level3_part2 extends MovieClip { } }//package
Section 159
//level3_part2_back (level3_part2_back) package { import flash.display.*; public dynamic class level3_part2_back extends MovieClip { } }//package
Section 160
//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 161
//level3_part3_back (level3_part3_back) package { import flash.display.*; public dynamic class level3_part3_back extends MovieClip { } }//package
Section 162
//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 163
//level4_part1_back (level4_part1_back) package { import flash.display.*; public dynamic class level4_part1_back extends MovieClip { } }//package
Section 164
//level4_part2 (level4_part2) package { import flash.display.*; public dynamic class level4_part2 extends MovieClip { } }//package
Section 165
//level4_part2_back (level4_part2_back) package { import flash.display.*; public dynamic class level4_part2_back extends MovieClip { } }//package
Section 166
//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 167
//level4_part3_back (level4_part3_back) package { import flash.display.*; public dynamic class level4_part3_back extends MovieClip { } }//package
Section 168
//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 169
//level5_part1_back (level5_part1_back) package { import flash.display.*; public dynamic class level5_part1_back extends MovieClip { } }//package
Section 170
//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 171
//level5_part2_back (level5_part2_back) package { import flash.display.*; public dynamic class level5_part2_back extends MovieClip { } }//package
Section 172
//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 173
//level5_part3_back (level5_part3_back) package { import flash.display.*; public dynamic class level5_part3_back extends MovieClip { } }//package
Section 174
//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 175
//level6_part1_back (level6_part1_back) package { import flash.display.*; public dynamic class level6_part1_back extends MovieClip { } }//package
Section 176
//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 177
//level6_part2_back (level6_part2_back) package { import flash.display.*; public dynamic class level6_part2_back extends MovieClip { } }//package
Section 178
//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 179
//level6_part3_back (level6_part3_back) package { import flash.display.*; public dynamic class level6_part3_back extends MovieClip { } }//package
Section 180
//level7_part1 (level7_part1) package { import flash.display.*; public dynamic class level7_part1 extends MovieClip { public var lenta:MovieClip; } }//package
Section 181
//level7_part1_back (level7_part1_back) package { import flash.display.*; public dynamic class level7_part1_back extends MovieClip { } }//package
Section 182
//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 183
//level7_part2_back (level7_part2_back) package { import flash.display.*; public dynamic class level7_part2_back extends MovieClip { } }//package
Section 184
//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 185
//level7_part3_back (level7_part3_back) package { import flash.display.*; public dynamic class level7_part3_back extends MovieClip { } }//package
Section 186
//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 187
//level8_part1_back (level8_part1_back) package { import flash.display.*; public dynamic class level8_part1_back extends MovieClip { } }//package
Section 188
//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 189
//level8_part2_back (level8_part2_back) package { import flash.display.*; public dynamic class level8_part2_back extends MovieClip { } }//package
Section 190
//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 191
//level8_part3_back (level8_part3_back) package { import flash.display.*; public dynamic class level8_part3_back extends MovieClip { } }//package
Section 192
//LevelEndLogos (LevelEndLogos) package { import flash.display.*; public dynamic class LevelEndLogos extends MovieClip { public var fb_btn:FB_button_big; public var playHubLogo:MovieClip; } }//package
Section 193
//LevelProgress_mc (LevelProgress_mc) package { import flash.display.*; public dynamic class LevelProgress_mc extends MovieClip { public var truck_ico:MovieClip; } }//package
Section 194
//logo_box2d (logo_box2d) package { import flash.display.*; public dynamic class logo_box2d extends MovieClip { } }//package
Section 195
//logo_game (logo_game) package { import flash.display.*; public dynamic class logo_game extends MovieClip { } }//package
Section 196
//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 197
//music_track1 (music_track1) package { import flash.media.*; public dynamic class music_track1 extends Sound { } }//package
Section 198
//music_track2 (music_track2) package { import flash.media.*; public dynamic class music_track2 extends Sound { } }//package
Section 199
//PlayHubLogoBig (PlayHubLogoBig) package { import flash.display.*; public dynamic class PlayHubLogoBig extends MovieClip { } }//package
Section 200
//PlayHubSplash (PlayHubSplash) package { import flash.display.*; public dynamic class PlayHubSplash extends MovieClip { public function PlayHubSplash(){ addFrameScript(250, frame251); } function frame251(){ stop(); } } }//package
Section 201
//snd_addscore (snd_addscore) package { import flash.media.*; public dynamic class snd_addscore extends Sound { } }//package
Section 202
//snd_bibi (snd_bibi) package { import flash.media.*; public dynamic class snd_bibi extends Sound { } }//package
Section 203
//snd_bonus (snd_bonus) package { import flash.media.*; public dynamic class snd_bonus extends Sound { } }//package
Section 204
//snd_button (snd_button) package { import flash.media.*; public dynamic class snd_button extends Sound { } }//package
Section 205
//snd_crash (snd_crash) package { import flash.media.*; public dynamic class snd_crash extends Sound { } }//package
Section 206
//snd_drive (snd_drive) package { import flash.media.*; public dynamic class snd_drive extends Sound { } }//package
Section 207
//snd_explosion (snd_explosion) package { import flash.media.*; public dynamic class snd_explosion extends Sound { } }//package
Section 208
//snd_motor (snd_motor) package { import flash.media.*; public dynamic class snd_motor extends Sound { } }//package
Section 209
//snd_score (snd_score) package { import flash.media.*; public dynamic class snd_score extends Sound { } }//package
Section 210
//snd_tube (snd_tube) package { import flash.media.*; public dynamic class snd_tube extends Sound { } }//package
Section 211
//sprite_barrel (sprite_barrel) package { import flash.display.*; public dynamic class sprite_barrel extends MovieClip { } }//package
Section 212
//sprite_bg (sprite_bg) package { import flash.display.*; public dynamic class sprite_bg extends MovieClip { } }//package
Section 213
//sprite_box (sprite_box) package { import flash.display.*; public dynamic class sprite_box extends MovieClip { } }//package
Section 214
//sprite_coal (sprite_coal) package { import flash.display.*; public dynamic class sprite_coal extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 215
//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 216
//sprite_conus (sprite_conus) package { import flash.display.*; public dynamic class sprite_conus extends MovieClip { } }//package
Section 217
//sprite_explosion (sprite_explosion) package { import flash.display.*; public dynamic class sprite_explosion extends MovieClip { } }//package
Section 218
//sprite_fire (sprite_fire) package { import flash.display.*; public dynamic class sprite_fire extends MovieClip { } }//package
Section 219
//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 220
//sprite_smoke1 (sprite_smoke1) package { import flash.display.*; public dynamic class sprite_smoke1 extends MovieClip { } }//package
Section 221
//sprite_smoke2 (sprite_smoke2) package { import flash.display.*; public dynamic class sprite_smoke2 extends MovieClip { } }//package
Section 222
//sprite_suck (sprite_suck) package { import flash.display.*; public dynamic class sprite_suck extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 223
//sprite_timer (sprite_timer) package { import flash.display.*; public dynamic class sprite_timer extends MovieClip { } }//package
Section 224
//sprite_traffic (sprite_traffic) package { import flash.display.*; public dynamic class sprite_traffic extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 225
//sprite_truck_body (sprite_truck_body) package { import flash.display.*; public dynamic class sprite_truck_body extends MovieClip { } }//package
Section 226
//sprite_wheel (sprite_wheel) package { import flash.display.*; public dynamic class sprite_wheel extends MovieClip { } }//package
Section 227
//TruckCrashMenu (TruckCrashMenu) package { import flash.display.*; public dynamic class TruckCrashMenu extends MovieClip { public var restartLevel_btn:SimpleButton; public var moreGames_btn:SimpleButton; public var playHubLogo:PlayHubLogoBig; } }//package
Section 228
//UmutPlayButton (UmutPlayButton) package { import flash.display.*; public dynamic class UmutPlayButton extends SimpleButton { } }//package
Section 229
//UmutPlayButton2 (UmutPlayButton2) package { import flash.display.*; public dynamic class UmutPlayButton2 extends SimpleButton { } }//package

Library Items

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

Instance Names

"truck_ico"Symbol 5 MovieClip {LevelProgress_mc} Frame 1Symbol 4 MovieClip
"playHubLogo"Symbol 14 MovieClip {arrows} Frame 1Symbol 10 MovieClip {PlayHubLogoBig}
"fb_btn"Symbol 14 MovieClip {arrows} Frame 1Symbol 13 MovieClip {FB_button_big}
"splash_playhub"Symbol 39 MovieClip {DefaultSplash} Frame 1Symbol 22 Button
"tf"Symbol 60 MovieClip {com.miningtruck.ui.Loading} Frame 1Symbol 50 EditableText
"tf"Symbol 62 MovieClip {fps} Frame 1Symbol 61 EditableText
"e_bounds"Symbol 95 MovieClip {sprite_coal} Frame 1Symbol 88 MovieClip
"e_bounds"Symbol 99 MovieClip {sprite_coal_big} Frame 1Symbol 88 MovieClip
"e_bounds"Symbol 104 MovieClip {sprite_road_light} Frame 1Symbol 88 MovieClip
"e_bounds"Symbol 146 MovieClip {sprite_suck} Frame 1Symbol 88 MovieClip
"e_bounds"Symbol 170 MovieClip {sprite_traffic} Frame 1Symbol 88 MovieClip
"tf2"Symbol 196 MovieClip {label_green} Frame 1Symbol 194 EditableText
"tf1"Symbol 196 MovieClip {label_green} Frame 1Symbol 195 EditableText
"tf2"Symbol 199 MovieClip {label_red} Frame 1Symbol 197 EditableText
"tf1"Symbol 199 MovieClip {label_red} Frame 1Symbol 198 EditableText
"tf2"Symbol 217 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 214 EditableText
"tf1"Symbol 217 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 216 EditableText
"tf2"Symbol 221 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 218 EditableText
"tf1"Symbol 221 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 220 EditableText
"tf2"Symbol 225 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 223 EditableText
"tf1"Symbol 225 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 224 EditableText
"tf2"Symbol 247 MovieClip {btn_level} Frame 1Symbol 238 EditableText
"tf1"Symbol 247 MovieClip {btn_level} Frame 1Symbol 239 EditableText
"tf2"Symbol 255 MovieClip {btn_level_lock} Frame 1Symbol 248 EditableText
"tf1"Symbol 255 MovieClip {btn_level_lock} Frame 1Symbol 249 EditableText
"tf2"Symbol 263 MovieClip {fly_score} Frame 1Symbol 261 EditableText
"tf1"Symbol 263 MovieClip {fly_score} Frame 1Symbol 262 EditableText
"tf2"Symbol 345 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 337 EditableText
"tf1"Symbol 345 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 338 EditableText
"playHub_logoSmall"Symbol 345 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 341 MovieClip
"fb_btn"Symbol 345 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 344 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 380 MovieClip {level1_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"target"Symbol 404 MovieClip {level1_part3} Frame 1Symbol 368 MovieClip
"box"Symbol 404 MovieClip {level1_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 404 MovieClip {level1_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 404 MovieClip {level1_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"roadlight"Symbol 404 MovieClip {level1_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"conus"Symbol 411 MovieClip {level2_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"conus"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"barrel"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"target"Symbol 420 MovieClip {level2_part3} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 425 MovieClip {level3_part1} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"conus"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"target"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 368 MovieClip
"box"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 438 MovieClip {level3_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"box"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 368 MovieClip
"conus"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"barrel"Symbol 441 MovieClip {level4_part1} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"barrel"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"target"Symbol 448 MovieClip {level4_part3} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"conus"Symbol 451 MovieClip {level5_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 104 MovieClip {sprite_road_light}
"conus"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 455 MovieClip {level5_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 458 MovieClip {level5_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"box"Symbol 458 MovieClip {level5_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 458 MovieClip {level5_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"target"Symbol 458 MovieClip {level5_part3} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"conus"Symbol 461 MovieClip {level6_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 465 MovieClip {level6_part2} Frame 1Symbol 104 MovieClip {sprite_road_light}
"target"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 368 MovieClip
"box"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"box"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 468 MovieClip {level6_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 473 MovieClip {level7_part1} Frame 1Symbol 368 MovieClip
"box"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 104 MovieClip {sprite_road_light}
"conus"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 478 MovieClip {level7_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"conus"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 101 MovieClip {sprite_conus}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"target"Symbol 481 MovieClip {level7_part3} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"lenta"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 368 MovieClip
"conus"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 484 MovieClip {level8_part1} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"roadlight"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 104 MovieClip {sprite_road_light}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"conus"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"conus"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 101 MovieClip {sprite_conus}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"barrel"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 84 MovieClip {sprite_barrel}
"box"Symbol 487 MovieClip {level8_part2} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"target"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 368 MovieClip
"box"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"box"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 86 MovieClip {sprite_box}
"barrel"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 84 MovieClip {sprite_barrel}
"roadlight"Symbol 490 MovieClip {level8_part3} Frame 1Symbol 104 MovieClip {sprite_road_light}
"restartLevel_btn"Symbol 508 MovieClip {TruckCrashMenu} Frame 1Symbol 502 Button
"moreGames_btn"Symbol 508 MovieClip {TruckCrashMenu} Frame 1Symbol 507 Button
"playHubLogo"Symbol 508 MovieClip {TruckCrashMenu} Frame 1Symbol 10 MovieClip {PlayHubLogoBig}
"fb_btn"Symbol 509 MovieClip {LevelEndLogos} Frame 1Symbol 13 MovieClip {FB_button_big}
"playHubLogo"Symbol 509 MovieClip {LevelEndLogos} Frame 1Symbol 341 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 11284 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."

Labels

"game"Frame 2
"end"Symbol 72 MovieClip {PlayHubSplash} Frame 251




http://swfchan.com/25/121577/info.shtml
Created: 4/3 -2019 08:57:39 Last modified: 4/3 -2019 08:57:39 Server time: 14/11 -2024 22:57:56