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

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

miningtruck.swf

This is the info page for
Flash #207876

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


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

loading

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

25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gas

brake

balance left

balance right

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

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

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; var _local17:Number = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local3:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_next:b2Shape; public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_isSensor:Boolean; public var m_restitution:Number; public var m_userData; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var _local4:b2AABB = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:uint = proxyId; var _local4:uint = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); var _local10:int; var _local11:int; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; var _local5:uint = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; var _local6:uint = (2 * m_proxyCount); var _local7:Array = new Array(); var _local8:Array = new Array(); ComputeBounds(_local7, _local8, _arg1); var _local9:int; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; var _local10:int; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; var _local4:b2Proxy = m_proxyPool[_arg1]; var _local5:int = (2 * m_proxyCount); var _local6:int; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; var _local7:int; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2Proxy = m_proxyPool[_arg1]; var _local14:b2BoundValues = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); var _local15:b2BoundValues = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var proxyId1:uint; public var userData;// = null public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; var _local3:int; var _local4:Array = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local5:uint = m_hashTable[_local4]; var _local6:b2Pair; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; var _local5:uint = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentMass:Number; public var equalizedMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; var _local9:int; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local3:b2Mat22; var _local4:b2Vec2; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local2:Number = 0; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; var _local19:int; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); var _local9:Array = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local1 = _local2.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); var _local12:Number = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local13:Number = (-(m_mass) * _local12); m_u.Set(_local9, _local10); var _local14:Number = (_local13 * m_u.x); var _local15:Number = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_ground2:b2Body; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local15:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22 = m_body2.m_xf.R; var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local4:Number; var _local5:Number; var _local1:Number = 0; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5))); var _local7:Number = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); var _local6:Number = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); var _local5:Number = m_body2.m_mass; var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6); var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local7:Number; var _local8:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); var _local9:Number = (_arg1.dt * m_impulse.x); var _local10:Number = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); var _local15:Number = (_arg1.dt * _local10); var _local16:Number = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var timeStep:Number; public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22 = m_body1.m_xf.R; var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local9:b2Mat22; var _local10:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = _local3.m_invMass; var _local6:Number = _local4.m_invMass; var _local7:Number = _local3.m_invI; var _local8:Number = _local4.m_invI; _local9 = _local3.m_xf.R; var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; var _local15:Number = (_local3.m_sweep.c.x + _local11); var _local16:Number = (_local3.m_sweep.c.y + _local12); var _local17:Number = (_local4.m_sweep.c.x + _local13); var _local18:Number = (_local4.m_sweep.c.y + _local14); var _local19:Number = (_local17 - _local15); var _local20:Number = (_local18 - _local16); _local9 = _local3.m_xf.R; var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); var _local23:Number = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local24:Number = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); var _local25:Number = b2Math.b2Abs(_local23); var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var _local27:Number = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local28:Number = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; _local4 = _local2.m_xf.R; var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local3:b2Mat22; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local23:Number = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_pivotMass:b2Mat22; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local10:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); var _local15:Number = (_arg1.dt * _local13); var _local16:Number = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local6:b2Mat22; var _local25:Number; var _local26:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = 0; _local6 = _local3.m_xf.R; var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; var _local12:Number = (_local3.m_sweep.c.x + _local7); var _local13:Number = (_local3.m_sweep.c.y + _local8); var _local14:Number = (_local4.m_sweep.c.x + _local10); var _local15:Number = (_local4.m_sweep.c.y + _local11); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); var _local18:Number = _local3.m_invMass; var _local19:Number = _local4.m_invMass; var _local20:Number = _local3.m_invI; var _local21:Number = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); var _local22:Number = tImpulse.x; var _local23:Number = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local24:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_xf:b2XForm; public var ball:Boolean;// = false public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeCount:int; public var m_invI:Number; public var typnum;// = "" public var m_torque:Number; public var m_flags:uint; public var m_linearVelocity:b2Vec2; public var p_typ:String; public var m_world:b2World; public var bw;// = "down" public var tou:Boolean;// = false public var sukaYa;// = false public var m_next:b2Body; public var m_mass:Number; public var typ;// = "typ" public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_sweep:b2Sweep; public var m_userData; public var m_invMass:Number; public var spec;// = false public var m_prev:b2Body; public var m_linearDamping:Number; public var m_type:int; public var m_angularDamping:Number; public var mish:Boolean;// = false public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; var _local7:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetShapeList():b2Shape{ return (m_shapeList); } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetInertia():Number{ return (m_I); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ if (m_world.m_lock == true){ return (null); }; var _local2:b2Shape = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function DestroyShape(_arg1:b2Shape):void{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import com.miningtruck.objects.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ var _local2:* = _arg1.shape1.GetBody().GetUserData(); var _local3:* = _arg1.shape2.GetBody().GetUserData(); if (((_local2) && (_local3))){ if ((((_local2 is Wheel)) && ((_local3 is Ground)))){ (_local2 as Wheel).groundCollision(); } else { if ((((_local2 is Ground)) && ((_local3 is Wheel)))){ (_local3 as Wheel).groundCollision(); } else { if ((((_local2 is Cargo)) && ((_local3 is Lenta)))){ (_local2 as Cargo).onLenta(); } else { if ((((_local2 is Lenta)) && ((_local3 is Cargo)))){ (_local3 as Cargo).onLenta(); } else { if ((((_local2 is Cargo)) && ((_local3 is Truck)))){ if ((_local2 as Cargo).type == Cargo.BOX){ (_local2 as Cargo).truckCollision(); }; } else { if ((((_local2 is Truck)) && ((_local3 is Cargo)))){ if ((_local3 as Cargo).type == Cargo.BOX){ (_local3 as Cargo).truckCollision(); }; } else { if ((((_local2 is Truck)) && ((_local3 is Ground)))){ (_local2 as Truck).crash(); } else { if ((((_local2 is Ground)) && ((_local3 is Truck)))){ (_local3 as Truck).crash(); }; }; }; }; }; }; }; }; }; } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairRemoved(_arg1, _arg2, _arg3):void{ if (_arg3 == null){ return; }; var _local4:b2Contact = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; var _local2:b2Shape = _arg1.m_shape1; var _local3:b2Shape = _arg1.m_shape2; var _local4:int = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape1; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; var _local5:b2Body = _local2.m_body; var _local6:b2Body = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } public function Collide():void{ var _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_drawFlags:uint; public var m_lineThickness:Number;// = 1 public var m_drawScale:Number;// = 1 public var m_sprite:Sprite; public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeShape(_arg1:b2Shape):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; var _local4:int; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:*; var _local10:int; var _local11:Boolean; var _local12:Boolean; var _local13:Boolean; var _local14:Number; var _local15:Number; var _local16:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { if (_local6.bw == "up"){ _local9 = -1; } else { _local9 = 1; }; _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * ((_local9 * _arg2.x) + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * ((_local9 * _arg2.y) + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local10 = 0; while (_local10 < m_jointCount) { _local7 = m_joints[_local10]; _local7.SolveVelocityConstraints(_arg1); _local10++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local11 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local12 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local13 = _local7.SolvePositionConstraints(); _local12 = ((_local12) && (_local13)); _local5++; }; if (((_local11) && (_local12))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local14 = Number.MAX_VALUE; _local15 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local16 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local14 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local16)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local15)))){ _local6.m_sleepTime = 0; _local14 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local14 = b2Math.b2Min(_local14, _local6.m_sleepTime); }; }; _local5++; }; if (_local14 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local5:b2Body; var _local6:Boolean; var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; var _local4:Number = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); var _local4:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local11:b2XForm; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local7:b2Vec2 = new b2Vec2(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Color = new b2Color(0, 0, 0); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; var _local3:b2Shape = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; var _local5:b2Color = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local4:b2Contact = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; var _local5:b2Joint = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; var _local6:int = m_bodyCount; var _local7:Array = new Array(_local6); var _local8:b2Body = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array = new Array(_arg3); var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); var _local6:int; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); var _local9:int = m_bodyCount; var _local10:Array = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function Validate():void{ m_broadPhase.Validate(); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (m_lock == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ m_lock = true; var _local3:b2TimeStep = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//FPSCounter (com.antkarlov.utils.FPSCounter) package com.antkarlov.utils { import flash.display.*; import flash.events.*; import flash.utils.*; public class FPSCounter extends Sprite { private var _last:uint; private var _ticks:uint;// = 0 private var _fps:Number; public static const UPDATE_DATA:String = "updateData"; public function FPSCounter(){ _last = getTimer(); super(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function get fps():String{ return (_fps.toFixed(1)); } private function enterFrameHandler(_arg1:Event):void{ _ticks++; var _local2:uint = getTimer(); var _local3:uint = (_local2 - _last); if (_local3 >= 1000){ _fps = ((_ticks / _local3) * 1000); dispatchEvent(new Event(FPSCounter.UPDATE_DATA)); _ticks = 0; _last = _local2; }; } } }//package com.antkarlov.utils
Section 76
//KeyObject (com.antkarlov.utils.KeyObject) package com.antkarlov.utils { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.ui.*; public class KeyObject extends Proxy { private static var keysDown:Object; private static var stage:Stage; public function KeyObject(_arg1:Stage){ KeyObject.stage = _arg1; keysDown = new Object(); _arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); _arg1.addEventListener(KeyboardEvent.KEY_UP, keyReleased); } private function keyReleased(_arg1:KeyboardEvent):void{ delete keysDown[_arg1.keyCode]; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return ((Keyboard[_arg1]) ? Keyboard[_arg1] : -1); } public function isDown(_arg1:uint):Boolean{ return (Boolean(keysDown[_arg1])); } private function keyPressed(_arg1:KeyboardEvent):void{ keysDown[_arg1.keyCode] = true; } public function deconstruct():void{ KeyObject.stage = null; keysDown = new Object(); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.removeEventListener(KeyboardEvent.KEY_UP, keyReleased); } } }//package com.antkarlov.utils
Section 77
//BigAssCanvas (com.bit101.display.BigAssCanvas) package com.bit101.display { import flash.display.*; import flash.geom.*; public class BigAssCanvas extends Sprite { private var _color:uint; private var _bitmaps:Array; private var _height:Number; private var _width:Number; private var _transparent:Boolean; public function BigAssCanvas(_arg1:Number, _arg2:Number, _arg3:Boolean=false, _arg4:uint=0xFFFFFF){ _width = _arg1; _height = _arg2; _transparent = _arg3; _color = _arg4; makeBitmaps(); } public function noise(_arg1:int, _arg2:uint=0, _arg3:uint=0xFF, _arg4:uint=7, _arg5:Boolean=false):void{ var _local7:Bitmap; var _local6:int; while (_local6 < _bitmaps.length) { _local7 = (_bitmaps[_local6] as Bitmap); _local7.bitmapData.noise(_arg1, _arg2, _arg3, _arg4, _arg5); _local6++; }; } public function setPixel32(_arg1:Number, _arg2:Number, _arg3:uint):void{ var _local5:Bitmap; var _local4:int; while (_local4 < _bitmaps.length) { _local5 = (_bitmaps[_local4] as Bitmap); if ((((((((_arg1 >= _local5.x)) && ((_arg1 < (_local5.x + _local5.width))))) && ((_arg2 >= _local5.y)))) && ((_arg2 < (_local5.y + _local5.height))))){ _local5.bitmapData.setPixel32((_arg1 - _local5.x), (_arg2 - _local5.y), _arg3); }; _local4++; }; } public function fillRect(_arg1:Rectangle, _arg2:uint):void{ var _local4:Bitmap; var _local5:Rectangle; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); _local5 = _arg1.clone(); _arg1.clone().x = (_local5.x - _local4.x); _local5.y = (_local5.y - _local4.y); _local4.bitmapData.fillRect(_local5, _arg2); _local3++; }; } public function draw(_arg1:IBitmapDrawable, _arg2:Matrix=null, _arg3:ColorTransform=null, _arg4:String=null, _arg5:Rectangle=null, _arg6:Boolean=false):void{ var _local8:Bitmap; var _local9:Matrix; var _local10:Rectangle; if (_arg2 == null){ _arg2 = new Matrix(); }; var _local7:int; while (_local7 < _bitmaps.length) { _local8 = (_bitmaps[_local7] as Bitmap); _local9 = _arg2.clone(); _arg2.clone().tx = (_local9.tx - _local8.x); _local9.ty = (_local9.ty - _local8.y); if (_arg5 != null){ _local10 = _arg5.clone(); _arg5.clone().x = (_local10.x - _local8.x); _local10.y = (_local10.y - _local8.y); } else { _local10 = null; }; _local8.bitmapData.draw(_arg1, _local9, _arg3, _arg4, _local10, _arg6); _local7++; }; } public function getPixel32(_arg1:Number, _arg2:Number):uint{ var _local4:Bitmap; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); if ((((((((_arg1 >= _local4.x)) && ((_arg1 < (_local4.x + _local4.width))))) && ((_arg2 >= _local4.y)))) && ((_arg2 < (_local4.y + _local4.height))))){ return (_local4.bitmapData.getPixel32((_arg1 - _local4.x), (_arg2 - _local4.y))); }; _local3++; }; return (0); } public function getPixel(_arg1:Number, _arg2:Number):uint{ var _local4:Bitmap; var _local3:int; while (_local3 < _bitmaps.length) { _local4 = (_bitmaps[_local3] as Bitmap); if ((((((((_arg1 >= _local4.x)) && ((_arg1 < (_local4.x + _local4.width))))) && ((_arg2 >= _local4.y)))) && ((_arg2 < (_local4.y + _local4.height))))){ return (_local4.bitmapData.getPixel((_arg1 - _local4.x), (_arg2 - _local4.y))); }; _local3++; }; return (0); } public function unlock():void{ var _local2:Bitmap; var _local1:int; while (_local1 < _bitmaps.length) { _local2 = (_bitmaps[_local1] as Bitmap); _local2.bitmapData.unlock(); _local1++; }; } public function lock():void{ var _local2:Bitmap; var _local1:int; while (_local1 < _bitmaps.length) { _local2 = (_bitmaps[_local1] as Bitmap); _local2.bitmapData.lock(); _local1++; }; } public function perlinNoise(_arg1:Number, _arg2:Number, _arg3:uint, _arg4:int, _arg5:Boolean, _arg6:uint=7, _arg7:Boolean=false):void{ var _local10:Bitmap; var _local11:Array; var _local12:int; var _local8:Array = new Array(); var _local9:int; while (_local9 < _arg3) { _local8.push(new Point()); _local9++; }; _local9 = 0; while (_local9 < _bitmaps.length) { _local10 = (_bitmaps[_local9] as Bitmap); _local11 = new Array(); _local12 = 0; while (_local12 < _local8.length) { _local11[_local12] = new Point((_local8[_local12].x + _local10.x), (_local8[_local12].y + _local10.y)); _local12++; }; _local10.bitmapData.perlinNoise(_arg1, _arg2, _arg3, _arg4, false, _arg5, _arg6, _arg7, _local11); _local9++; }; } private function makeBitmaps():void{ var _local3:Number; var _local4:Number; var _local5:Bitmap; _bitmaps = new Array(); var _local1:Number = _height; var _local2:Number = 0; while (_local1 > 0) { _local3 = 0; _local4 = _width; while (_local4 > 0) { _local5 = new Bitmap(new BitmapData(Math.min(2880, _local4), Math.min(2880, _local1), _transparent, _color)); _local5.x = _local3; _local5.y = _local2; addChild(_local5); _bitmaps.push(_local5); _local4 = (_local4 - _local5.width); _local3 = (_local3 + _local5.width); }; _local2 = (_local2 + Math.min(2880, _local1)); _local1 = (_local1 - Math.min(2880, _local1)); }; } public function copyPixelsOut(_arg1:Rectangle, _arg2:Boolean=true, _arg3:uint=4278190080):BitmapData{ var _local6:Bitmap; var _local7:Rectangle; var _local4:BitmapData = new BitmapData(_arg1.width, _arg1.height, true, _arg3); var _local5:int; while (_local5 < _bitmaps.length) { _local6 = (_bitmaps[_local5] as Bitmap); _local7 = _arg1.clone(); _arg1.clone().x = (_local7.x - _local6.x); _local7.y = (_local7.y - _local6.y); if (_local7.intersects(new Rectangle(0, 0, 2880, 2880))){ _local4.copyPixels(_local6.bitmapData, _local7, new Point()); }; _local5++; }; return (_local4); } public function setPixel(_arg1:Number, _arg2:Number, _arg3:uint):void{ var _local5:Bitmap; var _local4:int; while (_local4 < _bitmaps.length) { _local5 = (_bitmaps[_local4] as Bitmap); if ((((((((_arg1 >= _local5.x)) && ((_arg1 < (_local5.x + _local5.width))))) && ((_arg2 >= _local5.y)))) && ((_arg2 < (_local5.y + _local5.height))))){ _local5.bitmapData.setPixel(Math.round((_arg1 - _local5.x)), Math.round((_arg2 - _local5.y)), _arg3); }; _local4++; }; } public function dispose():void{ var _local1:Bitmap; while (_bitmaps.length > 0) { _local1 = (_bitmaps.shift() as Bitmap); removeChild(_local1); _local1.bitmapData.dispose(); }; } } }//package com.bit101.display
Section 78
//Level1 (com.miningtruck.levels.Level1) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level1 extends LevelBase { public function Level1(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level1_part1(); _back = new level1_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level1_part2(); _back = new level1_part2_back(); makeObjects(); makeBody(3200); cacheLevel(3200); _level = new level1_part3(); _back = new level1_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(700, 252); _world.time = 90; _world.totalCargo = 7; } } }//package com.miningtruck.levels
Section 79
//Level2 (com.miningtruck.levels.Level2) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level2 extends LevelBase { public function Level2(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level2_part1(); _back = new level2_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level2_part2(); _back = new level2_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level2_part3(); _back = new level2_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 2) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, (_local2 * 10)); if (_local2 == 1){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 80
//Level3 (com.miningtruck.levels.Level3) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level3 extends LevelBase { public function Level3(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level3_part1(); _back = new level3_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level3_part2(); _back = new level3_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level3_part3(); _back = new level3_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 15) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, (_local2 * 10)); if (_local2 == 14){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 5; } } }//package com.miningtruck.levels
Section 81
//Level4 (com.miningtruck.levels.Level4) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level4 extends LevelBase { public function Level4(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level4_part1(); _back = new level4_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level4_part2(); _back = new level4_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level4_part3(); _back = new level4_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 82
//Level5 (com.miningtruck.levels.Level5) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level5 extends LevelBase { public function Level5(_arg1:World){ var _local3:Cargo; super(_arg1); _level = new level5_part1(); _back = new level5_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level5_part2(); _back = new level5_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level5_part3(); _back = new level5_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; var _local2:int; while (_local2 < 4) { _local3 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, (_local2 * 10)); if (_local2 == 3){ _local3.onTraffic = true; }; _local2++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 90; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 83
//Level6 (com.miningtruck.levels.Level6) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level6 extends LevelBase { public function Level6(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level6_part1(); _back = new level6_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level6_part2(); _back = new level6_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level6_part3(); _back = new level6_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 10); var _local3:int; while (_local3 < 8) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 10)); if (_local3 == 7){ _local2.onTraffic = true; }; _local3++; }; _world.makeTruck(570, 200); _world.makeTraffic(720, 262); _world.time = 120; _world.totalCargo = 3; } } }//package com.miningtruck.levels
Section 84
//Level7 (com.miningtruck.levels.Level7) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level7 extends LevelBase { public function Level7(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level7_part1(); _back = new level7_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level7_part2(); _back = new level7_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level7_part3(); _back = new level7_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 0); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, 15); _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 30); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 1; } } }//package com.miningtruck.levels
Section 85
//Level8 (com.miningtruck.levels.Level8) package com.miningtruck.levels { import com.miningtruck.*; import com.miningtruck.objects.*; public class Level8 extends LevelBase { public function Level8(_arg1:World){ var _local2:Cargo; super(_arg1); _level = new level8_part1(); _back = new level8_part1_back(); makeLent(); makeObjects(); makeBody(); cacheLevel(); _level = new level8_part2(); _back = new level8_part2_back(); makeObjects(3200); makeBody(3200); cacheLevel(3200); _level = new level8_part3(); _back = new level8_part3_back(); makeTarget(0x1900); makeObjects(0x1900); makeBody(0x1900); cacheLevel(0x1900); _level = null; _back = null; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_BIG, 0); var _local3:int; while (_local3 < 9) { _local2 = new Cargo(_world, 150, 100, Cargo.COAL_SMALL, ((_local3 * 10) + 15)); _local3++; }; _local2 = new Cargo(_world, 150, 100, Cargo.COAL_MIDDLE, ((9 * 10) + 10)); _local2.onTraffic = true; _world.makeTruck(570, 200); _world.makeTraffic(720, 252); _world.time = 120; _world.totalCargo = 2; } } }//package com.miningtruck.levels
Section 86
//LevelBase (com.miningtruck.levels.LevelBase) package com.miningtruck.levels { import flash.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; import com.miningtruck.objects.*; import flash.geom.*; public class LevelBase extends Sprite { private const UNLOAD_TIME_INT:int = 8; var _targetPoint:Point; var _body:b2Body; private var _unloadInterval:int;// = 8 var _level:Sprite; var _back:Sprite; private var _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.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Cargo extends Sprite { private const SCORE_ROAD_LIGHT:int = 50; private const SCORE_BARREL:int = 70; private const SCORE_COAL_SMALL:int = 30; private const SCORE_BOX:int = 80; private const SCORE_COAL_BIG:int = 100; private const SCORE_COAL_MIDDLE:int = 60; private const SCORE_CONUS:int = 10; private var _body:b2Body; private var _variety:int; private var _speedX:Number;// = 0 private var _speedY:Number;// = 0 private var _type:int;// = 0 private var _world:World; public var onTraffic:Boolean;// = false private var _targetX:int;// = 0 private var _crackTime:int;// = 0 private var _targetY:int;// = 0 private var _isMove:Boolean;// = false private var _showTimer:int;// = 0 public var offUnload:Boolean;// = false private var _sprite:Animation; private var _stopTimer:int;// = 0 private var _x:Number;// = 0 private var _y:Number;// = 0 public static const CONUS:int = 4; public static const BARREL:int = 6; public static const BOX:int = 3; public static const ROAD_LIGHT:int = 5; public static const COAL_BIG:int = 2; public static const COAL_MIDDLE:int = 1; public static const COAL_SMALL:int = 0; public function Cargo(_arg1:World, _arg2:Number=0, _arg3:Number=0, _arg4:int=0, _arg5:int=0){ _world = _arg1; _x = _arg2; _y = _arg3; _type = _arg4; switch (_type){ case COAL_SMALL: _variety = int((Math.random() * 4)); _sprite = _world.app.animCache.getAnimation("sprite_coal"); break; case COAL_MIDDLE: _variety = 1; _sprite = _world.app.animCache.getAnimation("sprite_coal_big"); break; case COAL_BIG: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_coal_big"); break; case BOX: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_box"); break; case CONUS: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_conus"); break; case ROAD_LIGHT: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_road_light"); break; case BARREL: _variety = 0; _sprite = _world.app.animCache.getAnimation("sprite_barrel"); break; }; _sprite.gotoAndStop((_variety + 1)); _sprite.smoothing = true; addChild(_sprite); visible = false; _world.addMain(this); if (_arg5 == 0){ init(); } else { _showTimer = _arg5; addEventListener(Event.ENTER_FRAME, showHandler); }; } public function groundCollision():void{ var _local1:EffectDust; _local1 = _world.getFreeDust(); if (_local1 != null){ _local1.make((x + (Math.random() * 5)), (y - (Math.random() * 10))); }; } private function showHandler(_arg1:Event):void{ _showTimer--; if (_showTimer <= 0){ init(); removeEventListener(Event.ENTER_FRAME, showHandler); if (onTraffic){ _showTimer = 200; addEventListener(Event.ENTER_FRAME, trafficHandler); }; }; } private function makeRoadLight():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.vertexCount = 4; _local2.vertices[0].Set((-3 / World.DRAW_SCALE), (-14 / World.DRAW_SCALE)); _local2.vertices[1].Set((2 / World.DRAW_SCALE), (-14 / World.DRAW_SCALE)); _local2.vertices[2].Set((7 / World.DRAW_SCALE), (17 / World.DRAW_SCALE)); _local2.vertices[3].Set((-7 / World.DRAW_SCALE), (17 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; _sprite.play(); } public function truckCollision():void{ if ((_world.worldTime - _crackTime) > 30){ _crackTime = _world.worldTime; _world.sound(World.SND_CRACKBOX); }; } private function trafficHandler(_arg1:Event):void{ _showTimer--; if (_showTimer <= 0){ _world.trafficLight(); removeEventListener(Event.ENTER_FRAME, trafficHandler); }; } private function init():void{ switch (_type){ case COAL_SMALL: makeCoal(); break; case COAL_BIG: makeCoalBig(); break; case COAL_MIDDLE: makeCoalBig(); break; case BOX: makeBox(); break; case CONUS: makeConus(); break; case ROAD_LIGHT: makeRoadLight(); break; case BARREL: makeBarrel(); break; }; } private function makeCoalBig():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.4; _local2.friction = 0.8; _local2.restitution = 0.2; switch ((_variety + 1)){ case 1: _local2.SetAsBox((21 / World.DRAW_SCALE), (19 / World.DRAW_SCALE)); break; case 2: _local2.SetAsBox((21 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); break; }; _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function onLenta():void{ _stopTimer = 8; if (!_isMove){ _isMove = true; addEventListener(Event.ENTER_FRAME, lentaHandler); }; } private function makeCoal():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.5; _local2.friction = 0.8; _local2.restitution = 0.2; switch ((_variety + 1)){ case 1: _local2.SetAsBox((8 / World.DRAW_SCALE), (6 / World.DRAW_SCALE)); break; case 2: _local2.SetAsBox((7 / World.DRAW_SCALE), (4 / World.DRAW_SCALE)); break; case 3: _local2.SetAsBox((4 / World.DRAW_SCALE), (4 / World.DRAW_SCALE)); break; case 4: _local2.SetAsBox((12 / World.DRAW_SCALE), (5 / World.DRAW_SCALE)); break; }; _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function destroy():void{ removeEventListener(Event.ENTER_FRAME, unloadHandler); removeEventListener(Event.ENTER_FRAME, lentaHandler); removeEventListener(Event.ENTER_FRAME, showHandler); removeEventListener(Event.ENTER_FRAME, trafficHandler); _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; } public function get score():int{ switch (_type){ case COAL_SMALL: return (SCORE_COAL_SMALL); case COAL_MIDDLE: return (SCORE_COAL_MIDDLE); case COAL_BIG: return (SCORE_COAL_BIG); case BOX: return (SCORE_BOX); case CONUS: return (SCORE_CONUS); case ROAD_LIGHT: return (SCORE_ROAD_LIGHT); case BARREL: return (SCORE_BARREL); default: return (0); }; } private function makeBarrel():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.SetAsBox((11 / World.DRAW_SCALE), (14 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; _sprite.play(); } private function lentaHandler(_arg1:Event):void{ _stopTimer--; _body.SetLinearVelocity(new b2Vec2(5, 0)); if (_stopTimer <= 0){ removeEventListener(Event.ENTER_FRAME, lentaHandler); _isMove = false; }; } public function get type():int{ return (_type); } private function unloadHandler(_arg1:Event):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:EffectScore; if (_showTimer <= 0){ x = (x + _speedX); y = (y + _speedY); if (_type == COAL_BIG){ scaleX = (scaleX - 0.05); scaleY = scaleX; }; _local2 = (_targetX - x); _local3 = (_targetY - y); _local4 = int(Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); if ((((_local4 < 10)) || ((scaleX <= 0)))){ _world.addScore(score); _world.cargo = (_world.cargo - 1); _local5 = new EffectScore(_world); _local5.caption = ("+" + score.toString()); _local5.x = (_targetX - 50); _local5.y = (_targetY + 10); _world.sound(World.SND_TUBE); if (offUnload){ _world.unloadComplete(); }; destroy(); }; } else { _showTimer--; }; } private function makeConus():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.vertexCount = 3; _local2.vertices[0].Set(0, (-8 / World.DRAW_SCALE)); _local2.vertices[1].Set((7 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); _local2.vertices[2].Set((-8 / World.DRAW_SCALE), (9 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } private function makeBox():void{ var _local1:b2BodyDef = new b2BodyDef(); var _local2:b2PolygonDef = new b2PolygonDef(); _local1.position.Set((_x / World.DRAW_SCALE), (_y / World.DRAW_SCALE)); _local2.density = 0.1; _local2.friction = 0.8; _local2.restitution = 0.2; _local2.SetAsBox((14 / World.DRAW_SCALE), (12 / World.DRAW_SCALE)); _local1.userData = this; _body = _world.world.CreateBody(_local1); _body.CreateShape(_local2); _body.SetMassFromShapes(); visible = true; } public function unload(_arg1:int, _arg2:int, _arg3:int=0):void{ _targetX = _arg1; _targetY = _arg2; _showTimer = _arg3; var _local4:int = (_targetX - x); var _local5:int = (_targetY - y); var _local6:Number = ((Math.atan2(_local5, _local4) / Math.PI) * 180); _speedX = (4 * Math.cos(((_local6 / 180) * Math.PI))); _speedY = (4 * Math.sin(((_local6 / 180) * Math.PI))); addEventListener(Event.ENTER_FRAME, unloadHandler); } } }//package com.miningtruck.objects
Section 88
//EffectBase (com.miningtruck.objects.EffectBase) package com.miningtruck.objects { import flash.display.*; import com.miningtruck.*; public class EffectBase extends Sprite { var _sleep:Boolean;// = false var _world:World; public function EffectBase(_arg1:World){ _world = _arg1; } public function destroy():void{ } public function get sleep():Boolean{ return (_sleep); } public function progress():void{ } public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ } } }//package com.miningtruck.objects
Section 89
//EffectDust (com.miningtruck.objects.EffectDust) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectDust extends EffectBase { private var _sprite:Animation; private var _scale:Number;// = 0 private var _speedX:Number;// = 0 private var _speedY:Number;// = 0 public function EffectDust(_arg1:World){ super(_arg1); } override public function progress():void{ if (_sleep){ return; }; if (_sprite.scaleX < _scale){ _sprite.scaleX = (_sprite.scaleX + 0.1); _sprite.scaleY = _sprite.scaleX; }; x = (x + _speedX); y = (y + _speedY); if ((x + 70) < Math.abs(_world.x)){ destroy(); }; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ var _local5:int; if (_arg4){ _sprite = _world.app.animCache.getAnimation("sprite_fire"); } else { _local5 = int((Math.random() * 2)); switch (_local5){ case 0: _sprite = _world.app.animCache.getAnimation("sprite_smoke1"); break; case 1: _sprite = _world.app.animCache.getAnimation("sprite_smoke2"); break; }; }; x = _arg1; y = (_arg2 + 20); _sprite.play(); _sprite.smoothing = true; _scale = (Math.random() + 0.2); _scale = ((_scale)>1) ? 1 : _scale; _sprite.scaleX = 0; _sprite.scaleY = 0; addChild(_sprite); _sprite.rotation = (Math.random() * 180); _speedX = ((_world.truckSpeed * 0.1) + (((Math.random() * 2) - 1) * 0.5)); if (_arg4){ _speedY = (-(Math.random()) * 4); } else { _speedY = -(Math.abs((_world.truckSpeed * 0.1))); }; _world.addMain(this); _sleep = false; _sprite.addEventListener(Event.COMPLETE, completeHandler); } public function completeHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ if (_sprite){ _world.removeMain(this); _sprite.removeEventListener(Event.COMPLETE, completeHandler); removeChild(_sprite); _sprite.destroy(); _sprite = null; _sleep = true; }; } } }//package com.miningtruck.objects
Section 90
//EffectExplosion (com.miningtruck.objects.EffectExplosion) package com.miningtruck.objects { import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class EffectExplosion extends EffectBase { private var _sprite:Animation; public function EffectExplosion(_arg1:World){ super(_arg1); } private function explosionCompleteHandler(_arg1:Event):void{ destroy(); } override public function destroy():void{ _sprite.removeEventListener(Event.COMPLETE, explosionCompleteHandler); _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; } override public function make(_arg1:int, _arg2:int, _arg3:Number=0, _arg4:Boolean=false):void{ _sprite = _world.app.animCache.getAnimation("sprite_explosion"); addChild(_sprite); x = _arg1; y = _arg2; _sprite.play(); _sprite.addEventListener(Event.COMPLETE, explosionCompleteHandler); _world.addMain(this); } } }//package com.miningtruck.objects
Section 91
//EffectScore (com.miningtruck.objects.EffectScore) package com.miningtruck.objects { import flash.display.*; import flash.events.*; import com.miningtruck.*; import flash.text.*; public class EffectScore extends EffectBase { private var _sprite:Sprite; private var _lifeTime:int;// = 30 public function EffectScore(_arg1:World){ super(_arg1); _world.addFront(this); _sprite = new fly_score(); addChild(_sprite); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function set lifeTime(_arg1:int):void{ _lifeTime = _arg1; } private function enterFrameHandler(_arg1:Event):void{ y = (y - 2); if (_lifeTime <= 0){ alpha = (alpha - 0.1); if (alpha <= 0){ destroy(); }; } else { _lifeTime--; }; } override public function destroy():void{ _world.removeFront(this); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); removeChild(_sprite); _sprite = null; } public function set caption(_arg1:String):void{ if ((_sprite["tf1"] is TextField)){ (_sprite["tf1"] as TextField).text = _arg1; }; if ((_sprite["tf2"] is TextField)){ (_sprite["tf2"] as TextField).text = _arg1; }; } } }//package com.miningtruck.objects
Section 92
//Ground (com.miningtruck.objects.Ground) package com.miningtruck.objects { import flash.display.*; public class Ground extends Sprite { } }//package com.miningtruck.objects
Section 93
//Lenta (com.miningtruck.objects.Lenta) package com.miningtruck.objects { import flash.display.*; public class Lenta extends Sprite { } }//package com.miningtruck.objects
Section 94
//Truck (com.miningtruck.objects.Truck) package com.miningtruck.objects { import flash.display.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Truck extends Sprite { private var _sprite:Animation; private var _world:World; public function Truck(_arg1:World){ _world = _arg1; _sprite = _world.app.animCache.getAnimation("sprite_truck_body"); _sprite.smoothing = true; addChild(_sprite); } public function set frame(_arg1:int):void{ _sprite.gotoAndStop(_arg1); } public function crash(_arg1:Boolean=false):void{ var _local2:EffectExplosion; if (((((((!(_world.isTruckCrashed)) && ((Math.abs(rotation) > 60)))) && ((Math.abs(rotation) < 360)))) || (_arg1))){ _world.truckCrashed(); frame = 4; _local2 = new EffectExplosion(_world); _local2.make(x, y); }; } public function destroy():void{ removeChild(_sprite); _sprite.destroy(); } } }//package com.miningtruck.objects
Section 95
//Wheel (com.miningtruck.objects.Wheel) package com.miningtruck.objects { import flash.display.*; import Box2D.Dynamics.Joints.*; import com.touchmypixel.peepee.utils.*; import com.miningtruck.*; public class Wheel extends Sprite { private var _world:World; private var _sprite:Animation; private var _motor:b2RevoluteJoint; public function Wheel(_arg1:World){ _world = _arg1; _sprite = _world.app.animCache.getAnimation("sprite_wheel"); _sprite.smoothing = true; addChild(_sprite); _world.addMain(this); } public function set motor(_arg1:b2RevoluteJoint):void{ _motor = _arg1; } public function destroy():void{ _world.removeMain(this); removeChild(_sprite); _sprite.destroy(); _sprite = null; _motor = null; } public function groundCollision():void{ var _local1:EffectDust; _local1 = _world.getFreeDust(); if (_local1 != null){ _local1.make((x + (Math.random() * 5)), (y - (Math.random() * 10))); }; } } }//package com.miningtruck.objects
Section 96
//Andkon (com.miningtruck.ui.Andkon) package com.miningtruck.ui { import flash.events.*; import flash.net.*; public class Andkon extends AndkonBtn { public function Andkon(){ gotoAndStop(1); buttonMode = true; addEventListener(MouseEvent.MOUSE_OVER, overHandler); addEventListener(MouseEvent.MOUSE_OUT, outHandler); addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(_arg1:MouseEvent):void{ var e = _arg1; var url = "http://www.andkon.com/arcade/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } private function outHandler(_arg1:MouseEvent):void{ gotoAndStop(1); } private function overHandler(_arg1:MouseEvent):void{ gotoAndStop(2); } } }//package com.miningtruck.ui
Section 97
//Button (com.miningtruck.ui.Button) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import com.miningtruck.*; public class Button extends Sprite { private var _isDown:Boolean; private var _button:MovieClip; private var _world:World; private var _label:Label; private var _pause:int;// = 0 private var _stopY:Number;// = 0 public static const BTN_SCORES:int = 3; public static const BTN_BACK:int = 4; public static const BTN_SELECT_LEVEL:int = 6; public static const BTN_FREE_GAMES:int = 5; public static const BTN_NEXT_LEVEL:int = 7; public static const BTN_PLAY:int = 1; public static const BTN_MORE_GAMES:int = 2; public function Button(_arg1:World, _arg2:int, _arg3:int, _arg4:int){ _world = _arg1; x = _arg2; y = _arg3; switch (_arg4){ case BTN_PLAY: _button = new btn_play(); _label = new Label(-2, -2, Label.LABEL_RED); _label.textWidth = 143; break; case BTN_MORE_GAMES: _button = new btn_moregames(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 325; break; case BTN_SCORES: _button = new btn_scores(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 156; break; case BTN_BACK: _button = new btn_back(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 116; break; case BTN_FREE_GAMES: _button = new btn_freegames(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 404; break; case BTN_SELECT_LEVEL: _button = new btn_sellevel(); _label = new Label(2, 0, Label.LABEL_GREEN); _label.textWidth = 280; break; case BTN_NEXT_LEVEL: _button = new btn_nextlevel(); _label = new Label(2, 0, Label.LABEL_RED_MIDDLE); _label.textWidth = 280; break; }; if (_button){ _button.stop(); }; 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); } else { trace("Button::say -> error btnType"); }; } } }//package com.miningtruck.ui
Section 98
//ButtonLevel (com.miningtruck.ui.ButtonLevel) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import com.miningtruck.*; import flash.text.*; public class ButtonLevel extends MovieClip { private var _lock:Boolean;// = false private var _button:MovieClip; private var _world:World; private var _tag:int;// = -1 public static const LEVEL_SELECT:String = "levelSelect"; public function ButtonLevel(_arg1:World, _arg2:int=1, _arg3:Boolean=false){ _world = _arg1; _lock = _arg3; if (_lock){ _button = new btn_level_lock(); } else { _button = new btn_level(); buttonMode = true; addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); }; _button.gotoAndStop(_arg2); addChild(_button); alpha = 0; } public function get tag():int{ return (_tag); } public function destroy():void{ if (!_lock){ removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); }; removeChild(_button); _button = null; } public function set caption(_arg1:String):void{ if (_button){ if ((_button["tf1"] is TextField)){ (_button["tf1"] as TextField).text = _arg1; }; if ((_button["tf2"] is TextField)){ (_button["tf2"] as TextField).text = _arg1; }; }; } private function enterFrameHandler(_arg1:Event):void{ scaleX = (scaleX + 0.15); scaleY = scaleX; alpha = (alpha - 0.15); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); }; } private function mouseUpHandler(_arg1:Event):void{ _world.sound(World.SND_BUTTON); dispatchEvent(new Event(LEVEL_SELECT)); removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function set tag(_arg1:int):void{ _tag = _arg1; } } }//package com.miningtruck.ui
Section 99
//HudButton (com.miningtruck.ui.HudButton) package com.miningtruck.ui { import flash.display.*; import flash.events.*; 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 100
//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 101
//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 102
//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 103
//Label (com.miningtruck.ui.Label) package com.miningtruck.ui { import flash.display.*; import flash.events.*; import flash.text.*; public class Label extends Sprite { private var _label:Sprite; private var _pause:int;// = 0 private var _stopY:Number;// = 0 public static const LABEL_RED:int = 1; public static const LABEL_PURPLE:int = 5; public static const LABEL_BROWN:int = 8; public static const LABEL_PURPLE_SMALL:int = 6; public static const LABEL_GRAY:int = 3; public static const LABEL_GRAY_BIG:int = 4; public static const LABEL_GREEN:int = 2; public static const LABEL_GRAY_SMALL:int = 9; public static const LABEL_RED_MIDDLE:int = 7; public function Label(_arg1:int, _arg2:int, _arg3:int){ x = _arg1; y = _arg2; switch (_arg3){ case LABEL_RED: _label = new label_red(); break; case LABEL_GREEN: _label = new label_green(); break; case LABEL_GRAY: _label = new label_green(); (_label["tf1"] as TextField).textColor = 11970421; break; case LABEL_GRAY_BIG: _label = new label_red(); (_label["tf1"] as TextField).textColor = 11970421; break; case LABEL_PURPLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 10905025; break; case LABEL_PURPLE_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 10905025; (_label["tf2"] as TextField).textColor = 3551783; break; case LABEL_RED_MIDDLE: _label = new label_green(); (_label["tf1"] as TextField).textColor = 12677961; break; case LABEL_BROWN: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 6906444; (_label["tf2"] as TextField).visible = false; break; case LABEL_GRAY_SMALL: _label = new fly_score(); (_label["tf1"] as TextField).textColor = 11970421; (_label["tf2"] as TextField).textColor = 3617313; break; }; if (_label){ addChild(_label); } else { trace("Label::say -> error labType"); }; } public function hide(_arg1:int=0):void{ _pause = _arg1; addEventListener(Event.ENTER_FRAME, hideLabelHandler); } private function showLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha + 0.1); y = lerp(_stopY, y, 0.8); if (alpha >= 1){ alpha = 1; removeEventListener(Event.ENTER_FRAME, showLabelHandler); }; } else { _pause--; }; } public function set caption(_arg1:String):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.text = _arg1; _local4++; }; } public function set textWidth(_arg1:int):void{ var _local2:String; var _local3:TextField; var _local4 = 1; while (_local4 < 3) { _local2 = ("tf" + _local4.toString()); _local3 = (_label[_local2] as TextField); _local3.width = _arg1; _local3.x = (-(_local3.width) * 0.5); _local4++; }; } public function destroy():void{ if (_label){ removeChild(_label); }; _label = null; } public function show(_arg1:int, _arg2:int=0):void{ _stopY = _arg1; _pause = _arg2; alpha = 0; addEventListener(Event.ENTER_FRAME, showLabelHandler); } private function lerp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + (_arg3 * (_arg2 - _arg1)))); } private function hideLabelHandler(_arg1:Event):void{ if (_pause <= 0){ alpha = (alpha - 0.2); y = (y + 5); if (alpha <= 0){ removeEventListener(Event.ENTER_FRAME, hideLabelHandler); destroy(); }; } else { _pause--; }; } } }//package com.miningtruck.ui
Section 104
//LevelProgress (com.miningtruck.ui.LevelProgress) package com.miningtruck.ui { import flash.display.*; public class LevelProgress extends MovieClip { private var _truck:Sprite; private var _maxValue:int;// = 0 private var _offset:int;// = 0 private var _gamePercent:int;// = 0 public var truck_ico:MovieClip; public function LevelProgress(){ if (this["truck_ico"] != null){ _truck = (this["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 105
//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 106
//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 107
//App (com.miningtruck.App) package com.miningtruck { import flash.display.*; import flash.events.*; import com.touchmypixel.peepee.utils.*; import com.antkarlov.utils.*; import flash.net.*; import com.miningtruck.ui.*; public class App extends MovieClip { private var _cacheList:Array; public var input:KeyObject; private var _cacheIndex:int; private var _game:Game; private var _loadingBar:Loading; private var _bg:Sprite; private var _sponsorLogo:Sprite; private var _interval:int;// = 120 public var animCache:AnimationCache; private var _sponsorSmall:Sprite; public static const TXT_LEVEL_FAILED:String = "LEVEL FAILED"; public static const TXT_SUBMIT:String = "SUBMIT SCORE"; public static const TXT_MORE_GAMES:String = "ANDKON ARCADE"; public static const TXT_LEVEL_COMPLETED:String = "LEVEL COMPLETED"; public static const TXT_LEVEL_FAILED_MSG1:String = "You need deliver "; public static const TXT_LEVEL_FAILED_MSG2:String = " items of cargo"; public static const TXT_LEVEL_FAILED_MSG3:String = "to complete the level."; public static const TXT_LOADING:String = "LOADING"; public static const TXT_TOTAL_SCORE:String = "TOTAL SCORE: "; public static const TXT_WHERE_CARGO:String = "Where cargo?"; public static const TXT_LEVEL:String = "LEVEL"; public static const TXT_PLAY:String = "PLAY"; public static const TXT_YOUR_SCORE:String = "YOUR GAME SCORE:"; public static const APP_VER:String = "ver 1.2 Andkon - June 23, 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 = "ANDKON ARCADE"; public static const SCR_W:int = 640; public static const TXT_LEVEL_RESTART:String = "RESTART LEVEL"; public static const TXT_RESTART_HINT:String = "press space key for restart"; public static const TXT_LEVEL_SCORE:String = "LEVEL SCORE: "; public static const TXT_SELECT_LEVEL_BTN:String = "SELECT LEVEL"; public static const TXT_NEXT_LEVEL:String = "NEXT LEVEL"; public static const TXT_BACK:String = "BACK"; public static const TXT_SCORES:String = "SCORES"; public static const TXT_PREPARE:String = "prepare"; public static const TXT_MAIN_MENU:String = "MAIN MENU"; public static const TXT_SELECT_LEVEL:String = "SELECT A LEVEL"; public function App(_arg1:Stage){ _cacheList = new Array(); super(); trace(APP_VER); _arg1.showDefaultContextMenu = false; _arg1.scaleMode = StageScaleMode.NO_SCALE; input = new KeyObject(_arg1); animCache = AnimationCache.getInstance(); animCache.replaceExisting = true; initCacheList(); addEventListener(Event.ENTER_FRAME, cacheHandler); } private function initCacheList():void{ _cacheList.push("sprite_wheel"); _cacheList.push("sprite_truck_body"); _cacheList.push("sprite_smoke1"); _cacheList.push("sprite_smoke2"); _cacheList.push("sprite_coal"); _cacheList.push("sprite_coal_big"); _cacheList.push("sprite_traffic"); _cacheList.push("sprite_suck"); _cacheList.push("sprite_timer"); _cacheList.push("sprite_box"); _cacheList.push("sprite_conus"); _cacheList.push("sprite_road_light"); _cacheList.push("sprite_barrel"); _cacheList.push("sprite_fire"); _cacheList.push("sprite_explosion"); _bg = new background(); addChild(_bg); _loadingBar = new Loading(_cacheList.length); var _local2 = _loadingBar; with (_local2) { text = TXT_PREPARE; x = ((SCR_W / 2) - (width / 2)); y = ((SCR_H * 0.5) + 50); }; addChild(_loadingBar); _sponsorSmall = new AndkonPreloader(); _sponsorSmall.x = (App.SCR_W * 0.5); _sponsorSmall.y = (App.SCR_H * 0.5); _sponsorSmall.buttonMode = true; addChild(_sponsorSmall); _sponsorSmall.addEventListener(MouseEvent.CLICK, logoClickHandler); } private function makeSponsorLogo():void{ _sponsorLogo = new AndkonLogo(); _sponsorLogo.x = (SCR_W * 0.5); _sponsorLogo.y = (SCR_H * 0.5); _sponsorLogo.alpha = 0; _sponsorLogo.buttonMode = true; addChild(_sponsorLogo); _sponsorLogo.addEventListener(Event.ENTER_FRAME, logoHandler); _sponsorLogo.addEventListener(MouseEvent.CLICK, logoClickHandler); } private function logoHandler(_arg1:Event):void{ _sponsorLogo.alpha = ((_interval)>0) ? (_sponsorLogo.alpha + 0.2) : (_sponsorLogo.alpha - 0.2); if (_sponsorLogo.alpha >= 1){ _sponsorLogo.alpha = 1; _interval--; } else { if (_sponsorLogo.alpha < 0){ removeChild(_sponsorLogo); _sponsorLogo.removeEventListener(Event.ENTER_FRAME, logoHandler); _sponsorLogo = null; _game = new Game(this); addChild(_game); removeChild(_bg); _bg = null; }; }; } private function cacheHandler(_arg1:Event):void{ if (_loadingBar != null){ _loadingBar.progress(_cacheIndex); }; animCache.cacheAnimation(_cacheList[_cacheIndex]); _cacheIndex++; if (_cacheIndex >= _cacheList.length){ _loadingBar.destroy(); _loadingBar = null; _sponsorSmall.removeEventListener(MouseEvent.CLICK, logoClickHandler); removeChild(_sponsorSmall); _sponsorSmall = null; removeEventListener(Event.ENTER_FRAME, cacheHandler); makeSponsorLogo(); }; } private function logoClickHandler(_arg1:MouseEvent):void{ gotoSponsorSite(); } public static function gotoSponsorSite():void{ var url = "http://www.andkon.com/arcade/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } } }//package com.miningtruck
Section 108
//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 109
//Game (com.miningtruck.Game) package com.miningtruck { import flash.display.*; import flash.events.*; import mochi.as3.*; import com.miningtruck.levels.*; import com.antkarlov.utils.*; import flash.net.*; 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 _btnFreeGames:Button; private var _arrows:MovieClip; private var _btnMenu:ButtonMenu; private var _levelNum:int;// = 1 private var _bg:Sprite; private var _pause:int; private var _musicChannel:SoundChannel; private var _logoBox2d:Andkon; 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 _andkon:Andkon; private var _icoCargo:IcoCargo; private var _logoGame:Sprite; private var _scoreLevel:Label; private var _btnRestart:ButtonRestart; private var _icoTime:IcoTime; private var _levelProgress:level_progress; private var _isMusic:Boolean;// = false public var offMusic:Boolean;// = false private var _loading:Label; private static const TOTAL_LEVELS:int = 8; public function Game(_arg1:App){ _app = _arg1; var _local2:SharedObject = SharedObject.getLocal("MiningTruck"); _levelCompleted = int(_local2.data.completeLevels); trace("completed levels:", _levelCompleted); _gameWorld = new World(_arg1); addChild(_gameWorld); _icoTime = new IcoTime(); _icoTime.x = 10; _icoTime.y = 10; addChild(_icoTime); _icoCargo = new IcoCargo(); _icoCargo.x = (App.SCR_W - 10); _icoCargo.y = 10; addChild(_icoCargo); _scores = new Scores(); _scores.x = (App.SCR_W * 0.5); _scores.y = 10; addChild(_scores); _btnMusic = new ButtonMusic(); _btnMusic.x = 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 level_progress(); _levelProgress.x = 140; _levelProgress.y = (App.SCR_H - 18); _levelProgress.maxValue = 9030; _levelProgress.offset = 570; addChild(_levelProgress); _andkon = new Andkon(); _andkon.x = 10; _andkon.y = (App.SCR_H - 30); addChild(_andkon); _gameWorld.addEventListener(World.UPDATE_TIME, updateTimeHandler); _gameWorld.addEventListener(World.UPDATE_CARGO, updateCargoHandler); _gameWorld.addEventListener(World.UPDATE_SCORE, updateScoreHandler); _gameWorld.addEventListener(World.UPDATE_PROGRESS, updateProgressHandler); _gameWorld.addEventListener(World.SHOW_HINT, showHintHandler); music(); _bg = new background(); addChild(_bg); makeMainMenu(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function saveLevelCompleted(_arg1:int):void{ var _local2:SharedObject; if (_levelCompleted < _arg1){ _local2 = SharedObject.getLocal("MiningTruck"); _local2.data.completeLevels = _arg1.toString(); _local2.flush(); _levelCompleted = _arg1; }; } private function makeLevelFailed():void{ _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); addChild(_bg); _pause = 30; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_LEVEL_FAILED; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_GRAY); _scoreLevel.caption = ((App.TXT_LEVEL_FAILED_MSG1 + _gameWorld.totalCargo.toString()) + App.TXT_LEVEL_FAILED_MSG2); _scoreLevel.textWidth = 640; _scoreTotal = new Label((App.SCR_W * 0.5), 108, Label.LABEL_GRAY); _scoreTotal.caption = App.TXT_LEVEL_FAILED_MSG3; _scoreTotal.textWidth = 640; _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_MORE_GAMES); _btnFreeGames.caption = App.TXT_FREE_GAMES; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_LEVEL_RESTART; addChild(_btnNextLevel); _hint = new Label((App.SCR_W * 0.5), 350, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 408; action(ACT_GAME_TO_LEVELFAILED); } 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(0x0101, 10); _btnScores.show(307, 15); setMainMenuHandlers(); action(ACT_NONE); }; break; case ACT_HIDE_MAINMENU: _logoGame.alpha = (_logoGame.alpha - 0.1); _logoBox2d.alpha = _logoGame.alpha; _credits.alpha = _logoGame.alpha; if (_logoGame.alpha <= 0){ action(ACT_NONE); destroyMainMenu(); makeSelectLevel(); }; break; case ACT_SHOW_SELECTLEVEL: _btnLevel1.alpha = (_btnLevel1.alpha + 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha >= 1){ setSelectLevelHandlers(); action(ACT_NONE); }; break; case ACT_SELECTLEVEL_TO_MAINMENU: _btnLevel1.alpha = (_btnLevel1.alpha - 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha <= 0){ action(ACT_NONE); destroySelectLevel(); makeMainMenu(); }; break; case ACT_SELECTLEVEL_TO_LOADING: _btnLevel1.alpha = (_btnLevel1.alpha - 0.1); _btnLevel2.alpha = _btnLevel1.alpha; _btnLevel3.alpha = _btnLevel1.alpha; _btnLevel4.alpha = _btnLevel1.alpha; _btnLevel5.alpha = _btnLevel1.alpha; _btnLevel6.alpha = _btnLevel1.alpha; _btnLevel7.alpha = _btnLevel1.alpha; _btnLevel8.alpha = _btnLevel1.alpha; _arrows.alpha = _btnLevel1.alpha; if (_btnLevel1.alpha <= 0){ action(ACT_NONE); destroySelectLevel(); makeLoadLevel(); }; break; case ACT_LOADLEVEL: _loadPause--; if (_loadPause <= 0){ _gameWorld.offMotor(); _loadPause = 20; action(ACT_NONE); loadLevel(_levelNum); }; break; case ACT_LOADLEVEL_TO_GAME: _bg.y = (_bg.y + 20); if (_bg.y >= (App.SCR_H + 60)){ if (!offMusic){ offMusic = true; music(); offMusic = false; music(); }; action(ACT_NONE); destroyLoadLevel(); }; break; case ACT_GAME_TO_LOADLEVEL: _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _bg.y = 0; if (_restartHint.visible){ _restartHint.visible = false; removeChild(_restartHint); }; action(ACT_NONE); makeLoadLevel(); }; break; case ACT_GAME_TO_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); _btnFreeGames.show(216, 15); _btnSelectLevel.show(268, 20); _btnNextLevel.show(320, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELCOMPLETE; setLevelCompleteHandlers(); }; } else { _pause--; }; break; case ACT_GAME_TO_LEVELFAILED: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(138, 10); _btnFreeGames.show(216, 15); _btnSelectLevel.show(268, 20); _btnNextLevel.show(320, 25); addChild(_hint); _hint.show(360, 28); _curScreen = SCREEN_LEVELFAILED; setLevelFailedHandlers(); }; } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_SELECTLEVEL: if (_pause <= 0){ action(ACT_NONE); destroyLevelComplete(); makeSelectLevel(); } else { _pause--; }; break; case ACT_LEVELCOMPLETE_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelComplete(); makeLoadLevel(); } else { _pause--; }; break; case ACT_LEVELFAILED_TO_LOADLEVEL: if (_pause <= 0){ destroyLevelFailed(); makeLoadLevel(); } else { _pause--; }; break; case ACT_GAME_TO_CONGRATULATIONS: if (_pause <= 0){ _bg.y = (_bg.y - 20); if (_bg.y <= 0){ _gameWorld.offMotor(); _bg.y = 0; action(ACT_NONE); addChild(_title); _title.show(50, 0); addChild(_scoreLevel); _scoreLevel.show(105, 5); addChild(_scoreTotal); _scoreTotal.show(148, 10); addChild(_hint); _hint.show(188, 15); _btnSelectLevel.show(268, 25); _btnNextLevel.show(320, 30); setCongratHandlers(); }; } else { _pause--; }; break; case ACT_ONGRATULATIONS_TO_MAINMENU: if (_pause <= 0){ action(ACT_NONE); destroyCongrat(); makeMainMenu(); } else { _pause--; }; break; }; } private function toSelectLevelHandler(_arg1:Event):void{ removeLevelCompleteHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; _gameWorld.score = 0; action(ACT_LEVELCOMPLETE_TO_SELECTLEVEL); } private function fpsHandler(_arg1:Event):void{ if (_fps["tf"] != null){ (_fps["tf"] as TextField).text = ((App.APP_VER + "\nfps: ") + _fpsCounter.fps.toString()); }; } public function music():void{ var _local1:Sound; var _local2:*; if (offMusic){ if (_isMusic){ _isMusic = false; _musicChannel.stop(); _musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); }; return; }; if (!_isMusic){ _local2 = new SoundTransform(); _local2.volume = 1; if (_lvlMusic == -1){ _curMusic = int((Math.random() * 2)); _lvlMusic = 0; } else { if (_lvlMusic != _levelNum){ if (_curMusic == 0){ _curMusic = 1; } else { _curMusic = 0; }; _lvlMusic = _levelNum; }; }; switch (_curMusic){ case 0: _local1 = new music_track1(); break; case 1: _local1 = new music_track2(); break; }; if (_local1 != null){ _musicChannel = _local1.play(); _musicChannel.soundTransform = _local2; _musicChannel.addEventListener(Event.SOUND_COMPLETE, musicCompleteHandler); _isMusic = true; }; }; } public function action(_arg1:int):void{ _action = _arg1; } private function loadLevel(_arg1:int):void{ if (_level){ _level.resetUnloadTimer(); _level.destroy(); _level = null; }; _gameWorld.clear(); _gameWorld.init(); _icoLevel.update(((App.TXT_LEVEL + " ") + _arg1.toString())); switch (_arg1){ case 1: _level = new Level1(_gameWorld); break; case 2: _level = new Level2(_gameWorld); break; case 3: _level = new Level3(_gameWorld); break; case 4: _level = new Level4(_gameWorld); break; case 5: _level = new Level5(_gameWorld); break; case 6: _level = new Level6(_gameWorld); break; case 7: _level = new Level7(_gameWorld); break; case 8: _level = new Level8(_gameWorld); break; }; _gameWorld.start(_level); _loading.hide(); stage.focus = null; action(ACT_LOADLEVEL_TO_GAME); } private function removeLevelCompleteHandlers():void{ _btnFreeGames.removeEventListener(MouseEvent.MOUSE_UP, freeGamesHandler); _btnSelectLevel.removeEventListener(MouseEvent.MOUSE_UP, toSelectLevelHandler); _btnNextLevel.removeEventListener(MouseEvent.MOUSE_UP, nextLevelHandler); } 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 url = "http://www.andkon.com/arcade/"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } private function nextLevel():void{ removeLevelCompleteHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _btnFreeGames.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _hint.hide(10); _pause = 20; action(ACT_LEVELCOMPLETE_TO_LOADLEVEL); } private function backHandler(_arg1:Event):void{ removeSelectLevelHandlers(); _btnBack.hide(0); _title.hide(0); action(ACT_SELECTLEVEL_TO_MAINMENU); } private function restartClickHandler(_arg1:Event):void{ if (_level.isUnload){ return; }; if (_gameWorld.enableControls){ addChild(_bg); action(ACT_GAME_TO_LOADLEVEL); }; } private function updateProgressHandler(_arg1:Event):void{ _levelProgress.progress(_gameWorld.progress); } private function destroyLevelFailed():void{ _curScreen = SCREEN_OTHER; removeChild(_title); _title.destroy(); _title = null; removeChild(_scoreLevel); _scoreLevel.destroy(); _scoreLevel = null; removeChild(_scoreTotal); _scoreTotal.destroy(); _scoreTotal = null; removeChild(_btnFreeGames); _btnFreeGames.destroy(); _btnFreeGames = null; removeChild(_btnSelectLevel); _btnSelectLevel.destroy(); _btnSelectLevel = null; removeChild(_btnNextLevel); _btnNextLevel.destroy(); _btnNextLevel = null; removeChild(_hint); _hint.destroy(); _hint = null; } private function submitScoreHandler(_arg1:MouseEvent):void{ var e = _arg1; removeCongratHandlers(); var o:Object = {n:[15, 0, 2, 14, 8, 14, 0, 13, 10, 3, 2, 5, 11, 3, 15, 13], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; var boardID:String = o.f(0, ""); MochiScores.showLeaderboard({res:"640x400", onClose:onSubmit, boardID:boardID, score:_gameWorld.score}); } 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 Andkon(); _logoBox2d.x = 10; _logoBox2d.y = (App.SCR_H - 10); addChild(_logoBox2d); _btnPlay = new Button(_gameWorld, (App.SCR_W * 0.5), 180, Button.BTN_PLAY); _btnPlay.caption = App.TXT_PLAY; addChild(_btnPlay); _btnMoreGames = new Button(_gameWorld, (App.SCR_W * 0.5), 237, Button.BTN_MORE_GAMES); _btnMoreGames.caption = App.TXT_MORE_GAMES; addChild(_btnMoreGames); _btnScores = new Button(_gameWorld, (App.SCR_W * 0.5), 287, Button.BTN_SCORES); _btnScores.caption = App.TXT_SCORES; addChild(_btnScores); _credits = new label_credits(); _credits.x = (App.SCR_W * 0.5); _credits.y = (App.SCR_H - 40); _credits.alpha = 0; addChild(_credits); _logoGame.alpha = 0; _logoBox2d.alpha = 0; action(ACT_SHOW_MAINMENU); } private function 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); addChild(_bg); _pause = 30; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_CONGRATULATIONS; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_PURPLE); _scoreLevel.caption = App.TXT_ALL_LEVELS_COMPLETE; _scoreLevel.textWidth = 640; _scoreTotal = new Label((App.SCR_W * 0.5), 118, Label.LABEL_GRAY); _scoreTotal.caption = App.TXT_YOUR_SCORE; _scoreTotal.textWidth = 640; _hint = new Label((App.SCR_W * 0.5), 158, Label.LABEL_GRAY_BIG); _hint.caption = _gameWorld.score.toString(); _hint.textWidth = 500; _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_MAIN_MENU; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_SUBMIT; addChild(_btnNextLevel); action(ACT_GAME_TO_CONGRATULATIONS); } private function makeSelectLevel():void{ var _local1:Boolean; _title = new Label((App.SCR_W * 0.5), 30, Label.LABEL_GRAY); _title.caption = App.TXT_SELECT_LEVEL; _title.textWidth = 290; addChild(_title); _title.show(50, 0); _arrows = new arrows(); _arrows.x = 72; _arrows.y = 91; _arrows.alpha = 0; addChild(_arrows); _btnLevel1 = new ButtonLevel(_gameWorld); _btnLevel1.x = 87; _btnLevel1.y = 104; _btnLevel1.caption = (App.TXT_LEVEL + " 1"); _btnLevel1.tag = 1; addChild(_btnLevel1); _local1 = ((_levelCompleted)>=2) ? false : true; _btnLevel2 = new ButtonLevel(_gameWorld, 2, _local1); _btnLevel2.x = 162; _btnLevel2.y = 157; _btnLevel2.caption = (App.TXT_LEVEL + " 2"); _btnLevel2.tag = 2; addChild(_btnLevel2); _local1 = ((_levelCompleted)>=3) ? false : true; _btnLevel3 = new ButtonLevel(_gameWorld, 2, _local1); _btnLevel3.x = 77; _btnLevel3.y = 243; _btnLevel3.caption = (App.TXT_LEVEL + " 3"); _btnLevel3.tag = 3; addChild(_btnLevel3); _local1 = ((_levelCompleted)>=4) ? false : true; _btnLevel4 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel4.x = 210; _btnLevel4.y = 240; _btnLevel4.caption = (App.TXT_LEVEL + " 4"); _btnLevel4.tag = 4; addChild(_btnLevel4); _local1 = ((_levelCompleted)>=5) ? false : true; _btnLevel5 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel5.x = 291; _btnLevel5.y = 326; _btnLevel5.caption = (App.TXT_LEVEL + " 5"); _btnLevel5.tag = 5; addChild(_btnLevel5); _local1 = ((_levelCompleted)>=6) ? false : true; _btnLevel6 = new ButtonLevel(_gameWorld, 3, _local1); _btnLevel6.x = 378; _btnLevel6.y = 241; _btnLevel6.caption = (App.TXT_LEVEL + " 6"); _btnLevel6.tag = 6; addChild(_btnLevel6); _local1 = ((_levelCompleted)>=7) ? false : true; _btnLevel7 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel7.x = 494; _btnLevel7.y = 172; _btnLevel7.caption = (App.TXT_LEVEL + " 7"); _btnLevel7.tag = 7; addChild(_btnLevel7); _local1 = ((_levelCompleted)>=8) ? false : true; _btnLevel8 = new ButtonLevel(_gameWorld, 4, _local1); _btnLevel8.x = 552; _btnLevel8.y = 297; _btnLevel8.caption = (App.TXT_LEVEL + " 8"); _btnLevel8.tag = 8; addChild(_btnLevel8); _btnBack = new Button(_gameWorld, 130, 300, Button.BTN_BACK); _btnBack.caption = App.TXT_BACK; _btnBack.show(320, 10); addChild(_btnBack); action(ACT_SHOW_SELECTLEVEL); } private function 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{ gotoMoreGames(); } 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); trace("loadLevel destroyed"); } private function playHandler(_arg1:Event):void{ MochiBot.track(this, "8c69c429"); removeMainMenuHandlers(); _btnPlay.hide(0); _btnMoreGames.hide(2); _btnScores.hide(4); action(ACT_HIDE_MAINMENU); } public function showScores():void{ var o:Object = {n:[15, 0, 2, 14, 8, 14, 0, 13, 10, 3, 2, 5, 11, 3, 15, 13], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; var boardID:String = o.f(0, ""); MochiScores.showLeaderboard({res:"640x400", onClose:setMainMenuHandlers, boardID:boardID}); } private function mainMenuHandler(_arg1:MouseEvent):void{ removeCongratHandlers(); _title.hide(0); _scoreLevel.hide(2); _scoreTotal.hide(4); _hint.hide(6); _btnSelectLevel.hide(8); _btnNextLevel.hide(10); _pause = 20; action(ACT_ONGRATULATIONS_TO_MAINMENU); } private function destroySelectLevel():void{ removeChild(_title); _title.destroy(); _title = null; removeChild(_arrows); _arrows = null; _btnLevel1.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel1); _btnLevel1.destroy(); _btnLevel1 = null; _btnLevel2.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel2); _btnLevel2.destroy(); _btnLevel2 = null; _btnLevel3.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel3); _btnLevel3.destroy(); _btnLevel3 = null; _btnLevel4.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel4); _btnLevel4.destroy(); _btnLevel4 = null; _btnLevel5.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel5); _btnLevel5.destroy(); _btnLevel5 = null; _btnLevel6.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel6); _btnLevel6.destroy(); _btnLevel6 = null; _btnLevel7.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel7); _btnLevel7.destroy(); _btnLevel7 = null; _btnLevel8.removeEventListener(ButtonLevel.LEVEL_SELECT, selectLevelHandler); removeChild(_btnLevel8); _btnLevel8.destroy(); _btnLevel8 = null; _btnBack.removeEventListener(MouseEvent.MOUSE_UP, backHandler); removeChild(_btnBack); _btnBack.destroy(); _btnBack = null; trace("selectLevel destroyed"); } private function makeLevelComplete():void{ _levelNum++; if (_levelNum > TOTAL_LEVELS){ _levelNum = TOTAL_LEVELS; }; saveLevelCompleted(_levelNum); _gameWorld.removeEventListener(World.LEVEL_COMPLETE, levelCompleteHandler); _gameWorld.removeEventListener(World.LEVEL_FAILED, levelFailedHandler); _gameWorld.removeEventListener(World.LEVEL_RESTART, levelRestartHandler); addChild(_bg); _pause = 80; _title = new Label((App.SCR_W * 0.5), 25, Label.LABEL_GRAY_BIG); _title.caption = App.TXT_LEVEL_COMPLETED; _title.textWidth = 500; _scoreLevel = new Label((App.SCR_W * 0.5), 85, Label.LABEL_PURPLE); _scoreLevel.caption = (App.TXT_LEVEL_SCORE + _gameWorld.scoreLevel.toString()); _scoreLevel.textWidth = 408; _scoreTotal = new Label((App.SCR_W * 0.5), 108, Label.LABEL_PURPLE_SMALL); _scoreTotal.caption = (App.TXT_TOTAL_SCORE + _gameWorld.score.toString()); _scoreTotal.textWidth = 408; _btnFreeGames = new Button(_gameWorld, (App.SCR_W * 0.5), 196, Button.BTN_MORE_GAMES); _btnFreeGames.caption = App.TXT_FREE_GAMES; addChild(_btnFreeGames); _btnSelectLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 248, Button.BTN_SELECT_LEVEL); _btnSelectLevel.caption = App.TXT_SELECT_LEVEL_BTN; addChild(_btnSelectLevel); _btnNextLevel = new Button(_gameWorld, (App.SCR_W * 0.5), 300, Button.BTN_NEXT_LEVEL); _btnNextLevel.caption = App.TXT_NEXT_LEVEL; addChild(_btnNextLevel); _hint = new Label((App.SCR_W * 0.5), 350, Label.LABEL_BROWN); _hint.caption = App.TXT_PRESS_SPACE; _hint.textWidth = 408; action(ACT_GAME_TO_LEVELCOMPLETE); } private function 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)); } 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 110
//Preloader (com.miningtruck.Preloader) package com.miningtruck { import flash.display.*; import flash.events.*; import mochi.as3.*; import com.miningtruck.ui.*; public dynamic class Preloader extends MovieClip { private var _sponsorLogo:Sprite; private var _background:Sprite; private var _loadingBar:Loading; public static const ENTRY_FRAME:int = 3; public static const DOCUMENT_CLASS:String = "com.miningtruck.App"; public function Preloader(){ stop(); if (isUrl(["", "andkon.com"])){ loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); _background = new background(); addChild(_background); _loadingBar = new Loading(10); _loadingBar.x = ((640 / 2) - (_loadingBar.width / 2)); _loadingBar.y = ((400 * 0.5) + 50); addChild(_loadingBar); _sponsorLogo = new AndkonPreloader(); _sponsorLogo.x = (App.SCR_W * 0.5); _sponsorLogo.y = (App.SCR_H * 0.5); _sponsorLogo.buttonMode = true; addChild(_sponsorLogo); _sponsorLogo.addEventListener(MouseEvent.CLICK, logoClickHandler); MochiServices.connect("5157628d9012bc5e", root); }; } 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 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{ play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.removeEventListener(Event.COMPLETE, completeHandler); _loadingBar.destroy(); _loadingBar = null; removeChild(_background); _background = null; removeChild(_sponsorLogo); _sponsorLogo.removeEventListener(MouseEvent.CLICK, logoClickHandler); _sponsorLogo = null; } private function logoClickHandler(_arg1:MouseEvent):void{ App.gotoSponsorSite(); } private function enterFrameHandler(_arg1:Event):void{ if (currentFrame >= ENTRY_FRAME){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); stop(); init(); }; } private function progressHandler(_arg1:ProgressEvent):void{ var _local2:uint = _arg1.bytesLoaded; var _local3:uint = _arg1.bytesTotal; _loadingBar.progress(int(((_local2 / _local3) * 10))); } } }//package com.miningtruck
Section 111
//World (com.miningtruck.World) package com.miningtruck { import flash.display.*; import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import com.touchmypixel.peepee.utils.*; import flash.utils.*; import com.miningtruck.objects.*; import flash.geom.*; import com.miningtruck.levels.*; import flash.media.*; public class World extends Sprite { private var _sndDrive:Boolean;// = false private var _fireInterval:int;// = 0 public var app:App; private var _truckBody:Truck; private var _layerDebug:Sprite; private var _layerMain:Sprite; 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 _layerFront:Sprite; private var _isHint:Boolean;// = false public static const SND_TUBE:int = 4; public static const UPDATE_TIME:String = "updateTime"; public static const SND_BIBI:int = 2; public static const TIME_STEP:Number = 0.0166666666666667; public static const SND_CRACKBOX:int = 5; public static const SHOW_HINT:String = "showHint"; public static const SND_BUTTON:int = 6; public static const UPDATE_SCORE:String = "updateScore"; public static const LEVEL_RESTART:String = "levelRestart"; public static const SND_EXPLOSION:int = 8; public static const SND_BONUS:int = 10; public static const SND_ADDSCORE:int = 9; public static const SND_MOTOR:int = 0; public static const UPDATE_PROGRESS:String = "updateProgress"; public static const UPDATE_CARGO:String = "updateCargo"; public static const SND_SCORE:int = 7; public static const DRAW_SCALE:Number = 30; public static const LEVEL_COMPLETE:String = "levelComplete"; public static const ITERATIONS:int = 15; public static const SND_DRIVE:int = 1; public static const SND_BOX_CRASH:int = 3; public static const LEVEL_FAILED:String = "levelFailed"; public function World(_arg1:App){ app = _arg1; _effectList = new Array(); _layerBg = new Sprite(); _layerBack = new Sprite(); _layerMain = new Sprite(); _layerFront = new Sprite(); addChild(_layerBg); addChild(_layerBack); addChild(_layerMain); addChild(_layerFront); _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, timeHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true); _transDrive = new SoundTransform(); } public function 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)))){ dispatchEvent(new Event(LEVEL_RESTART)); _enableControls = false; return; }; if (((app.input.isDown(88)) && (!(_truckIsCrashed)))){ _truckBody.crash(true); return; }; var _local2:int; while (_local2 < _effectList.length) { (_effectList[_local2] as EffectBase).progress(); _local2++; }; if (!_truckIsCrashed){ if ((worldTime - _progressInt) > 5){ progress = int(_truckBody.x); dispatchEvent(new Event(UPDATE_PROGRESS)); _progressInt = worldTime; }; if (((!(_sndBibi)) && (app.input.isDown(13)))){ sound(SND_BIBI); _sndBibi = true; }; if (((!(_sndDrive)) && (((app.input.isDown(40)) || (app.input.isDown(38)))))){ sound(SND_DRIVE); _sndDrive = true; } else { if (((((_sndDrive) && (((app.input.isDown(40)) || (app.input.isDown(38)))))) && ((_transDrive.volume < 1)))){ _transDrive.volume = (_transDrive.volume + 0.1); _scDrive.soundTransform = _transDrive; } else { if (((((_sndDrive) && (!(app.input.isDown(40))))) && (!(app.input.isDown(38))))){ if (_scDrive){ _transDrive.volume = (_transDrive.volume - 0.025); _scDrive.soundTransform = _transDrive; if (_transDrive.volume <= 0){ _scDrive.stop(); _scDrive.removeEventListener(Event.COMPLETE, driveCompleteHandler); _transDrive.volume = 0.9; _sndDrive = false; }; }; }; }; }; _motor1.SetMotorSpeed(((15 * Math.PI) * (app.input.isDown(40)) ? -1 : (app.input.isDown(38)) ? 1 : 0)); _motor1.SetMaxMotorTorque((((app.input.isDown(40)) || (app.input.isDown(38)))) ? 25 : 1); if (_motor2){ _motor2.SetMotorSpeed(((15 * Math.PI) * (app.input.isDown(40)) ? -1 : (app.input.isDown(38)) ? 1 : 0)); _motor2.SetMaxMotorTorque((((app.input.isDown(40)) || (app.input.isDown(38)))) ? 25 : 1); }; _spring1.SetMaxMotorForce((40 + Math.abs((800 * Math.pow(_spring1.GetJointTranslation(), 2))))); _spring1.SetMotorSpeed(((_spring1.GetMotorSpeed() - (10 * _spring1.GetJointTranslation())) * 0.4)); _spring2.SetMaxMotorForce((40 + Math.abs((800 * Math.pow(_spring2.GetJointTranslation(), 2))))); _spring2.SetMotorSpeed((-4 * Math.pow(_spring2.GetJointTranslation(), 1))); if ((((((_truck.GetLinearVelocity().x > 0)) && (app.input.isDown(40)))) || ((((_truck.GetLinearVelocity().x < 0)) && (app.input.isDown(38)))))){ _truckBody.frame = 2; } else { if ((((_truck.GetLinearVelocity().x < 0)) && (app.input.isDown(40)))){ _truckBody.frame = 3; } else { _truckBody.frame = 1; }; }; } else { if ((worldTime - _fireInterval) > 2){ _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 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("world clear"); } public function unloadComplete():void{ var _local1:EffectScore; var _local2:int; _level.offUnload(); _timer.stop(); trace("cargo count:", _cargo); if (_cargo <= 0){ trace("level complete!"); _local2 = (_time * 3); addScore(_local2); _local1 = new EffectScore(this); _local1.lifeTime = 60; _local1.caption = (((("Time " + _time.toString()) + " x 3 = ") + _local2.toString()) + " bonus!"); _local1.x = (Math.abs(x) + (App.SCR_W * 0.5)); _local1.y = (Math.abs(y) + (App.SCR_H * 0.5)); sound(SND_BONUS); dispatchEvent(new Event(LEVEL_COMPLETE)); } else { trace("need more cargo"); dispatchEvent(new Event(LEVEL_FAILED)); }; } public function get enableControls():Boolean{ return (_enableControls); } public function start(_arg1:LevelBase):void{ _level = _arg1; _timer.start(); _enableControls = true; sound(SND_MOTOR); } public function removeMain(_arg1):void{ _layerMain.removeChild(_arg1); } public function addScore(_arg1:int):void{ _score = (_score + _arg1); _scoreLevel = (_scoreLevel + _arg1); sound(SND_ADDSCORE); dispatchEvent(new Event(UPDATE_SCORE)); } public function 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 unloadFail():void{ trace("unload fail"); var _local1:EffectScore = new EffectScore(this); _local1.lifeTime = 60; _local1.caption = App.TXT_WHERE_CARGO; _local1.x = (Math.abs(x) + (App.SCR_W * 0.5)); _local1.y = (Math.abs(y) + (App.SCR_H * 0.5)); dispatchEvent(new Event(LEVEL_FAILED)); } public function set offSound(_arg1:Boolean):void{ _offSound = _arg1; sound(SND_MOTOR); } private function timeHandler(_arg1:Event):void{ _time--; dispatchEvent(new Event(UPDATE_TIME)); if (_time <= 0){ _timer.stop(); }; } public function get time():int{ return (_time); } private function scroll():void{ var _local3:Number; var _local1:Number = ((x - (((-(DRAW_SCALE) * _truck.GetWorldCenter().x) + (App.SCR_W / 2)) - (_truck.GetLinearVelocity().x * 10))) / 4); var _local2:Number = ((y - (((-(DRAW_SCALE) * _truck.GetWorldCenter().y) + ((2 * App.SCR_H) / 4)) - (_truck.GetLinearVelocity().y * 6))) / 3); x = (x - _local1); _layerBg.x = (_layerBg.x + _local1); _layerBg.x = (_layerBg.x + ((((_local1 > 0.5)) || ((_local1 < -0.5)))) ? (_local1 * -0.1) : 0); if ((y - _local2) < -230){ y = -230; } else { y = (y - _local2); _local3 = (_local2 * 0.5); if ((_layerBg.y + _local3) > 190){ _layerBg.y = 190; } else { _layerBg.y = (_layerBg.y + _local3); }; }; _level.updatePosition(x, y); updateBackground(_layerBg.x, _layerBg.y); } public function updateBackground(_arg1:Number, _arg2:Number):void{ var _local3:Bitmap; var _local4:int; while (_local4 < _bgList.length) { _local3 = _bgList[_local4].bitmap; if (((((((_local3.x + _local3.width) < Math.abs((x + _layerBg.x)))) || ((_local3.x > (Math.abs((x + _layerBg.x)) + App.SCR_W))))) && (_bgList[_local4].visible))){ _layerBg.removeChild(_local3); _bgList[_local4].visible = false; } else { if (((((((_local3.x + _local3.width) > Math.abs((x + _layerBg.x)))) && ((_local3.x < (Math.abs((x + _layerBg.x)) + App.SCR_W))))) && (!(_bgList[_local4].visible)))){ _layerBg.addChild(_local3); _bgList[_local4].visible = true; }; }; _local4++; }; } public function get totalCargo():int{ return (_totalCargo); } private function driveCompleteHandler(_arg1:Event):void{ sound(SND_DRIVE); } public function addMain(_arg1):void{ _layerMain.addChild(_arg1); } } }//package com.miningtruck
Section 112
//ProcessEvent (com.touchmypixel.events.ProcessEvent) package com.touchmypixel.events { import flash.events.*; public class ProcessEvent extends Event { public var percentage:Number;// = 0 public static const START = "Process.Start"; public static const COMPLETE = "Process.Complete"; public static const PROGRESS = "Process.Progress"; public function ProcessEvent(_arg1:String, _arg2:Number=0, _arg3:Boolean=false, _arg4:Boolean=false){ this.percentage = _arg2; if (_arg1 == COMPLETE){ this.percentage = 1; }; super(_arg1, _arg3, _arg4); } } }//package com.touchmypixel.events
Section 113
//Animation (com.touchmypixel.peepee.utils.Animation) package com.touchmypixel.peepee.utils { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import com.bit101.display.*; public class Animation extends Sprite { private var _cache:Boolean;// = true public var useSpriteSheet:Boolean;// = false public var treatAsLoopedGraphic:Boolean;// = false private var clipData:MovieClip; public var repeat:Boolean;// = true public var frames:Array; public var bitmap:Bitmap; public var speed:Number;// = 1 private var _totalFrames; private var _smooth:Boolean;// = false public var bigBitmap:BigAssCanvas; public var clip:MovieClip; public var rows:Number;// = 0 public var reverse:Boolean;// = false private var _playing:Boolean;// = false public var r:Rectangle; public var cols:Number;// = 0 public var currentFrame:Number;// = 1 public var onEnd:Function; public function Animation(){ frames = []; super(); bitmap = new Bitmap(); bitmap.smoothing = false; addChild(bitmap); } public function set bitmapData(_arg1:BitmapData){ bitmap.bitmapData = _arg1; } public function stop():void{ _playing = false; removeEventListener(Event.ENTER_FRAME, enterFrame); } public function buildCacheFromClip2(_arg1:MovieClip):void{ var _local3:*; var _local4:*; var _local5:*; var _local6:Matrix; clip = _arg1; if (clip["e_bounds"] != null){ _local3 = clip["e_bounds"]; r = new Rectangle(_local3.x, _local3.y, _local3.width, _local3.height); clip["e_bounds"].visible = false; } else { r = clip.getRect(clip); }; cols = Math.floor((2880 / r.width)); rows = Math.ceil((clip.totalFrames / cols)); bigBitmap = new BigAssCanvas(Math.ceil((cols * clip.width)), Math.ceil((rows * clip.height)), true); var _local2:* = 0; while (_local2 <= (clip.totalFrames - 1)) { clip.gotoAndStop((_local2 + 1)); makeAllChildrenGoToFrame(clip, (_local2 + 1)); _local4 = ((_local2 % cols) * r.width); _local5 = (Math.floor((_local2 / cols)) * r.height); _local6 = new Matrix(); _local6.translate(-(r.x), -(r.y)); _local6.scale(clip.scaleX, clip.scaleY); _local6.translate(_local4, _local5); bigBitmap.draw(clip, _local6, null, null); _local2++; }; _totalFrames = clip.totalFrames; } public function gotoAndPlayRandomFrame():void{ gotoAndPlay(Math.ceil((Math.random() * totalFrames))); } public function get totalFrames():Number{ return (clip.totalFrames); } public function destroy(){ stop(); if (parent){ parent.removeChild(this); }; } public function gotoAndStop(_arg1:Number):void{ if (treatAsLoopedGraphic){ if (_arg1 > totalFrames){ _arg1 = (_arg1 % totalFrames); }; }; currentFrame = _arg1; goto(currentFrame); stop(); } public function get playing():Boolean{ return (_playing); } public function play():void{ _playing = true; addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true); } public function nextFrame(_arg1:Boolean=false):void{ if (_arg1){ currentFrame = (currentFrame + speed); } else { currentFrame++; }; if (currentFrame > totalFrames){ currentFrame = 1; }; goto(Math.floor(currentFrame)); } public function gotoAndPlay(_arg1:Number):void{ currentFrame = _arg1; goto(currentFrame); play(); } public function update():void{ stop(); frames = []; buildCacheFromClip(clip); } private function makeAllChildrenGoToFrame(_arg1:MovieClip, _arg2:int):void{ var _local4:*; var _local3:int; while (_local3 < _arg1.numChildren) { _local4 = _arg1.getChildAt(_local3); if ((_local4 is MovieClip)){ makeAllChildrenGoToFrame(_local4, _arg2); _local4.gotoAndStop(_arg2); }; _local3++; }; } public function buildCacheFromLibrary(_arg1:String):void{ if (useSpriteSheet){ buildCacheFromClip2(new (getDefinitionByName(_arg1))); } else { buildCacheFromClip(new (getDefinitionByName(_arg1))); }; } private function goto(_arg1:Number):void{ var _local2:*; var _local3:Rectangle; var _local4:Rectangle; if (!_cache){ if (!clipData){ _local2 = getQualifiedClassName(clip); clipData = new (getDefinitionByName(_local2)); _local3 = clipData.getRect(clipData); clipData.x = _local3.x; clipData.y = _local3.y; addChild(clipData); }; clipData.gotoAndStop(_arg1); } else { if (useSpriteSheet){ _local4 = r.clone(); _local4.x = (((currentFrame - 1) % cols) * r.width); _local4.y = (Math.floor(((currentFrame - 1) / cols)) * r.height); if (bitmapData){ bitmapData.dispose(); }; bitmapData = bigBitmap.copyPixelsOut(_local4); bitmap.bitmapData = bitmapData; bitmap.smoothing = _smooth; } else { bitmap.bitmapData = frames[(currentFrame - 1)]; bitmap.smoothing = _smooth; }; }; } public function buildCacheFromClip(_arg1:MovieClip):void{ var _local3:*; var _local4:BitmapData; var _local5:Matrix; clip = _arg1; if (clip["e_bounds"] != null){ _local3 = clip["e_bounds"]; r = new Rectangle(_local3.x, _local3.y, _local3.width, _local3.height); clip["e_bounds"].visible = false; } else { r = clip.getRect(clip); }; var _local2:* = 1; while (_local2 <= clip.totalFrames) { clip.gotoAndStop(_local2); makeAllChildrenGoToFrame(clip, _local2); _local4 = new BitmapData(r.width, r.height, true, 0); _local5 = new Matrix(); _local5.translate(-(r.x), -(r.y)); _local5.scale(clip.scaleX, clip.scaleY); _local4.draw(clip, _local5); frames.push(_local4); _local2++; }; bitmap.x = r.x; bitmap.y = r.y; } public function get smoothing():Boolean{ return (_smooth); } public function enterFrame(_arg1:Event=null):void{ if (reverse){ prevFrame(true); } else { nextFrame(true); }; if (currentFrame >= totalFrames){ if (!repeat){ stop(); }; dispatchEvent(new Event(Event.COMPLETE)); if (onEnd != null){ onEnd(); }; }; } public function set smoothing(_arg1:Boolean):void{ _smooth = _arg1; goto(1); } public function get bitmapData():BitmapData{ return (bitmap.bitmapData); } public function prevFrame(_arg1:Boolean=false):void{ if (_arg1){ currentFrame = (currentFrame - speed); } else { currentFrame--; }; if (currentFrame < 1){ currentFrame = totalFrames; }; goto(Math.floor(currentFrame)); } } }//package com.touchmypixel.peepee.utils
Section 114
//AnimationCache (com.touchmypixel.peepee.utils.AnimationCache) package com.touchmypixel.peepee.utils { import flash.events.*; import flash.utils.*; import com.touchmypixel.events.*; public class AnimationCache extends EventDispatcher { public var currentlyProcessingItem:uint;// = 0 public var cacheQueue:Array; private var animations:Object; public var replaceExisting:Boolean;// = false private static var instance:AnimationCache; public function AnimationCache(){ cacheQueue = []; animations = {}; super(); if (AnimationCache.instance){ throw (new Error("AnimationCache is a Singleton. Don't Instantiate!")); }; instance = this; } public function cacheAnimation(_arg1:String, _arg2:Boolean=false):Animation{ var _local3:Animation; if (((!(animations[_arg1])) || (replaceExisting))){ _local3 = new Animation(); _local3.useSpriteSheet = _arg2; _local3.buildCacheFromLibrary(_arg1); animations[_arg1] = _local3; } else { _local3 = animations[_arg1]; }; return (_local3); } private function process():void{ var _local1:* = cacheQueue[currentlyProcessingItem++]; if (_local1 != null){ cacheAnimation(_local1); dispatchEvent(new ProcessEvent(ProcessEvent.PROGRESS, (currentlyProcessingItem / cacheQueue.length))); setTimeout(process, 1); } else { dispatchEvent(new ProcessEvent(ProcessEvent.COMPLETE)); cacheQueue = []; }; } public function processQueue(){ currentlyProcessingItem = 0; dispatchEvent(new ProcessEvent(ProcessEvent.START)); process(); } public function getAnimation(_arg1):Animation{ var _local2:Animation; if (!animations[_arg1]){ trace(("MISSING ANIMATION :" + _arg1)); return (null); }; _local2 = new Animation(); _local2.frames = animations[_arg1].frames; _local2.bigBitmap = animations[_arg1].bigBitmap; _local2.bitmap.x = animations[_arg1].bitmap.x; _local2.bitmap.y = animations[_arg1].bitmap.y; _local2.cols = animations[_arg1].cols; _local2.rows = animations[_arg1].rows; _local2.r = animations[_arg1].r; _local2.clip = animations[_arg1].clip; _local2.useSpriteSheet = animations[_arg1].useSpriteSheet; _local2.gotoAndStop(1); return (_local2); } public function addToBulkCache(_arg1:Array){ var _local2:*; for each (_local2 in _arg1) { cacheQueue.push(_local2); }; } public static function getInstance():AnimationCache{ return ((instance) ? instance : new (AnimationCache)); } } }//package com.touchmypixel.peepee.utils
Section 115
//MochiCoins (mochi.as3.MochiCoins) package mochi.as3 { public class MochiCoins { public static const STORE_HIDE:String = "StoreHide"; public static const NO_USER:String = "NoUser"; public static const IO_ERROR:String = "IOError"; public static const ITEM_NEW:String = "ItemNew"; public static const ITEM_OWNED:String = "ItemOwned"; public static const STORE_ITEMS:String = "StoreItems"; public static const ERROR:String = "Error"; public static const STORE_SHOW:String = "StoreShow"; public static var _inventory:MochiInventory; public static function triggerEvent(_arg1:String, _arg2:Object):void{ MochiSocial.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ MochiSocial.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ MochiSocial.addEventListener(_arg1, _arg2); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function get inventory():MochiInventory{ return (_inventory); } public static function showStore(_arg1:Object=null):void{ MochiServices.bringToTop(); MochiServices.send("coins_showStore", {options:_arg1}, null, null); } public static function showItem(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showItem call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showItem", {options:_arg1}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showVideo(_arg1:Object=null):void{ if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){ trace("ERROR: showVideo call must pass an Object with an item key"); return; }; MochiServices.bringToTop(); MochiServices.send("coins_showVideo", {options:_arg1}, null, null); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _inventory = new MochiInventory(); }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _inventory = null; }); } }//package mochi.as3
Section 116
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function reencode():void{ var _local1:uint = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function set value(_arg1:Number):void{ setValue(_arg1); } public function toString():String{ var _local1:String = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function get value():Number{ return (Number(this.toString())); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 117
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher) package mochi.as3 { public class MochiEventDispatcher { private var eventTable:Object; public function MochiEventDispatcher():void{ eventTable = {}; } public function triggerEvent(_arg1:String, _arg2:Object):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ return; }; for (_local3 in eventTable[_arg1]) { var _local6 = eventTable[_arg1]; _local6[_local3](_arg2); }; } public function removeEventListener(_arg1:String, _arg2:Function):void{ var _local3:Object; if (eventTable[_arg1] == undefined){ eventTable[_arg1] = []; return; }; for (_local3 in eventTable[_arg1]) { if (eventTable[_arg1][_local3] != _arg2){ } else { eventTable[_arg1].splice(Number(_local3), 1); }; }; } public function addEventListener(_arg1:String, _arg2:Function):void{ removeEventListener(_arg1, _arg2); eventTable[_arg1].push(_arg2); } } }//package mochi.as3
Section 118
//MochiEvents (mochi.as3.MochiEvents) package mochi.as3 { import flash.display.*; public class MochiEvents { public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL"; public static const FORMAT_LONG:String = "LongForm"; public static const ALIGN_BOTTOM:String = "ALIGN_B"; public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived"; public static const FORMAT_SHORT:String = "ShortForm"; public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR"; public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR"; public static const ALIGN_TOP:String = "ALIGN_T"; public static const ALIGN_LEFT:String = "ALIGN_L"; public static const ALIGN_RIGHT:String = "ALIGN_R"; public static const ALIGN_TOP_LEFT:String = "ALIGN_TL"; public static const ALIGN_CENTER:String = "ALIGN_C"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); private static var gameStart:Number; private static var levelStart:Number; public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function startSession(_arg1:String):void{ MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{ var _local4:Object; var _local3:Object = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function endGame():void{ var _local1:Number = (new Date().time - gameStart); trigger("end_game", {time:_local1}); } public static function startGame():void{ gameStart = new Date().time; trigger("start_game"); } public static function trigger(_arg1:String, _arg2:Object=null):void{ if (_arg2 == null){ _arg2 = {}; } else { if (_arg2["kind"] != undefined){ trace("WARNING: optional arguments package contains key 'id', it will be overwritten"); _arg2["kind"] = _arg1; }; }; MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startLevel():void{ levelStart = new Date().time; trigger("start_level"); } public static function endLevel():void{ var _local1:Number = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 119
//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _names:Array; private var _syncID:Number; private var _consumableProperties:Object; private var _storeSync:Object; private var _outstandingID:Number; private var _syncPending:Boolean; public static const READY:String = "InvReady"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; private static const KEY_SALT:String = " syncMaint"; public static const WRITTEN:String = "InvWritten"; public static const NOT_READY:String = "InvNotReady"; public static const VALUE_ERROR:String = "InvValueError"; private static const CONSUMER_KEY:String = "MochiConsumables"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned); MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut); _storeSync = new Object(); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiSocial.loggedIn){ loggedIn(); } else { loggedOut(); }; } private function newItems(_arg1:Object):void{ if (!this[(_arg1.id + KEY_SALT)]){ this[(_arg1.id + KEY_SALT)] = 0; }; if (!this[_arg1.id]){ this[_arg1.id] = 0; }; this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count); this[_arg1.id] = (this[_arg1.id] + _arg1.count); if (_arg1.privateProperties.consumable){ if (!this[_arg1.privateProperties.tag]){ this[_arg1.privateProperties.tag] = 0; }; this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count)); }; } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn); MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } private function itemOwned(_arg1:Object):void{ _storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count}; } private function sync(_arg1:Event=null):void{ var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; var _local2:Object = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; var _local3:Number; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; for (_local2 in _storeSync) { _local3 = _storeSync[_local2].count; if (_consumableProperties[(_local2 + KEY_SALT)]){ _local3 = (_local3 - _consumableProperties[_local2]); }; if (_local3 == 0){ } else { newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties}); }; }; triggerEvent(READY, {}); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 120
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ delete options.clip; MochiServices.setContainer(); MochiServices.bringToTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'")); } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite")); } else { if (Math.floor(n) != n){ trace((("WARNING: Submitted score '" + options.score) + "' will be truncated")); }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.warnID(options.boardID, true); trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal"); MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; var _local2:Object = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'")); } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite")); } else { if (Math.floor(_arg1) != _arg1){ trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated")); }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiServices.warnID(_arg1, true); MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi.as3
Section 121
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _preserved:Object; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; public static var servicesSync:MochiSync = new MochiSync(); private static var _clip:MovieClip; private static var _id:String; private static var _services:String = "services.swf"; private static var _servURL:String = "http://www.mochiads.com/static/lib/services/"; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _loader:Loader; private static var _connecting:Boolean = false; private static var _mochiLocalConnection:MovieClip; private static var _listenChannelName:String = "__ms_"; public static var onError:Object; public static var netup:Boolean = true; private static var _mochiLC:String = "MochiLC.swf"; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function onReceive(_arg1:Object):void{ var methodName:String; var pkg = _arg1; var cb:String = pkg.callbackID; var cblst:Object = _clip._callbacks[cb]; if (!cblst){ return; }; var method:* = cblst.callbackMethod; methodName = ""; var obj:Object = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete _clip._callbacks[cb]; } public static function get childClip():Object{ return (_clip); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local4:int; var _local14:Loader; var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; var _local6:Array = [0, 64, 0, 0, 0]; var _local7:MovieClip = new MovieClip(); var _local8:LocalConnection = new LocalConnection(); var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time)); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); var _local10:ByteArray = new ByteArray(); var _local11:ByteArray = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); var _local12:uint = ((_local3.length + _local11.length) + 4); var _local13:uint = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var avm1Click:DisplayObject; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; var vars:Object = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); var s = "?"; var i:Number = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); var _local2:Rectangle = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function warnID(_arg1:String, _arg2:Boolean):void{ _arg1 = _arg1.toLowerCase(); if (_arg1.length != 16){ trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length")); return; } else { if (_arg1 == "1e113c7239048b3f"){ if (_arg2){ trace("WARNING: Using testing board ID"); } else { trace("WARNING: Using testing board ID as game ID"); }; return; } else { if (_arg1 == "84993a1de4031cd8"){ if (_arg2){ trace("WARNING: Using testing game ID as board ID"); } else { trace("WARNING: Using testing game ID"); }; return; }; }; }; var _local3:Number = 0; while (_local3 < _arg1.length) { switch (_arg1.charAt(_local3)){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "a": case "b": case "c": case "d": case "e": case "f": break; default: trace(("WARNING: Board ID contains illegal characters: " + _arg1)); return; }; _local3++; }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _mochiLocalConnection.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.7 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_clip._queue))){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; } public static function get id():String{ return (_id); } private static function onEvent(_arg1:Object):void{ var _local2:String = _arg1.target; var _local3:String = _arg1.event; switch (_local2){ case "events": MochiEvents.triggerEvent(_arg1.event, _arg1.args); break; case "coins": MochiCoins.triggerEvent(_arg1.event, _arg1.args); break; case "sync": servicesSync.triggerEvent(_arg1.event, _arg1.args); break; }; } private static function urlOptions(_arg1:Object):Object{ var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; var _local2:Object = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { trace(_arg1.loaderInfo); _local3 = _arg1.loaderInfo.parameters.mochiad_options; }; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function loadError(_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); } private static function initComChannels():void{ if (!_connected){ trace("[SERVICES_API] connected!"); _connecting = false; _connected = true; _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _clip.onReceive = onReceive; _clip.onEvent = onEvent; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; while (_clip._queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var clip = _arg1; loader = new Loader(); var mochiLCURL:String = (_servURL + _mochiLC); var req:URLRequest = new URLRequest(mochiLCURL); var complete:Function = function (_arg1:Object):void{ _mochiLocalConnection = MovieClip(loader.content); listen(); }; loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); loader.load(req); clip.addChild(loader); } private static function listen():void{ _mochiLocalConnection.connect(_listenChannelName); _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; trace("Waiting for MochiAds services to connect..."); } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var _local3:String = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; var _local4:String = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local4 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local4); _clip = createEmptyMovieClip(_arg2, _local3, 10336, false); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); var _local5:URLRequest = new URLRequest(_local4); var _local6:URLVariables = new URLVariables(); _local6.listenLC = _listenChannelName; _local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local6.api_version = getVersion(); if (widget){ _local6.widget = true; }; _local5.data = _local6; _loader.load(_local5); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; warnID(id, false); if ((clip is DisplayObject)){ if (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; var mc:MovieClip = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function bringToTop(_arg1:Event=null):void{ var e = _arg1; if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load. (timeout)"); MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 122
//MochiSocial (mochi.as3.MochiSocial) package mochi.as3 { public class MochiSocial { public static const LOGGED_IN:String = "LoggedIn"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const IO_ERROR:String = "IOError"; public static const PROPERTIES_SAVED:String = "PropertySaved"; public static const WIDGET_LOADED:String = "WidgetLoaded"; public static const USER_INFO:String = "UserInfo"; public static const ERROR:String = "Error"; public static const LOGIN_SHOW:String = "LoginShow"; public static const LOGGED_OUT:String = "LoggedOut"; public static const PROFILE_SHOW:String = "ProfileShow"; public static const LOGIN_SHOWN:String = "LoginShown"; public static const LOGIN_HIDE:String = "LoginHide"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _user_info:Object = null; public static function getVersion():String{ return (MochiServices.getVersion()); } public static function saveUserProperties(_arg1:Object):void{ MochiServices.send("coins_saveUserProperties", _arg1); } public static function get loggedIn():Boolean{ return (!((_user_info == null))); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function requestLogin():void{ MochiServices.send("coins_requestLogin"); } public static function getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{ _user_info = _arg1; }); MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{ _user_info = null; }); } }//package mochi.as3
Section 123
//MochiSync (mochi.as3.MochiSync) package mochi.as3 { import flash.utils.*; public dynamic class MochiSync extends Proxy { private var _syncContainer:Object; public static var SYNC_PROPERTY:String = "UpdateProperty"; public static var SYNC_REQUEST:String = "SyncRequest"; public function MochiSync():void{ _syncContainer = {}; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if (_syncContainer[_arg1] == _arg2){ return; }; var _local3:String = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } public function triggerEvent(_arg1:String, _arg2:Object):void{ switch (_arg1){ case SYNC_REQUEST: MochiServices.send("sync_syncronize", _syncContainer); break; case SYNC_PROPERTY: _syncContainer[_arg2.name] = _arg2.value; break; }; } } }//package mochi.as3
Section 124
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var operation:String;// = null public var error:Event;// = null public var data;// = null public var _loader:URLLoader; public var key:String;// = null public function MochiUserData(_arg1:String="", _arg2:Function=null){ this.key = _arg1; this.callback = _arg2; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function request(_arg1:String, _arg2:ByteArray):void{ var _operation = _arg1; var _data = _arg2; operation = _operation; var api_url:String = MochiSocial.getAPIURL(); var api_token:String = MochiSocial.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); var args:URLVariables = new URLVariables(); args.op = _operation; args.key = key; var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3
Section 125
//AndkonBtn (AndkonBtn) package { import flash.display.*; public dynamic class AndkonBtn extends MovieClip { } }//package
Section 126
//AndkonLogo (AndkonLogo) package { import flash.display.*; public dynamic class AndkonLogo extends MovieClip { } }//package
Section 127
//AndkonPreloader (AndkonPreloader) package { import flash.display.*; public dynamic class AndkonPreloader extends MovieClip { } }//package
Section 128
//arrows (arrows) package { import flash.display.*; public dynamic class arrows extends MovieClip { } }//package
Section 129
//background (background) package { import flash.display.*; public dynamic class background extends MovieClip { } }//package
Section 130
//btn_back (btn_back) package { import flash.display.*; public dynamic class btn_back extends MovieClip { } }//package
Section 131
//btn_freegames (btn_freegames) package { import flash.display.*; public dynamic class btn_freegames extends MovieClip { } }//package
Section 132
//btn_level (btn_level) package { import flash.display.*; import flash.text.*; public dynamic class btn_level extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 133
//btn_level_lock (btn_level_lock) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_lock extends MovieClip { public var tf2:TextField; public var tf1:TextField; } }//package
Section 134
//btn_moregames (btn_moregames) package { import flash.display.*; public dynamic class btn_moregames extends MovieClip { } }//package
Section 135
//btn_nextlevel (btn_nextlevel) package { import flash.display.*; public dynamic class btn_nextlevel extends MovieClip { } }//package
Section 136
//btn_play (btn_play) package { import flash.display.*; public dynamic class btn_play extends MovieClip { } }//package
Section 137
//btn_scores (btn_scores) package { import flash.display.*; public dynamic class btn_scores extends MovieClip { } }//package
Section 138
//btn_sellevel (btn_sellevel) package { import flash.display.*; public dynamic class btn_sellevel extends MovieClip { } }//package
Section 139
//ButtonMenu (ButtonMenu) package { import com.miningtruck.ui.*; public dynamic class ButtonMenu extends HudButton { } }//package
Section 140
//ButtonMusic (ButtonMusic) package { import com.miningtruck.ui.*; public dynamic class ButtonMusic extends HudButton { } }//package
Section 141
//ButtonRestart (ButtonRestart) package { import com.miningtruck.ui.*; public dynamic class ButtonRestart extends HudButton { } }//package
Section 142
//ButtonSound (ButtonSound) package { import com.miningtruck.ui.*; public dynamic class ButtonSound extends HudButton { } }//package
Section 143
//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 144
//fps (fps) package { import flash.display.*; import flash.text.*; public dynamic class fps extends MovieClip { public var tf:TextField; } }//package
Section 145
//label_credits (label_credits) package { import flash.display.*; public dynamic class label_credits extends MovieClip { } }//package
Section 146
//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 147
//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 148
//level_progress (level_progress) package { import com.miningtruck.ui.*; public dynamic class level_progress extends LevelProgress { } }//package
Section 149
//level_screens (level_screens) package { import flash.display.*; public dynamic class level_screens extends MovieClip { } }//package
Section 150
//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 151
//level1_part1_back (level1_part1_back) package { import flash.display.*; public dynamic class level1_part1_back extends MovieClip { } }//package
Section 152
//level1_part2 (level1_part2) package { import flash.display.*; public dynamic class level1_part2 extends MovieClip { } }//package
Section 153
//level1_part2_back (level1_part2_back) package { import flash.display.*; public dynamic class level1_part2_back extends MovieClip { } }//package
Section 154
//level1_part3 (level1_part3) package { import flash.display.*; public dynamic class level1_part3 extends MovieClip { public var target:MovieClip; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 155
//level1_part3_back (level1_part3_back) package { import flash.display.*; public dynamic class level1_part3_back extends MovieClip { } }//package
Section 156
//level2_part1 (level2_part1) package { import flash.display.*; public dynamic class level2_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; } }//package
Section 157
//level2_part1_back (level2_part1_back) package { import flash.display.*; public dynamic class level2_part1_back extends MovieClip { } }//package
Section 158
//level2_part2 (level2_part2) package { import flash.display.*; public dynamic class level2_part2 extends MovieClip { } }//package
Section 159
//level2_part2_back (level2_part2_back) package { import flash.display.*; public dynamic class level2_part2_back extends MovieClip { } }//package
Section 160
//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 161
//level2_part3_back (level2_part3_back) package { import flash.display.*; public dynamic class level2_part3_back extends MovieClip { } }//package
Section 162
//level3_part1 (level3_part1) package { import flash.display.*; public dynamic class level3_part1 extends MovieClip { public var lenta:MovieClip; public var barrel:sprite_barrel; public var box:sprite_box; } }//package
Section 163
//level3_part1_back (level3_part1_back) package { import flash.display.*; public dynamic class level3_part1_back extends MovieClip { } }//package
Section 164
//level3_part2 (level3_part2) package { import flash.display.*; public dynamic class level3_part2 extends MovieClip { } }//package
Section 165
//level3_part2_back (level3_part2_back) package { import flash.display.*; public dynamic class level3_part2_back extends MovieClip { } }//package
Section 166
//level3_part3 (level3_part3) package { import flash.display.*; public dynamic class level3_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 167
//level3_part3_back (level3_part3_back) package { import flash.display.*; public dynamic class level3_part3_back extends MovieClip { } }//package
Section 168
//level4_part1 (level4_part1) package { import flash.display.*; public dynamic class level4_part1 extends MovieClip { public var conus:sprite_conus; public var lenta:MovieClip; public var box:sprite_box; public var barrel:sprite_barrel; } }//package
Section 169
//level4_part1_back (level4_part1_back) package { import flash.display.*; public dynamic class level4_part1_back extends MovieClip { } }//package
Section 170
//level4_part2 (level4_part2) package { import flash.display.*; public dynamic class level4_part2 extends MovieClip { } }//package
Section 171
//level4_part2_back (level4_part2_back) package { import flash.display.*; public dynamic class level4_part2_back extends MovieClip { } }//package
Section 172
//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 173
//level4_part3_back (level4_part3_back) package { import flash.display.*; public dynamic class level4_part3_back extends MovieClip { } }//package
Section 174
//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 175
//level5_part1_back (level5_part1_back) package { import flash.display.*; public dynamic class level5_part1_back extends MovieClip { } }//package
Section 176
//level5_part2 (level5_part2) package { import flash.display.*; public dynamic class level5_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 177
//level5_part2_back (level5_part2_back) package { import flash.display.*; public dynamic class level5_part2_back extends MovieClip { } }//package
Section 178
//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 179
//level5_part3_back (level5_part3_back) package { import flash.display.*; public dynamic class level5_part3_back extends MovieClip { } }//package
Section 180
//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 181
//level6_part1_back (level6_part1_back) package { import flash.display.*; public dynamic class level6_part1_back extends MovieClip { } }//package
Section 182
//level6_part2 (level6_part2) package { import flash.display.*; public dynamic class level6_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 183
//level6_part2_back (level6_part2_back) package { import flash.display.*; public dynamic class level6_part2_back extends MovieClip { } }//package
Section 184
//level6_part3 (level6_part3) package { import flash.display.*; public dynamic class level6_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 185
//level6_part3_back (level6_part3_back) package { import flash.display.*; public dynamic class level6_part3_back extends MovieClip { } }//package
Section 186
//level7_part1 (level7_part1) package { import flash.display.*; public dynamic class level7_part1 extends MovieClip { public var lenta:MovieClip; } }//package
Section 187
//level7_part1_back (level7_part1_back) package { import flash.display.*; public dynamic class level7_part1_back extends MovieClip { } }//package
Section 188
//level7_part2 (level7_part2) package { import flash.display.*; public dynamic class level7_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 189
//level7_part2_back (level7_part2_back) package { import flash.display.*; public dynamic class level7_part2_back extends MovieClip { } }//package
Section 190
//level7_part3 (level7_part3) package { import flash.display.*; public dynamic class level7_part3 extends MovieClip { public var conus:sprite_conus; public var target:MovieClip; public var barrel:sprite_barrel; public var roadlight:sprite_road_light; public var box:sprite_box; } }//package
Section 191
//level7_part3_back (level7_part3_back) package { import flash.display.*; public dynamic class level7_part3_back extends MovieClip { } }//package
Section 192
//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 193
//level8_part1_back (level8_part1_back) package { import flash.display.*; public dynamic class level8_part1_back extends MovieClip { } }//package
Section 194
//level8_part2 (level8_part2) package { import flash.display.*; public dynamic class level8_part2 extends MovieClip { public var conus:sprite_conus; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 195
//level8_part2_back (level8_part2_back) package { import flash.display.*; public dynamic class level8_part2_back extends MovieClip { } }//package
Section 196
//level8_part3 (level8_part3) package { import flash.display.*; public dynamic class level8_part3 extends MovieClip { public var target:MovieClip; public var barrel:sprite_barrel; public var box:sprite_box; public var roadlight:sprite_road_light; } }//package
Section 197
//level8_part3_back (level8_part3_back) package { import flash.display.*; public dynamic class level8_part3_back extends MovieClip { } }//package
Section 198
//logo_box2d (logo_box2d) package { import flash.display.*; public dynamic class logo_box2d extends MovieClip { } }//package
Section 199
//logo_game (logo_game) package { import flash.display.*; public dynamic class logo_game extends MovieClip { } }//package
Section 200
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 201
//music_track1 (music_track1) package { import flash.media.*; public dynamic class music_track1 extends Sound { } }//package
Section 202
//music_track2 (music_track2) package { import flash.media.*; public dynamic class music_track2 extends Sound { } }//package
Section 203
//snd_addscore (snd_addscore) package { import flash.media.*; public dynamic class snd_addscore extends Sound { } }//package
Section 204
//snd_bibi (snd_bibi) package { import flash.media.*; public dynamic class snd_bibi extends Sound { } }//package
Section 205
//snd_bonus (snd_bonus) package { import flash.media.*; public dynamic class snd_bonus extends Sound { } }//package
Section 206
//snd_button (snd_button) package { import flash.media.*; public dynamic class snd_button extends Sound { } }//package
Section 207
//snd_crash (snd_crash) package { import flash.media.*; public dynamic class snd_crash extends Sound { } }//package
Section 208
//snd_drive (snd_drive) package { import flash.media.*; public dynamic class snd_drive extends Sound { } }//package
Section 209
//snd_explosion (snd_explosion) package { import flash.media.*; public dynamic class snd_explosion extends Sound { } }//package
Section 210
//snd_motor (snd_motor) package { import flash.media.*; public dynamic class snd_motor extends Sound { } }//package
Section 211
//snd_score (snd_score) package { import flash.media.*; public dynamic class snd_score extends Sound { } }//package
Section 212
//snd_tube (snd_tube) package { import flash.media.*; public dynamic class snd_tube extends Sound { } }//package
Section 213
//sprite_barrel (sprite_barrel) package { import flash.display.*; public dynamic class sprite_barrel extends MovieClip { } }//package
Section 214
//sprite_bg (sprite_bg) package { import flash.display.*; public dynamic class sprite_bg extends MovieClip { } }//package
Section 215
//sprite_box (sprite_box) package { import flash.display.*; public dynamic class sprite_box extends MovieClip { } }//package
Section 216
//sprite_coal (sprite_coal) package { import flash.display.*; public dynamic class sprite_coal extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 217
//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 218
//sprite_conus (sprite_conus) package { import flash.display.*; public dynamic class sprite_conus extends MovieClip { } }//package
Section 219
//sprite_explosion (sprite_explosion) package { import flash.display.*; public dynamic class sprite_explosion extends MovieClip { } }//package
Section 220
//sprite_fire (sprite_fire) package { import flash.display.*; public dynamic class sprite_fire extends MovieClip { } }//package
Section 221
//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 222
//sprite_smoke1 (sprite_smoke1) package { import flash.display.*; public dynamic class sprite_smoke1 extends MovieClip { } }//package
Section 223
//sprite_smoke2 (sprite_smoke2) package { import flash.display.*; public dynamic class sprite_smoke2 extends MovieClip { } }//package
Section 224
//sprite_suck (sprite_suck) package { import flash.display.*; public dynamic class sprite_suck extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 225
//sprite_timer (sprite_timer) package { import flash.display.*; public dynamic class sprite_timer extends MovieClip { } }//package
Section 226
//sprite_traffic (sprite_traffic) package { import flash.display.*; public dynamic class sprite_traffic extends MovieClip { public var e_bounds:MovieClip; } }//package
Section 227
//sprite_truck_body (sprite_truck_body) package { import flash.display.*; public dynamic class sprite_truck_body extends MovieClip { } }//package
Section 228
//sprite_wheel (sprite_wheel) package { import flash.display.*; public dynamic class sprite_wheel extends MovieClip { } }//package

Library Items

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

Instance Names

"truck_ico"Symbol 12 MovieClip {level_progress} Frame 1Symbol 11 MovieClip
"tf"Symbol 35 MovieClip {com.miningtruck.ui.Loading} Frame 1Symbol 25 EditableText
"tf"Symbol 38 MovieClip {fps} Frame 1Symbol 37 EditableText
"e_bounds"Symbol 53 MovieClip {sprite_coal} Frame 1Symbol 48 MovieClip
"e_bounds"Symbol 56 MovieClip {sprite_coal_big} Frame 1Symbol 48 MovieClip
"e_bounds"Symbol 61 MovieClip {sprite_road_light} Frame 1Symbol 48 MovieClip
"e_bounds"Symbol 103 MovieClip {sprite_suck} Frame 1Symbol 48 MovieClip
"e_bounds"Symbol 126 MovieClip {sprite_traffic} Frame 1Symbol 48 MovieClip
"tf2"Symbol 153 MovieClip {label_green} Frame 1Symbol 151 EditableText
"tf1"Symbol 153 MovieClip {label_green} Frame 1Symbol 152 EditableText
"tf2"Symbol 157 MovieClip {label_red} Frame 1Symbol 155 EditableText
"tf1"Symbol 157 MovieClip {label_red} Frame 1Symbol 156 EditableText
"tf2"Symbol 169 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 167 EditableText
"tf1"Symbol 169 MovieClip {com.miningtruck.ui.IcoCargo} Frame 1Symbol 168 EditableText
"tf2"Symbol 174 MovieClip {com.miningtruck.ui.IcoTime} Frame 1Symbol 170 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 204 MovieClip {btn_level} Frame 1Symbol 193 EditableText
"tf1"Symbol 204 MovieClip {btn_level} Frame 1Symbol 194 EditableText
"tf2"Symbol 213 MovieClip {btn_level_lock} Frame 1Symbol 205 EditableText
"tf1"Symbol 213 MovieClip {btn_level_lock} Frame 1Symbol 206 EditableText
"tf2"Symbol 221 MovieClip {fly_score} Frame 1Symbol 219 EditableText
"tf1"Symbol 221 MovieClip {fly_score} Frame 1Symbol 220 EditableText
"tf2"Symbol 299 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 297 EditableText
"tf1"Symbol 299 MovieClip {com.miningtruck.ui.IcoLevel} Frame 1Symbol 298 EditableText
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 345 MovieClip {level1_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"target"Symbol 371 MovieClip {level1_part3} Frame 1Symbol 330 MovieClip
"box"Symbol 371 MovieClip {level1_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 371 MovieClip {level1_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 371 MovieClip {level1_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"roadlight"Symbol 371 MovieClip {level1_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"conus"Symbol 377 MovieClip {level2_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"conus"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"barrel"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"target"Symbol 387 MovieClip {level2_part3} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 392 MovieClip {level3_part1} Frame 1Symbol 44 MovieClip {sprite_barrel}
"box"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"conus"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"target"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 330 MovieClip
"box"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 407 MovieClip {level3_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"box"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 330 MovieClip
"conus"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"barrel"Symbol 410 MovieClip {level4_part1} Frame 1Symbol 44 MovieClip {sprite_barrel}
"box"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"barrel"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"target"Symbol 417 MovieClip {level4_part3} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"conus"Symbol 420 MovieClip {level5_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 61 MovieClip {sprite_road_light}
"conus"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 425 MovieClip {level5_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 428 MovieClip {level5_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"box"Symbol 428 MovieClip {level5_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 428 MovieClip {level5_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"target"Symbol 428 MovieClip {level5_part3} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"conus"Symbol 431 MovieClip {level6_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 435 MovieClip {level6_part2} Frame 1Symbol 61 MovieClip {sprite_road_light}
"target"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 330 MovieClip
"box"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"box"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 438 MovieClip {level6_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 443 MovieClip {level7_part1} Frame 1Symbol 330 MovieClip
"box"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 61 MovieClip {sprite_road_light}
"conus"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 447 MovieClip {level7_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"conus"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 58 MovieClip {sprite_conus}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"target"Symbol 450 MovieClip {level7_part3} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"lenta"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 330 MovieClip
"conus"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 44 MovieClip {sprite_barrel}
"barrel"Symbol 453 MovieClip {level8_part1} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"roadlight"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 61 MovieClip {sprite_road_light}
"box"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"box"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 44 MovieClip {sprite_barrel}
"conus"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"conus"Symbol 456 MovieClip {level8_part2} Frame 1Symbol 58 MovieClip {sprite_conus}
"box"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 61 MovieClip {sprite_road_light}
"target"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 330 MovieClip
"box"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"box"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 46 MovieClip {sprite_box}
"barrel"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 44 MovieClip {sprite_barrel}
"roadlight"Symbol 460 MovieClip {level8_part3} Frame 1Symbol 61 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/42/207876/info.shtml
Created: 9/10 -2018 08:13:52 Last modified: 9/10 -2018 08:13:52 Server time: 26/04 -2024 08:12:53