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

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

Truck & Monster Truck - Alien Truck.swf

This is the info page for
Flash #234654

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


Text
a game by

loading

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

<p align="center"><font face="Arial Black_15pt_st" size="15" color="#943d27" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="Arial Black_15pt_st" size="15" color="#1e8c84" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="Arial Black_20pt_st" size="20" color="#412b1d" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="center"><font face="Arial Black_20pt_st" size="20" color="#b57c28" letterSpacing="0.000000" kerning="1">label</font></p>

<p align="right"><font face="Arial Black_9pt_st" size="9" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Arial Black_9pt_st" size="9" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="Arial Black_9pt_st" size="9" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="left"><font face="Arial Black_9pt_st" size="9" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arial Black_15pt_st" size="15" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arial Black_15pt_st" size="15" color="#b6d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#363227" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#969f4b" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#363227" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#b6a775" letterSpacing="0.000000" kerning="1">LEVEL 1</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#41737f" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arial Black_9pt_st" size="9" color="#b5d2d9" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Arial Black_9pt_st" size="9" color="#373221" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="right"><font face="Arial Black_9pt_st" size="9" color="#a49558" letterSpacing="0.000000" kerning="1">0</font></p>

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

gas

brake

balance left

balance right

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

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

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; var _local17:Number = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local3:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_next:b2Shape; public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_isSensor:Boolean; public var m_restitution:Number; public var m_userData; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var _local4:b2AABB = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:uint = proxyId; var _local4:uint = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); var _local10:int; var _local11:int; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; var _local5:uint = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; var _local6:uint = (2 * m_proxyCount); var _local7:Array = new Array(); var _local8:Array = new Array(); ComputeBounds(_local7, _local8, _arg1); var _local9:int; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; var _local10:int; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; var _local4:b2Proxy = m_proxyPool[_arg1]; var _local5:int = (2 * m_proxyCount); var _local6:int; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; var _local7:int; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2Proxy = m_proxyPool[_arg1]; var _local14:b2BoundValues = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); var _local15:b2BoundValues = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var proxyId1:uint; public var userData;// = null public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; var _local3:int; var _local4:Array = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local5:uint = m_hashTable[_local4]; var _local6:b2Pair; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; var _local5:uint = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentMass:Number; public var equalizedMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; var _local9:int; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local3:b2Mat22; var _local4:b2Vec2; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local2:Number = 0; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; var _local19:int; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); var _local9:Array = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local1 = _local2.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); var _local12:Number = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local13:Number = (-(m_mass) * _local12); m_u.Set(_local9, _local10); var _local14:Number = (_local13 * m_u.x); var _local15:Number = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_ground2:b2Body; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local15:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22 = m_body2.m_xf.R; var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local4:Number; var _local5:Number; var _local1:Number = 0; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5))); var _local7:Number = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); var _local6:Number = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); var _local5:Number = m_body2.m_mass; var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6); var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local7:Number; var _local8:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); var _local9:Number = (_arg1.dt * m_impulse.x); var _local10:Number = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); var _local15:Number = (_arg1.dt * _local10); var _local16:Number = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var timeStep:Number; public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22 = m_body1.m_xf.R; var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local9:b2Mat22; var _local10:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = _local3.m_invMass; var _local6:Number = _local4.m_invMass; var _local7:Number = _local3.m_invI; var _local8:Number = _local4.m_invI; _local9 = _local3.m_xf.R; var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; var _local15:Number = (_local3.m_sweep.c.x + _local11); var _local16:Number = (_local3.m_sweep.c.y + _local12); var _local17:Number = (_local4.m_sweep.c.x + _local13); var _local18:Number = (_local4.m_sweep.c.y + _local14); var _local19:Number = (_local17 - _local15); var _local20:Number = (_local18 - _local16); _local9 = _local3.m_xf.R; var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); var _local23:Number = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local24:Number = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); var _local25:Number = b2Math.b2Abs(_local23); var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var _local27:Number = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local28:Number = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; _local4 = _local2.m_xf.R; var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local3:b2Mat22; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local23:Number = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_pivotMass:b2Mat22; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local10:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); var _local15:Number = (_arg1.dt * _local13); var _local16:Number = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local6:b2Mat22; var _local25:Number; var _local26:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = 0; _local6 = _local3.m_xf.R; var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; var _local12:Number = (_local3.m_sweep.c.x + _local7); var _local13:Number = (_local3.m_sweep.c.y + _local8); var _local14:Number = (_local4.m_sweep.c.x + _local10); var _local15:Number = (_local4.m_sweep.c.y + _local11); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); var _local18:Number = _local3.m_invMass; var _local19:Number = _local4.m_invMass; var _local20:Number = _local3.m_invI; var _local21:Number = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); var _local22:Number = tImpulse.x; var _local23:Number = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local24:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_xf:b2XForm; public var ball:Boolean;// = false public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeCount:int; public var m_invI:Number; public var typnum;// = "" public var m_torque:Number; public var m_flags:uint; public var m_linearVelocity:b2Vec2; public var p_typ:String; public var m_world:b2World; public var bw;// = "down" public var tou:Boolean;// = false public var sukaYa;// = false public var m_next:b2Body; public var m_mass:Number; public var typ;// = "typ" public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_sweep:b2Sweep; public var m_userData; public var m_invMass:Number; public var spec;// = false public var m_prev:b2Body; public var m_linearDamping:Number; public var m_type:int; public var m_angularDamping:Number; public var mish:Boolean;// = false public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; var _local7:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetShapeList():b2Shape{ return (m_shapeList); } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetInertia():Number{ return (m_I); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ if (m_world.m_lock == true){ return (null); }; var _local2:b2Shape = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function DestroyShape(_arg1:b2Shape):void{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import com.miningtruck.objects.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ var _local2:* = _arg1.shape1.GetBody().GetUserData(); var _local3:* = _arg1.shape2.GetBody().GetUserData(); if (((_local2) && (_local3))){ if ((((_local2 is Wheel)) && ((_local3 is Ground)))){ (_local2 as Wheel).groundCollision(); } else { if ((((_local2 is Ground)) && ((_local3 is Wheel)))){ (_local3 as Wheel).groundCollision(); } else { if ((((_local2 is Cargo)) && ((_local3 is Lenta)))){ (_local2 as Cargo).onLenta(); } else { if ((((_local2 is Lenta)) && ((_local3 is Cargo)))){ (_local3 as Cargo).onLenta(); } else { if ((((_local2 is Cargo)) && ((_local3 is 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
//Level1 (com.miningtruck.levels.Level1) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level1 extends LevelBase { public function Level1(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level1_part1(); _back = new level1_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level1_part2(); _back = new level1_part2_back(); makeObjects(); makeBody(3200); cacheLevel(3200); _level = new level1_part3(); _back = new level1_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(700, 252); _world.time = 90; _world.totalCargo = 7; } } }//package com.miningtruck.levels
Section 79
//Level2 (com.miningtruck.levels.Level2) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level2 extends LevelBase { public function Level2(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level2_part1(); _back = new level2_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level2_part2(); _back = new level2_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level2_part3(); _back = new level2_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 2) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, (_local2 * 10)); if (_local2 == 1){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 80
//Level3 (com.miningtruck.levels.Level3) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level3 extends LevelBase { public function Level3(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level3_part1(); _back = new level3_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level3_part2(); _back = new level3_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level3_part3(); _back = new level3_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 5; } } }//package com.miningtruck.levels
Section 81
//Level4 (com.miningtruck.levels.Level4) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level4 extends LevelBase { public function Level4(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level4_part1(); _back = new level4_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level4_part2(); _back = new level4_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level4_part3(); _back = new level4_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 82
//Level5 (com.miningtruck.levels.Level5) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level5 extends LevelBase { public function Level5(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level5_part1(); _back = new level5_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level5_part2(); _back = new level5_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level5_part3(); _back = new level5_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 4) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, (_local2 * 10)); if (_local2 == 3){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 83
//Level6 (com.miningtruck.levels.Level6) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level6 extends LevelBase { public function Level6(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level6_part1(); _back = new level6_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level6_part2(); _back = new level6_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level6_part3(); _back = new level6_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 10); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 262); _world.time = 120; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 84
//Level7 (com.miningtruck.levels.Level7) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level7 extends LevelBase { public function Level7(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level7_part1(); _back = new level7_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level7_part2(); _back = new level7_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level7_part3(); _back = new level7_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 15); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 30); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 85
//Level8 (com.miningtruck.levels.Level8) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level8 extends LevelBase { public function Level8(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level8_part1(); _back = new level8_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level8_part2(); _back = new level8_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level8_part3(); _back = new level8_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 9) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 15)); _local3++; }; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, ((9 * 10) + 10)); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 86
//LevelBase (com.miningtruck.levels.LevelBase) package com.miningtruck.levels { import flash.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;// = 30 private var _checkInterval:int;// = 0 var _scrSheets:Array; private var _cargoList:Array; public function LevelBase(_arg1:World){ _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 87
//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 88
//EffectBase (com.miningtruck.objects.EffectBase) package com.miningtruck.objects { import flash.display.*; import com.miningtruck.*; public class EffectBase extends Sprite { var _sleep:Boolean;// = false var _world:World; public function EffectBase(_arg1:World){ _world = _arg1; } public function destroy():void{ } public function get sleep():Boolean{ return (_sleep); } public function progress():void{ } public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ } } }//package com.miningtruck.objects
Section 89
//EffectDust (com.miningtruck.objects.EffectDust) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectDust extends EffectBase { private var _sprite:Animation; private var _scale:Number;// = 0 private var _speedX:Number;// = 0 private var _speedY:Number;// = 0 public function EffectDust(_arg1:World){ super(_arg1); } override public function progress():void{ if (_sleep){ return; }; if (_sprite.scaleX < _scale){ _sprite.scaleX = (_sprite.scaleX + 0.1); _sprite.scaleY = _sprite.scaleX; }; x = (x + _speedX); y = (y + _speedY); if ((x + 70) < Math.abs(_world.x)){ destroy(); }; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ var _local5:int; if (_arg4){ _sprite = _world.app.animCache.getAnimation("sprite_fire"); } else { _local5 = int((Math.random() * 2)); switch (_local5){ case 0: _sprite = _world.app.animCache.getAnimation("sprite_smoke1"); break; case 1: _sprite = _world.app.animCache.getAnimation("sprite_smoke2"); break; }; }; x = _arg1; y = (_arg2 + 20); _sprite.play(); _sprite.smoothing = true; _scale = (Math.random() + 0.2); _scale = ((_scale)>1) ? 1 : _scale; _sprite.scaleX = 0; _sprite.scaleY = 0; addChild(_sprite); _sprite.rotation = (Math.random() * 180); _speedX = ((_world.truckSpeed * 0.1) + (((Math.random() * 2) - 1) * 0.5)); if (_arg4){ _speedY = (-(Math.random()) * 4); } else { _speedY = -(Math.abs((_world.truckSpeed * 0.1))); }; _world.addMain(this); _sleep = false; _sprite.addEventListener(Event.COMPLETE, completeHandler); } public function completeHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ if (_sprite){ _world.removeMain(this); _sprite.removeEventListener(Event.COMPLETE, completeHandler); removeChild(_sprite); _sprite.destroy(); _sprite = null; _sleep = true; }; } } }//package com.miningtruck.objects
Section 90
//EffectExplosion (com.miningtruck.objects.EffectExplosion) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectExplosion extends EffectBase { private var _sprite:Animation; public function EffectExplosion(_arg1:World){ super(_arg1); } private function explosionCompleteHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ _sprite.removeEventListener(Event.COMPLETE, explosionCompleteHandler); _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ _sprite = _world.app.animCache.getAnimation("sprite_explosion"); addChild(_sprite); x = _arg1; y = _arg2; _sprite.play(); _sprite.addEventListener(Event.COMPLETE, explosionCompleteHandler); _world.addMain(this); } } }//package com.miningtruck.objects
Section 91
//EffectScore (com.miningtruck.objects.EffectScore) package com.miningtruck.objects { import flash.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 92
//Ground (com.miningtruck.objects.Ground) package com.miningtruck.objects { import flash.display.*; public class Ground extends Sprite { } }//package com.miningtruck.objects
Section 93
//Lenta (com.miningtruck.objects.Lenta) package com.miningtruck.objects { import flash.display.*; public class Lenta extends Sprite { } }//package com.miningtruck.objects
Section 94
//Truck (com.miningtruck.objects.Truck) package com.miningtruck.objects { import flash.display.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Truck extends Sprite { private var _sprite:Animation; private var _world:World; public function Truck(_arg1:World){ _world = _arg1; _sprite = _world.app.animCache.getAnimation("sprite_truck_body"); _sprite.smoothing = true; addChild(_sprite); } public function set frame(_arg1:int):void{ _sprite.gotoAndStop(_arg1); } public function crash(_arg1:Boolean=false):void{ var _local2:EffectExplosion; if (((((((!(_world.isTruckCrashed)) && ((Math.abs(rotation) > 60)))) && ((Math.abs(rotation) < 360)))) || (_arg1))){ _world.truckCrashed(); frame = 4; _local2 = new EffectExplosion(_world); _local2.make(x, y); }; } public function destroy():void{ removeChild(_sprite); _sprite.destroy(); } } }//package com.miningtruck.objects
Section 95
//Wheel (com.miningtruck.objects.Wheel) package com.miningtruck.objects { import 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 96
//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_RETRY:int = 8; 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: _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; case BTN_RETRY: _button = new btn_retry(); _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 97
//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 98
//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 99
//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 100
//IcoLevel (com.miningtruck.ui.IcoLevel) package com.miningtruck.ui { import flash.display.*; import flash.text.*; public class IcoLevel extends MovieClip { public var tf2:TextField; public var tf1:TextField; public function update(_arg1:String):void{ if (this["tf1"]){ (this["tf1"] as TextField).text = _arg1; }; if (this["tf2"]){ (this["tf2"] as TextField).text = _arg1; }; } } }//package com.miningtruck.ui
Section 101
//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 102
//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 = 11970421; break; case LABEL_GRAY_BIG: _label = new label_red(); (_label["tf1"] as TextField).textColor = 11970421; break; case LABEL_PURPLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 10905025; break; case LABEL_PURPLE_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 10905025; (_label["tf2"] as TextField).textColor = 3551783; break; case LABEL_RED_MIDDLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 12677961; break; case LABEL_BROWN: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 0xFFFFFF; (_label["tf2"] as TextField).visible = false; break; case LABEL_GRAY_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 11970421; (_label["tf2"] as TextField).textColor = 3617313; break; }; if (_label){ addChild(_label); } else { trace("Label::say -> error labType"); }; } public function hide(_arg1:int=0):void{ _pause = _arg1; addEventListener(Event.ENTER_FRAME, hideLabelHandler); } private function showLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha + 0.1); y = lerp(_stopY, y, 0.8); if (alpha >= 1){ alpha = 1; removeEventListener(Event.ENTER_FRAME, showLabelHandler); }; } else { _pause--; }; } public function set caption(_arg1:String):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.text = _arg1; _local4++; }; } public function set textWidth(_arg1:int):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.width = _arg1; _local3.x = (-(_local3.width) * 0.5); _local4++; }; } public function destroy():void{ if (_label){ removeChild(_label); }; _label = null; } public function show(_arg1:int, _arg2:int=0):void{ _stopY = _arg1; _pause = _arg2; alpha = 0; addEventListener(Event.ENTER_FRAME, showLabelHandler); } private function lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + (_arg3 * (_arg2 - _arg1)))); } private function hideLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha - 0.2); y = (y + 5); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, hideLabelHandler); destroy(); }; } else { _pause--; }; } } }//package com.miningtruck.ui
Section 103
//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 104
//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 105
//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 106
//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 = "Where 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 = "PLAY 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 = ""; 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 107
//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 108
//Game (com.miningtruck.Game) package com.miningtruck { import flash.events.*; import flash.display.*; import com.miningtruck.levels.*; import flash.net.*; 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 _btnSelectLevel:Button; private var _btnScores: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 _moreLevelBtn:Button; private var _btnFreeGames:Button; private var _btnMenu:ButtonMenu; private var _levelNum:int;// = 1 private var _bg:Sprite; private var _retryLogo:SimpleButton; private var _pause:int; private var _musicChannel:SoundChannel; private var _btnRetry:Button; 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 _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 _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); _gameWorld.setLogo(); _icoTime = new IcoTime(); _icoTime.x = 10; _icoTime.y = 10; addChild(_icoTime); _icoCargo = new IcoCargo(); _icoCargo.x = (App.SCR_W - 10); _icoCargo.y = 10; addChild(_icoCargo); _scores = new Scores(); _scores.x = (App.SCR_W * 0.5); _scores.y = 10; addChild(_scores); _btnMusic = new ButtonMusic(); _btnMusic.x = 15; _btnMusic.y = (App.SCR_H - 15); _btnMusic.checkMode = true; addChild(_btnMusic); _btnMusic.addEventListener(MouseEvent.MOUSE_UP, musicClickHandler); _btnSound = new ButtonSound(); _btnSound.x = 30; _btnSound.y = (App.SCR_H - 15); _btnSound.checkMode = true; addChild(_btnSound); _btnSound.addEventListener(MouseEvent.MOUSE_UP, soundClickHandler); _btnMenu = new ButtonMenu(); _btnMenu.x = 45; _btnMenu.y = (App.SCR_H - 15); addChild(_btnMenu); _btnMenu.addEventListener(MouseEvent.MOUSE_UP, menuClickHandler); _btnRestart = new ButtonRestart(); _btnRestart.x = 61; _btnRestart.y = (App.SCR_H - 15); addChild(_btnRestart); _btnRestart.addEventListener(MouseEvent.MOUSE_UP, restartClickHandler); _icoLevel = new IcoLevel(); _icoLevel.x = (App.SCR_W - 15); _icoLevel.y = (App.SCR_H - 21); addChild(_icoLevel); _restartHint = new Label((App.SCR_W * 0.5), (App.SCR_H - 100), Label.LABEL_GRAY_SMALL); _restartHint.caption = App.TXT_RESTART_HINT; _restartHint.visible = false; _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); _gameWorld.removeEventListener(World.LEVEL_RETRY, retryGameHandler); 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; _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_FREE_GAMES; addChild(_btnNextLevel); _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 258, Button.BTN_MORE_GAMES); _btnFreeGames.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 320, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_LEVEL_RESTART; addChild(_btnSelectLevel); _hint = new Label((App.SCR_W * 0.5), 370, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 408; 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; if (_logoGame.alpha >= 1){ _btnPlay.show(200, 5); _btnMoreGames.show(327, 10); _btnScores.show(307, 15); setMainMenuHandlers(); action(ACT_NONE); }; break; case ACT_HIDE_MAINMENU: _logoGame.alpha = (_logoGame.alpha - 0.1); _logoBox2d.alpha = _logoGame.alpha; _credits.alpha = _logoGame.alpha; if (_logoGame.alpha <= 0){ action(ACT_NONE); destroyMainMenu(); makeSelectLevel(); }; break; case ACT_SHOW_SELECTLEVEL: _btnLevel1.alpha = (_btnLevel1.alpha + 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; 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; 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; 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){ _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); _btnNextLevel.show(216, 15); _btnFreeGames.show(278, 20); _btnSelectLevel.show(340, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELCOMPLETE; setLevelCompleteHandlers(); }; } else { _pause--; }; break; case ACT_GAME_TO_LEVELFAILED: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(138, 10); _btnNextLevel.show(216, 15); _btnFreeGames.show(278, 20); _btnSelectLevel.show(340, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELFAILED; setLevelFailedHandlers(); }; } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_SELECTLEVEL: if (_pause <= 0){ action(ACT_NONE); destroyLevelComplete(); makeSelectLevel(); } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelComplete(); makeLoadLevel(); } else { _pause--; }; break; case ACT_LEVELFAILED_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelFailed(); makeLoadLevel(); } else { _pause--; }; break; case ACT_GAME_TO_CONGRATULATIONS: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(148, 10); addChild(_hint); _hint.show(188, 15); _btnSelectLevel.show(268, 25); _btnNextLevel.show(320, 30); setCongratHandlers(); }; } else { _pause--; }; break; case ACT_ONGRATULATIONS_TO_MAINMENU: if (_pause <= 0){ action(ACT_NONE); destroyCongrat(); makeMainMenu(); } else { _pause--; }; break; }; } private function 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; }; }; } private function toSelectLevelHandler(_arg1:Event):void{ removeLevelCompleteHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; _gameWorld.score = 0; action(ACT_LEVELCOMPLETE_TO_SELECTLEVEL); } public function 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); } private function removeCongratHandlers():void{ _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, mainMenuHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, submitScoreHandler); } 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=alien-truck&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(); _moreLevelBtn.hide(0); _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; } 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, submitScoreHandler); } private function setLevelFailedHandlers():void{ _btnFreeGames.addEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.addEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.addEventListener(MouseEvent.MOUSE_UP, restartLevelHandler); } private function setSelectLevelHandlers():void{ _btnLevel1.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel2.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel3.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel4.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel5.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel6.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel7.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel8.addEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnBack.addEventListener(MouseEvent.MOUSE_UP, backHandler); } private function restartLevel():void{ removeLevelFaildeHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _hint.hide(10); _gameWorld.resetScore(); _pause = 20; action(ACT_LEVELFAILED_TO_LOADLEVEL); } private function makeMainMenu():void{ _logoGame = new logo_game(); _logoGame.x = int(((App.SCR_W * 0.5) - (_logoGame.width * 0.5))); _logoGame.y = 50; addChild(_logoGame); _logoBox2d = new logo_box2d(); _logoBox2d.x = 10; _logoBox2d.y = ((App.SCR_H - _logoBox2d.height) - 10); addChild(_logoBox2d); _btnPlay = new Button(_gameWorld, (App.SCR_W * 0.5), 180, Button.BTN_PLAY); _btnPlay.caption = App.TXT_PLAY; addChild(_btnPlay); _btnMoreGames = new Button(_gameWorld, (App.SCR_W * 0.5), 307, Button.BTN_MORE_GAMES); _btnMoreGames.caption = App.TXT_MORE_GAMES; addChild(_btnMoreGames); _btnScores = new Button(_gameWorld, (App.SCR_W * 0.5), 287, Button.BTN_SCORES); _btnScores.caption = App.TXT_SCORES; addChild(_btnScores); _credits = new label_credits(); _credits.x = (App.SCR_W * 0.5); _credits.y = (App.SCR_H - 40); _credits.alpha = 0; addChild(_credits); _logoGame.alpha = 0; _logoBox2d.alpha = 0; action(ACT_SHOW_MAINMENU); } private function destroyMainMenu():void{ removeChild(_logoGame); _logoGame = null; removeChild(_logoBox2d); _logoBox2d = null; removeChild(_btnPlay); _btnPlay = null; removeChild(_btnMoreGames); _btnMoreGames = null; removeChild(_btnScores); _btnScores = null; removeChild(_credits); _credits = null; trace("mainMenu destroyed"); } private function 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; } private function makeCongrat():void{ _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); _gameWorld.removeEventListener(World.LEVEL_RETRY, retryGameHandler); 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), 258, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_MAIN_MENU; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 320, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_SUBMIT; addChild(_btnNextLevel); action(ACT_GAME_TO_CONGRATULATIONS); } private function makeSelectLevel():void{ var _local1:Boolean; _title = new Label((App.SCR_W * 0.5), 30, Label.LABEL_GRAY); _title.caption = App.TXT_SELECT_LEVEL; _title.textWidth = 290; addChild(_title); _title.show(50, 0); _btnLevel1 = new ButtonLevel(_gameWorld, 4); _btnLevel1.x = 118; _btnLevel1.y = 136; _btnLevel1.caption = (App.TXT_LEVEL + " 1"); _btnLevel1.tag = 1; addChild(_btnLevel1); _local1 = ((_levelCompleted)>=2) ? false : true; _btnLevel2 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel2.x = 248; _btnLevel2.y = 136; _btnLevel2.caption = (App.TXT_LEVEL + " 2"); _btnLevel2.tag = 2; addChild(_btnLevel2); _local1 = ((_levelCompleted)>=3) ? false : true; _btnLevel3 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel3.x = 378; _btnLevel3.y = 136; _btnLevel3.caption = (App.TXT_LEVEL + " 3"); _btnLevel3.tag = 3; addChild(_btnLevel3); _local1 = ((_levelCompleted)>=4) ? false : true; _btnLevel4 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel4.x = 508; _btnLevel4.y = 136; _btnLevel4.caption = (App.TXT_LEVEL + " 4"); _btnLevel4.tag = 4; addChild(_btnLevel4); _local1 = ((_levelCompleted)>=5) ? false : true; _btnLevel5 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel5.x = 118; _btnLevel5.y = 261; _btnLevel5.caption = (App.TXT_LEVEL + " 5"); _btnLevel5.tag = 5; addChild(_btnLevel5); _local1 = ((_levelCompleted)>=6) ? false : true; _btnLevel6 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel6.x = 248; _btnLevel6.y = 261; _btnLevel6.caption = (App.TXT_LEVEL + " 6"); _btnLevel6.tag = 6; addChild(_btnLevel6); _local1 = ((_levelCompleted)>=7) ? false : true; _btnLevel7 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel7.x = 378; _btnLevel7.y = 261; _btnLevel7.caption = (App.TXT_LEVEL + " 7"); _btnLevel7.tag = 7; addChild(_btnLevel7); _local1 = ((_levelCompleted)>=8) ? false : true; _btnLevel8 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel8.x = 508; _btnLevel8.y = 261; _btnLevel8.caption = (App.TXT_LEVEL + " 8"); _btnLevel8.tag = 8; addChild(_btnLevel8); _btnBack = new Button(_gameWorld, 100, 350, Button.BTN_BACK); _btnBack.caption = App.TXT_BACK; _btnBack.show(370, 10); addChild(_btnBack); _moreLevelBtn = new Button(_gameWorld, 324, 350, Button.BTN_FREE_GAMES); _moreLevelBtn.show(370, 10); addChild(_moreLevelBtn); action(ACT_SHOW_SELECTLEVEL); _moreLevelBtn.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); } 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); } 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); } private function updateTimeHandler(_arg1:Event):void{ _icoTime.update(_gameWorld.time); } private function moreGamesHandler(_arg1:Event):void{ trace("goto More Games"); gotoMoreGames(); } private function retryGameHandler(_arg1:Event):void{ removeChild(_btnRetry); _btnRetry.destroy(); _btnRetry = null; removeChild(_btnMoreGames); _btnMoreGames.destroy(); _btnMoreGames = null; removeChild(_retryLogo); if (_level.isUnload){ return; }; if (_gameWorld.enableControls){ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); }; } private function soundClickHandler(_arg1:Event):void{ _gameWorld.offSound = _btnSound.checked; } private function removeSelectLevelHandlers():void{ _btnLevel1.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel2.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel3.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel4.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel5.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel6.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel7.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnLevel8.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); _btnBack.removeEventListener(MouseEvent.MOUSE_UP, backHandler); } private function updateCargoHandler(_arg1:Event):void{ _icoCargo.update(_gameWorld.cargo); } 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); _gameWorld.addEventListener(World.LEVEL_RETRY, retryGameHandler); trace("loadLevel destroyed"); } private function playHandler(_arg1:Event):void{ removeMainMenuHandlers(); _btnPlay.hide(0); _btnMoreGames.hide(2); _btnScores.hide(4); 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; removeChild(_moreLevelBtn); _moreLevelBtn.destroy(); _moreLevelBtn = 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); _gameWorld.removeEventListener(World.LEVEL_RETRY, retryGameHandler); 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_GRAY); _scoreLevel.caption = (App.TXT_LEVEL_SCORE + _gameWorld.scoreLevel.toString()); _scoreLevel.textWidth = 640; _scoreTotal = new Label((App.SCR_W * 0.5), 108, Label.LABEL_GRAY); _scoreTotal.caption = (App.TXT_TOTAL_SCORE + _gameWorld.score.toString()); _scoreTotal.textWidth = 640; _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_FREE_GAMES; addChild(_btnNextLevel); _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 258, Button.BTN_MORE_GAMES); _btnFreeGames.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 320, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_NEXT_LEVEL; addChild(_btnSelectLevel); _hint = new Label((App.SCR_W * 0.5), 370, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 438; 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; } 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)); _btnRetry = new Button(_gameWorld, (App.SCR_W * 0.5), 207, Button.BTN_RETRY); _btnRetry.caption = App.TXT_MORE_GAMES; addChild(_btnRetry); _btnRetry.show(217, 0); _retryLogo = new PH(); _retryLogo.x = 246; _retryLogo.y = 158; addChild(_retryLogo); _retryLogo.addEventListener(MouseEvent.CLICK, moreGamesHandler); _btnMoreGames = new Button(_gameWorld, ((App.SCR_W * 0.5) - 15), 267, Button.BTN_MORE_GAMES); _btnMoreGames.caption = App.TXT_MORE_GAMES; addChild(_btnMoreGames); _btnMoreGames.show(277, 0); _btnRetry.addEventListener(MouseEvent.MOUSE_UP, retryGameHandler); _btnMoreGames.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); } 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 updateScoreHandler(_arg1:Event):void{ _scores.update(_gameWorld.score); } private function freeGamesHandler(_arg1:Event):void{ gotoMoreGames(); } private function setMainMenuHandlers():void{ _btnPlay.addEventListener(MouseEvent.MOUSE_UP, playHandler); _btnMoreGames.addEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnScores.addEventListener(MouseEvent.MOUSE_UP, scoresHandler); } private function removeMainMenuHandlers():void{ _btnPlay.removeEventListener(MouseEvent.MOUSE_UP, playHandler); _btnMoreGames.removeEventListener(MouseEvent.MOUSE_UP, moreGamesHandler); _btnScores.removeEventListener(MouseEvent.MOUSE_UP, scoresHandler); } 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 109
//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 _background:Sprite; private var _loadingBar:Loading; private var _playHubBranding:MovieClip; public static const ENTRY_FRAME:int = 3; public static const DOCUMENT_CLASS:String = "com.miningtruck.App"; public function Preloader(){ stop(); Log.View(1912, "53dd82de86e648ac", root.loaderInfo.loaderURL); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); _background = new Sprite(); addChild(_background); _playHubBranding = new playHubBranding(); _playHubBranding.x = 320; _playHubBranding.y = 140; addChild(_playHubBranding); _playHubBranding.addEventListener(Event.ENTER_FRAME, onPlayPlayHubBranding); _loadingBar = new Loading(10); _loadingBar.x = ((640 / 2) - (_loadingBar.width / 2)); _loadingBar.y = (400 / 2); addChild(_loadingBar); _playHubBranding.addEventListener(MouseEvent.CLICK, onMouseClick); _playHubBranding.mouseEnabled = true; _playHubBranding.useHandCursor = true; _playHubBranding.buttonMode = true; } private function onMouseClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.playhub.com/category/racing-games/1/top-rated.html?utm_medium=brandedgames_external&utm_campaign=alien-truck&utm_source=ingame&utm_content=ingame")); } 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); } private function onPlayPlayHubBranding(_arg1:Event):void{ if (_playHubBranding.currentFrame >= 205){ _playHubBranding.gotoAndStop(205); _playHubBranding.removeEventListener(Event.ENTER_FRAME, onPlayPlayHubBranding); }; } 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); } private function completeHandler(_arg1:Event):void{ var playBtn:SimpleButton; var onClickPlayBtn:Function; var onEndPlayHubBranding:Function; var e = _arg1; onClickPlayBtn = function (_arg1:Event):void{ playBtn.visible = false; if (_playHubBranding.hasEventListener(Event.ENTER_FRAME)){ _playHubBranding.removeEventListener(Event.ENTER_FRAME, onPlayPlayHubBranding); }; _playHubBranding.addEventListener(Event.ENTER_FRAME, onEndPlayHubBranding); _playHubBranding.play(); }; onEndPlayHubBranding = function (_arg1:Event):void{ if (_playHubBranding.currentFrame < _playHubBranding.totalFrames){ return; }; _playHubBranding.removeEventListener(Event.ENTER_FRAME, onEndPlayHubBranding); play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); removeChild(_background); removeChild(_playHubBranding); removeChild(playBtn); playBtn = null; _playHubBranding = null; _background = null; }; loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.removeEventListener(Event.COMPLETE, completeHandler); _loadingBar.destroy(); _loadingBar = null; playBtn = new loadPlayBtn(); playBtn.width = 100; playBtn.height = 30; playBtn.x = 320; playBtn.y = 300; addChild(playBtn); playBtn.addEventListener(MouseEvent.CLICK, onClickPlayBtn); } private function enterFrameHandler(_arg1:Event):void{ if (currentFrame >= ENTRY_FRAME){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); stop(); init(); }; } } }//package com.miningtruck
Section 110
//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.net.*; 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; private var _scDrive:SoundChannel; private var _phLogo:SimpleButton; 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 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 LEVEL_RETRY:String = "levelRetry"; 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 TIME_STEP:Number = 0.0166666666666667; public static const LEVEL_FAILED:String = "levelFailed"; public function World(_arg1:App){ var onMouseClickPH:Function; var a = _arg1; super(); onMouseClickPH = function (_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.playhub.com/category/racing-games/1/top-rated.html?utm_medium=brandedgames_external&utm_campaign=alien-truck&utm_source=ingame&utm_content=ingame")); }; app = a; _effectList = new Array(); _layerBg = new Sprite(); _layerBack = new Sprite(); _layerMain = new Sprite(); _layerFront = new Sprite(); addChild(_layerBg); addChild(_layerBack); addChild(_layerMain); addChild(_layerFront); _phLogo = new PH(); _phLogo.x = 518; _phLogo.y = 349; _phLogo.addEventListener(MouseEvent.CLICK, onMouseClickPH); _phLogo.visible = false; _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:EffectDust; if (!_enableControls){ return; }; worldTime++; if (((((((app.input.isDown(32)) && (!(_level.isUnload)))) && ((_level.restartPause > 175)))) && (_truckIsCrashed))){ dispatchEvent(new Event(LEVEL_RETRY)); _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){ _local3 = getFreeDust(); if (_local3 != null){ _local3.make((_truckBody.x + (Math.random() * 40)), (_truckBody.y - (Math.random() * 30)), 0, true); }; _local3 = getFreeDust(); if (_local3 != null){ _local3.make(_wheel2.m_userData.x, (_wheel2.m_userData.y - (Math.random() * 5)), 0, true); }; _fireInterval = worldTime; if (((!(_isHint)) && (((worldTime - _hintInterval) > 30)))){ _isHint = true; dispatchEvent(new Event(SHOW_HINT)); }; }; }; scroll(); _truck.ApplyTorque((30 * (app.input.isDown(37)) ? -1 : (app.input.isDown(39)) ? 1 : 0)); world.Step(TIME_STEP, ITERATIONS); render(); } public function init():void{ var _local2:int; var _local3:b2Body; var _local4:b2BodyDef; var _local5:b2PolygonDef; var _local6:b2CircleDef; _isHint = false; _truckIsCrashed = false; _scoreLevel = 0; x = 0; y = 0; var _local1:b2AABB = new b2AABB(); _local1.lowerBound.Set(-50, -50); _local1.upperBound.Set(500, 50); world = new b2World(_local1, new b2Vec2(0, 20), true); var _local7:* = new b2ContactListener(); world.SetContactListener(_local7); } public function makeTruck(_arg1:Number, _arg2:Number):void{ var _local3:int; var _local4:b2Body; var _local5:b2BodyDef; var _local6:b2PolygonDef; var _local7:b2CircleDef; var _local8:b2RevoluteJointDef; var _local9:b2PrismaticJointDef; _local5 = new b2BodyDef(); _local5.position.Set((_arg1 / DRAW_SCALE), (_arg2 / DRAW_SCALE)); _truckBody = new Truck(this); addMain(_truckBody); _local5.userData = _truckBody; _truck = world.CreateBody(_local5); _local5.userData = null; _local6 = new b2PolygonDef(); _local6.density = 2; _local6.friction = 0.5; _local6.restitution = 0.2; _local6.filter.groupIndex = -1; _local6.SetAsBox(3, 0.1); _truck.CreateShape(_local6); _local6.density = 1E-5; _local6.SetAsOrientedBox(0.2, 0.6, new b2Vec2(3, 0.2), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.5, 0.5, new b2Vec2(1.8, -0.6), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.5, 0.1, new b2Vec2(-3, -0.3), (Math.PI / 3)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.8, 0.1, new b2Vec2(0.2, -0.6), (-(Math.PI) / 3)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.8, 0.1, new b2Vec2(1.3, -1.3), 0); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.1, 0.2, new b2Vec2(2.2, -1.4), 0); _truck.CreateShape(_local6); _local6.density = 2; var _local10:Number = 1.7; var _local11:Number = -1.5; _local6.SetAsOrientedBox(0.4, 0.15, new b2Vec2(_local11, 0.3), (Math.PI / 2)); _truck.CreateShape(_local6); _local6.SetAsOrientedBox(0.4, 0.15, new b2Vec2(_local10, 0.3), (-(Math.PI) / 2)); _truck.CreateShape(_local6); _truck.SetMassFromShapes(); _local6.density = 1; _axle1 = world.CreateBody(_local5); _local6.SetAsOrientedBox(0.4, 0.1, new b2Vec2((_local11 - (0.6 * Math.cos((Math.PI / 2)))), (0.9 * Math.sin((Math.PI / 2)))), (-(Math.PI) / 2)); _axle1.CreateShape(_local6); _axle1.SetMassFromShapes(); _local9 = new b2PrismaticJointDef(); _local9.Initialize(_truck, _axle1, _axle1.GetWorldCenter(), new b2Vec2(Math.cos((Math.PI / 2)), Math.sin((Math.PI / 2)))); _local9.lowerTranslation = -0.3; _local9.upperTranslation = 0.3; _local9.enableLimit = true; _local9.enableMotor = true; _spring1 = (world.CreateJoint(_local9) as b2PrismaticJoint); _axle2 = world.CreateBody(_local5); _local6.SetAsOrientedBox(0.4, 0.1, new b2Vec2((_local10 + (0.6 * Math.cos((-(Math.PI) / 2)))), (0.9 * Math.sin((Math.PI / 3)))), (Math.PI / 2)); _axle2.CreateShape(_local6); _axle2.SetMassFromShapes(); _local9.Initialize(_truck, _axle2, _axle2.GetWorldCenter(), new b2Vec2(-(Math.cos((Math.PI / 2))), Math.sin((Math.PI / 2)))); _spring2 = (world.CreateJoint(_local9) as b2PrismaticJoint); _local7 = new b2CircleDef(); _local7.radius = 0.7; _local7.density = 0.1; _local7.friction = 60; _local7.restitution = 0.2; _local7.filter.groupIndex = -1; _local5 = new b2BodyDef(); _local5.allowSleep = false; var _local12:Wheel = new Wheel(this); _local5.userData = _local12; _local5.position.Set((_axle1.GetWorldCenter().x - (0.3 * Math.cos((Math.PI / 2)))), (_axle1.GetWorldCenter().y + (0.3 * Math.sin((Math.PI / 2))))); _wheel1 = world.CreateBody(_local5); _wheel1.CreateShape(_local7); _wheel1.SetMassFromShapes(); var _local13:Wheel = new Wheel(this); _local5.userData = _local13; _local5.position.Set((_axle2.GetWorldCenter().x + (0.3 * Math.cos((-(Math.PI) / 2)))), (_axle2.GetWorldCenter().y - (0.3 * Math.sin((-(Math.PI) / 2))))); _wheel2 = world.CreateBody(_local5); _wheel2.CreateShape(_local7); _wheel2.SetMassFromShapes(); _local8 = new b2RevoluteJointDef(); _local8.enableMotor = true; _local8.Initialize(_axle1, _wheel1, _wheel1.GetWorldCenter()); _motor1 = (world.CreateJoint(_local8) as b2RevoluteJoint); _local8.Initialize(_axle2, _wheel2, _wheel2.GetWorldCenter()); _motor2 = (world.CreateJoint(_local8) as b2RevoluteJoint); _local12.motor = _motor1; _local13.motor = _motor2; } public function trafficLight(_arg1:int=2):void{ if (_traffic){ _traffic.gotoAndStop(_arg1); if ((((_arg1 == 2)) && (_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 setLogo():void{ parent.addChild(_phLogo); } 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; _phLogo.visible = false; _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; _phLogo.visible = true; _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 get isTruckCrashed():Boolean{ return (_truckIsCrashed); } public function set cargo(_arg1:int):void{ _cargo = ((_arg1)<=0) ? 0 : _arg1; dispatchEvent(new Event(UPDATE_CARGO)); } public function resetScore():void{ _score = (_score - _scoreLevel); _scoreLevel = 0; } public function 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 set offSound(_arg1:Boolean):void{ _offSound = _arg1; sound(SND_MOTOR); } public function unloadFail():void{ trace("unload fail"); var _local1:EffectScore = new EffectScore(this); _local1.lifeTime = 60; _local1.caption = App.TXT_WHERE_CARGO; _local1.x = (Math.abs(x) + (App.SCR_W * 0.5)); _local1.y = (Math.abs(y) + (App.SCR_H * 0.5)); dispatchEvent(new Event(LEVEL_FAILED)); } public function get time():int{ return (_time); } private function scroll():void{ var _local3:Number; var _local1:Number = ((x - (((-(DRAW_SCALE) * _truck.GetWorldCenter().x) + (App.SCR_W / 2)) - (_truck.GetLinearVelocity().x * 10))) / 4); var _local2:Number = ((y - (((-(DRAW_SCALE) * _truck.GetWorldCenter().y) + ((2 * App.SCR_H) / 4)) - (_truck.GetLinearVelocity().y * 6))) / 3); x = (x - _local1); _layerBg.x = (_layerBg.x + _local1); _layerBg.x = (_layerBg.x + ((((_local1 > 0.5)) || ((_local1 < -0.5)))) ? (_local1 * -0.1) : 0); if ((y - _local2) < -230){ y = -230; } else { y = (y - _local2); _local3 = (_local2 * 0.5); if ((_layerBg.y + _local3) > 190){ _layerBg.y = 190; } else { _layerBg.y = (_layerBg.y + _local3); }; }; _level.updatePosition(x, y); updateBackground(_layerBg.x, _layerBg.y); } private function timeHandler(_arg1:Event):void{ _time--; dispatchEvent(new Event(UPDATE_TIME)); if (_time <= 0){ _timer.stop(); }; } 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 111
//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 112
//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 113
//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 114
//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 = ""; public static var SWFID:int = 0; 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 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)); } public static function IncreaseViews():void{ var _local1:int = GetCookie("views"); _local1++; SaveCookie("views", _local1); } 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"); Send(("v/" + (_local4 + 1)), 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(); Send(("p/" + (Plays + 1)), true); } 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; }; } public static function IncreasePlays():void{ Plays++; } } }//package Playtomic
Section 115
//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.Complete, false, 1, false); 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); } private function Complete(_arg1:Event=null):void{ if ((((this.Data.indexOf("v/") == 0)) || ((this.Data.indexOf("~v/") > -1)))){ Log.IncreaseViews(); }; if ((((this.Data.indexOf("p/") == 0)) || ((this.Data.indexOf("~p/") > -1)))){ Log.IncreasePlays(); }; Pool.push(this); } 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 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 116
//background (background) package { import flash.events.*; import flash.display.*; import flash.net.*; public dynamic class background extends MovieClip { public var phBtn:PH; public var fbBtn:SimpleButton; public function background(){ addFrameScript(0, frame1); } public function onClickPH(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.playhub.com/category/racing-games/1/top-rated.html?utm_medium=brandedgames_external&utm_campaign=alien-truck&utm_source=ingame&utm_content=ingame")); } public function onClickFB(_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://www.facebook.com/pages/Free-Games/329545200036"); navigateToURL(_local2); } function frame1(){ fbBtn.addEventListener(MouseEvent.CLICK, onClickFB); phBtn.addEventListener(MouseEvent.CLICK, onClickPH); } } }//package
Section 117
//btn_back (btn_back) package { import flash.display.*; public dynamic class btn_back extends MovieClip { } }//package
Section 118
//btn_freegames (btn_freegames) package { import flash.display.*; public dynamic class btn_freegames extends MovieClip { } }//package
Section 119
//btn_freegames2 (btn_freegames2) package { import flash.display.*; public dynamic class btn_freegames2 extends SimpleButton { } }//package
Section 120
//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 121
//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 122
//btn_moregames (btn_moregames) package { import flash.display.*; public dynamic class btn_moregames extends MovieClip { } }//package
Section 123
//btn_nextlevel (btn_nextlevel) package { import flash.display.*; public dynamic class btn_nextlevel extends MovieClip { } }//package
Section 124
//btn_play (btn_play) package { import flash.display.*; public dynamic class btn_play extends MovieClip { } }//package
Section 125
//btn_retry (btn_retry) package { import flash.display.*; public dynamic class btn_retry extends MovieClip { } }//package
Section 126
//btn_sellevel (btn_sellevel) package { import flash.display.*; public dynamic class btn_sellevel extends MovieClip { } }//package
Section 127
//ButtonMenu (ButtonMenu) package { import com.miningtruck.ui.*; public dynamic class ButtonMenu extends HudButton { } }//package
Section 128
//ButtonMusic (ButtonMusic) package { import com.miningtruck.ui.*; public dynamic class ButtonMusic extends HudButton { } }//package
Section 129
//ButtonRestart (ButtonRestart) package { import com.miningtruck.ui.*; public dynamic class ButtonRestart extends HudButton { } }//package
Section 130
//ButtonSound (ButtonSound) package { import com.miningtruck.ui.*; public dynamic class ButtonSound extends HudButton { } }//package
Section 131
//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 132
//fps (fps) package { import flash.display.*; import flash.text.*; public dynamic class fps extends MovieClip { public var tf:TextField; } }//package
Section 133
//label_credits (label_credits) package { import flash.display.*; public dynamic class label_credits extends MovieClip { } }//package
Section 134
//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 135
//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 136
//level_screens (level_screens) package { import flash.display.*; public dynamic class level_screens extends MovieClip { } }//package
Section 137
//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 138
//level1_part1_back (level1_part1_back) package { import flash.display.*; public dynamic class level1_part1_back extends MovieClip { } }//package
Section 139
//level1_part2 (level1_part2) package { import flash.display.*; public dynamic class level1_part2 extends MovieClip { } }//package
Section 140
//level1_part2_back (level1_part2_back) package { import flash.display.*; public dynamic class level1_part2_back extends MovieClip { } }//package
Section 141
//level1_part3 (level1_part3) package { import flash.display.*; public dynamic class level1_part3 extends MovieClip { public var target:MovieClip; public var roadlight:sprite_road_light; } }//package
Section 142
//level1_part3_back (level1_part3_back) package { import flash.display.*; public dynamic class level1_part3_back extends MovieClip { } }//package
Section 143
//level2_part1 (level2_part1) package { import flash.display.*; public dynamic class level2_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; } }//package
Section 144
//level2_part1_back (level2_part1_back) package { import flash.display.*; public dynamic class level2_part1_back extends MovieClip { } }//package
Section 145
//level2_part2 (level2_part2) package { import flash.display.*; public dynamic class level2_part2 extends MovieClip { } }//package
Section 146
//level2_part2_back (level2_part2_back) package { import flash.display.*; public dynamic class level2_part2_back extends MovieClip { } }//package
Section 147
//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 148
//level2_part3_back (level2_part3_back) package { import flash.display.*; public dynamic class level2_part3_back extends MovieClip { } }//package
Section 149
//level3_part1 (level3_part1) package { import flash.display.*; public dynamic class level3_part1 extends MovieClip { public var lenta:MovieClip; public var barrel:sprite_barrel; } }//package
Section 150
//level3_part1_back (level3_part1_back) package { import flash.display.*; public dynamic class level3_part1_back extends MovieClip { } }//package
Section 151
//level3_part2 (level3_part2) package { import flash.display.*; public dynamic class level3_part2 extends MovieClip { public var conus:sprite_conus; } }//package
Section 152
//level3_part2_back (level3_part2_back) package { import flash.display.*; public dynamic class level3_part2_back extends MovieClip { } }//package
Section 153
//level3_part3 (level3_part3) package { import flash.display.*; public dynamic class level3_part3 extends MovieClip { public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; } }//package
Section 154
//level3_part3_back (level3_part3_back) package { import flash.display.*; public dynamic class level3_part3_back extends MovieClip { } }//package
Section 155
//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 barrel:sprite_barrel; } }//package
Section 156
//level4_part1_back (level4_part1_back) package { import flash.display.*; public dynamic class level4_part1_back extends MovieClip { } }//package
Section 157
//level4_part2 (level4_part2) package { import flash.display.*; public dynamic class level4_part2 extends MovieClip { } }//package
Section 158
//level4_part2_back (level4_part2_back) package { import flash.display.*; public dynamic class level4_part2_back extends MovieClip { } }//package
Section 159
//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 160
//level4_part3_back (level4_part3_back) package { import flash.display.*; public dynamic class level4_part3_back extends MovieClip { } }//package
Section 161
//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 162
//level5_part1_back (level5_part1_back) package { import flash.display.*; public dynamic class level5_part1_back extends MovieClip { } }//package
Section 163
//level5_part2 (level5_part2) package { import flash.display.*; public dynamic class level5_part2 extends MovieClip { public var conus:sprite_conus; } }//package
Section 164
//level5_part2_back (level5_part2_back) package { import flash.display.*; public dynamic class level5_part2_back extends MovieClip { } }//package
Section 165
//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 166
//level5_part3_back (level5_part3_back) package { import flash.display.*; public dynamic class level5_part3_back extends MovieClip { } }//package
Section 167
//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 168
//level6_part1_back (level6_part1_back) package { import flash.display.*; public dynamic class level6_part1_back extends MovieClip { } }//package
Section 169
//level6_part2 (level6_part2) package { import flash.display.*; public dynamic class level6_part2 extends MovieClip { } }//package
Section 170
//level6_part2_back (level6_part2_back) package { import flash.display.*; public dynamic class level6_part2_back extends MovieClip { } }//package
Section 171
//level6_part3 (level6_part3) package { import flash.display.*; public dynamic class level6_part3 extends MovieClip { public var target:MovieClip; public var roadlight:sprite_road_light; } }//package
Section 172
//level6_part3_back (level6_part3_back) package { import flash.display.*; public dynamic class level6_part3_back extends MovieClip { } }//package
Section 173
//level7_part1 (level7_part1) package { import flash.display.*; public dynamic class level7_part1 extends MovieClip { public var lenta:MovieClip; } }//package
Section 174
//level7_part1_back (level7_part1_back) package { import flash.display.*; public dynamic class level7_part1_back extends MovieClip { } }//package
Section 175
//level7_part2 (level7_part2) package { import flash.display.*; public dynamic class level7_part2 extends MovieClip { public var conus:sprite_conus; } }//package
Section 176
//level7_part2_back (level7_part2_back) package { import flash.display.*; public dynamic class level7_part2_back extends MovieClip { } }//package
Section 177
//level7_part3 (level7_part3) package { import flash.display.*; public dynamic class level7_part3 extends MovieClip { public var target:MovieClip; public var roadlight:sprite_road_light; } }//package
Section 178
//level7_part3_back (level7_part3_back) package { import flash.display.*; public dynamic class level7_part3_back extends MovieClip { } }//package
Section 179
//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 180
//level8_part1_back (level8_part1_back) package { import flash.display.*; public dynamic class level8_part1_back extends MovieClip { } }//package
Section 181
//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; } }//package
Section 182
//level8_part2_back (level8_part2_back) package { import flash.display.*; public dynamic class level8_part2_back extends MovieClip { } }//package
Section 183
//level8_part3 (level8_part3) package { import flash.display.*; public dynamic class level8_part3 extends MovieClip { public var target:MovieClip; public var roadlight:sprite_road_light; } }//package
Section 184
//level8_part3_back (level8_part3_back) package { import flash.display.*; public dynamic class level8_part3_back extends MovieClip { } }//package
Section 185
//LevelProgress_mc (LevelProgress_mc) package { import flash.display.*; public dynamic class LevelProgress_mc extends MovieClip { public var truck_ico:MovieClip; } }//package
Section 186
//loadPlayBtn (loadPlayBtn) package { import flash.display.*; public dynamic class loadPlayBtn extends SimpleButton { } }//package
Section 187
//logo_box2d (logo_box2d) package { import flash.display.*; public dynamic class logo_box2d extends MovieClip { } }//package
Section 188
//logo_game (logo_game) package { import flash.display.*; public dynamic class logo_game extends MovieClip { } }//package
Section 189
//music_track1 (music_track1) package { import flash.media.*; public dynamic class music_track1 extends Sound { } }//package
Section 190
//music_track2 (music_track2) package { import flash.media.*; public dynamic class music_track2 extends Sound { } }//package
Section 191
//PH (PH) package { import flash.display.*; public dynamic class PH extends SimpleButton { } }//package
Section 192
//playHubBranding (playHubBranding) package { import flash.display.*; public dynamic class playHubBranding extends MovieClip { public function playHubBranding(){ addFrameScript(250, frame251); } function frame251(){ stop(); } } }//package
Section 193
//snd_addscore (snd_addscore) package { import flash.media.*; public dynamic class snd_addscore extends Sound { } }//package
Section 194
//snd_bibi (snd_bibi) package { import flash.media.*; public dynamic class snd_bibi extends Sound { } }//package
Section 195
//snd_bonus (snd_bonus) package { import flash.media.*; public dynamic class snd_bonus extends Sound { } }//package
Section 196
//snd_button (snd_button) package { import flash.media.*; public dynamic class snd_button extends Sound { } }//package
Section 197
//snd_crash (snd_crash) package { import flash.media.*; public dynamic class snd_crash extends Sound { } }//package
Section 198
//snd_drive (snd_drive) package { import flash.media.*; public dynamic class snd_drive extends Sound { } }//package
Section 199
//snd_explosion (snd_explosion) package { import flash.media.*; public dynamic class snd_explosion extends Sound { } }//package
Section 200
//snd_motor (snd_motor) package { import flash.media.*; public dynamic class snd_motor extends Sound { } }//package
Section 201
//snd_score (snd_score) package { import flash.media.*; public dynamic class snd_score extends Sound { } }//package
Section 202
//snd_tube (snd_tube) package { import flash.media.*; public dynamic class snd_tube extends Sound { } }//package
Section 203
//sprite_barrel (sprite_barrel) package { import flash.display.*; public dynamic class sprite_barrel extends MovieClip { } }//package
Section 204
//sprite_bg (sprite_bg) package { import flash.display.*; public dynamic class sprite_bg extends MovieClip { } }//package
Section 205
//sprite_box (sprite_box) package { import flash.display.*; public dynamic class sprite_box extends MovieClip { } }//package
Section 206
//sprite_coal (sprite_coal) package { import flash.display.*; public dynamic class sprite_coal extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 207
//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 208
//sprite_conus (sprite_conus) package { import flash.display.*; public dynamic class sprite_conus extends MovieClip { } }//package
Section 209
//sprite_explosion (sprite_explosion) package { import flash.display.*; public dynamic class sprite_explosion extends MovieClip { } }//package
Section 210
//sprite_fire (sprite_fire) package { import flash.display.*; public dynamic class sprite_fire extends MovieClip { } }//package
Section 211
//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 212
//sprite_smoke1 (sprite_smoke1) package { import flash.display.*; public dynamic class sprite_smoke1 extends MovieClip { } }//package
Section 213
//sprite_smoke2 (sprite_smoke2) package { import flash.display.*; public dynamic class sprite_smoke2 extends MovieClip { } }//package
Section 214
//sprite_suck (sprite_suck) package { import flash.display.*; public dynamic class sprite_suck extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 215
//sprite_timer (sprite_timer) package { import flash.display.*; public dynamic class sprite_timer extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 216
//sprite_traffic (sprite_traffic) package { import flash.display.*; public dynamic class sprite_traffic extends MovieClip { } }//package
Section 217
//sprite_truck_body (sprite_truck_body) package { import flash.display.*; public dynamic class sprite_truck_body extends MovieClip { } }//package
Section 218
//sprite_wheel (sprite_wheel) package { import flash.display.*; public dynamic class sprite_wheel extends MovieClip { } }//package

Library Items

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

Instance Names

"truck_ico"Symbol 6 MovieClip {LevelProgress_mc} Frame 1Symbol 5 MovieClip
"tf"Symbol 55 MovieClip {com.miningtruck.ui.Loading} Frame 1Symbol 50 EditableText
"tf"Symbol 57 MovieClip {fps} Frame 1Symbol 56 EditableText
"fbBtn"Symbol 71 MovieClip {background} Frame 1Symbol 70 Button
"phBtn"Symbol 71 MovieClip {background} Frame 1Symbol 65 Button {PH}
"e_bounds"Symbol 82 MovieClip {sprite_coal} Frame 1Symbol 77 MovieClip
"e_bounds"Symbol 85 MovieClip {sprite_coal_big} Frame 1Symbol 77 MovieClip
"e_bounds"Symbol 90 MovieClip {sprite_road_light} Frame 1Symbol 77 MovieClip
"e_bounds"Symbol 123 MovieClip {sprite_suck} Frame 1Symbol 77 MovieClip
"e_bounds"Symbol 139 MovieClip {sprite_timer} Frame 1Symbol 77 MovieClip
"tf2"Symbol 158 MovieClip {label_green} Frame 1Symbol 156 EditableText
"tf1"Symbol 158 MovieClip {label_green} Frame 1Symbol 157 EditableText
"tf2"Symbol 162 MovieClip {label_red} Frame 1Symbol 160 EditableText
"tf1"Symbol 162 MovieClip {label_red} Frame 1Symbol 161 EditableText
"tf2"Symbol 170 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 168 EditableText
"tf1"Symbol 170 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 169 EditableText
"tf2"Symbol 174 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 171 EditableText
"tf1"Symbol 174 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 173 EditableText
"tf2"Symbol 177 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 175 EditableText
"tf1"Symbol 177 MovieClip {com.miningtruck.ui.Scores} Frame 1Symbol 176 EditableText
"tf2"Symbol 194 MovieClip {btn_level} Frame 1Symbol 187 EditableText
"tf1"Symbol 194 MovieClip {btn_level} Frame 1Symbol 188 EditableText
"tf2"Symbol 200 MovieClip {btn_level_lock} Frame 1Symbol 195 EditableText
"tf1"Symbol 200 MovieClip {btn_level_lock} Frame 1Symbol 196 EditableText
"tf2"Symbol 206 MovieClip {fly_score} Frame 1Symbol 204 EditableText
"tf1"Symbol 206 MovieClip {fly_score} Frame 1Symbol 205 EditableText
"tf2"Symbol 276 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 274 EditableText
"tf1"Symbol 276 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 275 EditableText
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 308 MovieClip
"box"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 321 MovieClip {level1_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"target"Symbol 340 MovieClip {level1_part3} Frame 1Symbol 308 MovieClip
"roadlight"Symbol 340 MovieClip {level1_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 308 MovieClip
"conus"Symbol 346 MovieClip {level2_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"box"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"conus"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 87 MovieClip {sprite_conus}
"barrel"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"conus"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 87 MovieClip {sprite_conus}
"barrel"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"target"Symbol 358 MovieClip {level2_part3} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 308 MovieClip
"barrel"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 362 MovieClip {level3_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"conus"Symbol 373 MovieClip {level3_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 373 MovieClip {level3_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 373 MovieClip {level3_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"target"Symbol 378 MovieClip {level3_part3} Frame 1Symbol 308 MovieClip
"barrel"Symbol 378 MovieClip {level3_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"roadlight"Symbol 378 MovieClip {level3_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"barrel"Symbol 378 MovieClip {level3_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 378 MovieClip {level3_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"conus"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 308 MovieClip
"conus"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"barrel"Symbol 384 MovieClip {level4_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"box"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"barrel"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 73 MovieClip {sprite_barrel}
"target"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 308 MovieClip
"box"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"roadlight"Symbol 393 MovieClip {level4_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 308 MovieClip
"box"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"conus"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"box"Symbol 399 MovieClip {level5_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 404 MovieClip {level5_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"roadlight"Symbol 408 MovieClip {level5_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"box"Symbol 408 MovieClip {level5_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 408 MovieClip {level5_part3} Frame 1Symbol 75 MovieClip {sprite_box}
"target"Symbol 408 MovieClip {level5_part3} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 308 MovieClip
"box"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"conus"Symbol 412 MovieClip {level6_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"target"Symbol 422 MovieClip {level6_part3} Frame 1Symbol 308 MovieClip
"roadlight"Symbol 422 MovieClip {level6_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 427 MovieClip {level7_part1} Frame 1Symbol 308 MovieClip
"conus"Symbol 431 MovieClip {level7_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 431 MovieClip {level7_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 431 MovieClip {level7_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"target"Symbol 436 MovieClip {level7_part3} Frame 1Symbol 308 MovieClip
"roadlight"Symbol 436 MovieClip {level7_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"lenta"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 308 MovieClip
"conus"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 87 MovieClip {sprite_conus}
"box"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 75 MovieClip {sprite_box}
"barrel"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 440 MovieClip {level8_part1} Frame 1Symbol 73 MovieClip {sprite_barrel}
"barrel"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 73 MovieClip {sprite_barrel}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"barrel"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 73 MovieClip {sprite_barrel}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"conus"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 87 MovieClip {sprite_conus}
"barrel"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 73 MovieClip {sprite_barrel}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"box"Symbol 445 MovieClip {level8_part2} Frame 1Symbol 75 MovieClip {sprite_box}
"target"Symbol 449 MovieClip {level8_part3} Frame 1Symbol 308 MovieClip
"roadlight"Symbol 449 MovieClip {level8_part3} Frame 1Symbol 90 MovieClip {sprite_road_light}

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 ..."




http://swfchan.com/47/234654/info.shtml
Created: 20/4 -2020 08:43:52 Last modified: 20/4 -2020 08:43:52 Server time: 04/05 -2024 17:41:26